Bug 1090933 - Review Request : fusioninventory-agent
Review Request : fusioninventory-agent
Status: CLOSED CURRENTRELEASE
Product: Fedora
Classification: Fedora
Component: Package Review (Show other bugs)
rawhide
Unspecified Unspecified
unspecified Severity unspecified
: ---
: ---
Assigned To: Haïkel Guémar
Fedora Extras Quality Assurance
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2014-04-24 08:16 EDT by marianne@tuxette.fr
Modified: 2015-09-24 11:28 EDT (History)
4 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2015-09-24 11:28:59 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
karlthered: fedora‑review+
limburgher: fedora‑cvs+


Attachments (Terms of Use)

  None (edit)
Description marianne@tuxette.fr 2014-04-24 08:16:56 EDT
SPEC URL : http://giverny.tuxette.fr/copr/fusioninventory-agent.spec
SRPM URL : http://giverny.tuxette.fr/copr/fusioninventory-agent-2.3.6-0.fc20.src.rpm

FusionInventory Agent is an application designed to help a network
or system administrator to keep track of the hardware and software
configurations of computers that are installed on the network.

The package is actually orphaned for Fedora and hold by Remi Collet (remi) in EPEL but if he agree, I will maintain the both. 
Spec here is only for systemd so it won't work on EPEL 6 without modification. 
I have only tested on fedora 20 but it should work on fedora 19 without major modification. 

FAS username : jehane

Copr repository : http://copr.fedoraproject.org/coprs/jehane/fusioninventory-agent/

I have voluntary exclude the wake-on-lan support (task-wol) because it requires perl-Net-Write wich has an unacceptable licence ( see https://fedoraproject.org/wiki/Deprecated_packages )

Since this is my first review request, as docs state that i'm asking for a sponsor.
Comment 1 marianne@tuxette.fr 2014-05-15 13:37:52 EDT
Updated spec for 2.3.7.1 version 

http://giverny.tuxette.fr/copr/fusioninventory/2.3.7/fusioninventory-agent.spec
Comment 3 Michael Schwendt 2014-05-16 16:43:06 EDT
Compared with the last official build in koji,

  http://koji.fedoraproject.org/koji/packageinfo?packageID=12285

you've introduced several packaging mistakes related to "unowned directories" and duplicated files:

  https://fedoraproject.org/wiki/Packaging:Guidelines#File_and_Directory_Ownership
  https://fedoraproject.org/wiki/Packaging:UnownedDirectories

The subpackage inter-dependencies are not trivial, so let's see:

  %files -n perl-FusionInventory-Agent
  %doc Changes LICENSE THANKS
  %{_datadir}/fusioninventory

The last line in this %files list includes the directory /usr/share/fusioninventory *and* everything in it. That means it includes also the files and subdirs specified in the subpackages -task-esx, -task-network, -task-deploy and -task-inventory. Example:

  %files task-esx
  %{_bindir}/fusioninventory-esx
  %{_mandir}/man1/fusioninventory-esx.1*
  %{_datadir}/fusioninventory/lib/FusionInventory/Agent/Task/ESX.pm
  %{_datadir}/fusioninventory/lib/FusionInventory/Agent/SOAP

One way to avoid that is to either %exclude all those files (included in the subpackages already) in the perl-FusionInventory-Agent package. Or be more specific about what to include in the perl-FusionInventory-Agent package based on including only the %dir

  %files -n perl-FusionInventory-Agent
  %doc Changes LICENSE THANKS
  %dir %{_datadir}/fusioninventory
  ...add specific files and needed %dir entries here...

Note that there are a various subdirs in paths such as %{_datadir}/fusioninventory/lib/FusionInventory/Agent/Task/, which must not be "unowned".


A related hint: To increase readability of directory entries in %files lists, many packagers append a trailing slash to emphasize that the entry is for a directory tree and not a single file:

  %{_datadir}/somedirectory/


[...]

Your %changelog refers to 2.3.6-1 but the spec file is 2.3.6-0:

  Version:     2.3.6
  Release:     0%{?dist}

Consider pointing the fedora-review tool at this ticket (run "fedora-review -b 1090933") to let it perform many tests not limited to running rpmlint on all packages.


> find %{buildroot} -type d -depth -exec rmdir {} 2>/dev/null ';'

Not needed anymore for many years.


> %files
> /%{_bindir}/fusioninventory-injector

Why the leading slash?

  $ rpm -E %_bindir
  /usr/bin
Comment 4 marianne@tuxette.fr 2014-05-23 12:42:06 EDT
I have updated the spec according to previous (not sure to have correct everything but I will continue working on it)
I also add requires I had missed. One of them is not available actually in fedora, so I have created a spec file and open a new review request ( https://bugzilla.redhat.com/show_bug.cgi?id=1100870 )

Spec is http://giverny.tuxette.fr/copr/fusioninventory/fusioninventory-agent.spec
src.rpm is http://giverny.tuxette.fr/copr/fusioninventory/fusioninventory-agent-2.3.8-1.fc20.src.rpm
Comment 6 Haïkel Guémar 2015-01-18 10:18:33 EST
Marianne has been sponsored since, dropping the FE-NEEDSPONSOR.
Comment 7 Haïkel Guémar 2015-01-18 11:51:12 EST
Two things before approving this package:
1. Fix the following unowned directories
/usr/share/fusioninventory
/usr/share/fusioninventory/lib 
/usr/share/fusioninventory/lib/FusionInventory
/usr/share/fusioninventory/lib/FusionInventory/Agent   
/usr/share/fusioninventory/lib/FusionInventory/Agent/Task
                                    
http://fedoraproject.org/wiki/Packaging:UnownedDirectories

2. Add a comment explaining why the wakeonlan plugin is not shipping due to a dependency with problematic licensing (Artistic Perl v1)
That is not mandatory, but this will avoid that a comaintainer or provenpackager adds it back by mistake.
Comment 9 Haïkel Guémar 2015-02-08 09:01:50 EST
Few things:
* clean up tabs in the cron script (the expand command should be enough) before importing the src.rpm
* consider enabling unit tests during build time
I am confident that you will do that in a timely fashion, not blocking the review for that.

I hereby approve this package into Fedora Packages Collection since it complies with our guidelines. Please submit a SCM request.



Package Review
==============

Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated
[ ] = Manual review needed

===== 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]: 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". 259 files have unknown
     license. Detailed output of licensecheck in /home/haikel/1090933
     -fusioninventory-agent/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[x]: Package must own all directories that it creates.
     Note: Directories without known owners: /etc/cron.hourly
[x]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
     Note: rm -rf %{buildroot} present but not required
[x]: Sources contain only permissible code or content.
[-]: Package contains desktop file if it is a GUI application.
[-]: 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.
[x]: 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.
[-]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 133120 bytes in 3 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]: %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 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:
[x]: Package contains the mandatory BuildRequires and Requires:.


