|
13 | 13 |
|
14 | 14 | set -ex
|
15 | 15 |
|
16 |
| -BINUTILS=2.25.1 |
17 |
| -GCC=5.3.0 |
18 |
| - |
19 |
| -# First up, build binutils |
20 |
| -mkdir binutils |
21 |
| -cd binutils |
22 |
| -curl https://ftp.gnu.org/gnu/binutils/binutils-$BINUTILS.tar.bz2 | tar xjf - |
23 |
| -mkdir binutils-build |
24 |
| -cd binutils-build |
25 |
| -../binutils-$BINUTILS/configure \ |
26 |
| - --target=x86_64-unknown-netbsd |
27 |
| -make -j10 |
28 |
| -make install |
29 |
| -cd ../.. |
30 |
| -rm -rf binutils |
| 16 | +hide_output() { |
| 17 | + set +x |
| 18 | + on_err=" |
| 19 | +echo ERROR: An error was encountered with the build. |
| 20 | +cat /tmp/build.log |
| 21 | +exit 1 |
| 22 | +" |
| 23 | + trap "$on_err" ERR |
| 24 | + bash -c "while true; do sleep 30; echo \$(date) - building ...; done" & |
| 25 | + PING_LOOP_PID=$! |
| 26 | + $@ &> /tmp/build.log |
| 27 | + rm /tmp/build.log |
| 28 | + trap - ERR |
| 29 | + kill $PING_LOOP_PID |
| 30 | + set -x |
| 31 | +} |
31 | 32 |
|
32 |
| -# Next, download the NetBSD libc and relevant header files |
33 | 33 | mkdir netbsd
|
34 |
| -# originally from: |
35 |
| -# https://ftp.netbsd.org/pub/NetBSD/NetBSD-7.0/amd64/binary/sets/base.tgz |
36 |
| -curl https://s3.amazonaws.com/rust-lang-ci/rust-ci-mirror/2017-01-16-netbsd-base.tgz | \ |
37 |
| - tar xzf - -C netbsd ./usr/include ./usr/lib ./lib |
38 |
| -# originally from: |
39 |
| -# https://ftp.netbsd.org/pub/NetBSD/NetBSD-7.0/amd64/binary/sets/comp.tgz |
40 |
| -curl https://s3.amazonaws.com/rust-lang-ci/rust-ci-mirror/2017-01-16-netbsd-comp.tgz | \ |
41 |
| - tar xzf - -C netbsd ./usr/include ./usr/lib |
42 |
| - |
43 |
| -dst=/usr/local/x86_64-unknown-netbsd |
44 |
| -cp -r netbsd/usr/include $dst |
45 |
| -cp netbsd/usr/lib/crt0.o $dst/lib |
46 |
| -cp netbsd/usr/lib/crti.o $dst/lib |
47 |
| -cp netbsd/usr/lib/crtn.o $dst/lib |
48 |
| -cp netbsd/usr/lib/crtbeginS.o $dst/lib |
49 |
| -cp netbsd/usr/lib/crtendS.o $dst/lib |
50 |
| -cp netbsd/usr/lib/crtbegin.o $dst/lib |
51 |
| -cp netbsd/usr/lib/crtend.o $dst/lib |
52 |
| -cp netbsd/usr/lib/gcrt0.o $dst/lib |
53 |
| -cp netbsd/usr/lib/libc.a $dst/lib |
54 |
| -cp netbsd/usr/lib/libc_p.a $dst/lib |
55 |
| -cp netbsd/usr/lib/libc_pic.a $dst/lib |
56 |
| -cp netbsd/lib/libc.so.12.193.1 $dst/lib |
57 |
| -cp netbsd/lib/libutil.so.7.21 $dst/lib |
58 |
| -cp netbsd/usr/lib/libm.a $dst/lib |
59 |
| -cp netbsd/usr/lib/libm_p.a $dst/lib |
60 |
| -cp netbsd/usr/lib/libm_pic.a $dst/lib |
61 |
| -cp netbsd/lib/libm.so.0.11 $dst/lib |
62 |
| -cp netbsd/usr/lib/librt.so.1.1 $dst/lib |
63 |
| -cp netbsd/usr/lib/libpthread.a $dst/lib |
64 |
| -cp netbsd/usr/lib/libpthread_p.a $dst/lib |
65 |
| -cp netbsd/usr/lib/libpthread_pic.a $dst/lib |
66 |
| -cp netbsd/usr/lib/libpthread.so.1.2 $dst/lib |
67 |
| - |
68 |
| -ln -s libc.so.12.193.1 $dst/lib/libc.so |
69 |
| -ln -s libc.so.12.193.1 $dst/lib/libc.so.12 |
70 |
| -ln -s libm.so.0.11 $dst/lib/libm.so |
71 |
| -ln -s libm.so.0.11 $dst/lib/libm.so.0 |
72 |
| -ln -s libutil.so.7.21 $dst/lib/libutil.so |
73 |
| -ln -s libutil.so.7.21 $dst/lib/libutil.so.7 |
74 |
| -ln -s libpthread.so.1.2 $dst/lib/libpthread.so |
75 |
| -ln -s libpthread.so.1.2 $dst/lib/libpthread.so.1 |
76 |
| -ln -s librt.so.1.1 $dst/lib/librt.so |
77 |
| - |
78 |
| -rm -rf netbsd |
79 |
| - |
80 |
| -# Finally, download and build gcc to target NetBSD |
81 |
| -mkdir gcc |
82 |
| -cd gcc |
83 |
| -curl https://ftp.gnu.org/gnu/gcc/gcc-$GCC/gcc-$GCC.tar.bz2 | tar xjf - |
84 |
| -cd gcc-$GCC |
85 |
| -./contrib/download_prerequisites |
86 |
| - |
87 |
| -# Originally from |
88 |
| -# ftp://ftp.netbsd.org/pub/pkgsrc/pkgsrc-2016Q4/pkgsrc/lang/gcc5/patches/patch-libstdc%2B%2B-v3_config_os_bsd_netbsd_ctype__base.h |
89 |
| -PATCHES="https://s3.amazonaws.com/rust-lang-ci/rust-ci-mirror/2017-01-13-netbsd-patch1.patch" |
90 |
| - |
91 |
| -# Originally from |
92 |
| -# ftp://ftp.netbsd.org/pub/pkgsrc/pkgsrc-2016Q4/pkgsrc/lang/gcc5/patches/patch-libstdc%2B%2B-v3_config_os_bsd_netbsd_ctype__configure__char.cc |
93 |
| -PATCHES="$PATCHES https://s3.amazonaws.com/rust-lang-ci/rust-ci-mirror/2017-01-13-netbsd-patch2.patch" |
94 |
| - |
95 |
| -for patch in $PATCHES; do |
96 |
| - curl $patch | patch -Np0 |
97 |
| -done |
98 |
| - |
99 |
| -mkdir ../gcc-build |
100 |
| -cd ../gcc-build |
101 |
| -../gcc-$GCC/configure \ |
102 |
| - --enable-languages=c,c++ \ |
103 |
| - --target=x86_64-unknown-netbsd \ |
104 |
| - --disable-libcilkrts \ |
105 |
| - --disable-multilib \ |
106 |
| - --disable-nls \ |
107 |
| - --disable-libgomp \ |
108 |
| - --disable-libquadmath \ |
109 |
| - --disable-libssp \ |
110 |
| - --disable-libvtv \ |
111 |
| - --disable-libcilkrt \ |
112 |
| - --disable-libada \ |
113 |
| - --disable-libsanitizer \ |
114 |
| - --disable-libquadmath-support \ |
115 |
| - --disable-lto |
116 |
| -make -j10 |
117 |
| -make install |
| 34 | +cd netbsd |
| 35 | + |
| 36 | +mkdir -p /x-tools/x86_64-unknown-netbsd/sysroot |
| 37 | + |
| 38 | +URL=https://s3.amazonaws.com/rust-lang-ci/rust-ci-mirror |
| 39 | + |
| 40 | +# Originally from ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-$BSD/source/sets/*.tgz |
| 41 | +curl $URL/2017-03-17-netbsd-src.tgz | tar xzf - |
| 42 | +curl $URL/2017-03-17-netbsd-gnusrc.tgz | tar xzf - |
| 43 | +curl $URL/2017-03-17-netbsd-sharesrc.tgz | tar xzf - |
| 44 | +curl $URL/2017-03-17-netbsd-syssrc.tgz | tar xzf - |
| 45 | + |
| 46 | +# Originally from ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-$BSD/amd64/binary/sets/*.tgz |
| 47 | +curl $URL/2017-03-17-netbsd-base.tgz | \ |
| 48 | + tar xzf - -C /x-tools/x86_64-unknown-netbsd/sysroot ./usr/include ./usr/lib ./lib |
| 49 | +curl $URL/2017-03-17-netbsd-comp.tgz | \ |
| 50 | + tar xzf - -C /x-tools/x86_64-unknown-netbsd/sysroot ./usr/include ./usr/lib |
| 51 | + |
| 52 | +cd usr/src |
| 53 | + |
| 54 | +# The options, in order, do the following |
| 55 | +# * this is an unpriviledged build |
| 56 | +# * output to a predictable location |
| 57 | +# * disable various uneeded stuff |
| 58 | +MKUNPRIVED=yes TOOLDIR=/x-tools/x86_64-unknown-netbsd \ |
| 59 | +MKSHARE=no MKDOC=no MKHTML=no MKINFO=no MKKMOD=no MKLINT=no MKMAN=no MKNLS=no MKPROFILE=no \ |
| 60 | +hide_output ./build.sh -j10 -m amd64 tools |
118 | 61 |
|
119 | 62 | cd ../..
|
120 |
| -rm -rf gcc |
| 63 | + |
| 64 | +rm -rf usr |
| 65 | + |
| 66 | +cat > /x-tools/x86_64-unknown-netbsd/bin/x86_64--netbsd-gcc-sysroot <<'EOF' |
| 67 | +#!/bin/bash |
| 68 | +exec /x-tools/x86_64-unknown-netbsd/bin/x86_64--netbsd-gcc --sysroot=/x-tools/x86_64-unknown-netbsd/sysroot "$@" |
| 69 | +EOF |
| 70 | + |
| 71 | +cat > /x-tools/x86_64-unknown-netbsd/bin/x86_64--netbsd-g++-sysroot <<'EOF' |
| 72 | +#!/bin/bash |
| 73 | +exec /x-tools/x86_64-unknown-netbsd/bin/x86_64--netbsd-g++ --sysroot=/x-tools/x86_64-unknown-netbsd/sysroot "$@" |
| 74 | +EOF |
| 75 | + |
| 76 | +GCC_SHA1=`sha1sum -b /x-tools/x86_64-unknown-netbsd/bin/x86_64--netbsd-gcc | cut -d' ' -f1` |
| 77 | +GPP_SHA1=`sha1sum -b /x-tools/x86_64-unknown-netbsd/bin/x86_64--netbsd-g++ | cut -d' ' -f1` |
| 78 | + |
| 79 | +echo "# $GCC_SHA1" >> /x-tools/x86_64-unknown-netbsd/bin/x86_64--netbsd-gcc-sysroot |
| 80 | +echo "# $GPP_SHA1" >> /x-tools/x86_64-unknown-netbsd/bin/x86_64--netbsd-g++-sysroot |
| 81 | + |
| 82 | +chmod +x /x-tools/x86_64-unknown-netbsd/bin/x86_64--netbsd-gcc-sysroot |
| 83 | +chmod +x /x-tools/x86_64-unknown-netbsd/bin/x86_64--netbsd-g++-sysroot |
0 commit comments