]> git.lizzy.rs Git - rust.git/blob - src/ci/docker/host-x86_64/disabled/dist-x86_64-haiku/build-toolchain.sh
Auto merge of #90205 - mati865:link-modifiers-in-rustc, r=petrochenkov
[rust.git] / src / ci / docker / host-x86_64 / disabled / dist-x86_64-haiku / build-toolchain.sh
1 #!/usr/bin/env bash
2
3 set -ex
4
5 ARCH=$1
6
7 TOP=$(pwd)
8
9 BUILDTOOLS=$TOP/buildtools
10 HAIKU=$TOP/haiku
11 OUTPUT=/tools
12 SYSROOT=$OUTPUT/cross-tools-$ARCH/sysroot
13 PACKAGE_ROOT=/system
14
15 hide_output() {
16   set +x
17   on_err="
18 echo ERROR: An error was encountered with the build.
19 cat /tmp/build.log
20 exit 1
21 "
22   trap "$on_err" ERR
23   bash -c "while true; do sleep 30; echo \$(date) - building ...; done" &
24   PING_LOOP_PID=$!
25   "$@" &> /tmp/build.log
26   trap - ERR
27   kill $PING_LOOP_PID
28   set -x
29 }
30
31 # First up, build a cross-compiler
32 git clone --depth=1 https://git.haiku-os.org/haiku
33 git clone --depth=1 https://git.haiku-os.org/buildtools
34 cd $BUILDTOOLS/jam
35 hide_output make
36 hide_output ./jam0 install
37 mkdir -p $OUTPUT
38 cd $OUTPUT
39 hide_output $HAIKU/configure --build-cross-tools $ARCH $TOP/buildtools
40
41 # Set up sysroot to redirect to /system
42 mkdir -p $SYSROOT/boot
43 mkdir -p $PACKAGE_ROOT
44 ln -s $PACKAGE_ROOT $SYSROOT/boot/system
45
46 # Build needed packages and tools for the cross-compiler
47 hide_output jam -q haiku.hpkg haiku_devel.hpkg '<build>package'
48
49 # Set up our sysroot
50 cp $OUTPUT/objects/linux/lib/*.so /lib/x86_64-linux-gnu
51 cp $OUTPUT/objects/linux/x86_64/release/tools/package/package /bin/
52 find $SYSROOT/../bin/ -type f -exec ln -s {} /bin/ \;
53
54 # Extract packages
55 package extract -C $PACKAGE_ROOT $OUTPUT/objects/haiku/$ARCH/packaging/packages/haiku.hpkg
56 package extract -C $PACKAGE_ROOT $OUTPUT/objects/haiku/$ARCH/packaging/packages/haiku_devel.hpkg
57 find $OUTPUT/download/ -name '*.hpkg' -exec package extract -C $PACKAGE_ROOT {} \;
58
59 # Fix libgcc_s so we can link to it
60 cd $PACKAGE_ROOT/develop/lib
61 ln -s ../../lib/libgcc_s.so libgcc_s.so
62
63 # Clean up
64 rm -rf $BUILDTOOLS $HAIKU $OUTPUT/Jamfile $OUTPUT/attributes $OUTPUT/build \
65   $OUTPUT/build_packages $OUTPUT/download $OUTPUT/objects