Bug 615091 - Review Request: ctpl - Template library and engine written in C
Review Request: ctpl - Template library and engine written in C
Status: CLOSED ERRATA
Product: Fedora
Classification: Fedora
Component: Package Review (Show other bugs)
rawhide
All Linux
medium Severity medium
: ---
: ---
Assigned To: Mattias Ellert
Fedora Extras Quality Assurance
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2010-07-15 17:58 EDT by Dominic Hopf
Modified: 2011-10-28 21:18 EDT (History)
2 users (show)

See Also:
Fixed In Version: ctpl-0.2.2-4.fc13
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2010-08-06 16:56:53 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
mattias.ellert: fedora‑review+
limburgher: fedora‑cvs+


Attachments (Terms of Use)

  None (edit)
Description Dominic Hopf 2010-07-15 17:58:16 EDT
Spec URL: http://dmaphy.fedorapeople.org/ctpl/ctpl.spec
SRPM URL: http://dmaphy.fedorapeople.org/ctpl/ctpl-0.2.2-1.fc13.src.rpm

sha1sums:
ed81ac4d7674debb8b8916794de97a605d04f806  ctpl-0.2.2-1.fc13.src.rpm
fe6c15d906d4c25d1e7fb9e4f72fe6fdd0a5688e  ctpl.spec

Description:
CTPL is a template library written in C. It allows fast and easy parsing of
templates from many sources (including in-memory data and local and remote
streaming, thanks to GIO) and fine control over template parsing environment.

CTPL has following features:
* It is a library, then it can be easily used from programs
* Separated lexer and parser
* It is written in portable C
* Simple syntax
* Fast and strict parsing
* Possible in-memory parsing, allowing non-file data parsing and avoiding
  I/O-latency, through GIO's GMemoryInputStream and GMemoryOutputStream


Note: This package provides an additional dependency for geany-plugins. Since the Geany Plugins 0.19 release there is a new plugin called "GeanyGenDoc" which makes use of CTPL.

$ rpmlint ctpl.spec
0 packages and 1 specfiles checked; 0 errors, 0 warnings.

The package builds fine for me in mock.
Comment 1 Dominic Hopf 2010-07-15 20:13:35 EDT
Updated package:

Spec URL: http://dmaphy.fedorapeople.org/ctpl/ctpl.spec
SRPM URL: http://dmaphy.fedorapeople.org/ctpl/ctpl-0.2.2-2.fc13.src.rpm

sha1sums:
c125c0cfd8ab37954f65532615a60a4ad851cd43  ctpl-0.2.2-2.fc13.src.rpm
68311a4e122ddfaa64d6598c8458be3db5922362  ctpl.spec

ChangeLog:
* Fri Jul 16 2010 Dominic Hopf <dmaphy@fedoraproject.org> - 0.2.2-2
- rename subpackage lib to libs
- add Requires on the libs package to -bin, -devel and -doc package
- install %%{_libdir}/lib%%{name}.so with a -static package
- install manpage only with the binary
- install HACKING and TODO only with the -devel package
- install README and THANKS only with the -doc package
- fix the installation path for documentation files

