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.