Bug 1647145 - Review Request: libpmemobj-cpp - C++ bindings for libpmemobj
Summary: Review Request: libpmemobj-cpp - C++ bindings for libpmemobj
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: x86_64
OS: Linux
unspecified
high
Target Milestone: ---
Assignee: Dan Williams
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: 1488828 1634347 1654309 1659659 1659664
TreeView+ depends on / blocked
 
Reported: 2018-11-06 18:30 UTC by Marcin Ślusarz
Modified: 2019-03-07 15:49 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2018-12-17 13:41:36 UTC
Type: Bug
Embargoed:
dan.j.williams: fedora-review+


Attachments (Terms of Use)

Description Marcin Ślusarz 2018-11-06 18:30:00 UTC
Spec URL:
https://raw.githubusercontent.com/marcinslusarz/packages/master/libpmemobj-cpp/libpmemobj-cpp.spec

SRPM URL:
https://github.com/marcinslusarz/packages/raw/master/libpmemobj-cpp/libpmemobj-cpp-1.5-1.fc28.src.rpm

Description:
This package contains header files for libpmemobj C++ bindings and C++
containers built on top of them.
libpmemobj-cpp became a separate project from PMDK with the 1.5 release.

Fedora Account System Username: marcinslusarz

Comment 1 Dan Williams 2018-11-07 18:17:30 UTC
Why the usage of:

    %global debug_package %{nil}

...this breaks standard profiling and debug flows.

Have you already run fedora-review and addressed the reported issues?

Is there a plan or list of dependencies identified before PMDK can be built on other architectures? I would file bugzilla's for those requirements as recommended here:

https://fedoraproject.org/wiki/Packaging:Guidelines?rd=Packaging/Guidelines#Architecture_Support

...and then reference them in the spec file.

