Building testing kernels

Herton Ronaldo Krzesinski herton.krzesinski at canonical.com
Fri Feb 4 11:21:18 UTC 2011


Hi,

what's the common used way to provide test kernels for users to test, is
it fine to use ppa in launchpad?

Yesterday I started playing with ppa/building packages, and found that
we have on kteam-tools a script to build ppa packages more or less with
everything sorted out, build-mkppa

But I found some problems, when trying to build a ppa for maverick's
kernel, using build-mkppa:
- It got confused by some tags in ubuntu maverick git repository, as abi
in them had a higher number than the last released mavericks kernel, it
thought that last kernel was Ubuntu-2.6.35-903.21, while the last one is
Ubuntu-2.6.35-26.46. I ended up removing all Ubuntu-2.6.35-90?.* tags to
overcome this.
- build-mkppa looks outdated compared with build procedures of today,
not knowing about debian.master in current repo. I fixed this along
another little nits, and then was able to build sources for a ppa.

I created a kteam-tools repository to provide the fixes under my
account, please check and see if they are ok, if yes here is the pull
request:

The following changes since commit 94116bd51b2b27829ea4edc517ffefc8e147d9ec:

  Added regular expression which can be used by other code. (2011-02-02 14:58:10 -0800)

are available in the git repository at:
  ssh://kernel.ubuntu.com/srv/kernel.ubuntu.com/git/herton/kteam-tools fixes

Herton Ronaldo Krzesinski (4):
      Trivial typo fix in build-mkppa
      build-mkppa: change default PPAEXT to "ppa"
      build-mkppa: abort if git am fails
      build-mkppa: make sure we use proper debian master directory

 buildscripts/build-mkppa |   48 ++++++++++++++++++++++++++++-----------------
 1 files changed, 30 insertions(+), 18 deletions(-)

diff --git a/buildscripts/build-mkppa b/buildscripts/build-mkppa
index 2e0b89b..8bed21b 100755
--- a/buildscripts/build-mkppa
+++ b/buildscripts/build-mkppa
@@ -30,7 +30,7 @@
 # DEBEMAIL: Those two environment variables (exported) are used by dch to
 #           set the email address and the name of the maintainer.
 #==============================================================================
-PPAEXT=smb
+PPAEXT=ppa
 if [ "$PPADIR" = "" ]; then
 	PPADIR="../$(basename $(pwd))-ppa"
 fi
@@ -106,12 +106,14 @@ while [ $# -gt 0 ]; do
 	esac
 	shift
 done
+DEBIAN=$(debian/rules printdebian)
+[ -n "$DEBIAN" ] || DEBIAN=debian
 
 #
 # If this is missing, there is really something odd.
 #
-if [ ! -f debian/changelog ]; then
-	echo "debian/changlog not found!" >&2
+if [ ! -f $DEBIAN/changelog ]; then
+	echo "$DEBIAN/changelog not found!" >&2
 	exit 1
 fi
 DIST=$(awk '
@@ -123,7 +125,7 @@ DIST=$(awk '
 			exit
 		}
 	}
-' debian/changelog)
+' $DEBIAN/changelog)
 
 case $DIST in
 	dapper|hardy|jaunty|karmic|lucid|maverick)
@@ -216,9 +218,17 @@ fi
 # If one of the patches is marked "BumpABI: yes", then bump the ABI later.
 #
 BUMPABI=false
+applied=0
 if [ -r "$PATCHDIR/series" ]; then
 	for i in $(cat $PATCHDIR/series); do
 		git am $PATCHDIR/$i
+		if [ "$?" -ne 0 ]; then
+			git am --abort
+			[ "$applied" -eq 0 ] || git reset --hard HEAD~$applied
+			echo "Aborted as one of the patches doesn't apply"
+			exit 1
+		fi
+		let "applied++"
 		if [ "$(GetPatchTag BumpABI "$PATCHDIR/$i")" = "yes" ]; then
 			BUMPABI=true
 		fi
@@ -305,13 +315,14 @@ awk '
 	!silent{
 		print
 	}
-' debian/changelog >debian/changelog.$$ && \
-	mv debian/changelog.$$ debian/changelog
+' $DEBIAN/changelog >$DEBIAN/changelog.$$ && \
+	mv $DEBIAN/changelog.$$ $DEBIAN/changelog
 
-dch -b -v"$PPAVER" -D"$DIST" "!!!PLACEHOLDER!!!"
+dch -c $DEBIAN/changelog -b -v"$PPAVER" -D"$DIST" "!!!PLACEHOLDER!!!"
 awk -vTEXT="$CHANGES" '/!!!PLACEHOLDER!!!/{print TEXT; next} {print}' \
-	debian/changelog >debian/changelog.$$ && \
-	mv debian/changelog.$$ debian/changelog
+	$DEBIAN/changelog >$DEBIAN/changelog.$$ && \
+	mv $DEBIAN/changelog.$$ $DEBIAN/changelog
+[ "$DEBIAN" = "debian" ] || cp -f $DEBIAN/changelog debian/changelog
 
 #
 # Update the debian control file
@@ -322,7 +333,8 @@ debian/rules debian/control.stub >/dev/null
 # Stupid ABI check possibly wants stuff
 #
 LASTFULLVER=$VER-$LASTRELEASE
-if [ -d debian/abi ]; then
+debian/scripts/misc/getabis $VER $LASTRELEASE
+if [ -d $DEBIAN/abi ]; then
 	#
 	# No kABI files for the last release. If there is a tarball
 	# that provides those relative to the kernel top level dir,
@@ -331,27 +343,27 @@ if [ -d debian/abi ]; then
 	if [ -f $PPADIR/abi-$LASTFULLVER.tar.gz ]; then
 		echo "Found and use $FULLVER tarball."
 		tar -xzf $PPADIR/abi-$LASTFULLVER.tar.gz
-		git add debian/abi/$LASTFULLVER
+		git add $DEBIAN/abi/$LASTFULLVER
 	fi
-	if [ ! -d debian/abi/$LASTFULLVER ]; then
+	if [ ! -d $DEBIAN/abi/$LASTFULLVER ]; then
 		#
 		# If the directory is still missing, there was no tarbal.
 		# Maybe the files from an older release are there.
 		#
-		if [ ! -d debian/abi/$LASTFULLVER ]; then
+		if [ ! -d $DEBIAN/abi/$LASTFULLVER ]; then
 			echo "WARNING: No kABI files for $LASTRELEASE!!!"
-			LASTRELEASE=$(ls -1 debian/abi|tail -1|cut -d- -f2)
+			LASTRELEASE=$(ls -1 $DEBIAN/abi|tail -1|cut -d- -f2)
 			if [ "$LASTRELEASE" = "" ]; then
 				echo "Unable to continue!" >&2
 				exit 1
 			fi
 			echo "Using $LASTRELEASE instead. Hope this works..."
 			echo "Generate ABI modules files..."
-			cp -r debian/abi/$VER-$LASTRELEASE \
-				debian/abi/$LASTFULLVER
-			echo $ABI >debian/abi/$LASTFULLVER/abiname
+			cp -r $DEBIAN/abi/$VER-$LASTRELEASE \
+				$DEBIAN/abi/$LASTFULLVER
+			echo $ABI >$DEBIAN/abi/$LASTFULLVER/abiname
 		fi
-		git add debian/abi/$LASTFULLVER
+		git add $DEBIAN/abi/$LASTFULLVER
 	fi
 fi
 

-- 
[]'s
Herton





More information about the kernel-team mailing list