Spec URL: http://ankursinha.fedorapeople.org/odeint/odeint.spec SRPM URL: http://ankursinha.fedorapeople.org/odeint/odeint-2.2.20130117-1.fc19.src.rpm Description: Odeint is a modern C++ library for numerically solving Ordinary Differential Equations. It is developed in a generic way using Template Metaprogramming which leads to extraordinary high flexibility at top performance. The numerical algorithms are implemented independently of the underlying arithmetics. This results in an incredible applicability of the library, especially in non-standard environments. For example, odeint supports matrix types, arbitrary precision arithmetics and even can be easily run on CUDA GPUs - check the Highlights to learn more. Moreover, odeint provides a comfortable easy-to-use interface allowing for a quick and efficient implementation of numerical simulations. Visit the impressively clear 30 lines Lorenz example. Odeint is a header only C++ library and the full source code is available for download. distributed under the highly liberal Boost Software License. Hence, odeint is free, open source and can be used in both non-commercial and commercial applications. Odeint did undergo the boost review process in the end of September 2012, which means users and other library authors evaluate the code and provide a review report. Based on these reports, odeint was accepted and thus will become part of the boost library collection. That means odeint will be officially shipped with one of the next releases of boost! Fedora Account System Username: ankursinha rpmlint output: [ankur@dhcppc1 SRPMS]$ rpmlint ./odeint-2.2.20130117-1.fc18.src.rpm ../SPECS/odeint.spec /var/lib/mock/fedora-rawhide-x86_64/result/*.rpm odeint.src: W: spelling-error %description -l en_US arithmetics -> arithmetic, arithmetic's, arithmetic s odeint.src: W: invalid-url Source0: odeint-v2-20130117.tar.gz ../SPECS/odeint.spec: W: invalid-url Source0: odeint-v2-20130117.tar.gz odeint.src: W: spelling-error %description -l en_US arithmetics -> arithmetic, arithmetic's, arithmetic s odeint.src: W: invalid-url Source0: odeint-v2-20130117.tar.gz odeint-devel.noarch: W: spelling-error %description -l en_US arithmetics -> arithmetic, arithmetic's, arithmetic s 4 packages and 1 specfiles checked; 0 errors, 6 warnings. [ankur@dhcppc1 SRPMS]$
Hi Ankur Looks quite clean on a first glimpse. Will have a closer look later. But is it possible that the summary of the devel sub-package "The matrix template library - open source edition" doesn't belong to this package?
> %global checkout_date 20130117 > Name: odeint > Version: 2.2.%{checkout_date} > Release: 1%{?dist} It ought to apply the versioning scheme for snapshots. > %description Is that a copy of the complete README? *grin* I highly recommend trimming it down to at most half the current size and truncating the src.rpm description a lot, too. > cp -rv Typically, we want to preserve timestamps by using cp -pā¦ > %package devel > Provides: %{name} = %{version}-%{release} > %package docs > Requires: %{name} = %{version}-%{release} This extra dependency increases the metadata and isn't really useful, because it is a virtual package only. You could simply depend on the -devel package. * As the headers in the -devel package are pretty much useless without Boost headers, some dependencies on the needed Boost -devel packages would be very useful.
Hello! New spec/srpm: http://ankursinha.fedorapeople.org/odeint/odeint.spec http://ankursinha.fedorapeople.org/odeint/odeint-2.2-1.fc19.src.rpm * Sun Jan 27 2013 Ankur Sinha <ankursinha AT fedoraproject DOT org> 2.2-1 - Add boost requires - Shorten description - Correct source url, versioning - Initial rpmbuild The description was two sections of the website :P. I've shortened it and rectified the other issues pointed out too. Thanks, Warm regards, Ankur
I'll go ahead and take this, and try to get it done this weekend.
So here's the fedora-review generated review, and I've checked the things it didn't: Package Review ============== Key: [x] = Pass [!] = Fail [-] = Not applicable [?] = Not evaluated Issues: ======= - Large documentation must go in a -doc subpackage. Note: Documentation size is 1085440 bytes in 175 files. See: http://fedoraproject.org/wiki/Packaging/Guidelines#PackageDocumentation ^^^ Note: This is because you used -docs instead of -doc as the name of the subpackage. Change the name of the -docs subpackage to -doc. ===== MUST items ===== 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]: 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 requires other packages for directories it uses. [x]: Package uses nothing in %doc for runtime. [x]: Package is not known to require ExcludeArch. [x]: Fully versioned dependency in subpackages, if present. Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in odeint- devel , odeint-docs [x]: Package complies to the Packaging Guidelines [x]: License field in the package spec file matches the actual license. [x]: License file installed when any subpackage combination is installed. [x]: Package consistently uses macro is (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. [x]: Package must own all directories that it creates. [x]: Package does not own files or directories owned by other packages. [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]: All build dependencies are listed in BuildRequires, except for any that are listed in the exceptions section of Packaging Guidelines. [x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the beginning of %install. [x]: Each %files section contains %defattr if rpm < 4.4 [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]: Spec file lacks Packager, Vendor, PreReq tags. [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 %doc. [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 [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). Python: [-]: Python eggs must not download any dependencies during the build process. [-]: A package which is used by another package via an egg interface should provide egg info. [-]: Package meets the Packaging Guidelines::Python [x]: Binary eggs must be removed in %prep ===== SHOULD items ===== Generic: [!]: Sources can be downloaded from URI in Source: tag Note: Could not download Source0 [!]: 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]: Package functions as described. [x]: Latest version is packaged. [x]: Package does not include license text files separate from upstream. [x]: SourceX tarball generation or download is documented. Note: Package contains tarball without URL, check comments [-]: 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. [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]: Dist tag is present. [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. ===== EXTRA items ===== Generic: [x]: Large data in /usr/share should live in a noarch subpackage if package is arched. [x]: Rpmlint is run on all installed packages. Note: There are rpmlint messages (see attachment). [x]: Spec file according to URL is the same as in SRPM. Rpmlint ------- Checking: odeint-devel-2.2-1.fc18.noarch.rpm odeint-docs-2.2-1.fc18.noarch.rpm odeint-devel.noarch: W: spelling-error %description -l en_US arithmetics -> arithmetic, arithmetic's, arithmetic s odeint-docs.noarch: E: devel-dependency odeint-devel 2 packages and 0 specfiles checked; 1 errors, 1 warnings. Rpmlint (installed packages) ---------------------------- # rpmlint odeint-docs odeint-devel odeint-docs.noarch: E: devel-dependency odeint-devel odeint-devel.noarch: W: spelling-error %description -l en_US arithmetics -> arithmetic, arithmetic's, arithmetic s 2 packages and 0 specfiles checked; 1 errors, 1 warnings. # echo 'rpmlint-done:' Requires -------- odeint-docs (rpmlib, GLIBC filtered): odeint-devel odeint-devel (rpmlib, GLIBC filtered): boost-devel Provides -------- odeint-docs: odeint-docs odeint-devel: odeint-devel Generated by fedora-review 0.4.0 (660ce56) last change: 2013-01-29 Buildroot used: fedora-18-x86_64 Command line :/usr/bin/fedora-review -b 896310 ==================================================== Some additional comments: Since this is a template header library, the odeint-devel subpackage should also provide odeint-static = version-release: http://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_Static_Libraries We do this for similar template header libraries like eigen3 and libkdtree++ The odeint binary package is never going to be created (since it's empty), so it's not necessary to have Requires: odeint-devel, and to have the big long description in there and also provide it for the -devel subpackage. The main package can just use %{summary} as the description, and not directly Requires: anything. Requiring odeint-devel in the docs is OK, since there is no base package and the docs are development docs. So action items are: - Rename -docs to -doc - Get rid of unneeded stuff in main package - Add a static Provides: - Fix spelling error provided by rpmlint (arithmetics) - Ask upstream about LICENSE (SHOULD, not required for review)
Hi Rich, Updated spec/srpm: http://ankursinha.fedorapeople.org/odeint/odeint-2.2-2.fc20.src.rpm http://ankursinha.fedorapeople.org/odeint/odeint.spec * Fri May 03 2013 Ankur Sinha <ankursinha AT fedoraproject DOT org> 2.2-2 - Update package as per review requirements - Remove extra stuff from main package - Rename docs to doc - Correct spelling error - Add static requires to devel - Could not remove requires from main package since adding a dep on -devel in doc gives the rpm lint "devel dependency" error. I couldn't require odeint-devel in docs. Rpmlint screams: devel-dependency: Your package has a dependency on a devel package but it's not a devel package itself. rpmlint for updated package: [ankur@ankur-pc SRPMS]$ rpmlint ../SPECS/odeint.spec ./odeint-2.2-2.fc19.src.rpm /var/lib/mock/fedora-rawhide-x86_64/result/*.rpm ../SPECS/odeint.spec: W: invalid-url Source0: https://github.com/headmyshoulder/odeint-v2/archive/a5aa30b6604184c0dbe76f7398c4e7facb883eb8/odeint-v2-2.2.tar.gz HTTP Error 500: Internal Server Error odeint.src: W: invalid-url Source0: https://github.com/headmyshoulder/odeint-v2/archive/a5aa30b6604184c0dbe76f7398c4e7facb883eb8/odeint-v2-2.2.tar.gz HTTP Error 500: Internal Server Error odeint.src: W: invalid-url Source0: https://github.com/headmyshoulder/odeint-v2/archive/a5aa30b6604184c0dbe76f7398c4e7facb883eb8/odeint-v2-2.2.tar.gz HTTP Error 500: Internal Server Error 4 packages and 1 specfiles checked; 0 errors, 3 warnings. [ankur@ankur-pc SRPMS]$ Thanks, Warm regards, Ankur
I think it's ok to have the -doc package require the -devel subpackage, in spite of the rpmlint error (rpmlint is not authoratative, the packaging guidelines are.) From reading the packaging guidelines section on documentation, they suggest that development documentation be included with the -devel package. They also say that large documentation should be split off into a -doc subpackage, but nowhere does it say anything about not being able to split out development documentation into a separate package. I think this is also a special case. There is no base package, and the documentation pertains to the -devel subpackage. Finally, the way the spec is currently written, it is impossible to install the -doc subpackage. It depends on odeint-2.2-2, which doesn't exist: $ sudo yum -C localinstall ../RPMS/noarch/odeint-d* Loaded plugins: auto-update-debuginfo, fastestmirror, langpacks, presto Examining ../RPMS/noarch/odeint-devel-2.2-2.fc18.noarch.rpm: odeint-devel-2.2-2.fc18.noarch Marking ../RPMS/noarch/odeint-devel-2.2-2.fc18.noarch.rpm to be installed Examining ../RPMS/noarch/odeint-doc-2.2-2.fc18.noarch.rpm: odeint-doc-2.2-2.fc18.noarch Marking ../RPMS/noarch/odeint-doc-2.2-2.fc18.noarch.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package odeint-devel.noarch 0:2.2-2.fc18 will be installed ---> Package odeint-doc.noarch 0:2.2-2.fc18 will be installed --> Processing Dependency: odeint = 2.2-2.fc18 for package: odeint-doc-2.2-2.fc18.noarch --> Finished Dependency Resolution Error: Package: odeint-doc-2.2-2.fc18.noarch (/odeint-doc-2.2-2.fc18.noarch) Requires: odeint = 2.2-2.fc18 You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest So go ahead and add Requires: %{name}-devel = %{version}-%{release} to the -doc subpackage Also, the github upstream URL is broken. For starters, it looks like the commit listed in the specfile doesn't exist in the odeint repository. The commit for the v2.2 tag, according to https://github.com/headmyshoulder/odeint-v2/tags, is 421f879c6478ec23ea4e398fb47f8a621ff784e6. So as per http://fedoraproject.org/wiki/Packaging:SourceURL#Github, the Source0 should read https://github.com/headmyshoulder/odeint-v2/archive/%{commit}/%{name}-%{version}-%{shortcommit}.tar.gz and %prep should have: %setup -qn %{name}-v2-%{commit} That will fix the invalid Source0 messages (I tried it locally and it looks like everything worked fine.)
Updated spec/srpm: http://ankursinha.fedorapeople.org/odeint/odeint.spec http://ankursinha.fedorapeople.org/odeint/odeint-2.2-3.fc20.src.rpm I've modified the source URL. rpmlint still cries, but spectool successfully gets the source tar: [ankur@ankur-pc SRPMS]$ rpmlint ../SPECS/odeint.spec ./odeint-2.2-3.fc19.src.rpm /var/lib/mock/fedora-rawhide-x86_64/result/*.rpm odeint.src: W: invalid-url Source0: https://github.com/headmyshoulder/odeint-v2/archive/421f879c6478ec23ea4e398fb47f8a621ff784e6/odeint-v2-2.2.tar.gz The read operation timed out odeint.src: W: invalid-url Source0: https://github.com/headmyshoulder/odeint-v2/archive/421f879c6478ec23ea4e398fb47f8a621ff784e6/odeint-v2-2.2.tar.gz The read operation timed out odeint-doc.noarch: E: devel-dependency odeint-devel 4 packages and 1 specfiles checked; 1 errors, 2 warnings. [ankur@ankur-pc SRPMS]$ spectool -g ../SPECS/odeint.spec Getting https://github.com/headmyshoulder/odeint-v2/archive/421f879c6478ec23ea4e398fb47f8a621ff784e6/odeint-v2-2.2.tar.gz to ./odeint-v2-2.2.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 166 100 166 0 0 99 0 0:00:01 0:00:01 --:--:-- 99 100 329k 100 329k 0 0 58038 0 0:00:05 0:00:05 --:--:-- 106k [ankur@ankur-pc SRPMS]$ ls odeint-* odeint-2.2-3.fc19.src.rpm odeint-v2-2.2.tar.gz [ankur@ankur-pc SRPMS]$ * Sun May 05 2013 Ankur Sinha <ankursinha AT fedoraproject DOT org> 2.2-3 - Make doc package require devel - Change sourceURL Thanks, Warm regards, Ankur
Looks good, this package is APPROVED. One last note: don't forget to coordinate with the Boost maintainers and request that they provide an Obsoletes: odeint-devel in f19+ before this package goes to stable, so that the f18->f19 upgrade path is not broken.
(In reply to comment #9) > Looks good, this package is APPROVED. > > One last note: don't forget to coordinate with the Boost maintainers and > request that they provide an Obsoletes: odeint-devel in f19+ before this > package goes to stable, so that the f18->f19 upgrade path is not broken. They're already aware of this. I think they've already added the obsoletes but I'll double check. Thanks for the review Rich.
New Package SCM Request ======================= Package Name: odeint Short Description: A C++ library for numerically solving Ordinary Differential Equations Owners: ankursinha Branches: f17 f18
Git done (by process-git-requests).
odeint-2.2-3.fc18 has been submitted as an update for Fedora 18. https://admin.fedoraproject.org/updates/FEDORA-2013-10315/odeint-2.2-3.fc18
odeint-2.2-3.fc18 has been pushed to the Fedora 18 stable repository.
Who will block odeint from Rawhide? It has been branched to F20, rebuilt and conflicts with boost now, since the Obsoletes are not high enough anymore.
releng will do it. Ticket filed: https://fedorahosted.org/rel-eng/ticket/5722