[PATCH 1/2] UBUNTU: add hooks to prepare the source tree
Steve Conklin
steve.conklin at canonical.com
Tue Jan 20 14:41:21 UTC 2009
On 01/19/2009 08:46 AM, Andy Whitcroft wrote:
> When we package the source for building we do it in one of two ways.
> During early cycle where we have no original tarball to base from uploads
> contain the entire source. Once we base on a released kernel version
> the uploadds contain a base tarball and a diff delta. In the latter
> case all of the ubuntu delta is represented as a diff and this diff
> cannot carry any permission information including the executable bits.
> This leads us to lose any executable status on any added scripts.
>
> There are two solutions to this problem, two places at which we might
> fix any permissions issues. We can either fix all consumers of the
> master source tree such that after installing the files they also fix
> any permissions. Or we can fix the master source tree itself before
> any of the targets consumes it. The master source tree is consumed in a
> number of targets the source, docs, headers, and binary headers packages.
> We could modify each of these to fix the permissions of the files that
> they installed. However each of these takes a different subset of the
> source and each uses its own code incantation; each of these would need
> to be manually maintained. Therefore it seems sensible to pre-repair
> the source tree.
>
> This patch introduces a new preparation phase which performs any
> required source tree repair. This phase is added as a pre-requisite
> for all installer phases allowing any source file to be modified in this
> preparation phase. We also connect this to the rule 'patch' target which
> is the official manual interface for ensuring your source tree is ready
> for use. Note that this only needed when using the source from an apt-get
> source download, permission are maintained in our git tree.
>
> Signed-off-by: Andy Whitcroft <apw at canonical.com>
> ---
> debian/rules | 8 ++++++++
> debian/rules.d/2-binary-arch.mk | 2 +-
> debian/rules.d/3-binary-indep.mk | 6 +++---
> 3 files changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/debian/rules b/debian/rules
> index f661442..4af7fca 100755
> --- a/debian/rules
> +++ b/debian/rules
> @@ -49,6 +49,8 @@ clean: debian/control
> # This gets rid of the d-i packages in control
> cp -f debian/control.stub debian/control
>
> +patch: prepare-master-source
> +
> # Builds the image, arch headers and debug packages
> include debian/rules.d/2-binary-arch.mk
>
> @@ -145,3 +147,9 @@ debian/control: debian/control.stub
> fi
>
> kernel-wedge gen-control > debian/control
> +
> +# Ensure that the master source tree is ready for building from, use this
> +# to ensure executable files in our delta are still executable and the like.
> +.PHONY: prepare-master-source
> +prepare-master-source:
> + chmod +x scripts/test-suspend
> diff --git a/debian/rules.d/2-binary-arch.mk b/debian/rules.d/2-binary-arch.mk
> index 800c9b0..6244a1b 100644
> --- a/debian/rules.d/2-binary-arch.mk
> +++ b/debian/rules.d/2-binary-arch.mk
> @@ -32,7 +32,7 @@ install-%: dbgpkgdir = $(CURDIR)/debian/linux-image-debug-$(abi_release)-$*
> install-%: basepkg = linux-headers-$(abi_release)
> install-%: hdrdir = $(CURDIR)/debian/$(basepkg)-$*/usr/src/$(basepkg)-$*
> install-%: target_flavour = $*
> -install-%: $(stampdir)/stamp-build-% checks-%
> +install-%: $(stampdir)/stamp-build-% checks-% prepare-master-source
> dh_testdir
> dh_testroot
> dh_clean -k -plinux-image-$(abi_release)-$*
> diff --git a/debian/rules.d/3-binary-indep.mk b/debian/rules.d/3-binary-indep.mk
> index c25f10f..7bf4e01 100644
> --- a/debian/rules.d/3-binary-indep.mk
> +++ b/debian/rules.d/3-binary-indep.mk
> @@ -2,7 +2,7 @@ build-indep:
>
> docpkg = linux-doc-$(release)
> docdir = $(CURDIR)/debian/$(docpkg)/usr/share/doc/$(docpkg)
> -install-doc:
> +install-doc: prepare-master-source
> dh_testdir
> dh_testroot
> dh_clean -k -p$(docpkg)
> @@ -24,7 +24,7 @@ install-doc:
>
> indep_hdrpkg = linux-headers-$(abi_release)
> indep_hdrdir = $(CURDIR)/debian/$(indep_hdrpkg)/usr/src/$(indep_hdrpkg)
> -install-headers:
> +install-headers: prepare-master-source
> dh_testdir
> dh_testroot
> dh_clean -k -p$(indep_hdrpkg)
> @@ -42,7 +42,7 @@ install-headers:
>
> srcpkg = linux-source-$(release)
> srcdir = $(CURDIR)/debian/$(srcpkg)/usr/src/$(srcpkg)
> -install-source:
> +install-source: prepare-master-source
> dh_testdir
> dh_testroot
> dh_clean -k -p$(srcpkg)
ACK
More information about the kernel-team
mailing list