X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/f763868dd1202328576e4b393b71bb584190ee39..dcb4760843cc0ed4647e8eaa43abb5d2f049cd0c:/build/run-library.sh diff --git a/build/run-library.sh b/build/run-library.sh index 51678e6ed8..fb4df6a792 100755 --- a/build/run-library.sh +++ b/build/run-library.sh @@ -58,15 +58,16 @@ version_from_git() { fi declare $(format_last_commit_here "git_ts=%ct git_hash=%h") - echo "${prefix}.$(date -ud "@$git_ts" +%Y%m%d%H%M%S).$git_hash" -} + ARVADOS_BUILDING_VERSION="$(git describe --abbrev=0).$(date -ud "@$git_ts" +%Y%m%d%H%M%S)" + echo "$ARVADOS_BUILDING_VERSION" +} nohash_version_from_git() { if [[ -n "$ARVADOS_BUILDING_VERSION" ]]; then echo "$ARVADOS_BUILDING_VERSION" return fi - version_from_git $1 | cut -d. -f1-3 + version_from_git $1 | cut -d. -f1-4 } timestamp_from_git() { @@ -129,6 +130,9 @@ package_go_binary() { declare -a checkdirs=(vendor) if grep -qr git.curoverse.com/arvados .; then checkdirs+=(sdk/go) + if [[ "$prog" -eq "crunch-dispatch-slurm" ]]; then + checkdirs+=(lib/dispatchcloud) + fi fi for dir in ${checkdirs[@]}; do cd "$GOPATH/src/git.curoverse.com/arvados.git/$dir" @@ -148,7 +152,7 @@ package_go_binary() { go get -ldflags "-X main.version=${version}" "git.curoverse.com/arvados.git/$src_path" - declare -a switches=() + local -a switches=() systemd_unit="$WORKSPACE/${src_path}/${prog}.service" if [[ -e "${systemd_unit}" ]]; then switches+=( @@ -221,7 +225,9 @@ test_package_presence() { return 1 fi - iteration="$(default_iteration "$pkgname" "$version" "$pkgtype")" + if [[ "$iteration" == "" ]]; then + iteration="$(default_iteration "$pkgname" "$version" "$pkgtype")" + fi if [[ "$arch" == "" ]]; then rpm_architecture="x86_64" @@ -258,13 +264,42 @@ test_package_presence() { # 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 + # Get the list of packages from the repos + + if [[ "$FORMAT" == "deb" ]]; then + debian_distros="jessie precise stretch trusty wheezy xenial" + + for D in ${debian_distros}; do + if [ ${pkgname:0:3} = "lib" ]; then + repo_subdir=${pkgname:0:4} + else + repo_subdir=${pkgname:0:1} + fi + + repo_pkg_list=$(curl -o - http://apt.arvados.org/pool/${D}/main/${repo_subdir}/) + echo ${repo_pkg_list} |grep -q ${complete_pkgname} + if [ $? -eq 0 ]; then + echo "Package $complete_pkgname exists, not rebuilding!" + curl -o ./${complete_pkgname} http://apt.arvados.org/pool/${D}/main/${repo_subdir}/${complete_pkgname} + return 1 + else + echo "Package $complete_pkgname not found, building" + return 0 + fi + done else - echo "Package $complete_pkgname not found, building" - return 0 + centos_repo="http://rpm.arvados.org/CentOS/7/dev/x86_64/" + + repo_pkg_list=$(curl -o - ${centos_repo}) + echo ${repo_pkg_list} |grep -q ${complete_pkgname} + if [ $? -eq 0 ]; then + echo "Package $complete_pkgname exists, not rebuilding!" + curl -o ./${complete_pkgname} ${centos_repo}${complete_pkgname} + return 1 + else + echo "Package $complete_pkgname not found, building" + return 0 + fi fi } @@ -275,6 +310,7 @@ handle_rails_package() { return 0 fi local srcdir="$1"; shift + cd "$srcdir" local license_path="$1"; shift local version="$(version_from_git)" local scripts_dir="$(mktemp --tmpdir -d "$pkgname-XXXXXXXX.scripts")" && \ @@ -299,7 +335,7 @@ handle_rails_package() { --before-remove "$scripts_dir/prerm" --after-remove "$scripts_dir/postrm") if [[ -z "$ARVADOS_BUILDING_VERSION" ]]; then - switches+=(--iteration=$RAILS_PACKAGE_ITERATION) + switches+=(--iteration $RAILS_PACKAGE_ITERATION) fi # For some reason fpm excludes need to not start with /. local exclude_root="${railsdir#/}" @@ -315,6 +351,7 @@ handle_rails_package() { switches+=(-x "$exclude_root/$exclude") done fpm_build "${pos_args[@]}" "${switches[@]}" \ + -x "$exclude_root/vendor/cache-*" \ -x "$exclude_root/vendor/bundle" "$@" "$license_arg" rm -rf "$scripts_dir" } @@ -345,11 +382,13 @@ fpm_build () { fi local default_iteration_value="$(default_iteration "$PACKAGE" "$VERSION" "$PACKAGE_TYPE")" + local python="" case "$PACKAGE_TYPE" in python) # All Arvados Python2 packages depend on Python 2.7. # Make sure we build with that for consistency. + python=python2.7 set -- "$@" --python-bin python2.7 \ --python-easyinstall "$EASY_INSTALL2" \ --python-package-name-prefix "$PYTHON2_PKG_PREFIX" \ @@ -365,6 +404,7 @@ fpm_build () { # necessary arguments to fpm's command line later, after we're # done handling positional arguments. PACKAGE_TYPE=python + python=python3 set -- "$@" --python-bin python3 \ --python-easyinstall "$EASY_INSTALL3" \ --python-package-name-prefix "$PYTHON3_PKG_PREFIX" \ @@ -388,8 +428,10 @@ fpm_build () { # packages cleanup on upgrade depends on files being listed on the %files # section in the generated SPEC files. To remove DIRECTORIES, they need to # be listed in that sectiontoo, so we need to add this parameter to properly - # remove lingering dirs. - if [[ rpm = "$FORMAT" ]]; then + # remove lingering dirs. But this only works for python2: if used on + # python33, it includes dirs like /opt/rh/python33 that belong to + # other packages. + if [[ "$FORMAT" = rpm ]] && [[ "$python" = python2.7 ]]; then COMMAND_ARR+=('--rpm-auto-add-directories') fi