#345 Ruby guidelines: Filtering automatic provides
Closed: Invalid None Opened 5 years ago by vondruch.

Binary ruby- and rubygem- packages ships .so files. These .so files are picked up by RPM's automatic Requires/Provides generator and they are listed among provides, e.g.:

{{{
$ repoquery -q --provides rubygem-sqlite3
rubygem(sqlite3) = 1.3.5-4.fc19
rubygem-sqlite3 = 1.3.5-4.fc19
rubygem-sqlite3(x86-64) = 1.3.5-4.fc19
sqlite3_native.so()(64bit)
}}}

However, these .so files are not useful outside of Ruby world and they might even conflict with some system library (although I don't have any example at my hand currently). So I believe, we should filter out these automatic provides, as is done in Perl for example. Therefore, since F19, there are available %{?ruby_default_filter} and %{?rubygems_default_filter} macros, which allow to filter out these provides.

I am proposing this [1] addition to Ruby guidelines to refer to these macros. The AutoProvidesAndRequiresFiltering wiki page [2] might cross-reference these macros as well.

For your curiosity, this is their implementation:

{{{
%ruby_default_filter %{expand: \
%global __provides_exclude_from %{?__provides_exclude_from:%{__provides_exclude_from}|}^(%{ruby_vendorarchdir}|%{ruby_sitearchdir})/.*\\.so$ \
}

%rubygems_default_filter %{expand: \
%global __provides_exclude_from %{?__provides_exclude_from:%{__provides_exclude_from}|}^%{gem_extdir_mri}/.*\\.so$ \
}
}}}

[1] https://fedoraproject.org/w/index.php?title=PackagingDrafts/Ruby&diff=351553&oldid=334454 [[BR]]
[2] https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering


Just note that this should not be necessary in Fedora >= 20 as rpm filters non-library sonames automatically.

Panu, thanks for head up. I was not aware of that change. I close this ticket for now and will see if we need such filter for other things.

Login to comment on this ticket.

Metadata