[kteam-tools][PATCH v2 4/7] git-build-kernel: debuild source packages with suitable -vversion

Andy Whitcroft apw at canonical.com
Mon Aug 6 15:31:54 UTC 2018


On Thu, Aug 02, 2018 at 03:40:32PM -0700, Kamal Mostafa wrote:
> Determine latest released package version in <series>-updates and supply
> it to dpkg-genchanges via debuild -vversion.
> 
> Special case: If rmadison reports that the version published in -updates
> is the same or newer than the source package version being built, then
> just do not pass any -v<updates_version> to debuild.  dpkg-genchanges
> does actually detect such out-of-order versions but misbehaves if the
> updates_version doesn't exist in the changelog at all (as with our
> derivative kernels).  This situation only occurs when test-building
> source packages which have already been published; the resulting source
> package could not be re-uploaded anyway, so the contents of
> _source.changes are not critical.
> 
> Signed-off-by: Kamal Mostafa <kamal at canonical.com>
> ---
>  git-build-kernel/git-build-kernel | 40 ++++++++++++++++++++++++++++++++-------
>  1 file changed, 33 insertions(+), 7 deletions(-)
> 
> diff --git a/git-build-kernel/git-build-kernel b/git-build-kernel/git-build-kernel
> index cfad062..a683ad4 100755
> --- a/git-build-kernel/git-build-kernel
> +++ b/git-build-kernel/git-build-kernel
> @@ -95,6 +95,31 @@ then
>      CHROOT="${CHROOT%.git}"
>  fi
>  
> +### Get the source package version number
> +chg="`git show $GITBRANCH:$DEBIAN/changelog | head -1`"
> +VERSION=`echo "$chg" | sed -n -e '1s/^.*(\([^)]*\)).*$/\1/p'`
> +
> +### Find the appropriate -v{version} value for dpkg-genchanges
> +[ $do_source_pkg = 1 ] && {
> +    updates_version=$(rmadison -s ${DISTRO}-updates $SRCPKG | grep 'source$' | awk '{print $3}')
> +    if [ -n "$updates_version" ]
> +    then
> +	dpkg --compare-versions "$updates_version" ge $VERSION && {
> +	    echo "WARNING: ${DISTRO}-updates version ($updates_version) >= this version; skipping -v!" 1>&2
> +	    updates_version=""
> +	}
> +    else
> +	echo "WARNING: cannot determine ${DISTRO}-updates version for $SRCPKG" 1>&2
> +    fi
> +    if [ -n "$updates_version" ]
> +    then
> +	### Special case for backport kernel versions: strip the e.g. "~16.04.1"
> +	### suffix from the updates_version
> +	updates_version="${updates_version%~*}"
> +	srcpkg_debopts="-v$updates_version $srcpkg_debopts"

It is quite upsetting that we have to have this vileness in here.  I
have a proposal to avoid this which I will discuss as a potential follow
on.

> +    fi
> +}
> +
>  ### Compile amd64 and i386 in a native chroot.
>  ### Cross-compile ARM in an amd64 chroot (for dramatically better performance).
>  if [ "$ARCH" = "amd64" -o "$ARCH" = "i386" ]
> @@ -104,10 +129,6 @@ else
>  	CHROOT="$CHROOT-amd64"
>  fi
>  
> -### Get the version number - we need it to locate the orig tarball
> -chg="`git show $GITBRANCH:$DEBIAN/changelog | head -1`"
> -VERSION=`echo "$chg" | sed -n -e '1s/^.*(\([^)]*\)).*$/\1/p'`
> -
>  
>  ### Set up the /tmp work directory
>  
> @@ -138,7 +159,12 @@ trap "rm -rf $WORKDIR/building $BUILDDIR" 0
>  echo "git-build-kernel"
>  echo "      package: $SRCPKG ($VERSION) $DISTRO"
>  echo "      targets: $TARGETS"
> -echo "         arch: $ARCH"
> +if [ $do_source_pkg = 1 ]
> +then
> +    echo "    changes-v: $updates_version"
> +else
> +    echo "         arch: $ARCH"
> +fi
>  echo "       chroot: $CHROOT"
>  echo "  starting build in $HOSTNAME:$WORKDIR ..."
>  
> @@ -180,7 +206,7 @@ show_elapsed &
>  			fakeroot debian/rules clean
>  			if [ $do_source_pkg = 1 ]
>  			then
> -			    debuild -S -I -i -uc -us
> +			    debuild $srcpkg_debopts -S -I -i -uc -us
>  			else
>  			    debian/rules build
>  			    fakeroot debian/rules $TARGETS
> @@ -194,7 +220,7 @@ XXEOFXX
>  		fakeroot debian/rules clean
>  		if [ $do_source_pkg = 1 ]
>  		then
> -		    debuild -S -I -i -uc -us
> +		    debuild $srcpkg_debopts -S -I -i -uc -us
>  		else
>  		    debian/rules build
>  		    fakeroot debian/rules $TARGETS
> -- 
> 2.7.4
> 
> 
> -- 
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team




More information about the kernel-team mailing list