#!/bin/bash
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
# A library of functions shared by the various scripts in this directory.
# older packages.
LICENSE_PACKAGE_TS=20151208015500
+RAILS_PACKAGE_ITERATION=8
+
debug_echo () {
echo "$@" >"$STDOUT_IF_DEBUG"
}
mkdir -p "$GOPATH/src/git.curoverse.com"
ln -sfn "$WORKSPACE" "$GOPATH/src/git.curoverse.com/arvados.git"
+ (cd "$GOPATH/src/git.curoverse.com/arvados.git" && "$GOPATH/bin/govendor" sync -v)
cd "$GOPATH/src/git.curoverse.com/arvados.git/$src_path"
local version="$(version_from_git)"
local timestamp="$(timestamp_from_git)"
- # If the command imports anything from the Arvados SDK, bump the
- # version number and build a new package whenever the SDK changes.
+ # Update the version number and build a new package if the vendor
+ # bundle has changed, or the command imports anything from the
+ # Arvados SDK and the SDK has changed.
+ declare -a checkdirs=(vendor)
if grep -qr git.curoverse.com/arvados .; then
- cd "$GOPATH/src/git.curoverse.com/arvados.git/sdk/go"
- if [[ $(timestamp_from_git) -gt "$timestamp" ]]; then
+ checkdirs+=(sdk/go)
+ fi
+ for dir in ${checkdirs[@]}; do
+ cd "$GOPATH/src/git.curoverse.com/arvados.git/$dir"
+ ts="$(timestamp_from_git)"
+ if [[ "$ts" -gt "$timestamp" ]]; then
version=$(version_from_git)
+ timestamp="$ts"
fi
- fi
+ done
cd $WORKSPACE/packages/$TARGET
test_package_presence $prog $version go
deb_architecture="amd64"
if [[ "$pkgtype" =~ ^(python|python3)$ ]]; then
- rpm_architecture="all"
+ rpm_architecture="noarch"
deb_architecture="all"
fi
deb_architecture="all"
fi
- # These packages have binary components
+ # These python packages have binary components
if [[ "$pkgname" =~ (ruamel|ciso|pycrypto|pyyaml) ]]; then
rpm_architecture="x86_64"
deb_architecture="amd64"
local complete_pkgname="$pkgname-$version-$iteration.$rpm_architecture.rpm"
fi
- if [[ -e "$complete_pkgname" ]]; then
+ # See if we can skip building the package, only if it already exists in the
+ # processed/ directory. If so, move it back to the packages directory to make
+ # sure it gets picked up by the test and/or upload steps.
+ if [[ -e "processed/$complete_pkgname" ]]; then
echo "Package $complete_pkgname exists, not rebuilding!"
+ mv processed/$complete_pkgname .
return 1
else
echo "Package $complete_pkgname not found, building"
FPM_EXIT_CODE=$?
fpm_verify $FPM_EXIT_CODE $FPM_RESULTS
+
+ # if something went wrong and debug is off, print out the fpm command that errored
+ if [[ 0 -ne $? ]] && [[ "$STDOUT_IF_DEBUG" == "/dev/null" ]]; then
+ echo -e "\n${COMMAND_ARR[@]}\n"
+ fi
}
# verify build results
if [[ "$FPM_PACKAGE_NAME" == "" ]]; then
EXITCODE=1
+ echo
echo "Error: $PACKAGE: Unable to figure out package name from fpm results:"
echo
echo $FPM_RESULTS
echo
+ return 1
elif [[ "$FPM_RESULTS" =~ "File already exists" ]]; then
echo "Package $FPM_PACKAGE_NAME exists, not rebuilding"
+ return 0
elif [[ 0 -ne "$FPM_EXIT_CODE" ]]; then
+ EXITCODE=1
echo "Error building package for $1:\n $FPM_RESULTS"
+ return 1
fi
}