Changeset View
Changeset View
Standalone View
Standalone View
contrib/teamcity/ibd.sh
#!/usr/bin/env bash | #!/usr/bin/env bash | ||||
export LC_ALL=C | export LC_ALL=C | ||||
set -euxo pipefail | set -euxo pipefail | ||||
### | ### | ||||
# Initial Block Download script. | # Initial Block Download script. | ||||
# | # | ||||
# Runs a bitcoind process until initial block download is complete. | # Runs a bitcoind process until initial block download is complete. | ||||
# Forwards the exit code from bitcoind onward. | # Forwards the exit code from bitcoind onward. | ||||
### | ### | ||||
MYPID=$$ | MYPID=$$ | ||||
# Setup | # Setup | ||||
DATA_DIR="ibd" | TOPLEVEL=$(git rev-parse --show-toplevel) | ||||
DATA_DIR="${TOPLEVEL}/ibd" | |||||
mkdir -p "${DATA_DIR}" | mkdir -p "${DATA_DIR}" | ||||
DEBUG_LOG="${DATA_DIR}/debug.log" | DEBUG_LOG="${DATA_DIR}/debug.log" | ||||
chmod +x bitcoind | |||||
cleanup() { | cleanup() { | ||||
# Cleanup background processes spawned by this script. | # Cleanup background processes spawned by this script. | ||||
pkill -P ${MYPID} tail || true | pkill -P ${MYPID} tail || true | ||||
} | } | ||||
trap "cleanup" EXIT | trap "cleanup" EXIT | ||||
# Show some progress | # Show some progress | ||||
tail -f "${DEBUG_LOG}" | grep 'UpdateTip' | awk 'NR % 10000 == 0' & | tail -f "${DEBUG_LOG}" | grep 'UpdateTip' | awk 'NR % 10000 == 0' & | ||||
callback() { | callback() { | ||||
echo "Initial block download complete." | echo "Initial block download complete." | ||||
# TODO Add more checks to see if IBD completed as expected, | # TODO Add more checks to see if IBD completed as expected. | ||||
# These checks will exit the subshell with a non-zero exit code. | # These checks will exit the subshell with a non-zero exit code. | ||||
} | } | ||||
export -f callback | export -f callback | ||||
TOPLEVEL=$(git rev-parse --show-toplevel) | |||||
LOG_FILE="${DEBUG_LOG}" "${TOPLEVEL}/contrib/devtools/bitcoind-exit-on-log.sh" --grep 'progress=1.000000' --params "-datadir=${DATA_DIR}" --callback callback | LOG_FILE="${DEBUG_LOG}" "${TOPLEVEL}/contrib/devtools/bitcoind-exit-on-log.sh" --grep 'progress=1.000000' --params "-datadir=${DATA_DIR}" --callback callback |