Skip to content

Commit 1a97b22

Browse files
theunilaanwj
authored andcommitted
gitian: Add OSX build descriptors
Github-Pull: #4185 Rebased-By: Wladimir J. van der Laan Rebased-From: bb5da27, 2288206, 7fe8fe6, f76db78, ebcf375, fa1ed7c, 397e9b8
1 parent 9d97e83 commit 1a97b22

File tree

6 files changed

+699
-17
lines changed

6 files changed

+699
-17
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
---
2+
name: "bitcoin"
3+
suites:
4+
- "precise"
5+
architectures:
6+
- "i386"
7+
packages:
8+
- "git-core"
9+
- "automake"
10+
- "faketime"
11+
- "bsdmainutils"
12+
- "pkg-config"
13+
- "p7zip-full"
14+
15+
reference_datetime: "2013-06-01 00:00:00"
16+
remotes:
17+
- "url": "https://github.com/bitcoin/bitcoin.git"
18+
"dir": "bitcoin"
19+
files:
20+
- "osx-native-depends-r2.tar.gz"
21+
- "osx-depends-r2.tar.gz"
22+
- "osx-depends-qt-5.2.1-r2.tar.gz"
23+
- "MacOSX10.6.pkg"
24+
25+
script: |
26+
27+
echo "a2ccf2299de4e0bb88bd17a3355f02b747575b97492c7c2f5b789a64ccc4cbd6 MacOSX10.6.pkg" | sha256sum -c
28+
29+
HOST=x86_64-apple-darwin11
30+
PREFIX=`pwd`/osx-cross-depends/prefix
31+
SDK=`pwd`/osx-cross-depends/SDKs/MacOSX10.6.sdk
32+
NATIVEPREFIX=`pwd`/osx-cross-depends/native-prefix
33+
export TAR_OPTIONS="-m --mtime="$REFERENCE_DATE\\\ $REFERENCE_TIME""
34+
35+
export SOURCES_PATH=`pwd`
36+
37+
mkdir osx-cross-depends
38+
39+
cd osx-cross-depends
40+
mkdir -p SDKs
41+
7z -bd -so -y e ${SOURCES_PATH}/MacOSX10.6.pkg Payload | gzip -d -c | cpio -i
42+
cd ..
43+
44+
tar -C osx-cross-depends -xf osx-native-depends-r2.tar.gz
45+
tar -C osx-cross-depends -xf osx-depends-r2.tar.gz
46+
tar -C osx-cross-depends -xf osx-depends-qt-5.2.1-r2.tar.gz
47+
export PATH=`pwd`/osx-cross-depends/native-prefix/bin:$PATH
48+
49+
cd bitcoin
50+
51+
export ZERO_AR_DATE=1
52+
export QT_RCC_TEST=1
53+
./autogen.sh
54+
./configure --host=${HOST} --with-boost=${PREFIX} CC=clang CXX=clang++ OBJC=clang OBJCXX=clang++ CFLAGS="-target ${HOST} -mmacosx-version-min=10.6 --sysroot ${SDK} -msse2 -Qunused-arguments" CXXFLAGS="-target ${HOST} -mmacosx-version-min=10.6 --sysroot ${SDK} -msse2 -Qunused-arguments" LDFLAGS="-B${NATIVEPREFIX}/bin -L${PREFIX}/lib -L${SDK}/usr/lib/i686-apple-darwin10/4.2.1" CPPFLAGS="-I${NATIVEPREFIX}/lib/clang/3.2/include -I${PREFIX}/include" SSL_LIBS="-lz -lssl -lcrypto" --disable-tests -with-gui=qt5 PKG_CONFIG_LIBDIR="${PREFIX}/lib/pkgconfig" --disable-dependency-tracking --disable-maintainer-mode
55+
make dist
56+
mkdir -p distsrc
57+
cd distsrc
58+
tar --strip-components=1 -xf ../bitcoin-*.tar*
59+
./configure --host=${HOST} --with-boost=${PREFIX} CC=clang CXX=clang++ OBJC=clang OBJCXX=clang++ CFLAGS="-target ${HOST} -mmacosx-version-min=10.6 --sysroot ${SDK} -msse2 -Qunused-arguments" CXXFLAGS="-target ${HOST} -mmacosx-version-min=10.6 --sysroot ${SDK} -msse2 -Qunused-arguments" LDFLAGS="-B${NATIVEPREFIX}/bin -L${PREFIX}/lib -L${SDK}/usr/lib/i686-apple-darwin10/4.2.1" CPPFLAGS="-I${NATIVEPREFIX}/lib/clang/3.2/include -I${PREFIX}/include" SSL_LIBS="-lz -lssl -lcrypto" --disable-tests -with-gui=qt5 PKG_CONFIG_LIBDIR="${PREFIX}/lib/pkgconfig" --disable-dependency-tracking --disable-maintainer-mode
60+
make $MAKEOPTS
61+
export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1
62+
export FAKETIME=$REFERENCE_DATETIME
63+
export TZ=UTC
64+
make deploy
65+
dmg dmg Bitcoin-Qt.dmg $OUTDIR/Bitcoin-Qt.dmg
Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
---
2+
name: "osx-depends"
3+
suites:
4+
- "precise"
5+
architectures:
6+
- "i386"
7+
packages:
8+
- "git-core"
9+
- "automake"
10+
- "p7zip-full"
11+
12+
reference_datetime: "2013-06-01 00:00:00"
13+
remotes: []
14+
files:
15+
- "boost_1_55_0.tar.bz2"
16+
- "db-4.8.30.NC.tar.gz"
17+
- "miniupnpc-1.9.tar.gz"
18+
- "openssl-1.0.1g.tar.gz"
19+
- "protobuf-2.5.0.tar.bz2"
20+
- "qrencode-3.4.3.tar.bz2"
21+
- "MacOSX10.6.pkg"
22+
- "osx-native-depends-r2.tar.gz"
23+
24+
script: |
25+
26+
echo "fff00023dd79486d444c8e29922f4072e1d451fc5a4d2b6075852ead7f2b7b52 boost_1_55_0.tar.bz2" | sha256sum -c
27+
echo "12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef db-4.8.30.NC.tar.gz" | sha256sum -c
28+
echo "2923e453e880bb949e3d4da9f83dd3cb6f08946d35de0b864d0339cf70934464 miniupnpc-1.9.tar.gz" | sha256sum -c
29+
echo "53cb818c3b90e507a8348f4f5eaedb05d8bfe5358aabb508b7263cc670c3e028 openssl-1.0.1g.tar.gz" | sha256sum -c
30+
echo "13bfc5ae543cf3aa180ac2485c0bc89495e3ae711fc6fab4f8ffe90dfb4bb677 protobuf-2.5.0.tar.bz2" | sha256sum -c
31+
echo "dfd71487513c871bad485806bfd1fdb304dedc84d2b01a8fb8e0940b50597a98 qrencode-3.4.3.tar.bz2" | sha256sum -c
32+
echo "a2ccf2299de4e0bb88bd17a3355f02b747575b97492c7c2f5b789a64ccc4cbd6 MacOSX10.6.pkg" | sha256sum -c
33+
34+
REVISION=r2
35+
export SOURCES_PATH=`pwd`
36+
export TAR_OPTIONS="-m --mtime="$REFERENCE_DATE\\\ $REFERENCE_TIME""
37+
export PATH=$HOME:$PATH
38+
export SOURCES_PATH=`pwd`
39+
export ZERO_AR_DATE=1
40+
41+
mkdir -p osx-cross-depends/build
42+
cd osx-cross-depends
43+
44+
PREFIX=`pwd`/prefix
45+
NATIVEPREFIX=`pwd`/native-prefix
46+
BUILD_BASE=`pwd`/build
47+
SDK=`pwd`/SDKs/MacOSX10.6.sdk
48+
HOST=x86_64-apple-darwin11
49+
MIN_VERSION=10.6
50+
51+
INT_CFLAGS="-target ${HOST} -mmacosx-version-min=${MIN_VERSION} --sysroot ${SDK} -msse2 -Qunused-arguments"
52+
INT_CXXFLAGS="${INT_CFLAGS}"
53+
INT_LDFLAGS="-L${PREFIX}/lib -L${SDK}/usr/lib/i686-apple-darwin10/4.2.1"
54+
INT_LDFLAGS_CLANG="-B${NATIVEPREFIX}/bin"
55+
INT_CPPFLAGS="-I${PREFIX}/include"
56+
INT_CC=clang
57+
INT_CXX=clang++
58+
INT_OBJC=clang
59+
INT_OBJCXX=clang++
60+
INT_AR=${HOST}-ar
61+
INT_RANLIB=${HOST}-ranlib
62+
INT_LIBTOOL=${HOST}-libtool
63+
INT_INSTALL_NAME_TOOL=${HOST}-install_name_tool
64+
65+
export PATH=${NATIVEPREFIX}/bin:${PATH}
66+
67+
mkdir -p ${NATIVEPREFIX}/bin
68+
mkdir -p ${NATIVEPREFIX}/lib
69+
mkdir -p ${PREFIX}/bin
70+
mkdir -p ${PREFIX}/lib
71+
mkdir -p ${BUILD_BASE}
72+
73+
mkdir -p ${SDK}
74+
7z -bd -so -y e ${SOURCES_PATH}/MacOSX10.6.pkg Payload | gzip -d -c | cpio -i
75+
76+
tar xf /home/ubuntu/build/osx-native-depends-r2.tar.gz
77+
78+
# bdb
79+
SOURCE_FILE=${SOURCES_PATH}/db-4.8.30.NC.tar.gz
80+
BUILD_DIR=${BUILD_BASE}/db-4.8.30.NC
81+
82+
tar -C ${BUILD_BASE} -xf ${SOURCE_FILE}
83+
sed -i 's/__atomic_compare_exchange/__atomic_compare_exchange_db/g' ${BUILD_DIR}/dbinc/atomic.h
84+
pushd ${BUILD_DIR}
85+
cd build_unix;
86+
../dist/configure --host=${HOST} --prefix="${PREFIX}" --disable-shared --enable-cxx CC="${INT_CC}" CXX="${INT_CXX}" AR="${INT_AR}" RANLIB="${INT_RANLIB}" OBJC="${INT_OBJC}" OBJCXX="${INT_OBJCXX}" CFLAGS="${INT_CFLAGS}" CXXFLAGS="${INT_CXXFLAGS}" LDFLAGS="${INT_CLANG_LDFLAGS} ${INT_LDFLAGS}" CPPFLAGS="${INT_CPPFLAGS}"
87+
make $MAKEOPTS libdb.a libdb_cxx.a
88+
make install_lib install_include
89+
popd
90+
91+
# openssl
92+
SOURCE_FILE=${SOURCES_PATH}/openssl-1.0.1g.tar.gz
93+
BUILD_DIR=${BUILD_BASE}/openssl-1.0.1g
94+
95+
tar -C ${BUILD_BASE} -xf ${SOURCE_FILE}
96+
pushd ${BUILD_DIR}
97+
sed -ie "s|cc:|${INT_CC}:|" ${BUILD_DIR}/Configure
98+
sed -ie "s|\(-arch [_a-zA-Z0-9]*\)|\1 --sysroot ${SDK} -target ${HOST} -msse2|" ${BUILD_DIR}/Configure
99+
AR="${INT_AR}" RANLIB="${INT_RANLIB}" ./Configure --prefix=${PREFIX} --openssldir=${PREFIX}/etc/openssl zlib shared no-krb5 darwin64-x86_64-cc ${INT_LDFLAGS} ${INT_CLANG_LDFLAGS} ${INT_CPPFLAGS}
100+
sed -i "s|engines apps test|engines|" ${BUILD_DIR}/Makefile
101+
sed -i "/define DATE/d" ${BUILD_DIR}/crypto/Makefile
102+
make -j1 build_libs libcrypto.pc libssl.pc openssl.pc
103+
make -j1 install_sw
104+
popd
105+
106+
#libminiupnpc
107+
SOURCE_FILE=${SOURCES_PATH}/miniupnpc-1.9.tar.gz
108+
BUILD_DIR=${BUILD_BASE}/miniupnpc-1.9
109+
110+
tar -C ${BUILD_BASE} -xf ${SOURCE_FILE}
111+
pushd ${BUILD_DIR}
112+
CFLAGS="${INT_CFLAGS} ${INT_CPPFLAGS}" make $MAKEOPTS OS=Darwin CC="${INT_CC}" AR="${INT_AR}" libminiupnpc.a
113+
install -d ${PREFIX}/include/miniupnpc
114+
install *.h ${PREFIX}/include/miniupnpc
115+
install libminiupnpc.a ${PREFIX}/lib
116+
popd
117+
118+
# qrencode
119+
SOURCE_FILE=${SOURCES_PATH}/qrencode-3.4.3.tar.bz2
120+
BUILD_DIR=${BUILD_BASE}/qrencode-3.4.3
121+
tar -C ${BUILD_BASE} -xf ${SOURCE_FILE}
122+
pushd ${BUILD_DIR}
123+
124+
# m4 folder is not included in the stable release, which can confuse aclocal
125+
# if its timestamp ends up being earlier than configure.ac when extracted
126+
touch aclocal.m4
127+
./configure --host=${HOST} --prefix="${PREFIX}" --disable-shared CC="${INT_CC}" CXX="${INT_CXX}" AR="${INT_AR}" RANLIB="${INT_RANLIB}" OBJC="${INT_OBJC}" OBJCXX="${INT_OBJCXX}" CFLAGS="${INT_CFLAGS}" CXXFLAGS="${INT_CXXFLAGS}" LDFLAGS="${INT_CLANG_LDFLAGS} ${INT_LDFLAGS}" CPPFLAGS="${INT_CPPFLAGS}" --disable-shared -without-tools --disable-sdltest --disable-dependency-tracking
128+
make $MAKEOPTS
129+
make install
130+
popd
131+
132+
# libprotobuf
133+
SOURCE_FILE=${SOURCES_PATH}/protobuf-2.5.0.tar.bz2
134+
BUILD_DIR=${BUILD_BASE}/protobuf-2.5.0
135+
136+
tar -C ${BUILD_BASE} -xjf ${SOURCE_FILE}
137+
pushd ${BUILD_DIR}
138+
./configure --host=${HOST} --prefix="${PREFIX}" --disable-shared --enable-cxx CC="${INT_CC}" CXX="${INT_CXX}" AR="${INT_AR}" RANLIB="${INT_RANLIB}" OBJC="${INT_OBJC}" OBJCXX="${INT_OBJCXX}" CFLAGS="${INT_CFLAGS}" CXXFLAGS="${INT_CXXFLAGS}" LDFLAGS="${INT_CLANG_LDFLAGS} ${INT_LDFLAGS}" CPPFLAGS="${INT_CPPFLAGS}" --enable-shared=no --disable-dependency-tracking --with-protoc=${NATIVEPREFIX}/bin/protoc
139+
cd src
140+
make $MAKEOPTS libprotobuf.la
141+
make install-libLTLIBRARIES install-nobase_includeHEADERS
142+
cd ..
143+
make install-pkgconfigDATA
144+
popd
145+
146+
# boost
147+
SOURCE_FILE=${SOURCES_PATH}/boost_1_55_0.tar.bz2
148+
BUILD_DIR=${BUILD_BASE}/boost_1_55_0
149+
150+
tar -C ${BUILD_BASE} -xf ${SOURCE_FILE}
151+
pushd ${BUILD_DIR}
152+
./bootstrap.sh --with-libraries=chrono,filesystem,program_options,system,thread,test
153+
echo "using darwin : : ${INT_CXX} : <cxxflags>\"${INT_CFLAGS} ${INT_CPPFLAGS}\" <linkflags>\"${INT_LDFLAGS} ${INT_CLANG_LDFLAGS}\" <archiver>\"${INT_LIBTOOL}\" <striper>\"${INT_STRIP}\" : ;" > "user-config.jam"
154+
./b2 -d2 --layout=tagged --build-type=complete --prefix="${PREFIX}" --toolset=darwin-4.2.1 --user-config=user-config.jam variant=release threading=multi link=static install
155+
popd
156+
157+
export GZIP="-9n"
158+
find prefix | sort | tar --no-recursion -czf osx-depends-${REVISION}.tar.gz -T -
159+
160+
mv osx-depends-${REVISION}.tar.gz $OUTDIR

0 commit comments

Comments
 (0)