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.