===== 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 perl-
     FusionInventory-Agent , fusioninventory-agent-task-esx , fusioninventory-
     agent-yum-plugin , fusioninventory-agent-task-network , fusioninventory-
     agent-task-deploy , fusioninventory-agent-task-inventory
[x]: Package functions as described.
[x]: Latest version is packaged.
[-]: Package does not include license text files separate from upstream.
[-]: 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]: 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]: 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: fusioninventory-agent-2.3.14-2.fc22.x86_64.rpm
          perl-FusionInventory-Agent-2.3.14-2.fc22.noarch.rpm
          fusioninventory-agent-task-esx-2.3.14-2.fc22.noarch.rpm
          fusioninventory-agent-yum-plugin-2.3.14-2.fc22.noarch.rpm
          fusioninventory-agent-task-network-2.3.14-2.fc22.noarch.rpm
          fusioninventory-agent-task-deploy-2.3.14-2.fc22.noarch.rpm
          fusioninventory-agent-task-inventory-2.3.14-2.fc22.noarch.rpm
          fusioninventory-agent-2.3.14-2.fc22.src.rpm
fusioninventory-agent.x86_64: W: spelling-error %description -l en_US perl -> Perl, peel, perk
fusioninventory-agent.x86_64: W: spelling-error %description -l en_US vCenter -> v Center, center, cementer
fusioninventory-agent.x86_64: E: no-binary
fusioninventory-agent-task-esx.noarch: W: spelling-error Summary(en_US) vCenter -> v Center, center, cementer
fusioninventory-agent-task-esx.noarch: W: spelling-error %description -l en_US vCenter -> v Center, center, cementer
fusioninventory-agent-yum-plugin.noarch: W: spelling-error %description -l en_US rpc -> rec, rps, rpm
fusioninventory-agent-yum-plugin.noarch: W: spelling-error %description -l en_US localhost -> local host, local-host, holocaust
fusioninventory-agent-yum-plugin.noarch: W: only-non-binary-in-usr-lib
fusioninventory-agent-yum-plugin.noarch: W: no-documentation
fusioninventory-agent-task-network.noarch: W: spelling-error %description -l en_US netdiscovery -> net discovery, net-discovery, discovery
fusioninventory-agent-task-network.noarch: W: spelling-error %description -l en_US netinventory -> net inventory, net-inventory, inventory
fusioninventory-agent-task-deploy.noarch: W: no-documentation
fusioninventory-agent.src: W: spelling-error %description -l en_US perl -> Perl, peel, perk
fusioninventory-agent.src: W: spelling-error %description -l en_US vCenter -> v Center, center, cementer
fusioninventory-agent.src: W: spelling-error %description -l en_US sysconfig -> configure
fusioninventory-agent.src:12: W: macro-in-comment %{name}
fusioninventory-agent.src:115: W: macro-in-comment %package
fusioninventory-agent.src:119: W: macro-in-comment %{version}
fusioninventory-agent.src:119: W: macro-in-comment %{release}
fusioninventory-agent.src:121: W: macro-in-comment %description
fusioninventory-agent.src:161: W: macro-in-comment %{name}
fusioninventory-agent.src:200: E: hardcoded-library-path in %{_prefix}/lib/yum-plugins/%{name}.py
fusioninventory-agent.src:236: W: macro-in-comment %exclude
fusioninventory-agent.src:236: W: macro-in-comment %{_datadir}
fusioninventory-agent.src:246: E: hardcoded-library-path in %{_prefix}/lib/yum-plugins/%{name}.*
fusioninventory-agent.src:267: W: macro-in-comment %files
8 packages and 0 specfiles checked; 3 errors, 23 warnings.




