Bug 866130

Summary: Review Request: python-hghooks - A set of useful hooks for Mercurial
Product: [Fedora] Fedora Reporter: Lorenzo Gil Sanchez <lorenzo.gil.sanchez>
Component: Package ReviewAssignee: Matthias Runge <mrunge>
Status: CLOSED CURRENTRELEASE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: unspecified    
Version: rawhideCC: mrunge, notting, package-review
Target Milestone: ---Flags: mrunge: fedora-review+
gwync: fedora-cvs+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-11-09 09:18:29 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 Lorenzo Gil Sanchez 2012-10-14 08:30:28 UTC
Spec URL: http://lorenzogil.com/rpms/python-hghooks/python-hghooks.spec
SRPM URL: lorenzogil.com/rpms/python-hghooks/python-hghooks-0.5.4-1.fc17.src.rpm
Description: hghooks is a simple module that adds several useful hooks for use in Mercurial hooks system.

Right now it includes hooks for:

 * pep8 checking of python files
 * pyflakes checking of python files
 * jslint checking of javascript files
 * checking for forgotten pdb statements in python files
 * Trac integration. This includes:
   - Making sure at least a ticket is mentioned in the changeset message
   - Updating the Trac ticket with the changeset

Fedora Account System Username: lgs
Koji build for Fedora 17: http://koji.fedoraproject.org/koji/taskinfo?taskID=4588725

This is my first package so I need a sponsor. I've been reviewing other package at https://bugzilla.redhat.com/show_bug.cgi?id=864464 

I'm also the upstream creator and maintainer of hghooks.

Comment 1 Matthias Runge 2012-10-15 09:07:49 UTC
I'll do a review.

Lorenzo,

you should be more specific 
%{python_sitelib}/hghooks
%{python_sitelib}/hghooks-%{version}-py?.?.egg-info

