[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Issues with progname
Issues with progname
Fri, 18 Mar 2016 17:08:45 +0100
KMail/4.14.10 (Linux/4.4.4-301.fc23.x86_64; KDE/4.14.17; x86_64; ; )
(please CC me, I'm not subscribed)
while porting libguestfs (which uses gnulib) to FreeBSD, I noticed
issues due to program_name. Namely, we don't use it directly, but some
of the used gnulib modules do, leading to undefined references.
gnulib provides a 'progname' module, but at least to me it has few
(1) its license
progname is GPL 3+, which means it cannot be used in the main library
(which is LGPL 2) without changing the license of the resulting work.
progname requires users to explicitly call set_program_name() from
main(), but this is not always doable: at least in the case of
libguestfs, among the things that need program_name, there are:
- the main library (libguestfs.so.1)
- the lua binding, which is a dlopen'ed module
so there is not really a way to even get argv.
At least on FreeBSD, there is a getprogname() library function which
provides what is needed, but cannot be used in a static initializer
(while the "program_name" to provide must be like that).
My idea would be something like the following:
a) change all the program_name usages into call of some internal
function, e.g. gl_get_program_name()
b) create a new LGPL gl_prog_name (or so) whose header would #define it
to the variable (program_invocation_name on GNU libc) / function
(getprogname() on FreeBSD) available in the platform, leaving an
undefined reference where not ported yet
c) make all the modules currently referencing program_name (e.g. error)
depend on this new module, instead of leaving this to users (unlike
what happens now)
having a new module will not break compatibility with users of the
existing progname module, and will make gnulib modules using
program_name work OOTB.
Hence I'm asking for opinion on how to proceed in this case, whether my
proposal (which I can give a try if deemed acceptable) is fine or there
is something else I'm missing.
Description: This is a digitally signed message part.
- Issues with progname,
Pino Toscano <=