Review Request: tokyotyrant - A network interface to Tokyo Cabinet Spec Url: http://silassewell.googlecode.com/svn/trunk/projects/packages/rpms/tokyotyrant/tokyotyrant.spec SRPM Url: http://silassewell.googlecode.com/files/tokyotyrant-1.1.33-1.fc12.src.rpm Description: Tokyo Tyrant is a network interface to Tokyo Cabinet. rpmlint [silas@fox rpmbuild]$ rpmlint /var/lib/mock/fedora-rawhide-i386/result/*.rpm tokyotyrant.i586: W: non-standard-uid /var/run/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-gid /var/run/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-uid /var/lib/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-gid /var/lib/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-uid /var/log/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-gid /var/log/tokyotyrant tokyotyrant tokyotyrant-libs.i586: W: no-soname /usr/lib/ttskeldir.so tokyotyrant-libs.i586: W: no-soname /usr/lib/ttskelproxy.so tokyotyrant-libs.i586: W: no-soname /usr/lib/ttskelmock.so tokyotyrant-libs.i586: W: no-soname /usr/lib/ttskelnull.so 5 packages and 0 specfiles checked; 0 errors, 10 warnings. Regarding non-standard-(uid/gid): - I create the tokyotyrant user/group so this is fine. Regarding no-soname: - I couldn't find anything that can/does link against these, but obviously I'm missing something. The primary library (libtokyotyrant) has a soname so I think its fine. NOTE: When I submitted this review the version of Tokyo Tyrant in devel wasn't compatible with versions of Tokyo Tyrant on the project website. Until Tokyo Cabinet >= 1.4.30 is available in devel you can use the SRPM below. Tokyo Cabinet 1.4.30: http://silassewell.googlecode.com/files/tokyocabinet-1.4.30-1.fc11.src.rpm
tokyocabinet is still 1.4.23 at the moment.
Some notes: ! About tokyocabinet dependency - Note that current latest package of tokyocabinet on koji is tokyocabinet-1.4.30-1.fc12 ( This already exists in koji dist-f12 buildroot, but has not pushed to rawhide tree yet because of F12alpha freeze ) * Package name - Usually development related package should be named as "tokyotyrant-devel", not "tokyotyrant-libs-devel" (even if you create tokyotyrant-libs package) * About removing rpath - Please avoid to use "chrpath" binary as much as possible for removing rpath but use more "standard" method ( Using chrpath --delete should be thought as the last resort, which is usually not needed ). For this package replacing "LD_RUN_PATH" with "LD_LIBRARY_PATH" should remove rpath without using chrpath * Macros - Use %_initddir for %_sysconfdir/rc.d/init.d https://fedoraproject.org/wiki/Packaging/SysVInitScripts#Initscripts_on_the_filesystem * About %_libdir/ttskel*.so - Would you explain how these binaries are used? * Actually these binaries don't have sonames, don't have the names "libfoo.so", so these don't seem to be system-wide libraries. I suggest at least these libraries should be moved to package-specific directory (like %_libdir/%name) * Also I tried to find out how these binaries are used by using grep, however it seems these binaries are used nowhere... * %files - You don't have to add "COPYING" to all binary packages (only including to -libs package is enough because -libs package is needed by all packages) By the way README, THANKS or so should also be moved to -libs subpackage because tokyotyrant (binary rpm) depends on -libs subpackage and not opposite. * Dependency - Main package must have strict dependency "Requires: %{name}-libs = %{version}-%{release}" - For example installed /usr/include/tcrdb.h contains: --------------------------------------------------------------- 30 #include <tcutil.h> 31 #include <tcadb.h> --------------------------------------------------------------- so at least tokyotyrant-devel should have "Requires: tokyocabinet-devel". And tokyotyrant.pc should have "Requires: tokyocabinet".
I've addressed the issues listed above. Would you explain how these binaries are used? - I really couldn't figure it out, but I did move them to their own sub-directory. diff: http://code.google.com/p/silassewell/source/diff?spec=svn312&r=312&format=side&path=/trunk/projects/packages/rpms/tokyotyrant/tokyotyrant.spec srpm: http://silassewell.googlecode.com/files/tokyotyrant-1.1.33-2.fc12.src.rpm rpmlint [silas@fox rpmbuild]$ rpmlint /var/lib/mock/fedora-rawhide-i386/result/*.rpm tokyotyrant.i586: W: non-standard-uid /var/lib/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-gid /var/lib/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-uid /var/run/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-gid /var/run/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-uid /var/log/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-gid /var/log/tokyotyrant tokyotyrant 5 packages and 0 specfiles checked; 0 errors, 6 warnings.
For -2: * Timestamps - Forgot to mention, however when using "install" or "cp" commands, add "-p" option to keep timestamps on installed files: https://fedoraproject.org/wiki/Packaging/Guidelines#Timestamps * Dependency/pkgconfig file - And please address the below: (In reply to comment #2) > - For example installed /usr/include/tcrdb.h contains: > --------------------------------------------------------------- > 30 #include <tcutil.h> > 31 #include <tcadb.h> > --------------------------------------------------------------- > so at least tokyotyrant-devel should have "Requires: tokyocabinet-devel". > And tokyotyrant.pc should have "Requires: tokyocabinet".
The above mentioned issues should be fixed. spec diff: http://code.google.com/p/silassewell/source/diff?spec=svn313&r=313&format=side&path=/trunk/projects/packages/rpms/tokyotyrant/tokyotyrant.spec tokyotyrant.pc diff: http://code.google.com/p/silassewell/source/diff?spec=svn313&r=313&format=side&path=/trunk/projects/packages/rpms/tokyotyrant/tokyotyrant-1.1.33.build.patch srpm: http://silassewell.googlecode.com/files/tokyotyrant-1.1.33-3.fc12.src.rpm rpmlint [silas@fox rpmbuild]$ rpmlint /var/lib/mock/fedora-rawhide-i386/result/*.rpm tokyotyrant.i586: W: non-standard-uid /var/lib/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-gid /var/lib/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-uid /var/run/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-gid /var/run/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-uid /var/log/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-gid /var/log/tokyotyrant tokyotyrant 5 packages and 0 specfiles checked; 0 errors, 6 warnings.
Well, - -3.fc12.src.rpm you posted does not seem to contain pkgconfig/Requires changes you posted on comment 5? - As I said in comment 2, adding "Requires: tokyocabinet" in tokyotyrant.pc{,in} is more correct than to add "-ltokyocabinet" to "Libs:" in case the directory where tokyocabinet header files are moved, like: ---------------------------------------------------- .... .... Name: Tokyo Tyrant Description: network interface of Tokyo Cabinet Version: 1.1.33 Requires: tokyocabinet Libs: -L${libdir} -ltokyotyrant Cflags: -I${includedir} ---------------------------------------------------
OK, think I finally got it. diff: http://code.google.com/p/silassewell/source/detail?r=315 srpm: http://silassewell.googlecode.com/files/tokyotyrant-1.1.33-4.fc12.src.rpm rpmlint [silas@fox rpmbuild]$ rpmlint /var/lib/mock/fedora-rawhide-i386/result/*.rpm tokyotyrant.i586: W: non-standard-uid /var/lib/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-gid /var/lib/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-uid /var/run/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-gid /var/run/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-uid /var/log/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-gid /var/log/tokyotyrant tokyotyrant 5 packages and 0 specfiles checked; 0 errors, 6 warnings.
Okay, except for one thing: - Perhaps http://lxc.sourceforge.net/ (written as URL) has no relation with tokyocabinet/tokyotyrant and http://tokyocabinet.sourceforge.net/ should be used for URL. ----------------------------------------------------------------- This package (tokyotyrant) is APPROVED by mtasaka -----------------------------------------------------------------
Thanks Mamoru Tasaka. I've fixed the URL. diff: http://code.google.com/p/silassewell/source/detail?r=316 srpm: http://code.google.com/p/silassewell/downloads/detail?name=tokyotyrant-1.1.33-5.fc12.src.rpm [silas@fox rpmbuild]$ rpmlint /var/lib/mock/fedora-rawhide-i386/result/*.rpm tokyotyrant.i586: W: non-standard-uid /var/lib/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-gid /var/lib/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-uid /var/run/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-gid /var/run/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-uid /var/log/tokyotyrant tokyotyrant tokyotyrant.i586: W: non-standard-gid /var/log/tokyotyrant tokyotyrant 5 packages and 0 specfiles checked; 0 errors, 6 warnings.
New Package CVS Request ======================= Package Name: tokyotyrant Short Description: A network interface to Tokyo Cabinet Owners: silas Branches: F-11 InitialCC:
cvs done.
If you want this package on F-11 and tokyotyrant really needs tokyocabinet >= 1.4.30 please file a RFE bug ticket against tokyocabinet.
Built for rawhide and a bug request made for F-11 push. Thanks Mamoru and Kevin.
https://bugzilla.redhat.com/show_bug.cgi?id=520024