Page MenuHomePhabricator

No OneTemporary

diff --git a/scripts/fetch_documentation.sh b/scripts/fetch_documentation.sh
index e657877..279abdf 100755
--- a/scripts/fetch_documentation.sh
+++ b/scripts/fetch_documentation.sh
@@ -1,156 +1,168 @@
#!/usr/bin/env bash
set -euxo pipefail
# Github repository parameters
GITHUB_OWNER='Bitcoin-ABC'
GITHUB_REPO='bitcoin-abc'
# Max number of release versions to display
MAX_RELEASES=15
# Min version for rpc docs generation
MIN_VERSION_RPC_DOCS='0.22.1'
# Min version for man pages generation
MIN_VERSION_MAN_PAGES='0.22.1'
SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd)
TOPLEVEL=$(git -C "${SCRIPT_DIR}" rev-parse --show-toplevel)
# Get the last MAX_RELEASES releases
RELEASES=$(curl -L -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/${GITHUB_OWNER}/${GITHUB_REPO}/releases?per_page=${MAX_RELEASES})
# Extract releases version number
RELEASE_VERSIONS=($(echo ${RELEASES} | jq -r .[].name))
# Extract releases version number
RELEASE_TAGS=($(echo ${RELEASES} | jq -r .[].tag_name))
# Create the cache directory as needed. This is where the sources will be
# cloned, and where the docs will be built.
: "${CACHE_DIR:=${TOPLEVEL}/.user-doc-cache}"
mkdir -p "${CACHE_DIR}"
SRC_DIR="${CACHE_DIR}/${GITHUB_REPO}"
if [ ! -d "${SRC_DIR}" ]
then
git clone "https://github.com/${GITHUB_OWNER}/${GITHUB_REPO}.git" "${SRC_DIR}"
fi
pushd "${SRC_DIR}"
git pull --tags origin master
popd
version_greater_equal()
{
printf '%s\n%s\n' "$2" "$1" | sort -V -C
}
for i in "${!RELEASE_VERSIONS[@]}"
do
VERSION="${RELEASE_VERSIONS[$i]}"
TAG="${RELEASE_TAGS[$i]}"
if version_greater_equal "${VERSION}" "${MIN_VERSION_RPC_DOCS}"
then
BUILD_RPC_DOCS="yes"
else
BUILD_RPC_DOCS="no"
fi
if version_greater_equal "${VERSION}" "${MIN_VERSION_MAN_PAGES}"
then
BUILD_MAN_PAGES="yes"
else
BUILD_MAN_PAGES="no"
fi
if [ "${BUILD_RPC_DOCS}" = "no" ] && [ "${BUILD_MAN_PAGES}" = "no" ]
then
continue
fi
# Checkout the release tag
pushd "${SRC_DIR}"
git checkout "tags/${TAG}"
popd
# Prepare some directories
WEBSITE_DIR="${TOPLEVEL}/_doc/${VERSION}"
mkdir -p "${WEBSITE_DIR}"
VERSION_DIR="${CACHE_DIR}/${VERSION}"
mkdir -p "${VERSION_DIR}"
BUILD_DIR="${SRC_DIR}/build_${VERSION}"
mkdir -p "${BUILD_DIR}"
INSTALL_DIR="${BUILD_DIR}/install"
mkdir -p "${INSTALL_DIR}"
pushd "${BUILD_DIR}"
if [ "${BUILD_RPC_DOCS}" = "yes" ] && [ ! -d "${VERSION_DIR}/rpc" ]
then
# Build and install the release version
cmake -GNinja "${SRC_DIR}" -DCLIENT_VERSION_IS_RELEASE=ON -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}"
- ninja install/strip
-
- BITCOIND_PID_FILE="${VERSION_DIR}/bitcoind_${VERSION}.pid"
- "${INSTALL_DIR}"/bin/bitcoind -regtest -daemon -pid="${BITCOIND_PID_FILE}"
-
- echo "Waiting for bitcoind to spin up..."
- READY="no"
- for _ in {1..5}; do
- if "${INSTALL_DIR}"/bin/bitcoin-cli -regtest help > /dev/null ; then
- READY="yes"
- break
- fi
- sleep 1
- done
-
- if [ "${READY}" != "yes" ]; then
- echo "Error: bitcoind is not ready or was not started"
- exit 1
- fi
- ninja doc-rpc
-
- "${INSTALL_DIR}"/bin/bitcoin-cli -regtest stop
-
- PID_WAIT_COUNT=0
- echo "Waiting for bitcoind shut down..."
- while [ -e "${BITCOIND_PID_FILE}" ]
- do
- ((PID_WAIT_COUNT+=1))
- if [ "${PID_WAIT_COUNT}" -gt 20 ]
- then
- echo "Timed out waiting for bitcoind to stop"
- exit 2
- fi
- sleep 0.5
- done
+ # Prior to version 0.22.2, the rpc-doc target required to manually spin a
+ # regtest bitcoind server.
+ if version_greater_equal "${VERSION}" "0.22.2"
+ then
+ ninja doc-rpc
+ else
+ # FIXME Remove the else branch after versions < 0.22.2 are obsolete
+ (
+ ninja install/strip
+
+ BITCOIND_PID_FILE="${VERSION_DIR}/bitcoind_${VERSION}.pid"
+ "${INSTALL_DIR}"/bin/bitcoind -regtest -daemon -pid="${BITCOIND_PID_FILE}"
+
+ shutdown_bitcoind() {
+ "${INSTALL_DIR}"/bin/bitcoin-cli -regtest stop > /dev/null 2>&1
+
+ # Waiting for bitcoind shut down
+ PID_WAIT_COUNT=0
+ while [ -e "${BITCOIND_PID_FILE}" ]
+ do
+ : $((PID_WAIT_COUNT+=1))
+ if [ "${PID_WAIT_COUNT}" -gt 20 ]
+ then
+ echo "Timed out waiting for bitcoind to stop"
+ exit 3
+ fi
+ sleep 0.5
+ done
+ }
+ trap "shutdown_bitcoind" EXIT
+
+ # Waiting for bitcoind to spin up
+ RPC_HELP_WAIT_COUNT=0
+ while ! "${INSTALL_DIR}"/bin/bitcoin-cli -regtest help > /dev/null 2>&1
+ do
+ : $((RPC_HELP_WAIT_COUNT+=1))
+ if [ "${RPC_HELP_WAIT_COUNT}" -gt 10 ]
+ then
+ echo "Timed out waiting for bitcoind to start"
+ exit 2
+ fi
+ sleep 0.5
+ done
+
+ ninja doc-rpc
+ )
+ fi
# Cache the result
cp -R "${BUILD_DIR}/doc/rpc/en/${VERSION}/rpc" "${VERSION_DIR}/"
fi
if [ "${BUILD_MAN_PAGES}" = "yes" ] && [ ! -d "${VERSION_DIR}/man" ]
then
# Build and install the man pages
cmake -GNinja "${SRC_DIR}" -DCLIENT_VERSION_IS_RELEASE=ON -DCMAKE_INSTALL_PREFIX="${INSTALL_DIR}"
ninja install-manpages-html
mkdir -p "${VERSION_DIR}/man"
# Cache the result
cp "${INSTALL_DIR}"/share/man/html/* "${VERSION_DIR}/man/"
fi
popd
# Copy everything from the cache to the website directory
cp -R "${VERSION_DIR}"/* "${WEBSITE_DIR}/"
done

File Metadata

Mime Type
text/x-diff
Expires
Thu, Apr 17, 03:21 (13 h, 12 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5508687
Default Alt Text
(5 KB)

Event Timeline