On Wed, Dec 11, 2013 at 11:03:00AM -0500, John Dennis wrote:
I'm not sure how to solve the following problem and I'm
looking for advice.
I've got a package which uses a configure script (autotools) which
decides what loadable modules it will build based on what's available
from the installed libraries [1]. This changes what will appear in the
%files section. I control what's in the %files via an RPM variable I set
based on %{?rhel} and %{%fedora} tests.
But basing the conditional on the rhel or fedora version is fragile
because updates have changed what's available in the library. I'd prefer
to base the conditional on the library contents just like the configure
script does. But I'm not really sure how to go about this. I don't
believe there is any mechanism which would allow me to interrogate the
contents of config.status from the %build stage which would allow me to
conditionalize the contents of %files (or is there?).
I suppose I could perform a test equivalent to the one used by configure
by running a shell command early in the spec file (akin to what we
currently do to determine the Python library path, etc.)
Are there examples of solving this problem cleanly? Suggestions? Comments?
[1] For the curious the issue is the availability of elliptic curve
crypto features, something which seems to keep changing and my spec file
breaks whenever it does.
This would be an anti-goal of rpm. rpm tries to create reproducible builds.
Basing off what features are provided at buildtime defeats this. You are
correct in seeing that this is somewhat at odds with the philosophy of
autotools (which is to detect features that can be built at buildtime) but
that doesn't make either tool wrong; they're just designed with different
goals in mind.
There are ways for some packages to work around this. Many configure
scripts allow you to explicitly choose to enable or disable features that
configure can detect. So your package may have something like
./configure --without-elliptic-curve
which can be used to always build without elliptic curve support. Turning
that flag on in the stable Fedora releases may be the best thing for you to
do here (while suffering through the changes in rawhide until the feature
becomes always buildable).
-Toshio