Because of the renaming from lib to libs, you may have to uninstall any 0.2.2-1 package first. I don't think it's necessary to make use of Obsoletes and Provides here in this early state of the package.
Comment 2 Mattias Ellert 2010-07-16 00:47:09 EDT
(In reply to comment #1)

> - install %%{_libdir}/lib%%{name}.so with a -static package

This is a packaging guidelines violation. The .so symlink should be in -devel.

http://fedoraproject.org/wiki/Packaging/Guidelines#DevelPackages
Comment 3 Dominic Hopf 2010-07-16 01:57:26 EDT
I actually was moving the .so file to a separate -static package because of the guidelines. The CTPL package provides both, shared libraries and this static library. According to [1] the static library shall be in a -static subpackage then, separated from the -devel package to allow tracking of usage of the static library.

Does this obsolete the point Mattias linked to? Or is it the more elegant way to just not begin installing the static .so file anyway?

[1] https://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_Static_Libraries_2
Comment 4 Mattias Ellert 2010-07-16 03:12:00 EDT
This is not a static library. This is a symlink to the shared object library intended to be used for linking during development:

rpm -qlvp /home/ellert/rpmbuild/RPMS/x86_64/ctpl-static-0.2.2-2.fc12.x86_64.rpm
lrwxrwxrwx 1 root root 16 jul 16 08:56 /usr/lib64/libctpl.so -> libctpl.so.1.0.2

The guideline I quoted says:

"The following are examples of file types which should be in -devel: ... Unversioned shared libraries (e.g. libfoo.so) ..."

which is what this file is.

Also the review guidelines say:
http://fedoraproject.org/wiki/Packaging/ReviewGuidelines

"MUST: If a package contains library files with a suffix (e.g. libfoo.so.1.1), then library files that end in .so (without suffix) must go in a -devel package."

This item has a footnote that references the above quoted guideline.

Your package does not contain any static libraries. The static library if it existed would be named libctpl.a. You should not add new static libraries to Fedora unless you have a very good reason for doing so - they are considered a security problem.

The guideline you quoted about that static libraries should be put in a -static subpackage is valid, but it is not relevant in this case since the file you are packaging is not a static library. It applies only in the exceptional case when a static library must be packaged for Fedora - the preferred way is always to not package static libraries.
Comment 5 Dominic Hopf 2010-07-16 13:44:22 EDT
Hum, not sure what confused me last night. Of course, .so is shared object and nothing static, you're totally right. :)

Spec URL: http://dmaphy.fedorapeople.org/ctpl/ctpl.spec
SRPM URL: http://dmaphy.fedorapeople.org/ctpl/ctpl-0.2.2-3.fc13.src.rpm

sha1sums:
6071536d0ab83e7d96e5de15143a4d91010c6fd9  ctpl-0.2.2-3.fc13.src.rpm
75d0174173d75a8a4c596be700c8e134f4e33478  ctpl.spec
Comment 6 Mattias Ellert 2010-07-16 18:02:15 EDT
Fedora Review ctpl 2010-07-16


rpmlint output:

$ rpmlint ctpl-0.2.2-3.fc12.src.rpm ctpl*-0.2.2-3.fc12.x86_64.rpm
ctpl-bin.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/ctpl ['/usr/lib64']
ctpl-libs.x86_64: E: library-without-ldconfig-postin /usr/lib64/libctpl.so.1.0.2
ctpl-libs.x86_64: E: library-without-ldconfig-postun /usr/lib64/libctpl.so.1.0.2
6 packages and 0 specfiles checked; 3 errors, 0 warnings.

These must be fixed:
http://fedoraproject.org/wiki/PackagingGuidelines#Removing_Rpath
http://fedoraproject.org/wiki/PackagingGuidelines#Shared_Libraries


+ Package is named according to guidelines
+ Specfile is named after the package

? There is no binary package created called ctpl. While this is not a
  guidelines violation, it is confusing. Consider renaming either the
  ctpl-bin or ctpl-libs package to ctpl.

? The cptl-doc package should be noarch (if you are planning to use
  the same specfile in EPEL this must be made conditional, since older
  rpm versions do not support noarch subpackages)

%if %{?fedora}%{!?fedora:0} >= 10 || %{?rhel}%{!?rhel:0} >= 6
BuildArch:	noarch
%endif

? I don't understand your comment about --docdir not working. Since
  there are no Makefile rules that says anything should be installed
  in docdir, the fact that nothing is installed there just means
  everything works as intended.

- The specfile is missing a changelog entry for the current release (0.2.2-3)

+ The package's license tag GPLv3+ is a Fedora approved license
+ The package's license tag matches the license statements in the sources
+ The license file (COPYING) is included as %doc
+ Specfile is written in legible English
+ Source matches upstream:

$ md5sum srpm/ctpl-0.2.2.tar.gz ctpl-0.2.2.tar.gz 
8a2b96f624054c20df5340e017b17251  srpm/ctpl-0.2.2.tar.gz
8a2b96f624054c20df5340e017b17251  ctpl-0.2.2.tar.gz

+ Scratch build: http://koji.fedoraproject.org/koji/taskinfo?taskID=2324915
+ BuildRequires are sane
+ No locales

- ctpl-libs installs a shared library in the default library search path
  without calling ldconfig in scriptlets (also seen by rpmlint above)

+ No bundled libraries

- Package ctpl-doc installs files in /usr/share/gtk-doc/html, but does
  not own this directory, nor does it require any package that does.
  The package must either own /usr/share/gtk-doc and /usr/share/gtk-doc/html
  or require gtk-doc. Please consult:

http://fedoraproject.org/wiki/PackagingGuidelines#File_and_Directory_Ownership

- No package owns /usr/share/doc/ctpl-0.2.2 (should be owned by ctpl-libs)

- Duplicated files in filelists: AUTHORS, PACKAGING and NEWS are installed
  in the same location both by ctpl-bin and ctpl-lib. Since ctpl-bin requires
  ctpl-lib the copies in ctpl-bin are redundant.

+ Permissions are sane and %files has %defattr
+ Specfile uses macros consistently
+ Contains code
+ %doc is not runtime essential
+ Header files in -devel
+ No static libraries
+ .so symlink in -devel
+ -devel requires -libs with fully qualified version
+ no libtool archives
+ Package does not own other's directories
+ Installed files have valid UTF8 filenames

- Since ctpl-bin depends on ctpl-libs and these are built from the
  same srpm you should normally add a requires using the fully
  qualified version. The autogenerated requires based on the soname
  is less precise.
Comment 7 Dominic Hopf 2010-07-17 13:12:53 EDT
(In reply to comment #6)
> Fedora Review ctpl 2010-07-16
> 
> 
> rpmlint output:
> 
> $ rpmlint ctpl-0.2.2-3.fc12.src.rpm ctpl*-0.2.2-3.fc12.x86_64.rpm
> ctpl-bin.x86_64: E: binary-or-shlib-defines-rpath /usr/bin/ctpl ['/usr/lib64']
> ctpl-libs.x86_64: E: library-without-ldconfig-postin
> /usr/lib64/libctpl.so.1.0.2
> ctpl-libs.x86_64: E: library-without-ldconfig-postun
> /usr/lib64/libctpl.so.1.0.2
> 6 packages and 0 specfiles checked; 3 errors, 0 warnings.
> 
> These must be fixed:
> http://fedoraproject.org/wiki/PackagingGuidelines#Removing_Rpath
> http://fedoraproject.org/wiki/PackagingGuidelines#Shared_Libraries
Fixed those errors, thanks.

> ? There is no binary package created called ctpl. While this is not a
>   guidelines violation, it is confusing. Consider renaming either the
>   ctpl-bin or ctpl-libs package to ctpl.
I removed the -bin subpackage and install the binary and manpage with the mainpackage (which is named ctpl) now. I think this should fix the issue and isn't that confusing anymore. :)

> ? The cptl-doc package should be noarch (if you are planning to use
>   the same specfile in EPEL this must be made conditional, since older
>   rpm versions do not support noarch subpackages)
> 
> %if %{?fedora}%{!?fedora:0} >= 10 || %{?rhel}%{!?rhel:0} >= 6
> BuildArch: noarch
> %endif
Applied, thanks. :)

> ? I don't understand your comment about --docdir not working. Since
>   there are no Makefile rules that says anything should be installed
>   in docdir, the fact that nothing is installed there just means
>   everything works as intended.
I actually forgot to have a look into the Makefile first and thus thought
there must be something wrong, because I expected files like AUTHORS
and so on to be installed there. Is this an issue I maybe should report
to upstream?

> - The specfile is missing a changelog entry for the current release (0.2.2-3)
Added, sorry.

> - ctpl-libs installs a shared library in the default library search path
>   without calling ldconfig in scriptlets (also seen by rpmlint above)
Fixed.

> - Package ctpl-doc installs files in /usr/share/gtk-doc/html, but does
>   not own this directory, nor does it require any package that does.
>   The package must either own /usr/share/gtk-doc and /usr/share/gtk-doc/html
>   or require gtk-doc. Please consult:
Fixed. I decided to require the gtk-doc package as dependency for the -doc subpackage. :)

