Skip to content

Commit ced6dfe

Browse files
committed
Toolchains: Have testsuites store outputs in tempdir
This prevents multiple tests from stepping on eachother's toes, or more likely, an interactive debugging session killing a test running in another terminal.
1 parent 7a1f8b4 commit ced6dfe

File tree

19 files changed

+142
-129
lines changed

19 files changed

+142
-129
lines changed

BinaryBuilderToolchains.jl/test/CMakeToolchainTests.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
using Test, BinaryBuilderToolchains
22
using BinaryBuilderToolchains: path_appending_merge
33

4+
# testsuite outputs go here:
5+
ENV["TESTSUITE_OUTPUT_DIR"] = mktempdir()
6+
47
@testset "CMakeToolchain" begin
58
platform = CrossPlatform(BBHostPlatform() => BBHostPlatform())
69
toolchains = [

BinaryBuilderToolchains.jl/test/CToolchainTests.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ const verbose = false
66

77
using BinaryBuilderToolchains: get_vendor
88
const htt_toolchain = HostToolsToolchain(BBHostPlatform())
9+
10+
# testsuite outputs go here:
11+
ENV["TESTSUITE_OUTPUT_DIR"] = mktempdir(;cleanup=false)
912
@testset "CToolchain" begin
1013
# Use native compilers so that we can run the output.
1114
platform = CrossPlatform(BBHostPlatform() => HostPlatform())

BinaryBuilderToolchains.jl/test/HostToolsToolchainTests.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ const verbose = false
1414
# We include a host-targeted C toolchain here, because our `autotools` test requires one.
1515
c_toolchain = CToolchain(platform; use_ccache=false)
1616
with_toolchains([toolchain, c_toolchain]) do prefix, env
17+
env["TESTSUITE_OUTPUT_DIR"] = mktempdir()
1718
host_tools = [
1819
# Build tools
1920
"automake", "aclocal", "autoconf",

BinaryBuilderToolchains.jl/test/testsuite/CMakeToolchain/00_hello_world/Makefile

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
PROJECT_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
22
include ../../CToolchain/common.mk
33

4-
HELLO := $(PROJECT_DIR)/build/hello$(exeext)
4+
HELLO := $(PROJECT_DIR_BUILD)/hello$(exeext)
55
all: $(HELLO)
66

7-
$(PROJECT_DIR)/build:
7+
$(PROJECT_DIR_BUILD):
88
mkdir -p $@
99

10-
$(PROJECT_DIR)/build/Makefile: $(PROJECT_DIR)/CMakeLists.txt | $(PROJECT_DIR)/build
11-
$(CMAKE) -B$(PROJECT_DIR)/build -S$(PROJECT_DIR) >$(PROJECT_DIR)/build/cmake_log.txt
10+
$(PROJECT_DIR_BUILD)/Makefile: $(PROJECT_DIR)/CMakeLists.txt | $(PROJECT_DIR_BUILD)
11+
$(CMAKE) -B$(PROJECT_DIR_BUILD) -S$(PROJECT_DIR) >$(PROJECT_DIR_BUILD)/cmake_log.txt
1212

13-
$(HELLO): $(PROJECT_DIR)/hello.c $(PROJECT_DIR)/build/Makefile
14-
$(MAKE) -C $(PROJECT_DIR)/build
13+
$(HELLO): $(PROJECT_DIR)/hello.c $(PROJECT_DIR_BUILD)/Makefile
14+
$(MAKE) -C $(PROJECT_DIR_BUILD)
1515
compile: $(HELLO)
1616

1717
clean:
18-
rm -rf $(PROJECT_DIR)/build
18+
rm -rf $(PROJECT_DIR_BUILD)
1919

2020
run: $(HELLO)
2121
@$(HELLO)

BinaryBuilderToolchains.jl/test/testsuite/CMakeToolchain/01_cxx_string_abi/Makefile

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
PROJECT_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
22
include ../../CToolchain/common.mk
33

4-
CXXABI := $(PROJECT_DIR)/build/cxx_string_abi$(exeext)
5-
LIBSTR := $(PROJECT_DIR)/build/libstring.$(dlext)
4+
CXXABI := $(PROJECT_DIR_BUILD)/cxx_string_abi$(exeext)
5+
LIBSTR := $(PROJECT_DIR_BUILD)/libstring.$(dlext)
66

77
all: $(CXXABI)
88

9-
$(PROJECT_DIR)/build:
9+
$(PROJECT_DIR_BUILD):
1010
mkdir -p $@
1111

12-
$(PROJECT_DIR)/build/Makefile: $(PROJECT_DIR)/CMakeLists.txt | $(PROJECT_DIR)/build
13-
$(CMAKE) -B$(PROJECT_DIR)/build -S$(PROJECT_DIR) >$(PROJECT_DIR)/build/cmake_log.txt
12+
$(PROJECT_DIR_BUILD)/Makefile: $(PROJECT_DIR)/CMakeLists.txt | $(PROJECT_DIR_BUILD)
13+
$(CMAKE) -B$(PROJECT_DIR_BUILD) -S$(PROJECT_DIR) >$(PROJECT_DIR_BUILD)/cmake_log.txt
1414

15-
$(LIBSTR): $(PROJECT_DIR)/build/Makefile
15+
$(LIBSTR): $(PROJECT_DIR_BUILD)/Makefile
1616
@# Note that we say `string` here, because cmake automatically puts `lib` on libraries.
17-
$(MAKE) -C$(PROJECT_DIR)/build string
17+
$(MAKE) -C$(PROJECT_DIR_BUILD) string
1818

19-
$(CXXABI): $(PROJECT_DIR)/build/Makefile $(LIBSTR)
20-
$(MAKE) -C$(PROJECT_DIR)/build cxx_string_abi
19+
$(CXXABI): $(PROJECT_DIR_BUILD)/Makefile $(LIBSTR)
20+
$(MAKE) -C$(PROJECT_DIR_BUILD) cxx_string_abi
2121
compile: $(CXXABI)
2222

2323
clean:
24-
rm -rf $(PROJECT_DIR)/build
24+
rm -rf $(PROJECT_DIR_BUILD)
2525

2626
run: $(CXXABI)
2727
@$(CXXABI)

BinaryBuilderToolchains.jl/test/testsuite/CToolchain/00_hello_world/Makefile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
PROJECT_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
22
include ../common.mk
33

4-
HELLO := $(PROJECT_DIR)/build/hello$(exeext)
4+
HELLO := $(PROJECT_DIR_BUILD)/hello$(exeext)
55
all: $(HELLO)
66

7-
$(PROJECT_DIR)/build:
7+
$(PROJECT_DIR_BUILD):
88
mkdir -p $@
99

10-
$(HELLO): hello.c | $(PROJECT_DIR)/build
10+
$(HELLO): hello.c | $(PROJECT_DIR_BUILD)
1111
$(CC) -o $@ $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $^
1212
$(STRIP) $@
1313
compile: $(HELLO)
1414

1515
clean:
16-
rm -rf $(PROJECT_DIR)/build
16+
rm -rf $(PROJECT_DIR_BUILD)
1717

1818
run: $(HELLO)
1919
@$(HELLO)

BinaryBuilderToolchains.jl/test/testsuite/CToolchain/01_dynamic_linking/Makefile

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
PROJECT_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
22
include ../common.mk
33

4-
DYNLINK := $(PROJECT_DIR)/build/dynamic_linking$(exeext)
5-
LIBFOO := $(PROJECT_DIR)/build/libfoo/libfoo.$(dlext)
4+
DYNLINK := $(PROJECT_DIR_BUILD)/dynamic_linking$(exeext)
5+
LIBFOO := $(PROJECT_DIR_BUILD)/libfoo/libfoo.$(dlext)
66

77
all: $(DYNLINK)
88

9-
$(PROJECT_DIR)/build $(PROJECT_DIR)/build/libfoo:
9+
$(PROJECT_DIR_BUILD) $(PROJECT_DIR_BUILD)/libfoo:
1010
mkdir -p $@
1111

12-
$(LIBFOO): libfoo/libfoo.c libfoo/libfoo.h | $(PROJECT_DIR)/build/libfoo
12+
$(LIBFOO): libfoo/libfoo.c libfoo/libfoo.h | $(PROJECT_DIR_BUILD)/libfoo
1313
$(CC) -shared -o $@ $(CPPFLAGS) $(CFLAGS) $< -fPIC -lm
1414

15-
$(DYNLINK): dynamic_linking.c $(LIBFOO) | $(PROJECT_DIR)/build
15+
$(DYNLINK): dynamic_linking.c $(LIBFOO) | $(PROJECT_DIR_BUILD)
1616
$(CC) -o $@ -I$(PROJECT_DIR)/libfoo $(CPPFLAGS) $(CFLAGS) $< -L$(dir $(LIBFOO)) $(call rpath,libfoo) -lfoo $(LDFLAGS)
1717

1818
compile: $(DYNLINK)
1919

2020
clean:
21-
rm -rf $(PROJECT_DIR)/build
21+
rm -rf $(PROJECT_DIR_BUILD)
2222

2323
run: $(DYNLINK)
2424
@$(DYNLINK)

BinaryBuilderToolchains.jl/test/testsuite/CToolchain/02_cxx_string_abi/Makefile

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
PROJECT_DIR := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
22
include ../common.mk
33

4-
CXXABI := $(PROJECT_DIR)/build/cxx_string_abi$(exeext)
5-
LIBSTR := $(PROJECT_DIR)/build/libstring.$(dlext)
4+
CXXABI := $(PROJECT_DIR_BUILD)/cxx_string_abi$(exeext)
5+
LIBSTR := $(PROJECT_DIR_BUILD)/libstring.$(dlext)
66

77
all: $(CXXABI)
88

9-
$(PROJECT_DIR)/build:
9+
$(PROJECT_DIR_BUILD):
1010
mkdir -p $@
1111

12-
$(LIBSTR): libstring.cpp libstring.h | $(PROJECT_DIR)/build
12+
$(LIBSTR): libstring.cpp libstring.h | $(PROJECT_DIR_BUILD)
1313
$(CXX) -shared -o $@ $(CPPFLAGS) $(CFLAGS) $< -fPIC
1414
libstring: $(LIBSTR)
1515

16-
$(CXXABI): cxx_string_abi.cpp $(LIBSTR) | $(PROJECT_DIR)/build
16+
$(CXXABI): cxx_string_abi.cpp $(LIBSTR) | $(PROJECT_DIR_BUILD)
1717
$(CXX) -o $@ $(CPPFLAGS) $(CFLAGS) $< -L$(dir $(LIBSTR)) $(call rpath,.) -lstring $(LDFLAGS)
1818
cxx_string_abi: $(CXXABI)
1919
compile: $(CXXABI)
2020

2121
clean:
22-
rm -rf $(PROJECT_DIR)/build
22+
rm -rf $(PROJECT_DIR_BUILD)
2323

2424
run: $(CXXABI)
2525
@$(CXXABI)

BinaryBuilderToolchains.jl/test/testsuite/CToolchain/03_frandom_seed/Makefile

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,51 +3,51 @@ include ../common.mk
33

44
all: $(OBJS)
55

6-
$(PROJECT_DIR)/build:
6+
$(PROJECT_DIR_BUILD):
77
mkdir -p $@
88

99
# These two are built with a consistent seed:
10-
OBJS += $(PROJECT_DIR)/build/frandom_seed.good_seed.o.1
11-
OBJS += $(PROJECT_DIR)/build/frandom_seed.good_seed.o.2
12-
$(PROJECT_DIR)/build/frandom_seed.good_seed.o.%: frandom_seed.c | $(PROJECT_DIR)/build
13-
$(CC) -c -flto -frandom-seed=0xdeadbeef -o $(PROJECT_DIR)/build/temp.o $(CPPFLAGS) $(CFLAGS) $<
14-
mv $(PROJECT_DIR)/build/temp.o $@
10+
OBJS += $(PROJECT_DIR_BUILD)/frandom_seed.good_seed.o.1
11+
OBJS += $(PROJECT_DIR_BUILD)/frandom_seed.good_seed.o.2
12+
$(PROJECT_DIR_BUILD)/frandom_seed.good_seed.o.%: frandom_seed.c | $(PROJECT_DIR_BUILD)
13+
$(CC) -c -flto -frandom-seed=0xdeadbeef -o $(PROJECT_DIR_BUILD)/temp.o $(CPPFLAGS) $(CFLAGS) $<
14+
mv $(PROJECT_DIR_BUILD)/temp.o $@
1515

1616
# These two are built with an inconsistent seed specified
17-
OBJS += $(PROJECT_DIR)/build/frandom_seed.bad_seed.o.1
18-
OBJS += $(PROJECT_DIR)/build/frandom_seed.bad_seed.o.2
19-
$(PROJECT_DIR)/build/frandom_seed.bad_seed.o.1: frandom_seed.c | $(PROJECT_DIR)/build
20-
$(CC) -c -flto -frandom-seed=0xdeadbeef -o $(PROJECT_DIR)/build/temp.o $(CPPFLAGS) $(CFLAGS) $<
21-
mv $(PROJECT_DIR)/build/temp.o $@
22-
$(PROJECT_DIR)/build/frandom_seed.bad_seed.o.2: frandom_seed.c | $(PROJECT_DIR)/build
23-
$(CC) -c -flto -frandom-seed=0xdeadbeee -o $(PROJECT_DIR)/build/temp.o $(CPPFLAGS) $(CFLAGS) $<
24-
mv $(PROJECT_DIR)/build/temp.o $@
17+
OBJS += $(PROJECT_DIR_BUILD)/frandom_seed.bad_seed.o.1
18+
OBJS += $(PROJECT_DIR_BUILD)/frandom_seed.bad_seed.o.2
19+
$(PROJECT_DIR_BUILD)/frandom_seed.bad_seed.o.1: frandom_seed.c | $(PROJECT_DIR_BUILD)
20+
$(CC) -c -flto -frandom-seed=0xdeadbeef -o $(PROJECT_DIR_BUILD)/temp.o $(CPPFLAGS) $(CFLAGS) $<
21+
mv $(PROJECT_DIR_BUILD)/temp.o $@
22+
$(PROJECT_DIR_BUILD)/frandom_seed.bad_seed.o.2: frandom_seed.c | $(PROJECT_DIR_BUILD)
23+
$(CC) -c -flto -frandom-seed=0xdeadbeee -o $(PROJECT_DIR_BUILD)/temp.o $(CPPFLAGS) $(CFLAGS) $<
24+
mv $(PROJECT_DIR_BUILD)/temp.o $@
2525

2626
# These two are built with no seed specified (and so should be consistent)
27-
OBJS += $(PROJECT_DIR)/build/frandom_seed.no_seed.o.1
28-
OBJS += $(PROJECT_DIR)/build/frandom_seed.no_seed.o.2
29-
$(PROJECT_DIR)/build/frandom_seed.no_seed.o.%: frandom_seed.c | $(PROJECT_DIR)/build
30-
$(CC) -c -flto -o $(PROJECT_DIR)/build/temp.o $(CPPFLAGS) $(CFLAGS) $<
31-
mv $(PROJECT_DIR)/build/temp.o $@
27+
OBJS += $(PROJECT_DIR_BUILD)/frandom_seed.no_seed.o.1
28+
OBJS += $(PROJECT_DIR_BUILD)/frandom_seed.no_seed.o.2
29+
$(PROJECT_DIR_BUILD)/frandom_seed.no_seed.o.%: frandom_seed.c | $(PROJECT_DIR_BUILD)
30+
$(CC) -c -flto -o $(PROJECT_DIR_BUILD)/temp.o $(CPPFLAGS) $(CFLAGS) $<
31+
mv $(PROJECT_DIR_BUILD)/temp.o $@
3232

3333
compile: $(OBJS)
3434

3535
clean:
36-
rm -rf $(PROJECT_DIR)/build
36+
rm -rf $(PROJECT_DIR_BUILD)
3737

3838
run: check
3939
check: $(OBJS)
40-
@if ! cmp $(PROJECT_DIR)/build/frandom_seed.good_seed.o.1 $(PROJECT_DIR)/build/frandom_seed.good_seed.o.2; then \
40+
@if ! cmp $(PROJECT_DIR_BUILD)/frandom_seed.good_seed.o.1 $(PROJECT_DIR_BUILD)/frandom_seed.good_seed.o.2; then \
4141
echo "Good seeds still not reproducible!" >&2; \
4242
false; \
4343
fi
4444
@if ! "${CC}" --version | grep -q "clang"; then \
45-
if cmp -s $(PROJECT_DIR)/build/frandom_seed.bad_seed.o.1 $(PROJECT_DIR)/build/frandom_seed.bad_seed.o.2; then \
45+
if cmp -s $(PROJECT_DIR_BUILD)/frandom_seed.bad_seed.o.1 $(PROJECT_DIR_BUILD)/frandom_seed.bad_seed.o.2; then \
4646
echo "Bad seeds reproducible?!" >&2; \
4747
false; \
4848
fi; \
4949
fi
50-
@if ! cmp $(PROJECT_DIR)/build/frandom_seed.no_seed.o.1 $(PROJECT_DIR)/build/frandom_seed.no_seed.o.2; then \
50+
@if ! cmp $(PROJECT_DIR_BUILD)/frandom_seed.no_seed.o.1 $(PROJECT_DIR_BUILD)/frandom_seed.no_seed.o.2; then \
5151
echo "No good default seed!" >&2; \
5252
false; \
5353
fi

BinaryBuilderToolchains.jl/test/testsuite/CToolchain/04_ar_determinism/Makefile

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ include ../common.mk
33

44
all: $(OBJS)
55

6-
$(PROJECT_DIR)/build:
6+
$(PROJECT_DIR_BUILD):
77
mkdir -p $@
88

9-
$(PROJECT_DIR)/build/libsplit%.o: libsplit%.c | $(PROJECT_DIR)/build
9+
$(PROJECT_DIR_BUILD)/libsplit%.o: libsplit%.c | $(PROJECT_DIR_BUILD)
1010
$(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $^
1111

12-
OBJS += $(PROJECT_DIR)/build/libsplit1.o
13-
OBJS += $(PROJECT_DIR)/build/libsplit2.o
14-
OBJS += $(PROJECT_DIR)/build/libsplit3.o
12+
OBJS += $(PROJECT_DIR_BUILD)/libsplit1.o
13+
OBJS += $(PROJECT_DIR_BUILD)/libsplit2.o
14+
OBJS += $(PROJECT_DIR_BUILD)/libsplit3.o
1515

1616
# Test assembling libsplit with `-r -U`, and `-U -r`, and `rU` and `Ur`
1717
# and `-rU` and `-Ur`. All six should give similar (broken) results,
@@ -20,16 +20,16 @@ OBJS += $(PROJECT_DIR)/build/libsplit3.o
2020
# Helper function to define build rules for one of our (many)
2121
# libsplit variants, and append it to a list of libraries
2222
define gen_libsplit
23-
$$(PROJECT_DIR)/build/libsplit$(subst $(SPACE),,$(2)).a: $$(OBJS)
23+
$$(PROJECT_DIR_BUILD)/libsplit$(subst $(SPACE),,$(2)).a: $$(OBJS)
2424
$$(AR) $(2) $$@ $$^ >$$@.log 2>$$@.log
25-
$(1) += $$(PROJECT_DIR)/build/libsplit$(subst $(SPACE),,$(2)).a
25+
$(1) += $$(PROJECT_DIR_BUILD)/libsplit$(subst $(SPACE),,$(2)).a
2626
endef
2727

2828
define index_libsplit
29-
$$(PROJECT_DIR)/build/libsplit-indexed$(subst $(SPACE),,$(2)).a: $$(PROJECT_DIR)/build/libsplit-r-D.a
29+
$$(PROJECT_DIR_BUILD)/libsplit-indexed$(subst $(SPACE),,$(2)).a: $$(PROJECT_DIR_BUILD)/libsplit-r-D.a
3030
@cp "$$<" "$$@"
3131
$$(RANLIB) $(2) $$@ >$$@.log 2>$$@.log
32-
$(1) += $$(PROJECT_DIR)/build/libsplit-indexed$(subst $(SPACE),,$(2)).a
32+
$(1) += $$(PROJECT_DIR_BUILD)/libsplit-indexed$(subst $(SPACE),,$(2)).a
3333
endef
3434

3535
$(eval $(call gen_libsplit,FAIL_AR_LIBS,-r -U))
@@ -62,7 +62,7 @@ $(eval $(call index_libsplit,PASS_RANLIB_LIBS,-D))
6262
$(eval $(call index_libsplit,PASS_RANLIB_LIBS,-DD))
6363

6464
clean:
65-
rm -rf $(PROJECT_DIR)/build
65+
rm -rf $(PROJECT_DIR_BUILD)
6666

6767
compile: $(PASS_AR_LIBS) $(FAIL_AR_LIBS) $(PASS_RANLIB_LIBS) $(FAIL_RANLIB_LIBS)
6868

0 commit comments

Comments
 (0)