pytrainer: unpin python 3.10
[NixPkgs.git] / pkgs / stdenv / linux / test-bootstrap-tools.nix
blobe199e515919555b03b036a76a66492609df51ef7
2   lib,
3   stdenv,
4   binutils,
5   busybox,
6   bootstrapTools,
7   hello,
8 }:
10 builtins.derivation {
11   name = "test-bootstrap-tools";
12   inherit (stdenv.hostPlatform) system; # We cannot "cross test"
13   builder = busybox;
14   args = [
15     "ash"
16     "-e"
17     "-c"
18     "eval \"$buildCommand\""
19   ];
21   buildCommand =
22     ''
23       export PATH=${bootstrapTools}/bin
25       ls -l
26       mkdir $out
27       mkdir $out/bin
28       sed --version
29       find --version
30       diff --version
31       patch --version
32       make --version
33       awk --version
34       grep --version
35       gcc --version
37     ''
38     + lib.optionalString (stdenv.hostPlatform.libc == "glibc") ''
39       rtld=$(echo ${bootstrapTools}/lib/${builtins.unsafeDiscardStringContext # only basename
40         (builtins.baseNameOf binutils.dynamicLinker)})
41       libc_includes=${bootstrapTools}/include-glibc
42     ''
43     + lib.optionalString (stdenv.hostPlatform.libc == "musl") ''
44       rtld=$(echo ${bootstrapTools}/lib/ld-musl*.so.?)
45       libc_includes=${bootstrapTools}/include-libc
46     ''
47     + ''
48       # path to version-specific libraries, like libstdc++.so
49       cxx_libs=$(echo ${bootstrapTools}/lib/gcc/*/*)
50       export CPP="cpp -idirafter $libc_includes -B${bootstrapTools}"
51       export  CC="gcc -idirafter $libc_includes -B${bootstrapTools} -Wl,-dynamic-linker,$rtld -Wl,-rpath,${bootstrapTools}/lib -Wl,-rpath,$cxx_libs"
52       export CXX="g++ -idirafter $libc_includes -B${bootstrapTools} -Wl,-dynamic-linker,$rtld -Wl,-rpath,${bootstrapTools}/lib -Wl,-rpath,$cxx_libs"
54       echo '#include <stdio.h>' >> foo.c
55       echo '#include <limits.h>' >> foo.c
56       echo 'int main() { printf("Hello World\\n"); return 0; }' >> foo.c
57       $CC -o $out/bin/foo foo.c
58       $out/bin/foo
60       echo '#include <iostream>' >> bar.cc
61       echo 'int main() { std::cout << "Hello World\\n"; }' >> bar.cc
62       $CXX -v -o $out/bin/bar bar.cc
63       $out/bin/bar
65       tar xvf ${hello.src}
66       cd hello-*
67       ./configure --prefix=$out
68       make
69       make install
70     '';