X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/fc30a5602e315037ee79daebd7b93afaff96ac36..HEAD:/build/run-build-packages.sh diff --git a/build/run-build-packages.sh b/build/run-build-packages.sh index e1363955a2..588ebedb92 100755 --- a/build/run-build-packages.sh +++ b/build/run-build-packages.sh @@ -9,7 +9,7 @@ read -rd "\000" helpmessage < [options] Options: @@ -18,7 +18,7 @@ Options: --debug Output debug information (default: false) --target - Distribution to build packages for (default: debian10) + Distribution to build packages for --only-build Build only a specific package (or ONLY_BUILD from environment) --arch @@ -47,8 +47,8 @@ VENDOR="The Arvados Project" DEBUG=${ARVADOS_DEBUG:-0} FORCE_BUILD=${FORCE_BUILD:-0} EXITCODE=0 -TARGET=debian10 COMMAND= +TARGET= PARSEDOPTS=$(getopt --name "$0" --longoptions \ help,build-bundle-packages,debug,target:,only-build:,arch:,force-build \ @@ -93,8 +93,16 @@ while [ $# -gt 0 ]; do shift done +if [[ -z "$TARGET" ]]; then + echo "FATAL: --target must be specified" >&2 + exit 2 +elif [[ ! -d "$WORKSPACE/build/package-build-dockerfiles/$TARGET" ]]; then + echo "FATAL: unknown build target '$TARGET'" >&2 + exit 2 +fi + if [[ "$COMMAND" != "" ]]; then - COMMAND="/usr/local/rvm/bin/rvm-exec default bash /jenkins/$COMMAND --target $TARGET" + COMMAND="bash /jenkins/$COMMAND --target $TARGET" fi STDOUT_IF_DEBUG=/dev/null @@ -106,8 +114,19 @@ if [[ "$DEBUG" != 0 ]]; then DASHQ_UNLESS_DEBUG= fi - -PYTHON3_EXECUTABLE=python3 +# The next section defines a bunch of constants used to build distro packages +# for our Python tools. Because those packages include C extensions, they need +# to depend on and refer to a specific minor version of Python 3. The logic +# below should Just Work for most cases, but you can override variables for a +# specific distro if you need to to do something weird. +# * PYTHON3_VERSION: The major+minor version of Python we build against +# (e.g., "3.11") +# * PYTHON3_EXECUTABLE: The command to run that version of Python, +# either a full path or something in $PATH (e.g., "python3.11") +# * PYTHON3_PACKAGE: The name of the distro package that provides +# $PYTHON3_EXECUTABLE. Our Python packages will all depend on this. +# * PYTHON3_PKG_PREFIX: The prefix used in the names of all of our Python +# packages. This should match distro convention. PYTHON3_PKG_PREFIX=python3 case "$TARGET" in centos*|rocky*) @@ -121,13 +140,14 @@ case "$TARGET" in exit 1 ;; esac -: "${PYTHON3_VERSION:=$("$PYTHON3_EXECUTABLE" -c 'import sys; print("{v.major}.{v.minor}".format(v=sys.version_info))')}" +: "${PYTHON3_VERSION:=$("${PYTHON3_EXECUTABLE:-python3}" -c 'import sys; print("{v.major}.{v.minor}".format(v=sys.version_info))')}" +: "${PYTHON3_EXECUTABLE:=python$PYTHON3_VERSION}" case "$FORMAT" in deb) : "${PYTHON3_PACKAGE:=python$PYTHON3_VERSION}" ;; rpm) - : "${PYTHON3_PACKAGE:=$(rpm -qf "$(command -v "python$PYTHON3_VERSION")" --queryformat '%{NAME}\n')}" + : "${PYTHON3_PACKAGE:=$(rpm -qf "$(command -v "$PYTHON3_EXECUTABLE")" --queryformat '%{NAME}\n')}" ;; esac @@ -161,13 +181,6 @@ fi debug_echo "$0 is running from $RUN_BUILD_PACKAGES_PATH" debug_echo "Workspace is $WORKSPACE" -if [[ -f /etc/profile.d/rvm.sh ]]; then - source /etc/profile.d/rvm.sh - GEM="rvm-exec default gem" -else - GEM=gem -fi - # Make all files world-readable -- jenkins runs with umask 027, and has checked # out our git tree here chmod o+r "$WORKSPACE" -R @@ -193,7 +206,7 @@ git config --global --add safe.directory /arvados # Ruby gems debug_echo -e "\nRuby gems\n" -FPM_GEM_PREFIX=$($GEM environment gemdir) +FPM_GEM_PREFIX=$(gem environment gemdir) cd "$WORKSPACE/sdk/ruby" || exit 1 handle_ruby_gem arvados @@ -222,8 +235,6 @@ package_go_binary cmd/arvados-server arvados-dispatch-cloud "$FORMAT" "$ARCH" \ "Arvados cluster cloud dispatch" package_go_binary cmd/arvados-server arvados-dispatch-lsf "$FORMAT" "$ARCH" \ "Dispatch Arvados containers to an LSF cluster" -package_go_binary cmd/arvados-server arvados-git-httpd "$FORMAT" "$ARCH" \ - "Provide authenticated http access to Arvados-hosted git repositories" package_go_binary services/crunch-dispatch-local crunch-dispatch-local "$FORMAT" "$ARCH" \ "Dispatch Crunch containers on the local system" package_go_binary cmd/arvados-server crunch-dispatch-slurm "$FORMAT" "$ARCH" \ @@ -258,27 +269,17 @@ package_go_so lib/pam pam_arvados.so libpam-arvados-go "$FORMAT" "$ARCH" \ # Python packages debug_echo -e "\nPython packages\n" -# The Python SDK - Python3 package +# Before a Python package can be built, its dependencies must already be built. +# This list is ordered accordingly. +setup_build_virtualenv +fpm_build_virtualenv cwltest "==2.3.20230108193615" "$FORMAT" "$ARCH" fpm_build_virtualenv "arvados-python-client" "sdk/python" "$FORMAT" "$ARCH" - -# Arvados cwl runner - Python3 package -fpm_build_virtualenv "arvados-cwl-runner" "sdk/cwl" "$FORMAT" "$ARCH" - -# The FUSE driver - Python3 package -fpm_build_virtualenv "arvados-fuse" "services/fuse" "$FORMAT" "$ARCH" - -# The Arvados crunchstat-summary tool fpm_build_virtualenv "crunchstat-summary" "tools/crunchstat-summary" "$FORMAT" "$ARCH" - -# The Docker image cleaner +fpm_build_virtualenv "arvados-cwl-runner" "sdk/cwl" "$FORMAT" "$ARCH" fpm_build_virtualenv "arvados-docker-cleaner" "services/dockercleaner" "$FORMAT" "$ARCH" - -# The Arvados user activity tool +fpm_build_virtualenv "arvados-fuse" "services/fuse" "$FORMAT" "$ARCH" fpm_build_virtualenv "arvados-user-activity" "tools/user-activity" "$FORMAT" "$ARCH" -# The cwltest package, which lives out of tree -handle_cwltest "$FORMAT" "$ARCH" - # Workbench2 package_workbench2