-# Usage: handle_workbench [amd64|arm64]
-handle_workbench () {
- local target_arch="${1:-amd64}"; shift
- if [[ -n "$ONLY_BUILD" ]] && [[ "$ONLY_BUILD" != "arvados-workbench" ]] ; then
- debug_echo -e "Skipping build of arvados-workbench package."
- return 0
- fi
-
- native_arch=$(get_native_arch)
- if [[ "$target_arch" != "$native_arch" ]]; then
- echo "Error: no cross compilation support for Rails yet, can not build arvados-workbench for $native_arch"
- echo
- exit 1
- fi
-
- if [[ "$native_arch" != "amd64" ]]; then
- echo "Error: building the arvados-workbench package is not yet supported on this architecture ($native_arch)."
- echo
- exit 1
- fi
-
- # Build the workbench server package
- test_rails_package_presence arvados-workbench "$WORKSPACE/apps/workbench"
- if [[ "$?" == "0" ]] ; then
- calculate_go_package_version arvados_server_version cmd/arvados-server
- arvados_server_iteration=$(default_iteration "arvados-server" "$arvados_server_version" "go")
-
- (
- set -e
-
- # The workbench package has a build-time dependency on the arvados-server
- # package for config manipulation, so install it first.
- cd $WORKSPACE/cmd/arvados-server
- get_complete_package_name arvados_server_pkgname arvados-server ${arvados_server_version} go
-
- arvados_server_pkg_path="$WORKSPACE/packages/$TARGET/${arvados_server_pkgname}"
- if [[ ! -e ${arvados_server_pkg_path} ]]; then
- arvados_server_pkg_path="$WORKSPACE/packages/$TARGET/processed/${arvados_server_pkgname}"
- fi
- if [[ "$FORMAT" == "deb" ]]; then
- dpkg -i ${arvados_server_pkg_path}
- else
- rpm -i ${arvados_server_pkg_path}
- fi
-
- cd "$WORKSPACE/apps/workbench"
-
- # We need to bundle to be ready even when we build a package without vendor directory
- # because asset compilation requires it.
- bundle config set --local system 'true' >"$STDOUT_IF_DEBUG"
- bundle install >"$STDOUT_IF_DEBUG"
-
- # clear the tmp directory; the asset generation step will recreate tmp/cache/assets,
- # and we want that in the package, so it's easier to not exclude the tmp directory
- # from the package - empty it instead.
- rm -rf tmp
- mkdir tmp
-
- # Set up an appropriate config.yml
- arvados-server config-dump -config <(cat /etc/arvados/config.yml 2>/dev/null || echo "Clusters: {zzzzz: {}}") > /tmp/x
- mkdir -p /etc/arvados/
- mv /tmp/x /etc/arvados/config.yml
- perl -p -i -e 'BEGIN{undef $/;} s/WebDAV(.*?):\n( *)ExternalURL: ""/WebDAV$1:\n$2ExternalURL: "example.com"/g' /etc/arvados/config.yml
-
- ARVADOS_CONFIG=none RAILS_ENV=production RAILS_GROUPS=assets bin/rake npm:install >"$STDOUT_IF_DEBUG"
- ARVADOS_CONFIG=none RAILS_ENV=production RAILS_GROUPS=assets bin/rake assets:precompile >"$STDOUT_IF_DEBUG"
-
- # Remove generated configuration files so they don't go in the package.
- rm -rf /etc/arvados/
- )
-
- if [[ "$?" != "0" ]]; then
- echo "ERROR: Asset precompilation failed"
- EXITCODE=1
- else
- handle_rails_package arvados-workbench "$WORKSPACE/apps/workbench" \
- "$WORKSPACE/agpl-3.0.txt" --url="https://arvados.org" \
- --description="Arvados Workbench - Arvados is a free and open source platform for big data science." \
- --license="GNU Affero General Public License, version 3.0" --depends "arvados-server = ${arvados_server_version}-${arvados_server_iteration}"
- fi
- fi
-}
-
-# Usage: handle_cwltest [deb|rpm] [amd64|arm64]
-handle_cwltest () {
- local package_format="$1"; shift
- local target_arch="${1:-amd64}"; shift
-
- if [[ -n "$ONLY_BUILD" ]] && [[ "$ONLY_BUILD" != "python3-cwltest" ]] ; then
- debug_echo -e "Skipping build of cwltest package."
- return 0
- fi
- cd "$WORKSPACE"
- if [[ -e "$WORKSPACE/cwltest" ]]; then
- rm -rf "$WORKSPACE/cwltest"
- fi
- git clone https://github.com/common-workflow-language/cwltest.git
-
- # The subsequent release of cwltest confirms that files exist on disk, since
- # our files are in Keep, all the tests fail.
- # We should add [optional] Arvados support to cwltest so it can access
- # Keep but for the time being just package the last working version.
- (cd cwltest && git checkout 2.3.20230108193615)
-
- # signal to our build script that we want a cwltest executable installed in /usr/bin/
- mkdir cwltest/bin && touch cwltest/bin/cwltest
- fpm_build_virtualenv "cwltest" "cwltest" "$package_format" "$target_arch"
- # The python->python3 metapackage
- build_metapackage "cwltest" "cwltest"
- cd "$WORKSPACE"
- rm -rf "$WORKSPACE/cwltest"
-}
-