Rpmlint (installed packages)
----------------------------
Cannot parse rpmlint output:


Requires
--------
fusioninventory-agent-task-network (rpmlib, GLIBC filtered):
    /usr/bin/perl
    fusioninventory-agent
    perl(Encode)
    perl(English)
    perl(Getopt::Long)
    perl(Net::IP)
    perl(Pod::Usage)
    perl(Thread::Queue)
    perl(Time::localtime)
    perl(UNIVERSAL::require)
    perl(XML::TreePP)
    perl(base)
    perl(constant)
    perl(lib)
    perl(strict)
    perl(threads)
    perl(warnings)

fusioninventory-agent-yum-plugin (rpmlib, GLIBC filtered):
    config(fusioninventory-agent-yum-plugin)
    fusioninventory-agent
    yum

fusioninventory-agent (rpmlib, GLIBC filtered):
    /bin/bash
    /bin/sh
    /usr/bin/perl
    config(fusioninventory-agent)
    cronie
    dmidecode
    logrotate
    perl(:MODULE_COMPAT_5.20.1)
    perl(Compress::Zlib)
    perl(English)
    perl(Fcntl)
    perl(Getopt::Long)
    perl(LWP::UserAgent)
    perl(Pod::Usage)
    perl(lib)
    perl(strict)
    perl(warnings)
    perl-FusionInventory-Agent
    systemd

fusioninventory-agent-task-deploy (rpmlib, GLIBC filtered):
    fusioninventory-agent
    perl(Archive::Extract)
    perl(Compress::Zlib)
    perl(Cwd)
    perl(Digest::SHA)
    perl(Encode)
    perl(English)
    perl(Exporter)
    perl(Fcntl)
    perl(File::Basename)
    perl(File::Copy::Recursive)
    perl(File::Glob)
    perl(File::Path)
    perl(File::Spec)
    perl(HTTP::Request)
    perl(HTTP::Request::Common)
    perl(JSON)
    perl(LWP)
    perl(Net::IP)
    perl(POE)
    perl(UNIVERSAL::require)
    perl(URI::Escape)
    perl(base)
    perl(strict)
    perl(warnings)

fusioninventory-agent-task-inventory (rpmlib, GLIBC filtered):
    /usr/bin/perl
    fusioninventory-agent
    perl(Config)
    perl(English)
    perl(File::Basename)
    perl(File::Find)
    perl(File::Temp)
    perl(Getopt::Long)
    perl(List::Util)
    perl(MIME::Base64)
    perl(Net::CUPS)
    perl(Net::Domain)
    perl(POSIX)
    perl(Parse::EDID)
    perl(Pod::Usage)
    perl(Sys::Hostname)
    perl(UNIVERSAL::require)
    perl(User::pwent)
    perl(XML::TreePP)
    perl(base)
    perl(constant)
    perl(integer)
    perl(lib)
    perl(strict)
    perl(warnings)

