Bug 504430

Summary: Review Request: healpy - A python wrapper of the healpix library
Product: [Fedora] Fedora Reporter: Joseph Smidt <josephsmidt>
Component: Package ReviewAssignee: Susi Lehtola <susi.lehtola>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: fedora-package-review, lkundrak, notting, susi.lehtola
Target Milestone: ---Flags: susi.lehtola: fedora-review+
j: fedora-cvs+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: 0.9.6.1-3.fc11 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2009-06-24 03:05:14 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 Joseph Smidt 2009-06-06 22:28:52 UTC
Spec URL: http://jsmidt.fedorapeople.org/healpy.spec
SRPM URL: http://jsmidt.fedorapeople.org/healpy-0.9.6-1.fc10.src.rpm

Description: 
Healpy, a GPLv2+ package, provides a python package to manipulate healpix maps. It is based on the standard numeric and visualisation tools for Python, Numpy and matplotlib. The website is here: http://code.google.com/p/healpy/.  Binding for Healpix in C, Fortran and C++ already exist in Fedora.  This will add Python to that list.

Here is rpmlint:
rpmlint healpy-0.9.6-1.fc10.i386.rpm
healpy.i386: E: explicit-lib-dependency python-matplotlib

I don't know what to do about this error since the package requires python-matplotlib for plotting, a major purpose of the program.

