Spec URL: http://hannes.fedorapeople.org/qcodeedit.spec SRPM URL: http://hannes.fedorapeople.org/qcodeedit-2.2.3-1.fc15.src.rpm Description: QCodeEdit is a framework designed to make edition of source code easy for both users and developers. It is written in C++ using the Qt 4 framework which make it cross-platform. QCodeEdit has been designed for three main purposes: - efficiency - flexibility - ease of use QCodeEdit is much more lightweight and significantly faster than QTextEdit/QTextDocument. However it also has different goals and thus limitations. QCodeEdit is meant to work with source files and not any kind of rich text like QTextEdit handles so well.
I am not 100% sure if the current state with those subpackages is really appropriate especially because all resulting rpms do have a different name starting with lib%{name}-{devel,designer} and the debug package is called qcodeedit-debug. Not really a great solution I think. Don't know what's more appropriate. Would be glad if someone with more experience could help me on this issue.
Just a couple of quick comments: - adapt Source0 according to http://fedoraproject.org/wiki/Packaging:SourceURL#Sourceforge.net - Drop BR: gcc-c++. It's present by default http://fedoraproject.org/wiki/Packaging:Guidelines#Exceptions_2 - There's no need to prefix the packages with "lib". Just put the library into the base package and the devel files into %{name}-devel - Is it necessary to call qmake-qt4 %{name}.pro twice in %build? - Install the shared library files libqcodeedit.so* directly into %{_libdir} - The designer subpackage should require qt-devel for proper directory ownership. Maybe it would also make sense to move the plugin to the devel package instead of package it separately. - The devel package should also require qt-devel which provides directory %{_libdir}/qt4/mkspecs/features/ - The devel package must require the base package this way Requires: %{name}%{?_isa} = %{version}-%{release} The %{?_isa} part has been added to the guidelines lately: http://fedoraproject.org/wiki/Packaging:Guidelines#Requiring_Base_Package - You can drop Requires: pkgconfig. It's added automatically if necessary (still required for EPEL < 6, though). - Add GPL.txt to the base package. - The tarball contains a Doxyfile. Maybe it's a good idea to build the doxygen (html) documentation and add it to the devel package (or a separate doc package).
Alright thanks for the suggestions. I fixed all issues you found except I didn't remove the -designer subpackage, since I don't think the -devel package is more appropriate. SPEC-URL: http://hannes.fedorapeople.org/qcodeedit.spec SRPM-URL: http://hannes.fedorapeople.org/qcodeedit-2.2.3-2.fc15.src.rpm rpmlint qcodeedit.spec qcodeedit.spec: W: invalid-url Source0: http://downloads.sourceforge.net/qcodeedit/2.2.3/qcodeedit-2.2.3.tar.gz HTTP Error 404: Not Found 0 packages and 1 specfiles checked; 0 errors, 1 warnings.
I had a deeper look at the package and it looks almost fine. There are yet a few small things to be fixed: - The URL given in Source0 is invalid. Change it to http://downloads.sourceforge.net/edyuk/%{name}-%{version}.tar.gz - Fix the file permissions that rpmlint complains about (see below) * add chmod 644 README.txt to %prep * add chmod 755 %{buildroot}%{_libdir} to %install - Add qt-devel to the devel package (see comment #2). - Drop Requires: pkgconfig as there's no .pc file in -devel. - Replace $RPM_BUILD_ROOT with %{buildroot} to use macros consistently. - If you don't plan to build the package for EPEL < 6 too, you can drop rm -rf %{buildroot} from install. Otherwise, add a BuildRoot field and a %clean section. These are still required for EPEL 4 and 5. - You can drop option -p from "cp" as option -a already includes -p implicitly. - rpmlint doesn't like non-devel packages requiring a devel package. If the designer subpackage is considered a devel package as well, this is probably OK. $ rpmlint *.rpm qcodeedit.src: W: invalid-url Source0: http://downloads.sourceforge.net/qcodeedit/2.2.3/qcodeedit-2.2.3.tar.gz HTTP Error 404: Not Found qcodeedit.x86_64: E: non-standard-executable-perm /usr/lib64/libqcodeedit.so.1.0.0 0775L qcodeedit.x86_64: W: spurious-executable-perm /usr/share/doc/qcodeedit-2.2.3/README.txt qcodeedit-debuginfo.x86_64: W: hidden-file-or-dir /usr/src/debug/qcodeedit-2.2.3/lib/.build qcodeedit-debuginfo.x86_64: W: hidden-file-or-dir /usr/src/debug/qcodeedit-2.2.3/lib/.build qcodeedit-designer.x86_64: E: devel-dependency qt-devel qcodeedit-designer.x86_64: W: no-documentation 5 packages and 0 specfiles checked; 2 errors, 5 warnings. The hidden files warnings can be ignored. --------------------------------- key: [+] OK [.] OK, not applicable [X] needs work --------------------------------- [+] MUST: The package must be named according to the Package Naming Guidelines. [+] MUST: The spec file name must match the base package %{name}. [+] MUST: The package must meet the Packaging Guidelines. [+] MUST: The package must be licensed with a Fedora approved license. - GPLv3 according to source headers [+] MUST: The License field in the package spec file must match the actual license. [+] MUST: The file containing the text of the license(s) for the package must be included in %doc. [+] MUST: The spec file must be written in American English. [+] MUST: The spec file for the package MUST be legible. [+] MUST: The sources used to build the package must match the upstream source. $ md5sum qcodeedit-2.2.3.tar.gz* e2453d8e97c2592a870bbddd51876ad0 qcodeedit-2.2.3.tar.gz e2453d8e97c2592a870bbddd51876ad0 qcodeedit-2.2.3.tar.gz.1 [+] MUST: The package MUST successfully compile and build into binary rpms on at least one primary architecture. [.] MUST: If the package does not successfully compile, build or work ... [+] MUST: All build dependencies must be listed in BuildRequires. [+] MUST: When compiling C, C++, or Fortran files, %{optflags} must be applied. [.] MUST: The spec file MUST handle locales properly. [+] MUST: Packages storing shared library files (not just symlinks) must call ldconfig in %post and %postun. [+] MUST: Packages must NOT bundle copies of system libraries. [.] MUST: If the package is designed to be relocatable, ... [+] MUST: A package must own all directories that it creates. [+] MUST: A Fedora package must not list a file more than once in %files. [X] MUST: Permissions on files must be set properly. - see rpmlint output [X] MUST: Each package must consistently use macros. - replace $RPM_BUILD_ROOT with %{buildroot} [+] MUST: The package must contain code, or permissable content. [.] MUST: Large documentation files must go in a -doc subpackage. [+] MUST: Files in %doc must not affect the runtime of the application. [+] MUST: Header files must be in a -devel package. [.] MUST: Static libraries must be in a -static package. [+] MUST: If a package contains .so.* files, then .so files (without suffix) must go in a -devel package. [+] MUST: devel packages must require the base package using a fully versioned dependency. [+] MUST: Packages must NOT contain any .la libtool archives. [.] MUST: Packages containing GUI applications must include a %{name}.desktop file, and that file must be properly installed with desktop-file-install in the %install section. If you feel that your packaged GUI application does not need a .desktop file, you must put a comment in the spec file with your explanation. [+] MUST: Packages must not own files or directories already owned by other packages. [+] MUST: All filenames in rpm packages must be valid UTF-8. EPEL <= 5 only: [X] MUST: The spec file must contain a valid BuildRoot field. [+] MUST: At the beginning of %install, each package MUST run rm -rf %{buildroot}. [X] MUST: Each package must have a %clean section, which contains rm -rf %{buildroot}. [X] MUST: Packages containing pkgconfig(.pc) files must 'Requires: pkgconfig' - no .pc file present => drop Requires: pkgconfig [.] SHOULD: If the source package does not include license text(s) as a separate file from upstream, the packager SHOULD query upstream to include it. [+] SHOULD: Timestamps of files should be preserved. [+] SHOULD: The reviewer should test that the package builds in mock. [+] SHOULD: The reviewer should test that the package functions as described. [+] SHOULD: If scriptlets are used, those scriptlets must be sane. [+] SHOULD: Usually, subpackages other than devel should require the base package using a fully versioned dependency. [+] SHOULD: pkgconfig(.pc) files should be placed in a -devel pkg. [.] SHOULD: If the package has file dependencies outside of /etc, /bin, /sbin, /usr/bin, or /usr/sbin consider requiring the package which provides the file instead of the file itself. [.] SHOULD: Your package should contain man pages for binaries/scripts.
Thanks for your pretty fast and comprehensive review. I think I fixed all issues now and removed the -designer subpackage as well. SPEC-URL: http://hannes.fedorapeople.org/qcodeedit.spec SRPM-URL: http://hannes.fedorapeople.org/qcodeedit-2.2.3-3.fc15.src.rpm Scratch Build in Koji: http://koji.fedoraproject.org/koji/taskinfo?taskID=3227198 rpmlint output: rpmlint qcodeedit.spec 0 packages and 1 specfiles checked; 0 errors, 0 warnings. rpmlint ../RPMS/x86_64/qcodeedit-2.2.3-3.fc15.x86_64.rpm 1 packages and 0 specfiles checked; 0 errors, 0 warnings. rpmlint ../RPMS/x86_64/qcodeedit-devel-2.2.3-3.fc15.x86_64.rpm 1 packages and 0 specfiles checked; 0 errors, 0 warnings. rpmlint ../RPMS/x86_64/qcodeedit-debuginfo-2.2.3-3.fc15.x86_64.rpm qcodeedit-debuginfo.x86_64: W: hidden-file-or-dir /usr/src/debug/qcodeedit-2.2.3/lib/.build qcodeedit-debuginfo.x86_64: W: hidden-file-or-dir /usr/src/debug/qcodeedit-2.2.3/lib/.build 1 packages and 0 specfiles checked; 0 errors, 2 warnings.
The designer plugin ought to go in the main pkg, not -devel, as it can be loaded at runtime.
Fixed. Should be fine now, or? SPEC-URL: http://hannes.fedorapeople.org/qcodeedit.spec SRPM-URL: http://hannes.fedorapeople.org/qcodeedit-2.2.3-4.fc15.src.rpm
I just checked the dependencies again, and noticed that you can drop Require: qt-devel from the base package. Package qt-x11 provides the plugin directory and libQtDesigner.so.4. Since the base package depends on libQtDesigner.so.4, there's no need for qt-devel here. I also forgot to add the filenames in comment #4. The chmod statement in %install should look like this: chmod 755 %{buildroot}%{_libdir}/lib%{name}.so.*
SPEC-URL: http://hannes.fedorapeople.org/qcodeedit.spec SRPM-URL: http://hannes.fedorapeople.org/qcodeedit-2.2.3-5.fc15.src.rpm Alright fixed this!
Not quite, sorry. You should drop Requires: qt-devel from the base package but keep it for -devel.
And (with my qt maintainer hat on), deps of the form: Requires: qt4-devel or Requires: pkgconfig(QtGui) are preferable to Requires: qt-devel
SPEC-URL: http://hannes.fedorapeople.org/qcodeedit.spec SRPM-URL: http://hannes.fedorapeople.org/qcodeedit-2.2.3-6.fc15.src.rpm Ok, like this? Quite confusing ;-)
Yes. The package looks good now. :) ---------------- Package APPROVED ----------------
I still see 1 small problem $RPM_OPT_FLAGS aren't being used when building libqcodeedit due to it building in debug mode by default. I'd suggest removing the line CONFIG += debug from at least lib/lib.pro and perhaps from qcodeedit.pro too (the latter seems to set _DEBUG_BUILD_ or _RELEASE_BUILD_ defines, but neither of these seem to be used in code anywhere that I can tell).
Ok removed these two lines? Is it ok like this? SPEC-URL: http://hannes.fedorapeople.org/qcodeedit.spec SRPM-URL: http://hannes.fedorapeople.org/qcodeedit-2.2.3-7.fc15.src.rpm
Yes, now the %optflags are present. Sorry for having overlooked this one.
New Package SCM Request ======================= Package Name: qcodeedit Short Description: Qt-Framework for code editing Owners: hannes Branches: f14 f15 InitialCC:
Git done (by process-git-requests).
Build in rawhide: http://koji.fedoraproject.org/koji/buildinfo?buildID=255576