On Wed, Jan 6, 2021 at 5:47 PM James Le Cuirot <[email protected]> wrote:
>
> On Mon, 4 Jan 2021 19:28:37 -0500
> Mike Gilbert <[email protected]> wrote:
>
> > On Mon, Jan 4, 2021 at 6:45 PM Mike Gilbert <[email protected]> wrote:
> > >
> > > On Mon, Jan 4, 2021 at 6:18 PM James Le Cuirot <[email protected]> wrote:
> > > > $ PKG_CONFIG_SYSROOT_DIR=/foo pkg-config --variable=udevdir udev
> > > > /lib/udev
> > > >
> > > > The udevdir variable is not affected by PKG_CONFIG_SYSROOT_DIR at all.
> > > > And why would it be? The man page says that this variable is only
> > > > applied to -I and -L flags. I don't know for sure but I suspect that
> > > > pkg-config just sees this as some arbitrary variable with no special
> > > > path handling at all. I wonder what led you to think that this fix was
> > > > necessary?
> > >
> > > Interesting!
> > >
> > > pkg-config behaves differently on my system:
> > >
> > > % PKG_CONFIG_SYSROOT_DIR=/foo pkg-config --variable=udevdir udev
> > > /foo/lib/udev
> > >
> > > This appears to be a difference in behavior between dev-util/pkgconfig
> > > and dev-util/pkgconf. I am using pkgconf, and I would guess you are
> > > using pkgconfig.
> > >
> > > I guess I will ask pkgconf upstream for help on this; it seems like
> > > this is probably an unintended behavior.
> >
> > It seems that the pkgconf behavior is intentional.
> >
> > https://github.com/pkgconf/pkgconf/issues/69
> >
> > I opened an issue to see if we can get some kind of opt-out.
> >
> > https://github.com/pkgconf/pkgconf/issues/205
>
> Hmmm. At this point, I'm thinking maybe we should just address this in
> cross-pkg-config. It seems unfair to ask upstream to accommodate this
> when the tool is just doing what we asked it to. Perhaps it could
> respect PKG_CONFIG_SYSROOT_DIR if it is already set, even when empty.
> It wouldn't allow to you set this differently for the build host but
> you shouldn't ever have to. I think I'd prefer this over adding yet
> another confusing variable. The same could be applied to
> PKG_CONFIG_LIBDIR and PKG_CONFIG_SYSTEM_LIBRARY_PATH for consistency.
> What do you think?

I like the idea of having cross-pkg-config respect
PKG_CONFIG_SYSROOT_DIR from the calling environment (even if it is
empty). That's just a more flexible design overall.

However, I think there's a fundamental design conflict here. Prefixing
all pkgconfig variables that happen to start with a slash is
problematic, and the desired result depends on the context in which it
will be used.

If the result is going to be used to find some existing file in
SYSROOT (like the SDK example included in issue 69 from above), then
we want it to be prefixed with SYSROOT.

If the result is going to be used to install new files, we don't want
SYSROOT in the result. The package manager is responsible for
prefixing the paths with ROOT when merging the files.

We could apply workarounds in ebuilds/eclasses to make this
distinction in Gentoo by setting PKG_CONFIG_SYSROOT_DIR selectively.
However, I wonder if there is a workable solution to this that could
be applied in upstream projects.

Reply via email to