[Bug 476398] Review Request: eclib - A Library for Doing Computations on Elliptic Curves

bugzilla at redhat.com bugzilla at redhat.com
Thu Mar 19 09:38:17 UTC 2009


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=476398





--- Comment #19 from Michael Schwendt <bugs.michael at gmx.net>  2009-03-19 05:38:10 EDT ---
> g++ -c -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-
> protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic
> -fasynchronous-unwind-tables -fPIC -DUSE_PARI_FACTORING -DNTL_ALL
> -I/usr/local/include -I/usr/local/include interface.cc -o interface_n.o

> pslave_n.o parifact_n.o  -lpari -L/usr/local/lib -L/usr/local/lib -lntl
> -lgmp -lpari -lm  

Find out where the -I/usr/local/include and -L/usr/local/lib come from, then
get rid of them for sake of reproducible builds. No issue for builds in clean
buildroots. Not clean for ordinary builds on installed Fedora systems where
/usr/local might contain locally built stuff.


> %package        devel

According to the guidelines, this ought to
Requires: %{name} = %{version}-%{release}
to enforce a matching pair of development files and binaries.
This guideline alone should make a packager realise "oh, wait, there are shared
libs in this package, so not creating a main library package for them would be
strange".


In reply to comment 3:
> - fix the soname mess, probably install to a subdirectory of _libdir?

> %{_libdir}/%{name}/*.so
> %{_libdir}/%{name}/lib*.a

That doesn't fix the "soname mess".

It makes things worse, because you've moved the shared libs out of run-timer
linker's search path. Any application linked to these libs would fail to start.
The static archive would not be found either at build-time. It would be
necessary to adjust the compiler's library search path (-L%{_libdir}/%{name}),
which probably no existing application does, because it expects to find the
eclib libraries in default search path.

Further, the shared libraries [if moved incorrectly as in current spec file]
are still seen by rpmbuild's dependency generators. They still lead to
automatic SONAME "Provides" and "Requires", even if the libraries won't be
found at run-time.

The SONAME is the internal shared object name as stored in the ELF header. You
can display it with objdump -p or eu-readelf like this:

$ eu-readelf -d /usr/lib/libgthread-2.0.so|grep -i soname
  SONAME            Library soname: [libgthread-2.0.so.0]



Noticing that the package builds several test programs, consider including a
%check section for "make check". It is good packaging-practise to run a
test-suite at build-time unless it is known/confirmed to be broken.

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