Bug 1418804

Summary: Review Request: gcovr - A code coverage report generator using GNU gcov
Product: [Fedora] Fedora Reporter: Neal Gompa <ngompa13>
Component: Package ReviewAssignee: Garrett Holmstrom <gholms>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: gholms, package-review
Target Milestone: ---Flags: gholms: fedora-review+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-03-15 18:21:33 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Neal Gompa 2017-02-02 18:40:08 UTC
Spec URL: http://kinginuyasha.enanocms.org/downloads/gcovr.spec
SRPM URL: http://kinginuyasha.enanocms.org/downloads/gcovr-3.3-1.fc25.src.rpm

Description:
Gcovr provides a utility for managing the use of the GNU gcov utility
and generating summarized code coverage results.

This command is inspired by the Python coverage.py package, which provides
a similar utility in Python. The gcovr command produces either compact
human-readable summary reports, machine readable XML reports (in Cobertura format)
or simple HTML reports. Thus, gcovr can be viewed as a command-line
alternative to the lcov utility, which runs gcov and generates an HTML-formatted report.


Fedora Account System Username: ngompa

Comment 1 Garrett Holmstrom 2017-02-02 19:29:00 UTC
Mandatory review guidelines:
NO - rpmlint output:
     gcovr.src: E: description-line-too-long C human-readable summary reports, machine readable XML reports (in Cobertura format)
     gcovr.src: E: description-line-too-long C alternative to the lcov utility, which runs gcov and generates an HTML-formatted report.
     gcovr.src:45: W: macro-in-comment %{name}
ok - Spec file name matches base package name
ok - License is acceptable (BSD)
ok - License field in spec is correct
ok - License files included in package if included in source package
ok - License files installed when any subpackage combination is installed
ok - Spec written in American English
ok - Spec is legible
ok - Sources match upstream unless altered to fix permissibility issues
     Upstream SHA256:
       8a60ba6242d67a58320e9e16630d80448ef6d5284fda5fb3eff927b63c8b04a2
     Your SHA256:
       8a60ba6242d67a58320e9e16630d80448ef6d5284fda5fb3eff927b63c8b04a2
