Bug#703941: -p (path) option clashes with generic debhelper -p (package) option
Niels Thykier
niels at thykier.net
Mon Jan 1 10:31:02 GMT 2024
On Mon, 30 Oct 2017 09:43:55 +0000 Simon McVittie <smcv at debian.org> wrote:
> On Tue, 26 Mar 2013 at 00:27:07 +0100, Michael Biebl wrote:
> > Using -p as option to specify the path is a poor choice since it clashes
> > with the generic -p option which is used to specify the package.
> >
> > Looking at e.g. gnome-shell's debian/rules, I'm actually not sure what
> > the result of this call will be:
> > dh_girepository -p$(cdbs_curpkg) -l src -p /usr/lib/mutter
>
> The answer seems to be that -p is always interpreted as dh_girepository's
> local -p option, and the second -p overwrites the first, so it's
> equivalent to dh_girepository -l src -p /usr/lib/mutter. To get the
> effect that was intended, write:
> dh_girepository --package=$(cdbs_curpkg) -l src -p /usr/lib/mutter
>
> Regards,
> smcv
>
>
Hi
I would recommend that `dh_girepository` would detect `-p` without a `/`
(or without `:`) and produce an error or a warning for that case until a
better solution comes around.
A path without `/` implies a top-level directory, which is in itself
exceedingly unlikely to be intentional for `-p` and therefore a very
strong indicator that someone wanted `-p <pkg>`.
Secondly, even if the user *wanted* that top-level directory, it is
trivial to bypass the check by prefixing with ./ or adding a trailing
slash - both would clearly mark it as "not a package" and happens to
work with path looks up out of the box.
Code-wise, this would be something like:
```diff
if ($dh{P_PARAMS}) {
+ if ($dh{P_PARAMS} !~ m{[/:]}) {
+ error("Use --package ... or prefix path with './' ...");
+ }
push @privdirs, split /:/, $dh{P_PARAMS};
}
```
(hand-written delta; not expecting it to apply)
With this, there would at least be less surprises that the user would
not be using the standard debhelper `-p` for cases that uses a package name.
If you want to do a more permanent fix where `-p` goes back to being the
regular `debhelper -p`, I can recommend using a compat check to
conditionally assign the `-p` and we can document the change in the
standard debhelper compat upgrade check list.
Best regards,
Niels
More information about the pkg-gnome-maintainers
mailing list