begin to sketch git pre-receive hook
[invirt/scripts/git-hooks.git] / super / build-pre-receive
diff --git a/super/build-pre-receive b/super/build-pre-receive
new file mode 100755 (executable)
index 0000000..0343362
--- /dev/null
@@ -0,0 +1,80 @@
+#!/bin/bash
+
+read oldrev newrev head
+if [ $head != 'dev' ]; then
+  echo "error: head not recognized: $head" >&2
+  exit 1
+fi
+
+git ls-tree $newrev packages/ \
+ | grep ^160000\ commit \
+ | while read x y newsubrev packagepath; do
+     # XXX deal with new packages
+     # XX deal with removed packages
+     oldsubrev=$(git ls-tree $oldrev $packagepath | perl -lane 'print $F[2]')
+     if [ $newsubrev == $oldsubrev ]; then
+       continue
+     fi
+
+     echo "must build $packagepath at new version $newsubrev"
+   done
+
+
+
+
+
+exit 0
+
+distribution=hardy
+svnuri="$(invirt-getconf svn.uri)"
+
+set -e
+if  [ $# -eq 0 ] ; then
+       echo " usage: invirt-build-release package_name [package_name [...]]"
+       exit 1
+fi
+
+for package; do
+    rm -rf build-release/$package
+    svn export $svnuri/trunk/packages/$package build-release/$package
+    cd build-release/$package
+    
+    eval $(perl -ne 'print if s/^(Version|Source|Distribution): /\1=/' \
+             <(dpkg-parsechangelog))
+    dpkg-buildpackage -us -uc -rfakeroot -S
+    cd ..
+    eval $(perl -ne 'print if s/^(Architecture): /\1=/' ${Source}_${Version}.dsc)
+    case $Architecture in
+      all)
+        sbuild -d $distribution --arch-all   ${Source}_${Version}.dsc;;
+      any)
+        sbuild -d $distribution --arch amd64 --arch-all ${Source}_${Version}.dsc
+        sbuild -d $distribution --arch i386  ${Source}_${Version}.dsc;;
+      *)
+        echo "invirt-build-release: arch '$Architecture' unimplemented" >&2
+        exit 1
+    esac
+
+    if ! svn ls $svnuri/package_tags/$Source >/dev/null 2>&1; then
+        svn mkdir $svnuri/package_tags/$Source \
+            -m "Create package tags directory"
+    fi
+    if ! svn ls $svnuri/package_tags/$Source/$Version >/dev/null 2>&1; then
+        svn cp $svnuri/trunk/packages/$package $svnuri/package_tags/$Source/$Version \
+            -m "Tag $Version of $Source"
+    else
+        echo "$(basename $0): tag already exists, not making again"
+    fi
+    
+    [ $Distribution = 'unstable' ] \
+        || echo "$(basename $0): warning: Distribution is $Distribution, script expects unstable"
+    changesfile=`pwd`/${Source}_*${Version}*.changes
+    for i in $changesfile; do
+        reprepro-env include unstable $i
+        reprepro-env copy stable unstable $(sed -ne 's/^Binary: //p' $i)
+    done
+    reprepro-env copy stable unstable $Source
+    
+    cd ..
+    rm -rf build-release/$package
+done