Skip to content

Commit 1f65610

Browse files
committed
ci/netbsd: use the "official" cross compiler
1 parent 58c701f commit 1f65610

File tree

3 files changed

+63
-100
lines changed

3 files changed

+63
-100
lines changed

src/ci/docker/dist-s390x-linux-netbsd/Dockerfile

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,17 +64,17 @@ COPY patches/ /tmp/patches/
6464
COPY s390x-linux-gnu.config build-s390x-toolchain.sh /tmp/
6565
RUN ./build-s390x-toolchain.sh
6666

67-
USER root
68-
6967
COPY build-netbsd-toolchain.sh /tmp/
7068
RUN ./build-netbsd-toolchain.sh
7169

72-
ENV PATH=$PATH:/x-tools/s390x-ibm-linux-gnu/bin
70+
USER root
71+
72+
ENV PATH=$PATH:/x-tools/s390x-ibm-linux-gnu/bin:/x-tools/x86_64-unknown-netbsd/bin
7373

7474
ENV \
75-
AR_x86_64_unknown_netbsd=x86_64-unknown-netbsd-ar \
76-
CC_x86_64_unknown_netbsd=x86_64-unknown-netbsd-gcc \
77-
CXX_x86_64_unknown_netbsd=x86_64-unknown-netbsd-g++ \
75+
AR_x86_64_unknown_netbsd=x86_64--netbsd-ar \
76+
CC_x86_64_unknown_netbsd=x86_64--netbsd-gcc-sysroot \
77+
CXX_x86_64_unknown_netbsd=x86_64--netbsd-g++-sysroot \
7878
CC_s390x_unknown_linux_gnu=s390x-ibm-linux-gnu-gcc \
7979
AR_s390x_unknown_linux_gnu=s390x-ibm-linux-gnu-ar \
8080
CXX_s390x_unknown_linux_gnu=s390x-ibm-linux-gnu-g++

src/ci/docker/dist-s390x-linux-netbsd/build-netbsd-toolchain.sh

Lines changed: 51 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -13,108 +13,65 @@
1313

1414
set -ex
1515

16-
BINUTILS=2.25.1
17-
GCC=5.3.0
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+
}
1832

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
31-
32-
# Next, download the NetBSD libc and relevant header files
3333
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
34+
cd netbsd
4235

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
36+
mkdir -p /x-tools/x86_64-unknown-netbsd/sysroot
6737

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
38+
BSD=7.0.2
7739

78-
rm -rf netbsd
40+
# Originally from ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-$BSD/source/sets/*.tgz
41+
curl https://dl.timnn.me/69608745091236e7/$BSD/src.tgz | tar xzf -
42+
curl https://dl.timnn.me/69608745091236e7/$BSD/gnusrc.tgz | tar xzf -
43+
curl https://dl.timnn.me/69608745091236e7/$BSD/sharesrc.tgz | tar xzf -
44+
curl https://dl.timnn.me/69608745091236e7/$BSD/syssrc.tgz | tar xzf -
7945

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
46+
# Originally from ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-$BSD/amd64/binary/sets/*.tgz
47+
curl https://dl.timnn.me/69608745091236e7/$BSD/base.tgz | \
48+
tar xzf - -C /x-tools/x86_64-unknown-netbsd/sysroot ./usr/include ./usr/lib ./lib
49+
curl https://dl.timnn.me/69608745091236e7/$BSD/comp.tgz | \
50+
tar xzf - -C /x-tools/x86_64-unknown-netbsd/sysroot ./usr/include ./usr/lib
8651

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"
52+
cd usr/src
9053

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"
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
9461

95-
for patch in $PATCHES; do
96-
curl $patch | patch -Np0
97-
done
62+
cd ../..
9863

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
64+
rm -rf usr
11865

119-
cd ../..
120-
rm -rf gcc
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+
chmod +x /x-tools/x86_64-unknown-netbsd/bin/x86_64--netbsd-gcc-sysroot
77+
chmod +x /x-tools/x86_64-unknown-netbsd/bin/x86_64--netbsd-g++-sysroot

src/librustc_llvm/build.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,12 @@ fn main() {
131131
if is_crossed && flag.starts_with("-m") {
132132
continue;
133133
}
134+
135+
// -Wdate-time is not supported by the netbsd cross compiler
136+
if is_crossed && target.contains("netbsd") && flag.contains("date-time") {
137+
continue;
138+
}
139+
134140
cfg.flag(flag);
135141
}
136142

0 commit comments

Comments
 (0)