aboutsummaryrefslogtreecommitdiff
path: root/contrib/gitian-descriptors
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/gitian-descriptors')
-rw-r--r--contrib/gitian-descriptors/README.md (renamed from contrib/gitian-descriptors/README)48
-rw-r--r--contrib/gitian-descriptors/boost-win32.yml72
-rw-r--r--contrib/gitian-descriptors/deps-win32.yml65
-rw-r--r--contrib/gitian-descriptors/gitian-win32.yml91
-rw-r--r--contrib/gitian-descriptors/gitian.yml51
-rw-r--r--contrib/gitian-descriptors/protobuf-win32.yml42
-rw-r--r--contrib/gitian-descriptors/qt-win32.yml41
7 files changed, 258 insertions, 152 deletions
diff --git a/contrib/gitian-descriptors/README b/contrib/gitian-descriptors/README.md
index 46c7668ab9..40bdbd8e32 100644
--- a/contrib/gitian-descriptors/README
+++ b/contrib/gitian-descriptors/README.md
@@ -1,7 +1,7 @@
-Gavin's notes on getting gitian builds up and running using KVM:
+### Gavin's notes on getting gitian builds up and running using KVM:###
These instructions distilled from:
- https://help.ubuntu.com/community/KVM/Installation
+[ https://help.ubuntu.com/community/KVM/Installation]( https://help.ubuntu.com/community/KVM/Installation)
... see there for complete details.
You need the right hardware: you need a 64-bit-capable CPU with hardware virtualization support (Intel VT-x or AMD-V). Not all modern CPUs support hardware virtualization.
@@ -9,11 +9,13 @@ You need the right hardware: you need a 64-bit-capable CPU with hardware virtual
You probably need to enable hardware virtualization in your machine's BIOS.
You need to be running a recent version of 64-bit-Ubuntu, and you need to install several prerequisites:
- sudo apt-get install ruby apache2 git apt-cacher-ng python-vm-builder qemu-kvm
+
+ sudo apt-get install ruby apache2 git apt-cacher-ng python-vm-builder qemu-kvm
Sanity checks:
- sudo service apt-cacher-ng status # Should return apt-cacher-ng is running
- ls -l /dev/kvm # Should show a /dev/kvm device
+
+ sudo service apt-cacher-ng status # Should return apt-cacher-ng is running
+ ls -l /dev/kvm # Should show a /dev/kvm device
Once you've got the right hardware and software:
@@ -22,16 +24,19 @@ Once you've got the right hardware and software:
git clone git://github.com/devrandom/gitian-builder.git
mkdir gitian-builder/inputs
cd gitian-builder/inputs
+
# Inputs for Linux and Win32:
wget -O miniupnpc-1.6.tar.gz 'http://miniupnp.tuxfamily.org/files/download.php?file=miniupnpc-1.6.tar.gz'
wget 'http://fukuchi.org/works/qrencode/qrencode-3.2.0.tar.bz2'
- # Inputs for Win32: (Linux has packages for these)
+
+ # Inputs for Win32: (Linux has packages for these)
wget 'https://downloads.sourceforge.net/project/boost/boost/1.50.0/boost_1_50_0.tar.bz2'
wget 'http://www.openssl.org/source/openssl-1.0.1c.tar.gz'
wget 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz'
wget 'https://downloads.sourceforge.net/project/libpng/zlib/1.2.6/zlib-1.2.6.tar.gz'
wget 'https://downloads.sourceforge.net/project/libpng/libpng15/older-releases/1.5.9/libpng-1.5.9.tar.gz'
- wget 'http://releases.qt-project.org/qt4/source/qt-everywhere-opensource-src-4.8.3.tar.gz'
+ wget 'https://download.qt-project.org/archive/qt/4.8/4.8.3/qt-everywhere-opensource-src-4.8.3.tar.gz'
+ wget 'http://protobuf.googlecode.com/files/protobuf-2.5.0.tar.bz2'
cd ../..
cd gitian-builder
@@ -50,37 +55,36 @@ Once you've got the right hardware and software:
./bin/gbuild --commit bitcoin=HEAD ../bitcoin/contrib/gitian-descriptors/boost-win32.yml
./bin/gbuild --commit bitcoin=HEAD ../bitcoin/contrib/gitian-descriptors/deps-win32.yml
./bin/gbuild --commit bitcoin=HEAD ../bitcoin/contrib/gitian-descriptors/qt-win32.yml
+ ./bin/gbuild --commit bitcoin=HEAD ../bitcoin/contrib/gitian-descriptors/protobuf-win32.yml
# Build Win32 release:
./bin/gbuild --commit bitcoin=HEAD ../bitcoin/contrib/gitian-descriptors/gitian-win32.yml
---------------------
-gitian-builder now also supports building using LXC. See
- https://help.ubuntu.com/12.04/serverguide/lxc.html
+`gitian-builder` now also supports building using LXC. See
+[ https://help.ubuntu.com/12.04/serverguide/lxc.html]( https://help.ubuntu.com/12.04/serverguide/lxc.html)
... for how to get LXC up and running under Ubuntu.
If your main machine is a 64-bit Mac or PC with a few gigabytes of memory
-and at least 10 gigabytes of free disk space, you can gitian-build using
+and at least 10 gigabytes of free disk space, you can `gitian-build` using
LXC running inside a virtual machine.
Here's a description of Gavin's setup on OSX 10.6:
-1. Download and install VirtualBox from https://www.virtualbox.org/
+1. Download and install VirtualBox from [https://www.virtualbox.org/](https://www.virtualbox.org/)
2. Download the 64-bit Ubuntu Desktop 12.04 LTS .iso CD image from
- http://www.ubuntu.com/
+ [http://www.ubuntu.com/](http://www.ubuntu.com/)
-3. Run VirtualBox and create a new virtual machine, using the
- Ubuntu .iso (see the VirtualBox documentation for details).
- Create it with at least 2 gigabytes of memory and a disk
- that is at least 20 gigabytes big.
+3. Run VirtualBox and create a new virtual machine, using the Ubuntu .iso (see the [VirtualBox documentation](https://www.virtualbox.org/wiki/Documentation) for details). Create it with at least 2 gigabytes of memory and a disk that is at least 20 gigabytes big.
4. Inside the running Ubuntu desktop, install:
- sudo apt-get install debootstrap lxc ruby apache2 git apt-cacher-ng python-vm-builder
-5. Still inside Ubuntu, tell gitian-builder to use LXC, then follow the "Once you've got the right
- hardware and software" instructions above:
- export USE_LXC=1
- git clone git://github.com/bitcoin/bitcoin.git
- ... etc
+ sudo apt-get install debootstrap lxc ruby apache2 git apt-cacher-ng python-vm-builder
+
+5. Still inside Ubuntu, tell gitian-builder to use LXC, then follow the "Once you've got the right hardware and software" instructions above:
+
+ export USE_LXC=1
+ git clone git://github.com/bitcoin/bitcoin.git
+ ... etc \ No newline at end of file
diff --git a/contrib/gitian-descriptors/boost-win32.yml b/contrib/gitian-descriptors/boost-win32.yml
index 1eeb9eaa28..b421cbe8c5 100644
--- a/contrib/gitian-descriptors/boost-win32.yml
+++ b/contrib/gitian-descriptors/boost-win32.yml
@@ -1,38 +1,66 @@
---
name: "boost"
suites:
-- "lucid"
+- "precise"
architectures:
-- "i386"
-packages:
-- "mingw32"
+- "amd64"
+packages:
+- "mingw-w64"
+- "g++-mingw-w64"
- "faketime"
- "zip"
reference_datetime: "2011-01-30 00:00:00"
remotes: []
files:
-- "boost_1_50_0.tar.bz2"
+- "boost_1_54_0.tar.bz2"
+- "boost-mingw-gas-cross-compile-2013-03-03.patch"
script: |
- TMPDIR="$HOME/tmpdir"
- mkdir -p $TMPDIR/bin/$GBUILD_BITS $TMPDIR/include
- tar xjf boost_1_50_0.tar.bz2
- cd boost_1_50_0
- echo "using gcc : 4.4 : i586-mingw32msvc-g++
+ # Defines
+ INSTALLPREFIX="$OUTDIR/staging/boost"
+ HOST=i686-w64-mingw32
+ # Input Integrity Check
+ echo "047e927de336af106a24bceba30069980c191529fd76b8dff8eb9a328b48ae1d boost_1_54_0.tar.bz2" | shasum -c
+ echo "d2b7f6a1d7051faef3c9cf41a92fa3671d905ef1e1da920d07651a43299f6268 boost-mingw-gas-cross-compile-2013-03-03.patch" | shasum -c
+
+ mkdir -p "$INSTALLPREFIX"
+ tar xjf boost_1_54_0.tar.bz2
+ cd boost_1_54_0
+ GCCVERSION=$($HOST-g++ -E -dM $(mktemp --suffix=.h) | grep __VERSION__ | cut -d ' ' -f 3 | cut -d '"' -f 2)
+ echo "using gcc : $GCCVERSION : $HOST-g++
:
- <rc>i586-mingw32msvc-windres
- <archiver>i586-mingw32msvc-ar
+ <rc>$HOST-windres
+ <archiver>$HOST-ar
<cxxflags>-frandom-seed=boost1
+ <ranlib>$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 $MAKEOPTS stage
- for lib in chrono date_time exception filesystem graph iostreams math_c99f math_c99l math_c99 math_tr1f math_tr1l math_tr1 prg_exec_monitor program_options random regex serialization signals system test_exec_monitor thread_win32 unit_test_framework wave wserialization; do
- mkdir $lib
- (cd $lib ; ar xf ../stage/lib/libboost_${lib}-mt-s.a)
- mv $lib $TMPDIR/bin/$GBUILD_BITS
- done
- cp -a boost $TMPDIR/include
- cd $TMPDIR
+
+ # Workaround: Upstream boost dev refuses to include patch that would allow Free Software cross-compile toolchain to work
+ # This patch was authored by the Fedora package developer and ships in Fedora's mingw32-boost.
+ # Please obtain the exact patch that matches the above sha256sum from one of the following mirrors.
+ #
+ # Read History: https://svn.boost.org/trac/boost/ticket/7262
+ # History Mirror: http://rose.makesad.us/~paulproteus/mirrors/7262%20Boost.Context%20fails%20to%20build%20using%20MinGW.html
+ #
+ # Patch: https://svn.boost.org/trac/boost/raw-attachment/ticket/7262/boost-mingw.patch
+ # Patch Mirror: http://wtogami.fedorapeople.org/boost-mingw-gas-cross-compile-2013-03-03.patch
+ # Patch Mirror: http://mindstalk.net/host/boost-mingw-gas-cross-compile-2013-03-03.patch
+ # Patch Mirror: http://rose.makesad.us/~paulproteus/mirrors/boost-mingw-gas-cross-compile-2013-03-03.patch
+ patch -p0 < ../boost-mingw-gas-cross-compile-2013-03-03.patch
+
+ # Bug Workaround: boost-1.54.0 broke the ability to disable zlib
+ # https://svn.boost.org/trac/boost/ticket/9156
+ sed -i 's^\[ ac.check-library /zlib//zlib : <library>/zlib//zlib^^' libs/iostreams/build/Jamfile.v2
+ sed -i 's^<source>zlib.cpp <source>gzip.cpp \]^^' libs/iostreams/build/Jamfile.v2
+
+ # http://statmt.org/~s0565741/software/boost_1_52_0/libs/context/doc/html/context/requirements.html
+ # Note: Might need these options in the future for 64bit builds.
+ # "Please note that address-model=64 must be given to bjam command line on 64bit Windows for 64bit build; otherwise 32bit code will be generated."
+ # "For cross-compiling the lib you must specify certain additional properties at bjam command line: target-os, abi, binary-format, architecture and address-model."
+ ./bjam toolset=gcc binary-format=pe 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-gitian2.zip *
- cp boost-win32-1.50.0-gitian2.zip $OUTDIR
+ zip -r boost-win32-1.54.0-gitian-r6.zip *
+ cp boost-win32-1.54.0-gitian-r6.zip $OUTDIR
diff --git a/contrib/gitian-descriptors/deps-win32.yml b/contrib/gitian-descriptors/deps-win32.yml
index 90f4c6c4be..7ad00fcb01 100644
--- a/contrib/gitian-descriptors/deps-win32.yml
+++ b/contrib/gitian-descriptors/deps-win32.yml
@@ -1,15 +1,15 @@
---
name: "bitcoin-deps"
suites:
-- "lucid"
+- "precise"
architectures:
-- "i386"
+- "amd64"
packages:
-- "mingw32"
+- "mingw-w64"
+- "g++-mingw-w64"
- "git-core"
- "zip"
- "faketime"
-- "wine"
- "psmisc"
reference_datetime: "2011-01-30 00:00:00"
remotes: []
@@ -25,48 +25,69 @@ script: |
export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1
export FAKETIME=$REFERENCE_DATETIME
export TZ=UTC
+ export INSTALLPREFIX=$OUTDIR/staging/deps
+ export HOST=i686-w64-mingw32
#
+ mkdir -p $INSTALLPREFIX
+
tar xzf openssl-1.0.1c.tar.gz
cd openssl-1.0.1c
- ./Configure --cross-compile-prefix=i586-mingw32msvc- mingw
+ ./Configure --cross-compile-prefix=$HOST- mingw --openssldir=$INSTALLPREFIX
make
+ make install_sw
cd ..
#
tar xzf db-4.8.30.NC.tar.gz
cd db-4.8.30.NC/build_unix
- ../dist/configure --enable-mingw --enable-cxx --host=i586-mingw32msvc CFLAGS="-I/usr/i586-mingw32msvc/include"
- make $MAKEOPTS
+ ../dist/configure --prefix=$INSTALLPREFIX --enable-mingw --enable-cxx --host=$HOST --disable-shared
+ make $MAKEOPTS library_build
+ make install_lib install_include
cd ../..
#
tar xzf miniupnpc-1.6.tar.gz
cd miniupnpc-1.6
- sed 's/dllwrap -k --driver-name gcc/$(DLLWRAP) -k --driver-name $(CC)/' -i Makefile.mingw
- sed 's|wingenminiupnpcstrings $< $@|./wingenminiupnpcstrings $< $@|' -i Makefile.mingw
- make -f Makefile.mingw DLLWRAP=i586-mingw32msvc-dllwrap CC=i586-mingw32msvc-gcc AR=i586-mingw32msvc-ar
+ echo "
+ --- miniupnpc-1.6/Makefile.mingw.orig 2013-09-29 18:52:51.014087958 -1000
+ +++ miniupnpc-1.6/Makefile.mingw 2013-09-29 19:09:29.663318691 -1000
+ @@ -67,8 +67,8 @@
+
+ wingenminiupnpcstrings.o: wingenminiupnpcstrings.c
+
+ -miniupnpcstrings.h: miniupnpcstrings.h.in wingenminiupnpcstrings
+ - wingenminiupnpcstrings \$< \$@
+ +miniupnpcstrings.h: miniupnpcstrings.h.in
+ + sed -e 's|OS/version|MSWindows/5.1.2600|' -e 's|MINIUPNPC_VERSION_STRING \"version\"|MINIUPNPC_VERSION_STRING \"VERSIONHERE\"|' \$< > \$@
+
+ minixml.o: minixml.c minixml.h miniupnpcstrings.h
+
+ " | sed "s/VERSIONHERE/$(cat VERSION)/" | patch -p1
+ mkdir -p dll
+ make -f Makefile.mingw CC=$HOST-gcc AR=$HOST-ar libminiupnpc.a
+ install -d $INSTALLPREFIX/include/miniupnpc
+ install *.h $INSTALLPREFIX/include/miniupnpc
+ install libminiupnpc.a $INSTALLPREFIX/lib
cd ..
- mv miniupnpc-1.6 miniupnpc
#
tar xzf zlib-1.2.6.tar.gz
cd zlib-1.2.6
- make -f win32/Makefile.gcc PREFIX=i586-mingw32msvc- $MAKEOPTS
+ CROSS_PREFIX=$HOST- ./configure --prefix=$INSTALLPREFIX --static
+ make
+ make install
cd ..
#
tar xzf libpng-1.5.9.tar.gz
cd libpng-1.5.9
- ./configure -disable-shared CC=i586-mingw32msvc-cc AR=i586-mingw32msvc-ar STRIP=i586-mingw32msvc-strip RANLIB=i586-mingw32msvc-ranlib OBJDUMP=i586-mingw32msvc-objdump LD=i586-mingw32msvc-ld LDFLAGS="-L../zlib-1.2.6/" CFLAGS="-I../zlib-1.2.6/"
+ CFLAGS="-I$INSTALLPREFIX/include" LDFLAGS="-L$INSTALLPREFIX/lib" ./configure --disable-shared --prefix=$INSTALLPREFIX --host=$HOST
make $MAKEOPTS
+ make install
cd ..
#
tar xjf qrencode-3.2.0.tar.bz2
cd qrencode-3.2.0
- ./configure CC=i586-mingw32msvc-cc AR=i586-mingw32msvc-ar STRIP=i586-mingw32msvc-strip RANLIB=i586-mingw32msvc-ranlib OBJDUMP=i586-mingw32msvc-objdump LD=i586-mingw32msvc-ld png_LIBS="../libpng-1.5.9/.libs/libpng15.a ../zlib-1.2.6/libz.a" png_CFLAGS="-I../libpng-1.5.9"
- make $MAKEOPTS
+ png_CFLAGS="-I$INSTALLPREFIX/include" png_LIBS="-L$INSTALLPREFIX/lib -lpng" ./configure --prefix=$INSTALLPREFIX --host=$HOST
+ make
+ make install
cd ..
#
- zip -r $OUTDIR/bitcoin-deps-0.0.5.zip \
- $(ls qrencode-*/{qrencode.h,.libs/libqrencode.{,l}a} | sort) \
- $(ls db-*/build_unix/{libdb_cxx.a,db.h,db_cxx.h,libdb.a,.libs/libdb_cxx-?.?.a} | sort) \
- $(find openssl-* -name '*.a' -o -name '*.h' | sort) \
- $(find miniupnpc -name '*.h' -o -name 'libminiupnpc.a' | sort)
- # Kill wine processes as gitian won't figure out we are done otherwise
- killall wineserver services.exe explorer.exe winedevice.exe
+ cd $INSTALLPREFIX
+ zip -r $OUTDIR/bitcoin-deps-win32-gitian-r9.zip include lib
diff --git a/contrib/gitian-descriptors/gitian-win32.yml b/contrib/gitian-descriptors/gitian-win32.yml
index fd3b55325a..a8a823cac0 100644
--- a/contrib/gitian-descriptors/gitian-win32.yml
+++ b/contrib/gitian-descriptors/gitian-win32.yml
@@ -1,74 +1,61 @@
---
name: "bitcoin"
suites:
-- "lucid"
+- "precise"
architectures:
-- "i386"
+- "amd64"
packages:
-- "mingw32"
+- "mingw-w64"
+- "g++-mingw-w64"
- "git-core"
- "unzip"
- "nsis"
- "faketime"
-reference_datetime: "2011-01-30 00:00:00"
+- "autoconf2.13"
+- "libtool"
+- "automake"
+- "pkg-config"
+- "bsdmainutils"
+
+reference_datetime: "2013-06-01 00:00:00"
remotes:
- "url": "https://github.com/bitcoin/bitcoin.git"
"dir": "bitcoin"
files:
-- "qt-win32-4.8.3-gitian-r1.zip"
-- "boost-win32-1.50.0-gitian2.zip"
-- "bitcoin-deps-0.0.5.zip"
+- "qt-win32-4.8.3-gitian-r4.zip"
+- "boost-win32-1.54.0-gitian-r6.zip"
+- "bitcoin-deps-win32-gitian-r9.zip"
+- "protobuf-win32-2.5.0-gitian-r3.zip"
script: |
#
- mkdir $HOME/qt
- cd $HOME/qt
- unzip ../build/qt-win32-4.8.3-gitian-r1.zip
- cd $HOME/build/
- export PATH=$HOME/qt/bin/:$PATH
- #
- mkdir boost_1_50_0
- cd boost_1_50_0
- mkdir -p stage/lib
- unzip ../boost-win32-1.50.0-gitian2.zip
- cd bin/$GBUILD_BITS
- for lib in *; do
- i586-mingw32msvc-ar rc ../../stage/lib/libboost_${lib}-mt-s.a $lib/*.o
- i586-mingw32msvc-ranlib ../../stage/lib/libboost_${lib}-mt-s.a
- done
- cd ../..
- mv include/boost .
- cd ..
- #
- unzip bitcoin-deps-0.0.5.zip
+ STAGING=$HOME/staging
+ HOST=i686-w64-mingw32
#
- find -type f | xargs touch --date="$REFERENCE_DATETIME"
+ mkdir -p $STAGING
+ cd $STAGING
+ unzip ../build/qt-win32-4.8.3-gitian-r4.zip
+ unzip ../build/boost-win32-1.54.0-gitian-r6.zip
+ unzip ../build/bitcoin-deps-win32-gitian-r9.zip
+ unzip ../build/protobuf-win32-2.5.0-gitian-r3.zip
+ cd $HOME/build/
#
cd bitcoin
- mkdir -p $OUTDIR/src
- git archive HEAD | tar -x -C $OUTDIR/src
- cp $OUTDIR/src/doc/README_windows.txt $OUTDIR/readme.txt
- cp $OUTDIR/src/COPYING $OUTDIR/COPYING.txt
+ export PATH=$STAGING/host/bin:$PATH
+ export TAR_OPTIONS=--mtime=`echo $REFERENCE_DATETIME | awk '{ print $1 }'`
+ ./autogen.sh
+ ./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=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
- $HOME/qt/src/bin/qmake -spec unsupported/win32-g++-cross MINIUPNPC_LIB_PATH=$HOME/build/miniupnpc MINIUPNPC_INCLUDE_PATH=$HOME/build/ BDB_LIB_PATH=$HOME/build/db-4.8.30.NC/build_unix BDB_INCLUDE_PATH=$HOME/build/db-4.8.30.NC/build_unix BOOST_LIB_PATH=$HOME/build/boost_1_50_0/stage/lib BOOST_INCLUDE_PATH=$HOME/build/boost_1_50_0 BOOST_LIB_SUFFIX=-mt-s BOOST_THREAD_LIB_SUFFIX=_win32-mt-s OPENSSL_LIB_PATH=$HOME/build/openssl-1.0.1c OPENSSL_INCLUDE_PATH=$HOME/build/openssl-1.0.1c/include QRENCODE_LIB_PATH=$HOME/build/qrencode-3.2.0/.libs QRENCODE_INCLUDE_PATH=$HOME/build/qrencode-3.2.0 USE_QRCODE=1 INCLUDEPATH=$HOME/build DEFINES=BOOST_THREAD_USE_LIB BITCOIN_NEED_QT_PLUGINS=1 QMAKE_LRELEASE=lrelease QMAKE_CXXFLAGS=-frandom-seed=bitcoin USE_BUILD_INFO=1
make $MAKEOPTS
- cp release/bitcoin-qt.exe $OUTDIR/
- #
- cd src
- export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1
- export FAKETIME=$REFERENCE_DATETIME
- export TZ=UTC
- make -f makefile.linux-mingw $MAKEOPTS DEPSDIR=$HOME/build bitcoind.exe USE_UPNP=0 DEBUGFLAGS="-frandom-seed=bitcoin"
- i586-mingw32msvc-strip bitcoind.exe
- mkdir $OUTDIR/daemon
- cp bitcoind.exe $OUTDIR/daemon
- cd ..
- mkdir nsis
- git archive HEAD | tar -x -C nsis
- cd nsis/src
- mkdir ../release
- cp ../../release/* ../release/
- cp ../../src/*.exe .
- makensis ../share/setup.nsi
- cp ../share/bitcoin-*-win32-setup.exe $OUTDIR/
+ make deploy
+ make install-strip
+ cp -f bitcoin-*setup*.exe $OUTDIR/
+
+ mkdir -p $OUTDIR/src
+ cp -f ../bitcoin-*.tar.* $OUTDIR/src
diff --git a/contrib/gitian-descriptors/gitian.yml b/contrib/gitian-descriptors/gitian.yml
index 195d0e36ff..18e4cc2803 100644
--- a/contrib/gitian-descriptors/gitian.yml
+++ b/contrib/gitian-descriptors/gitian.yml
@@ -13,43 +13,58 @@ packages:
- "libboost-filesystem-dev"
- "libboost-program-options-dev"
- "libboost-thread-dev"
+- "libboost-test-dev"
- "libssl-dev"
- "git-core"
- "unzip"
- "pkg-config"
- "libpng12-dev"
-reference_datetime: "2011-01-30 00:00:00"
+- "autoconf2.13"
+- "libtool"
+- "automake"
+- "faketime"
+- "bsdmainutils"
+reference_datetime: "2013-06-01 00:00:00"
remotes:
- "url": "https://github.com/bitcoin/bitcoin.git"
"dir": "bitcoin"
files:
- "miniupnpc-1.6.tar.gz"
- "qrencode-3.2.0.tar.bz2"
+- "protobuf-2.5.0.tar.bz2"
script: |
- INSTDIR="$HOME/install"
- export LIBRARY_PATH="$INSTDIR/lib"
+ STAGING="$HOME/install"
+ export LIBRARY_PATH="$STAGING/lib"
#
- tar xzf miniupnpc-1.6.tar.gz
+ tar xzfm miniupnpc-1.6.tar.gz
cd miniupnpc-1.6
- INSTALLPREFIX=$INSTDIR make $MAKEOPTS install
+ INSTALLPREFIX=$STAGING make $MAKEOPTS install
cd ..
#
- tar xjf qrencode-3.2.0.tar.bz2
+ tar xjfm qrencode-3.2.0.tar.bz2
cd qrencode-3.2.0
- ./configure --prefix=$INSTDIR --enable-static --disable-shared
+ sed -i 's/@LIBPTHREAD@//' libqrencode.pc.in
+ ./configure --prefix=$STAGING --enable-static --disable-shared
make $MAKEOPTS install
cd ..
#
- cd bitcoin
- mkdir -p $OUTDIR/src
- git archive HEAD | tar -x -C $OUTDIR/src
- cp $OUTDIR/src/doc/README.md $OUTDIR
- cp $OUTDIR/src/COPYING $OUTDIR
- cd src
- make -f makefile.unix STATIC=1 OPENSSL_INCLUDE_PATH="$INSTDIR/include" OPENSSL_LIB_PATH="$INSTDIR/lib" $MAKEOPTS bitcoind USE_UPNP=0 DEBUGFLAGS=
- mkdir -p $OUTDIR/bin/$GBUILD_BITS
- install -s bitcoind $OUTDIR/bin/$GBUILD_BITS
+ tar xjfm protobuf-2.5.0.tar.bz2
+ cd protobuf-2.5.0
+ mkdir -p $STAGING/host/bin
+ ./configure --prefix=$STAGING --bindir=$STAGING/host/bin --enable-static --disable-shared
+ make $MAKEOPTS install
cd ..
- qmake INCLUDEPATH="$INSTDIR/include" LIBS="-L$INSTDIR/lib" RELEASE=1 USE_QRCODE=1
+ #
+ cd bitcoin
+ export TAR_OPTIONS=--mtime=`echo $REFERENCE_DATETIME | awk '{ print $1 }'`
+ ./autogen.sh
+ ./configure --prefix=$STAGING --bindir=$OUTDIR --with-protoc-bindir=$STAGING/host/bin --disable-maintainer-mode --disable-dependency-tracking PKG_CONFIG_PATH="$STAGING/lib/pkgconfig" 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 --prefix=$STAGING --bindir=$OUTDIR --with-protoc-bindir=$STAGING/host/bin --disable-maintainer-mode --disable-dependency-tracking PKG_CONFIG_PATH="$STAGING/lib/pkgconfig" CPPFLAGS="-I$STAGING/include" LDFLAGS="-L$STAGING/lib" CXXFLAGS="-frandom-seed=bitcoin"
make $MAKEOPTS
- install bitcoin-qt $OUTDIR/bin/$GBUILD_BITS
+ make $MAKEOPTS install-strip
+ mkdir -p $OUTDIR/src
+ cp ../bitcoin-*.tar.* $OUTDIR/src
diff --git a/contrib/gitian-descriptors/protobuf-win32.yml b/contrib/gitian-descriptors/protobuf-win32.yml
new file mode 100644
index 0000000000..35f261e1a2
--- /dev/null
+++ b/contrib/gitian-descriptors/protobuf-win32.yml
@@ -0,0 +1,42 @@
+---
+name: "protobuf-win32"
+suites:
+- "precise"
+architectures:
+- "amd64"
+packages:
+- "mingw-w64"
+- "g++-mingw-w64"
+- "zip"
+- "faketime"
+reference_datetime: "2013-04-15 00:00:00"
+remotes: []
+files:
+- "protobuf-2.5.0.tar.bz2"
+script: |
+ #
+ export TZ=UTC
+ export INSTALLPREFIX=$OUTDIR/staging/deps
+ export HOST=i686-w64-mingw32
+ #
+ #
+ mkdir -p $INSTALLPREFIX
+
+ tar xjf protobuf-2.5.0.tar.bz2
+ cd protobuf-2.5.0
+ # First: build a native (linux) protoc
+ ./configure --enable-shared=no --disable-dependency-tracking
+ make
+ mkdir -p $INSTALLPREFIX/host/bin
+ cp src/protoc $INSTALLPREFIX/host/bin
+ # Now recompile with the mingw cross-compiler:
+ make distclean
+ ./configure --prefix=$INSTALLPREFIX --enable-shared=no --disable-dependency-tracking --with-protoc=$INSTALLPREFIX/host/bin/protoc --host=$HOST CXXFLAGS=-frandom-seed=11
+ make
+ make install
+ cd $INSTALLPREFIX
+ export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1
+ export FAKETIME=$REFERENCE_DATETIME
+ 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 0b711790e6..1fc6f861e0 100644
--- a/contrib/gitian-descriptors/qt-win32.yml
+++ b/contrib/gitian-descriptors/qt-win32.yml
@@ -1,54 +1,63 @@
---
name: "qt"
suites:
-- "lucid"
+- "precise"
architectures:
-- "i386"
+- "amd64"
packages:
-- "mingw32"
+- "mingw-w64"
+- "g++-mingw-w64"
- "zip"
+- "unzip"
- "faketime"
+- "unzip"
reference_datetime: "2011-01-30 00:00:00"
remotes: []
files:
- "qt-everywhere-opensource-src-4.8.3.tar.gz"
+- "bitcoin-deps-win32-gitian-r9.zip"
script: |
+ #
+ HOST=i686-w64-mingw32
INSTDIR="$HOME/qt/"
+ #
mkdir $INSTDIR
- SRCDIR="$INSTDIR/src/"
- mkdir $SRCDIR
+ mkdir -p $INSTDIR/host/bin
+ #
+ # Need mingw-compiled openssl from bitcoin-deps:
+ unzip bitcoin-deps-win32-gitian-r9.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
export TZ=UTC
- ./configure -prefix $INSTDIR -confirm-license -release -opensource -static -no-qt3support -xplatform unsupported/win32-g++-cross -no-multimedia -no-audio-backend -no-phonon -no-phonon-backend -no-declarative -no-script -no-scripttools -no-javascript-jit -no-webkit -no-svg -no-xmlpatterns -no-sql-sqlite -no-nis -no-cups -no-iconv -no-dbus -no-gif -no-libtiff -no-opengl -nomake examples -nomake demos -nomake docs -no-feature-style-plastique -no-feature-style-cleanlooks -no-feature-style-motif -no-feature-style-cde -no-feature-style-windowsce -no-feature-style-windowsmobile -no-feature-style-s60
+ # Compile static libraries, and use statically linked openssl (-openssl-linked):
+ OPENSSL_LIBS="-L$DEPSDIR/lib -lssl -lcrypto -lgdi32" ./configure -prefix $INSTDIR -bindir $INSTDIR/host/bin -I $DEPSDIR/include -confirm-license -release -opensource -static -no-qt3support -xplatform unsupported/win32-g++-cross -no-multimedia -no-audio-backend -no-phonon -no-phonon-backend -no-declarative -no-script -no-scripttools -no-javascript-jit -no-webkit -no-svg -no-xmlpatterns -no-sql-sqlite -no-nis -no-cups -no-iconv -no-dbus -no-gif -no-libtiff -no-opengl -nomake examples -nomake demos -nomake docs -no-feature-style-plastique -no-feature-style-cleanlooks -no-feature-style-motif -no-feature-style-cde -no-feature-style-windowsce -no-feature-style-windowsmobile -no-feature-style-s60 -openssl-linked
find . -name *.prl | xargs -l sed 's|/\.||' -i
find . -name *.prl | xargs -l sed 's|/$||' -i
make $MAKEOPTS install
- cp -a bin $SRCDIR/
cd $INSTDIR
find . -name *.prl | xargs -l sed 's|/$||' -i
- #sed 's|QMAKE_PRL_LIBS.*|QMAKE_PRL_LIBS = -lQtDeclarative -lQtScript -lQtSvg -lQtSql -lQtXmlPatterns -lQtGui -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lmsimg32 -lQtNetwork -lQtCore -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32|' -i imports/Qt/labs/particles/qmlparticlesplugin.prl
# 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-r1.zip *
+ zip -r $OUTDIR/qt-win32-4.8.3-gitian-r4.zip *