Bug 809882 - Review Request: ansible - Minimal SSH command and control
Summary: Review Request: ansible - Minimal SSH command and control
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Michael S.
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2012-04-04 14:49 UTC by John Eckersberg
Modified: 2012-05-10 14:44 UTC (History)
4 users (show)

Fixed In Version: ansible-0.3.1-1.fc16
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-05-06 23:31:22 UTC
Type: ---
Embargoed:
misc: fedora-review+
gwync: fedora-cvs+


Attachments (Terms of Use)

Description John Eckersberg 2012-04-04 14:49:00 UTC
Spec URL: http://jeckersb.fedorapeople.org/ansible/ansible.spec
SRPM URL: http://jeckersb.fedorapeople.org/ansible/ansible-0.0.2-1.fc16.src.rpm
Description: 

Ansible is a extra-simple tool/API for doing 'parallel remote things' over SSH
executing commands, running "modules", or executing larger 'playbooks' that
can serve as a configuration management or deployment system.

Comment 1 Michael S. 2012-04-04 16:48:19 UTC
Hi,

a few note :
- you should explicitely say the version of python to use in BuildRequires 
https://fedoraproject.org/wiki/Packaging:Python#BuildRequires

- the python macro are already defined on Fedora, so no need to add them again

- Prefix is forbidden

- buildRoot should not be used, except for EPEL 5
https://fedoraproject.org/wiki/Packaging:Guidelines#BuildRoot_tag

- so does %defattr, %clean and rm in %install 

- --record=INSTALLED_FILES is not used, and is not recommended
https://fedoraproject.org/wiki/Packaging:Python#Byte_compiling

- it seems that %{_datadir}/ansible/ would end unowned

- I am not sure, but I think that "-n %{name}-%{version}" is uneeded, becuase tha's the default

- the guideline ask for consistency when using macro to reference path :
%config(noreplace) /etc/ansible/hosts
%config(noreplace) %{_sysconfdir}/ansible/