Comment 1 Lubomir Rintel 2009-06-06 23:24:10 UTC
(In reply to comment #0)
> Here is rpmlint:
> rpmlint healpy-0.9.6-1.fc10.i386.rpm
> healpy.i386: E: explicit-lib-dependency python-matplotlib
> 
> I don't know what to do about this error since the package requires
> python-matplotlib for plotting, a major purpose of the program.  

That's completely fine. rpmlint is most likely confused by "lib" substring, wrongly concluding that it is a package that contains an ELF shared library that  should be depended on automatically. It's perfectly OK to depend on a python library explicitely.

Comment 2 Susi Lehtola 2009-06-07 07:34:42 UTC
- The BRs are incorrect.
 BuildRequires:	python
should be
 BuildRequires: python-devel
and
 BuildRequires:	gcc-c++
can be safely dropped (it's in the default buildroot).

?? The package uses BOTH python_sitearch AND python_sitelib?? (Are you building on x86, then these will point to the same place?)

- Why on Earth do you
 mkdir -p %{buildroot}%{_datadir}/%{name}/
 mv %{buildroot}%{python_sitelib}/%{name}/data %{buildroot}%{_datadir}/%{name}/data
as this will probably break functionality..?

- As the Healpix C++ package is included in the distribution, you need to find a way to remove it and use healpix-c++-devel instead.

Comment 3 Joseph Smidt 2009-06-07 15:53:58 UTC
(In reply to comment #2)
> - The BRs are incorrect.
>  BuildRequires: python
> should be
>  BuildRequires: python-devel

Sorry if I made a mistake here, but the packaging guidelines for Python state to use python, not python-devel: https://fedoraproject.org/wiki/Packaging/Python


> ?? The package uses BOTH python_sitearch AND python_sitelib?? (Are you building
> on x86, then these will point to the same place?)

Again, sorry if this was a mistake, this package has C/C++ libraries and the above guidelines seem to suggest you use python_sitelib for normal Python modules and python_sitearch for "libraries (like those written in C)".

I've never dealt with a Python program with these kind of libraries before so I got confused.

> 
> - Why on Earth do you
>  mkdir -p %{buildroot}%{_datadir}/%{name}/
>  mv %{buildroot}%{python_sitelib}/%{name}/data
> %{buildroot}%{_datadir}/%{name}/data
> as this will probably break functionality..?
> 

Because they are just example .fits files.  However, I will put them back. 

> - As the Healpix C++ package is included in the distribution, you need to find
> a way to remove it and use healpix-c++-devel instead.  

Okay, I will do this and the other things.

Comment 4 Joseph Smidt 2009-06-07 21:13:55 UTC
Okay, first of all I forgot to thank you for the review.  

I've patched the source so it doesn't build the Healpix-c++ package and also so that it links against the healpix-c++ and cfitsio libraries already in Fedora.

I also think I have corrected the other mistakes you mentioned, unless I misunderstood.  Thanks again.  The new files are here with no change to rpmlint.

Spec URL: http://jsmidt.fedorapeople.org/healpy.spec
SRPM URL: http://jsmidt.fedorapeople.org/healpy-0.9.6-1.fc10.src.rpm

Comment 5 Susi Lehtola 2009-06-07 22:17:25 UTC
- You have
 BuildRequires:	healpix-c++-devel
 BuildRequires:	cfitsio-devel
so
 BuildRequires:	healpix-c++
 BuildRequires:	cfitsio
is redundant (these are pulled in by the -devel packages).

- You are not building in %build. Use
 python setup.py build
in %build and
 python setup.py install -O1 --skip-build --root %{buildroot} 
in %install.

- Without looking at its contents, INSTALL shouldn't probably be in %doc (if its only contents is instructions for installation from source, then it shouldn't be included).

- You must in any case own the directory
 %{python_sitearch}/%{name}/
so you can drop the three last lines from the %files section.

- Add comment about the patch. Also, you could remove the internal healpix and cfitsio libraries from the extracted tarball in the setup phase so that one can be sure that they are not used instead of the Fedora packages.

Comment 6 Joseph Smidt 2009-06-08 00:00:27 UTC
(In reply to comment #5)
> - You have
>  BuildRequires: healpix-c++-devel
>  BuildRequires: cfitsio-devel
> so
>  BuildRequires: healpix-c++
>  BuildRequires: cfitsio
> is redundant (these are pulled in by the -devel packages).
> 

I meant:
 
Requires: healpix-c++
Requires: cfitsio

   so I believe this is now fixed.


> - You are not building in %build. Use
>  python setup.py build
> in %build and
>  python setup.py install -O1 --skip-build --root %{buildroot} 
> in %install.

Done

> 
> - Without looking at its contents, INSTALL shouldn't probably be in %doc (if
> its only contents is instructions for installation from source, then it
> shouldn't be included).
>

Done
 
> - You must in any case own the directory
>  %{python_sitearch}/%{name}/
> so you can drop the three last lines from the %files section.
> 

Done.  I believe I did what you meant.

> - Add comment about the patch. 

Done.

> Also, you could remove the internal healpix and
> cfitsio libraries from the extracted tarball in the setup phase so that one can
> be sure that they are not used instead of the Fedora packages.  

Done.  I have removed the entire directory containing the healpix and cfitsio libraries in the setup phase.

The new files are again at:
Spec URL: http://jsmidt.fedorapeople.org/healpy.spec
SRPM URL: http://jsmidt.fedorapeople.org/healpy-0.9.6-1.fc10.src.rpm

Comment 7 Susi Lehtola 2009-06-08 09:12:24 UTC
(In reply to comment #6)
> (In reply to comment #5)
> >  BuildRequires: healpix-c++
> >  BuildRequires: cfitsio
> > is redundant (these are pulled in by the -devel packages).
> 
> I meant:
> 
> Requires: healpix-c++
> Requires: cfitsio
> 
>    so I believe this is now fixed.

Nope, that is in collision with
http://fedoraproject.org/wiki/Packaging/Guidelines#Explicit_Requires

Also, you really should increment the release tag every time you make a new revision. Not incrementing it makes it harder for me to keep track of what has been done.

Comment 8 Susi Lehtola 2009-06-08 09:17:14 UTC
Also, the package does not build in mock. You need at least BR: numpy, maybe you need also the other python packages as BR.

Comment 9 Joseph Smidt 2009-06-08 23:00:34 UTC
Thanks for all your patience with this review.  I have fixed the issues you mentioned and now the package builds in mock.


The new files are again at:
Spec URL: http://jsmidt.fedorapeople.org/healpy.spec
SRPM URL: http://jsmidt.fedorapeople.org/healpy-0.9.6-2.fc10.src.rpm

Comment 10 Susi Lehtola 2009-06-09 05:48:46 UTC
Well, this should be Release 4, since:

-1 was initial release
-2 was build against healpix-c++ and cfitsio instead of the bundled ones
-3 was removing bundled healpix and cfitsio altogether and changing duplicated BR:s into R:s
-4 dropping the extra R:s

**

- You should probably
 %build
 export CFLAGS="%{optflags} -fopenmp"
to enable threading support.

- g++ flags are not used. This needs to be fixed.

- The package *does not contain any license statement at all*. It cannot go in until you get upstream to put the license in the tarball, the order of preference is
1. source code headers stating the file(s) are under GPLv2+
2. COPYING stating healpy is under GPLv2+
3. plain GPLv(N) COPYING file, which means that code is under GPL+.

Comment 11 Joseph Smidt 2009-06-09 07:18:25 UTC
> - The package *does not contain any license statement at all*. It cannot go in
> until you get upstream to put the license in the tarball, the order of
> preference is

I have contacted upstream.  I will let you know when the License has been properly included.

Comment 12 Joseph Smidt 2009-06-13 04:01:24 UTC
The upstream Author made a new version with GPLv2 headers in the source files.

I have added the gcc and g++ build flags.  I have taken upstream's minimum package dependency versions recommendations and added them to the spec file.

This package builds successfully  on all platforms for Fedora 10 and 11 using Koji:
https://koji.fedoraproject.org/koji/taskinfo?taskID=1409599
https://koji.fedoraproject.org/koji/taskinfo?taskID=1409604

There are is no rpmlint warnings or errors on my Fedora 11 system.

The new files are again at:
Spec URL: http://jsmidt.fedorapeople.org/healpy.spec
SRPM URL: http://jsmidt.fedorapeople.org/healpy-0.9.6.1-1.fc11.src.rpm

Comment 13 Susi Lehtola 2009-06-13 09:19:40 UTC
rpmlint output:
healpy.x86_64: E: non-standard-executable-perm /usr/lib64/python2.6/site-packages/healpy/_healpy_sph_transform_lib.so 0775
healpy.x86_64: E: non-standard-executable-perm /usr/lib64/python2.6/site-packages/healpy/_healpy_pixel_lib.so 0775
healpy.x86_64: E: non-standard-executable-perm /usr/lib64/python2.6/site-packages/healpy/_healpy_fitsio_lib.so 0775
3 packages and 0 specfiles checked; 3 errors, 0 warnings.

- Fix the permissions, they should be 755.


MUST: The package does not yet exist in Fedora. The Review Request is not a duplicate. OK
MUST: The spec file for the package is legible and macros are used consistently. OK

MUST: The package must be named according to the Package Naming Guidelines. NEEDSWORK
- This is a python module, so the correct name is python-healpy.

MUST: The spec file name must match the base package %{name}. OK
- Remember to change this as well.

MUST: The package must be licensed with a Fedora approved license and meet the  Licensing Guidelines. OK

MUST: The License field in the package spec file must match the actual license. OK
- GPLv2+ license headers are now present and correctly picked up by licensecheck.pl
- The test file test/test_fit_dipole.py is still missing a license. This is not a problem per se, since the license of the package is already clear from the other files.

MUST: The sources used to build the package must match the upstream source, as provided in the spec URL. OK
MUST: The package MUST successfully compile and build into binary rpms. OK
MUST: The spec file MUST handle locales properly. N/A
MUST: Optflags are used and time stamps preserved. OK
MUST: Packages containing shared library files must call ldconfig. N/A
MUST: A package must own all directories that it creates or require the package that owns the directory. OK
MUST: Files only listed once in %files listings. OK
MUST: Debuginfo package is complete. OK
MUST: Permissions on files must be set properly. OK
MUST: Clean section exists. OK
MUST: Large documentation files must go in a -doc subpackage. N/A

MUST: All relevant items are included in %doc. Items in %doc do not affect runtime of application. NEEDSWORK
- Add ChangeLog and test/test_fit_dipole.py to %doc.

MUST: Header files must be in a -devel package. N/A
MUST: Static libraries must be in a -static package. N/A
MUST: Packages containing pkgconfig(.pc) files must 'Requires: pkgconfig'. N/A
MUST: If a package contains library files with a suffix then library files ending in .so must go in a -devel package. N/A
MUST: In the vast majority of cases, devel packages must require the base package using a fully versioned dependency. N/A
MUST: Packages does not contain any .la libtool archives. N/A
MUST: Desktop files are installed properly. N/A
MUST: No file conflicts with other packages and no general names. OK
MUST: Buildroot cleaned before install. OK
SHOULD: %{?dist} tag is used in release. OK

SHOULD: If the package does not include license text(s) as separate files from upstream, the packager should query upstream to include it. NEEDSWORK
- License file is still missing.

SHOULD: The package builds in mock. OK

Comment 14 Joseph Smidt 2009-06-17 02:57:20 UTC
(In reply to comment #13)
> rpmlint output:
> healpy.x86_64: E: non-standard-executable-perm
> /usr/lib64/python2.6/site-packages/healpy/_healpy_sph_transform_lib.so 0775
> healpy.x86_64: E: non-standard-executable-perm
> /usr/lib64/python2.6/site-packages/healpy/_healpy_pixel_lib.so 0775
> healpy.x86_64: E: non-standard-executable-perm
> /usr/lib64/python2.6/site-packages/healpy/_healpy_fitsio_lib.so 0775
> 3 packages and 0 specfiles checked; 3 errors, 0 warnings.
> 
> - Fix the permissions, they should be 755.
> 

This is so weird.  On my system they are 755 so rpmlint isn't complaining.  However, I have forced them to by 755 so Done.



> MUST: The package must be named according to the Package Naming Guidelines.
> NEEDSWORK
> - This is a python module, so the correct name is python-healpy.

Sorry, I didn't know this is a hard rule since the python modules it depends on, numpy, scipy and pyfits don't follow it. 

However fixed: Done.



> SHOULD: If the package does not include license text(s) as separate files from
> upstream, the packager should query upstream to include it. NEEDSWORK
> - License file is still missing.

It turns out the COPYING file is in the directory containinh Healpix-c++ which I was deleting.  It is now copied to %%doc.  Done

The new files are again at:
Spec URL: http://jsmidt.fedorapeople.org/healpy.spec
SRPM URL: http://jsmidt.fedorapeople.org/python-healpy-0.9.6.1-2.fc11.src.rpm

Comment 15 Joseph Smidt 2009-06-17 03:02:08 UTC
Sorry, here is the spec file: http://jsmidt.fedorapeople.org/python-healpy.spec

Comment 16 Susi Lehtola 2009-06-17 19:41:03 UTC
(In reply to comment #14)
> > MUST: The package must be named according to the Package Naming Guidelines.
> > NEEDSWORK
> > - This is a python module, so the correct name is python-healpy.
> 
> Sorry, I didn't know this is a hard rule since the python modules it depends
> on, numpy, scipy and pyfits don't follow it. 
> 
> However fixed: Done.

*whoops*

I though the guideline was that the name must begin with python- if it doesn't start with py, but actually it is "If the upstream source has "py" (or "Py") in its name, you can use that name for the package. So, for example, pygtk is acceptable."

http://fedoraproject.org/wiki/Packaging/NamingGuidelines#Addon_Packages_.28python_modules.29

So the name should be after all just healpy. Sorry for the mixup :)

Comment 17 Joseph Smidt 2009-06-17 22:23:50 UTC

> 
> So the name should be after all just healpy. Sorry for the mixup :)  


Okay, name changed back.

The new files are again at:
Spec URL: http://jsmidt.fedorapeople.org/healpy.spec
SRPM URL: http://jsmidt.fedorapeople.org/healpy-0.9.6.1-3.fc11.src.rpm

Comment 18 Susi Lehtola 2009-06-18 08:23:53 UTC
- The COPYING file actually belongs to healpix c++, but it doesn't matter since both are gpl.

Everything seems to be fixed now, so the package is


APPROVED

Comment 19 Joseph Smidt 2009-06-18 15:18:03 UTC
New Package CVS Request
=======================
Package Name: healpy
Short Description: A python wrapper of the healpix library
Owners: jsmidt
Branches: F-10 F-11 EL-5
InitialCC:

Comment 20 Jason Tibbitts 2009-06-18 20:25:27 UTC
CVS done.

Comment 21 Fedora Update System 2009-06-18 23:12:29 UTC
healpy-0.9.6.1-3.fc11 has been submitted as an update for Fedora 11.
http://admin.fedoraproject.org/updates/healpy-0.9.6.1-3.fc11

Comment 22 Fedora Update System 2009-06-18 23:31:41 UTC
healpy-0.9.6.1-3.fc10 has been submitted as an update for Fedora 10.
http://admin.fedoraproject.org/updates/healpy-0.9.6.1-3.fc10

Comment 23 Fedora Update System 2009-06-24 19:26:46 UTC
healpy-0.9.6.1-3.fc10 has been pushed to the Fedora 10 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 24 Fedora Update System 2009-06-24 19:42:43 UTC
healpy-0.9.6.1-3.fc11 has been pushed to the Fedora 11 stable repository.  If problems still persist, please make note of it in this bug report.