All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] builddeb: Fix build on non-Debian/Ubuntu distros
@ 2020-10-30 16:56 Petr Vorel
  2020-10-30 17:14 ` Ben Hutchings
  0 siblings, 1 reply; 5+ messages in thread
From: Petr Vorel @ 2020-10-30 16:56 UTC (permalink / raw)
  To: linux-kbuild; +Cc: Petr Vorel, Guillem Jover, Masahiro Yamada, Ben Hutchings

This fixes make bindeb-pkg for RPM based distros, which don't have
dpkg-dev (and thus not /usr/bin/dpkg-buildpackage), which sets
$DEB_RULES_REQUIRES_ROOT.

Fixes: 3e8541803624 ("builddeb: Enable rootless builds")

Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
---
Hi,

I admit not many people compile kernel with bindeb-pkg on  RPM based
distro, but it'd be nice it were working.

openSUSE has most of other required packages, although there are some
missing dependencies, thus DPKG_FLAGS="-d" is needed.

Kind regards,
Petr

 scripts/package/builddeb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/package/builddeb b/scripts/package/builddeb
index 1b11f8993629..287e4bbd222c 100755
--- a/scripts/package/builddeb
+++ b/scripts/package/builddeb
@@ -37,7 +37,7 @@ create_package() {
 		| xargs -r0 md5sum > DEBIAN/md5sums"
 
 	# Fix ownership and permissions
-	if [ "$DEB_RULES_REQUIRES_ROOT" = "no" ]; then
+	if [ -z "$DEB_RULES_REQUIRES_ROOT" -o "$DEB_RULES_REQUIRES_ROOT" = "no" ]; then
 		dpkg_deb_opts="--root-owner-group"
 	else
 		chown -R root:root "$pdir"
-- 
2.27.0.rc0


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] builddeb: Fix build on non-Debian/Ubuntu distros
  2020-10-30 16:56 [PATCH] builddeb: Fix build on non-Debian/Ubuntu distros Petr Vorel
@ 2020-10-30 17:14 ` Ben Hutchings
  2020-10-30 18:57   ` Petr Vorel
  0 siblings, 1 reply; 5+ messages in thread
From: Ben Hutchings @ 2020-10-30 17:14 UTC (permalink / raw)
  To: Petr Vorel, linux-kbuild; +Cc: Guillem Jover, Masahiro Yamada

[-- Attachment #1: Type: text/plain, Size: 1336 bytes --]

On Fri, 2020-10-30 at 17:56 +0100, Petr Vorel wrote:
> This fixes make bindeb-pkg for RPM based distros, which don't have
> dpkg-dev (and thus not /usr/bin/dpkg-buildpackage), which sets
> $DEB_RULES_REQUIRES_ROOT.
> 
> Fixes: 3e8541803624 ("builddeb: Enable rootless builds")

This doesn't seem to fix a bug, and in fact it would introduce one.

> Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
[...]
> --- a/scripts/package/builddeb
> +++ b/scripts/package/builddeb
> @@ -37,7 +37,7 @@ create_package() {
>                 | xargs -r0 md5sum > DEBIAN/md5sums"
>  
>         # Fix ownership and permissions
> -       if [ "$DEB_RULES_REQUIRES_ROOT" = "no" ]; then
> +       if [ -z "$DEB_RULES_REQUIRES_ROOT" -o "$DEB_RULES_REQUIRES_ROOT" = "no" ]; then
>                 dpkg_deb_opts="--root-owner-group"
>         else
>                 chown -R root:root "$pdir"

This is the wrong default behaviour; it will cause a regression with
older versions of dpkg that don't support this option.

If you invoke this script directly and do not use dpkg-buildpackage
(which I don't think is really supported anyway) then you must either
do so as root or use fakeroot (as dpkg-buildpackage does by default).

Ben.

-- 
Ben Hutchings
The first rule of tautology club is the first rule of tautology club.


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] builddeb: Fix build on non-Debian/Ubuntu distros
  2020-10-30 17:14 ` Ben Hutchings
@ 2020-10-30 18:57   ` Petr Vorel
  2020-11-02  8:35     ` Masahiro Yamada
  0 siblings, 1 reply; 5+ messages in thread
From: Petr Vorel @ 2020-10-30 18:57 UTC (permalink / raw)
  To: Ben Hutchings; +Cc: linux-kbuild, Guillem Jover, Masahiro Yamada

Hi Ben,

first, thanks for your review.

> On Fri, 2020-10-30 at 17:56 +0100, Petr Vorel wrote:
> > This fixes make bindeb-pkg for RPM based distros, which don't have
> > dpkg-dev (and thus not /usr/bin/dpkg-buildpackage), which sets
> > $DEB_RULES_REQUIRES_ROOT.

> > Fixes: 3e8541803624 ("builddeb: Enable rootless builds")

> This doesn't seem to fix a bug, and in fact it would introduce one.

> > Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
> [...]
> > --- a/scripts/package/builddeb
> > +++ b/scripts/package/builddeb
> > @@ -37,7 +37,7 @@ create_package() {
> >                 | xargs -r0 md5sum > DEBIAN/md5sums"

> >         # Fix ownership and permissions
> > -       if [ "$DEB_RULES_REQUIRES_ROOT" = "no" ]; then
> > +       if [ -z "$DEB_RULES_REQUIRES_ROOT" -o "$DEB_RULES_REQUIRES_ROOT" = "no" ]; then
> >                 dpkg_deb_opts="--root-owner-group"
> >         else
> >                 chown -R root:root "$pdir"

> This is the wrong default behaviour; it will cause a regression with
> older versions of dpkg that don't support this option.
Sorry for wrong report. I tested it on Debian, but only on unstable.

> If you invoke this script directly and do not use dpkg-buildpackage
> (which I don't think is really supported anyway) then you must either
> do so as root or use fakeroot (as dpkg-buildpackage does by default).
Well, both bindeb-pkg and deb-pkg use dpkg-buildpackage.
Thus fakeroot is used by default.

/bin/sh -c dpkg-buildpackage -r"fakeroot -u" -a$(cat debian/arch) -d -b -nc -uc

The root cause is that while calling chown -R root:root "$pdir" is ok on Debian,
it's refused for fakeroot in openSUSE. I can run it with
DEB_RULES_REQUIRES_ROOT=no, that should fix that, but I'd prefer it were working
by default (although I admit not many people need it).
I reported it because the default setup worked before 3e8541803624.
I'll have a look what configuration (permission) is missing on openSUSE to allow
chown -R root:root for non-root user.

> Ben.

Kind regards,
Petr

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] builddeb: Fix build on non-Debian/Ubuntu distros
  2020-10-30 18:57   ` Petr Vorel
@ 2020-11-02  8:35     ` Masahiro Yamada
  2020-11-02 19:05       ` Petr Vorel
  0 siblings, 1 reply; 5+ messages in thread
From: Masahiro Yamada @ 2020-11-02  8:35 UTC (permalink / raw)
  To: Petr Vorel; +Cc: Ben Hutchings, Linux Kbuild mailing list, Guillem Jover

On Sat, Oct 31, 2020 at 3:58 AM Petr Vorel <petr.vorel@gmail.com> wrote:
>
> Hi Ben,
>
> first, thanks for your review.
>
> > On Fri, 2020-10-30 at 17:56 +0100, Petr Vorel wrote:
> > > This fixes make bindeb-pkg for RPM based distros, which don't have
> > > dpkg-dev (and thus not /usr/bin/dpkg-buildpackage), which sets
> > > $DEB_RULES_REQUIRES_ROOT.
>
> > > Fixes: 3e8541803624 ("builddeb: Enable rootless builds")
>
> > This doesn't seem to fix a bug, and in fact it would introduce one.
>
> > > Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
> > [...]
> > > --- a/scripts/package/builddeb
> > > +++ b/scripts/package/builddeb
> > > @@ -37,7 +37,7 @@ create_package() {
> > >                 | xargs -r0 md5sum > DEBIAN/md5sums"
>
> > >         # Fix ownership and permissions
> > > -       if [ "$DEB_RULES_REQUIRES_ROOT" = "no" ]; then
> > > +       if [ -z "$DEB_RULES_REQUIRES_ROOT" -o "$DEB_RULES_REQUIRES_ROOT" = "no" ]; then
> > >                 dpkg_deb_opts="--root-owner-group"
> > >         else
> > >                 chown -R root:root "$pdir"
>
> > This is the wrong default behaviour; it will cause a regression with
> > older versions of dpkg that don't support this option.
> Sorry for wrong report. I tested it on Debian, but only on unstable.
>
> > If you invoke this script directly and do not use dpkg-buildpackage
> > (which I don't think is really supported anyway) then you must either
> > do so as root or use fakeroot (as dpkg-buildpackage does by default).
> Well, both bindeb-pkg and deb-pkg use dpkg-buildpackage.
> Thus fakeroot is used by default.
>
> /bin/sh -c dpkg-buildpackage -r"fakeroot -u" -a$(cat debian/arch) -d -b -nc -uc
>
> The root cause is that while calling chown -R root:root "$pdir" is ok on Debian,
> it's refused for fakeroot in openSUSE. I can run it with
> DEB_RULES_REQUIRES_ROOT=no, that should fix that, but I'd prefer it were working
> by default (although I admit not many people need it).
> I reported it because the default setup worked before 3e8541803624.
> I'll have a look what configuration (permission) is missing on openSUSE to allow
> chown -R root:root for non-root user.
>
> > Ben.
>
> Kind regards,
> Petr



I do not know what is different on openSUSE, but
my understanding is like follows:



For old dpkg tools (which does not know "Rules-Requires-Root: no"),
$DEB_RULES_REQUIRES_ROOT is empty.
-> We run chown -R root:root like before.


For new dpkg tools (which knows "Rules-Requires-Root: no"),
$DEB_RULES_REQUIRES_ROOT is "no".
-> We pass --root-owner-group to dpkg-deb.







--
Best Regards
Masahiro Yamada

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] builddeb: Fix build on non-Debian/Ubuntu distros
  2020-11-02  8:35     ` Masahiro Yamada
@ 2020-11-02 19:05       ` Petr Vorel
  0 siblings, 0 replies; 5+ messages in thread
From: Petr Vorel @ 2020-11-02 19:05 UTC (permalink / raw)
  To: Masahiro Yamada; +Cc: Ben Hutchings, Linux Kbuild mailing list, Guillem Jover

> On Sat, Oct 31, 2020 at 3:58 AM Petr Vorel <petr.vorel@gmail.com> wrote:

> > Hi Ben,

> > first, thanks for your review.

> > > On Fri, 2020-10-30 at 17:56 +0100, Petr Vorel wrote:
> > > > This fixes make bindeb-pkg for RPM based distros, which don't have
> > > > dpkg-dev (and thus not /usr/bin/dpkg-buildpackage), which sets
> > > > $DEB_RULES_REQUIRES_ROOT.

> > > > Fixes: 3e8541803624 ("builddeb: Enable rootless builds")

> > > This doesn't seem to fix a bug, and in fact it would introduce one.

> > > > Signed-off-by: Petr Vorel <petr.vorel@gmail.com>
> > > [...]
> > > > --- a/scripts/package/builddeb
> > > > +++ b/scripts/package/builddeb
> > > > @@ -37,7 +37,7 @@ create_package() {
> > > >                 | xargs -r0 md5sum > DEBIAN/md5sums"

> > > >         # Fix ownership and permissions
> > > > -       if [ "$DEB_RULES_REQUIRES_ROOT" = "no" ]; then
> > > > +       if [ -z "$DEB_RULES_REQUIRES_ROOT" -o "$DEB_RULES_REQUIRES_ROOT" = "no" ]; then
> > > >                 dpkg_deb_opts="--root-owner-group"
> > > >         else
> > > >                 chown -R root:root "$pdir"

> > > This is the wrong default behaviour; it will cause a regression with
> > > older versions of dpkg that don't support this option.
> > Sorry for wrong report. I tested it on Debian, but only on unstable.

> > > If you invoke this script directly and do not use dpkg-buildpackage
> > > (which I don't think is really supported anyway) then you must either
> > > do so as root or use fakeroot (as dpkg-buildpackage does by default).
> > Well, both bindeb-pkg and deb-pkg use dpkg-buildpackage.
> > Thus fakeroot is used by default.

> > /bin/sh -c dpkg-buildpackage -r"fakeroot -u" -a$(cat debian/arch) -d -b -nc -uc

> > The root cause is that while calling chown -R root:root "$pdir" is ok on Debian,
> > it's refused for fakeroot in openSUSE. I can run it with
> > DEB_RULES_REQUIRES_ROOT=no, that should fix that, but I'd prefer it were working
> > by default (although I admit not many people need it).
> > I reported it because the default setup worked before 3e8541803624.
> > I'll have a look what configuration (permission) is missing on openSUSE to allow
> > chown -R root:root for non-root user.

> > > Ben.

> > Kind regards,
> > Petr



> I do not know what is different on openSUSE, but
> my understanding is like follows:



> For old dpkg tools (which does not know "Rules-Requires-Root: no"),
> $DEB_RULES_REQUIRES_ROOT is empty.
> -> We run chown -R root:root like before.


> For new dpkg tools (which knows "Rules-Requires-Root: no"),
> $DEB_RULES_REQUIRES_ROOT is "no".
> -> We pass --root-owner-group to dpkg-deb.

Yes. I'm using dpkg 1.19.0.4, which knows "Rules-Requires-Root: no", but does
not know --rules-requires-root (added in 1.19.1). export
DEB_RULES_REQUIRES_ROOT=no fixes the problem for my version (but that does not
break the build). I just wanted to save time for the others, but 1) there are
probably not many people using OBS to build Debian packages and 2) maybe it's
just me who does not know it.

It looks to me debhelper is not used for kernel Debian packaing, right?
At least building works even I don't have it.

As a result of this I'll also update openSUSE dpkg package to latest release.

Thanks all for explanation.

Kind regards,
Petr

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-11-02 19:05 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-30 16:56 [PATCH] builddeb: Fix build on non-Debian/Ubuntu distros Petr Vorel
2020-10-30 17:14 ` Ben Hutchings
2020-10-30 18:57   ` Petr Vorel
2020-11-02  8:35     ` Masahiro Yamada
2020-11-02 19:05       ` Petr Vorel

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.