Bug 1210753 - Review Request: spdlog - Super fast C++ logging library
Summary: Review Request: spdlog - Super fast C++ logging library
Keywords:
Status: CLOSED NEXTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Petr Lautrbach
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: 1209971
TreeView+ depends on / blocked
 
Reported: 2015-04-10 13:41 UTC by Daniel Kopeček
Modified: 2015-04-30 10:12 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2015-04-30 10:12:30 UTC
Type: ---
Embargoed:
plautrba: fedora-review+
gwync: fedora-cvs+


Attachments (Terms of Use)

Description Daniel Kopeček 2015-04-10 13:41:18 UTC
Spec URL: https://fedorapeople.org/~dkopecek/usbguard/spdlog.spec
SRPM URL: https://fedorapeople.org/~dkopecek/usbguard/spdlog-0-1.20150410git.211ce99.fc20.src.rpm
Description: Super fast C++ logging library
Fedora Account System Username: mildew

Comment 2 Petr Lautrbach 2015-04-20 13:47:41 UTC
 40 cp -vR include/spdlog %{buildroot}%{_includedir}

You should use 'cp -p' or 'install -p' to preserve timestamps.

Comment 3 Daniel Kopeček 2015-04-20 13:52:01 UTC
(In reply to Petr Lautrbach from comment #2)
>  40 cp -vR include/spdlog %{buildroot}%{_includedir}
> 
> You should use 'cp -p' or 'install -p' to preserve timestamps.

Fixed.

Comment 4 Petr Lautrbach 2015-04-20 14:09:53 UTC
Package Review
==============

Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated
[ ] = Manual review needed


Issues:
=======
- If (and only if) the source package includes the text of the license(s) in
  its own file, then that file, containing the text of the license(s) for the
  package is included in %doc.
  Note: Cannot find LICENSE in rpm(s)
  See:
  http://fedoraproject.org/wiki/Packaging/LicensingGuidelines#License_Text


===== MUST items =====

C/C++:
[-]: Package does not contain kernel modules.
[-]: Package contains no static executables.
[x]: Header files in -devel subpackage, if present.
[x]: Package does not contain any libtool archives (.la)
[x]: Rpath absent or only used for internal libs.

Generic:
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
xX]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses found:
     "MIT/X11 (BSD like)", "BSD (2 clause)", "BSD (2 clause) MIT/X11 (BSD
     like)", "Unknown or generated". 12 files have unknown license. Detailed
     output of licensecheck in /home/plautrba/1210753-spdlog/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[-]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[-]: Package contains desktop file if it is a GUI application.
