lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <ZYvbdMfz1PzROlb6@buildd.core.avm.de> Date: Wed, 27 Dec 2023 09:08:20 +0100 From: Nicolas Schier <n.schier@....de> To: Masahiro Yamada <masahiroy@...nel.org> Cc: linux-kbuild@...r.kernel.org, Ben Hutchings <ben@...adent.org.uk>, Nathan Chancellor <nathan@...nel.org>, Nick Desaulniers <ndesaulniers@...gle.com>, Nicolas Schier <nicolas@...sle.eu>, linux-kernel@...r.kernel.org Subject: Re: [PATCH 3/6] kbuild: deb-pkg: set DEB_* variables if debian/rules is directly executed On Tue, Dec 26, 2023 at 10:52:40PM +0900, Masahiro Yamada wrote: > Since commit 491b146d4c13 ("kbuild: builddeb: Eliminate debian/arch > use"), direct execution of debian/rules results in the following error: > > dpkg-architecture: error: unknown option 'DEB_HOST_MULTIARCH' > > The current code: > > dpkg-architecture -a$DEB_HOST_ARCH -qDEB_HOST_MULTIARCH > > ... does not look sensible because: > > - For this code to work correctly, DEB_HOST_ARCH must be pre-defined, > which is true when the packages are built via dpkg-buildpackage. > In this case, DEB_HOST_MULTIARCH is also likely defined, hence there > is no need to query DEB_HOST_MULTIARCH in the first place. > > - If DEB_HOST_MULTIARCH is undefined, DEB_HOST_ARCH is likely undefined > too. So, you cannot query DEB_HOST_MULTIARCH in this way. This is > mostly the case where debian/rules is directly executed. > > When debian/rules is directly executed, querying DEB_HOST_MUCHARCH is > not enough because we need to know DEB_{BUILD,HOST}_GNU_TYPE as well. > > All DEB_* variables are defined when the package build is initiated by > dpkg-buildpackage, but otherwise, let's call dpkg-architecture to set > all DEB_* environment variables. > > This implementation relies on dpkg commit 7c54fa2b232e > ("dpkg-architecture: Add a --print-format option"). > > Signed-off-by: Masahiro Yamada <masahiroy@...nel.org> > --- > > scripts/package/builddeb | 5 ++--- > scripts/package/debian/rules | 12 +++++++++++- > 2 files changed, 13 insertions(+), 4 deletions(-) > > diff --git a/scripts/package/builddeb b/scripts/package/builddeb > index 2fe51e6919da..2eb4910f0ef3 100755 > --- a/scripts/package/builddeb > +++ b/scripts/package/builddeb > @@ -171,9 +171,8 @@ install_libc_headers () { > > # move asm headers to /usr/include/<libc-machine>/asm to match the structure > # used by Debian-based distros (to support multi-arch) > - host_arch=$(dpkg-architecture -a$DEB_HOST_ARCH -qDEB_HOST_MULTIARCH) > - mkdir $pdir/usr/include/$host_arch > - mv $pdir/usr/include/asm $pdir/usr/include/$host_arch/ > + mkdir "$pdir/usr/include/${DEB_HOST_MULTIARCH}" > + mv "$pdir/usr/include/asm" "$pdir/usr/include/${DEB_HOST_MULTIARCH}" > } > > rm -f debian/files > diff --git a/scripts/package/debian/rules b/scripts/package/debian/rules > index 529b71b55efa..8f24a8e84bf2 100755 > --- a/scripts/package/debian/rules > +++ b/scripts/package/debian/rules > @@ -30,5 +30,15 @@ build-arch: > > .PHONY: clean > clean: > - rm -rf debian/files debian/linux-* > + rm -rf debian/files debian/linux-* debian/deb-env.vars > $(MAKE) -f $(srctree)/Makefile ARCH=$(ARCH) clean > + > +# If DEB_HOST_ARCH is empty, it is likely that debian/rules was executed > +# directly. Run 'dpkg-architecture --print-set --print-format=make' to > +# generate a makefile construct that exports all DEB_* variables. > +ifndef DEB_HOST_ARCH > +-include debian/deb-env.vars > + > +debian/deb-env.vars: > + dpkg-architecture -a$$(cat debian/arch) --print-set --print-format=make > $@ > +endif > -- > 2.40.1 Thanks! Reviewed-by: Nicolas Schier <n.schier@....de>
Powered by blists - more mailing lists