Bug 1147921 - Review Request: mongo-cxx-driver - A C++ driver for MondgoDB
Summary: Review Request: mongo-cxx-driver - A C++ driver for MondgoDB
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Honza Horak
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2014-09-30 10:17 UTC by Marek Skalický
Modified: 2016-04-19 09:56 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2016-04-19 09:56:10 UTC
Type: ---
Embargoed:
hhorak: fedora-review+
gwync: fedora-cvs+


Attachments (Terms of Use)

Description Marek Skalický 2014-09-30 10:17:33 UTC
Spec URL: https://mskalick.fedorapeople.org/mongo-cxx-driver/mongo-cxx-driver.spec
SRPM URL: https://mskalick.fedorapeople.org/mongo-cxx-driver/mongo-cxx-driver-1.0.0-0.1.rc0.src.rpm
Description:

Hi,
I've just finished packaging up c++ driver for MongoDB, and I would appreciate a review so that I can get it into Fedora Rawhide.

C++ MongoDB driver was part of mongodb package (libmongodb), but in version 2.6 it was separated into standalone project. 


Fedora Account System Username: mskalick

Comment 1 Honza Horak 2014-10-02 14:16:43 UTC
Package Review
==============

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


Issues:
=======
- No %optflags macro used
  https://fedoraproject.org/wiki/Packaging:Guidelines#Using_.25.7Bbuildroot.7D_and_.25.7Boptflags.7D_vs_.24RPM_BUILD_ROOT_and_.24RPM_OPT_FLAGS
- gtest could be un-bundled if possible, but since it is only build-time dependency, it does not have to block review
- 1.0.0-0.1.rc0 should be used in changelog's version, see rpmlint output
  https://fedoraproject.org/wiki/Packaging:Guidelines#Changelogs
- mongo-cxx-driver should obsolete libmongodb and the same for -devel packages
  https://fedoraproject.org/wiki/Packaging:Guidelines#Renaming.2FReplacing_Existing_Packages
  Even though libmongo-client might be replaced by mongo-cxx-driver in the future as well, this does not have to be done from the beginning, since those packages can co-exist, so this one is not problem.
- Dist should be used in Release tag.
  https://fedoraproject.org/wiki/Packaging:NamingGuidelines#Using_the_.25.7B.3Fdist.7D_Tag
- There are some warnings worth fixing in rpmlint, see bellow
  https://fedoraproject.org/wiki/Packaging:Guidelines#Use_rpmlint

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

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

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:
     "Apache (v2.0)", "GPL (v2 or later)", "Unknown or generated", "*No
     copyright* Public domain", "BSD (3 clause)", "zlib/libpng". 17 files have
     unknown license. Detailed output of licensecheck in /home/hhorak/tmp
     /mongo-cxx-driver/1147921-mongo-cxx-driver/licensecheck.txt
- since gtest is not included in the final sources, it is fine
[x]: License file installed when any subpackage combination is installed.
[x]: Package does not own files or directories owned by other packages.
     Note: Dirs in package are owned also by:
     /usr/include/mongo/util/mongoutils(libmongodb-devel),
     /usr/include/mongo/util/concurrency(libmongodb-devel),
     /usr/include/mongo/util(libmongodb-devel), /usr/include/mongo/platform
     (libmongodb-devel), /usr/include/mongo/client(libmongodb-devel),
     /usr/include/mongo/bson/util(libmongodb-devel), /usr/include/mongo/db
     (libmongodb-devel), /usr/include/mongo/base(libmongodb-devel),
     /usr/include/mongo/bson(libmongodb-devel), /usr/include/mongo(libmongodb-
     devel), /usr/include/mongo/util/net(libmongodb-devel)
- Not problem, this package is going to be replaced by mongo-cxx-driver
[!]: %build honors applicable compiler flags or justifies otherwise.
- No %optflags macro used
  https://fedoraproject.org/wiki/Packaging:Guidelines#Using_.25.7Bbuildroot.7D_and_.25.7Boptflags.7D_vs_.24RPM_BUILD_ROOT_and_.24RPM_OPT_FLAGS