- %{_mandir}/man1/*.gz
that's not mandatory, but I think that's better to not hardcode the prefix used here, as this could be changed in the future ( ie, be something else than gz )

Comment 2 John Eckersberg 2012-04-16 15:41:17 UTC
Adding Tim Bielawa to Cc, as he will be handling the packaging going forward.

Comment 3 Tim Bielawa 2012-04-17 17:30:10 UTC
Spec URL: http://people.redhat.com/~tbielawa/ansible/ansible.spec
SRPM URL: http://people.redhat.com/~tbielawa/ansible/ansible-0.0.2-1.fc16.src.rpm
Description: 

Ansible is a radically simple model-driven configuration management,
multi-node deployment, and remote task execution system. Ansible works
over SSH and does not require any software or daemons to be installed
on remote nodes. Extension modules can be written in any language and
are transferred to managed machines automatically.


(In reply to comment #1)
> Hi,
> 
> a few note :
> - you should explicitely say the version of python to use in BuildRequires 
> https://fedoraproject.org/wiki/Packaging:Python#BuildRequires

Fixed.

> - the python macro are already defined on Fedora, so no need to add them again

Fixed. Only set if RHEL 5. (We're targeting that in the future)

> - Prefix is forbidden

Fixed.

> - buildRoot should not be used, except for EPEL 5
> https://fedoraproject.org/wiki/Packaging:Guidelines#BuildRoot_tag

Fixed. Only set if RHEL 5.

> - so does %defattr, %clean and rm in %install 

I don't understand what you mean by this. Can you please expand?

> - --record=INSTALLED_FILES is not used, and is not recommended
> https://fedoraproject.org/wiki/Packaging:Python#Byte_compiling

Removed.

> - it seems that %{_datadir}/ansible/ would end unowned

I think this is fixed now.

> - I am not sure, but I think that "-n %{name}-%{version}" is uneeded, becuase
> tha's the default

Correct. Removed this too.

> - the guideline ask for consistency when using macro to reference path :
> %config(noreplace) /etc/ansible/hosts
> %config(noreplace) %{_sysconfdir}/ansible/

Fixed. Consolidated to just "%{_sysconfdir}/ansible"

> - %{_mandir}/man1/*.gz
> that's not mandatory, but I think that's better to not hardcode the prefix used
> here, as this could be changed in the future ( ie, be something else than gz )

Adjusted this too.

Comment 4 Tim Bielawa 2012-04-20 18:33:14 UTC
I've updated the spec and srpm from what was in my last comment.

Current latest sha256sum's:
5fcc5476235cc7f632618ff6bfe75966067084255d0d7cca6ab38f3388bac1e2  ansible-0.0.2-1.fc16.src.rpm
d59cf63e306fd5ad77793803e9e424b391fc643fa56b61d61ea79f4878fb2103  ansible.spec


Spec URL: http://people.redhat.com/~tbielawa/ansible/ansible.spec
SRPM URL:
http://people.redhat.com/~tbielawa/ansible/ansible-0.0.2-1.fc16.src.rpm



Diff from last time:

> %define _dusetup   packaging/distutils/setup.py
...
> Requires: PyYAML


There is now a 'Requires' on PyYAML, and there is a macro '_dusetup' for references to the distutils setup.py file.

Comment 5 Tim Bielawa 2012-04-25 16:26:06 UTC
New version (0.3) requested for review:


http://people.redhat.com/~tbielawa/ansible/ansible-0.3-1.fc16.noarch.rpm
http://people.redhat.com/~tbielawa/ansible/ansible.spec

Just new version of the software. Spec file has a version bump + change log entry.

Comment 6 Michael S. 2012-04-27 20:21:14 UTC
You have uploaded the bnary rpm instead of the src.rpm, and that's required to run fedora-review , and sorry, did forgot I started this review :/

For %defattr, this is no longer needed on newer rpm version. %clean will default to rm -Rf $RPM_BUILD_ROOT, or something like that, so this can be removed too in new distribution ( can be kept of course ). And that's the same for the rm just at the %install, it is done by default nowadays.

- I think the email address is likely wrong ( unless me and LDAP missed a memo )

- Guidelines also requires ( IIRC ) to ship the license file if present, or to ask to upstream to ship it if not.
( so that's the 2nd case here, so i just remind gently to do so :) )

Comment 7 Tim Bielawa 2012-04-30 16:40:51 UTC
(In reply to comment #6)
> You have uploaded the bnary rpm instead of the src.rpm, and that's required to
> run fedora-review , and sorry, did forgot I started this review :/

Sorry about that, I uploaded both RPMs and linked the binary instead of the SRPM. Fixed that now:

http://people.redhat.com/~tbielawa/ansible/ansible-0.3-1.fc16.src.rpm

Also, uploaded the new spec file:

http://people.redhat.com/~tbielawa/ansible/ansible.spec
 
> For %defattr, this is no longer needed on newer rpm version. %clean will
> default to rm -Rf $RPM_BUILD_ROOT, or something like that, so this can be
> removed too in new distribution ( can be kept of course ). And that's the same
> for the rm just at the %install, it is done by default nowadays.

Decided we're not going to target EPEL 5:

 - Removed %defattr

 - Removed %clean


> - I think the email address is likely wrong ( unless me and LDAP missed a memo
> )

Good call. Fixed!

> - Guidelines also requires ( IIRC ) to ship the license file if present, or to
> ask to upstream to ship it if not.
> ( so that's the 2nd case here, so i just remind gently to do so :) )

Fixed that too!

Also, re-built the man pages to show the correct version, 0.3.


Thanks for taking the time to review this. I appreciate it a lot!

Comment 8 Michael S. 2012-05-01 10:00:10 UTC
Seems the license is wrong, it should be GPLv3+, not GPLv3 ( ie, the "or any later" clause ).

The file used in src.rpm do not seems to be the same as the one upstream on github :

$ file ansible-0.3.tar.gz /tmp/ansible-0.3.tar.gz 
ansible-0.3.tar.gz:      gzip compressed data, was "dist/ansible-0.3.tar", last modified: Mon Apr 30 18:30:36 2012, max compression
/tmp/ansible-0.3.tar.gz: gzip compressed data, was "ansible-0.3.tar", from Unix, last modified: Tue Apr 24 04:18:05 2012, max compression

( the 2nd is the one from github, the first is the one from the src.rpm )
I guess that's because you updated the spec in the tarball, and added the LICENSE.


"Packages should try to preserve timestamps of original installed
     files.", I think that the cp invocation fail this part of the guideline 
( https://fedoraproject.org/wiki/Packaging:Guidelines#Timestamps )

Comment 9 Tim Bielawa 2012-05-02 01:16:01 UTC
(In reply to comment #8)
> Seems the license is wrong, it should be GPLv3+, not GPLv3 ( ie, the "or any
> later" clause ).

Good call! Fixed that.

> The file used in src.rpm do not seems to be the same as the one upstream on
> github :
> 
> $ file ansible-0.3.tar.gz /tmp/ansible-0.3.tar.gz 
> ansible-0.3.tar.gz:      gzip compressed data, was "dist/ansible-0.3.tar", last
> modified: Mon Apr 30 18:30:36 2012, max compression
> /tmp/ansible-0.3.tar.gz: gzip compressed data, was "ansible-0.3.tar", from
> Unix, last modified: Tue Apr 24 04:18:05 2012, max compression
> 
> ( the 2nd is the one from github, the first is the one from the src.rpm )
> I guess that's because you updated the spec in the tarball, and added the
> LICENSE.
> 
> "Packages should try to preserve timestamps of original installed
>      files.", I think that the cp invocation fail this part of the guideline 
> ( https://fedoraproject.org/wiki/Packaging:Guidelines#Timestamps )

I see what I did. Instead of using the sources we published on github I was using a fresh 'make sdist' copy.

To make sure I didn't mess anything up with the sources this time I copied the spec file out of the tree to a temp directory and put the github sources into ~/rpmbuild/SOURCES and *then* ran `rpmbuild -bs`. Result is a fresh srpm built off of the upstream sources (Which includes the proper license file).


SRPM: http://people.redhat.com/~tbielawa/ansible/ansible-0.3.1-1.fc16.src.rpm
Spec: http://people.redhat.com/~tbielawa/ansible/ansible.spec
Sums (for your pleasure): http://people.redhat.com/~tbielawa/ansible/ansible.asc

Thanks for taking the time to review this Michael!

Comment 10 Michael S. 2012-05-04 23:29:59 UTC
Sorry for not responding sooner, I am in holidays right now.

The cp are still wrong :
cp examples/hosts $RPM_BUILD_ROOT/etc/ansible/

( since they do not preserve the timestamp )

However, that's just a "should", so not blocking for the review.


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

Key:
- = N/A
x = Pass
! = Fail
? = Not evaluated



==== Generic ====
[x]: MUST Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[x]: MUST Package successfully compiles and builds into binary rpms on at
     least one supported primary architecture.
[x]: MUST %build honors applicable compiler flags or justifies otherwise.
[x]: MUST All build dependencies are listed in BuildRequires, except for any
     that are listed in the exceptions section of Packaging Guidelines.
[x]: MUST Buildroot is not present
     Note: Unless packager wants to package for EPEL5 this is fine
[x]: MUST Package contains no bundled libraries.
[x]: MUST Changelog in prescribed format.
[x]: MUST Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
     Note: Clean would be needed if support for EPEL is required
[x]: MUST Sources contain only permissible code or content.
[x]: MUST %config files are marked noreplace or the reason is justified.
[x]: MUST Each %files section contains %defattr if rpm < 4.4
     Note: Note: defattr macros not found. They would be needed for EPEL5
[x]: MUST Macros in Summary, %description expandable at SRPM build time.
[x]: MUST Package requires other packages for directories it uses.
[x]: MUST Package uses nothing in %doc for runtime.
[x]: MUST Package is not known to require ExcludeArch.
[x]: MUST Permissions on files are set properly.
[x]: MUST Package does not contain duplicates in %files.
[x]: MUST Spec file lacks Packager, Vendor, PreReq tags.
[x]: MUST Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
     Note: rm -rf would be needed if support for EPEL5 is required
[x]: MUST Large documentation files are in a -doc subpackage, if required.
[x]: MUST 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]: MUST License field in the package spec file matches the actual license.
     Note: Licenses found: "*No copyright* UNKNOWN", "GPL (v3 or later) " For
     detailed output of licensecheck see file:
     /home/misc/checkout/git/FedoraReview/src/809882/licensecheck.txt
[x]: MUST Package consistently uses macros (instead of hard-coded directory
     names).
[x]: MUST Package is named according to the Package Naming Guidelines.
[x]: MUST No %config files under /usr.
[x]: MUST Package does not generate any conflict.
[x]: MUST Package obeys FHS, except libexecdir and /usr/target.
[-]: MUST If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: MUST Package must own all directories that it creates.
[x]: MUST Package does not own files or directories owned by other packages.
[x]: MUST Package installs properly.
[x]: MUST Requires correct, justified where necessary.
[!]: MUST Rpmlint output is silent.

rpmlint ansible-0.3-1.fc18.noarch.rpm

ansible.noarch: W: spelling-error %description -l en_US multi -> mulch, mufti
1 packages and 0 specfiles checked; 0 errors, 1 warnings.


rpmlint ansible-0.3-1.fc18.src.rpm

ansible.src: W: spelling-error %description -l en_US multi -> mulch, mufti
1 packages and 0 specfiles checked; 0 errors, 1 warnings.


[x]: MUST Sources used to build the package match the upstream source, as
     provided in the spec URL.
/home/misc/checkout/git/FedoraReview/src/809882/ansible-0.3.tar.gz :
  MD5SUM this package     : 28c36c5926af878ebfd39c932cb86650
  MD5SUM upstream package : 28c36c5926af878ebfd39c932cb86650

[x]: MUST Spec file is legible and written in American English.
[x]: MUST Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[-]: MUST Package contains a SysV-style init script if in need of one.
[x]: MUST File names are valid UTF-8.
[x]: SHOULD Reviewer should test that the package builds in mock.
[x]: SHOULD 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]: SHOULD Dist tag is present.
[x]: SHOULD No file requires outside of /etc, /bin, /sbin, /usr/bin,
     /usr/sbin.
[x]: SHOULD Final provides and requires are sane (rpm -q --provides and rpm -q
     --requires).
[x]: SHOULD Package functions as described.
[x]: SHOULD Latest version is packaged.
[x]: SHOULD Package does not include license text files separate from
     upstream.
[x]: SHOULD SourceX is a working URL.
[x]: SHOULD Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: SHOULD Package should compile and build into binary rpms on all supported
     architectures.
[-]: SHOULD %check is present and all tests pass.
[!]: SHOULD Packages should try to preserve timestamps of original installed
     files.
[x]: SHOULD Spec use %global instead of %define.


==== Python ====
[x]: MUST Module list python2-devel or python3-devel as BuildRequires
[x]: MUST Python egg is built from source
[x]: MUST Python egg do not download anything during build

Issues:
[!]: MUST Rpmlint output is silent.

rpmlint ansible-0.3-1.fc18.noarch.rpm

ansible.noarch: W: spelling-error %description -l en_US multi -> mulch, mufti
1 packages and 0 specfiles checked; 0 errors, 1 warnings.


rpmlint ansible-0.3-1.fc18.src.rpm

ansible.src: W: spelling-error %description -l en_US multi -> mulch, mufti
1 packages and 0 specfiles checked; 0 errors, 1 warnings.


See: http://fedoraproject.org/wiki/Packaging/Guidelines#rpmlint

Generated by fedora-review 0.2.0git
External plugins:



So the package is good to go, as the only rpmlint warning is a false positive.

Comment 11 Tim Bielawa 2012-05-05 02:49:23 UTC
Horay!

Comment 12 Tim Bielawa 2012-05-06 07:02:21 UTC
New Package SCM Request
=======================
Package Name: ansible
Short Description: Minimal SSH command and control
Owners: tbielawa
Branches: f15 f16 f17

Comment 13 Gwyn Ciesla 2012-05-06 20:58:36 UTC
Git done (by process-git-requests).

Comment 14 Fedora Update System 2012-05-06 23:33:45 UTC
ansible-0.3.1-1.fc15 has been submitted as an update for Fedora 15.
https://admin.fedoraproject.org/updates/ansible-0.3.1-1.fc15

Comment 15 Fedora Update System 2012-05-06 23:35:16 UTC
ansible-0.3.1-1.fc16 has been submitted as an update for Fedora 16.
https://admin.fedoraproject.org/updates/ansible-0.3.1-1.fc16

Comment 16 Fedora Update System 2012-05-06 23:49:18 UTC
ansible-0.3.1-1.fc17 has been submitted as an update for Fedora 17.
https://admin.fedoraproject.org/updates/ansible-0.3.1-1.fc17

Comment 17 Tim Bielawa 2012-05-07 04:09:54 UTC
Package Change Request
======================
Package Name: ansible
New Branches: el6
Owners: tbielawa

Comment 18 Fedora Update System 2012-05-07 04:18:21 UTC
ansible-0.3.1-1.fc17 has been pushed to the Fedora 17 stable repository.

Comment 19 Gwyn Ciesla 2012-05-07 12:32:39 UTC
Git done (by process-git-requests).

Comment 20 Fedora Update System 2012-05-07 14:29:48 UTC
ansible-0.3.1-1.el6 has been submitted as an update for Fedora EPEL 6.
https://admin.fedoraproject.org/updates/ansible-0.3.1-1.el6

Comment 21 Fedora Update System 2012-05-09 19:13:52 UTC
ansible-0.3.1-1.el6 has been pushed to the Fedora EPEL 6 stable repository.

Comment 22 Fedora Update System 2012-05-10 14:34:24 UTC
ansible-0.3.1-1.fc15 has been pushed to the Fedora 15 stable repository.

Comment 23 Fedora Update System 2012-05-10 14:44:34 UTC
ansible-0.3.1-1.fc16 has been pushed to the Fedora 16 stable repository.


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