On Sat, Oct 31, 2020 at 3:58 AM Petr Vorel <petr.vorel@xxxxxxxxx> 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@xxxxxxxxx> > > [...] > > > --- 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