[PATCH v2 6/6][Unstable] UBUNTU: [Debian] fix ownership for files installed during build
Tim Gardner
tim.gardner at canonical.com
Fri Jun 4 12:02:29 UTC 2021
On 6/3/21 8:47 PM, Seth Forshee wrote:
> BugLink: https://bugs.launchpad.net/bugs/1930713
>
> We now install some files during build. This may be run separately
> from building packages, in which case fakeroot will not record the
> correct ownership in package archives.
>
> Fix this by adding a new fixowner target which fixes the ownership
> for the files installed during the build and is a dependency of the
> build targets.
>
> Signed-off-by: Seth Forshee <seth.forshee at canonical.com>
> ---
> debian/rules.d/2-binary-arch.mk | 26 +++++++++++++++++++++++++-
> 1 file changed, 25 insertions(+), 1 deletion(-)
>
> diff --git a/debian/rules.d/2-binary-arch.mk b/debian/rules.d/2-binary-arch.mk
> index 7e2c8b7ae169..700c1e65491d 100644
> --- a/debian/rules.d/2-binary-arch.mk
> +++ b/debian/rules.d/2-binary-arch.mk
> @@ -35,11 +35,35 @@ $(stampdir)/stamp-prepare-tree-%: $(commonconfdir)/config.common.$(family) $(arc
> $(build_cd) $(kmake) $(build_O) -j1 syncconfig prepare scripts
> touch $@
>
> +# Fix ownership for files potentially installed while not under fakeroot
> +fixowner-%: pkgdir_bin = $(CURDIR)/debian/$(bin_pkg_name)-$*
> +fixowner-%: pkgdir = $(CURDIR)/debian/$(mods_pkg_name)-$*
> +fixowner-%: pkgdir_ex = $(CURDIR)/debian/$(mods_extra_pkg_name)-$*
> +fixowner-%: pkgdir_bldinfo = $(CURDIR)/debian/$(bldinfo_pkg_name)-$*
> +fixowner-%: dbgpkgdir = $(CURDIR)/debian/$(bin_pkg_name)-$*-dbgsym
> +fixowner-%: signingv = $(CURDIR)/debian/$(bin_pkg_name)-signing/$(release)-$(revision)
> +fixowner-%: toolspkgdir = $(CURDIR)/debian/$(tools_flavour_pkg_name)-$*
> +fixowner-%: cloudpkgdir = $(CURDIR)/debian/$(cloud_flavour_pkg_name)-$*
> +fixowner-%: basepkg = $(hdrs_pkg_name)
> +fixowner-%: indeppkg = $(indep_hdrs_pkg_name)
> +fixowner-%: $(stampdir)/stamp-install-%
> + @echo Debug: $@
> + [ -e $(pkgdir_bin) ] && find $(pkgdir_bin) -print0 | xargs -0 chown 0:0 || true
> + [ -e $(pkgdir) ] && find $(pkgdir) -print0 | xargs -0 chown 0:0 || true
> + [ -e $(pkgdir_ex) ] && find $(pkgdir_ex) -print0 | xargs -0 chown 0:0 || true
> + [ -e $(pkgdir_bldinfo) ] && find $(pkgdir_bldinfo) -print0 | xargs -0 chown 0:0 || true
> + [ -e $(dbgpkgdir) ] && find $(dbgpkgdir) -print0 | xargs -0 chown 0:0 || true
> + [ -e $(signingv) ] && find $(signingv) -print0 | xargs -0 chown 0:0 || true
> + [ -e $(toolspkgdir) ] && find $(toolspkgdir) -print0 | xargs -0 chown 0:0 || true
> + [ -e $(cloudpkgdir) ] && find $(cloudpkgdir) -print0 | xargs -0 chown 0:0 || true
> + [ -e $(basepkg) ] && find $(basepkg) -print0 | xargs -0 chown 0:0 || true
> + [ -e $(indeppkg) ] && find $(indeppkg) -print0 | xargs -0 chown 0:0 || true
> +
I know its bike shedding a bit, but this cuts down on repetitive code:
$(foreach i, $(pkgdir_bin) $(pkgdir) $(pkgdir_ex) $(pkgdir_bldinfo)
$(dbgpkgdir) $(signingv) $(toolspkgdir) $(cloudpkgdir) $(basepkg)
$(indeppkg), [ -e $(i) ] && find $(i) -print0 | xargs -0 chown 0:0 || true;)
> # Used by developers as a shortcut to prepare a tree for compilation.
> prepare-%: $(stampdir)/stamp-prepare-%
> @echo Debug: $@
> # Used by developers to allow efficient pre-building without fakeroot.
> -build-%: $(stampdir)/stamp-install-%
> +build-%: fixowner-%
> @echo Debug: $@
>
> # Do the actual build, including image and modules
>
--
-----------
Tim Gardner
Canonical, Inc
More information about the kernel-team
mailing list