Request for Review: hula

Michael Schwendt bugs.michael at gmx.net
Sat Apr 16 09:38:46 UTC 2005


On Fri, 15 Apr 2005 20:33:20 -0400, Kevin Gray wrote:

> This is the second package update of hula. Information on the software can be 
> found at www.hula-project.org. 
> 

In order to build it, I've had to add the following missing
build requirements:

  libtool (as before)
  openssl-devel

Try to get upstream to ship a good tarball, where you don't need to run
autogen.sh.

> I made the changes you referenced earlier. There is one thing that I dont 
> completely understand due to my ignorance, and I was wondering if you had 
> some insight. The .so files that should be in the -devel package are required 
> by hula to run, so the package will always need hula and hula-devel to run. 
> Is this the norm for a -devel package? Thanks for the help...

Well, you have moved _all_ shared libraries into the -devel packages, not
just .a/.la/.so from /usr/lib, which are only needed for development.

$ sudo rpm -ivh  /home/qa/tmp/rpm/RPMS/hula-r178-2.i386.rpm 
error: Failed dependencies:
        libhulalogger.so.0 is needed by hula-r178-2.i386
        libhulamdb.so.0 is needed by hula-r178-2.i386
        libhulamemmgr.so.0 is needed by hula-r178-2.i386
        libhulamsgapi.so.0 is needed by hula-r178-2.i386
        libhulaxpl.so.0 is needed by hula-r178-2.i386

Generally, *.so files are symlinks pointing to versioned *.so.* libraries
(note the subtle difference, *.so is not equal to *.so.*). Unless the *.so
files are accessed at run-time (e.g. via dlopen), they are only needed at
compile/link-time (option -lfoo in compiler command line means to link
against libfoo.so). If you wanted to install multiple versions of a
library at once, e.g. libfoo.so.0 and libfoo.so.1, you could not have
multiple *.so symlinks with the same file name pointing to different files
(should it be libfoo.so -> libfoo.so.0 or libfoo.so -> libfoo.so.1?).
That's why *.so files, which are needed at compile/link-time only, usually
are put into -devel packages.

Programs are linked against versioned *.so.* libraries. These dependencies
are caught automatically by rpmbuild (see "rpm --query --requires
packagename").  Good programs, which open libraries at run-time, open
versioned files too, and not non-versioned ones like "libfoo.so". Or they
put run-time loaded non-versioned *.so libs into private sub-directories
and not store "modules" ("plugins" or hula "snapins") in the root of
%{_libdir}.

Of course, where you are unsure and where parallel installation of
multiple versions is not planned, you could include all *.so symlinks
in the main package and don't worry.


In detail:

drwxr-xr-x root  root         0 /usr/lib/hulamdb
-rw-r--r-- root  root     71460 /usr/lib/hulamdb/libmdbfile.a
-rwxr-xr-x root  root     68156 /usr/lib/hulamdb/libmdbfile.so

This run-time loaded *.so file and its directory belong into the main
package, the static archive *.a is not needed.


-rw-r--r-- root  root     16722 /usr/lib/libhulalogger.a
lrwxrwxrwx root  root        22 /usr/lib/libhulalogger.so
lrwxrwxrwx root  root        22 /usr/lib/libhulalogger.so.0
-rwxr-xr-x root  root     19152 /usr/lib/libhulalogger.so.0.0.0

A core hula library. The *.a/*.so files can be moved into -devel package.
The *.so.* files are needed in the main package. The executables are
linked against them. See package dependencies quoted above.


-rw-r--r-- root  root     20858 /usr/lib/libhulamdb.a
lrwxrwxrwx root  root        19 /usr/lib/libhulamdb.so
lrwxrwxrwx root  root        19 /usr/lib/libhulamdb.so.0
-rwxr-xr-x root  root     23604 /usr/lib/libhulamdb.so.0.0.0

Same as with libhulalogger.


-rw-r--r-- root  root     91808 /usr/lib/libhulamemmgr.a
lrwxrwxrwx root  root        22 /usr/lib/libhulamemmgr.so
lrwxrwxrwx root  root        22 /usr/lib/libhulamemmgr.so.0
-rwxr-xr-x root  root     63192 /usr/lib/libhulamemmgr.so.0.0.0

Same as with libhulalogger.


-rw-r--r-- root  root     59092 /usr/lib/libhulamsgapi.a
lrwxrwxrwx root  root        22 /usr/lib/libhulamsgapi.so
lrwxrwxrwx root  root        22 /usr/lib/libhulamsgapi.so.0
-rwxr-xr-x root  root     55332 /usr/lib/libhulamsgapi.so.0.0.0

Same as with libhulalogger.


-rw-r--r-- root  root     22218 /usr/lib/libhulaxpl.a
lrwxrwxrwx root  root        19 /usr/lib/libhulaxpl.so
lrwxrwxrwx root  root        19 /usr/lib/libhulaxpl.so.0
-rwxr-xr-x root  root     19296 /usr/lib/libhulaxpl.so.0.0.0

Same as with libhulalogger.


-rw-r--r-- root  root     14898 /usr/lib/libwacert.a
lrwxrwxrwx root  root        18 /usr/lib/libwacert.so
lrwxrwxrwx root  root        18 /usr/lib/libwacert.so.0
-rwxr-xr-x root  root     18248 /usr/lib/libwacert.so.0.0.0
-rw-r--r-- root  root     35208 /usr/lib/libwanmail.a
lrwxrwxrwx root  root        19 /usr/lib/libwanmail.so
lrwxrwxrwx root  root        19 /usr/lib/libwanmail.so.0
-rwxr-xr-x root  root     34584 /usr/lib/libwanmail.so.0.0.0
-rw-r--r-- root  root      5818 /usr/lib/libwastdobj.a
lrwxrwxrwx root  root        20 /usr/lib/libwastdobj.so
lrwxrwxrwx root  root        20 /usr/lib/libwastdobj.so.0
-rwxr-xr-x root  root      8076 /usr/lib/libwastdobj.so.0.0.0

These three above are webadmin agent modules, which belong into the main
package. *.a files not needed, since *.so files are loaded at run-time,
and *.so symlinks point to *.so.*, so all but *.a files are needed here.


drwxr-xr-x root  root         0 /usr/lib/modweb
-rw-r--r-- root  root   4174572 /usr/lib/modweb/aurora.ctp
-rw-r--r-- root  root    253682 /usr/lib/modweb/libmwcal.a
-rwxr-xr-x root  root    200644 /usr/lib/modweb/libmwcal.so
-rw-r--r-- root  root    238438 /usr/lib/modweb/libmwmail.a
-rwxr-xr-x root  root    204256 /usr/lib/modweb/libmwmail.so
-rw-r--r-- root  root     81702 /usr/lib/modweb/libmwpref.a
-rwxr-xr-x root  root     72540 /usr/lib/modweb/libmwpref.so
-rw-r--r-- root  root     57984 /usr/lib/modweb/public.ctp

Same as with the libwa*.  Files *.a not needed, only the *.so are needed
in the main package here.


%doc INSTALL : irrelevant to end-users
%doc NEWS ChangeLog : empty


-- 
Fedora Core release 3.91 (Pre-FC4) - Linux 2.6.11-1.1236_FC4
loadavg: 0.01 0.01 0.03




More information about the fedora-extras-list mailing list