On Tue, 10 May 2022 12:48:23 +0200,
Florian Weimer wrote:
> * Neal H. Walfield:
> > On Tue, 10 May 2022 12:04:52 +0200,
> > Florian Weimer wrote:
> >> * Neal H. Walfield:
> >> 
> >> > There are two major constraints.  Because rpm's OpenPGP API is public,
> >> > it must be preserved until the next soname bump.  And, the OpenPGP
> >> > backend should be pluggable.
> >> 
> >> How is this plug-in mechanism supposed to work?  Via RPM configuration
> >> files?
> >
> > It is a build-time configuration option.  When you configure rpm, you
> > can do:
> >
> >   ./configure --with-crypto=sequoia
> >
> > to get the Sequoia backend.  --with-crypto defaults to libgcrypt,
> > which uses the internal OpenPGP implementation with libgcrypt.  (There
> > is also --with-crypto=openssl, which uses the internal OpenPGP
> > implementation with OpenSSL.)
> 
> That's a very limited form of pluggability.

True.

> I expect the most portable approach (for ELF targets) is to use a stub
> shared object that contains all symbols, including those provided by
> dependencies.  (librpmio.so should probably be a linker script
> referencing the actual object, to prevent accidental loading of
> librpmio.so via dlopen.)  That approach keeps the run-time DT_NEEDED
> value an implementation detail.
> 
> I don't know if libtool supports that out of the box.
> 
> On non-ELF targets, you may need forwarder functions, and the plug-in
> library cannot use the same symbols.

Thanks for the ideas.  Panu also suggested forwarder functions.  That
indeed sounds like the least troublesome from a portability and
robustness perspective.

Thanks,

:) Neal

Reply via email to