Comment 2 Marcin Ślusarz 2018-11-07 18:48:07 UTC
(In reply to Dan Williams from comment #1)
> Why the usage of:
> 
>     %global debug_package %{nil}
> 
> ...this breaks standard profiling and debug flows.

libpmemobj-cpp is header-only library, so there is no need for debug packages.

> Have you already run fedora-review and addressed the reported issues?

No, not yet. I'm working on that.

> Is there a plan or list of dependencies identified before PMDK can be built
> on other architectures? I would file bugzilla's for those requirements as
> recommended here:
> 
> https://fedoraproject.org/wiki/Packaging:Guidelines?rd=Packaging/
> Guidelines#Architecture_Support
> 
> ...and then reference them in the spec file.

PMDK spec already has the list of bugs (#1340634, #1340635, #1340636, #1340637). Do I have to copy this list here?

Comment 3 Marcin Ślusarz 2018-11-08 19:14:29 UTC
Fedora-review report:

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

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[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.
[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "BSD (3 clause)", "Unknown or generated". 66 files have unknown
     license. Detailed output of licensecheck in /home/mslusarz/packages
     /libpmemobj-cpp/libpmemobj-cpp/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[x]: %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
[?]: Package uses nothing in %doc for runtime.
     No idea what this means.
[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.
[-]: Package contains systemd file(s) if in need.
[-]: Useful -debuginfo package or justification otherwise.
[!]: Package is not known to require an ExcludeArch tag.
     Dependency of this package (libpmemobj) is x86_64-only.
[x]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 10240 bytes in 2 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]: 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 %license.
[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]: Dist tag is present.
[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 does not use a name that already exists.
[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:
[-]: 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).
[-]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in
     libpmemobj++-devel , libpmemobj++-doc
[x]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[-]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed
     files.
[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]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: The placement of pkgconfig(.pc) files are correct.
[x]: Sources can be downloaded from URI in Source: tag
[x]: SourceX is a working URL.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[x]: Spec use %global instead of %define unless justified.

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

Generic:
[?]: Large data in /usr/share should live in a noarch subpackage if package
     is arched.
     Note: Arch-ed rpms have a total of 3870720 bytes in /usr/share
     Those files are in libpmemobj++-doc subpackage. I'm not sure how to change
     it to noarch. 
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).


Rpmlint
-------
Checking: libpmemobj++-devel-1.5-1.fc28.x86_64.rpm
          libpmemobj++-doc-1.5-1.fc28.x86_64.rpm
          libpmemobj-cpp-1.5-1.fc28.src.rpm
libpmemobj++-devel.x86_64: W: spelling-error %description -l en_US libpmemobj -> memorabilia
libpmemobj++-devel.x86_64: W: spelling-error %description -l en_US transactional -> transaction, transnational, transitional
libpmemobj++-doc.x86_64: W: spelling-error Summary(en_US) libpmemobj -> memorabilia
libpmemobj++-doc.x86_64: W: spelling-error %description -l en_US libpmemobj -> memorabilia
3 packages and 0 specfiles checked; 0 errors, 4 warnings.

False positives



Rpmlint (installed packages)
----------------------------
sh: /usr/bin/python: No such file or directory
libpmemobj++-devel.x86_64: W: spelling-error %description -l en_US libpmemobj -> memorabilia
libpmemobj++-devel.x86_64: W: spelling-error %description -l en_US transactional -> transaction, transnational, transitional
libpmemobj++-devel.x86_64: W: invalid-url URL: http://pmem.io/pmdk/cpp_obj/ <urlopen error [Errno -2] Name or service not known>
libpmemobj++-doc.x86_64: W: spelling-error Summary(en_US) libpmemobj -> memorabilia
libpmemobj++-doc.x86_64: W: spelling-error %description -l en_US libpmemobj -> memorabilia
libpmemobj++-doc.x86_64: W: invalid-url URL: http://pmem.io/pmdk/cpp_obj/ <urlopen error [Errno -2] Name or service not known>
2 packages and 0 specfiles checked; 0 errors, 6 warnings.

Spelling errors are false positives. Invalid-url are bogus - rpmlint doesn't handle proxy settings correctly.


Requires
--------
libpmemobj++-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    libpmemobj-devel
    pkgconfig(libpmemobj)

libpmemobj++-doc (rpmlib, GLIBC filtered):



Provides
--------
libpmemobj++-devel:
    libpmemobj++-devel
    libpmemobj++-devel(x86-64)
    libpmemobj++-static
    pkgconfig(libpmemobj++)

libpmemobj++-doc:
    libpmemobj++-doc
    libpmemobj++-doc(x86-64)



Source checksums
----------------
https://github.com/pmem/libpmemobj-cpp/archive/1.5.tar.gz#/libpmemobj-cpp-1.5.tar.gz :
  CHECKSUM(SHA256) this package     : 6254aa2fb77977f8b91998eb866216d2af22f4ccbffdfc7932df1dff151da61e
  CHECKSUM(SHA256) upstream package : 6254aa2fb77977f8b91998eb866216d2af22f4ccbffdfc7932df1dff151da61e


Generated by fedora-review 0.6.1 (f03e4e7) last change: 2016-05-02
Command line :/usr/bin/fedora-review --rpm-spec -n ./libpmemobj-cpp-1.5-1.fc28.src.rpm
Buildroot used: fedora-28-x86_64
Active plugins: Generic, Shell-api, C/C++
Disabled plugins: Java, Python, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP
Disabled flags: EXARCH, DISTTAG, EPEL5, BATCH, EPEL6

Comment 4 Dan Williams 2018-11-08 19:25:14 UTC
(In reply to Marcin Ślusarz from comment #2)
> (In reply to Dan Williams from comment #1)
> > Why the usage of:
> > 
> >     %global debug_package %{nil}
> > 
> > ...this breaks standard profiling and debug flows.
> 
> libpmemobj-cpp is header-only library, so there is no need for debug
> packages.

Ah, ok, I guess this is what happens when you get a Linux kernel dev to review a C++ package.

> > Have you already run fedora-review and addressed the reported issues?
> 
> No, not yet. I'm working on that.

Ok.

> > Is there a plan or list of dependencies identified before PMDK can be built
> > on other architectures? I would file bugzilla's for those requirements as
> > recommended here:
> > 
> > https://fedoraproject.org/wiki/Packaging:Guidelines?rd=Packaging/
> > Guidelines#Architecture_Support
> > 
> > ...and then reference them in the spec file.
> 
> PMDK spec already has the list of bugs (#1340634, #1340635, #1340636,
> #1340637). Do I have to copy this list here?

Yes, just duplicate the same list in this spec file.

Comment 5 Marcin Ślusarz 2018-11-08 19:42:12 UTC
(In reply to Dan Williams from comment #4)
> (In reply to Marcin Ślusarz from comment #2)
> > (In reply to Dan Williams from comment #1)
> > > Is there a plan or list of dependencies identified before PMDK can be built
> > > on other architectures? I would file bugzilla's for those requirements as
> > > recommended here:
> > > 
> > > https://fedoraproject.org/wiki/Packaging:Guidelines?rd=Packaging/
> > > Guidelines#Architecture_Support
> > > 
> > > ...and then reference them in the spec file.
> > 
> > PMDK spec already has the list of bugs (#1340634, #1340635, #1340636,
> > #1340637). Do I have to copy this list here?
> 
> Yes, just duplicate the same list in this spec file.

Done

Comment 6 Dan Williams 2018-11-27 06:39:49 UTC
Nothing else to comment on this one, marking reviewed.

Comment 7 Gwyn Ciesla 2018-12-14 16:17:30 UTC
(fedscm-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/libpmemobj-cpp


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