[Bug 720998] Review Request: OpenNL - A library for solving sparse linear systems

bugzilla at redhat.com bugzilla at redhat.com
Thu Jul 14 17:51:40 UTC 2011


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 at 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.

-- 
Configure bugmail: https://bugzilla.redhat.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the package-review mailing list