13594: Remove table lock.
[arvados.git] / build / run-library.sh
index 51678e6ed8194135b51babc3e30d8f8ac87f8836..fb4df6a79215ea3cfa86f0bd5cfc6c9233fa8233 100755 (executable)
@@ -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