Index | Thread | Search

From:
George Koehler <kernigh@gmail.com>
Subject:
Re: pkg-config relocatable .pc support
To:
Jeremie Courreges-Anglas <jca@wxcvbn.org>
Cc:
tech@openbsd.org
Date:
Mon, 13 Jan 2025 13:23:03 -0500

Download raw body.

Thread
On Mon, 13 Jan 2025 14:17:54 +0100
Jeremie Courreges-Anglas <jca@wxcvbn.org> wrote:

> Thanks for the suggestion, but that doesn't work.  At the call site
> we're within "package OpenBSD::PkgConfig;", so a bare dirname() would
> be looked up as OpenBSD::PkgConfig::dirname.  Hence the fully
> qualified call used in the diff.

Sorry, I forgot that Perl modules have "package _;" lines.
The bare dirname() works only if I move the "use" after "package",

package OpenBSD::PkgConfig;
use File::Basename;

For example, src/usr.sbin/pkg_add/OpenBSD/Delete.pm has multiple
packages doing "use File::Basename;".  In general, "use" goes after
"package" unless it is a lexical pragma like "use v5.36;".

If code calls "File::Basename::dirname" by the full name, then I would
expect it to "use File::Basename ();" to import the empty list.

The rest of your diff looks correct.  While running it with the bare
dirname() and the moved "use", I confirm that --cflags and --libs
give the same output (or same error) for every package in --list-all
on my OpenBSD/amd64.  I made a .pc with "prefix=${pcfiledir}/../.."
and it behaved the same on OpenBSD (with your diff) and Linux (where
pkg-config is pkgconf).

--gkoehler