commit e32cc7890a13d1707e9f3109fd8e888ac8623537 Author: Georg Koppen gk@torproject.org Date: Thu Mar 16 14:39:40 2017 +0000
Bug 10369: Don't use old GCC toolchain anymore for utils
We start using clang as the cross-compiler as we already do in the tor and Firefox descriptor. This should give us better code and should make the build more robust. --- gitian/descriptors/mac/gitian-utils.yml | 145 ++++++++++++++++---------------- 1 file changed, 73 insertions(+), 72 deletions(-)
diff --git a/gitian/descriptors/mac/gitian-utils.yml b/gitian/descriptors/mac/gitian-utils.yml index 55d6c7f..0025e43 100644 --- a/gitian/descriptors/mac/gitian-utils.yml +++ b/gitian/descriptors/mac/gitian-utils.yml @@ -4,7 +4,6 @@ distro: "debian" suites: - "wheezy" architectures: -- "i386" - "amd64" packages: - "faketime" @@ -25,8 +24,8 @@ remotes: "dir": "cmake" files: - "apple-uni-sdk-10.6_20110407-0.flosoft1_i386.deb" -- "multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz" - "openssl.tar.gz" +- "cctools.tar.gz" - "versions" - "dzip.sh" - "libfaketime.patch" @@ -37,78 +36,80 @@ script: | export LC_ALL=C umask 0022
- if [ $GBUILD_BITS == "64" ]; - then - # Cmake first - cd cmake - ./bootstrap --prefix=$INSTDIR/cmake - make $MAKEOPTS - make install - export PATH=$PATH:$INSTDIR/cmake/bin - # Clang - cd ../llvm - mv ../clang tools/ - export LLVM_HOME=`pwd` - mkdir build - cd build - cmake .. -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=$INSTDIR/clang -DCMAKE_BUILD_TYPE:STRING=Release $LLVM_HOME - make $MAKEOPTS - make install - cd $INSTDIR - ~/build/dzip.sh clang-$CLANG_VER-linux64-wheezy-utils.zip clang - cp *utils.zip $OUTDIR/ - else - # Building libfaketime. - cd faketime - export GIT_COMMITTER_NAME="nobody" - export GIT_COMMITTER_EMAIL="nobody@localhost" - export GIT_COMMITTER_DATE="$REFERENCE_DATETIME" - git am ~/build/libfaketime.patch - make - DESTDIR="$INSTDIR/faketime" make install - export FAKETIME_SKIP_CMDS="make" - export FAKETIME=$REFERENCE_DATETIME - cd .. + # Cmake first + cd cmake + ./bootstrap --prefix=$INSTDIR/cmake + make $MAKEOPTS + make install + export PATH=$PATH:$INSTDIR/cmake/bin
- # dpkg requires sbin directories in the PATH - export PATH="/usr/sbin:/sbin:$PATH" - sudo dpkg -i *.deb - tar xaf multiarch-darwin*tar.xz - export PATH="$PATH:$HOME/build/apple-osx/bin/" - # For OpenSSL - ln -s ~/build/apple-osx/bin/apple-osx-gcc ~/build/apple-osx/bin/i686-apple-darwin11-cc + # Clang + cd ../llvm + mv ../clang tools/ + export LLVM_HOME=`pwd` + mkdir build + cd build + cmake .. -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=$INSTDIR/clang -DCMAKE_BUILD_TYPE:STRING=Release $LLVM_HOME + make $MAKEOPTS + make install
- # XXX Clean up these flags? - export CFLAGS="-m64 -I/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/include/ -I/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/ -I. -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/ -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/system/ -mmacosx-version-min=10.5" - export CXXFLAGS="-m64 -I/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/include/ -I/usr/lib/gcc/i686-apple-darwin10/4.2.1/include/ -I. -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/ -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/system/ -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/i686-apple-darwin10/4.2.1 -mmacosx-version-min=10.5" - export LDFLAGS="-L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/ -L/usr/lib/apple/SDKs/MacOSX10.6.sdk/usr/lib/system/ -mmacosx-version-min=10.5" + # Building libfaketime. + cd ../../faketime + export GIT_COMMITTER_NAME="nobody" + export GIT_COMMITTER_EMAIL="nobody@localhost" + export GIT_COMMITTER_DATE="$REFERENCE_DATETIME" + git am ~/build/libfaketime.patch + make + DESTDIR="$INSTDIR/faketime" make install + export FAKETIME_SKIP_CMDS="make" + export FAKETIME=$REFERENCE_DATETIME
- # Building Libevent - cd libevent - ./autogen.sh - find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME" - ./configure --disable-static --host=i686-apple-darwin11 --prefix=$INSTDIR/libevent - export LD_PRELOAD="$INSTDIR/faketime/usr/local/lib/faketime/libfaketime.so.1" - make $MAKEOPTS - make install - cd .. + cd .. + ar x apple-uni-sdk-10.6_20110407-0.flosoft1_i386.deb + tar xaf data.tar.gz + tar xaf cctools.tar.gz
- # Building OpenSSL - # We still need libfaketime here it seems, see #19856 for details. - tar xzf openssl.tar.gz - cd openssl-* - find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME" - # TODO: Add enable-ec_nistp_64_gcc_128 for 64bit OS X. - ./Configure --cross-compile-prefix=i686-apple-darwin11- $CFLAGS darwin64-x86_64-cc --prefix=$INSTDIR/openssl enable-ec_nistp_64_gcc_128 - # Using $MAKEOPTS breaks the build. Might be the issue mentioned on - # http://cblfs.cross-lfs.org/index.php/OpenSSL. - make - make install - cd .. + # Preparing clang for cross-compilation, setting the proper flags and + # variables + # ld needs libLTO.so from llvm + export LD_LIBRARY_PATH="$INSTDIR/clang/lib" + export PATH="$HOME/build/cctools/bin:$PATH" + CROSS_CCTOOLS_PATH="$HOME/build/cctools" + CROSS_SYSROOT="$HOME/build/usr/lib/apple/SDKs/MacOSX10.6.sdk" + FLAGS="-target x86_64-apple-darwin10 -mlinker-version=136 -B $CROSS_CCTOOLS_PATH/bin -isysroot $CROSS_SYSROOT" + export CC="$INSTDIR/clang/bin/clang $FLAGS" + export LDFLAGS="-Wl,-syslibroot,$CROSS_SYSROOT -Wl,-dead_strip"
- # Grabbing the results - cd $INSTDIR - ~/build/dzip.sh openssl-$OPENSSL_VER-mac64-utils.zip openssl - ~/build/dzip.sh libevent-${LIBEVENT_TAG#release-}-mac64-utils.zip libevent - cp *utils.zip $OUTDIR/ - fi + # Building Libevent + cd libevent + ./autogen.sh + find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME" + ./configure --disable-static --host=x86_64-apple-darwin10 --prefix=$INSTDIR/libevent + export LD_PRELOAD="$INSTDIR/faketime/usr/local/lib/faketime/libfaketime.so.1" + make $MAKEOPTS + make install + cd .. + + # Building OpenSSL + # XXX: We still need libfaketime here it seems, see #19856 for details. + # XXX: Check whether that's true after switching to clang as cross-compiler. + # Tricking OpenSSL into using our clang as cross-compiler + export CC="cc $FLAGS" + ln -s $INSTDIR/clang/bin/clang x86_64-apple-darwin10-cc + export PATH=$PATH:$HOME/build + tar xzf openssl.tar.gz + cd openssl-* + find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME" + ./Configure --cross-compile-prefix=x86_64-apple-darwin10- darwin64-x86_64-cc --prefix=$INSTDIR/openssl enable-ec_nistp_64_gcc_128 + # Using $MAKEOPTS breaks the build. Might be the issue mentioned on + # http://cblfs.cross-lfs.org/index.php/OpenSSL. + make + make install + cd .. + + # Grabbing the results + cd $INSTDIR + ~/build/dzip.sh clang-$CLANG_VER-linux64-wheezy-utils.zip clang + ~/build/dzip.sh openssl-$OPENSSL_VER-mac64-utils.zip openssl + ~/build/dzip.sh libevent-${LIBEVENT_TAG#release-}-mac64-utils.zip libevent + cp *utils.zip $OUTDIR/
tor-commits@lists.torproject.org