]> git.donarmstrong.com Git - neurodebian.git/blobdiff - tools/nd_build
Also for stats report which repo and which job number use our setup
[neurodebian.git] / tools / nd_build
index 7fa26c3ad6989c9ca29992b7b4d8e975ba931d3f..baf77a8d84cbac2765b172332af47609cacfb038 100755 (executable)
@@ -31,7 +31,22 @@ EOT
 exit 1
 fi
 
-. /home/neurodebian/neurodebian.git/tools/nd_cmdsettings.sh
+family=$1
+dist=$2
+
+set -e
+
+if [ -z "$family" ]; then
+  echo "You need to provide a distribution family ('debian', 'ubuntu'); prefix with 'nd+' to enable the NeuroDebian repository."
+  exit 1
+fi
+
+if [ -z "$dist" ]; then
+  echo "You need to provide a distribution codename (e.g. 'lenny', 'squeeze')."
+  exit 1
+fi
+
+. /etc/neurodebian/cmdsettings.sh
 
 # common options
 opts="--distribution $dist --aptcache $aptcache --buildplace $buildplace"
@@ -62,11 +77,36 @@ else
   shift; shift; shift; shift
 fi
 
+# failed will be set to 1 if any build fails
+failed=
 for a in $arch; do
+  # default
+  options="$opts"
+  if [ "$a" = "amd64" ]; then
+    # only force source into the upload for NeuroDebian
+    if [ ! "$family" = "${family#nd+*}" ]; then
+      options="$opts --debbuildopts -sa"
+    fi
+  else
+    options="$opts --debbuildopts -B"
+  fi
+
   echo "Building for $family $dist $a ..."
+  buildfile="${dscfile%.dsc}_${a}.build"
+  tsfile="${buildfile}.timestamp.`date +%s`" # "unique" timestamp file
+  /usr/bin/time -f "%E real, %U user, %S sys, %O out" -o "${tsfile}" \
   cowbuilder --build $dscfile \
              --basepath ${cowbuilderroot}/cow/${family}-${dist}-${a}.cow \
              --buildresult . \
-             $opts \
-             $*
+             --logfile "${buildfile}" \
+             $options \
+             "$@" && status='OK' || { status='FAILED'; failed=1; }
+  timeinfo=$(tail -n 1 "${tsfile}")
+  # Update the summary of builds
+  touch summary.build                               # Assure existence
+  sed -i -e "s/\(${buildfile}.*out$\)/\1 OLD/g" summary.build  # Mark previous entry as OLD
+  echo -e "${buildfile}\t$status\t$timeinfo" >> summary.build  # Add current one
+  rm -f "${tsfile}"
 done
+# Exit with failure status if any built failed
+[ -z $failed ] || exit 1