[PATCH 6 of 6 packaging] dockerdeb: rules to build a debian package using docker

Augie Fackler raf at durin42.com
Fri May 8 12:10:09 CDT 2015


# HG changeset patch
# User Augie Fackler <augie at google.com>
# Date 1430932539 14400
#      Wed May 06 13:15:39 2015 -0400
# Node ID f7c7e1a155383727d54decd6f31b865b8a52eb8b
# Parent  eb1672b7b846324d4275b49c09d33373e3cb1920
dockerdeb: rules to build a debian package using docker

Currently only supports jessie (current stable), but other version
should be trivial.

diff --git a/Makefile b/Makefile
--- a/Makefile
+++ b/Makefile
@@ -163,6 +163,10 @@ debian-jessie:
 	mv debbuild/*.deb packages/debian-jessie
 	rm -rf debbuild
 
+docker-debian-jessie:
+	mkdir -p packages/debian/jessie
+	contrib/dockerdeb jessie
+
 fedora20:
 	mkdir -p packages/fedora20
 	contrib/buildrpm
diff --git a/contrib/docker/debian-jessie b/contrib/docker/debian-jessie
new file mode 100644
--- /dev/null
+++ b/contrib/docker/debian-jessie
@@ -0,0 +1,11 @@
+FROM debian:jessie
+RUN apt-get update && apt-get install -y \
+  build-essential \
+  debhelper \
+  dh-python \
+  devscripts \
+  python \
+  python-all-dev \
+  python-docutils \
+  zip \
+  unzip
diff --git a/contrib/dockerdeb b/contrib/dockerdeb
new file mode 100755
--- /dev/null
+++ b/contrib/dockerdeb
@@ -0,0 +1,39 @@
+#!/bin/bash -eu
+
+. $(dirname $0)/dockerlib.sh
+. $(dirname $0)/packagelib.sh
+
+BUILDDIR=$(dirname $0)
+export ROOTDIR=$(cd $BUILDDIR/..; pwd)
+
+checkdocker
+
+PLATFORM="debian-$1"
+shift # extra params are passed to build process
+
+initcontainer $PLATFORM
+
+DEBBUILDDIR=$ROOTDIR/packages/$PLATFORM
+contrib/builddeb --debbuilddir $DEBBUILDDIR/staged --prepare
+
+DSHARED=/mnt/shared/
+if [ $(uname) = "Darwin" ] ; then
+    $DOCKER run -u $DBUILDUSER --rm -v $DEBBUILDDIR:$DSHARED -v $PWD:/mnt/hg $CONTAINER \
+            sh -c "cd /mnt/hg && make clean && make local"
+fi
+$DOCKER run -u $DBUILDUSER --rm -v $DEBBUILDDIR:$DSHARED -v $PWD:/mnt/hg $CONTAINER \
+  sh -c "cd /mnt/hg && make PREFIX=$DSHARED/staged/usr install"
+$DOCKER run -u $DBUILDUSER --rm -v $DEBBUILDDIR:$DSHARED $CONTAINER \
+  dpkg-deb --build $DSHARED/staged
+if [ $(uname) = "Darwin" ] ; then
+    $DOCKER run -u $DBUILDUSER --rm -v $DEBBUILDDIR:$DSHARED -v $PWD:/mnt/hg $CONTAINER \
+            sh -c "cd /mnt/hg && make clean"
+fi
+
+gethgversion
+
+rm -r $DEBBUILDDIR/staged
+mv $DEBBUILDDIR/staged.deb $DEBBUILDDIR/mercurial-$version-$release.deb
+
+echo
+echo "Build complete - results can be found in $DEBBUILDDIR"


More information about the Mercurial-devel mailing list