perl-FusionInventory-Agent (rpmlib, GLIBC filtered):
    perl(:MODULE_COMPAT_5.20.1)
    perl(Compress::Zlib)
    perl(Config)
    perl(Cwd)
    perl(Data::Dumper)
    perl(Digest::MD5)
    perl(Digest::SHA)
    perl(Encode)
    perl(English)
    perl(Exporter)
    perl(Fcntl)
    perl(File::Basename)
    perl(File::Copy::Recursive)
    perl(File::Find)
    perl(File::Glob)
    perl(File::Path)
    perl(File::Spec)
    perl(File::Temp)
    perl(File::Which)
    perl(File::stat)
    perl(Getopt::Long)
    perl(HTTP::Cookies)
    perl(HTTP::Daemon)
    perl(HTTP::Request)
    perl(HTTP::Request::Common)
    perl(HTTP::Status)
    perl(IO::Handle)
    perl(IO::Socket::SSL)
    perl(JSON)
    perl(LWP)
    perl(LWP::Protocol::http::SocketMethods)
    perl(LWP::Protocol::https)
    perl(LWP::UserAgent)
    perl(List::Util)
    perl(MIME::Base64)
    perl(Memoize)
    perl(Net::CUPS)
    perl(Net::Domain)
    perl(Net::HTTPS)
    perl(Net::IP)
    perl(Net::SNMP)
    perl(Net::SSLeay)
    perl(Net::hostent)
    perl(POE)
    perl(POSIX)
    perl(Proc::Daemon)
    perl(Proc::PID::File)
    perl(Scalar::Util)
    perl(Socket)
    perl(Socket::GetAddrInfo)
    perl(Storable)
    perl(Sys::Hostname)
    perl(Sys::Syslog)
    perl(Text::Template)
    perl(Thread::Queue)
    perl(Time::Local)
    perl(Time::localtime)
    perl(UNIVERSAL::require)
    perl(URI)
    perl(URI::Escape)
    perl(User::pwent)
    perl(XML::TreePP)
    perl(base)
    perl(constant)
    perl(integer)
    perl(strict)
    perl(threads)
    perl(threads::shared)
    perl(utf8)
    perl(warnings)

fusioninventory-agent-task-esx (rpmlib, GLIBC filtered):
    /usr/bin/perl
    fusioninventory-agent
    perl(English)
    perl(Getopt::Long)
    perl(HTTP::Cookies)
    perl(LWP::UserAgent)
    perl(Pod::Usage)
    perl(XML::TreePP)
    perl(base)
    perl(lib)
    perl(strict)
    perl(warnings)



Provides
--------
fusioninventory-agent-task-network:
    fusioninventory-agent-task-network

fusioninventory-agent-yum-plugin:
    config(fusioninventory-agent-yum-plugin)
    fusioninventory-agent-yum-plugin

fusioninventory-agent:
    config(fusioninventory-agent)
    fusioninventory-agent
    fusioninventory-agent(x86-64)

fusioninventory-agent-task-deploy:
    fusioninventory-agent-task-deploy

fusioninventory-agent-task-inventory:
    fusioninventory-agent-task-inventory

perl-FusionInventory-Agent:
    perl-FusionInventory-Agent

fusioninventory-agent-task-esx:
    fusioninventory-agent-task-esx



Source checksums
----------------
http://search.cpan.org/CPAN/authors/id/G/GR/GROUSSE/FusionInventory-Agent-2.3.14.tar.gz :
  CHECKSUM(SHA256) this package     : cb189faa15297b7b0701e1f11866a95b46288e2df0bbf6dd6b5177276fabb932
  CHECKSUM(SHA256) upstream package : cb189faa15297b7b0701e1f11866a95b46288e2df0bbf6dd6b5177276fabb932
Comment 10 marianne@tuxette.fr 2015-02-09 05:40:28 EST
New Package SCM Request
=======================
Package Name: fusioninventory-agent
Short Description: FusionInventory agent 
Upstream URL: http://fusioninventory.org/
Owners: jehane
Branches: devel f20 f21 epel7
InitialCC: perl-sig

Package was orphaned and retired, still present in el6
Comment 11 Jon Ciesla 2015-02-09 07:59:17 EST
Git done (by process-git-requests).
Comment 12 Pierre-YvesChibon 2015-02-10 09:09:28 EST
This is weird, Jehane did not get commit on any of the Fedora branches.

She got listed as PoC for master and el6 (that she had before).
She got 'Awaiting Review' approveacls on master (she had el6 before).
She got all the watch* ACLs on all branches but no commit ACL on any branch.

The action from the script can be found there:
https://admin.fedoraproject.org/pkgdb/package/fusioninventory-agent/timeline#n21

I will fix things directly in pkgdb, but there is something odd going on here.
Comment 13 Till Maas 2015-02-10 16:48:55 EST
(In reply to Pierre-YvesChibon from comment #12)
> This is weird, Jehane did not get commit on any of the Fedora branches.

> I will fix things directly in pkgdb, but there is something odd going on
> here.

It might be that a Package Change Request (or similar) is needed instead of a New Package SCM Request. Or it needs to be spotted manually by the process-git-process operator. Nevertheless, it will all get better with the new process. :-).

Note You need to log in before you can comment on or make changes to this bug.