Handle errors better in generate_citus_tarballs.sh

Normally our bash scripts fail when a command fails because we make sure
they contain `set -e`. In `generate_citus_tarballs.sh` this didn't work
well though due the actual commands being inside of functions and
sometimes being chained using `&&`. This could make us miss certain
errors, and be very confused when it then failed in a different way
later. This happened when debugging the flaky test job in #7218.
pull/7237/head
Jelte Fennema-Nio 2023-09-25 14:04:28 +02:00 committed by Nils Dijk
parent 58fef24142
commit 8cce21d882
1 changed files with 29 additions and 28 deletions

View File

@ -3,32 +3,13 @@
set -euxo pipefail set -euxo pipefail
pg_version=$1 pg_version=$1
citus_old_version=$2 citus_version=$2
base="$(pwd)" base="$(pwd)"
install_citus_and_tar() {
# do everything in a subdirectory to avoid clutter in current directory
mkdir -p "${builddir}" && cd "${builddir}"
"${citus_dir}/configure" --without-libcurl
installdir="${builddir}/install"
make "-j$(nproc)" && mkdir -p "${installdir}" && make DESTDIR="${installdir}" install
cd "${installdir}" && find . -type f -print >"${builddir}/files.lst"
tar cvf "${basedir}/install-pg${pg_version}-citus${citus_version}.tar" $(cat "${builddir}"/files.lst)
mv "${basedir}/install-pg${pg_version}-citus${citus_version}.tar" "${base}/install-pg${pg_version}-citus${citus_version}.tar"
cd "${builddir}" && rm -rf install files.lst && make clean
}
build_ext() {
citus_version="$1"
# If tarball already exsists we're good # If tarball already exsists we're good
if [ -f "${base}/install-pg${pg_version}-citus${citus_version}.tar" ]; then if [ -f "${base}/install-pg${pg_version}-citus${citus_version}.tar" ]; then
return exit 0
fi fi
basedir="${base}/${citus_version}" basedir="${base}/${citus_version}"
@ -40,7 +21,27 @@ build_ext() {
git clone --branch "$citus_version" https://github.com/citusdata/citus.git --depth 1 citus_"$citus_version" git clone --branch "$citus_version" https://github.com/citusdata/citus.git --depth 1 citus_"$citus_version"
builddir="${basedir}/build" builddir="${basedir}/build"
install_citus_and_tar # do everything in a subdirectory to avoid clutter in current directory
} mkdir -p "${builddir}"
cd "${builddir}"
"${citus_dir}/configure" --without-libcurl
installdir="${builddir}/install"
make "-j$(nproc)"
mkdir -p "${installdir}"
make DESTDIR="${installdir}" install
cd "${installdir}"
find . -type f -print >"${builddir}/files.lst"
cd "${builddir}"
tar cvf "${basedir}/install-pg${pg_version}-citus${citus_version}.tar" $(cat "${builddir}"/files.lst)
mv "${basedir}/install-pg${pg_version}-citus${citus_version}.tar" "${base}/install-pg${pg_version}-citus${citus_version}.tar"
cd "${builddir}"
rm -rf install files.lst
make clean
build_ext "${citus_old_version}"