ok - Build succeeds on at least one primary arch
ok - BuildRequires correct, justified where necessary
-- - Locales handled with %find_lang, not %_datadir/locale/*
-- - %post, %postun call ldconfig if package contains shared .so files
-- - Bundled libs handled correctly
-- - Relocatability is justified
ok - Package owns all directories it creates
-- - Package requires others for directories it uses but does not own
ok - No duplication in %files unless necessary for license files
ok - File permissions are sane
ok - Package contains permissible code or content
-- - Large docs go in -doc subpackage
ok - %doc files not required at runtime
-- - Static libs go in -static package or virtual Provides
-- - Development files go in -devel package
-- - -devel packages Require base with fully-versioned dependency, %_isa
ok - No .la files
-- - GUI app uses .desktop file, installs it with desktop-file-install
ok - File list does not conflict with other packages' without justification
ok - File names are valid UTF-8

Optional review guidelines:
-- - Query upstream about including missing license files
no - Translations of description, summary
ok - Builds in mock
-- - Scriptlets are sane
-- - Subpackages require base with fully-versioned dependency if sensible
-- - .pc file subpackage placement is sensible
ok - No file deps outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin
-- - Include man pages if available

Naming guidelines:
ok - Package names use only a-zA-Z0-9-._+ subject to restrictions on -._+
ok - Package names are sane
ok - No naming conflicts
ok - Version is sane
ok - Version does not contain ~
ok - Release is sane
ok - %dist tag
ok - Case used only when necessary
ok - Package names follow applicable language/addon rules

Packaging guidelines:
ok - Useful without external bits
ok - No kmods
ok - Pre-built binaries, libs removed in %prep
ok - Sources contain only redistributable code or content
     Upstream bundles bits of virtualenv, but those are not used or installed.
-- - Pre-generated code contains original sources
ok - Spec format is sane
-- - noarch package with unported deps has correct ExclusiveArch
-- - Arch-specific sources/patches are applied, not included, conditionally
ok - Package obeys FHS, except libexecdir, /run, /usr/target
-- - %{_prefix}/lib only used for multilib-exempt packages
-- - Programs run before FS mounting use /run instead of /var/run
ok - No files under /srv, /usr/local, /home
-- - Files under /opt constrained to an approved /opt/fedora subdir
ok - File dependencies not broken by /usr move
ok - No BuildRoot, Group, %clean, Packager, Vendor, Copyright, Prereq
ok - Summary does not end in a period
ok - Requires correct, justified where necessary
-- - Recommends, Suggests, Supplements, Enhances are sane
ok - No boolean dependencies
-- - Automatic Requires, Provides filtered if necessary
ok - BuildRequires lack %{_isa}
-- - BuildRequires: pkgconfig(foo) where necessary
ok - Summary, description do not use trademarks incorrectly
ok - All relevant documentation is packaged, appropriately marked with %doc
     doc/guide.txt is included; the remainder require lots of build deps
ok - Relative path %doc files and %_pkgdocdir not mixed
-- - Doc files do not drag in extra dependencies (e.g. due to +x)
ok - Changelog in a prescribed format
-- - Code compilable with gcc is compiled with gcc
-- - Build honors applicable compiler flags or justifies otherwise
-- - PIE used for long-running/root daemons, setuid/filecap programs
-- - Useful -debuginfo package or disabled and justified
-- - Shared libs are versioned
ok - No static executables (except OCaml)
-- - System libraries used when supported by upstream
-- - Bundled libraries have Provides, link to upstream refusal to unbundle
ok - No bundled fonts
ok - Rpath absent or only used for internal libs
-- - Config files marked with %config(noreplace) or justified %config
ok - No config files under /usr
-- - Third party package manager configs acceptable, only in %_docdir
-- - Per-product configs handled correctly
ok - No init scripts
-- - .desktop files are sane
-- - desktop-file-install/validate run on .desktop files, as appropriate
-- - No desktop-file-install --vendor on >= F19
-- - AppData files included if possible
ok - Spec uses macros consistently
ok - Spec uses macros instead of hard-coded names where appropriate
ok - Spec uses macros for executables only when configurability is needed
-- - %makeinstall used only when alternatives don't work
-- - Macros in Summary, description are expandable at srpm build time
-- - Spec uses %{SOURCE#} instead of $RPM_SOURCE_DIR and %sourcedir
-- - SCL macros limited to SCL-specific packages
-- - Macro files go under %_rpmconfigdir/macros.d or %_sysconfdir/rpm
-- - Macro files named macros.%name
-- - Macro files not marked with %config
ok - Build uses only python/perl/shell+coreutils/lua/BuildRequired langs
-- - %global, not %define
-- - Package translating with gettext BuildRequires it
-- - Package translating with Linguist BuildRequires qt-devel
-- - Log file locations are sane
-- - Log files are rotated
ok - File ops preserve timestamps
-- - Parallel make
-- - Scriptlets write only to allowed locations
-- - %pretrans written in lua
-- - User, group creation handled correctly (See Packaging:UsersAndGroups)
-- - Web apps go in /usr/share/%name, not /var/www
-- - Conflicts are justified
-- - Patches have appropriate commentary
-- - Patches not applied directly from RPM_SOURCE_DIR
-- - Available test suites executed in %check
-- - sysctl.d files applied in %post with %sysctl_apply
-- - binfmt.d files applied in %post with %binfmt_apply
-- - tmpfiles.d used for /run, /run/lock
-- - Package renaming/replacement handled correctly
-- - IPv6 enabled if supported and IPv4 remains functional
-- - Changelogs for CVE fixes mention CVE numbers
ok - Package builds without network access
-- - Dependency bootstrapping handled correctly
-- - TLS-using code follows crypto policies (See Packaging:CryptoPolicies)

Python guidelines:
ok - Runtime Requires correct
ok - BuildRequires: python2-devel and/or python3-devel
-- - Python 2 modules Provide: python2-*
-- - Python 3 modules Provide: python3-*
-- - Main python version modules Provide: python-*
ok - Spec uses versioned path macros
-- - All .py files packaged with .pyc, .pyo counterparts
ok - INSTALLED_FILES not used for %files list
-- - Includes .egg-info files/directories when generated
-- - Bytecode only optimized with appropriate optimization levels
-- - .py not under site-libs byte-compiled against correct runtimes
-- - Non-split packages named python2-* and python3-*
NO - Unversioned executables use OS-preferred runtime when possible
     Upstream supports python 3.5
-- - Versioned executables provided with both -X and -X.Y suffixes
-- - Eggs built from source
-- - Eggs do not download deps during build
-- - Compat packages use easy_install -m to avoid conflicts
-- - At least one version of each module is importable w/o version
-- - Provides/Requires properly filtered

The only major issue here is that the package should use python3, not python2, because upstream supports both.  Since this package is not in the critical path there is some leeway, so if you're planning to maintain this package for EPEL using an identical source package I am willing to let that one slide.  That said, as written, it will currently not build for EPEL.

Other recommendations:
- Re-wrap the description to shorten its lines.
- Remove #{python2_sitelib}/%{name}*/ from %files

Comment 2 Neal Gompa 2017-02-02 19:40:09 UTC
I've switched to Python 3, rewrapped the description, and removed the extraneous line from %files.

Spec URL: http://kinginuyasha.enanocms.org/downloads/gcovr.spec
SRPM URL: http://kinginuyasha.enanocms.org/downloads/gcovr-3.3-2.fc25.src.rpm

Comment 3 Garrett Holmstrom 2017-02-02 21:58:03 UTC
That looks great!

Comment 4 Gwyn Ciesla 2017-02-02 23:14:36 UTC
Package request has been approved: https://admin.fedoraproject.org/pkgdb/package/rpms/gcovr

Comment 5 Fedora Update System 2017-02-03 16:31:50 UTC
gcovr-3.3-2.fc25 has been submitted as an update to Fedora 25. https://bodhi.fedoraproject.org/updates/FEDORA-2017-536ccade30

Comment 6 Fedora Update System 2017-02-03 23:51:05 UTC
gcovr-3.3-2.fc25 has been pushed to the Fedora 25 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2017-536ccade30

Comment 7 Fedora Update System 2017-03-06 18:43:10 UTC
gcovr-3.3-4.fc25 has been submitted as an update to Fedora 25. https://bodhi.fedoraproject.org/updates/FEDORA-2017-536ccade30

Comment 8 Fedora Update System 2017-03-07 01:49:27 UTC
gcovr-3.3-4.fc25 has been pushed to the Fedora 25 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2017-536ccade30

Comment 9 Fedora Update System 2017-03-15 18:21:33 UTC
gcovr-3.3-4.fc25 has been pushed to the Fedora 25 stable repository. If problems still persist, please make note of it in this bug report.