On Fri, 17 Dec 2004 20:33:00 +0100, Stefan Sonnenberg-Carstens wrote: > I got rpms compiled under FC3. > They are available under > > http://www.coolspot.de/fedora-devel/ > > Test them, please. The src.rpm fails to build on FC3. Try to clean up your installation to find missing build dependencies: http://fedoraproject.org/wiki/HOWTOFindMissingBuildRequires Other packaging mistakes after a brief look. In random order: * Main package must not contain files %_libdir/*.so All these belong into the -devel package. Same applies to the -unixodbc sub package. It must not include %_libdir/*.so either. These files are needed at build-time only. * rpmlint reports a few relevant things: E: freetds summary-too-long FreeTDS is a free re-implementation of the TDS (Tabular DataStream) protocol that is used by Sybase and Microsoft for their database products. => better: A free re-implementation of the TDS protocol Everything longer than ~70 characters ought to be put into the package description. W: freetds no-url-tag => You've put that into "Vendor:" field instead. Change that into "URL: http://www.freetds.org" -- the vendor is the package vendor and usually will be substituted by a build system automatically. E: freetds no-signature => minor issue for a test package - you didn't sign it with your GPG key W: freetds strange-permission freetds.spec 0664 => also unimportant, but a user who would extract the file into /tmp would end up with a group-writable file W: freetds obsolete-tag Copyright => should be "License: LGPL" not "Copyright: LGPL" > %define name freetds > %define version 0.62.4 > > Name: %{name} > Version: %{version} That construct is redundant. The %name and %version macros are defined by "Name:" and "Version:" already. > %package devel > Requires: freetds = %{version} Better would be: Requires: freetds = %{version}-%release Why? Imagine you apply a patch which patches the header files or other files in the -devel package or which fixes a bug in the main package. You want main package release and -devel package release to stay in sync. "yum update freetds-devel" should pull in the updated "freetds" main package, too. > %post > /sbin/ldconfig Better: %post -p /sbin/ldconfig %postun -p /sbin/ldconfig Why? It adds an automatic dependency on /sbin/ldconfig and updates the run-time linker cache also after package un-installation, when the freetds libraries are gone. Your %post script would be executed in /bin/sh. > %configure --with-tdsver=4.2 --prefix=/usr --with-unixodbc=/usr/ --sysconfdir=%{_sysconfdir} The %configure macro sets --prefix=%_prefix and --syconfdir=%_sysconfdir already. You can trim the line a bit. :) > %doc AUTHORS BUGS COPYING ChangeLog INSTALL NEWS README TODO COPYING is GPL, which is not what's specified in "License:" field. File COPYING.LIB would be the LGPL and should be included. The INSTALL file contains generic instructions, which are irrelevant to the package user. > %{_libdir}/libct.so* Files with such non-unique names will likely cause conflicts in %_libdir in the future, when more and more packages share that directory and more projects use similar short names. This topic will come back in the near future as it will be necessary more often to install such libraries into %_libdir/%name/ and add that path to the run-time linker's search path list. Same with regard to some of the header names in %_includedir: > -rw-r--r-- root root 3036 /usr/include/bkpublic.h > -rw-r--r-- root root 22514 /usr/include/cspublic.h > -rw-r--r-- root root 1251 /usr/include/cstypes.h > -rw-r--r-- root root 4492 /usr/include/ctpublic.h > -rw-r--r-- root root 2207 /usr/include/dblib.h > -rw-r--r-- root root 1096 /usr/include/sqldb.h > -rw-r--r-- root root 1119 /usr/include/sqlfront.h > %package unixodbc > Requires: freetds = %{version}, unixODBC >= 2.2.9 Fedora Core 3 includes unixODBC 2.2.9, the dependency on libodbcinst.so.1 is automatic, so the explicit dependency on a package called unixODBC doesn't add any value. Be careful with "explicit Requires". If Fedora Core 4 moved libodbcinst.so.1 into a package with a different name, this dependency would break. With regard to the freetds dependency, same as above.