diff options
author | Mitch Tishmack <mitch.tishmack@gmail.com> | 2016-08-11 18:16:28 -0500 |
---|---|---|
committer | Timo Teräs <timo.teras@iki.fi> | 2017-02-13 14:38:02 +0200 |
commit | 20fb208e2d61ef333f0ae1481eb687b6f641f59a (patch) | |
tree | c0bb32ed3d739ecae664a5ec99c3295b41abd228 /testing/ghc-bootstrap | |
parent | 47407f929092502aab6386b14f9caefe181a6569 (diff) | |
download | aports-20fb208e2d61ef333f0ae1481eb687b6f641f59a.tar.bz2 aports-20fb208e2d61ef333f0ae1481eb687b6f641f59a.tar.xz |
testing/ghc-bootstrap: simplify/unify aport
The bootstrap port now sets up needed settings at apk build time instead
of at docker build time. Should be less brittle for changes.
Diffstat (limited to 'testing/ghc-bootstrap')
-rw-r--r-- | testing/ghc-bootstrap/APKBUILD | 46 | ||||
-rw-r--r-- | testing/ghc-bootstrap/Dockerfile.armhf (renamed from testing/ghc-bootstrap/bootstrap/armhf/Dockerfile) | 101 | ||||
-rw-r--r-- | testing/ghc-bootstrap/Dockerfile.x86_64 (renamed from testing/ghc-bootstrap/bootstrap/x86_64/Dockerfile) | 68 | ||||
-rw-r--r-- | testing/ghc-bootstrap/bootstrap.patch (renamed from testing/ghc-bootstrap/bootstrap/armhf/bootstrap.patch) | 0 | ||||
-rw-r--r-- | testing/ghc-bootstrap/bootstrap/armhf/settings | 32 | ||||
-rw-r--r-- | testing/ghc-bootstrap/bootstrap/gmpurl.patch | 22 | ||||
-rw-r--r-- | testing/ghc-bootstrap/bootstrap/x86_64/bootstrap.patch | 112 | ||||
-rw-r--r-- | testing/ghc-bootstrap/bootstrap/x86_64/settings | 32 | ||||
-rw-r--r-- | testing/ghc-bootstrap/gmpurl.patch | 12 | ||||
-rwxr-xr-x | testing/ghc-bootstrap/llvm-3.7.1.sh (renamed from testing/ghc-bootstrap/bootstrap/llvm-3.7.1.sh) | 0 | ||||
-rw-r--r-- | testing/ghc-bootstrap/rm-ghc-pwd.patch | 184 |
11 files changed, 303 insertions, 306 deletions
diff --git a/testing/ghc-bootstrap/APKBUILD b/testing/ghc-bootstrap/APKBUILD index 8578ae579b..7642dfb600 100644 --- a/testing/ghc-bootstrap/APKBUILD +++ b/testing/ghc-bootstrap/APKBUILD @@ -3,20 +3,24 @@ # # Build/bootstrap ghc similarly to the go package. # Caveat: bootstrapping isn't a commonly tested piece of ghc. +# +# Note: This only exists to build the native ghc. It is +# huge in size and slow and also intentionally lacks modules +# in the native compiler. pkgname=ghc-bootstrap -pkgver=8.0.1 +pkgver=8.0.2 pkgrel=0 pkgdesc="The Glasgow haskell compiler (bootstrapped)" arch="x86_64 armhf" license="custom:bsd3" -url='https://github.com/mitchty/alpine-linux-ghc-bootstrap' +url="https://haskell.org" depends="bash libffi musl zlib gcc binutils-gold llvm3.7" install="" subpackages="" makedepends="" source=" - http://dev.alpinelinux.org/archive/ghc-bootstrap/ghc-$pkgver-x86_64-unknown-linux-musl.tar.xz - http://dev.alpinelinux.org/archive/ghc-bootstrap/ghc-$pkgver-arm-unknown-linux-musleabihf.tar.xz + http://dev.alpinelinux.org/archive/ghc-bootstrap/ghc-$pkgver-armhf.tar.xz + http://dev.alpinelinux.org/archive/ghc-bootstrap/ghc-$pkgver-x86_64.tar.xz " # The bootstrap process uses docker to build ghc from a debian glibc host @@ -27,30 +31,24 @@ source=" # Note, these docker images are large, ~10G the dockerfiles weren't built # to be small. Once built the containers should likely be removed. snapshot() { - local x86_64_tar="ghc-${pkgver}-x86_64-pc-linux-musl.tar.xz" - local arm_tar="ghc-${pkgver}-arm-unknown-linux-musleabihf.tar.xz" - - docker build -t alpine-ghc-bootstrap:x86_64 \ - -f bootstrap/x86_64/Dockerfile . - docker run -a stdout alpine-ghc-bootstrap:x86_64 \ - /bin/cat "/tmp/$x86_64_tar" > $x86_64_tar - - docker build -t alpine-ghc-bootstrap:armhf \ - -f bootstrap/armhf/Dockerfile . - docker run -a stdout alpine-ghc-bootstrap:armhf \ - /bin/cat "/tmp/$arm_tar" > $arm_tar + for x in $(echo ${arch}); do + docker build -t alpine-ghc-bootstrap:${x} \ + -f Dockerfile.${x} . || return 1 + docker run -a stdout alpine-ghc-bootstrap:${x} \ + /bin/cat "/tmp/ghc-${pkgver}-${x}.tar.xz" > ghc-${pkgver}-${x}.tar.xz || return 1 + done } package() { cd "$srcdir/$CARCH" install -d "$pkgdir" || return 1 mv usr "$pkgdir" || return 1 - settings=$(find "$pkgdir" -name settings -type f) + local settings="$(find $pkgdir -name settings -type f)" + sed -i 's/C compiler supports -no-pie\"\, \"NO\"/C compiler supports -no-pie\"\, \"YES\"/' "$settings" || return 1 + sed -i 's|/usr/.*-gcc|gcc|' "$settings" || return 1 + sed -i 's|/usr/.*-ar|ar|' "$settings" || return 1 + sed -i 's|/usr/.*-ld.gold|ld.gold|' "$settings" || return 1 + sed -i 's|/usr/.*-ld|ld.gold|' "$settings" || return 1 + sed -i 's|/usr/.*/llc|llc-3.7|' "$settings" || return 1 + sed -i 's|/usr/.*/opt|opt-3.7|' "$settings" || return 1 } - -md5sums="ec34cc6bebe490f765bc73961fd72460 ghc-8.0.1-x86_64-unknown-linux-musl.tar.xz -b0901df3305b49b6044607b5ccde5f03 ghc-8.0.1-arm-unknown-linux-musleabihf.tar.xz" -sha256sums="b917c130597ed7a5dcf2d387c1b598b088f644566fc47f95d859a03a55529bd2 ghc-8.0.1-x86_64-unknown-linux-musl.tar.xz -54d5e8067b087b1d426e01469162749f1f2c417dc2b8b0f6577acbf0c19aba5e ghc-8.0.1-arm-unknown-linux-musleabihf.tar.xz" -sha512sums="4214ab4b3431c695b91429de6a7359cd607c4ca2d04e51afa111757da41b97912d46d3b4b251b717e175baf11186023c133af1ce1d5b95299bd34a85dd9f40b3 ghc-8.0.1-x86_64-unknown-linux-musl.tar.xz -ab920e198a2c779e8ad3f6e3f9e9485c8742254c5a914875a6cd106957bb6e0720e90707aabe822295535922d55fc66898660bf7cbf8a7c88c231eceafe358e4 ghc-8.0.1-arm-unknown-linux-musleabihf.tar.xz" diff --git a/testing/ghc-bootstrap/bootstrap/armhf/Dockerfile b/testing/ghc-bootstrap/Dockerfile.armhf index 2ef2572f89..9111bb72e3 100644 --- a/testing/ghc-bootstrap/bootstrap/armhf/Dockerfile +++ b/testing/ghc-bootstrap/Dockerfile.armhf @@ -2,10 +2,20 @@ from debian:8.0 # Install stock bindist for cross compile -env ghc 7.10.3 +env ghc 8.0.2 env arch x86_64 env llvm 3.7.1 -env cabal 1.22.9.0 +env cabal 1.24.0.2 + +env destarch armhf +env tardir /tmp/root +env destdir /tmp/root/$destarch +env triple arm-unknown-linux-musleabihf +env target arm-linux-musleabihf +env crosscc $triple-gcc + +# add cross toolchain to PATH +env PATH /usr/$triple/bin:$PATH # all needed packages for compiling run apt-get clean && \ @@ -31,8 +41,8 @@ run apt-get clean && \ pixz \ openssl \ bison \ - flex \ - git + git \ + flex add http://llvm.org/releases/$llvm/llvm-$llvm.src.tar.xz /tmp/ add http://llvm.org/releases/$llvm/polly-$llvm.src.tar.xz /tmp/ @@ -42,32 +52,32 @@ add http://llvm.org/releases/$llvm/polly-$llvm.src.tar.xz /tmp/ # "what debian upstream has a current version of llvm" nonsense, takes more # time to do that than just build the right llvm from source. workdir /tmp -copy bootstrap/llvm-$llvm.sh /tmp/llvm.sh +copy llvm-$llvm.sh /tmp/llvm.sh run openssl sha1 llvm-$llvm.src.tar.xz | grep "SHA1(llvm-3.7.1.src.tar.xz)= 5dbdcafac105273dcbff94c68837a66c6dd78cef" && \ openssl sha1 polly-$llvm.src.tar.xz | grep "SHA1(polly-3.7.1.src.tar.xz)= 0e3a461907cde7505fbdb44bf61ff318aa9254f7" && \ tar xJpf /tmp/llvm-$llvm.src.tar.xz && \ tar xJpf /tmp/polly-$llvm.src.tar.xz && \ /tmp/llvm.sh && \ - rm -fr /tmp/llvm-$llvm.src + rm -fr /tmp/llvm-$llvm.src /tmp/build add https://downloads.haskell.org/~ghc/$ghc/ghc-$ghc-$arch-deb8-linux.tar.xz /tmp/ # Install debian ghc binary from upstream. workdir /tmp -run openssl sha1 ghc-$ghc-$arch-deb8-linux.tar.xz | grep "SHA1(ghc-7.10.3-x86_64-deb8-linux.tar.xz)= bab16f95ef4fe6b7cc2fb6b36a02dceeeb53faa4" && \ +run openssl sha1 ghc-$ghc-$arch-deb8-linux.tar.xz | grep "SHA1(ghc-$ghc-x86_64-deb8-linux.tar.xz)= f298b7d0f37cc9ded7ac66b2662b0fa5ac6d0809" && \ tar xJpf /tmp/ghc-$ghc-$arch-deb8-linux.tar.xz workdir /tmp/ghc-$ghc run ./configure --prefix=/usr && \ make -j1 install && \ rm -fr /tmp/ghc-$ghc -add https://www.haskell.org/cabal/release/cabal-install-$cabal/cabal-install-$cabal.tar.gz /tmp/ +run curl -kL https://www.haskell.org/cabal/release/cabal-install-$cabal/cabal-install-$cabal.tar.gz -o /tmp/cabal-install-$cabal.tar.gz # Install cabal so we can install alex/happy to pull off of git # bootstrap cabal and install alex/happy the same way apks are built # only globally workdir /tmp -run openssl sha1 cabal-install-$cabal.tar.gz | grep "SHA1(cabal-install-1.22.9.0.tar.gz)= f1375c928794f45f253b8ec92c2af4732fec597b" && \ +run openssl sha1 cabal-install-$cabal.tar.gz | grep "SHA1(cabal-install-$cabal.tar.gz)= ca019360c45be32e224b6582ab46b420fb070417" && \ tar xzpf /tmp/cabal-install-$cabal.tar.gz workdir /tmp/cabal-install-$cabal run ./bootstrap.sh --global --no-doc && \ @@ -75,15 +85,12 @@ run ./bootstrap.sh --global --no-doc && \ cabal install --global alex happy && \ rm -fr /tmp/cabal-install-$cabal -# First up, install/compile the cross compiler with musl libc -# armv7 hard float cross compiler, we basically rebuild ghc again here with -# the cross compiler, and the llvm we built for x86_64 as well workdir /tmp run git clone --depth 1 https://github.com/GregorR/musl-cross.git musl-cross workdir /tmp/musl-cross run echo GCC_BUILTIN_PREREQS=yes >> config.sh && \ + echo TRIPLE=${triple} >> config.sh && \ echo ARCH=arm >> config.sh && \ - echo TRIPLE=arm-linux-musleabihf >> config.sh && \ echo GCC_BOOTSTRAP_CONFFLAGS=\"--with-arch=armv6 --with-float=hard --with-fpu=vfp\" >> config.sh && \ echo GCC_CONFFLAGS=\"--with-arch=armv6 --with-float=hard --with-fpu=vfp\" >> config.sh && \ echo GCC_STAGE1_NOOPT=1 >> config.sh && \ @@ -93,48 +100,40 @@ run echo GCC_BUILTIN_PREREQS=yes >> config.sh && \ echo "CFLAGS='-g -O2 -fPIC -DPIC'" >> config.sh && \ echo "CPPFLAGS='-fPIC -DPIC'" >> config.sh && \ echo "LDFLAGS='-fPIC -DPIC'" >> config.sh -copy bootstrap/gmpurl.patch gmpurl.patch +copy gmpurl.patch gmpurl.patch run patch -p1 < gmpurl.patch && \ ./build.sh && \ rm -fr /tmp/musl-cross -add http://downloads.haskell.org/~ghc/8.0.1/ghc-8.0.1-src.tar.xz /tmp/ - -env tardir /tmp/root -env destdir /tmp/root/armhf -env crosscc arm-linux-musleabihf-gcc -env target arm-linux-musleabihf -env triple arm-unknown-linux-musleabihf -env ghc 8.0.1 - -# add cross toolchain to PATH -env PATH /usr/$target/bin:$PATH +add http://downloads.haskell.org/~ghc/$ghc/ghc-$ghc-src.tar.xz /tmp/ workdir /tmp -run openssl sha1 ghc-$ghc-src.tar.xz | grep "SHA1(ghc-8.0.1-src.tar.xz)= 585a2d34a17ce2452273147f2e3cef1a2efe1aa5" && \ +run openssl sha1 ghc-$ghc-src.tar.xz | grep "SHA1(ghc-$ghc-src.tar.xz)= 0e0ae6d5ba119c10f3c7b807d35166e7c06b9b35" && \ tar xJpf /tmp/ghc-$ghc-src.tar.xz workdir /tmp/ghc-$ghc -env PATH $PATH:/usr/$triple/bin -copy bootstrap/$arch/bootstrap.patch bootstrap.patch -run patch -p1 < bootstrap.patch -run cp mk/build.mk.sample mk/build.mk && \ - ./boot && \ - echo "BuildFlavour = quick-llvm" >> mk/build.mk && \ - echo "INTEGER_LIBRARY = integer-simple" >> mk/build.mk && \ - echo "HADDOCK_DOCS = NO" >> mk/build.mk && \ - echo "BUILD_SPHINX_HTML = NO" >> mk/build.mk && \ - echo "BUILD_SPHINX_PS = NO" >> mk/build.mk && \ - echo "BUILD_SPHINX_PDF = NO" >> mk/build.mk && \ - ./configure \ - --target=$target \ - --prefix=/usr -run make -j$(grep -c processor /proc/cpuinfo) || make -j1 -run make -j1 install STRIP_CMD=$target-strip DESTDIR=$destdir - -# unlit and hp2ps both build using the stage0, not having luck -# getting the build patched right so for now lets just -# remove and rebuild these c helper programs -run rm $(find $destdir -name "*-hp2ps") +copy bootstrap.patch bootstrap.patch +copy rm-ghc-pwd.patch rm-ghc-pwd.patch +run patch -p1 < bootstrap.patch && \ + patch -p1 < rm-ghc-pwd.patch +run cp mk/build.mk.sample mk/build.mk && \ + ./boot && \ + echo "BuildFlavour = perf-llvm" >> mk/build.mk && \ + echo "BeConservative = YES" >> mk/build.mk && \ + echo "INTEGER_LIBRARY = integer-simple" >> mk/build.mk && \ + echo "HADDOCK_DOCS = NO" >> mk/build.mk && \ + echo "BUILD_SPHINX_HTML = NO" >> mk/build.mk && \ + echo "BUILD_SPHINX_PS = NO" >> mk/build.mk && \ + echo "BUILD_SPHINX_PDF = NO" >> mk/build.mk && \ + echo "SplitSections = YES" >> mk/build.mk && \ + echo "V = 0" >> mk/build.mk && \ + echo "SPLIT_CMD = :" >> mk/build.mk && \ + ./configure \ + --target=$triple \ + --prefix=/usr +run make -j$(grep -c processor /proc/cpuinfo) || make -j1 +run make -j1 install DESTDIR=$destdir + +run find $destdir -name "*hp2ps" -exec rm {} \; # remove target prefix from stage2 binaries # HACK, just build unlit with the cross compiler and move it to /usr/bin in the install dir @@ -143,12 +142,10 @@ run $crosscc unlit.c -o $(find $destdir -name unlit) # remove target prefix from stage2 binaries workdir $destdir/usr/bin -run (for i in $triple-* ; do ln -s $i ${i#$triple-} || /bin/true ; done ) -copy bootstrap/armhf/settings /tmp/settings -run mv /tmp/settings $(find $destdir -name settings -type f) -run rm -fr $destdir/usr/share/doc +run (for i in $triple-* ; do ln -s $i ${i#$triple-} || /bin/true; done ) && \ + rm -fr $destdir/usr/share/doc workdir $tardir # Compress to xz via pixz because xz is normally too # old for -TN multithreads -run tar -I'pixz -9' -cf /tmp/ghc-$ghc-$triple.tar.xz . +run tar -I'pixz -9' -cf /tmp/ghc-$ghc-$destarch.tar.xz . diff --git a/testing/ghc-bootstrap/bootstrap/x86_64/Dockerfile b/testing/ghc-bootstrap/Dockerfile.x86_64 index 9ca75c60ac..b18ef92b47 100644 --- a/testing/ghc-bootstrap/bootstrap/x86_64/Dockerfile +++ b/testing/ghc-bootstrap/Dockerfile.x86_64 @@ -2,10 +2,20 @@ from debian:8.0 # Install stock bindist for cross compile -env ghc 7.10.3 +env ghc 8.0.2 env arch x86_64 env llvm 3.7.1 -env cabal 1.22.9.0 +env cabal 1.24.0.2 + +env destarch x86_64 +env tardir /tmp/root +env destdir /tmp/root/$destarch +env triple ${arch}-pc-linux-musl +env target ${arch}-pc-linux-musl +env crosscc $triple-gcc + +# add cross toolchain to PATH +env PATH /usr/$triple/bin:$PATH # all needed packages for compiling run apt-get clean && \ @@ -30,8 +40,8 @@ run apt-get clean && \ python \ pixz \ openssl \ - git \ bison \ + git \ flex add http://llvm.org/releases/$llvm/llvm-$llvm.src.tar.xz /tmp/ @@ -42,7 +52,7 @@ add http://llvm.org/releases/$llvm/polly-$llvm.src.tar.xz /tmp/ # "what debian upstream has a current version of llvm" nonsense, takes more # time to do that than just build the right llvm from source. workdir /tmp -copy bootstrap/llvm-$llvm.sh /tmp/llvm.sh +copy llvm-$llvm.sh /tmp/llvm.sh run openssl sha1 llvm-$llvm.src.tar.xz | grep "SHA1(llvm-3.7.1.src.tar.xz)= 5dbdcafac105273dcbff94c68837a66c6dd78cef" && \ openssl sha1 polly-$llvm.src.tar.xz | grep "SHA1(polly-3.7.1.src.tar.xz)= 0e3a461907cde7505fbdb44bf61ff318aa9254f7" && \ tar xJpf /tmp/llvm-$llvm.src.tar.xz && \ @@ -54,20 +64,20 @@ add https://downloads.haskell.org/~ghc/$ghc/ghc-$ghc-$arch-deb8-linux.tar.xz /tm # Install debian ghc binary from upstream. workdir /tmp -run openssl sha1 ghc-$ghc-$arch-deb8-linux.tar.xz | grep "SHA1(ghc-7.10.3-x86_64-deb8-linux.tar.xz)= bab16f95ef4fe6b7cc2fb6b36a02dceeeb53faa4" && \ +run openssl sha1 ghc-$ghc-$arch-deb8-linux.tar.xz | grep "SHA1(ghc-$ghc-x86_64-deb8-linux.tar.xz)= f298b7d0f37cc9ded7ac66b2662b0fa5ac6d0809" && \ tar xJpf /tmp/ghc-$ghc-$arch-deb8-linux.tar.xz workdir /tmp/ghc-$ghc run ./configure --prefix=/usr && \ make -j1 install && \ rm -fr /tmp/ghc-$ghc -add https://www.haskell.org/cabal/release/cabal-install-$cabal/cabal-install-$cabal.tar.gz /tmp/ +run curl -kL https://www.haskell.org/cabal/release/cabal-install-$cabal/cabal-install-$cabal.tar.gz -o /tmp/cabal-install-$cabal.tar.gz # Install cabal so we can install alex/happy to pull off of git # bootstrap cabal and install alex/happy the same way apks are built # only globally workdir /tmp -run openssl sha1 cabal-install-$cabal.tar.gz | grep "SHA1(cabal-install-1.22.9.0.tar.gz)= f1375c928794f45f253b8ec92c2af4732fec597b" && \ +run openssl sha1 cabal-install-$cabal.tar.gz | grep "SHA1(cabal-install-$cabal.tar.gz)= ca019360c45be32e224b6582ab46b420fb070417" && \ tar xzpf /tmp/cabal-install-$cabal.tar.gz workdir /tmp/cabal-install-$cabal run ./bootstrap.sh --global --no-doc && \ @@ -75,55 +85,51 @@ run ./bootstrap.sh --global --no-doc && \ cabal install --global alex happy && \ rm -fr /tmp/cabal-install-$cabal -# Build our cross compiler with musl libc from the sabotage linux stuff workdir /tmp run git clone --depth 1 https://github.com/GregorR/musl-cross.git musl-cross workdir /tmp/musl-cross run echo GCC_BUILTIN_PREREQS=yes >> config.sh && \ - echo ARCH=x86_64 >> config.sh && \ - echo TRIPLE=x86_64-pc-linux-musl >> config.sh && \ + echo TRIPLE=${triple} >> config.sh && \ + echo ARCH=${destarch} >> config.sh && \ echo GCC_STAGE1_NOOPT=1 >> config.sh && \ echo CC_BASE_PREFIX=/usr >> config.sh && \ echo MAKEFLAGS=-j$(grep -c processor /proc/cpuinfo) >> config.sh && \ echo "BINUTILS_CONFFLAGS='CXXFLAGS=-fpermissive --enable-gold --enable-plugins --disable-werror'" >> config.sh && \ - echo "CFLAGS='-g -O2 -fPIC -DPIC'" >> config.sh && \ - echo "CPPFLAGS='-fPIC -DPIC'" >> config.sh && \ - echo "LDFLAGS='-fPIC -DPIC'" >> config.sh -copy bootstrap/gmpurl.patch gmpurl.patch + echo "CFLAGS='-g -O3 -fno-pie -fno-pic'" >> config.sh +copy gmpurl.patch gmpurl.patch run patch -p1 < gmpurl.patch && \ ./build.sh && \ rm -fr /tmp/musl-cross -add http://downloads.haskell.org/~ghc/8.0.1/ghc-8.0.1-src.tar.xz /tmp/ - -env tardir /tmp/root -env destdir /tmp/root/x86_64 -env triple x86_64-pc-linux-musl -env crosscc $triple-gcc -env ghc 8.0.1 +add http://downloads.haskell.org/~ghc/$ghc/ghc-$ghc-src.tar.xz /tmp/ workdir /tmp -run openssl sha1 ghc-$ghc-src.tar.xz | grep "SHA1(ghc-8.0.1-src.tar.xz)= 585a2d34a17ce2452273147f2e3cef1a2efe1aa5" && \ +run openssl sha1 ghc-$ghc-src.tar.xz | grep "SHA1(ghc-$ghc-src.tar.xz)= 0e0ae6d5ba119c10f3c7b807d35166e7c06b9b35" && \ tar xJpf /tmp/ghc-$ghc-src.tar.xz workdir /tmp/ghc-$ghc -env PATH $PATH:/usr/$triple/bin -copy bootstrap/$arch/bootstrap.patch bootstrap.patch -run patch -p1 < bootstrap.patch +copy bootstrap.patch bootstrap.patch +copy rm-ghc-pwd.patch rm-ghc-pwd.patch +run patch -p1 < bootstrap.patch && \ + patch -p1 < rm-ghc-pwd.patch run cp mk/build.mk.sample mk/build.mk && \ ./boot && \ - echo "BuildFlavour = quick-llvm" >> mk/build.mk && \ + echo "BuildFlavour = perf-llvm" >> mk/build.mk && \ + echo "BeConservative = YES" >> mk/build.mk && \ echo "INTEGER_LIBRARY = integer-simple" >> mk/build.mk && \ echo "HADDOCK_DOCS = NO" >> mk/build.mk && \ echo "BUILD_SPHINX_HTML = NO" >> mk/build.mk && \ echo "BUILD_SPHINX_PS = NO" >> mk/build.mk && \ echo "BUILD_SPHINX_PDF = NO" >> mk/build.mk && \ + echo "SplitSections = YES" >> mk/build.mk && \ + echo "V = 0" >> mk/build.mk && \ + echo "SPLIT_CMD = :" >> mk/build.mk && \ ./configure \ --target=$triple \ --prefix=/usr run make -j$(grep -c processor /proc/cpuinfo) || make -j1 run make -j1 install DESTDIR=$destdir -run rm $(find $destdir -name "*-hp2ps") +run find $destdir -name "*hp2ps" -exec rm {} \; # remove target prefix from stage2 binaries # HACK, just build unlit with the cross compiler and move it to /usr/bin in the install dir @@ -132,12 +138,10 @@ run $crosscc unlit.c -o $(find $destdir -name unlit) # remove target prefix from stage2 binaries workdir $destdir/usr/bin -run (for i in $triple-* ; do ln -s $i ${i#$triple-} ; done ) -copy bootstrap/$arch/settings /tmp/settings -run mv /tmp/settings $(find $destdir -name settings -type f) -run rm -fr $destdir/usr/share/doc +run (for i in $triple-* ; do ln -s $i ${i#$triple-} || /bin/true; done ) && \ + rm -fr $destdir/usr/share/doc workdir $tardir # Compress to xz via pixz because xz is normally too # old for -TN multithreads -run tar -I'pixz -9' -cf /tmp/ghc-$ghc-$triple.tar.xz . +run tar -I'pixz -9' -cf /tmp/ghc-$ghc-$destarch.tar.xz . diff --git a/testing/ghc-bootstrap/bootstrap/armhf/bootstrap.patch b/testing/ghc-bootstrap/bootstrap.patch index 7e5fc95432..7e5fc95432 100644 --- a/testing/ghc-bootstrap/bootstrap/armhf/bootstrap.patch +++ b/testing/ghc-bootstrap/bootstrap.patch diff --git a/testing/ghc-bootstrap/bootstrap/armhf/settings b/testing/ghc-bootstrap/bootstrap/armhf/settings deleted file mode 100644 index 549d03dd64..0000000000 --- a/testing/ghc-bootstrap/bootstrap/armhf/settings +++ /dev/null @@ -1,32 +0,0 @@ -[("GCC extra via C opts", " -fwrapv -fno-builtin"), - ("C compiler command", "gcc"), - ("C compiler flags", " -marm -fno-stack-protector"), - ("C compiler link flags", " --no-pie -fuse-ld=gold -Wl,-z,noexecstack"), - ("Haskell CPP command","gcc"), - ("Haskell CPP flags","-E -undef -traditional"), - ("ld command", "ld.gold"), - ("ld flags", " -z noexecstack"), - ("ld supports compact unwind", "YES"), - ("ld supports build-id", "YES"), - ("ld supports filelist", "NO"), - ("ld is GNU ld", "YES"), - ("ar command", "ar"), - ("ar flags", "q"), - ("ar supports at file", "YES"), - ("touch command", "touch"), - ("dllwrap command", "/bin/false"), - ("windres command", "/bin/false"), - ("libtool command", "libtool"), - ("perl command", "/usr/bin/perl"), - ("cross compiling", "YES"), - ("target os", "OSLinux"), - ("target arch", "ArchARM {armISA = ARMv6, armISAExt = [VFPv2], armABI = HARD}"), - ("target word size", "4"), - ("target has GNU nonexec stack", "False"), - ("target has .ident directive", "True"), - ("target has subsections via symbols", "False"), - ("Unregisterised", "NO"), - ("LLVM llc command", "llc-3.7"), - ("LLVM opt command", "opt-3.7") - ] - diff --git a/testing/ghc-bootstrap/bootstrap/gmpurl.patch b/testing/ghc-bootstrap/bootstrap/gmpurl.patch deleted file mode 100644 index c919fa3946..0000000000 --- a/testing/ghc-bootstrap/bootstrap/gmpurl.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -r d72695b410e3 defs.sh ---- a/defs.sh Sun Jul 26 15:38:58 2015 -0400 -+++ b/defs.sh Sun Jan 31 23:18:18 2016 +0000 -@@ -221,7 +221,7 @@ - gccprereqs() { - if [ ! -e gcc-$GCC_VERSION/gmp ] - then -- fetchextract http://gmplib.org/download/gmp/ gmp-$GMP_VERSION .tar.bz2 -+ fetchextract http://gmplib.org/download/gmp/archive/ gmp-$GMP_VERSION .tar.bz2 - mv gmp-$GMP_VERSION gcc-$GCC_VERSION/gmp - fi - ---- a/extra/build-gcc-deps.sh Sun Jul 26 15:38:58 2015 -0400 -+++ b/extra/build-gcc-deps.sh Sun Jan 31 23:18:18 2016 +0000 -@@ -28,7 +28,7 @@ - PREFIX="$CC_PREFIX/$TRIPLE" - - # GMP --fetchextract ftp://ftp.gmplib.org/pub/gmp-$GMP_VERSION/ gmp-$GMP_VERSION .tar.bz2 -+fetchextract ftp://ftp.gmplib.org/pub/archive/gmp-$GMP_VERSION/ gmp-$GMP_VERSION .tar.bz2 - cp -f "$MUSL_CC_BASE/extra/config.sub" gmp-$GMP_VERSION/configfsf.sub - buildinstall '' gmp-$GMP_VERSION --host="$TRIPLE" --enable-static --disable-shared diff --git a/testing/ghc-bootstrap/bootstrap/x86_64/bootstrap.patch b/testing/ghc-bootstrap/bootstrap/x86_64/bootstrap.patch deleted file mode 100644 index 7e5fc95432..0000000000 --- a/testing/ghc-bootstrap/bootstrap/x86_64/bootstrap.patch +++ /dev/null @@ -1,112 +0,0 @@ -diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs -index fa1141e..6ff2ac4 100644 ---- a/compiler/main/DynFlags.hs -+++ b/compiler/main/DynFlags.hs -@@ -2448,8 +2448,7 @@ dynamic_flags_deps = [ - , make_ord_flag defGhcFlag "dynload" (hasArg parseDynLibLoaderMode) - , make_ord_flag defGhcFlag "dylib-install-name" (hasArg setDylibInstallName) - -- -dll-split is an internal flag, used only during the GHC build -- , make_ord_flag defHiddenFlag "dll-split" -- (hasArg (\f d -> d { dllSplitFile = Just f, dllSplit = Nothing })) -+ , make_ord_flag defHiddenFlag "dll-split" (NoArg (addWarn "ignoring -dll-split")) - - ------- Libraries --------------------------------------------------- - , make_ord_flag defFlag "L" (Prefix addLibraryPath) -diff --git a/ghc.mk b/ghc.mk -index 5e4ecc6..a07ff73 100644 ---- a/ghc.mk -+++ b/ghc.mk -@@ -433,7 +433,7 @@ else # CLEANING - PACKAGES_STAGE0 = binary Cabal/Cabal hpc ghc-boot hoopl transformers template-haskell - ifeq "$(Windows_Host)" "NO" - ifneq "$(HostOS_CPP)" "ios" --PACKAGES_STAGE0 += terminfo -+PACKAGES_STAGE0 += - endif - endif - -@@ -471,7 +471,7 @@ endif - - ifeq "$(Windows_Target)" "NO" - ifneq "$(TargetOS_CPP)" "ios" --PACKAGES_STAGE1 += terminfo -+PACKAGES_STAGE1 += - endif - endif - PACKAGES_STAGE1 += haskeline -@@ -968,8 +968,8 @@ INSTALLED_PACKAGE_CONF=$(DESTDIR)$(topdir)/package.conf.d - # Install packages in the right order, so that ghc-pkg doesn't complain. - # Also, install ghc-pkg first. - ifeq "$(Windows_Host)" "NO" --INSTALLED_GHC_REAL=$(DESTDIR)$(ghclibexecdir)/bin/ghc --INSTALLED_GHC_PKG_REAL=$(DESTDIR)$(ghclibexecdir)/bin/ghc-pkg -+INSTALLED_GHC_REAL=$(CURDIR)/inplace/bin/ghc-stage1 -+INSTALLED_GHC_PKG_REAL=$(CURDIR)/utils/ghc-pkg/dist/build/tmp/ghc-pkg - else - INSTALLED_GHC_REAL=$(DESTDIR)$(bindir)/ghc.exe - INSTALLED_GHC_PKG_REAL=$(DESTDIR)$(bindir)/ghc-pkg.exe -diff --git a/rules/build-package-way.mk b/rules/build-package-way.mk -index 905b7f0..3e23b1f 100644 ---- a/rules/build-package-way.mk -+++ b/rules/build-package-way.mk -@@ -62,17 +62,6 @@ $1_$2_$3_ALL_OBJS = $$($1_$2_$3_HS_OBJS) $$($1_$2_$3_NON_HS_OBJS) - - ifeq "$3" "dyn" - --ifneq "$$($1_$2_dll0_MODULES)" "" --$$($1_$2_$3_LIB) : $1/$2/dll-split.stamp --ifneq "$$($1_$2_$3_LIB0)" "" --$$($1_$2_$3_LIB0) : $1/$2/dll-split.stamp --endif --endif -- --$1/$2/dll-split.stamp: $$($1_$2_depfile_haskell) $$$$(dll-split_INPLACE) -- $$(dll-split_INPLACE) $$< "$$($1_$2_dll0_START_MODULE)" "$$($1_$2_dll0_MODULES)" -- touch $$@ -- - # Link a dynamic library - # On windows we have to supply the extra libs this one links to when building it. - ifeq "$$(HostOS_CPP)" "mingw32" -diff --git a/rules/distdir-way-opts.mk b/rules/distdir-way-opts.mk -index f099d4e..6dcf911 100644 ---- a/rules/distdir-way-opts.mk -+++ b/rules/distdir-way-opts.mk -@@ -160,13 +160,6 @@ $1_$2_$3_ALL_HC_OPTS = \ - $$(if $$(findstring YES,$$($1_$2_SplitSections)),$$(if $$(findstring dyn,$3),,-split-sections),) \ - $$(if $$(findstring YES,$$($1_$2_DYNAMIC_TOO)),$$(if $$(findstring v,$3),-dynamic-too)) - --ifeq "$3" "dyn" --ifeq "$$(HostOS_CPP)" "mingw32" --ifneq "$$($1_$2_dll0_MODULES)" "" --$1_$2_$3_ALL_HC_OPTS += -dll-split $1/$2/dll-split --endif --endif --endif - - $1_$2_$3_ALL_CC_OPTS = \ - $$(WAY_$3_CC_OPTS) \ -diff --git a/utils/ghc-pkg/Main.hs b/utils/ghc-pkg/Main.hs -index af3032d..1c38e8e 100644 ---- a/utils/ghc-pkg/Main.hs -+++ b/utils/ghc-pkg/Main.hs -@@ -1,5 +1,6 @@ - {-# LANGUAGE CPP, TypeSynonymInstances, FlexibleInstances #-} - {-# OPTIONS_GHC -fno-warn-orphans #-} -+#define BOOTSTRAPPING - ----------------------------------------------------------------------------- - -- - -- (c) The University of Glasgow 2004-2009. -diff --git a/utils/ghc-pkg/ghc-pkg.cabal b/utils/ghc-pkg/ghc-pkg.cabal -index 5f76e1b..2f9b558 100644 ---- a/utils/ghc-pkg/ghc-pkg.cabal -+++ b/utils/ghc-pkg/ghc-pkg.cabal -@@ -31,7 +31,7 @@ Executable ghc-pkg - ghc-boot, - bytestring - if !os(windows) -- Build-Depends: unix, -- terminfo -+ Build-Depends: unix -+ - if os(windows) - c-sources: CRT_noglob.c diff --git a/testing/ghc-bootstrap/bootstrap/x86_64/settings b/testing/ghc-bootstrap/bootstrap/x86_64/settings deleted file mode 100644 index bd33b80f23..0000000000 --- a/testing/ghc-bootstrap/bootstrap/x86_64/settings +++ /dev/null @@ -1,32 +0,0 @@ -[("GCC extra via C opts", " -fwrapv -fno-builtin"), - ("C compiler command", "gcc"), - ("C compiler flags", " -fno-stack-protector"), - ("C compiler link flags", "--no-pie"), - ("Haskell CPP command","gcc"), - ("Haskell CPP flags","-E -undef -traditional "), - ("ld command", "ld.gold"), - ("ld flags", ""), - ("ld supports compact unwind", "YES"), - ("ld supports build-id", "YES"), - ("ld supports filelist", "NO"), - ("ld is GNU ld", "YES"), - ("ar command", "ar"), - ("ar flags", "q"), - ("ar supports at file", "YES"), - ("touch command", "touch"), - ("dllwrap command", "/bin/false"), - ("windres command", "/bin/false"), - ("libtool command", "libtool"), - ("readelf command", "readelf"), - ("perl command", "perl"), - ("cross compiling", "YES"), - ("target os", "OSLinux"), - ("target arch", "ArchX86_64"), - ("target word size", "8"), - ("target has GNU nonexec stack", "True"), - ("target has .ident directive", "True"), - ("target has subsections via symbols", "False"), - ("Unregisterised", "NO"), - ("LLVM llc command", "llc-3.7"), - ("LLVM opt command", "opt-3.7") - ] diff --git a/testing/ghc-bootstrap/gmpurl.patch b/testing/ghc-bootstrap/gmpurl.patch new file mode 100644 index 0000000000..3f8b4e5ccc --- /dev/null +++ b/testing/ghc-bootstrap/gmpurl.patch @@ -0,0 +1,12 @@ +diff -r d72695b410e3 defs.sh +--- a/defs.sh Sun Jul 26 15:38:58 2015 -0400 ++++ b/defs.sh Sun Jan 31 23:18:18 2016 +0000 +@@ -221,7 +221,7 @@ + gccprereqs() { + if [ ! -e gcc-$GCC_VERSION/gmp ] + then +- fetchextract http://gmplib.org/download/gmp/archive/ gmp-$GMP_VERSION .tar.bz2 ++ fetchextract http://gmplib.org/download/gmp/ gmp-$GMP_VERSION .tar.bz2 + mv gmp-$GMP_VERSION gcc-$GCC_VERSION/gmp + fi + diff --git a/testing/ghc-bootstrap/bootstrap/llvm-3.7.1.sh b/testing/ghc-bootstrap/llvm-3.7.1.sh index 49e44dfc20..49e44dfc20 100755 --- a/testing/ghc-bootstrap/bootstrap/llvm-3.7.1.sh +++ b/testing/ghc-bootstrap/llvm-3.7.1.sh diff --git a/testing/ghc-bootstrap/rm-ghc-pwd.patch b/testing/ghc-bootstrap/rm-ghc-pwd.patch new file mode 100644 index 0000000000..cf4417547b --- /dev/null +++ b/testing/ghc-bootstrap/rm-ghc-pwd.patch @@ -0,0 +1,184 @@ +commit 4c56ad36ee0d1f8b6f1b2bc0d8fff1c9acd1a389 +Author: Thomas Miedema <thomasmiedema@gmail.com> +Date: Mon Jan 4 18:29:49 2016 +0100 + + Build system: delete ghc-pwd + + On Windows, with msys2, `pwd` works (as can be seen by the use of `pwd` + that slipped into the validate script), so there is really no need for + `ghc-pwd` anymore. + + Test Plan: try it + + Reviewers: austin, bgamari, Phyx + + Reviewed By: Phyx + + Subscribers: Phyx, erikd + + Differential Revision: https://phabricator.haskell.org/D1731 + +diff --git a/aclocal.m4 b/aclocal.m4 +index 8e97726..0c93de4 100644 +--- a/aclocal.m4 ++++ b/aclocal.m4 +@@ -1737,33 +1737,9 @@ AC_DEFUN([FP_CURSES], + # Calculate absolute path to build tree + # -------------------------------------------------------------- + +-AC_DEFUN([FP_INTREE_GHC_PWD],[ +-AC_MSG_NOTICE(Building in-tree ghc-pwd) +- dnl This would be +- dnl make -C utils/ghc-pwd clean && make -C utils/ghc-pwd +- dnl except we don't want to have to know what make is called. Sigh. +- rm -rf utils/ghc-pwd/dist-boot +- mkdir utils/ghc-pwd/dist-boot +- dnl If special linker flags are needed to build things, then allow +- dnl the user to pass them in via LDFLAGS. +- changequote(, )dnl +- GHC_LDFLAGS=`perl -e 'foreach (@ARGV) { print "-optl$_ " }' -- $LDFLAGS` +- changequote([, ])dnl +- if ! "$WithGhc" $GHC_LDFLAGS -v0 -no-user-$GHC_PACKAGE_DB_FLAG -hidir utils/ghc-pwd/dist-boot -odir utils/ghc-pwd/dist-boot -stubdir utils/ghc-pwd/dist-boot --make utils/ghc-pwd/Main.hs -o utils/ghc-pwd/dist-boot/ghc-pwd +- then +- AC_MSG_ERROR([Building ghc-pwd failed]) +- fi +- +- GHC_PWD=utils/ghc-pwd/dist-boot/ghc-pwd +-]) +- +-AC_DEFUN([FP_BINDIST_GHC_PWD],[ +- GHC_PWD=utils/ghc-pwd/dist-install/build/tmp/ghc-pwd-bindist +-]) +- + AC_DEFUN([FP_FIND_ROOT],[ + AC_MSG_CHECKING(for path to top of build tree) +- hardtop=`$GHC_PWD` ++ hardtop=`pwd` + + dnl Remove common automounter nonsense + hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|'` +diff --git a/configure.ac b/configure.ac +index 042b417..ab82bb0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -26,6 +26,8 @@ AC_INIT([The Glorious Glasgow Haskell Compilation System], [8.1], [glasgow-haske + # checkout), then we ship a file 'VERSION' containing the full version + # when the source distribution was created. + ++FP_FIND_ROOT ++ + if test ! -f mk/config.h.in; then + echo "mk/config.h.in doesn't exist: perhaps you haven't run 'perl boot'?" + exit 1 +@@ -258,10 +260,6 @@ AC_ARG_WITH(hc, + ) + AC_SUBST(WithHc) + +-# This uses GHC, so put it after the "GHC is required" check above: +-FP_INTREE_GHC_PWD +-FP_FIND_ROOT +- + fail() { + echo >&2 + echo "$1" >&2 +diff --git a/distrib/configure.ac.in b/distrib/configure.ac.in +index 0f68a52..4d57cd8 100644 +--- a/distrib/configure.ac.in ++++ b/distrib/configure.ac.in +@@ -6,7 +6,6 @@ dnl + + AC_INIT([The Glorious Glasgow Haskell Compilation System], [@ProjectVersion@], [glasgow-haskell-bugs@haskell.org], [ghc]) + +-FP_BINDIST_GHC_PWD + FP_FIND_ROOT + + dnl-------------------------------------------------------------------- +diff --git a/ghc.mk b/ghc.mk +index ba708a1..3ccc496 100644 +--- a/ghc.mk ++++ b/ghc.mk +@@ -516,7 +516,6 @@ $(foreach pkg,$(PACKAGES_STAGE1),$(eval $(call fixed_pkg_dep,$(pkg),dist-install + # the stage1 packages, so we have to make sure those packages get configured + # and registered before we can start with these. Note that they don't depend on + # eachother, so we can configure them in parallel. +-utils/ghc-pwd/dist-install/package-data.mk: $(fixed_pkg_prev) + utils/ghc-cabal/dist-install/package-data.mk: $(fixed_pkg_prev) + utils/hpc/dist-install/package-data.mk: $(fixed_pkg_prev) + utils/ghc-pkg/dist-install/package-data.mk: $(fixed_pkg_prev) +@@ -660,7 +659,6 @@ BUILD_DIRS += utils/testremove + BUILD_DIRS += utils/ghctags + BUILD_DIRS += utils/check-api-annotations + BUILD_DIRS += utils/dll-split +-BUILD_DIRS += utils/ghc-pwd + BUILD_DIRS += utils/ghc-cabal + BUILD_DIRS += utils/hpc + BUILD_DIRS += utils/runghc +@@ -1020,7 +1018,6 @@ $(eval $(call bindist-list,.,\ + mk/config.mk.in \ + $(INPLACE_BIN)/mkdirhier \ + utils/ghc-cabal/dist-install/build/tmp/ghc-cabal \ +- utils/ghc-pwd/dist-install/build/tmp/ghc-pwd \ + $(BINDIST_WRAPPERS) \ + $(BINDIST_PERL_SOURCES) \ + $(BINDIST_LIBS) \ +@@ -1366,9 +1363,6 @@ distclean : clean + # Internal files generated by ./configure for itself. + $(call removeFiles,config.cache config.status config.log) + +-# ./configure build ghc-pwd in utils/ghc-pwd/dist-boot, so clean it up. +- $(call removeTrees,utils/ghc-pwd/dist-boot) +- + # The root Makefile makes .old versions of some files that configure + # generates, so we clean those too. + $(call removeFiles,mk/config.mk.old) +diff --git a/utils/ghc-pwd/Main.hs b/utils/ghc-pwd/Main.hs +deleted file mode 100644 +index 91a5606..0000000 +--- a/utils/ghc-pwd/Main.hs ++++ /dev/null +@@ -1,22 +0,0 @@ +- +-module Main where +- +-import System.Directory +-import System.Environment +-import System.Exit +-import System.IO +- +-main :: IO () +-main = do +- args <- getArgs +- case args of +- [] -> do d <- getCurrentDirectory +- putStr $ map forwardifySlashes d +- _ -> do hPutStrLn stderr ("Bad args: " ++ show args) +- hPutStrLn stderr "Usage: ghc-pwd" +- exitFailure +- +-forwardifySlashes :: Char -> Char +-forwardifySlashes '\\' = '/' +-forwardifySlashes c = c +- +diff --git a/utils/ghc-pwd/Setup.hs b/utils/ghc-pwd/Setup.hs +deleted file mode 100644 +index 9a994af..0000000 +--- a/utils/ghc-pwd/Setup.hs ++++ /dev/null +@@ -1,2 +0,0 @@ +-import Distribution.Simple +-main = defaultMain +diff --git a/utils/ghc-pwd/ghc.mk b/utils/ghc-pwd/ghc.mk +deleted file mode 100644 +index ac6bc76..0000000 +--- a/utils/ghc-pwd/ghc.mk ++++ /dev/null +@@ -1,9 +0,0 @@ +- +-utils/ghc-pwd_USES_CABAL = YES +-utils/ghc-pwd_PACKAGE = ghc-pwd +-utils/ghc-pwd_dist-install_INSTALL_INPLACE = YES +-utils/ghc-pwd_dist-install_WANT_BINDIST_WRAPPER = YES +-utils/ghc-pwd_dist-install_PROGNAME = ghc-pwd +- +-$(eval $(call build-prog,utils/ghc-pwd,dist-install,1)) +- |