Auto merge of #1541 - str4d:upstream-gitian-updates, r=bitcartel
Upstream gitian updates This PR pulls in all gitian-related PRs that have been merged upstream since 0.11.2. The only ones I left out were documentation-only PRs, because we removed `doc/gitian-building.md` at some point. Here are the commits applied here, in the order shown in `git log` (ie. last to first): - bitcoin/bitcoin#7283 - fa42a67 - fa58c76 - bitcoin/bitcoin#8175 - 74c1347 - bitcoin/bitcoin#8167 - 7e7eb27 - ad38204 - b676f38 - bitcoin/bitcoin#7776 - f063863 - bitcoin/bitcoin#7424 - a81c87f ~ we already partly applied - a8ce872 - f3d3eaf ~ we already partly applied - 475813b - ~~cd27bf5~~ X we already applied - bitcoin/bitcoin#7060 - 3b468a0 ~ we removed doc/gitian-building.md - ~~99fda26~~ X we removed doc/gitian-building.md - bitcoin/bitcoin#7251 - fa09562 - bitcoin/bitcoin#6900 - ~~2cecb24~~ X we removed doc/gitian-building.md - 957c0fd - 2e31d74 - ~~0b416c6~~ X we removed QT - 9f251b7 - bitcoin/bitcoin#6854 - 579b863 ~ we already partly applied Part of #540
This commit is contained in:
commit
4ee9d712b5
30
configure.ac
30
configure.ac
|
@ -97,6 +97,11 @@ AC_ARG_ENABLE(tests,
|
||||||
[use_tests=$enableval],
|
[use_tests=$enableval],
|
||||||
[use_tests=yes])
|
[use_tests=yes])
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(gui-tests,
|
||||||
|
AS_HELP_STRING([--disable-gui-tests],[do not compile GUI tests (default is to compile if GUI and tests enabled)]),
|
||||||
|
[use_gui_tests=$enableval],
|
||||||
|
[use_gui_tests=$use_tests])
|
||||||
|
|
||||||
AC_ARG_WITH([comparison-tool],
|
AC_ARG_WITH([comparison-tool],
|
||||||
AS_HELP_STRING([--with-comparison-tool],[path to java comparison tool (requires --enable-tests)]),
|
AS_HELP_STRING([--with-comparison-tool],[path to java comparison tool (requires --enable-tests)]),
|
||||||
[use_comparison_tool=$withval],
|
[use_comparison_tool=$withval],
|
||||||
|
@ -393,6 +398,10 @@ AX_GCC_FUNC_ATTRIBUTE([dllimport])
|
||||||
|
|
||||||
if test x$use_glibc_compat != xno; then
|
if test x$use_glibc_compat != xno; then
|
||||||
|
|
||||||
|
#glibc absorbed clock_gettime in 2.17. librt (its previous location) is safe to link
|
||||||
|
#in anyway for back-compat.
|
||||||
|
AC_CHECK_LIB([rt],[clock_gettime],, AC_MSG_ERROR(lib missing))
|
||||||
|
|
||||||
#__fdelt_chk's params and return type have changed from long unsigned int to long int.
|
#__fdelt_chk's params and return type have changed from long unsigned int to long int.
|
||||||
# See which one is present here.
|
# See which one is present here.
|
||||||
AC_MSG_CHECKING(__fdelt_chk type)
|
AC_MSG_CHECKING(__fdelt_chk type)
|
||||||
|
@ -406,7 +415,8 @@ if test x$use_glibc_compat != xno; then
|
||||||
[ fdelt_type="long int"])
|
[ fdelt_type="long int"])
|
||||||
AC_MSG_RESULT($fdelt_type)
|
AC_MSG_RESULT($fdelt_type)
|
||||||
AC_DEFINE_UNQUOTED(FDELT_TYPE, $fdelt_type,[parameter and return value type for __fdelt_chk])
|
AC_DEFINE_UNQUOTED(FDELT_TYPE, $fdelt_type,[parameter and return value type for __fdelt_chk])
|
||||||
|
else
|
||||||
|
AC_SEARCH_LIBS([clock_gettime],[rt])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test x$use_hardening != xno; then
|
if test x$use_hardening != xno; then
|
||||||
|
@ -478,8 +488,6 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
|
||||||
[ AC_MSG_RESULT(no)]
|
[ AC_MSG_RESULT(no)]
|
||||||
)
|
)
|
||||||
|
|
||||||
AC_SEARCH_LIBS([clock_gettime],[rt])
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([for visibility attribute])
|
AC_MSG_CHECKING([for visibility attribute])
|
||||||
AC_LINK_IFELSE([AC_LANG_SOURCE([
|
AC_LINK_IFELSE([AC_LANG_SOURCE([
|
||||||
int foo_def( void ) __attribute__((visibility("default")));
|
int foo_def( void ) __attribute__((visibility("default")));
|
||||||
|
@ -808,8 +816,8 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl these are only used when qt is enabled
|
dnl these are only used when qt is enabled
|
||||||
|
BUILD_TEST_QT=""
|
||||||
if test x$bitcoin_enable_qt != xno; then
|
if test x$bitcoin_enable_qt != xno; then
|
||||||
BUILD_QT=qt
|
|
||||||
dnl enable dbus support
|
dnl enable dbus support
|
||||||
AC_MSG_CHECKING([whether to build GUI with support for D-Bus])
|
AC_MSG_CHECKING([whether to build GUI with support for D-Bus])
|
||||||
if test x$bitcoin_enable_qt_dbus != xno; then
|
if test x$bitcoin_enable_qt_dbus != xno; then
|
||||||
|
@ -839,9 +847,9 @@ if test x$bitcoin_enable_qt != xno; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to build test_bitcoin-qt])
|
AC_MSG_CHECKING([whether to build test_bitcoin-qt])
|
||||||
if test x$use_tests$bitcoin_enable_qt_test = xyesyes; then
|
if test x$use_gui_tests$bitcoin_enable_qt_test = xyesyes; then
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
BUILD_TEST_QT="test"
|
BUILD_TEST_QT="yes"
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT([no])
|
AC_MSG_RESULT([no])
|
||||||
fi
|
fi
|
||||||
|
@ -850,9 +858,10 @@ fi
|
||||||
AC_MSG_CHECKING([whether to build test_bitcoin])
|
AC_MSG_CHECKING([whether to build test_bitcoin])
|
||||||
if test x$use_tests = xyes; then
|
if test x$use_tests = xyes; then
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
BUILD_TEST="test"
|
BUILD_TEST="yes"
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT([no])
|
AC_MSG_RESULT([no])
|
||||||
|
BUILD_TEST=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to reduce exports])
|
AC_MSG_CHECKING([whether to reduce exports])
|
||||||
|
@ -870,9 +879,9 @@ AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin])
|
||||||
AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin])
|
AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin])
|
||||||
AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows])
|
AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows])
|
||||||
AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet = xyes])
|
AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet = xyes])
|
||||||
AM_CONDITIONAL([ENABLE_TESTS],[test x$use_tests = xyes])
|
AM_CONDITIONAL([ENABLE_TESTS],[test x$BUILD_TEST = xyes])
|
||||||
AM_CONDITIONAL([ENABLE_QT],[test x$bitcoin_enable_qt = xyes])
|
AM_CONDITIONAL([ENABLE_QT],[test x$bitcoin_enable_qt = xyes])
|
||||||
AM_CONDITIONAL([ENABLE_QT_TESTS],[test x$use_tests$bitcoin_enable_qt_test = xyesyes])
|
AM_CONDITIONAL([ENABLE_QT_TESTS],[test x$BUILD_TEST_QT = xyes])
|
||||||
AM_CONDITIONAL([USE_QRCODE], [test x$use_qr = xyes])
|
AM_CONDITIONAL([USE_QRCODE], [test x$use_qr = xyes])
|
||||||
AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
|
AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
|
||||||
AM_CONDITIONAL([USE_COMPARISON_TOOL],[test x$use_comparison_tool != xno])
|
AM_CONDITIONAL([USE_COMPARISON_TOOL],[test x$use_comparison_tool != xno])
|
||||||
|
@ -900,9 +909,6 @@ AC_SUBST(USE_QRCODE)
|
||||||
AC_SUBST(BOOST_LIBS)
|
AC_SUBST(BOOST_LIBS)
|
||||||
AC_SUBST(TESTDEFS)
|
AC_SUBST(TESTDEFS)
|
||||||
AC_SUBST(LEVELDB_TARGET_FLAGS)
|
AC_SUBST(LEVELDB_TARGET_FLAGS)
|
||||||
AC_SUBST(BUILD_TEST)
|
|
||||||
AC_SUBST(BUILD_QT)
|
|
||||||
AC_SUBST(BUILD_TEST_QT)
|
|
||||||
AC_SUBST(MINIUPNPC_CPPFLAGS)
|
AC_SUBST(MINIUPNPC_CPPFLAGS)
|
||||||
AC_SUBST(MINIUPNPC_LIBS)
|
AC_SUBST(MINIUPNPC_LIBS)
|
||||||
AC_SUBST(GMP_LIBS)
|
AC_SUBST(GMP_LIBS)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/python2
|
||||||
# Copyright (c) 2014 Wladimir J. van der Laan
|
# Copyright (c) 2014 Wladimir J. van der Laan
|
||||||
# Distributed under the MIT software license, see the accompanying
|
# Distributed under the MIT software license, see the accompanying
|
||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
@ -15,6 +15,7 @@ from __future__ import division, print_function
|
||||||
import subprocess
|
import subprocess
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
# Debian 6.0.9 (Squeeze) has:
|
# Debian 6.0.9 (Squeeze) has:
|
||||||
#
|
#
|
||||||
|
@ -41,12 +42,34 @@ MAX_VERSIONS = {
|
||||||
'GLIBCXX': (3,4,13),
|
'GLIBCXX': (3,4,13),
|
||||||
'GLIBC': (2,11)
|
'GLIBC': (2,11)
|
||||||
}
|
}
|
||||||
|
# See here for a description of _IO_stdin_used:
|
||||||
|
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=634261#109
|
||||||
|
|
||||||
# Ignore symbols that are exported as part of every executable
|
# Ignore symbols that are exported as part of every executable
|
||||||
IGNORE_EXPORTS = {
|
IGNORE_EXPORTS = {
|
||||||
'_edata', '_end', '_init', '__bss_start', '_fini'
|
'_edata', '_end', '_init', '__bss_start', '_fini', '_IO_stdin_used'
|
||||||
|
}
|
||||||
|
READELF_CMD = os.getenv('READELF', '/usr/bin/readelf')
|
||||||
|
CPPFILT_CMD = os.getenv('CPPFILT', '/usr/bin/c++filt')
|
||||||
|
# Allowed NEEDED libraries
|
||||||
|
ALLOWED_LIBRARIES = {
|
||||||
|
# bitcoind and bitcoin-qt
|
||||||
|
'libgcc_s.so.1', # GCC base support
|
||||||
|
'libc.so.6', # C library
|
||||||
|
'libpthread.so.0', # threading
|
||||||
|
'libanl.so.1', # DNS resolve
|
||||||
|
'libm.so.6', # math library
|
||||||
|
'librt.so.1', # real-time (clock)
|
||||||
|
'ld-linux-x86-64.so.2', # 64-bit dynamic linker
|
||||||
|
'ld-linux.so.2', # 32-bit dynamic linker
|
||||||
|
# bitcoin-qt only
|
||||||
|
'libX11-xcb.so.1', # part of X11
|
||||||
|
'libX11.so.6', # part of X11
|
||||||
|
'libxcb.so.1', # part of X11
|
||||||
|
'libfontconfig.so.1', # font support
|
||||||
|
'libfreetype.so.6', # font parsing
|
||||||
|
'libdl.so.2' # programming interface to dynamic linker
|
||||||
}
|
}
|
||||||
READELF_CMD = '/usr/bin/readelf'
|
|
||||||
CPPFILT_CMD = '/usr/bin/c++filt'
|
|
||||||
|
|
||||||
class CPPFilt(object):
|
class CPPFilt(object):
|
||||||
'''
|
'''
|
||||||
|
@ -98,6 +121,22 @@ def check_version(max_versions, version):
|
||||||
return False
|
return False
|
||||||
return ver <= max_versions[lib]
|
return ver <= max_versions[lib]
|
||||||
|
|
||||||
|
def read_libraries(filename):
|
||||||
|
p = subprocess.Popen([READELF_CMD, '-d', '-W', filename], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
|
||||||
|
(stdout, stderr) = p.communicate()
|
||||||
|
if p.returncode:
|
||||||
|
raise IOError('Error opening file')
|
||||||
|
libraries = []
|
||||||
|
for line in stdout.split('\n'):
|
||||||
|
tokens = line.split()
|
||||||
|
if len(tokens)>2 and tokens[1] == '(NEEDED)':
|
||||||
|
match = re.match('^Shared library: \[(.*)\]$', ' '.join(tokens[2:]))
|
||||||
|
if match:
|
||||||
|
libraries.append(match.group(1))
|
||||||
|
else:
|
||||||
|
raise ValueError('Unparseable (NEEDED) specification')
|
||||||
|
return libraries
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
cppfilt = CPPFilt()
|
cppfilt = CPPFilt()
|
||||||
retval = 0
|
retval = 0
|
||||||
|
@ -113,6 +152,11 @@ if __name__ == '__main__':
|
||||||
continue
|
continue
|
||||||
print('%s: export of symbol %s not allowed' % (filename, cppfilt(sym)))
|
print('%s: export of symbol %s not allowed' % (filename, cppfilt(sym)))
|
||||||
retval = 1
|
retval = 1
|
||||||
|
# Check dependency libraries
|
||||||
|
for library_name in read_libraries(filename):
|
||||||
|
if library_name not in ALLOWED_LIBRARIES:
|
||||||
|
print('%s: NEEDED library %s is not allowed' % (filename, library_name))
|
||||||
|
retval = 1
|
||||||
|
|
||||||
exit(retval)
|
exit(retval)
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ Once you've got the right hardware and software:
|
||||||
|
|
||||||
# Create base images
|
# Create base images
|
||||||
cd gitian-builder
|
cd gitian-builder
|
||||||
bin/make-base-vm --suite precise --arch amd64
|
bin/make-base-vm --suite trusty --arch amd64
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
# Get inputs (see doc/release-process.md for exact inputs needed and where to get them)
|
# Get inputs (see doc/release-process.md for exact inputs needed and where to get them)
|
||||||
|
|
|
@ -2,21 +2,21 @@
|
||||||
name: "bitcoin-linux-0.11"
|
name: "bitcoin-linux-0.11"
|
||||||
enable_cache: true
|
enable_cache: true
|
||||||
suites:
|
suites:
|
||||||
- "precise"
|
- "trusty"
|
||||||
architectures:
|
architectures:
|
||||||
- "amd64"
|
- "amd64"
|
||||||
packages:
|
packages:
|
||||||
- "g++-multilib"
|
- "g++-multilib"
|
||||||
- "git-core"
|
- "git-core"
|
||||||
- "pkg-config"
|
- "pkg-config"
|
||||||
- "autoconf2.13"
|
- "autoconf"
|
||||||
- "libtool"
|
- "libtool"
|
||||||
- "automake"
|
- "automake"
|
||||||
- "faketime"
|
- "faketime"
|
||||||
- "bsdmainutils"
|
- "bsdmainutils"
|
||||||
- "binutils-gold"
|
- "binutils-gold"
|
||||||
- "libstdc++6-4.6-pic"
|
- "ca-certificates"
|
||||||
reference_datetime: "2015-06-01 00:00:00"
|
- "python"
|
||||||
remotes:
|
remotes:
|
||||||
- "url": "https://github.com/bitcoin/bitcoin.git"
|
- "url": "https://github.com/bitcoin/bitcoin.git"
|
||||||
"dir": "bitcoin"
|
"dir": "bitcoin"
|
||||||
|
@ -24,9 +24,12 @@ files: []
|
||||||
script: |
|
script: |
|
||||||
WRAP_DIR=$HOME/wrapped
|
WRAP_DIR=$HOME/wrapped
|
||||||
HOSTS="i686-pc-linux-gnu x86_64-unknown-linux-gnu"
|
HOSTS="i686-pc-linux-gnu x86_64-unknown-linux-gnu"
|
||||||
CONFIGFLAGS="--enable-glibc-back-compat --enable-reduce-exports LDFLAGS=-static-libstdc++"
|
CONFIGFLAGS="--enable-glibc-back-compat --enable-reduce-exports --disable-bench --disable-gui-tests"
|
||||||
FAKETIME_HOST_PROGS=""
|
FAKETIME_HOST_PROGS=""
|
||||||
FAKETIME_PROGS="date ar ranlib nm strip"
|
FAKETIME_PROGS="date ar ranlib nm strip objcopy"
|
||||||
|
HOST_CFLAGS="-O2 -g"
|
||||||
|
HOST_CXXFLAGS="-O2 -g"
|
||||||
|
HOST_LDFLAGS=-static-libstdc++
|
||||||
|
|
||||||
export QT_RCC_TEST=1
|
export QT_RCC_TEST=1
|
||||||
export GZIP="-9n"
|
export GZIP="-9n"
|
||||||
|
@ -40,29 +43,36 @@ script: |
|
||||||
mkdir -p ${BASE_CACHE} ${SOURCES_PATH}
|
mkdir -p ${BASE_CACHE} ${SOURCES_PATH}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create global faketime wrappers
|
function create_global_faketime_wrappers {
|
||||||
for prog in ${FAKETIME_PROGS}; do
|
for prog in ${FAKETIME_PROGS}; do
|
||||||
echo '#!/bin/bash' > ${WRAP_DIR}/${prog}
|
echo '#!/bin/bash' > ${WRAP_DIR}/${prog}
|
||||||
echo "REAL=\`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1\`" >> ${WRAP_DIR}/${prog}
|
echo "REAL=\`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1\`" >> ${WRAP_DIR}/${prog}
|
||||||
echo 'export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${prog}
|
echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${prog}
|
||||||
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${prog}
|
echo "export FAKETIME=\"$1\"" >> ${WRAP_DIR}/${prog}
|
||||||
echo "\$REAL \$@" >> $WRAP_DIR/${prog}
|
echo "\$REAL \$@" >> $WRAP_DIR/${prog}
|
||||||
chmod +x ${WRAP_DIR}/${prog}
|
chmod +x ${WRAP_DIR}/${prog}
|
||||||
done
|
done
|
||||||
|
}
|
||||||
|
|
||||||
# Create per-host faketime wrappers
|
function create_per-host_faketime_wrappers {
|
||||||
for i in $HOSTS; do
|
for i in $HOSTS; do
|
||||||
for prog in ${FAKETIME_HOST_PROGS}; do
|
for prog in ${FAKETIME_HOST_PROGS}; do
|
||||||
echo '#!/bin/bash' > ${WRAP_DIR}/${i}-${prog}
|
echo '#!/bin/bash' > ${WRAP_DIR}/${i}-${prog}
|
||||||
echo "REAL=\`which -a ${i}-${prog} | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog}
|
echo "REAL=\`which -a ${i}-${prog} | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog}
|
||||||
echo 'export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${i}-${prog}
|
echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${i}-${prog}
|
||||||
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${i}-${prog}
|
echo "export FAKETIME=\"$1\"" >> ${WRAP_DIR}/${i}-${prog}
|
||||||
echo "\$REAL \$@" >> $WRAP_DIR/${i}-${prog}
|
echo "\$REAL \$@" >> $WRAP_DIR/${i}-${prog}
|
||||||
chmod +x ${WRAP_DIR}/${i}-${prog}
|
chmod +x ${WRAP_DIR}/${i}-${prog}
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
}
|
||||||
|
|
||||||
export PATH=${WRAP_DIR}:${PATH}
|
export PATH=${WRAP_DIR}:${PATH}
|
||||||
|
|
||||||
|
# Faketime for depends so intermediate results are comparable
|
||||||
|
create_global_faketime_wrappers "2000-01-01 12:00:00"
|
||||||
|
create_per-host_faketime_wrappers "2000-01-01 12:00:00"
|
||||||
|
|
||||||
cd bitcoin
|
cd bitcoin
|
||||||
BASEPREFIX=`pwd`/depends
|
BASEPREFIX=`pwd`/depends
|
||||||
# Build dependencies for each host
|
# Build dependencies for each host
|
||||||
|
@ -70,17 +80,13 @@ script: |
|
||||||
make ${MAKEOPTS} -C ${BASEPREFIX} HOST="${i}"
|
make ${MAKEOPTS} -C ${BASEPREFIX} HOST="${i}"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Ubuntu precise hack: Not an issue in later versions.
|
# Faketime for binaries
|
||||||
# Precise's libstdc++.a is non-pic. There's an optional libstdc++6-4.6-pic
|
create_global_faketime_wrappers "${REFERENCE_DATETIME}"
|
||||||
# package which provides libstdc++_pic.a, but the linker can't find it.
|
create_per-host_faketime_wrappers "${REFERENCE_DATETIME}"
|
||||||
# Symlink it to a path that will be included in our link-line so that the
|
|
||||||
# linker picks it up before the default libstdc++.a.
|
|
||||||
# This is only necessary for 64bit.
|
|
||||||
ln -s /usr/lib/gcc/x86_64-linux-gnu/4.6/libstdc++_pic.a ${BASEPREFIX}/x86_64-unknown-linux-gnu/lib/libstdc++.a
|
|
||||||
|
|
||||||
# Create the release tarball using (arbitrarily) the first host
|
# Create the release tarball using (arbitrarily) the first host
|
||||||
./autogen.sh
|
./autogen.sh
|
||||||
./configure --prefix=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`
|
CONFIG_SITE=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`/share/config.site ./configure --prefix=/
|
||||||
make dist
|
make dist
|
||||||
SOURCEDIST=`echo bitcoin-*.tar.gz`
|
SOURCEDIST=`echo bitcoin-*.tar.gz`
|
||||||
DISTNAME=`echo ${SOURCEDIST} | sed 's/.tar.*//'`
|
DISTNAME=`echo ${SOURCEDIST} | sed 's/.tar.*//'`
|
||||||
|
@ -101,19 +107,25 @@ script: |
|
||||||
mkdir -p ${INSTALLPATH}
|
mkdir -p ${INSTALLPATH}
|
||||||
tar --strip-components=1 -xf ../$SOURCEDIST
|
tar --strip-components=1 -xf ../$SOURCEDIST
|
||||||
|
|
||||||
./configure --prefix=${BASEPREFIX}/${i} --bindir=${INSTALLPATH}/bin --includedir=${INSTALLPATH}/include --libdir=${INSTALLPATH}/lib --disable-ccache --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS}
|
CONFIG_SITE=${BASEPREFIX}/${i}/share/config.site ./configure --prefix=/ --disable-ccache --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS} CFLAGS="${HOST_CFLAGS}" CXXFLAGS="${HOST_CXXFLAGS}" LDFLAGS="${HOST_LDFLAGS}"
|
||||||
make ${MAKEOPTS}
|
make ${MAKEOPTS}
|
||||||
make ${MAKEOPTS} -C src check-security
|
make ${MAKEOPTS} -C src check-security
|
||||||
make install-strip
|
make install DESTDIR=${INSTALLPATH}
|
||||||
cd installed
|
cd installed
|
||||||
find . -name "lib*.la" -delete
|
find . -name "lib*.la" -delete
|
||||||
find . -name "lib*.a" -delete
|
find . -name "lib*.a" -delete
|
||||||
rm -rf ${DISTNAME}/lib/pkgconfig
|
rm -rf ${DISTNAME}/lib/pkgconfig
|
||||||
find ${DISTNAME} | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-${i}.tar.gz
|
find ${DISTNAME}/bin -type f -executable -exec objcopy --only-keep-debug {} {}.dbg \; -exec strip -s {} \; -exec objcopy --add-gnu-debuglink={}.dbg {} \;
|
||||||
|
find ${DISTNAME}/lib -type f -exec objcopy --only-keep-debug {} {}.dbg \; -exec strip -s {} \; -exec objcopy --add-gnu-debuglink={}.dbg {} \;
|
||||||
|
find ${DISTNAME} -not -name "*.dbg" | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-${i}.tar.gz
|
||||||
|
find ${DISTNAME} -name "*.dbg" | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-${i}-debug.tar.gz
|
||||||
cd ../../
|
cd ../../
|
||||||
|
rm -rf distsrc-${i}
|
||||||
done
|
done
|
||||||
mkdir -p $OUTDIR/src
|
mkdir -p $OUTDIR/src
|
||||||
mv $SOURCEDIST $OUTDIR/src
|
mv $SOURCEDIST $OUTDIR/src
|
||||||
|
mv ${OUTDIR}/${DISTNAME}-x86_64-*-debug.tar.gz ${OUTDIR}/${DISTNAME}-linux64-debug.tar.gz
|
||||||
|
mv ${OUTDIR}/${DISTNAME}-i686-*-debug.tar.gz ${OUTDIR}/${DISTNAME}-linux32-debug.tar.gz
|
||||||
mv ${OUTDIR}/${DISTNAME}-x86_64-*.tar.gz ${OUTDIR}/${DISTNAME}-linux64.tar.gz
|
mv ${OUTDIR}/${DISTNAME}-x86_64-*.tar.gz ${OUTDIR}/${DISTNAME}-linux64.tar.gz
|
||||||
mv ${OUTDIR}/${DISTNAME}-i686-*.tar.gz ${OUTDIR}/${DISTNAME}-linux32.tar.gz
|
mv ${OUTDIR}/${DISTNAME}-i686-*.tar.gz ${OUTDIR}/${DISTNAME}-linux32.tar.gz
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
---
|
---
|
||||||
name: "bitcoin-dmg-signer"
|
name: "bitcoin-dmg-signer"
|
||||||
suites:
|
suites:
|
||||||
- "precise"
|
- "trusty"
|
||||||
architectures:
|
architectures:
|
||||||
- "amd64"
|
- "amd64"
|
||||||
packages:
|
packages:
|
||||||
- "libc6:i386"
|
- "libc6:i386"
|
||||||
- "faketime"
|
- "faketime"
|
||||||
reference_datetime: "2015-06-01 00:00:00"
|
|
||||||
remotes:
|
remotes:
|
||||||
- "url": "https://github.com/bitcoin/bitcoin-detached-sigs.git"
|
- "url": "https://github.com/bitcoin/bitcoin-detached-sigs.git"
|
||||||
"dir": "signature"
|
"dir": "signature"
|
||||||
|
@ -23,7 +22,7 @@ script: |
|
||||||
for prog in ${FAKETIME_PROGS}; do
|
for prog in ${FAKETIME_PROGS}; do
|
||||||
echo '#!/bin/bash' > ${WRAP_DIR}/${prog}
|
echo '#!/bin/bash' > ${WRAP_DIR}/${prog}
|
||||||
echo "REAL=\`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1\`" >> ${WRAP_DIR}/${prog}
|
echo "REAL=\`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1\`" >> ${WRAP_DIR}/${prog}
|
||||||
echo 'export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${prog}
|
echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${prog}
|
||||||
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${prog}
|
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${prog}
|
||||||
echo "\$REAL \$@" >> $WRAP_DIR/${prog}
|
echo "\$REAL \$@" >> $WRAP_DIR/${prog}
|
||||||
chmod +x ${WRAP_DIR}/${prog}
|
chmod +x ${WRAP_DIR}/${prog}
|
||||||
|
|
|
@ -2,14 +2,14 @@
|
||||||
name: "bitcoin-osx-0.11"
|
name: "bitcoin-osx-0.11"
|
||||||
enable_cache: true
|
enable_cache: true
|
||||||
suites:
|
suites:
|
||||||
- "precise"
|
- "trusty"
|
||||||
architectures:
|
architectures:
|
||||||
- "amd64"
|
- "amd64"
|
||||||
packages:
|
packages:
|
||||||
- "g++"
|
- "g++"
|
||||||
- "git-core"
|
- "git-core"
|
||||||
- "pkg-config"
|
- "pkg-config"
|
||||||
- "autoconf2.13"
|
- "autoconf"
|
||||||
- "libtool"
|
- "libtool"
|
||||||
- "automake"
|
- "automake"
|
||||||
- "faketime"
|
- "faketime"
|
||||||
|
@ -18,7 +18,8 @@ packages:
|
||||||
- "libcap-dev"
|
- "libcap-dev"
|
||||||
- "libz-dev"
|
- "libz-dev"
|
||||||
- "libbz2-dev"
|
- "libbz2-dev"
|
||||||
reference_datetime: "2015-06-01 00:00:00"
|
- "ca-certificates"
|
||||||
|
- "python"
|
||||||
remotes:
|
remotes:
|
||||||
- "url": "https://github.com/bitcoin/bitcoin.git"
|
- "url": "https://github.com/bitcoin/bitcoin.git"
|
||||||
"dir": "bitcoin"
|
"dir": "bitcoin"
|
||||||
|
@ -27,7 +28,7 @@ files:
|
||||||
script: |
|
script: |
|
||||||
WRAP_DIR=$HOME/wrapped
|
WRAP_DIR=$HOME/wrapped
|
||||||
HOSTS="x86_64-apple-darwin11"
|
HOSTS="x86_64-apple-darwin11"
|
||||||
CONFIGFLAGS="--enable-reduce-exports GENISOIMAGE=$WRAP_DIR/genisoimage"
|
CONFIGFLAGS="--enable-reduce-exports --disable-bench --disable-gui-tests GENISOIMAGE=$WRAP_DIR/genisoimage"
|
||||||
FAKETIME_HOST_PROGS=""
|
FAKETIME_HOST_PROGS=""
|
||||||
FAKETIME_PROGS="ar ranlib date dmg genisoimage"
|
FAKETIME_PROGS="ar ranlib date dmg genisoimage"
|
||||||
|
|
||||||
|
@ -45,29 +46,36 @@ script: |
|
||||||
|
|
||||||
export ZERO_AR_DATE=1
|
export ZERO_AR_DATE=1
|
||||||
|
|
||||||
# Create global faketime wrappers
|
function create_global_faketime_wrappers {
|
||||||
for prog in ${FAKETIME_PROGS}; do
|
for prog in ${FAKETIME_PROGS}; do
|
||||||
echo '#!/bin/bash' > ${WRAP_DIR}/${prog}
|
echo '#!/bin/bash' > ${WRAP_DIR}/${prog}
|
||||||
echo "REAL=\`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1\`" >> ${WRAP_DIR}/${prog}
|
echo "REAL=\`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1\`" >> ${WRAP_DIR}/${prog}
|
||||||
echo 'export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${prog}
|
echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${prog}
|
||||||
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${prog}
|
echo "export FAKETIME=\"$1\"" >> ${WRAP_DIR}/${prog}
|
||||||
echo "\$REAL \$@" >> $WRAP_DIR/${prog}
|
echo "\$REAL \$@" >> $WRAP_DIR/${prog}
|
||||||
chmod +x ${WRAP_DIR}/${prog}
|
chmod +x ${WRAP_DIR}/${prog}
|
||||||
done
|
done
|
||||||
|
}
|
||||||
|
|
||||||
# Create per-host faketime wrappers
|
function create_per-host_faketime_wrappers {
|
||||||
for i in $HOSTS; do
|
for i in $HOSTS; do
|
||||||
for prog in ${FAKETIME_HOST_PROGS}; do
|
for prog in ${FAKETIME_HOST_PROGS}; do
|
||||||
echo '#!/bin/bash' > ${WRAP_DIR}/${i}-${prog}
|
echo '#!/bin/bash' > ${WRAP_DIR}/${i}-${prog}
|
||||||
echo "REAL=\`which -a ${i}-${prog} | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog}
|
echo "REAL=\`which -a ${i}-${prog} | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog}
|
||||||
echo 'export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${i}-${prog}
|
echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${i}-${prog}
|
||||||
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${i}-${prog}
|
echo "export FAKETIME=\"$1\"" >> ${WRAP_DIR}/${i}-${prog}
|
||||||
echo "\$REAL \$@" >> $WRAP_DIR/${i}-${prog}
|
echo "\$REAL \$@" >> $WRAP_DIR/${i}-${prog}
|
||||||
chmod +x ${WRAP_DIR}/${i}-${prog}
|
chmod +x ${WRAP_DIR}/${i}-${prog}
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
}
|
||||||
|
|
||||||
export PATH=${WRAP_DIR}:${PATH}
|
export PATH=${WRAP_DIR}:${PATH}
|
||||||
|
|
||||||
|
# Faketime for depends so intermediate results are comparable
|
||||||
|
create_global_faketime_wrappers "2000-01-01 12:00:00"
|
||||||
|
create_per-host_faketime_wrappers "2000-01-01 12:00:00"
|
||||||
|
|
||||||
cd bitcoin
|
cd bitcoin
|
||||||
BASEPREFIX=`pwd`/depends
|
BASEPREFIX=`pwd`/depends
|
||||||
|
|
||||||
|
@ -79,9 +87,13 @@ script: |
|
||||||
make ${MAKEOPTS} -C ${BASEPREFIX} HOST="${i}"
|
make ${MAKEOPTS} -C ${BASEPREFIX} HOST="${i}"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Faketime for binaries
|
||||||
|
create_global_faketime_wrappers "${REFERENCE_DATETIME}"
|
||||||
|
create_per-host_faketime_wrappers "${REFERENCE_DATETIME}"
|
||||||
|
|
||||||
# Create the release tarball using (arbitrarily) the first host
|
# Create the release tarball using (arbitrarily) the first host
|
||||||
./autogen.sh
|
./autogen.sh
|
||||||
./configure --prefix=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`
|
CONFIG_SITE=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`/share/config.site ./configure --prefix=/
|
||||||
make dist
|
make dist
|
||||||
SOURCEDIST=`echo bitcoin-*.tar.gz`
|
SOURCEDIST=`echo bitcoin-*.tar.gz`
|
||||||
DISTNAME=`echo ${SOURCEDIST} | sed 's/.tar.*//'`
|
DISTNAME=`echo ${SOURCEDIST} | sed 's/.tar.*//'`
|
||||||
|
@ -103,9 +115,9 @@ script: |
|
||||||
mkdir -p ${INSTALLPATH}
|
mkdir -p ${INSTALLPATH}
|
||||||
tar --strip-components=1 -xf ../$SOURCEDIST
|
tar --strip-components=1 -xf ../$SOURCEDIST
|
||||||
|
|
||||||
./configure --prefix=${BASEPREFIX}/${i} --bindir=${INSTALLPATH}/bin --includedir=${INSTALLPATH}/include --libdir=${INSTALLPATH}/lib --disable-ccache --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS}
|
CONFIG_SITE=${BASEPREFIX}/${i}/share/config.site ./configure --prefix=/ --disable-ccache --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS}
|
||||||
make ${MAKEOPTS}
|
make ${MAKEOPTS}
|
||||||
make install-strip
|
make install-strip DESTDIR=${INSTALLPATH}
|
||||||
|
|
||||||
make deploydir
|
make deploydir
|
||||||
mkdir -p unsigned-app-${i}
|
mkdir -p unsigned-app-${i}
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
---
|
---
|
||||||
name: "bitcoin-win-signer"
|
name: "bitcoin-win-signer"
|
||||||
suites:
|
suites:
|
||||||
- "precise"
|
- "trusty"
|
||||||
architectures:
|
architectures:
|
||||||
- "amd64"
|
- "amd64"
|
||||||
packages:
|
packages:
|
||||||
- "libssl-dev"
|
- "libssl-dev"
|
||||||
- "autoconf"
|
- "autoconf"
|
||||||
reference_datetime: "2015-06-01 00:00:00"
|
|
||||||
remotes:
|
remotes:
|
||||||
- "url": "https://github.com/bitcoin/bitcoin-detached-sigs.git"
|
- "url": "https://github.com/bitcoin/bitcoin-detached-sigs.git"
|
||||||
"dir": "signature"
|
"dir": "signature"
|
||||||
|
|
|
@ -2,14 +2,14 @@
|
||||||
name: "bitcoin-win-0.11"
|
name: "bitcoin-win-0.11"
|
||||||
enable_cache: true
|
enable_cache: true
|
||||||
suites:
|
suites:
|
||||||
- "precise"
|
- "trusty"
|
||||||
architectures:
|
architectures:
|
||||||
- "amd64"
|
- "amd64"
|
||||||
packages:
|
packages:
|
||||||
- "g++"
|
- "g++"
|
||||||
- "git-core"
|
- "git-core"
|
||||||
- "pkg-config"
|
- "pkg-config"
|
||||||
- "autoconf2.13"
|
- "autoconf"
|
||||||
- "libtool"
|
- "libtool"
|
||||||
- "automake"
|
- "automake"
|
||||||
- "faketime"
|
- "faketime"
|
||||||
|
@ -18,7 +18,8 @@ packages:
|
||||||
- "g++-mingw-w64"
|
- "g++-mingw-w64"
|
||||||
- "nsis"
|
- "nsis"
|
||||||
- "zip"
|
- "zip"
|
||||||
reference_datetime: "2015-06-01 00:00:00"
|
- "ca-certificates"
|
||||||
|
- "python"
|
||||||
remotes:
|
remotes:
|
||||||
- "url": "https://github.com/bitcoin/bitcoin.git"
|
- "url": "https://github.com/bitcoin/bitcoin.git"
|
||||||
"dir": "bitcoin"
|
"dir": "bitcoin"
|
||||||
|
@ -26,9 +27,11 @@ files: []
|
||||||
script: |
|
script: |
|
||||||
WRAP_DIR=$HOME/wrapped
|
WRAP_DIR=$HOME/wrapped
|
||||||
HOSTS="x86_64-w64-mingw32 i686-w64-mingw32"
|
HOSTS="x86_64-w64-mingw32 i686-w64-mingw32"
|
||||||
CONFIGFLAGS="--enable-reduce-exports"
|
CONFIGFLAGS="--enable-reduce-exports --disable-bench --disable-gui-tests"
|
||||||
FAKETIME_HOST_PROGS="g++ ar ranlib nm windres strip"
|
FAKETIME_HOST_PROGS="g++ ar ranlib nm windres strip objcopy"
|
||||||
FAKETIME_PROGS="date makensis zip"
|
FAKETIME_PROGS="date makensis zip"
|
||||||
|
HOST_CFLAGS="-O2 -g"
|
||||||
|
HOST_CXXFLAGS="-O2 -g"
|
||||||
|
|
||||||
export QT_RCC_TEST=1
|
export QT_RCC_TEST=1
|
||||||
export GZIP="-9n"
|
export GZIP="-9n"
|
||||||
|
@ -42,29 +45,61 @@ script: |
|
||||||
mkdir -p ${BASE_CACHE} ${SOURCES_PATH}
|
mkdir -p ${BASE_CACHE} ${SOURCES_PATH}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create global faketime wrappers
|
function create_global_faketime_wrappers {
|
||||||
for prog in ${FAKETIME_PROGS}; do
|
for prog in ${FAKETIME_PROGS}; do
|
||||||
echo '#!/bin/bash' > ${WRAP_DIR}/${prog}
|
echo '#!/bin/bash' > ${WRAP_DIR}/${prog}
|
||||||
echo "REAL=\`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1\`" >> ${WRAP_DIR}/${prog}
|
echo "REAL=\`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1\`" >> ${WRAP_DIR}/${prog}
|
||||||
echo 'export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${prog}
|
echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${prog}
|
||||||
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${prog}
|
echo "export FAKETIME=\"$1\"" >> ${WRAP_DIR}/${prog}
|
||||||
echo "\$REAL \$@" >> $WRAP_DIR/${prog}
|
echo "\$REAL \$@" >> $WRAP_DIR/${prog}
|
||||||
chmod +x ${WRAP_DIR}/${prog}
|
chmod +x ${WRAP_DIR}/${prog}
|
||||||
done
|
done
|
||||||
|
}
|
||||||
|
|
||||||
# Create per-host faketime wrappers
|
function create_per-host_faketime_wrappers {
|
||||||
for i in $HOSTS; do
|
for i in $HOSTS; do
|
||||||
for prog in ${FAKETIME_HOST_PROGS}; do
|
for prog in ${FAKETIME_HOST_PROGS}; do
|
||||||
echo '#!/bin/bash' > ${WRAP_DIR}/${i}-${prog}
|
echo '#!/bin/bash' > ${WRAP_DIR}/${i}-${prog}
|
||||||
echo "REAL=\`which -a ${i}-${prog} | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog}
|
echo "REAL=\`which -a ${i}-${prog} | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog}
|
||||||
echo 'export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${i}-${prog}
|
echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${i}-${prog}
|
||||||
echo "export FAKETIME=\"${REFERENCE_DATETIME}\"" >> ${WRAP_DIR}/${i}-${prog}
|
echo "export FAKETIME=\"$1\"" >> ${WRAP_DIR}/${i}-${prog}
|
||||||
echo "\$REAL \$@" >> $WRAP_DIR/${i}-${prog}
|
echo "\$REAL \$@" >> $WRAP_DIR/${i}-${prog}
|
||||||
chmod +x ${WRAP_DIR}/${i}-${prog}
|
chmod +x ${WRAP_DIR}/${i}-${prog}
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function create_per-host_linker_wrapper {
|
||||||
|
# This is only needed for trusty, as the mingw linker leaks a few bytes of
|
||||||
|
# heap, causing non-determinism. See discussion in https://github.com/bitcoin/bitcoin/pull/6900
|
||||||
|
for i in $HOSTS; do
|
||||||
|
mkdir -p ${WRAP_DIR}/${i}
|
||||||
|
for prog in collect2; do
|
||||||
|
echo '#!/bin/bash' > ${WRAP_DIR}/${i}/${prog}
|
||||||
|
REAL=$(${i}-gcc -print-prog-name=${prog})
|
||||||
|
echo "export MALLOC_PERTURB_=255" >> ${WRAP_DIR}/${i}/${prog}
|
||||||
|
echo "${REAL} \$@" >> $WRAP_DIR/${i}/${prog}
|
||||||
|
chmod +x ${WRAP_DIR}/${i}/${prog}
|
||||||
|
done
|
||||||
|
for prog in gcc g++; do
|
||||||
|
echo '#!/bin/bash' > ${WRAP_DIR}/${i}-${prog}
|
||||||
|
echo "REAL=\`which -a ${i}-${prog} | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog}
|
||||||
|
echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${i}-${prog}
|
||||||
|
echo "export FAKETIME=\"$1\"" >> ${WRAP_DIR}/${i}-${prog}
|
||||||
|
echo "export COMPILER_PATH=${WRAP_DIR}/${i}" >> ${WRAP_DIR}/${i}-${prog}
|
||||||
|
echo "\$REAL \$@" >> $WRAP_DIR/${i}-${prog}
|
||||||
|
chmod +x ${WRAP_DIR}/${i}-${prog}
|
||||||
|
done
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
export PATH=${WRAP_DIR}:${PATH}
|
export PATH=${WRAP_DIR}:${PATH}
|
||||||
|
|
||||||
|
# Faketime for depends so intermediate results are comparable
|
||||||
|
create_global_faketime_wrappers "2000-01-01 12:00:00"
|
||||||
|
create_per-host_faketime_wrappers "2000-01-01 12:00:00"
|
||||||
|
create_per-host_linker_wrapper "2000-01-01 12:00:00"
|
||||||
|
|
||||||
cd bitcoin
|
cd bitcoin
|
||||||
BASEPREFIX=`pwd`/depends
|
BASEPREFIX=`pwd`/depends
|
||||||
# Build dependencies for each host
|
# Build dependencies for each host
|
||||||
|
@ -72,9 +107,14 @@ script: |
|
||||||
make ${MAKEOPTS} -C ${BASEPREFIX} HOST="${i}"
|
make ${MAKEOPTS} -C ${BASEPREFIX} HOST="${i}"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Faketime for binaries
|
||||||
|
create_global_faketime_wrappers "${REFERENCE_DATETIME}"
|
||||||
|
create_per-host_faketime_wrappers "${REFERENCE_DATETIME}"
|
||||||
|
create_per-host_linker_wrapper "${REFERENCE_DATETIME}"
|
||||||
|
|
||||||
# Create the release tarball using (arbitrarily) the first host
|
# Create the release tarball using (arbitrarily) the first host
|
||||||
./autogen.sh
|
./autogen.sh
|
||||||
./configure --prefix=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`
|
CONFIG_SITE=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`/share/config.site ./configure --prefix=/
|
||||||
make dist
|
make dist
|
||||||
SOURCEDIST=`echo bitcoin-*.tar.gz`
|
SOURCEDIST=`echo bitcoin-*.tar.gz`
|
||||||
DISTNAME=`echo ${SOURCEDIST} | sed 's/.tar.*//'`
|
DISTNAME=`echo ${SOURCEDIST} | sed 's/.tar.*//'`
|
||||||
|
@ -98,22 +138,28 @@ script: |
|
||||||
mkdir -p ${INSTALLPATH}
|
mkdir -p ${INSTALLPATH}
|
||||||
tar --strip-components=1 -xf ../$SOURCEDIST
|
tar --strip-components=1 -xf ../$SOURCEDIST
|
||||||
|
|
||||||
./configure --prefix=${BASEPREFIX}/${i} --bindir=${INSTALLPATH}/bin --includedir=${INSTALLPATH}/include --libdir=${INSTALLPATH}/lib --disable-ccache --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS}
|
CONFIG_SITE=${BASEPREFIX}/${i}/share/config.site ./configure --prefix=/ --disable-ccache --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS} CFLAGS="${HOST_CFLAGS}" CXXFLAGS="${HOST_CXXFLAGS}"
|
||||||
make ${MAKEOPTS}
|
make ${MAKEOPTS}
|
||||||
make ${MAKEOPTS} -C src check-security
|
make ${MAKEOPTS} -C src check-security
|
||||||
make deploy
|
make deploy
|
||||||
make install-strip
|
make install DESTDIR=${INSTALLPATH}
|
||||||
cp -f bitcoin-*setup*.exe $OUTDIR/
|
cp -f bitcoin-*setup*.exe $OUTDIR/
|
||||||
cd installed
|
cd installed
|
||||||
mv ${DISTNAME}/bin/*.dll ${DISTNAME}/lib/
|
mv ${DISTNAME}/bin/*.dll ${DISTNAME}/lib/
|
||||||
find . -name "lib*.la" -delete
|
find . -name "lib*.la" -delete
|
||||||
find . -name "lib*.a" -delete
|
find . -name "lib*.a" -delete
|
||||||
rm -rf ${DISTNAME}/lib/pkgconfig
|
rm -rf ${DISTNAME}/lib/pkgconfig
|
||||||
find ${DISTNAME} -type f | sort | zip -X@ ${OUTDIR}/${DISTNAME}-${i}.zip
|
find ${DISTNAME}/bin -type f -executable -exec ${i}-objcopy --only-keep-debug {} {}.dbg \; -exec ${i}-strip -s {} \; -exec ${i}-objcopy --add-gnu-debuglink={}.dbg {} \;
|
||||||
cd ../..
|
find ${DISTNAME}/lib -type f -exec ${i}-objcopy --only-keep-debug {} {}.dbg \; -exec ${i}-strip -s {} \; -exec ${i}-objcopy --add-gnu-debuglink={}.dbg {} \;
|
||||||
|
find ${DISTNAME} -not -name "*.dbg" -type f | sort | zip -X@ ${OUTDIR}/${DISTNAME}-${i}.zip
|
||||||
|
find ${DISTNAME} -name "*.dbg" -type f | sort | zip -X@ ${OUTDIR}/${DISTNAME}-${i}-debug.zip
|
||||||
|
cd ../../
|
||||||
|
rm -rf distsrc-${i}
|
||||||
done
|
done
|
||||||
cd $OUTDIR
|
cd $OUTDIR
|
||||||
rename 's/-setup\.exe$/-setup-unsigned.exe/' *-setup.exe
|
rename 's/-setup\.exe$/-setup-unsigned.exe/' *-setup.exe
|
||||||
find . -name "*-setup-unsigned.exe" | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-win-unsigned.tar.gz
|
find . -name "*-setup-unsigned.exe" | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-win-unsigned.tar.gz
|
||||||
|
mv ${OUTDIR}/${DISTNAME}-x86_64-*-debug.zip ${OUTDIR}/${DISTNAME}-win64-debug.zip
|
||||||
|
mv ${OUTDIR}/${DISTNAME}-i686-*-debug.zip ${OUTDIR}/${DISTNAME}-win32-debug.zip
|
||||||
mv ${OUTDIR}/${DISTNAME}-x86_64-*.zip ${OUTDIR}/${DISTNAME}-win64.zip
|
mv ${OUTDIR}/${DISTNAME}-x86_64-*.zip ${OUTDIR}/${DISTNAME}-win64.zip
|
||||||
mv ${OUTDIR}/${DISTNAME}-i686-*.zip ${OUTDIR}/${DISTNAME}-win32.zip
|
mv ${OUTDIR}/${DISTNAME}-i686-*.zip ${OUTDIR}/${DISTNAME}-win32.zip
|
||||||
|
|
|
@ -1,25 +1,27 @@
|
||||||
|
depends_prefix="`dirname ${ac_site_file}`/.."
|
||||||
|
|
||||||
cross_compiling=maybe
|
cross_compiling=maybe
|
||||||
host_alias=@HOST@
|
host_alias=@HOST@
|
||||||
ac_tool_prefix=${host_alias}-
|
ac_tool_prefix=${host_alias}-
|
||||||
|
|
||||||
if test -z $with_boost; then
|
if test -z $with_boost; then
|
||||||
with_boost=$prefix
|
with_boost=$depends_prefix
|
||||||
fi
|
fi
|
||||||
if test -z $with_qt_plugindir; then
|
if test -z $with_qt_plugindir; then
|
||||||
with_qt_plugindir=$prefix/plugins
|
with_qt_plugindir=$depends_prefix/plugins
|
||||||
fi
|
fi
|
||||||
if test -z $with_qt_translationdir; then
|
if test -z $with_qt_translationdir; then
|
||||||
with_qt_translationdir=$prefix/translations
|
with_qt_translationdir=$depends_prefix/translations
|
||||||
fi
|
fi
|
||||||
if test -z $with_qt_bindir; then
|
if test -z $with_qt_bindir; then
|
||||||
with_qt_bindir=$prefix/native/bin
|
with_qt_bindir=$depends_prefix/native/bin
|
||||||
fi
|
fi
|
||||||
if test -z $with_protoc_bindir; then
|
if test -z $with_protoc_bindir; then
|
||||||
with_protoc_bindir=$prefix/native/bin
|
with_protoc_bindir=$depends_prefix/native/bin
|
||||||
fi
|
fi
|
||||||
# Disable comparison utility (#592)
|
# Disable comparison utility (#592)
|
||||||
#if test -z $with_comparison_tool; then
|
#if test -z $with_comparison_tool; then
|
||||||
# with_comparison_tool=$prefix/native/share/BitcoindComparisonTool_jar/BitcoindComparisonTool.jar
|
# with_comparison_tool=$depends_prefix/native/share/BitcoindComparisonTool_jar/BitcoindComparisonTool.jar
|
||||||
#fi
|
#fi
|
||||||
|
|
||||||
|
|
||||||
|
@ -42,31 +44,31 @@ fi
|
||||||
|
|
||||||
if test x@host_os@ = xmingw32; then
|
if test x@host_os@ = xmingw32; then
|
||||||
if test -z $with_qt_incdir; then
|
if test -z $with_qt_incdir; then
|
||||||
with_qt_incdir=$prefix/include
|
with_qt_incdir=$depends_prefix/include
|
||||||
fi
|
fi
|
||||||
if test -z $with_qt_libdir; then
|
if test -z $with_qt_libdir; then
|
||||||
with_qt_libdir=$prefix/lib
|
with_qt_libdir=$depends_prefix/lib
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PATH=$prefix/native/bin:$PATH
|
PATH=$depends_prefix/native/bin:$PATH
|
||||||
PKG_CONFIG="`which pkg-config` --static"
|
PKG_CONFIG="`which pkg-config` --static"
|
||||||
|
|
||||||
# These two need to remain exported because pkg-config does not see them
|
# These two need to remain exported because pkg-config does not see them
|
||||||
# otherwise. That means they must be unexported at the end of configure.ac to
|
# otherwise. That means they must be unexported at the end of configure.ac to
|
||||||
# avoid ruining the cache. Sigh.
|
# avoid ruining the cache. Sigh.
|
||||||
|
|
||||||
export PKG_CONFIG_LIBDIR=$prefix/lib/pkgconfig
|
export PKG_CONFIG_LIBDIR=$depends_prefix/lib/pkgconfig
|
||||||
export PKG_CONFIG_PATH=$prefix/share/pkgconfig
|
export PKG_CONFIG_PATH=$depends_prefix/share/pkgconfig
|
||||||
|
|
||||||
CPPFLAGS="-I$prefix/include/ $CPPFLAGS"
|
CPPFLAGS="-I$depends_prefix/include/ $CPPFLAGS"
|
||||||
LDFLAGS="-L$prefix/lib $LDFLAGS"
|
LDFLAGS="-L$depends_prefix/lib $LDFLAGS"
|
||||||
|
|
||||||
CC="@CC@"
|
CC="@CC@"
|
||||||
CXX="@CXX@"
|
CXX="@CXX@"
|
||||||
OBJC="${CC}"
|
OBJC="${CC}"
|
||||||
OBJCXX="${CXX}"
|
OBJCXX="${CXX}"
|
||||||
CCACHE=$prefix/native/bin/ccache
|
CCACHE=$depends_prefix/native/bin/ccache
|
||||||
|
|
||||||
if test -n "@AR@"; then
|
if test -n "@AR@"; then
|
||||||
AR=@AR@
|
AR=@AR@
|
||||||
|
|
|
@ -79,7 +79,7 @@ LIBZCASH_H = \
|
||||||
zcash/prf.h \
|
zcash/prf.h \
|
||||||
zcash/util.h
|
zcash/util.h
|
||||||
|
|
||||||
.PHONY: FORCE check-security
|
.PHONY: FORCE check-symbols check-security
|
||||||
# bitcoin core #
|
# bitcoin core #
|
||||||
BITCOIN_CORE_H = \
|
BITCOIN_CORE_H = \
|
||||||
addrman.h \
|
addrman.h \
|
||||||
|
@ -482,6 +482,12 @@ clean-local:
|
||||||
$(AM_V_CXX) $(OBJCXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
$(AM_V_CXX) $(OBJCXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
$(CPPFLAGS) $(AM_CXXFLAGS) $(QT_INCLUDES) $(CXXFLAGS) -c -o $@ $<
|
$(CPPFLAGS) $(AM_CXXFLAGS) $(QT_INCLUDES) $(CXXFLAGS) -c -o $@ $<
|
||||||
|
|
||||||
|
check-symbols: $(bin_PROGRAMS)
|
||||||
|
if GLIBC_BACK_COMPAT
|
||||||
|
@echo "Checking glibc back compat of [$(bin_PROGRAMS)]..."
|
||||||
|
$(AM_V_at) READELF=$(READELF) CPPFILT=$(CPPFILT) $(top_srcdir)/contrib/devtools/symbol-check.py < $(bin_PROGRAMS)
|
||||||
|
endif
|
||||||
|
|
||||||
check-security: $(bin_PROGRAMS)
|
check-security: $(bin_PROGRAMS)
|
||||||
if HARDEN
|
if HARDEN
|
||||||
@echo "Checking binary security of [$(bin_PROGRAMS)]..."
|
@echo "Checking binary security of [$(bin_PROGRAMS)]..."
|
||||||
|
|
Loading…
Reference in New Issue