@@ -44,29 +44,31 @@ script: |
4444 mkdir -p ${BASE_CACHE} ${SOURCES_PATH}
4545 fi
4646
47- # Create global faketime wrappers
47+ function create_global_faketime_wrappers {
4848 for prog in ${FAKETIME_PROGS}; do
4949 echo '#!/bin/bash' > ${WRAP_DIR}/${prog}
5050 echo "REAL=\`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1\`" >> ${WRAP_DIR}/${prog}
5151 echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${prog}
52- echo "export FAKETIME=\"${REFERENCE_DATETIME} \"" >> ${WRAP_DIR}/${prog}
52+ echo "export FAKETIME=\"$1 \"" >> ${WRAP_DIR}/${prog}
5353 echo "\$REAL \$@" >> $WRAP_DIR/${prog}
5454 chmod +x ${WRAP_DIR}/${prog}
5555 done
56+ }
5657
57- # Create per-host faketime wrappers
58+ function create_per-host_faketime_wrappers {
5859 for i in $HOSTS; do
5960 for prog in ${FAKETIME_HOST_PROGS}; do
6061 echo '#!/bin/bash' > ${WRAP_DIR}/${i}-${prog}
6162 echo "REAL=\`which -a ${i}-${prog} | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog}
6263 echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${i}-${prog}
63- echo "export FAKETIME=\"${REFERENCE_DATETIME} \"" >> ${WRAP_DIR}/${i}-${prog}
64+ echo "export FAKETIME=\"$1 \"" >> ${WRAP_DIR}/${i}-${prog}
6465 echo "\$REAL \$@" >> $WRAP_DIR/${i}-${prog}
6566 chmod +x ${WRAP_DIR}/${i}-${prog}
6667 done
6768 done
69+ }
6870
69- # Create per-host linker wrapper
71+ function create_per-host_linker_wrapper {
7072 # This is only needed for trusty, as the mingw linker leaks a few bytes of
7173 # heap, causing non-determinism. See discussion in https://github.com/bitcoin/bitcoin/pull/6900
7274 for i in $HOSTS; do
@@ -82,22 +84,33 @@ script: |
8284 echo '#!/bin/bash' > ${WRAP_DIR}/${i}-${prog}
8385 echo "REAL=\`which -a ${i}-${prog} | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog}
8486 echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${i}-${prog}
85- echo "export FAKETIME=\"${REFERENCE_DATETIME} \"" >> ${WRAP_DIR}/${i}-${prog}
87+ echo "export FAKETIME=\"$1 \"" >> ${WRAP_DIR}/${i}-${prog}
8688 echo "export COMPILER_PATH=${WRAP_DIR}/${i}" >> ${WRAP_DIR}/${i}-${prog}
8789 echo "\$REAL \$@" >> $WRAP_DIR/${i}-${prog}
8890 chmod +x ${WRAP_DIR}/${i}-${prog}
8991 done
9092 done
93+ }
9194
9295 export PATH=${WRAP_DIR}:${PATH}
9396
97+ # Faketime for depends so intermediate results are comparable
98+ create_global_faketime_wrappers "2000-01-01 12:00:00"
99+ create_per-host_faketime_wrappers "2000-01-01 12:00:00"
100+ create_per-host_linker_wrapper "2000-01-01 12:00:00"
101+
94102 cd bitcoin
95103 BASEPREFIX=`pwd`/depends
96104 # Build dependencies for each host
97105 for i in $HOSTS; do
98106 make ${MAKEOPTS} -C ${BASEPREFIX} HOST="${i}"
99107 done
100108
109+ # Faketime for binaries
110+ create_global_faketime_wrappers "${REFERENCE_DATETIME}"
111+ create_per-host_faketime_wrappers "${REFERENCE_DATETIME}"
112+ create_per-host_linker_wrapper "${REFERENCE_DATETIME}"
113+
101114 # Create the release tarball using (arbitrarily) the first host
102115 ./autogen.sh
103116 ./configure --prefix=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`
0 commit comments