Please do not reply directly to this email. All additional comments should be made in the comments box of this bug.
https://bugzilla.redhat.com/show_bug.cgi?id=720998
--- Comment #5 from Richard Shaw hobbes1069@gmail.com 2011-07-14 13:51:40 EDT --- (In reply to comment #3)
(In reply to comment #2)
Hey,
Just some quick questions about the spec file.
I'm pretty sure my patch update had cmake creating the correct library symlinks. Is there a particular reason you want to create them manually? Also, since you've hardcoded the names in %install and %files, you'll have to fix this on every version change.
Really?
Yup! But I was concentrating so much on the build/cmake side I forgot to update the install side. My Fault!
With this in the spec:
# Install includes install -d $RPM_BUILD_ROOT/%{_includedir}/NL/ cp -av src/NL/nl.h $RPM_BUILD_ROOT/%{_includedir}/ find src/NL/ -name "*.h" ! -name "nl.h" -execdir cp -av '{}' $RPM_BUILD_ROOT/%{_includedir}/NL/ ;
# Create the .so symlinks #pushd $RPM_BUILD_ROOT/%{_libdir} # ln -sfv libopennl.so.3.2.1 libopennl.so # ln -sfv libopennl.so.3.2.1 libopennl.so.3 #popd
%post -p /sbin/ldconfig %postun -p /sbin/ldconfig
%files %doc doc #%{_libdir}/libopennl.so.3.2.1 #%{_libdir}/libopennl.so.3
They're not commented out in mine but I instead used one line: %{_libdir}/libopennl.so.*
That way it picks up all the versioned libraries and leaves the .so for the -devel package.
To fix "%install" I first need to understand why you're using the "install" command. Generally mkdir and cp (with appropriate option, -p, -a, -r, etc.) is sufficient. In my spec files (and many others I've learned from) install is generally used to correct things like permissions. Cmake *SHOULD* create libraries with correct permissions. If not, rpmlint will complain about it. That being said I think the library portion of %install could look like this:
""" %install # Install library files mkdir -p $RPM_BUILD_ROOT/%{_libdir} cp -p build/linux-Release/binaries/lib/libopennl.so* $RPM_BUILD_ROOT/%{_libdir}/ """
Which will copy the library and symlinks (instead of just the library, which is what I forgot to fix). Also all the above changes will make all the global variables at the top of the spec unnecessary.