From af6c2c71ed7282791f0f09fd9e5aadb948e5bbbf Mon Sep 17 00:00:00 2001 From: Warren Togami Date: Sun, 22 Sep 2013 16:55:00 -1000 Subject: Upgrade gitian win32 to Precise 12.04. mingw upgrade allows more hardening, compiler bug fixes and possibily win64 later. Rename deps .zip files to be more consistent in revision format. Boost #4258 build fix for mingw32 --- contrib/gitian-descriptors/boost-win32.yml | 65 +++++++++++++++++++++++---- contrib/gitian-descriptors/deps-win32.yml | 13 +++--- contrib/gitian-descriptors/gitian-win32.yml | 29 ++++++------ contrib/gitian-descriptors/protobuf-win32.yml | 11 ++--- contrib/gitian-descriptors/qt-win32.yml | 30 +++++++------ 5 files changed, 103 insertions(+), 45 deletions(-) (limited to 'contrib') diff --git a/contrib/gitian-descriptors/boost-win32.yml b/contrib/gitian-descriptors/boost-win32.yml index 9eb4cf5968..981c5055b0 100644 --- a/contrib/gitian-descriptors/boost-win32.yml +++ b/contrib/gitian-descriptors/boost-win32.yml @@ -1,11 +1,12 @@ --- name: "boost" suites: -- "lucid" +- "precise" architectures: -- "i386" +- "amd64" packages: -- "mingw32" +- "mingw-w64" +- "g++-mingw-w64" - "faketime" - "zip" reference_datetime: "2011-01-30 00:00:00" @@ -13,21 +14,69 @@ remotes: [] files: - "boost_1_50_0.tar.bz2" script: | + # INSTALLPREFIX="$OUTDIR/staging/boost" + HOST=i686-w64-mingw32 + # + mkdir -p "$INSTALLPREFIX" tar xjf boost_1_50_0.tar.bz2 cd boost_1_50_0 - echo "using gcc : 4.4 : i586-mingw32msvc-g++ + + # Boost #4258: multiple definition of `_tls_used' https://svn.boost.org/trac/boost/ticket/4258 + cd libs/thread/ + patch -p1 << 'EOF' + From 8b83ad1f0ac4c56f019072de4a7a93f8fcccb96b Mon Sep 17 00:00:00 2001 + From: "Vicente J. Botet Escriba" + Date: Sat, 7 Jul 2012 14:37:07 +0000 + Subject: [PATCH] Thread: Added __MINGW64_VERSION_MAJOR when __MINGW64__ is not + defined + + --- + src/win32/tss_pe.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + + diff --git a/src/win32/tss_pe.cpp b/src/win32/tss_pe.cpp + index 4d75680..0cdb7a6 100644 + --- a/src/win32/tss_pe.cpp + +++ b/src/win32/tss_pe.cpp + @@ -11,7 +11,7 @@ + + #if defined(BOOST_HAS_WINTHREADS) && defined(BOOST_THREAD_BUILD_LIB) + + -#if (defined(__MINGW32__) && !defined(_WIN64)) || defined(__MINGW64__) + +#if (defined(__MINGW32__) && !defined(_WIN64)) || defined(__MINGW64__) || (__MINGW64_VERSION_MAJOR) + + #include + + @@ -38,7 +38,7 @@ + } + } + + -#if defined(__MINGW64__) || (__MINGW32_MAJOR_VERSION >3) || \ + +#if defined(__MINGW64__) || (__MINGW64_VERSION_MAJOR) || (__MINGW32_MAJOR_VERSION >3) || \ + ((__MINGW32_MAJOR_VERSION==3) && (__MINGW32_MINOR_VERSION>=18)) + extern "C" + { + -- + 1.8.4 + EOF + cd - + + GCCVERSION=$($HOST-g++ -E -dM $(mktemp --suffix=.h) | grep __VERSION__ | cut -d ' ' -f 3 | cut -d '"' -f 2) + echo "using gcc : $GCCVERSION : $HOST-g++ : - i586-mingw32msvc-windres - i586-mingw32msvc-ar + $HOST-windres + $HOST-ar -frandom-seed=boost1 + $HOST-ranlib ;" > user-config.jam ./bootstrap.sh --without-icu + ./bjam toolset=gcc target-os=windows threadapi=win32 threading=multi variant=release link=static --user-config=user-config.jam --without-mpi --without-python -sNO_BZIP2=1 -sNO_ZLIB=1 --layout=tagged --build-type=complete --prefix="$INSTALLPREFIX" $MAKEOPTS install cd "$INSTALLPREFIX" export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 export FAKETIME=$REFERENCE_DATETIME - zip -r boost-win32-1.50.0-gitian3.zip * - cp boost-win32-1.50.0-gitian3.zip $OUTDIR + zip -r boost-win32-1.50.0-gitian-r5.zip * + cp boost-win32-1.50.0-gitian-r5.zip $OUTDIR diff --git a/contrib/gitian-descriptors/deps-win32.yml b/contrib/gitian-descriptors/deps-win32.yml index b00269dcc3..5129462102 100644 --- a/contrib/gitian-descriptors/deps-win32.yml +++ b/contrib/gitian-descriptors/deps-win32.yml @@ -1,11 +1,12 @@ --- name: "bitcoin-deps" suites: -- "lucid" +- "precise" architectures: -- "i386" +- "amd64" packages: -- "mingw32" +- "mingw-w64" +- "g++-mingw-w64" - "git-core" - "zip" - "faketime" @@ -26,7 +27,7 @@ script: | export FAKETIME=$REFERENCE_DATETIME export TZ=UTC export INSTALLPREFIX=$OUTDIR/staging/deps - export HOST=i586-mingw32msvc + export HOST=i686-w64-mingw32 # mkdir -p $INSTALLPREFIX @@ -71,12 +72,12 @@ script: | # tar xjf qrencode-3.2.0.tar.bz2 cd qrencode-3.2.0 - png_CFLAGS="-I$INSTALLPREFIX/include" png_LIBS="-L$INSTALLPREFIX/lib -lpng" ./configure --prefix=$INSTALLPREFIX --host=i586-mingw32msvc + png_CFLAGS="-I$INSTALLPREFIX/include" png_LIBS="-L$INSTALLPREFIX/lib -lpng" ./configure --prefix=$INSTALLPREFIX --host=$HOST make make install cd .. # cd $INSTALLPREFIX - zip -r $OUTDIR/bitcoin-deps-0.0.7.zip include lib + zip -r $OUTDIR/bitcoin-deps-win32-gitian-r8.zip include lib # Kill wine processes as gitian won't figure out we are done otherwise killall wineserver services.exe explorer.exe winedevice.exe diff --git a/contrib/gitian-descriptors/gitian-win32.yml b/contrib/gitian-descriptors/gitian-win32.yml index f8c7d818ab..c27f46b6d8 100644 --- a/contrib/gitian-descriptors/gitian-win32.yml +++ b/contrib/gitian-descriptors/gitian-win32.yml @@ -1,11 +1,12 @@ --- name: "bitcoin" suites: -- "lucid" +- "precise" architectures: -- "i386" +- "amd64" packages: -- "mingw32" +- "mingw-w64" +- "g++-mingw-w64" - "git-core" - "unzip" - "nsis" @@ -21,31 +22,33 @@ remotes: - "url": "https://github.com/bitcoin/bitcoin.git" "dir": "bitcoin" files: -- "qt-win32-4.8.3-gitian-r3.zip" -- "boost-win32-1.50.0-gitian3.zip" -- "bitcoin-deps-0.0.7.zip" -- "protobuf-win32-2.5.0-gitian-r2.zip" +- "qt-win32-4.8.3-gitian-r4.zip" +- "boost-win32-1.50.0-gitian-r5.zip" +- "bitcoin-deps-win32-gitian-r8.zip" +- "protobuf-win32-2.5.0-gitian-r3.zip" script: | # STAGING=$HOME/staging + HOST=i686-w64-mingw32 + # mkdir -p $STAGING cd $STAGING - unzip ../build/qt-win32-4.8.3-gitian-r3.zip - unzip ../build/boost-win32-1.50.0-gitian3.zip - unzip ../build/bitcoin-deps-0.0.7.zip - unzip ../build/protobuf-win32-2.5.0-gitian-r2.zip + unzip ../build/qt-win32-4.8.3-gitian-r4.zip + unzip ../build/boost-win32-1.50.0-gitian-r5.zip + unzip ../build/bitcoin-deps-win32-gitian-r8.zip + unzip ../build/protobuf-win32-2.5.0-gitian-r3.zip cd $HOME/build/ # cd bitcoin export PATH=$STAGING/host/bin:$PATH export TAR_OPTIONS=--mtime=`echo $REFERENCE_DATETIME | awk '{ print $1 }'` ./autogen.sh - ./configure --bindir=$OUTDIR --prefix=$STAGING --host=i586-mingw32msvc --with-qt-plugindir=$STAGING/plugins --with-qt-incdir=$STAGING/include --with-qt-bindir=$STAGING/host/bin --with-boost=$STAGING --disable-maintainer-mode --with-protoc-bindir=$STAGING/host/bin --disable-dependency-tracking CPPFLAGS="-I$STAGING/include" LDFLAGS="-L$STAGING/lib" CXXFLAGS="-frandom-seed=bitcoin" + ./configure --bindir=$OUTDIR --prefix=$STAGING --host=$HOST --with-qt-plugindir=$STAGING/plugins --with-qt-incdir=$STAGING/include --with-qt-bindir=$STAGING/host/bin --with-boost=$STAGING --disable-maintainer-mode --with-protoc-bindir=$STAGING/host/bin --disable-dependency-tracking CPPFLAGS="-I$STAGING/include" LDFLAGS="-L$STAGING/lib" CXXFLAGS="-frandom-seed=bitcoin" make dist mkdir -p distsrc cd distsrc tar --strip-components=1 -xf ../bitcoin-*.tar.* - ./configure --bindir=$OUTDIR --prefix=$STAGING --host=i586-mingw32msvc --with-qt-plugindir=$STAGING/plugins --with-qt-incdir=$STAGING/include --with-qt-bindir=$STAGING/host/bin --with-boost=$STAGING --disable-maintainer-mode --with-protoc-bindir=$STAGING/host/bin --disable-dependency-tracking CPPFLAGS="-I$STAGING/include" LDFLAGS="-L$STAGING/lib" CXXFLAGS="-frandom-seed=bitcoin" + ./configure --bindir=$OUTDIR --prefix=$STAGING --host=i686-w64-mingw32 --with-qt-plugindir=$STAGING/plugins --with-qt-incdir=$STAGING/include --with-qt-bindir=$STAGING/host/bin --with-boost=$STAGING --disable-maintainer-mode --with-protoc-bindir=$STAGING/host/bin --disable-dependency-tracking CPPFLAGS="-I$STAGING/include" LDFLAGS="-L$STAGING/lib" CXXFLAGS="-frandom-seed=bitcoin" export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 export FAKETIME=$REFERENCE_DATETIME export TZ=UTC diff --git a/contrib/gitian-descriptors/protobuf-win32.yml b/contrib/gitian-descriptors/protobuf-win32.yml index 5385247732..35f261e1a2 100644 --- a/contrib/gitian-descriptors/protobuf-win32.yml +++ b/contrib/gitian-descriptors/protobuf-win32.yml @@ -1,11 +1,12 @@ --- name: "protobuf-win32" suites: -- "lucid" +- "precise" architectures: -- "i386" +- "amd64" packages: -- "mingw32" +- "mingw-w64" +- "g++-mingw-w64" - "zip" - "faketime" reference_datetime: "2013-04-15 00:00:00" @@ -16,7 +17,7 @@ script: | # export TZ=UTC export INSTALLPREFIX=$OUTDIR/staging/deps - export HOST=i586-mingw32msvc + export HOST=i686-w64-mingw32 # # mkdir -p $INSTALLPREFIX @@ -36,6 +37,6 @@ script: | cd $INSTALLPREFIX export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 export FAKETIME=$REFERENCE_DATETIME - zip -r $OUTDIR/protobuf-win32-2.5.0-gitian-r2.zip include lib host + zip -r $OUTDIR/protobuf-win32-2.5.0-gitian-r3.zip include lib host unset LD_PRELOAD unset FAKETIME diff --git a/contrib/gitian-descriptors/qt-win32.yml b/contrib/gitian-descriptors/qt-win32.yml index 34495c20a6..fb9134b3fe 100644 --- a/contrib/gitian-descriptors/qt-win32.yml +++ b/contrib/gitian-descriptors/qt-win32.yml @@ -1,11 +1,12 @@ --- name: "qt" suites: -- "lucid" +- "precise" architectures: -- "i386" +- "amd64" packages: -- "mingw32" +- "mingw-w64" +- "g++-mingw-w64" - "zip" - "unzip" - "faketime" @@ -14,34 +15,37 @@ reference_datetime: "2011-01-30 00:00:00" remotes: [] files: - "qt-everywhere-opensource-src-4.8.3.tar.gz" -- "bitcoin-deps-0.0.7.zip" +- "bitcoin-deps-win32-gitian-r8.zip" script: | + # + HOST=i686-w64-mingw32 INSTDIR="$HOME/qt/" + # mkdir $INSTDIR mkdir -p $INSTDIR/host/bin # # Need mingw-compiled openssl from bitcoin-deps: - unzip bitcoin-deps-0.0.7.zip + unzip bitcoin-deps-win32-gitian-r8.zip DEPSDIR=`pwd` # tar xzf qt-everywhere-opensource-src-4.8.3.tar.gz cd qt-everywhere-opensource-src-4.8.3 sed 's/$TODAY/2011-01-30/' -i configure - sed 's/i686-pc-mingw32-/i586-mingw32msvc-/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf - sed --posix 's|QMAKE_CFLAGS\t\t= -pipe|QMAKE_CFLAGS\t\t= -pipe -isystem /usr/i586-mingw32msvc/include/ -frandom-seed=qtbuild|' -i mkspecs/unsupported/win32-g++-cross/qmake.conf + sed 's/i686-pc-mingw32-/$HOST-/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf + sed --posix 's|QMAKE_CFLAGS\t\t= -pipe|QMAKE_CFLAGS\t\t= -pipe -isystem /usr/$HOST/include/ -frandom-seed=qtbuild|' -i mkspecs/unsupported/win32-g++-cross/qmake.conf sed 's/QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions -mthreads/QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf sed 's/QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads/QMAKE_LFLAGS_EXCEPTIONS_ON = -lmingwthrd/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf - sed --posix 's/QMAKE_MOC\t\t= i586-mingw32msvc-moc/QMAKE_MOC\t\t= moc/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf - sed --posix 's/QMAKE_RCC\t\t= i586-mingw32msvc-rcc/QMAKE_RCC\t\t= rcc/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf - sed --posix 's/QMAKE_UIC\t\t= i586-mingw32msvc-uic/QMAKE_UIC\t\t= uic/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf + sed --posix 's/QMAKE_MOC\t\t= $HOST-moc/QMAKE_MOC\t\t= moc/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf + sed --posix 's/QMAKE_RCC\t\t= $HOST-rcc/QMAKE_RCC\t\t= rcc/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf + sed --posix 's/QMAKE_UIC\t\t= $HOST-uic/QMAKE_UIC\t\t= uic/' -i mkspecs/unsupported/win32-g++-cross/qmake.conf # ar adds timestamps to every object file included in the static library # providing -D as ar argument is supposed to solve it, but doesn't work as qmake strips off the arguments and adds -M to pass a script... # which somehow cannot be combined with other flags. # use faketime only for ar, as it confuses make/qmake into hanging sometimes - sed --posix "s|QMAKE_LIB\t\t= i586-mingw32msvc-ar -ru|QMAKE_LIB\t\t= $HOME/ar -Dr|" -i mkspecs/unsupported/win32-g++-cross/qmake.conf + sed --posix "s|QMAKE_LIB\t\t= $HOST-ar -ru|QMAKE_LIB\t\t= $HOME/ar -Dr|" -i mkspecs/unsupported/win32-g++-cross/qmake.conf echo '#!/bin/bash' > $HOME/ar echo 'export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1' >> $HOME/ar - echo 'i586-mingw32msvc-ar "$@"' >> $HOME/ar + echo '$HOST-ar "$@"' >> $HOME/ar chmod +x $HOME/ar #export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 export FAKETIME=$REFERENCE_DATETIME @@ -56,4 +60,4 @@ script: | # as zip stores file timestamps, use faketime to intercept stat calls to set dates for all files to reference date export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 - zip -r $OUTDIR/qt-win32-4.8.3-gitian-r3.zip * + zip -r $OUTDIR/qt-win32-4.8.3-gitian-r4.zip * -- cgit v1.2.3