[!]: Package contains no bundled libraries without FPC exception.
- gtest could be un-bundled if possible, but since it is only build-time dependency, it does not have to block review
[!]: Changelog in prescribed format.
- 1.0.0-0.1.rc0 should be used in changelog's version, see rpmlint output
[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.
[!]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
- mongo-cxx-driver should obsolete libmongodb and the same for -devel packages
  Even though libmongo-client might be replaced by mongo-cxx-driver in the future as well, this does not have to be done from the beginning, since those packages can co-exist, so this one is not problem.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[x]: Useful -debuginfo package or justification otherwise.
[x]: Package is not known to require an ExcludeArch tag.
- Well, it is, but it is used sane. Do not forget to create a bug after package is in fedora:
  https://fedoraproject.org/wiki/Packaging:Guidelines#Architecture_Build_Failures
[-]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 20480 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.
[!]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
- There are some warnings worth fixing, see bellow
[x]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[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:
[!]: Dist tag is present (not strictly required in GL).
- Dist should be used in Release tag.
[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).
[-]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[-]: Scriptlets must be sane, if used.
[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.
- Not possible to test without mongodb-server (probably)
[-]: 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]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Fully versioned dependency in subpackages if applicable.
[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: mongo-cxx-driver-1.0.0-0.1.rc0.x86_64.rpm
          mongo-cxx-driver-devel-1.0.0-0.1.rc0.x86_64.rpm
          mongo-cxx-driver-1.0.0-0.1.rc0.src.rpm
mongo-cxx-driver.x86_64: W: incoherent-version-in-changelog 1.0.0-rc0 ['1.0.0-0.1.rc0', '1.0.0-0.1.rc0']
mongo-cxx-driver-devel.x86_64: W: only-non-binary-in-usr-lib
mongo-cxx-driver-devel.x86_64: W: no-documentation
mongo-cxx-driver.src:12: W: macro-in-comment %{pkg_name}
mongo-cxx-driver.src:12: W: macro-in-comment %{version}
mongo-cxx-driver.src:38: W: macro-in-comment %setup
mongo-cxx-driver.src:38: W: macro-in-comment %{name}
mongo-cxx-driver.src:38: W: macro-in-comment %{version}
mongo-cxx-driver.src:69: W: rpm-buildroot-usage %build --prefix=%{buildroot}%{_prefix}/ \
mongo-cxx-driver.src:31: W: mixed-use-of-spaces-and-tabs (spaces: line 4, tab: line 31)
3 packages and 0 specfiles checked; 0 errors, 10 warnings.




Rpmlint (installed packages)
----------------------------
# rpmlint mongo-cxx-driver-devel mongo-cxx-driver
mongo-cxx-driver-devel.x86_64: W: only-non-binary-in-usr-lib
mongo-cxx-driver-devel.x86_64: W: no-documentation
mongo-cxx-driver.x86_64: W: incoherent-version-in-changelog 1.0.0-rc0 ['1.0.0-0.1.rc0', '1.0.0-0.1.rc0']
2 packages and 0 specfiles checked; 0 errors, 3 warnings.
# echo 'rpmlint-done:'

Comment 2 Marek Skalický 2014-10-06 13:48:58 UTC
I've made required changes.

Spec URL: https://mskalick.fedorapeople.org/mongo-cxx-driver/mongo-cxx-driver.spec
SRPM URL: https://mskalick.fedorapeople.org/mongo-cxx-driver/mongo-cxx-driver-1.0.0-0.1.rc0.fc20.src.rpm

- libmongo-client is C library and mongo-cxx-driver is C++, so it's object-oriented -> I haven't added Obscoletes for it

- gtest -> I know. I'll try in next releases...

- mongo-cxx-driver-devel.x86_64: W: only-non-binary-in-usr-lib:
 -> this package contains only devel symlinks to libraries (which are in mongo-cxx-driver)

- mongo-cxx-driver-devel.x86_64: W: no-documentation
 -> this package dependeds on mongo-cxx-driver and they have the same documentation

Comment 3 Honza Horak 2014-10-07 12:46:17 UTC
(In reply to Marek Skalický from comment #2)
> - libmongo-client is C library and mongo-cxx-driver is C++, so it's
> object-oriented -> I haven't added Obscoletes for it

All right, makes sense.

Anyway, for "Obsolete: libmongodb" something like 2.6.0 might be better, since we can update to 2.4.10 at some point in F20 and then the Obsolete rule won't work during upgrade.

> - mongo-cxx-driver-devel.x86_64: W: only-non-binary-in-usr-lib:
>  -> this package contains only devel symlinks to libraries (which are in
> mongo-cxx-driver)

I guess this is just a rpmlint issue.

> - mongo-cxx-driver-devel.x86_64: W: no-documentation
>  -> this package dependeds on mongo-cxx-driver and they have the same
> documentation

Weird warning, not sure what rpmlint wanted to say by that, the spec looks all right.

I think there is no other obstacle for package review, so giving ACK, please.

Comment 4 Marek Skalický 2014-10-07 14:17:26 UTC
New Package SCM Request
=======================
Package Name: mongo-cxx-driver
Short Description: A C++ driver for MongoDB
Upstream URL: https://github.com/mongodb/mongo-cxx-driver
Owners: mskalick
Branches:
InitialCC:

Comment 5 Gwyn Ciesla 2014-10-07 16:47:27 UTC
Git done (by process-git-requests).

Comment 6 Troy Dawson 2014-11-04 22:54:02 UTC
Package Change Request
======================
Package Name: mongo-cxx-driver
New Branches: epel7
Owners: tdawson

Comment 7 Gwyn Ciesla 2014-11-05 12:06:04 UTC
Git done (by process-git-requests).


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