Spec URL: http://jjames.fedorapeople.org/subunit/subunit.spec SRPM URL: http://jjames.fedorapeople.org/subunit/subunit-0.0.18-1.fc21.src.rpm Fedora Account System Username: jjames Description: Subunit is a streaming protocol for test results. The protocol is a binary encoding that is easily generated and parsed. By design all the components of the protocol conceptually fit into the xUnit TestCase -> TestResult interaction. Subunit comes with command line filters to process a subunit stream and language bindings for python, C, C++ and shell. Bindings are easy to write for other languages. A number of useful things can be done easily with subunit: - Test aggregation: Tests run separately can be combined and then reported/displayed together. For instance, tests from different languages can be shown as a seamless whole. - Test archiving: A test run may be recorded and replayed later. - Test isolation: Tests that may crash or otherwise interact badly with each other can be run separately and then aggregated, rather than interfering with each other. - Grid testing: subunit can act as the necessary serialization and deserialization to get test runs on distributed machines to be reported in real time. The package breakdown and interdependencies are somewhat unusual. That is partly because some bits are architecture-dependent and other bits are architecture-independent. Due to the way rpm handles noarch packages, that means one of the architecture-dependent bits must be the main package, with the noarch parts in subpackages. The other part is that subunit consists of 2 different kinds of packages: language bindings (which allow test results to be emitted in subunit format), and processing tools. The two different kinds are completely independent. It is possible, for example, to produce test results with the language bindings on one machine, then ship the results to a completely different machine to process those results. Therefore, there are no rpm package dependencies in either direction between the two kinds of packages. I have tried to make the order of the packages in the spec file reflect this, to help alleviate confusion. The main package contains a C library that allows C programs to emit subunit test results. It does not depend on any of the other packages. The -devel package, which contains the single header file needed to use the library, depends only on the main package. The -cppunit package contains cppunit integration for subunit. Since it links against the C library, it depends on the main package. The -cppunit-devel package therefore requires both -devel and the -cppunit package. The -perl package allows perl programs to emit subunit test results. It does not depend on any of the other packages. Likewise, the -shell package does not depend on any of the other packages. That is all of the language binding packages. The python-subunit package is the main processing package. It is currently available for python 2 only, due to missing python 3 dependencies. It does not depend on any language bindings, and therefore has no Requires on any other package. Last is the -filters package, which contains some command line filters that use the python code, and therefore depend on python-subunit. There is already a python-subunit package in Fedora. This package will replace it, as discussed in bug 908842.
Minor licensing problem to fix, in that because of the lack of interdependencies (which is fine, based on your reasoning) the license is not necessarily installed when one of the binding packages is installed (at least the -filters, -perl and -shell packages seem to be affected, but you can examine the generated Requires below for more details). I would suggest adding the appropriate license to %doc for each of the subpackages. As you have mentioned that this package will replace the existing python-subunit package, would it be useful to add Obsoletes/Provides as per https://fedoraproject.org/wiki/Packaging:Guidelines#Renaming.2FReplacing_Existing_Packages ? The Perl packaging guidelines seem to require a particular style of Requires, so I suppose that should be added to the -perl subpackage: https://fedoraproject.org/wiki/Packaging:Perl#Perl_Requires_and_Provides Where chmod is used to change permissions, it updates the timestamp too, so you should try to preserve timestamps (maybe with "touch -r", although there might be a better way). Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated [ ] = Manual review needed ===== 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: "GPL (v2 or later)", "Unknown or generated". 37 files have unknown license. Detailed output of licensecheck in /home/david/checkout/rpms/1065539-subunit/licensecheck.txt GPLv2 is bogus, as it is the license of the libtool script, so this is fine. [!]: License file installed when any subpackage combination is installed. [x]: If the package is under multiple licenses, the licensing breakdown must be documented in the spec. [x]: Package must own all directories that it creates. Note: Directories without known owners: /etc/profile.d Should be fine, owned by setup package. [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 [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. [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. [x]: Package is not known to require an ExcludeArch tag. [-]: Large documentation must go in a -doc subpackage. Large could be size (~1MB) or number of files. Note: Documentation size is 92160 bytes in 8 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 %doc. [x]: Package requires other packages for directories it uses. [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]: %config files are marked noreplace or the reason is justified. [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]: No %config files under /usr. [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 Perl: [ ]: Package contains the mandatory BuildRequires and Requires:. Note: Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) missing? Python: [x]: 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. [x]: Package meets the Packaging Guidelines::Python [x]: Package contains BR: python2-devel or python3-devel [x]: Binary eggs must be removed in %prep ===== 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 subunit- cppunit-devel , subunit-perl , subunit-shell , python-subunit , subunit- filters [ ]: Package functions as described. [x]: Latest version is packaged. [x]: Package does not include license text files separate from upstream. [x]: Patches link to upstream bugs/comments/lists or are otherwise justified. [x]: Scriptlets must be sane, if used. [-]: Description and summary sections in the package spec file contains translations for supported Non-English languages, if available. [-]: Package should compile and build into binary rpms on all supported architectures. [x]: %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]: Uses parallel make %{?_smp_mflags} macro. [x]: The placement of pkgconfig(.pc) files are correct. [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: subunit-0.0.18-1.fc21.x86_64.rpm subunit-devel-0.0.18-1.fc21.x86_64.rpm subunit-cppunit-0.0.18-1.fc21.x86_64.rpm subunit-cppunit-devel-0.0.18-1.fc21.x86_64.rpm subunit-perl-0.0.18-1.fc21.noarch.rpm subunit-shell-0.0.18-1.fc21.noarch.rpm python-subunit-0.0.18-1.fc21.noarch.rpm subunit-filters-0.0.18-1.fc21.noarch.rpm subunit-0.0.18-1.fc21.src.rpm subunit.x86_64: W: name-repeated-in-summary C subunit subunit-cppunit.x86_64: W: no-documentation subunit-cppunit-devel.x86_64: E: incorrect-fsf-address /usr/share/doc/subunit-cppunit-devel/README subunit-perl.noarch: W: no-documentation subunit-perl.noarch: W: no-manual-page-for-binary subunit-diff python-subunit.noarch: W: spelling-error %description -l en_US xUnit -> x Unit, unit python-subunit.noarch: W: spelling-error %description -l en_US deserialization -> serialization, materialization, denationalization python-subunit.noarch: W: no-documentation subunit-filters.noarch: W: no-documentation subunit-filters.noarch: W: no-manual-page-for-binary subunit2gtk subunit-filters.noarch: W: no-manual-page-for-binary subunit-tags subunit-filters.noarch: W: no-manual-page-for-binary tap2subunit subunit-filters.noarch: W: no-manual-page-for-binary subunit2junitxml subunit-filters.noarch: W: no-manual-page-for-binary subunit-2to1 subunit-filters.noarch: W: no-manual-page-for-binary subunit-output subunit-filters.noarch: W: no-manual-page-for-binary subunit-1to2 subunit-filters.noarch: W: no-manual-page-for-binary subunit-filter subunit-filters.noarch: W: no-manual-page-for-binary subunit2pyunit subunit-filters.noarch: W: no-manual-page-for-binary subunit-notify subunit-filters.noarch: W: no-manual-page-for-binary subunit2csv subunit-filters.noarch: W: no-manual-page-for-binary subunit-ls subunit-filters.noarch: W: no-manual-page-for-binary subunit-stats subunit.src: W: name-repeated-in-summary C subunit 9 packages and 0 specfiles checked; 1 errors, 22 warnings. Rpmlint (installed packages) ---------------------------- # rpmlint python-subunit subunit-shell subunit-perl subunit-d evel subunit-cppunit subunit-cppunit-devel subunit-filters subunit python-subunit.noarch: W: spelling-error %description -l en_US xUnit -> x Unit, unit python-subunit.noarch: W: spelling-error %description -l en_US deserialization -> serialization, materialization, denationalization python-subunit.noarch: W: no-documentation subunit-perl.noarch: W: no-documentation subunit-perl.noarch: W: no-manual-page-for-binary subunit-diff subunit-cppunit.x86_64: W: no-documentation subunit-cppunit-devel.x86_64: E: incorrect-fsf-address /usr/share/doc/subunit-cppunit-devel/README subunit-filters.noarch: W: no-documentation subunit-filters.noarch: W: no-manual-page-for-binary subunit2gtk subunit-filters.noarch: W: no-manual-page-for-binary subunit-tags subunit-filters.noarch: W: no-manual-page-for-binary tap2subunit subunit-filters.noarch: W: no-manual-page-for-binary subunit2junitxml subunit-filters.noarch: W: no-manual-page-for-binary subunit-2to1 subunit-filters.noarch: W: no-manual-page-for-binary subunit-output subunit-filters.noarch: W: no-manual-page-for-binary subunit-1to2 subunit-filters.noarch: W: no-manual-page-for-binary subunit-filter subunit-filters.noarch: W: no-manual-page-for-binary subunit2pyunit subunit-filters.noarch: W: no-manual-page-for-binary subunit-notify subunit-filters.noarch: W: no-manual-page-for-binary subunit2csv subunit-filters.noarch: W: no-manual-page-for-binary subunit-ls subunit-filters.noarch: W: no-manual-page-for-binary subunit-stats subunit.x86_64: W: name-repeated-in-summary C subunit 8 packages and 0 specfiles checked; 1 errors, 21 warnings. # echo 'rpmlint-done:' Requires -------- python-subunit (rpmlib, GLIBC filtered): /usr/bin/python python(abi) python-extras python-iso8601 python-testtools subunit-shell (rpmlib, GLIBC filtered): config(subunit-shell) subunit-perl (rpmlib, GLIBC filtered): /usr/bin/perl perl(Exporter) perl(FindBin) perl(Getopt::Long) perl(POSIX) perl(Subunit) perl(Subunit::Diff) perl(lib) perl(strict) perl(vars) subunit-devel (rpmlib, GLIBC filtered): /usr/bin/pkg-config libsubunit.so.0()(64bit) subunit(x86-64) subunit-cppunit (rpmlib, GLIBC filtered): /sbin/ldconfig libc.so.6()(64bit) libcppunit-1.12.so.1()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) libsubunit.so.0()(64bit) rtld(GNU_HASH) subunit(x86-64) subunit-cppunit-devel (rpmlib, GLIBC filtered): /usr/bin/pkg-config cppunit-devel(x86-64) libcppunit_subunit.so.0()(64bit) subunit-cppunit(x86-64) subunit-devel(x86-64) subunit-filters (rpmlib, GLIBC filtered): /usr/bin/python pygtk2 python-subunit subunit (rpmlib, GLIBC filtered): /sbin/ldconfig libc.so.6()(64bit) rtld(GNU_HASH) Provides -------- python-subunit: python-subunit subunit-shell: config(subunit-shell) subunit-shell subunit-perl: perl(Subunit) perl(Subunit::Diff) subunit-perl subunit-devel: pkgconfig(libsubunit) subunit-devel subunit-devel(x86-64) subunit-cppunit: libcppunit_subunit.so.0()(64bit) subunit-cppunit subunit-cppunit(x86-64) subunit-cppunit-devel: pkgconfig(libcppunit_subunit) subunit-cppunit-devel subunit-cppunit-devel(x86-64) subunit-filters: subunit-filters subunit: libsubunit.so.0()(64bit) subunit subunit(x86-64) Source checksums ---------------- https://launchpad.net/subunit/trunk/0.0.18/+download/subunit-0.0.18.tar.gz : CHECKSUM(SHA256) this package : f4508a83b1206a85f6c1cfc57f83edc2ca13d62cc65be90ec27eadfa792a6eb4 CHECKSUM(SHA256) upstream package : f4508a83b1206a85f6c1cfc57f83edc2ca13d62cc65be90ec27eadfa792a6eb4 Generated by fedora-review 0.5.1 (bb9bf27) last change: 2013-12-13 Command line :/usr/bin/fedora-review -b 1065539 Buildroot used: fedora-rawhide-x86_64 Active plugins: Python, Generic, Shell-api, C/C++, Perl Disabled plugins: Java, fonts, SugarActivity, Ocaml, Haskell, R, PHP, Ruby Disabled flags: EXARCH, EPEL5, BATCH, DISTTAG
As you mentioned a review swap on the devel mailing list, it would be great if you could review bug 1077935.
(In reply to David King from comment #1) > Minor licensing problem to fix, in that because of the lack of > interdependencies (which is fine, based on your reasoning) the license is > not necessarily installed when one of the binding packages is installed (at > least the -filters, -perl and -shell packages seem to be affected, but you > can examine the generated Requires below for more details). I would suggest > adding the appropriate license to %doc for each of the subpackages. Good catch. I have added the licenses. > As you have mentioned that this package will replace the existing > python-subunit package, would it be useful to add Obsoletes/Provides as per > https://fedoraproject.org/wiki/Packaging:Guidelines#Renaming. > 2FReplacing_Existing_Packages ? No, the name of the binary package will not change. It's just being built from a different source RPM. All that is necessary is for the NEVR to be higher on the new package than on the old. When I first submitted this for review, python-subunit was on 0.0.12, so it wasn't a problem. It has been updated to 0.0.18-1 now, so the new package must be at least 0.0.18-2, and there should not be any more builds of python-subunit. I am adding the python-subunit maintainers to the CC list for this bug to try to prevent that. > > The Perl packaging guidelines seem to require a particular style of > Requires, so I suppose that should be added to the -perl subpackage: > > https://fedoraproject.org/wiki/Packaging:Perl#Perl_Requires_and_Provides > > Where chmod is used to change permissions, it updates the timestamp too, so > you should try to preserve timestamps (maybe with "touch -r", although there > might be a better way). > > Package Review > ============== > > Legend: > [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated > [ ] = Manual review needed > > > ===== 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: > "GPL (v2 or later)", "Unknown or generated". 37 files have unknown > license. Detailed output of licensecheck in > /home/david/checkout/rpms/1065539-subunit/licensecheck.txt > > GPLv2 is bogus, as it is the license of the libtool script, so this is fine. > > [!]: License file installed when any subpackage combination is installed. > [x]: If the package is under multiple licenses, the licensing breakdown must > be documented in the spec. > [x]: Package must own all directories that it creates. > Note: Directories without known owners: /etc/profile.d > > Should be fine, owned by setup package. > > [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 > [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. > [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. > [x]: Package is not known to require an ExcludeArch tag. > [-]: Large documentation must go in a -doc subpackage. Large could be size > (~1MB) or number of files. > Note: Documentation size is 92160 bytes in 8 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 %doc. > [x]: Package requires other packages for directories it uses. > [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]: %config files are marked noreplace or the reason is justified. > [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]: No %config files under /usr. > [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 > > Perl: > [ ]: Package contains the mandatory BuildRequires and Requires:. > Note: Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; > echo > $version)) missing? > > Python: > [x]: 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. > [x]: Package meets the Packaging Guidelines::Python > [x]: Package contains BR: python2-devel or python3-devel > [x]: Binary eggs must be removed in %prep > > ===== 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 subunit- > cppunit-devel , subunit-perl , subunit-shell , python-subunit , subunit- > filters > [ ]: Package functions as described. > [x]: Latest version is packaged. > [x]: Package does not include license text files separate from upstream. > [x]: Patches link to upstream bugs/comments/lists or are otherwise justified. > [x]: Scriptlets must be sane, if used. > [-]: Description and summary sections in the package spec file contains > translations for supported Non-English languages, if available. > [-]: Package should compile and build into binary rpms on all supported > architectures. > [x]: %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]: Uses parallel make %{?_smp_mflags} macro. > [x]: The placement of pkgconfig(.pc) files are correct. > [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: subunit-0.0.18-1.fc21.x86_64.rpm > subunit-devel-0.0.18-1.fc21.x86_64.rpm > subunit-cppunit-0.0.18-1.fc21.x86_64.rpm > subunit-cppunit-devel-0.0.18-1.fc21.x86_64.rpm > subunit-perl-0.0.18-1.fc21.noarch.rpm > subunit-shell-0.0.18-1.fc21.noarch.rpm > python-subunit-0.0.18-1.fc21.noarch.rpm > subunit-filters-0.0.18-1.fc21.noarch.rpm > subunit-0.0.18-1.fc21.src.rpm > subunit.x86_64: W: name-repeated-in-summary C subunit > subunit-cppunit.x86_64: W: no-documentation > subunit-cppunit-devel.x86_64: E: incorrect-fsf-address > /usr/share/doc/subunit-cppunit-devel/README > subunit-perl.noarch: W: no-documentation > subunit-perl.noarch: W: no-manual-page-for-binary subunit-diff > python-subunit.noarch: W: spelling-error %description -l en_US xUnit -> x > Unit, unit > python-subunit.noarch: W: spelling-error %description -l en_US > deserialization -> serialization, materialization, denationalization > python-subunit.noarch: W: no-documentation > subunit-filters.noarch: W: no-documentation > subunit-filters.noarch: W: no-manual-page-for-binary subunit2gtk > subunit-filters.noarch: W: no-manual-page-for-binary subunit-tags > subunit-filters.noarch: W: no-manual-page-for-binary tap2subunit > subunit-filters.noarch: W: no-manual-page-for-binary subunit2junitxml > subunit-filters.noarch: W: no-manual-page-for-binary subunit-2to1 > subunit-filters.noarch: W: no-manual-page-for-binary subunit-output > subunit-filters.noarch: W: no-manual-page-for-binary subunit-1to2 > subunit-filters.noarch: W: no-manual-page-for-binary subunit-filter > subunit-filters.noarch: W: no-manual-page-for-binary subunit2pyunit > subunit-filters.noarch: W: no-manual-page-for-binary subunit-notify > subunit-filters.noarch: W: no-manual-page-for-binary subunit2csv > subunit-filters.noarch: W: no-manual-page-for-binary subunit-ls > subunit-filters.noarch: W: no-manual-page-for-binary subunit-stats > subunit.src: W: name-repeated-in-summary C subunit > 9 packages and 0 specfiles checked; 1 errors, 22 warnings. > > > > > Rpmlint (installed packages) > ---------------------------- > # rpmlint python-subunit subunit-shell subunit-perl subunit-d > evel subunit-cppunit subunit-cppunit-devel subunit-filters subunit > python-subunit.noarch: W: spelling-error %description -l en_US xUnit -> x > Unit, unit > python-subunit.noarch: W: spelling-error %description -l en_US > deserialization -> serialization, materialization, denationalization > python-subunit.noarch: W: no-documentation > subunit-perl.noarch: W: no-documentation > subunit-perl.noarch: W: no-manual-page-for-binary subunit-diff > subunit-cppunit.x86_64: W: no-documentation > subunit-cppunit-devel.x86_64: E: incorrect-fsf-address > /usr/share/doc/subunit-cppunit-devel/README > subunit-filters.noarch: W: no-documentation > subunit-filters.noarch: W: no-manual-page-for-binary subunit2gtk > subunit-filters.noarch: W: no-manual-page-for-binary subunit-tags > subunit-filters.noarch: W: no-manual-page-for-binary tap2subunit > subunit-filters.noarch: W: no-manual-page-for-binary subunit2junitxml > subunit-filters.noarch: W: no-manual-page-for-binary subunit-2to1 > subunit-filters.noarch: W: no-manual-page-for-binary subunit-output > subunit-filters.noarch: W: no-manual-page-for-binary subunit-1to2 > subunit-filters.noarch: W: no-manual-page-for-binary subunit-filter > subunit-filters.noarch: W: no-manual-page-for-binary subunit2pyunit > subunit-filters.noarch: W: no-manual-page-for-binary subunit-notify > subunit-filters.noarch: W: no-manual-page-for-binary subunit2csv > subunit-filters.noarch: W: no-manual-page-for-binary subunit-ls > subunit-filters.noarch: W: no-manual-page-for-binary subunit-stats > subunit.x86_64: W: name-repeated-in-summary C subunit > 8 packages and 0 specfiles checked; 1 errors, 21 warnings. > # echo 'rpmlint-done:' > > > > Requires > -------- > python-subunit (rpmlib, GLIBC filtered): > /usr/bin/python > python(abi) > python-extras > python-iso8601 > python-testtools > > subunit-shell (rpmlib, GLIBC filtered): > config(subunit-shell) > > subunit-perl (rpmlib, GLIBC filtered): > /usr/bin/perl > perl(Exporter) > perl(FindBin) > perl(Getopt::Long) > perl(POSIX) > perl(Subunit) > perl(Subunit::Diff) > perl(lib) > perl(strict) > perl(vars) > > subunit-devel (rpmlib, GLIBC filtered): > /usr/bin/pkg-config > libsubunit.so.0()(64bit) > subunit(x86-64) > > subunit-cppunit (rpmlib, GLIBC filtered): > /sbin/ldconfig > libc.so.6()(64bit) > libcppunit-1.12.so.1()(64bit) > libgcc_s.so.1()(64bit) > libgcc_s.so.1(GCC_3.0)(64bit) > libstdc++.so.6()(64bit) > libstdc++.so.6(CXXABI_1.3)(64bit) > libsubunit.so.0()(64bit) > rtld(GNU_HASH) > subunit(x86-64) > > subunit-cppunit-devel (rpmlib, GLIBC filtered): > /usr/bin/pkg-config > cppunit-devel(x86-64) > libcppunit_subunit.so.0()(64bit) > subunit-cppunit(x86-64) > subunit-devel(x86-64) > > subunit-filters (rpmlib, GLIBC filtered): > /usr/bin/python > pygtk2 > python-subunit > > subunit (rpmlib, GLIBC filtered): > /sbin/ldconfig > libc.so.6()(64bit) > rtld(GNU_HASH) > > > > Provides > -------- > python-subunit: > python-subunit > > subunit-shell: > config(subunit-shell) > subunit-shell > > subunit-perl: > perl(Subunit) > perl(Subunit::Diff) > subunit-perl > > subunit-devel: > pkgconfig(libsubunit) > subunit-devel > subunit-devel(x86-64) > > subunit-cppunit: > libcppunit_subunit.so.0()(64bit) > subunit-cppunit > subunit-cppunit(x86-64) > > subunit-cppunit-devel: > pkgconfig(libcppunit_subunit) > subunit-cppunit-devel > subunit-cppunit-devel(x86-64) > > subunit-filters: > subunit-filters > > subunit: > libsubunit.so.0()(64bit) > subunit > subunit(x86-64) > > > > Source checksums > ---------------- > https://launchpad.net/subunit/trunk/0.0.18/+download/subunit-0.0.18.tar.gz : > CHECKSUM(SHA256) this package : > f4508a83b1206a85f6c1cfc57f83edc2ca13d62cc65be90ec27eadfa792a6eb4 > CHECKSUM(SHA256) upstream package : > f4508a83b1206a85f6c1cfc57f83edc2ca13d62cc65be90ec27eadfa792a6eb4 > > > Generated by fedora-review 0.5.1 (bb9bf27) last change: 2013-12-13 > Command line :/usr/bin/fedora-review -b 1065539 > Buildroot used: fedora-rawhide-x86_64 > Active plugins: Python, Generic, Shell-api, C/C++, Perl > Disabled plugins: Java, fonts, SugarActivity, Ocaml, Haskell, R, PHP, Ruby > Disabled flags: EXARCH, EPEL5, BATCH, DISTTAG
Argh. Sorry. It turns out that adding users to the CC list does NOT involve hitting the Enter button. The rest of my reply will follow in a moment.
Continuing on from where I prematurely cut things off in comment 3: (In reply to David King from comment #1) > The Perl packaging guidelines seem to require a particular style of > Requires, so I suppose that should be added to the -perl subpackage: > > https://fedoraproject.org/wiki/Packaging:Perl#Perl_Requires_and_Provides I have added a Requires on perl(:MODULE_COMPAT_%{perl_version}) to the -perl subpackage. Was that all you had in mind? I don't see anything else at that URL that this package needs, I think. > Where chmod is used to change permissions, it updates the timestamp too, so > you should try to preserve timestamps (maybe with "touch -r", although there > might be a better way). Actually, no, it doesn't. It does update the ctime, but that won't match anyway. However, chmod does not change the mtime, which is the one we're worried about. Try it. New URLs: Spec URL: http://jjames.fedorapeople.org/subunit/subunit.spec SRPM URL: http://jjames.fedorapeople.org/subunit/subunit-0.0.18-2.fc21.src.rpm
Thanks for the update, and the clarifications about the Obsoletes/Provides. Yes, that Perl change was what I had in mind, sorry for not mentioning it explicitly. Duh, of course chmod does not change the mtime, silly me. I think that I assumed that as subunit-diff in the subunit-perl RPM has a timestamp the same as the build time of the RPM (just looking at the rpm contents with "less), that the chmod was triggering the mtime update. Do you know why that is? As this is only a "should" item, there is nothing holding back the review, so it is now approved.
(In reply to David King from comment #6) > Duh, of course chmod does not change the mtime, silly me. I think that I > assumed that as subunit-diff in the subunit-perl RPM has a timestamp the > same as the build time of the RPM (just looking at the rpm contents with > "less), that the chmod was triggering the mtime update. Do you know why that > is? As this is only a "should" item, there is nothing holding back the > review, so it is now approved. Oh, I see. It looks like the project makefiles don't preserve timestamps when installing. I can fix that for some of them by specifying INSTALL="install -p", but that doesn't fix the perl case. I can do a 'touch -r' after installing if that bothers you.
(In reply to Jerry James from comment #7) > It looks like the project makefiles don't preserve timestamps > when installing. I can fix that for some of them by specifying > INSTALL="install -p", but that doesn't fix the perl case. I can do a 'touch > -r' after installing if that bothers you. If it is easy to fix then it would be nice, but as a "should" item I think it is only a nice-to-have, not a blocker. Thanks for investigating!
New Package SCM Request ======================= Package Name: subunit Short Description: C bindings for subunit Owners: jjames Branches: InitialCC:
Git done (by process-git-requests).
(In reply to David King from comment #8) > If it is easy to fix then it would be nice, but as a "should" item I think > it is only a nice-to-have, not a blocker. Thanks for investigating! I was able to fix this with a handful of touch commands at the end of %install, by the way.
Pádraig and Matthias, subunit has now been built for Rawhide. Can one of you retire the existing python-subunit package, in Rawhide only, please? I will send email about this, too, in case they aren't following this bug.
BTW this loop looks very inefficient: for filt in filters/*; do sed 's,/usr/bin/env ,/usr/bin/,' $filt > ${filt}.new chmod 0755 ${filt}.new touch -r $filt ${filt}.new mv -f ${filt}.new $filt done Could it be replaced with: sed -i 's,/usr/bin/env ,/usr/bin/,; q' filters/* or find filters/ -exec sed -i 's,/usr/bin/env ,/usr/bin/,; q' {} +
(In reply to Pádraig Brady from comment #13) > BTW this loop looks very inefficient: > > for filt in filters/*; do > sed 's,/usr/bin/env ,/usr/bin/,' $filt > ${filt}.new > chmod 0755 ${filt}.new > touch -r $filt ${filt}.new > mv -f ${filt}.new $filt > done > > Could it be replaced with: > > sed -i 's,/usr/bin/env ,/usr/bin/,; q' filters/* > > or > > find filters/ -exec sed -i 's,/usr/bin/env ,/usr/bin/,; q' {} + Neither of the latter 2 preserves timestamps or fixes the missing executable bits on subunit-output. In any case, there are only 13 files that are processed in this way. Even if it is inefficient, it is still only a minuscule fraction of the total build time: real 0m0.135s user 0m0.011s sys 0m0.030s Compared to the total number of minutes taken by a build, this just isn't worth optimizing, in my opinion, especially when doing so leads to loss of functionality (i.e., the timestamp and executable bit fixes).
Package Change Request ====================== Package Name: subunit New Branches: epel7 Owners: pbrady apevec
Comments from the primary maintainers?
Oops I should have added primary maintainers to Owners field anyway. Will do on next request. Jerry we need this for OpenStack testing on EL7.
Sure, that's fine by me. If you guys want to comaintain the Fedora branches, too, that would also be fine by me. :-)
Package Change Request ====================== Package Name: subunit New Branches: epel7 Owners: jjames pbrady apevec