mp-buildbot: Fix SC warnings, improve err handling

Fix or disable all remaining ShellCheck warnings, add and/or improve error
handling, make sure everything is properly quoted.

git-svn-id: https://svn.macports.org/repository/macports/contrib/mp-buildbot@151475 d073be05-634f-4543-b044-5fe20cf6d1d6
This commit is contained in:
Clemens Lang
2016-08-16 22:22:14 +00:00
parent 9378092dd0
commit 033f19021e
6 changed files with 72 additions and 25 deletions
+4 -4
View File
@@ -10,15 +10,15 @@ cleanup-help() {
cleanup() {
echo "----> Deactivating ports"
# $option_prefix is set by mpbb
# shellcheck disable=SC2154
# $option_prefix is set by mpbb
# shellcheck disable=SC2154
if [ -n "$("${option_prefix}/bin/port" -q installed active)" ]; then
"${option_prefix}/bin/port" -fp deactivate active
fi
echo
echo "----> Uninstalling obsolete ports"
# $thisdir is set by mpbb and points to the directory in which this script resides
# shellcheck disable=SC2154
# $thisdir is set by mpbb and points to the directory in which this script resides
# shellcheck disable=SC2154
"${option_prefix}/bin/port-tclsh" "${thisdir}/tools/uninstall-old-ports.tcl"
echo
echo "----> Deleting distfiles"
+8
View File
@@ -11,8 +11,12 @@ gather-archives-help() {
gather-archives() {
curl=/usr/bin/curl
# $option_prefix is set in mpbb
# shellcheck disable=SC2154
tclsh=${option_prefix}/bin/port-tclsh
# $option_staging_dir is set in mpbb
# shellcheck disable=SC2154
if [ -d "${option_staging_dir}" ]; then
find "${option_staging_dir}" -type f -delete -print | sed -E -e "s|^.*/||" -e 's/^/Deleting previously staged archive: /'
rm -rf "${option_staging_dir}"
@@ -26,7 +30,11 @@ gather-archives() {
archive_port=$(basename "$(dirname "${archive_path}")")
archive_basename=$(basename "${archive_path}")
# $option_archive_site is set in mpbb
# shellcheck disable=SC2154
if ! ${curl} -fIsL "${option_archive_site}/${archive_port}/${archive_basename}" > /dev/null; then
# $option_workdir is set in mpbb
# shellcheck disable=SC2154
if "${tclsh}" "${option_workdir}/tools/port_binary_distributable.tcl" -v "${archive_port}"; then
echo "Staging archive for upload: ${archive_basename}"
mkdir -p "${option_staging_dir}/${archive_port}" || { status=$?; break; }
+8 -2
View File
@@ -13,10 +13,12 @@ install-dependencies() {
local dependencies
local dependencies_count
local dependencies_counter
# $option_logdir is set in mpbb
# shellcheck disable=SC2154
local log_status_dependencies="${option_logdir}/dependencies-progress.txt"
local log_subports_progress="${option_logdir}/ports-progress.txt"
if [ -z "${option_port}" ]; then
if [ -z "${option_port:-}" ]; then
errmsg "--port is required"
return 1
fi
@@ -26,6 +28,8 @@ install-dependencies() {
> "$log_status_dependencies"
# calculate list of dependencies in-order
# $option_prefix and $thisdir are set in mpbb
# shellcheck disable=SC2154
dependencies=$("${option_prefix}/bin/port-tclsh" "${thisdir}/tools/dependencies.tcl" "${option_port}")
if [ $? -ne 0 ]; then
echo "Calculating dependencies for '${option_port}' failed, aborting." >&2
@@ -51,7 +55,7 @@ install-dependencies() {
echo >> "$log_status_dependencies"
echo "$dependencies" | while read dependency; do
echo "$dependencies" | while read -r dependency; do
# Split portname +variant1+variant2 into portname and variants, where
# the variants are optional.
depname=${dependency%% *}
@@ -60,6 +64,8 @@ install-dependencies() {
text="Installing dependency ($dependencies_counter of $dependencies_count) '${depname}' with variants '${depvariants}'"
echo "----> ${text}"
echo -n "${text} ... " >> "$log_status_dependencies"
# $depvariants isn't quoted on purpose
# shellcheck disable=SC2086
if ! "${option_prefix}/bin/port" -d install --unrequested "$depname" $depvariants; then
echo "Build of dependency '${depname}' failed, aborting." >&2
echo "[FAIL]" >> "$log_status_dependencies"
+40 -15
View File
@@ -10,12 +10,14 @@ install-port-help() {
}
install-port() {
# $option_logdir is set in mpbb
# shellcheck disable=SC2154
local log_port_contents="${option_logdir}/port-contents.txt"
local log_port_stats="${option_logdir}/port-statistics.txt"
local log_port_main="${option_logdir}/main.log"
local log_subports_progress="${option_logdir}/ports-progress.txt"
if [ -z "${option_port}" ]; then
if [ -z "${option_port:-}" ]; then
errmsg "--port is required"
return 1
fi
@@ -28,13 +30,17 @@ install-port() {
# log: summary for the portwatcher
echo -n "- Installing ${option_port} ... " >> "$log_subports_progress"
local time_start=$(date +%s)
local time_start
local time_stop
time_start=$(date +%s)
# $option_prefix is set in mpbb
# shellcheck disable=SC2154
if ! "${option_prefix}/bin/port" -dk install "${option_port}"; then
echo "Build of '${option_port}' failed."
echo "[FAIL]" >> "$log_subports_progress"
return 1
fi
local time_stop=$(date +%s)
time_stop=$(date +%s)
echo "[OK]" >> "$log_subports_progress"
@@ -44,22 +50,41 @@ install-port() {
# TODO: printing statistics (and installing the port + dependencies)
# only makes sense when the port hasn't been installed previously
# log: statistics
echo "time: $(($time_stop - $time_start))s" >> "$log_port_stats"
echo "time: $((time_stop - time_start))s" >> "$log_port_stats"
local port_workdir=$("${option_prefix}/bin/port" work "${option_port}")
local port_workdir_size=$(du -ks "$port_workdir" | sed 's/^ *//' | tr '\t' '\n' | head -n 1)
echo "workdir: ${port_workdir_size}k" >> "$log_port_stats"
local port_destdir="$port_workdir/destroot"
if [ -d "$port_destdir" ]; then
local port_destdir_size=$(du -ks "$port_destdir" | sed 's/^ *//' | tr '\t' '\n' | head -n 1)
echo "destdir: ${port_destdir_size}k" >> "$log_port_stats"
else
echo "destdir: -" >> "$log_port_stats"
local port_workdir
local port_workdir_size=""
local port_destdir_size=""
local print_arg_workdir="ERROR"
local print_arg_destdir="ERROR"
# First, compute port_workdir_size and port_destdir_size
port_workdir=$("${option_prefix}/bin/port" work "${option_port}")
if [ -n "$port_workdir" ]; then
port_workdir_size=$(du -ks "$port_workdir" | sed 's/^ *//' | tr '\t' '\n' | head -n 1)
if [ $? -eq 0 ] && [ -n "$port_workdir_size" ]; then
print_arg_workdir="${port_workdir_size}k"
fi
local port_destdir="$port_workdir/destroot"
# if we arrive here, 'port work $option_port' was successful, so we're
# at least going to print 'destdir: -'
print_arg_destdir="-"
if [ -d "$port_destdir" ]; then
port_destdir_size=$(du -ks "$port_destdir" | sed 's/^ *//' | tr '\t' '\n' | head -n 1)
if [ $? -eq 0 ] && [ -n "$port_destdir_size" ]; then
print_arg_destdir="${port_destdir_size}k"
fi
fi
fi
# Then print them, or on error (or if destdir doesn't exist), print the
# appropriate message
echo "workdir: $print_arg_workdir" >> "$log_port_stats"
echo "destdir: $print_arg_destdir" >> "$log_port_stats"
# log: main.log
local port_mainlog=$("${option_prefix}/bin/port" logfile "${option_port}")
if [ -f $port_mainlog ]; then
local port_mainlog
port_mainlog=$("${option_prefix}/bin/port" logfile "${option_port}")
if [ $? -eq 0 ] && [ -f "$port_mainlog" ]; then
cp -f "$port_mainlog" "$log_port_main"
fi
}
+8 -2
View File
@@ -18,10 +18,14 @@ print-subports() {
local exclude
local exclude_reasons
local reason
# $option_logdir is set in mpbb
# shellcheck disable=SC2154
local log_subports_progress="${option_logdir}/ports-progress.txt"
os_version="$(sw_vers -productVersion | cut -d . -f 1-2)"
is_64bit_capable="$(sysctl -n hw.cpu64bit_capable)"
# $optoin_prefix is set in mpbb
# shellcheck disable=SC2154
ports=$("${option_prefix}/bin/port" -q info --index --line --name "${portname}" "subportof:${portname}" 2>/dev/null) || return $?
for port in $ports; do
exclude=0
@@ -31,6 +35,8 @@ print-subports() {
exclude=1
exclude_reasons+=("its name contains 'graveyard'")
else
# $thisdir is set in mpbb
# shellcheck disable=SC2154
for portgroup in $("${option_prefix}/bin/port-tclsh" "${thisdir}/tools/portgroups.tcl" "$port"); do
if [ "$portgroup" = "obsolete-1.0" ]; then
exclude=1
@@ -41,7 +47,7 @@ print-subports() {
if [[ $exclude -eq 0 && "${os_version}" = "10.6" && "${is_64bit_capable}" = "0" ]]; then
supported_archs=$("${option_prefix}/bin/port-tclsh" "${thisdir}/tools/supported-archs.tcl" "${port}")
if [[ -n "${supported_archs}" && !("${supported_archs}" == *"x86_64"* && "${supported_archs}" == *"i386"*) ]]; then
if [[ -n "${supported_archs}" && ! ("${supported_archs}" == *"x86_64"* && "${supported_archs}" == *"i386"*) ]]; then
exclude=1
exclude_reasons+=("the ${os_version}_x86_64 builder will build it")
fi
@@ -69,7 +75,7 @@ print-subports() {
list-subports() {
local log_subports_progress="${option_logdir}/ports-progress.txt"
if [ $# -le 0 -a -z "${option_port}" ]; then
if [ $# -le 0 ] && [ -z "${option_port:-}" ]; then
errmsg "Either --port or a list of positional arguments with port names is required."
return 1
fi
+4 -2
View File
@@ -9,6 +9,8 @@ selfupdate-help() {
}
selfupdate() {
# $option_prefix is set in mpbb
# shellcheck disable=SC2154
if [ ! -f "${option_prefix}/bin/port" ]; then
macports_version=2.3.4
macports_distname=MacPorts-${macports_version}
@@ -20,8 +22,8 @@ selfupdate() {
tar -xjf ${macports_distfile} || return $?
fi
cd ${macports_distname} || return $?
./configure --prefix=${option_prefix} --enable-readline || return $?
make -j$(sysctl -n hw.activecpu) || return $?
./configure --prefix="${option_prefix}" --enable-readline || return $?
make -j"$(sysctl -n hw.activecpu)" || return $?
make install || return $?
cd .. || return $?
rm -rf ${macports_distfile} ${macports_distname} || return $?