Spec URL: https://jjames.fedorapeople.org/libpuma/libpuma.spec SRPM URL: https://jjames.fedorapeople.org/libpuma/libpuma-1.2-1.fc22.src.rpm Fedora Account System Username: jjames Description: PUMA is a library of C++ classes for parsing and manipulating C/C++ source code. It provides different levels of analyzing source code, i.e. lexical, syntactical, and semantical analyses. Additionally, PUMA contains its own C preprocessor following the macro language understood by the GNU C preprocessor (cpp). The parsers for C and C++ are based on an extensible recursive descent parser architecture that can be easily adapted for your own needs by inheriting from one of the parsers. They are oriented on the ISO/IEC standards defined in ISO/IEC 9899:1999(E) and ISO/IEC 14882:1998(E) but also supporting a list of extensions to the C and C++ languages. The information about the source code being analyzed is organized in an attributed syntax tree referring to a separate structure of semantic information. For the purpose of manipulating source code PUMA provides a syntax based mechanism for searching code structures. Manipulations on the source code can be collected and validated before executing them in a single transaction.
This review has now been assigned for over a month with no action. Will you be able to start the review in the next week? If not, please release it.
In accordance with the policy for stalled reviews, where the reviewer is not responding, I note that there was no action from the reviewer for one month prior to Comment 1, and that more than a week has passed since, still with no action and no communication from the reviewer. Therefore, I am invoking http://fedoraproject.org/wiki/Package_maintainer_policy#Reviewer_not_responding This review has been reset to the unassigned state.
> %package doc > Summary: Documentation for %{name} > Requires: %{name}%{?_isa} = %{version}-%{release} > BuildArch: noarch It is not just inconvenient to hardcode such a dependency in a Documentation package, so the package cannot be installed without pulling in lots of dependencies. Please keep doc packages free of such deps unless the base app is strictly required to display the doc files. A "noarch" subpackage _cannot_ depend on %{?_isa}, because it may be built on any arch and is put into all repos for different archs. > Name: libpuma > # The generated config depends on a specific version of gcc/g++ > Requires: gcc-c++ = %{gccver} Here %{?_isa} would make sense. The generated .config file (_not_ in libpuma package btw) seems arch-specific, subpackage "-aspectc++" (which is not multi-lib) requires arch-specific libpuma, so libpuma ought to require the arch-specific compiler, too. > # Fix the FSF's address > for f in $(grep -FRl 'Temple Place' .); do > ... > touch -r $f.orig $f > ... Nasty trap. ;) Seeing this I wondered about the license file, and indeed you modify the license file which must not be done: https://fedoraproject.org/wiki/Common_Rpmlint_issues#incorrect-fsf-address
(In reply to Michael Schwendt from comment #3) > It is not just inconvenient to hardcode such a dependency in a Documentation > package, so the package cannot be installed without pulling in lots of > dependencies. Please keep doc packages free of such deps unless the base app > is strictly required to display the doc files. Okay, I have removed this dependency. > Here %{?_isa} would make sense. The generated .config file (_not_ in libpuma > package btw) seems arch-specific, subpackage "-aspectc++" (which is not > multi-lib) requires arch-specific libpuma, so libpuma ought to require the > arch-specific compiler, too. No, see bug 831383. I have instead added arch-specific dependencies on libstdc++-devel and glibc-devel. (The dependency on libgcc isn't needed, because that comes via libstdc++-devel -> libstdc++ -> libgcc.) The generated puma.config file is a bit more problematic. You are correct that it should be in the main package rather than in the aspectc++ subpackage. But that breaks multilib, since the 32-bit and 64-bit versions of that file will differ. I don't think that file should be in %{_sysconfdir} anyway. It isn't intended to be edited by humans. I have moved it to %{_libdir}/libpuma instead, which will work with multilib. Does that sound reasonable? > Nasty trap. ;) > > Seeing this I wondered about the license file, and indeed you modify the > license file which must not be done: > > https://fedoraproject.org/wiki/Common_Rpmlint_issues#incorrect-fsf-address I've had reviewers of other packages insist that I fix the address, so this was a preemptive strike to avoid taking flak from the reviewer of this package. That didn't work out so well. :-) I'm going to remove the address changing code, and just complain to upstream about it. It looks like upstream is currently recovering from some kind of website breakage, and their bugzilla is offline. It may take a few days to alert them to the problem. Thanks for the feedback! New URLs: Spec URL: https://jjames.fedorapeople.org/libpuma/libpuma.spec SRPM URL: https://jjames.fedorapeople.org/libpuma/libpuma-1.2-2.fc22.src.rpm
> bug 831383 Fixed in 2012. gcc is not multilib anymore, i.e. no multilib package causes the multilib repo composer to pull it it anymore. # yum list gcc Loaded plugins: auto-update-debuginfo, langpacks Installed Packages gcc.x86_64 4.9.1-11.fc21 @updates-testing Of course, that also means %{?_isa} doesn't add any benefit, since there is only once gcc package to choose. ;-)
Initial comments. Looks like the Source0 url is broken http://aspectc.org/releases/1.2/ac-woven-1.2.tar.gz is working but the ftp address is not working a little unsure about %license aspectc++/Puma/COPYING in %files, the Fedora talk about license files should go in %doc, but I might have missed something.
(In reply to Tim Lauridsen from comment #6) > Initial comments. > > Looks like the Source0 url is broken > > http://aspectc.org/releases/1.2/ac-woven-1.2.tar.gz is working > > but the ftp address is not working Yes, aspectc.org suffered some kind of site failure just a few days ago. I haven't heard the details, but they've been putting stuff back together. If the ftp site doesn't come back soon, I will switch the URL to the HTTP version you gave. > a little unsure about > > %license aspectc++/Puma/COPYING > > in %files, the Fedora talk about license files should go in %doc, but I > might have missed something. See https://fedorahosted.org/fpc/ticket/411.
Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated [ ] = Manual review needed Issues: ======= - Header files in -devel subpackage, if present. Note: libpuma-doc : /usr/share/doc/libpuma- doc/examples/annotator/Transformer.h libpuma-doc : /usr/share/doc/libpuma- doc/examples/ccparser/IncludeVisitor.h libpuma-doc : /usr/share/doc/libpuma- doc/examples/sync/SyncBuilder.h libpuma-doc : /usr/share/doc/libpuma- doc/examples/sync/SyncKeywordRecognizer.h libpuma-doc : /usr/share/doc /libpuma-doc/examples/sync/SyncParser.h libpuma-doc : /usr/share/doc /libpuma-doc/examples/sync/SyncSemantic.h libpuma-doc : /usr/share/doc /libpuma-doc/examples/sync/SyncSyntax.h libpuma-doc : /usr/share/doc /libpuma-doc/examples/sync/SyncTokens.h libpuma-doc : /usr/share/doc /libpuma-doc/examples/sync/SyncTransformer.h libpuma-doc : /usr/share/doc /libpuma-doc/examples/sync/SyncTree.h See: http://fedoraproject.org/wiki/Packaging/Guidelines#DevelPackages - 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. Note: Cannot find COPYING in rpm(s) See: http://fedoraproject.org/wiki/Packaging/LicensingGuidelines#License_Text OK: https://fedorahosted.org/fpc/ticket/411 ===== MUST items ===== C/C++: [x]: Package does not contain kernel modules. [x]: Package contains no static executables. [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) (with incorrect FSF address)", "LGPL (v2 or later) (with incorrect FSF address)", "Unknown or generated", "GPL (v3 or later)". 790 files have unknown license. Detailed output of licensecheck in /home/tim/udv/reviews/1135654-libpuma/licensecheck.txt [x]: License file installed when any subpackage combination is installed. [x]: Package requires other packages for directories it uses. Note: No known owner of /usr/share/licenses [x]: Package must own all directories that it creates. Note: Directories without known owners: /usr/share/licenses [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. [x]: Useful -debuginfo package or justification otherwise. [x]: Package is not known to require an ExcludeArch tag. [x]: 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. [x]: Rpmlint is run on all rpms the build produces. Note: There are rpmlint messages (see attachment). [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]: 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: [!]: Sources can be downloaded from URI in Source: tag Note: Could not download Source0: ftp://akut.aspectc.org/releases/1.2/ac- woven-1.2.tar.gz See: http://fedoraproject.org/wiki/Packaging:Guidelines#Tags [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). [x]: Fully versioned dependency in subpackages if applicable. Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in libpuma-doc [?]: 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. [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. [?]: Package should compile and build into binary rpms on all supported architectures. [x]: %check is present and all tests pass. [x]: Packages should try to preserve timestamps of original installed files. [x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file [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]: 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: libpuma-1.2-2.fc21.x86_64.rpm libpuma-devel-1.2-2.fc21.x86_64.rpm libpuma-doc-1.2-2.fc21.noarch.rpm aspectc++-1.2-2.fc21.x86_64.rpm libpuma-1.2-2.fc21.src.rpm libpuma.x86_64: E: explicit-lib-dependency libstdc++-devel(x86-64) libpuma.x86_64: W: spelling-error %description -l en_US semantical -> semantically, semantics, semanticist libpuma.x86_64: W: spelling-error %description -l en_US preprocessor -> processor, predecessor, process's libpuma.x86_64: W: spelling-error %description -l en_US cpp -> cop, pp, cps libpuma.x86_64: W: spelling-error %description -l en_US parsers -> parser, parses, parers libpuma.x86_64: E: incorrect-fsf-address /usr/share/licenses/libpuma/COPYING libpuma.x86_64: E: incorrect-fsf-address /usr/share/doc/libpuma/README libpuma-devel.x86_64: W: only-non-binary-in-usr-lib libpuma-devel.x86_64: W: no-documentation libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncKeywordTab.ora libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncTransformer.cc libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncKeywordRecognizer.h libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncTokens.h libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncSemantic.cc libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncBuilder.cc libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncBuilder.h libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncSyntax.cc libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncSemantic.h libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncTree.h libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncSyntax.h libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncKeywordRecognizer.cc libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncTree.cc libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncParser.h libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/parser/parser.cc libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncTransformer.h aspectc++.x86_64: W: spelling-error %description -l en_US AspectC -> Aspect C, Aspect, Aspects aspectc++.x86_64: W: spelling-error %description -l en_US recognizees -> recognizes, recognize es, recognize-es libpuma.src: W: spelling-error %description -l en_US semantical -> semantically, semantics, semanticist libpuma.src: W: spelling-error %description -l en_US preprocessor -> processor, predecessor, process's libpuma.src: W: spelling-error %description -l en_US cpp -> cop, pp, cps libpuma.src: W: spelling-error %description -l en_US parsers -> parser, parses, parers libpuma.src: W: invalid-url Source0: ftp://akut.aspectc.org/releases/1.2/ac-woven-1.2.tar.gz <urlopen error ftp error: timed out> 5 packages and 0 specfiles checked; 19 errors, 13 warnings. Rpmlint (installed packages) ---------------------------- # rpmlint libpuma libpuma-devel libpuma-doc aspectc++ libpuma.x86_64: E: explicit-lib-dependency libstdc++-devel(x86-64) libpuma.x86_64: W: spelling-error %description -l en_US semantical -> semantically, semantics, semanticist libpuma.x86_64: W: spelling-error %description -l en_US preprocessor -> processor, predecessor, process's libpuma.x86_64: W: spelling-error %description -l en_US cpp -> cop, pp, cps libpuma.x86_64: W: spelling-error %description -l en_US parsers -> parser, parses, parers libpuma.x86_64: E: incorrect-fsf-address /usr/share/licenses/libpuma/COPYING libpuma.x86_64: E: incorrect-fsf-address /usr/share/doc/libpuma/README libpuma-devel.x86_64: W: only-non-binary-in-usr-lib libpuma-devel.x86_64: W: no-documentation libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncKeywordTab.ora libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncTransformer.cc libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncKeywordRecognizer.h libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncTokens.h libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncSemantic.cc libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncBuilder.cc libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncBuilder.h libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncSyntax.cc libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncSemantic.h libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncTree.h libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncSyntax.h libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncKeywordRecognizer.cc libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncTree.cc libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncParser.h libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/parser/parser.cc libpuma-doc.noarch: E: incorrect-fsf-address /usr/share/doc/libpuma-doc/examples/sync/SyncTransformer.h aspectc++.x86_64: W: spelling-error %description -l en_US AspectC -> Aspect C, Aspect, Aspects aspectc++.x86_64: W: spelling-error %description -l en_US recognizees -> recognizes, recognize es, recognize-es 4 packages and 0 specfiles checked; 19 errors, 8 warnings. # echo 'rpmlint-done:' Requires -------- libpuma (rpmlib, GLIBC filtered): /sbin/ldconfig gcc-c++ glibc-devel(x86-64) libc.so.6()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libgcc_s.so.1(GCC_4.2.0)(64bit) libm.so.6()(64bit) libstdc++-devel(x86-64) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) rtld(GNU_HASH) libpuma-devel (rpmlib, GLIBC filtered): libPuma.so.0()(64bit) libpuma(x86-64) libpuma-doc (rpmlib, GLIBC filtered): aspectc++ (rpmlib, GLIBC filtered): libPuma.so.0()(64bit) libc.so.6()(64bit) libdl.so.2()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libm.so.6()(64bit) libpuma(x86-64) libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) libxml2.so.2()(64bit) libxml2.so.2(LIBXML2_2.4.30)(64bit) libxml2.so.2(LIBXML2_2.6.0)(64bit) libxml2.so.2(LIBXML2_2.6.8)(64bit) libz.so.1()(64bit) rtld(GNU_HASH) Provides -------- libpuma: libPuma.so.0()(64bit) libpuma libpuma(x86-64) libpuma-devel: libpuma-devel libpuma-devel(x86-64) libpuma-doc: libpuma-doc aspectc++: aspectc++ aspectc++(x86-64)
Only issues is there source cant be checked on the spec Source URL got source from http://aspectc.org/releases/1.2/ac-woven-1.2.tar.gz 174aa5f552edaff8b1335fe6b1adfff0eb9d170076401ab6bcf7f85a5edee8b4 ac-woven-1.2.tar.gz 174aa5f552edaff8b1335fe6b1adfff0eb9d170076401ab6bcf7f85a5edee8b4 1135654-libpuma/srpm-unpacked/ac-woven-1.2.tar.gz [x] Source match upstream APPROVED
Thank you very much for the review, Tim. If the FTP site isn't back up by the time I import this package, I will change the source URL to the HTTP version.
New Package SCM Request ======================= Package Name: libpuma Short Description: Library for parsing and manipulating C/C++ source code Upstream URL: http://aspectc.org/ Owners: jjames Branches: f21 InitialCC:
Git done (by process-git-requests).
libpuma-1.2-2.fc21 has been submitted as an update for Fedora 21. https://admin.fedoraproject.org/updates/libpuma-1.2-2.fc21
libpuma-1.2-2.fc21 has been pushed to the Fedora 21 testing repository.
libpuma-1.2-3.fc21 has been pushed to the Fedora 21 testing repository.
libpuma-1.2-3.fc21 has been pushed to the Fedora 21 stable repository.