instead of:
%{python_sitelib}/*

you should also be specific, if you want python2-devel or python3-devel. 
https://fedoraproject.org/wiki/Packaging:Python#BuildRequires

You also could remove that macro at the beginning of your spec:
https://fedoraproject.org/wiki/Packaging:Python#Macros

in file hghooks/code.py:
import _ast
which is not covered by any requirement.

Comment 2 Lorenzo Gil Sanchez 2012-10-15 18:35:01 UTC
Thanks for the review!

Here are the updated files:

http://lorenzogil.com/rpms/python-hghooks/python-hghooks.spec
http://lorenzogil.com/rpms/python-hghooks/python-hghooks-0.5.4-2.fc17.src.rpm

Koji build:

http://koji.fedoraproject.org/koji/taskinfo?taskID=4592285

I fixed all your points except for the _ast module, which is a python builtin as you can see from these examples:

[lgs@xpsm1210 ~]$ python2.6
Python 2.6.8 (unknown, Oct 14 2012, 20:36:05) 
[GCC 4.7.2 20120921 (Red Hat 4.7.2-2)] on linux3
Type "help", "copyright", "credits" or "license" for more information.
>>> import _ast
>>> _ast
<module '_ast' (built-in)>

[lgs@xpsm1210 ~]$ python2.7
Python 2.7.3 (default, Jul 24 2012, 10:05:39) 
[GCC 4.7.0 20120507 (Red Hat 4.7.0-5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import _ast
>>> _ast
<module '_ast' (built-in)>

[lgs@xpsm1210 ~]$ python3.2
Python 3.2.3 (default, Jun  8 2012, 05:37:15) 
[GCC 4.7.0 20120507 (Red Hat 4.7.0-5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import _ast
>>> _ast
<module '_ast' (built-in)>

I know it's weird that it starts with underscore.

Comment 3 Matthias Runge 2012-10-23 09:13:55 UTC
It took me some time to get this going in fedora-review -b 866130. It turned out, the appendinx at the source URL #23... is harmful for mock. Also the source tarball was named this way. You need to fix that, although koji currently didn't stumble upon that.


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

Key:
[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]: Package successfully compiles and builds into binary rpms on at least one
     supported primary architecture.
[x]: %build honors applicable compiler flags or justifies otherwise.
[x]: All build dependencies are listed in BuildRequires, except for any that
     are listed in the exceptions section of Packaging Guidelines.
[x]: Package contains no bundled libraries.
[x]: Changelog in prescribed format.
[!]: 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.
[x]: Each %files section contains %defattr if rpm < 4.4
[x]: Macros in Summary, %description expandable at SRPM build time.
[-]: Package contains desktop file if it is a GUI application.
[-]: Development files must be in a -devel package
[-]: Package requires other packages for directories it uses.
[-]: Package uses nothing in %doc for runtime.
[x]: Package is not known to require ExcludeArch.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package complies to the Packaging Guidelines
[x]: Spec file lacks Packager, Vendor, PreReq tags.
[-]: Large documentation files are in a -doc subpackage, if required.
[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]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses found:
     "LGPL (v3 or later)". 1 files have unknown license. Detailed output of
     licensecheck in /home/mrunge/review/review-python-
     hghooks/licensecheck.txt
[x]: Package consistently uses macro is (instead of hard-coded directory
     names).
[x]: Package is named using only allowed ASCII characters.
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
     Note: Package contains no Conflicts: tag(s)
[x]: Package do not use a name that already exist
[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]: Package must own all directories that it creates.
[x]: Package does not own files or directories owned by other packages.
[x]: Package installs properly.
[x]: Package is not relocatable.
[x]: Requires correct, justified where necessary.
[x]: CheckResultdir
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[x]: Sources used to build the package match the upstream source, as provided
     in the spec URL.
[x]: Spec file is legible and written in American English.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[-]: Package contains systemd file(s) if in need.
[x]: File names are valid UTF-8.

Python:
[x]: Package contains BR: python2-devel or python3-devel

===== SHOULD items =====

Generic:
[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]: 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]: Dist tag is present.
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Final provides and requires are sane (rpm -q --provides and rpm -q
     --requires).
[?]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: The placement of pkgconfig(.pc) files are correct.
[x]: SourceX tarball generation or download is documented.
[!]: SourceX / PatchY prefixed with %{name}.
     Note: Source0 (hghooks-0.5.4.tar.gz)
[x]: SourceX is a working URL.
[-]: 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]: Spec use %global instead of %define.

===== EXTRA items =====

Generic:
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: python-hghooks-0.5.4-2.fc19.noarch.rpm
          python-hghooks-0.5.4-2.fc19.src.rpm
python-hghooks.noarch: W: spelling-error %description -l en_US pyflakes -> flakes
python-hghooks.noarch: W: spelling-error %description -l en_US jslint -> splint
python-hghooks.noarch: W: spelling-error %description -l en_US javascript -> java script, java-script, JavaScript
python-hghooks.noarch: W: spelling-error %description -l en_US pdb -> pd, db, pub
python-hghooks.noarch: W: spelling-error %description -l en_US changeset -> change set, change-set, changeless
python-hghooks.src: W: spelling-error %description -l en_US pyflakes -> flakes
python-hghooks.src: W: spelling-error %description -l en_US jslint -> splint
python-hghooks.src: W: spelling-error %description -l en_US javascript -> java script, java-script, JavaScript
python-hghooks.src: W: spelling-error %description -l en_US pdb -> pd, db, pub
python-hghooks.src: W: spelling-error %description -l en_US changeset -> change set, change-set, changeless
2 packages and 0 specfiles checked; 0 errors, 10 warnings.




Rpmlint (installed packages)
----------------------------
# rpmlint python-hghooks
python-hghooks.noarch: W: spelling-error %description -l en_US pyflakes -> flakes
python-hghooks.noarch: W: spelling-error %description -l en_US jslint -> splint
python-hghooks.noarch: W: spelling-error %description -l en_US javascript -> java script, java-script, JavaScript
python-hghooks.noarch: W: spelling-error %description -l en_US pdb -> pd, db, pub
python-hghooks.noarch: W: spelling-error %description -l en_US changeset -> change set, change-set, changeless
1 packages and 0 specfiles checked; 0 errors, 5 warnings.
# echo 'rpmlint-done:'



Requires
--------
python-hghooks-0.5.4-2.fc19.noarch.rpm (rpmlib, GLIBC filtered):
    
    mercurial  
    python(abi) = 2.7



Provides
--------
python-hghooks-0.5.4-2.fc19.noarch.rpm:
    
    python-hghooks = 0.5.4-2.fc19



MD5-sum check
-------------
http://pypi.python.org/packages/source/h/hghooks/hghooks-0.5.4.tar.gz :
  CHECKSUM(SHA256) this package     : c0b788d5ecb33eabb22a9f8ddc70467227c985c61cfd6fefd35dcf62f3f2f3b4
  CHECKSUM(SHA256) upstream package : c0b788d5ecb33eabb22a9f8ddc70467227c985c61cfd6fefd35dcf62f3f2f3b4


Generated by fedora-review 0.3.1 (b71abc1) last change: 2012-10-16
Buildroot used: fedora-rawhide-x86_64



Other than that source tarball issue and the source0-url issue, I'd approve this package

You should change Source0 to something like this:
Source0:        http://pypi.python.org/packages/source/h/hghooks/hghooks-0.5.4.t
ar.gz
#md5=2309bb6d803a3a35ad80e88d78fe1029
and re-retrieve that tarball (or rename that file accodingly). Please take care to keep the timestamp from upstream. E.g. wget does that job right.

Comment 4 Matthias Runge 2012-10-23 09:20:43 UTC
One additional thing, please remove rm -rf at the beginning of %install as it's not required.

Comment 5 Matthias Runge 2012-10-23 09:22:13 UTC
and one more: please remove hghooks.egg-info during %prep section

Comment 6 Lorenzo Gil Sanchez 2012-10-23 09:59:07 UTC
Ok I've update the package to fix the latest problems:


SPEC: http://lorenzogil.com/rpms/python-hghooks/python-hghooks.spec
SRPMS: http://lorenzogil.com/rpms/python-hghooks/python-hghooks-0.5.4-3.fc17.src.rpm

I hope it's fine this time.

Comment 7 Matthias Runge 2012-10-23 10:06:34 UTC
Great,

package approved and I will also sponsor you.

Next step is to request a branch in SCM:
https://fedoraproject.org/wiki/Package_SCM_admin_requests#New_Packages

It may take some time and you might need to logout/login into bugzilla, until you can see that fedora-cvs-flag.

Comment 8 Lorenzo Gil Sanchez 2012-10-23 19:07:56 UTC
New Package SCM Request
=======================
Package Name: python-hghooks
Short Description: A set of useful hooks for Mercurial
Owners: lgs
Branches: f17 f18
InitialCC:

Comment 9 Gwyn Ciesla 2012-10-23 19:23:03 UTC
Git done (by process-git-requests).

Comment 10 Fedora Update System 2012-10-23 21:13:29 UTC
python-hghooks-0.5.4-3.fc18 has been submitted as an update for Fedora 18.
https://admin.fedoraproject.org/updates/python-hghooks-0.5.4-3.fc18

Comment 11 Fedora Update System 2012-10-23 21:14:43 UTC
python-hghooks-0.5.4-3.fc17 has been submitted as an update for Fedora 17.
https://admin.fedoraproject.org/updates/python-hghooks-0.5.4-3.fc17

Comment 12 Fedora Update System 2012-10-24 16:18:31 UTC
python-hghooks-0.5.4-3.fc18 has been pushed to the Fedora 18 testing repository.