> - No package owns /usr/share/doc/ctpl-0.2.2 (should be owned by ctpl-libs)
Fixed.

> - Duplicated files in filelists: AUTHORS, PACKAGING and NEWS are installed
>   in the same location both by ctpl-bin and ctpl-lib. Since ctpl-bin requires
>   ctpl-lib the copies in ctpl-bin are redundant.
Fixed.

> - Since ctpl-bin depends on ctpl-libs and these are built from the
>   same srpm you should normally add a requires using the fully
>   qualified version. The autogenerated requires based on the soname
>   is less precise.    
The main package which is the one which installs the binary now, now explicitly requires
ctpl-libs = %{version}-%{release}.

New package release:
Spec URL: http://dmaphy.fedorapeople.org/ctpl/ctpl.spec
SRPM URL: http://dmaphy.fedorapeople.org/ctpl/ctpl-0.2.2-4.fc13.src.rpm

sha1sums:
88223af6552e96807af1c112e86b637f24f86cae  ctpl-0.2.2-4.fc13.src.rpm
0f3cc080f7020ea7043c687a4865e4619be93bae  ctpl.spec
Comment 8 Mattias Ellert 2010-07-18 02:49:00 EDT
Package approved.
Comment 9 Dominic Hopf 2010-07-18 06:01:55 EDT
Thanks very much for reviewing Mattias! :)

New Package CVS Request
=======================
Package Name: ctpl
Short Description: Template library and engine written in C
Owners: dmaphy
Branches: F-13
InitialCC:
Comment 10 Kevin Fenzi 2010-07-19 00:46:21 EDT
CVS done (by process-cvs-requests.py).
Comment 11 Fedora Update System 2010-07-19 15:46:03 EDT
ctpl-0.2.2-4.fc13 has been submitted as an update for Fedora 13.
http://admin.fedoraproject.org/updates/ctpl-0.2.2-4.fc13
Comment 12 Fedora Update System 2010-08-06 16:56:48 EDT
ctpl-0.2.2-4.fc13 has been pushed to the Fedora 13 stable repository.  If problems still persist, please make note of it in this bug report.
Comment 13 Dominic Hopf 2011-10-28 17:44:06 EDT
Package Change Request
======================
Package Name: ctpl
New Branches: el6 
Owners: dmaphy jgu pingou
InitialCC:
Comment 14 Gwyn Ciesla 2011-10-28 21:18:19 EDT
Git done (by process-git-requests).

Note You need to log in before you can comment on or make changes to this bug.