[PATCH 2/2] UBUNTU: mainline-build -- add build machinary for mainline builds

Andy Whitcroft apw at canonical.com
Fri Jan 23 14:38:47 UTC 2009


Add support for mainline builds within our tree.  From a repository with
an ubuntu kernel with a remote containing the required mainline build we
are able to build .debs for those releases.  These are packaged such that
they do not collide with our own builds.

Signed-off-by: Andy Whitcroft <apw at canonical.com>
---
 debian/scripts/misc/mainline-build |  127 ++++++++++++++++++++++++++++++++++++
 1 files changed, 127 insertions(+), 0 deletions(-)
 create mode 100755 debian/scripts/misc/mainline-build

diff --git a/debian/scripts/misc/mainline-build b/debian/scripts/misc/mainline-build
new file mode 100755
index 0000000..969cffa
--- /dev/null
+++ b/debian/scripts/misc/mainline-build
@@ -0,0 +1,127 @@
+#! /bin/bash
+
+P="mainline-build"
+
+if [ "$#" -ne 1 ]; then
+	echo "Usage: $P <tag>" 1>&2
+	exit 1
+fi
+
+commit="$1"
+
+long=`git describe "$commit"`
+if [ "$?" -ne 0 ]; then
+	echo "$P: $commit: invalid commit" 1>&2
+	exit 1
+fi
+case "$long" in
+v*-*)
+	full_version="${long#v}"
+	full_version="${full_version%%-*}"
+	abinum="$full_version${long##*-}"
+	;;
+v*)
+	full_version="${long#v}"
+	abinum="$full_version"
+	;;
+*)
+	echo "$P: $commit: mapped to '$long' unable to process" 1>&2
+	exit 1
+esac
+
+# The base version is always the first X.Y.Z part of the version number.  If we
+# do not maintain this then the modules directory will not match uname -r.
+version=`echo "$full_version" | sed -e 's/\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/'`
+
+# Encode the real version number plus the abbreviated sha1 from git describe
+# output as the ABI.  We encode the version number by expanding the numbers
+# to be 2 digits and removing the '.' and '-' characters, for example:
+#
+#  2.6.27.12	02062712
+#  2.6.29-rc3   020629rc3
+#
+abinum=`echo "$abinum" | awk -F'[.-]' '{
+	for (i = 1; i <= NF; i++) {
+		if ($i ~ /^[0-9][0-9]*$/) {
+			printf("%02d", $i);
+		} else {
+			printf("%s", $i);
+		}
+	}
+}'`
+
+release=`pwd`
+release=${release#*/ubuntu-}
+release=${release%-build}
+
+echo "full_version<$full_version>"
+echo "version<$version>"
+echo "long<$long>"
+echo "abinum<$abinum>"
+
+# NOTE: a - in the branch name seems to be causing issues.
+branch="BUILD.$abinum"
+branch=`echo "$branch" | sed -e 's/-/./g'`
+
+git checkout -f origin/master
+git branch -D "$branch"
+
+#
+# Checkout the source at the specified version.
+#
+git checkout -b "$branch" "v$full_version" -- || exit 1
+
+#
+# Pull in the packaging from the head of our tree.
+#
+git checkout origin/master -- debian
+git commit -a -m "base packaging"
+
+#
+# Rebuild the changelog.
+#
+rm -f debian/changelog
+EDITOR=":" dch -v "${version}-$abinum" --distribution "$release" \
+	--package linux --create
+sed -e "s/\* .*/* Mainline release $version/" \
+	<debian/changelog >debian/changelog.new
+mv -f debian/changelog.new debian/changelog
+git commit -a -m "debian changelog"
+
+#
+# Default any new configuration options.
+#
+debian/rules defaultconfigs
+git commit -a -m "default configs"
+
+#
+# Disable the ABI, module, and aliases checks.
+#
+cat - <<EOM >debian/scripts/abi-check
+#!/bin/sh
+exit 0
+EOM
+chmod 755 debian/scripts/abi-check
+
+cat - <<EOM >debian/scripts/module-check
+#!/bin/sh
+exit 0
+EOM
+chmod 755 debian/scripts/module-check
+
+cat - <<EOM >debian/tests/check-aliases
+#!/bin/sh
+exit 0
+EOM
+chmod 755 debian/tests/check-aliases
+
+#
+# Build the packages.
+#
+#dpkg-buildpackage -S -sd -rfakeroot -I.git -I.gitignore -i'\.git.*'
+#dpkg-buildpackage -b
+
+schroot -c "$release-amd64" fakeroot debian/rules clean
+schroot -c "$release-amd64" fakeroot debian/rules binary-indep binary-arch
+schroot -c "$release-i386" fakeroot debian/rules clean
+schroot -c "$release-i386" fakeroot debian/rules binary-arch
-- 
1.6.1.258.g7ff14.dirty





More information about the kernel-team mailing list