chiark / gitweb /
build system: stest: Fix out-of-tree builds
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 19 Oct 2019 22:03:40 +0000 (23:03 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 24 Oct 2019 18:16:15 +0000 (19:16 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
stest/Makefile.in
stest/common.tcl

index f9850594d74707357fb106351d46b03c69a55bf9..4064636449740a8d745f8b0730f19956d89fbe9a 100644 (file)
@@ -1,9 +1,15 @@
 
+VPATH:=@srcdir@
+srcdir:=@srcdir@
+topdir:=@top_srcdir@
+topbuilddir:=$(shell cd .. && pwd)
+
 CC:=@CC@
+# commmon.make
 
 TARGETS=udp-preload.so check
 
-TESTSCRIPTS ?= $(shell echo t-*[0-9a-z])
+TESTSCRIPTS ?= $(shell echo $(srcdir)/t-*[0-9a-z])
 TESTNAMES := $(patsubst t-%,%,$(notdir $(TESTSCRIPTS)))
 
 all: $(TARGETS)
@@ -33,9 +39,11 @@ check:
 
 check-real: $(foreach t,$(TESTNAMES),d-$t/ok)
 
-d-%/ok: t-% udp-preload.so common.tcl ../secnet ../test-example/sites.conf
+d-%/ok: $(srcdir)/t-% udp-preload.so $(srcdir)/common.tcl \
+               ../secnet ../test-example/sites.conf
        @rm -rf d-$*; mkdir d-$*
-       @cd .. && stest/$< >stest/d-$*/log 2>&1
+       export STEST_BUILDDIR=$(topbuilddir); \
+       cd $(topdir) && stest/t-$* >$(topbuilddir)/stest/d-$*/log 2>&1
        @printf "$* "
        @touch $@
 
index ca503314eec88d75e651e8c6ba5a3aa108de45cb..12203aa40ddb6bcad7666db95b88441ae43d6156 100644 (file)
@@ -25,6 +25,7 @@ set extra(outside) {}
 
 proc mkconf {which} {
     global tmp
+    global builddir
     global netlink
     global ports
     global extra
@@ -73,7 +74,7 @@ exec cat
     }
     append cfg ";
        local-name \"test-example/$which/$which\";
-       local-key rsa-private(\"test-example/$which.key\");
+       local-key rsa-private(\"$builddir/test-example/$which.key\");
 "
     append cfg $extra($which)
     append cfg {
@@ -90,7 +91,7 @@ exec cat
        transform eax-serpent { }, serpent256-cbc { };
     }
 
-    set f [open test-example/sites.conf r]
+    set f [open $builddir/test-example/sites.conf r]
     set sites [read $f]
     close $f
     append cfg $sites
@@ -101,14 +102,15 @@ exec cat
 }
 
 proc spawn-secnet {which} {
-    global netlinkfh
     global tmp
+    global builddir
+    global netlinkfh
     upvar #0 pids($which) pid
     set cf $tmp/$which.conf
     set ch [open $cf w]
     puts $ch [mkconf $which]
     close $ch
-    set argl [list strace -o$tmp/$which.strace ./secnet -dvnc $cf]
+    set argl [list $builddir/secnet -dvnc $cf]
     set pid [fork]
     if {!$pid} {
        execl [lindex $argl 0] [lrange $argl 1 end]
@@ -168,6 +170,11 @@ if {![catch {
 }]} {} elseif {[regsub {^stest/t-} $argv0 {stest/d-} tmp]} {
     file mkdir $tmp
 }
+if {![catch {
+    set builddir $env(STEST_BUILDDIR)
+}]} {} else {
+    set builddir .
+}
 
 set socktmp $tmp/s
 exec mkdir -p -m700 $socktmp
@@ -182,7 +189,7 @@ proc prefix_preload {lib} {
 }
 
 set env(UDP_PRELOAD_DIR) $socktmp
-prefix_preload stest/udp-preload.so
+prefix_preload $builddir/stest/udp-preload.so
 
 proc udp-proxy {} {
     global socktmp udpsock