X-Git-Url: https://git.arvados.org/arvados-dev.git/blobdiff_plain/846a9311a328b9cbadc8b70d34134b72b0b6b332..1659fd3eca62ac51e7628af3464dd03787e2d84f:/jenkins/run-library.sh diff --git a/jenkins/run-library.sh b/jenkins/run-library.sh index 3c62d7b..c2e9b40 100755 --- a/jenkins/run-library.sh +++ b/jenkins/run-library.sh @@ -148,8 +148,8 @@ handle_rails_package() { local -a pos_args=("$srcdir/=$railsdir" "$pkgname" "Curoverse, Inc." dir "$(cat "$version_file")") local license_arg="$license_path=$railsdir/$(basename "$license_path")" - # --iteration=3 accommodates the package scripts change from #8014. - local -a switches=(--iteration=3 + # --iteration=5 accommodates the package script bugfixes #8371 and #8413. + local -a switches=(--iteration=5 --after-install "$scripts_dir/postinst" --before-remove "$scripts_dir/prerm" --after-remove "$scripts_dir/postrm") @@ -157,8 +157,13 @@ handle_rails_package() { local exclude_root="${railsdir#/}" # .git and packages are for the SSO server, which is built from its # repository root. - for exclude in .git packages tmp log coverage \ - Capfile\* config/deploy\*; do + local -a exclude_list=(.git packages tmp log coverage Capfile\* \ + config/deploy\* config/application.yml) + # for arvados-workbench, we need to have the (dummy) config/database.yml in the package + if [[ "$pkgname" != "arvados-workbench" ]]; then + exclude_list+=('config/database.yml') + fi + for exclude in ${exclude_list[@]}; do switches+=(-x "$exclude_root/$exclude") done fpm_build "${pos_args[@]}" "${switches[@]}" \ @@ -212,6 +217,16 @@ fpm_build () { declare -a COMMAND_ARR=("fpm" "--maintainer=Ward Vandewege " "-s" "$PACKAGE_TYPE" "-t" "$FORMAT") if [ python = "$PACKAGE_TYPE" ]; then COMMAND_ARR+=(--exclude=\*/{dist,site}-packages/tests/\*) + if [ deb = "$FORMAT" ]; then + # Dependencies are built from setup.py. Since setup.py will never + # refer to Debian package iterations, it doesn't make sense to + # enforce those in the .deb dependencies. + COMMAND_ARR+=(--deb-ignore-iteration-in-dependencies) + fi + fi + + if [[ "${DEBUG:-0}" != "0" ]]; then + COMMAND_ARR+=('--verbose' '--log' 'info') fi if [[ "$PACKAGE_NAME" != "$PACKAGE" ]]; then @@ -237,19 +252,50 @@ fpm_build () { # the package source dir. These are added last so they can override # the arguments added by this script. declare -a fpm_args=() + declare -a build_depends=() declare -a fpm_depends=() + declare -a fpm_exclude=() + FPM_INFO="" if [[ -d "$PACKAGE_DIR" ]]; then FPM_INFO="$PACKAGE_DIR/fpm-info.sh" - else + elif [[ -e "${WORKSPACE}/backports/${PACKAGE_TYPE}-${PACKAGE}/fpm-info.sh" ]]; then FPM_INFO="${WORKSPACE}/backports/${PACKAGE_TYPE}-${PACKAGE}/fpm-info.sh" + debug_echo "Found fpm-info.sh in backports: $FPM_INFO" + elif [[ -e "${WORKSPACE}/backports/${PACKAGE_TYPE}-${PACKAGE_NAME}/fpm-info.sh" ]]; then + FPM_INFO="${WORKSPACE}/backports/${PACKAGE_TYPE}-${PACKAGE_NAME}/fpm-info.sh" fi if [[ -e "$FPM_INFO" ]]; then debug_echo "Loading fpm overrides from $FPM_INFO" source "$FPM_INFO" fi + for pkg in "${build_depends[@]}"; do + if [[ $TARGET =~ debian|ubuntu ]]; then + pkg_deb=$(ls "$WORKSPACE/packages/$TARGET/$pkg_"*.deb | sort -rg | awk 'NR==1') + if [[ -e $pkg_deb ]]; then + echo "Installing build_dep $pkg from $pkg_deb" + dpkg -i "$pkg_deb" + else + echo "Attemping to install build_dep $pkg using apt-get" + apt-get install -y "$pkg" + fi + apt-get -y -f install + else + pkg_rpm=$(ls "$WORKSPACE/packages/$TARGET/$pkg"-[0-9]*.rpm | sort -rg | awk 'NR==1') + if [[ -e $pkg_rpm ]]; then + echo "Installing build_dep $pkg from $pkg_rpm" + rpm -i "$pkg_rpm" + else + echo "Attemping to install build_dep $pkg" + rpm -i "$pkg" + fi + fi + done for i in "${fpm_depends[@]}"; do COMMAND_ARR+=('--depends' "$i") done + for i in "${fpm_exclude[@]}"; do + COMMAND_ARR+=('--exclude' "$i") + done # Append remaining function arguments directly to fpm's command line. for i; do