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
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:'
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
(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.
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:
Git done (by process-git-requests).
Package Change Request ====================== Package Name: mongo-cxx-driver New Branches: epel7 Owners: tdawson