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-10 08:54:36 +0000 |
| commit | 3fd25eea1eb2591fc1aaa3839e22cbf5ead0d0a5 (patch) | |
| tree | 120adced831a8c8c380bd3594a04613d15de5ad6 /testing/ghc-bootstrap/bootstrap | |
| parent | 42ff38f7e57011787fb3eb89d1106df03844c5c4 (diff) | |
| download | aports-3fd25eea1eb2591fc1aaa3839e22cbf5ead0d0a5.tar.bz2 aports-3fd25eea1eb2591fc1aaa3839e22cbf5ead0d0a5.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/bootstrap')
| -rw-r--r-- | testing/ghc-bootstrap/bootstrap/armhf/Dockerfile | 154 | ||||
| -rw-r--r-- | testing/ghc-bootstrap/bootstrap/armhf/bootstrap.patch | 112 | ||||
| -rw-r--r-- | testing/ghc-bootstrap/bootstrap/armhf/settings | 32 | ||||
| -rw-r--r-- | testing/ghc-bootstrap/bootstrap/gmpurl.patch | 22 | ||||
| -rwxr-xr-x | testing/ghc-bootstrap/bootstrap/llvm-3.7.1.sh | 88 | ||||
| -rw-r--r-- | testing/ghc-bootstrap/bootstrap/x86_64/Dockerfile | 143 | ||||
| -rw-r--r-- | testing/ghc-bootstrap/bootstrap/x86_64/bootstrap.patch | 112 | ||||
| -rw-r--r-- | testing/ghc-bootstrap/bootstrap/x86_64/settings | 32 |
8 files changed, 0 insertions, 695 deletions
diff --git a/testing/ghc-bootstrap/bootstrap/armhf/Dockerfile b/testing/ghc-bootstrap/bootstrap/armhf/Dockerfile deleted file mode 100644 index 2ef2572f89..0000000000 --- a/testing/ghc-bootstrap/bootstrap/armhf/Dockerfile +++ /dev/null @@ -1,154 +0,0 @@ -# Mostly self contained setup to build a stage2 ghc for musl -from debian:8.0 - -# Install stock bindist for cross compile -env ghc 7.10.3 -env arch x86_64 -env llvm 3.7.1 -env cabal 1.22.9.0 - -# all needed packages for compiling -run apt-get clean && \ - apt-get update && \ - apt-get install -y \ - binutils-gold \ - musl-tools \ - build-essential \ - wget \ - curl \ - libncurses-dev \ - autoconf \ - elfutils \ - libgmp-dev \ - zlib1g-dev \ - git \ - libtool \ - pkg-config \ - libffi-dev \ - cmake \ - g++ \ - python \ - pixz \ - openssl \ - bison \ - flex \ - git - -add http://llvm.org/releases/$llvm/llvm-$llvm.src.tar.xz /tmp/ -add http://llvm.org/releases/$llvm/polly-$llvm.src.tar.xz /tmp/ - -# Install a non ancient version of llvm on debian, I'm purposefully ignoring -# debian repos in favor of compiling to not have to deal with -# "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 -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 - -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" && \ - 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/ - -# 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" && \ - tar xzpf /tmp/cabal-install-$cabal.tar.gz -workdir /tmp/cabal-install-$cabal -run ./bootstrap.sh --global --no-doc && \ - cabal update && \ - 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 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 && \ - 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 -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 - -workdir /tmp -run openssl sha1 ghc-$ghc-src.tar.xz | grep "SHA1(ghc-8.0.1-src.tar.xz)= 585a2d34a17ce2452273147f2e3cef1a2efe1aa5" && \ - 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") - -# remove target prefix from stage2 binaries -# HACK, just build unlit with the cross compiler and move it to /usr/bin in the install dir -workdir /tmp/ghc-$ghc/utils/unlit -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 - -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 . diff --git a/testing/ghc-bootstrap/bootstrap/armhf/bootstrap.patch b/testing/ghc-bootstrap/bootstrap/armhf/bootstrap.patch deleted file mode 100644 index 7e5fc95432..0000000000 --- a/testing/ghc-bootstrap/bootstrap/armhf/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/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/llvm-3.7.1.sh b/testing/ghc-bootstrap/bootstrap/llvm-3.7.1.sh deleted file mode 100755 index 49e44dfc20..0000000000 --- a/testing/ghc-bootstrap/bootstrap/llvm-3.7.1.sh +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/env sh -#-*-mode: Shell-script; coding: utf-8;-*- -export script=$(basename "$0") -export dir=$(cd "$(dirname "$0")"; pwd) -export iam=${dir}/${script} -llvm_major=3.7 -llvm_version=${llvm_major}.1 -llvm_srcdir="/tmp/llvm-${llvm_version}.src" -suffix="-${llvm_major}" -llvm_builddir=/tmp/build -polly_orig_srcdir="/tmp/polly-$llvm_version.src" - -cd "$llvm_srcdir" - -_cmake_flags="\ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_VERBOSE_MAKEFILE=NO \ - -DLLVM_BINUTILS_INCDIR=/usr/include \ - -DLLVM_ENABLE_ASSERTIONS=NO \ - -DLLVM_ENABLE_LIBCXX=NO \ - -DLLVM_ENABLE_PIC=YES \ - -DLLVM_ENABLE_ZLIB=YES \ - -DLLVM_ENABLE_RTTI=YES \ - -DLLVM_BUILD_EXAMPLES=NO \ - -DLLVM_INCLUDE_EXAMPLES=NO \ - -DLIBXML2_INCLUDE_DIR=/usr/include/libxml2 \ - -DCMAKE_INSTALL_PREFIX=/usr \ - -DLLVM_TARGETS_TO_BUILD='all' \ - -DLLVM_BUILD_EXTERNAL_COMPILER_RT=NO \ - -DBUILD_SHARED_LIBS=NO \ - -DLLVM_BUILD_DOCS=NO \ - -DLLVM_BUILD_TESTS=NO \ - -DLLVM_ENABLE_CXX1Y=NO \ - -DLLVM_ENABLE_FFI=YES \ - -DLLVM_ENABLE_SPHINX=NO \ - -DLLVM_ENABLE_TERMINFO=NO \ - -DLLVM_ENABLE_CURSES=NO \ - -DWITH_POLLY=YES \ - -DLLVM_INCLUDE_EXAMPLES=NO \ - -DLLVM_INCLUDE_TESTS=NO \ - " -srcdir_polly="$llvm_srcdir"/tools/polly -mv /tmp/polly-$llvm_version.src "$srcdir_polly" || return 1 - -( - OCFLAGS="${CFLAGS}" - OCXXFLAGS="${CXXFLAGS}" - unset CFLAGS - unset CXXFLAGS - - test -z "${OCFLAGS}" && OCFLAGS="-O3" - test -z "${OCXXFLAGS}" && OCXXFLAGS="-O3" - - cflags="${OCFLAGS} -DNDEBUG -I$srcdir/tmp/include" - cxxflags="${OCXXFLAGS} -DNDEBUG -fno-devirtualize" - - export CC=gcc - export CXX=g++ - - ffi_include_dir="$(pkg-config --cflags-only-I libffi | sed 's|^-I||g')" - - cflags="${OCFLAGS} -DNDEBUG" - cxxflags="${OCXXFLAGS} -DNDEBUG" - - mkdir -p "${llvm_builddir}" - cd "${llvm_builddir}" - cmake -G "Unix Makefiles" -Wno-dev ${_cmake_final_flags} \ - -DCMAKE_C_COMPILER="${CC}" \ - -DCMAKE_CXX_COMPILER="${CXX}" \ - -DCMAKE_C_FLAGS_RELEASE="${cflags}" \ - -DCMAKE_CXX_FLAGS_RELEASE="${cxxflags}" \ - -DCMAKE_EXE_LINKER_FLAGS="${LDFLAGS} -L$srcdir/tmp/lib" \ - -DCMAKE_SHARED_LINKER_FLAGS="${LDFLAGS}" \ - -DFFI_INCLUDE_DIR="$ffi_include_dir" \ - -DCMAKE_PREFIX_PATH="$srcdir/tmp" \ - "${llvm_srcdir}" || return 1 - - ( - export LD_LIBRARY_PATH="$srcdir/tmp/lib:$LD_LIBRARY_PATH" - make -j$(grep -c processor /proc/cpuinfo) llvm-tblgen || return 1 - make -j$(grep -c processor /proc/cpuinfo) || return 1 - ) || return 1 - export CFLAGS="${OCFLAGS}" - export CXXFLAGS="${OCXXFLAGS}" - - # install portion - make -j1 install || return 1 -) || return 1 diff --git a/testing/ghc-bootstrap/bootstrap/x86_64/Dockerfile b/testing/ghc-bootstrap/bootstrap/x86_64/Dockerfile deleted file mode 100644 index 9ca75c60ac..0000000000 --- a/testing/ghc-bootstrap/bootstrap/x86_64/Dockerfile +++ /dev/null @@ -1,143 +0,0 @@ -# Mostly self contained setup to build a stage2 ghc for musl -from debian:8.0 - -# Install stock bindist for cross compile -env ghc 7.10.3 -env arch x86_64 -env llvm 3.7.1 -env cabal 1.22.9.0 - -# all needed packages for compiling -run apt-get clean && \ - apt-get update && \ - apt-get install -y \ - binutils-gold \ - musl-tools \ - build-essential \ - wget \ - curl \ - libncurses-dev \ - autoconf \ - elfutils \ - libgmp-dev \ - zlib1g-dev \ - git \ - libtool \ - pkg-config \ - libffi-dev \ - cmake \ - g++ \ - python \ - pixz \ - openssl \ - git \ - bison \ - 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/ - -# Install a non ancient version of llvm on debian, I'm purposefully ignoring -# debian repos in favor of compiling to not have to deal with -# "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 -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 /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" && \ - 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/ - -# 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" && \ - tar xzpf /tmp/cabal-install-$cabal.tar.gz -workdir /tmp/cabal-install-$cabal -run ./bootstrap.sh --global --no-doc && \ - cabal update && \ - 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 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 -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 - -workdir /tmp -run openssl sha1 ghc-$ghc-src.tar.xz | grep "SHA1(ghc-8.0.1-src.tar.xz)= 585a2d34a17ce2452273147f2e3cef1a2efe1aa5" && \ - 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=$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") - -# remove target prefix from stage2 binaries -# HACK, just build unlit with the cross compiler and move it to /usr/bin in the install dir -workdir /tmp/ghc-$ghc/utils/unlit -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 - -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 . 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") - ] |