[x]: Development files must be in a -devel package
[x]: Package uses nothing in %doc for runtime.
[x]: Package consistently uses macros (instead of hard-coded directory names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[x]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[x]: Package contains systemd file(s) if in need.
[ ]: Useful -debuginfo package or justification otherwise.
[x]: Package is not known to require an ExcludeArch tag.
[x]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 40960 bytes in 7 files.
[x]: Package complies to the Packaging Guidelines
[x]: Package successfully compiles and builds into binary rpms on at least one
     supported primary architecture.
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[x]: Package does not own files or directories owned by other packages.
[x]: All build dependencies are listed in BuildRequires, except for any that
     are listed in the exceptions section of Packaging Guidelines.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package use %makeinstall only when make install' ' DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: Package do not use a name that already exist
[x]: Package is not relocatable.
[x]: Sources used to build the package match the upstream source, as provided
     in the spec URL.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local

===== SHOULD items =====

Generic:
[x]: If the source package does not include license text(s) as a separate file
     from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[x]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in spdlog-
     devel
[x]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[-]: %check is present and all tests pass.
[!]: Packages should try to preserve timestamps of original installed files.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[x]: Reviewer should test that the package builds in mock.
[x]: Buildroot is not present
[x]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
[x]: Dist tag is present (not strictly required in GL).
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

===== EXTRA items =====

Generic:
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Large data in /usr/share should live in a noarch subpackage if package is
     arched.
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: spdlog-0-2.20150410git.211ce99.fc21.x86_64.rpm
          spdlog-devel-0-2.20150410git.211ce99.fc21.x86_64.rpm
          spdlog-0-2.20150410git.211ce99.fc21.src.rpm
spdlog.x86_64: W: spelling-error %description -l en_US gabime -> megabit
spdlog.x86_64: E: no-binary
spdlog.src: W: spelling-error %description -l en_US gabime -> megabit
3 packages and 0 specfiles checked; 1 errors, 2 warnings.




Rpmlint (installed packages)
----------------------------
Cannot parse rpmlint output:


Requires
--------
spdlog-devel (rpmlib, GLIBC filtered):
    libstdc++-devel
    spdlog

spdlog (rpmlib, GLIBC filtered):



Provides
--------
spdlog-devel:
    spdlog-devel
    spdlog-devel(x86-64)
    spdlog-static

spdlog:
    spdlog
    spdlog(x86-64)



Source checksums
----------------
https://github.com/gabime/spdlog/tarball/211ce99d29820f7a02c874360be11978ef40fee8/gabime-spdlog-211ce99.tar.gz :
  CHECKSUM(SHA256) this package     : 62752d99f1f05fb04744aad73713193d034d1954c2fe3ed0dbb20e8ff9c4d681
  CHECKSUM(SHA256) upstream package : 62752d99f1f05fb04744aad73713193d034d1954c2fe3ed0dbb20e8ff9c4d681


Generated by fedora-review 0.5.2 (63c24cb) last change: 2014-07-14
Command line :/usr/bin/fedora-review -b 1210753
Buildroot used: fedora-21-x86_64
Active plugins: Generic, Shell-api, C/C++
Disabled plugins: Java, Python, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP, Ruby
Disabled flags: EXARCH, EPEL5, BATCH, DISTTAG

Comment 5 Petr Lautrbach 2015-04-20 14:17:54 UTC
(In reply to Petr Lautrbach from comment #4)
> Issues:
> =======
> - If (and only if) the source package includes the text of the license(s) in
>   its own file, then that file, containing the text of the license(s) for the
>   package is included in %doc.
>   Note: Cannot find LICENSE in rpm(s)
>   See:
>   http://fedoraproject.org/wiki/Packaging/LicensingGuidelines#License_Text
> 
> 


Given that spdlog contains /usr/share/licenses/spdlog/LICENSE this is false positive.


I guess that if you provide fixed srpm with fixed spec file, I could approve it

Comment 7 Daniel Kopeček 2015-04-20 14:41:50 UTC
New Package SCM Request
=======================
Package Name: spdlog
Short Description: Super fast C++ logging library
Upstream URL: https://github.com/gabime/spdlog
Owners: mildew
Branches: f20 f21 f22 epel7
InitialCC:

Comment 8 Gwyn Ciesla 2015-04-20 15:48:27 UTC
Git done (by process-git-requests).

Comment 9 Daniel Kopeček 2015-04-21 05:44:32 UTC
Thanks!

Comment 10 Michael Schwendt 2015-04-22 10:45:59 UTC
> spdlog-0-3.20150410git.211ce99.fc20.src.rpm

One dot too much after "git":
https://fedoraproject.org/wiki/Packaging:NamingGuidelines#Snapshot_packages


> %files
> %doc README.md
> %license LICENSE

It makes no sense to create a base package which includes only these two files. It will never be installed by anything other than the -devel package.

Note that you can omit the %files section for the base package in order to build no base package.

The license file can be included in the -devel package instead:
https://fedoraproject.org/wiki/Packaging:LicensingGuidelines#Subpackage_Licensing


> %description devel
> The %{name}-devel package contains libraries and header files for
> developing applications that use %{name}.

That's a bit half-hearted. Assume it's called a "header-only library", then "libraries and headers" is one too much.

Comment 11 Daniel Kopeček 2015-04-27 08:40:05 UTC
(In reply to Michael Schwendt (Fedora Packager Sponsors Group) from comment #10)
> > spdlog-0-3.20150410git.211ce99.fc20.src.rpm
> 
> One dot too much after "git":
> https://fedoraproject.org/wiki/Packaging:NamingGuidelines#Snapshot_packages

It's already packaged and submitted. Given that:

 1) the package passed the review
 2) there are other packages that use this form of snapshot version syntax

I don't think it an issue worth fixing. Does it break something? Setting needinfo on the reviewer to hear his opinion on this.

> > %files
> > %doc README.md
> > %license LICENSE
> 
> It makes no sense to create a base package which includes only these two
> files. It will never be installed by anything other than the -devel package.
> 
> Note that you can omit the %files section for the base package in order to
> build no base package.
> 
> The license file can be included in the -devel package instead:
> https://fedoraproject.org/wiki/Packaging:
> LicensingGuidelines#Subpackage_Licensing

See https://bugzilla.redhat.com/show_bug.cgi?id=1210754#c10

> > %description devel
> > The %{name}-devel package contains libraries and header files for
> > developing applications that use %{name}.
> 
> That's a bit half-hearted. Assume it's called a "header-only library", then
> "libraries and headers" is one too much.

Ok, thanks, I'll fix this in the next update of the package.

Comment 12 Petr Lautrbach 2015-04-27 09:20:03 UTC
(In reply to Daniel Kopeček from comment #11)
> (In reply to Michael Schwendt (Fedora Packager Sponsors Group) from comment
> #10)
> > > spdlog-0-3.20150410git.211ce99.fc20.src.rpm
> > 
> > One dot too much after "git":
> > https://fedoraproject.org/wiki/Packaging:NamingGuidelines#Snapshot_packages
> 
> It's already packaged and submitted. Given that:
> 
>  1) the package passed the review
>  2) there are other packages that use this form of snapshot version syntax
> 
> I don't think it an issue worth fixing. Does it break something? Setting
> needinfo on the reviewer to hear his opinion on this.
> 

For the case of consistence with packaging guidelines, you should probably fix it even though I don't think it's against the rules as it is.

The fix should not break anything since for rpm it doesn't really matter:

$ rpmdev-vercmp 0-3.20150410git.211ce99.fc20 0-3.20150410git211ce99.fc20 
0-3.20150410git.211ce99.fc20 == 0-3.20150410git211ce99.fc20

I'd just change this with the next update.

Comment 13 Michael Schwendt 2015-04-29 18:01:26 UTC
> It's already packaged and submitted.

I've given feedback during its updates-testing period, which was soon enough. You choose to ignore that feedback. Not nice, and dilettantish. :/

You simply could have replaced the build in the bodhi ticket.


> See https://bugzilla.redhat.com/show_bug.cgi?id=1210754#c10

Irrelevant. Either you've misunderstood this, or you refer to something different.

spdlog builds a useless base package. It should build just spdlog-devel. That's what other similar packages do, too.

Now, if you want to fix it, you would need to follow:
https://fedoraproject.org/wiki/Packaging:Guidelines#Renaming.2FReplacing_Existing_Packages

Comment 14 Daniel Kopeček 2015-04-30 08:19:49 UTC
(In reply to Michael Schwendt (Fedora Packager Sponsors Group) from comment #13)
> > It's already packaged and submitted.
> 
> I've given feedback during its updates-testing period, which was soon
> enough. You choose to ignore that feedback. Not nice, and dilettantish. :/
> 
> You simply could have replaced the build in the bodhi ticket.
> 
> 
> > See https://bugzilla.redhat.com/show_bug.cgi?id=1210754#c10
> 
> Irrelevant. Either you've misunderstood this, or you refer to something
> different.

Please explain. I'm referring to https://fedoraproject.org/wiki/Packaging:Guidelines?rd=Packaging/Guidelines#Packaging_Header_Only_Libraries and the sentence "Place all of the header files in the *-devel subpackage...".

Comment 15 Daniel Kopeček 2015-04-30 08:59:39 UTC
----------
-%files
-%doc README.md
-%license LICENSE
-
 %files devel
-%doc example/
+%doc README.md example
+%license LICENSE
 %dir %{_includedir}/spdlog
 %{_includedir}/spdlog/*
----------

Is this the change you are requesting? Along with the provides and obsoletes?

Comment 16 Michael Schwendt 2015-04-30 09:05:42 UTC
Yes, of course!

diff --git a/spdlog.spec b/spdlog.spec
index 56095e1..45e0c59 100644
--- a/spdlog.spec
+++ b/spdlog.spec
@@ -6,7 +6,7 @@
 
 Name:           spdlog
 Version:        0
-Release:        3.%{gitdate}git.%{shorttag}%{?dist}
+Release:        4.%{gitdate}git%{shorttag}%{?dist}
 Summary:        Super fast C++ logging library
 Group:          Development/Libraries
 License:        MIT
@@ -21,8 +21,9 @@ logging library available at Github.
 Summary:        Development files for %{name}
 Group:          Development/Libraries
 Provides:       %{name}-static = %{version}-%{release}
-Requires:       %{name} = %{version}-%{release}
 Requires:       libstdc++-devel
+Obsoletes: %{name} < 0-4
+Provides: %{name} = %{version}-%{release}
 
 %description devel
 The %{name}-devel package contains libraries and header files for
@@ -39,14 +40,11 @@ find ./example -name '.gitignore' -exec rm {} \;
 mkdir -p %{buildroot}%{_includedir}
 cp -pvR include/spdlog %{buildroot}%{_includedir}
 
-%files
-%doc README.md
-%license LICENSE
-
 %files devel
+%license LICENSE
+%doc README.md
 %doc example/
-%dir %{_includedir}/spdlog
-%{_includedir}/spdlog/*
+%{_includedir}/spdlog/
 
 %changelog
 * Mon Apr 20 2015 Daniel Kopecek <dkopecek> - 0-3.20150410git.211ce99

Comment 17 Michael Schwendt 2015-04-30 09:25:22 UTC
Even if a bit unclean, you could omit the "Obsoletes" tag, since no build has been released yet, and this is a new package. The F22 update is on its way into stable, however, but F22 is not a final release.

Less cruft in the repo metadata keeps them shorter => less data to work on by package resolvers. Same for superfluous packages.

Comment 18 Daniel Kopeček 2015-04-30 09:29:36 UTC
Ah, ok great. Will do that for the json package too. Thanks!

Comment 19 Daniel Kopeček 2015-04-30 09:40:41 UTC
diff --git a/spdlog.spec b/spdlog.spec
index 56095e1..f7a48ec 100644
--- a/spdlog.spec
+++ b/spdlog.spec
@@ -6,7 +6,7 @@
 
 Name:           spdlog
 Version:        0
-Release:        3.%{gitdate}git.%{shorttag}%{?dist}
+Release:        4.%{gitdate}git%{shorttag}%{?dist}
 Summary:        Super fast C++ logging library
 Group:          Development/Libraries
 License:        MIT
@@ -21,12 +21,12 @@ logging library available at Github.
 Summary:        Development files for %{name}
 Group:          Development/Libraries
 Provides:       %{name}-static = %{version}-%{release}
-Requires:       %{name} = %{version}-%{release}
+Provides:       %{name} = %{version}-%{release}
 Requires:       libstdc++-devel
 
 %description devel
-The %{name}-devel package contains libraries and header files for
-developing applications that use %{name}.
+The %{name}-devel package contains C++ header files for developing
+applications that use %{name}.
 
 %prep
 %setup -q -n %{user}-%{name}-%{shorttag}
@@ -39,16 +39,17 @@ find ./example -name '.gitignore' -exec rm {} \;
 mkdir -p %{buildroot}%{_includedir}
 cp -pvR include/spdlog %{buildroot}%{_includedir}
 
-%files
-%doc README.md
-%license LICENSE
-
 %files devel
-%doc example/
-%dir %{_includedir}/spdlog
-%{_includedir}/spdlog/*
+%doc README.md example/
+%license LICENSE
+%{_includedir}/spdlog/
 
 %changelog
+* Thu Apr 30 2015 Daniel Kopecek <dkopecek> - 0-4.20150410git211ce99
+- don't build the base package
+- remove a dot from the release tag
+- corrected -devel subpackage description
+
 * Mon Apr 20 2015 Daniel Kopecek <dkopecek> - 0-3.20150410git.211ce99
 - use the -p option when copying the header files

Comment 20 Daniel Kopeček 2015-04-30 10:12:30 UTC
Fixed packages submitted. Closing.


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