Fix another -z that should have been -n. refs #3894
[arvados-dev.git] / jenkins / run-build-packages.sh
index d9d3d18fb0c9e0ac87b70c049622ca06bfec28a5..ce9b8f72afc13f5d8df0526db7bd68c503e7612c 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 EXITCODE=0
-CALL_PRM=0
+CALL_FREIGHT=0
 
 APTUSER=$1
 APTSERVER=$2
@@ -63,6 +63,8 @@ python setup.py egg_info -b ".$GIT_HASH" sdist upload
 
 # Build debs for everything
 
+# Build arvados src deb package
+
 build_and_scp_deb () {
   PACKAGE=$1
   PACKAGE_NAME=$2
@@ -70,7 +72,8 @@ build_and_scp_deb () {
   # Because, bash sucks.
   VENDOR=${3// /_}
   PACKAGE_TYPE=$4
-  EXTRA_ARGUMENTS=$5
+  VERSION=$5
+  EXTRA_ARGUMENTS=$6
 
   if [[ "$PACKAGE_NAME" == "" ]]; then
     PACKAGE_NAME=$PACKAGE
@@ -89,6 +92,11 @@ build_and_scp_deb () {
   if [[ "$VENDOR" != "" ]]; then
     COMMAND_ARR+=('--vendor' "$VENDOR")
   fi
+
+  if [[ "$VERSION" != "" ]]; then
+    COMMAND_ARR+=('-v' "$VERSION")
+  fi
+
   for a in $EXTRA_ARGUMENTS; do
     COMMAND_ARR+=("$a")
   done
@@ -98,15 +106,26 @@ build_and_scp_deb () {
   FPM_RESULTS=$(${COMMAND_ARR[@]})
   FPM_EXIT_CODE=$?
   echo ${COMMAND_ARR[@]}
-  if [[ ! $FPM_RESULTS =~ "File already exists" ]]; then
-    if [[ "$FPM_EXIT_CODE" != "0" ]]; then
-      echo "Error building debian package for $1:\n $FPM_RESULTS"
+
+  FPM_PACKAGE_NAME=''
+  if [[ $FPM_RESULTS =~ ([A-Za-z0-9_\-.]*\.deb) ]]; then
+    FPM_PACKAGE_NAME=${BASH_REMATCH[1]}
+  fi
+
+  if [[ "$FPM_PACKAGE_NAME" == "" ]]; then
+    EXITCODE=1
+    echo "Error: Unabled figure out package name from fpm results:\n $FPM_RESULTS"
+  else
+    if [[ ! $FPM_RESULTS =~ "File already exists" ]]; then
+      if [[ "$FPM_EXIT_CODE" != "0" ]]; then
+        echo "Error building debian package for $1:\n $FPM_RESULTS"
+      else
+        scp -P2222 $FPM_PACKAGE_NAME $APTUSER@$APTSERVER:tmp/
+        CALL_FREIGHT=1
+      fi
     else
-      scp -P2222 $PACKAGE_NAME*.deb $APTUSER@$APTSERVER:tmp/
-      CALL_PRM=1
+      echo "Debian package $FPM_PACKAGE_NAME exists, not rebuilding"
     fi
-  else
-    echo "Debian package for $1 exists, not rebuilding"
   fi
 }
 
@@ -114,32 +133,48 @@ if [[ ! -d "$WORKSPACE/debs" ]]; then
   mkdir -p $WORKSPACE/debs
 fi
 
-# Make sure our destination directory on $APTSERVER exists - prm can delete it when invoked improperly
-ssh -p2222 $APTUSER@$APTSERVER mkdir tmp
+# Arvados-src
+# We use $WORKSPACE/src-build-dir as the clean directory from which to build the src package
+if [[ ! -d "$WORKSPACE/src-build-dir" ]]; then
+  mkdir "$WORKSPACE/src-build-dir"
+  cd "$WORKSPACE"
+  git clone https://github.com/curoverse/arvados.git src-build-dir
+fi  
+
+cd "$WORKSPACE/src-build-dir"
+# just in case, check out master
+git checkout master
+git pull
+# go into detached-head state
+git checkout `git log --format=format:%h -n1 .`
+cd $WORKSPACE
 
-# Keep
-cd $WORKSPACE/services/keep
-./go.sh install keep
 cd $WORKSPACE/debs
-build_and_scp_deb $WORKSPACE/services/keep/bin/keep=/usr/bin/keep keep 'Curoverse, Inc.' 'dir' "-v 0.1.$GIT_HASH"
+build_and_scp_deb $WORKSPACE/src-build-dir/=/usr/local/arvados/src arvados-src 'Curoverse, Inc.' 'dir' "0.1.$GIT_HASH" "-x 'usr/local/arvados/src/.git*'"
 
-# Keep proxy
+# clean up, check out master and step away from detached-head state
+cd "$WORKSPACE/src-build-dir"
+git checkout master
 
-# First build the keepclient library
-cd $WORKSPACE/sdk/go
-./go.sh install arvados.org/keepclient
+# Keep
+export GOPATH=$(mktemp -d)
+mkdir -p "$GOPATH/src/git.curoverse.com"
+ln -sfn "$WORKSPACE" "$GOPATH/src/git.curoverse.com/arvados.git"
 
-# Then keepproxy
-cd $WORKSPACE/services/keep
-./go.sh install arvados.org/keepproxy
+# keepstore
+go get "git.curoverse.com/arvados.git/services/keepstore"
 cd $WORKSPACE/debs
-build_and_scp_deb $WORKSPACE/services/keep/bin/keepproxy=/usr/bin/keepproxy keepproxy 'Curoverse, Inc.' 'dir' "-v 0.1.$GIT_HASH"
+build_and_scp_deb $GOPATH/bin/keepstore=/usr/bin/keepstore keepstore 'Curoverse, Inc.' 'dir' "0.1.$GIT_HASH"
 
-# The crunchstat wrapper
-cd $WORKSPACE/services/crunch/crunchstat
-./go.sh install arvados.org/crunchstat
+# keepproxy
+go get "git.curoverse.com/arvados.git/services/keepproxy"
 cd $WORKSPACE/debs
-build_and_scp_deb $WORKSPACE/services/crunch/crunchstat/bin/crunchstat=/usr/bin/crunchstat crunchstat 'Curoverse, Inc.' 'dir' "-v 0.1.$GIT_HASH"
+build_and_scp_deb $GOPATH/bin/keepproxy=/usr/bin/keepproxy keepproxy 'Curoverse, Inc.' 'dir' "0.1.$GIT_HASH"
+
+# crunchstat
+go get "git.curoverse.com/arvados.git/services/crunchstat"
+cd $WORKSPACE/debs
+build_and_scp_deb $GOPATH/bin/crunchstat=/usr/bin/crunchstat crunchstat 'Curoverse, Inc.' 'dir' "0.1.$GIT_HASH"
 
 # The Python SDK
 cd $WORKSPACE/sdk/python
@@ -153,18 +188,17 @@ cd $WORKSPACE/debs
 # prefix from only one of the dependencies of a package...  Maybe I could
 # whip up a patch and send it upstream, but that will be for another day. Ward,
 # 2014-05-15
-build_and_scp_deb $WORKSPACE/sdk/python python-arvados-python-client 'Curoverse, Inc.' 'python' "-v 0.1.${GIT_HASH}"
+build_and_scp_deb $WORKSPACE/sdk/python python-arvados-python-client 'Curoverse, Inc.' 'python' "0.1.${GIT_HASH}"
 
 # The FUSE driver
 cd $WORKSPACE/services/fuse
 sed -i'' -e "s:version='0.1':version='0.1.$GIT_HASH':" setup.py
 
-
 cd $WORKSPACE/debs
 
 # Please seem comment about --no-python-fix-name above; we stay consistent and do
 # not omit the python- prefix first.
-build_and_scp_deb $WORKSPACE/services/fuse python-arvados-fuse 'Curoverse, Inc.' 'python' "-v 0.1.${GIT_HASH}"
+build_and_scp_deb $WORKSPACE/services/fuse python-arvados-fuse 'Curoverse, Inc.' 'python' "0.1.${GIT_HASH}"
 
 # A few dependencies
 build_and_scp_deb python-gflags
@@ -175,9 +209,13 @@ build_and_scp_deb ws4py
 build_and_scp_deb virtualenv
 
 # Finally, publish the packages, if necessary
-if [[ "$CALL_PRM" != "0" ]]; then
-  ssh -p2222 $APTUSER@$APTSERVER -t "cd /var/www/$APTSERVER; /usr/local/rvm/bin/rvm default do prm --type deb -p . --component main --release wheezy --arch amd64  -d /home/$APTUSER/tmp/ --gpg 1078ECD7"
+if [[ "$CALL_FREIGHT" != "0" ]]; then
+  ssh -p2222 $APTUSER@$APTSERVER -t "cd tmp && ls -laF *deb && freight add *deb apt/wheezy && freight cache && rm -f *deb"
 else
-  echo "No new packages generated. No PRM run necessary."
+  echo "No new packages generated. No freight run necessary."
 fi
 
+# clean up temporary GOPATH
+rm -rf "$GOPATH"
+
+exit $EXITCODE