Interesting situation.

On 3/6/23 12:49, Ewoud Kohl van Wijngaarden wrote:
While rubygem-openscap is retired in Fedora, the Foreman project still packages it.

For context: rubygem-openscap can load libopenscap.so.8 and libopenscap.so.25 through FFI. Today we depend on a specific version, but every time it's bumped we go through a verification to see if the SO version hasn't been bumped.

A bit of a tangent first.
This sounds like it could be checked via a "simple" FFI load check in %check section, in ruby, something like:

~~~

require 'ffi'

module Check
  extend FFI::Library
  ffi_lib 'libopenscap.so.25'
end
~~~

This will throw an exception if the .so is not available.


At first I started with a trivial Requires: libopenscap.so.25 but that pulls in both openscap for i686 and x86_64. Directly depending on libopenscap.so.25()(64bit) feels wrong, so what is the correct approach here? Is there some helper macro here?

There are *some*, but nothing universal it seems. JFTR other packages that require libs like this are (and make use of some _isa macros):

cross-gcc.spec
ghdl.spec
glib2.spec
julia.spec
libreoffice.spec
redhat-lsb.spec
systemd.spec
asahi-installer.spec

You can grep through all specfiles using this tar: https://pkgs.fedoraproject.org/repo/rpm-specs-latest.tar.xz

I'd recommend reading the systemd and Julia files as inspiration, those 2 seem to be doing what you are speaking of.

tl;dr those spec files indicate you need to conditionally depend on both, depending on whether it is 32 or 64bit build.


Technically speaking I think it should depend on what rubygem-ffi can load, but on x86_64 that's probably 64 bit only. However, this is a bit out of my knowledge area.

This could, in theory, be checked in the %check section of the package as I indicated above, if you add the same to BuildRequires, even if it won't help if openscap changes the .so version.

Regards,
Jarek


For completeness, the discussion started in a PR:
https://github.com/theforeman/foreman-packaging/pull/9051
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to