Bug 594943 - Review Request: libnoise - A general-purpose library that generates three-dimensional coherent noise
Summary: Review Request: libnoise - A general-purpose library that generates three-dim...
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Martin Gieseking
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2010-05-22 06:17 UTC by Robin Norwood
Modified: 2011-04-05 07:42 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2011-04-05 07:42:03 UTC
Type: ---
Embargoed:
martin.gieseking: fedora-review+
dennis: fedora-cvs+


Attachments (Terms of Use)

Description Robin Norwood 2010-05-22 06:17:06 UTC
Spec URL: http://www.norwoodfamily.info/rpms/libnoise.spec
SRPM URL: http://www.norwoodfamily.info/rpms/libnoise-1.0.0-1.fc12.src.rpm
Description: libnoise is a new dependency for mathmap-1.3.5.  The upstream version of mathmap contains a copy of libnoise which it builds and links against statically, which I believe is in violation of the packaging guidelines.  Therefore, I'm submitting the upstream version of libnoise as a stand-alone package. If it is approved, then I can update mathmap to 1.3.5.

There is one problem that I know of with the current spec:
$ rpmlint libnoise-debuginfo-1.0.0-1.fc12.i686.rpm
libnoise-debuginfo.i686: E: debuginfo-without-sources

I haven't been able to figure out why the sources aren't getting included in the debuginfo...help with this would be appreciated.

Comment 1 Robin Norwood 2010-05-22 06:50:44 UTC
Please disregard the last two paragraphs in my initial comment - I found the problem and fixed it.  rpmlint is now clean, except for complaining about the word 'multifractal'.

Comment 2 Martin Gieseking 2010-05-23 14:01:03 UTC
Some initial comments:

- the package doesn't build in mock and koji because of libtool issues:
http://koji.fedoraproject.org/koji/taskinfo?taskID=2204065

- the license seems to be LGPLv2+

- src/vectortable.c is Public Domain, thus add "and Public Domain" to the License field

- drop noise/doc/html from the base package, and COPYING.txt from the -devel package (files must only be added once)

Comment 3 Robin Norwood 2010-05-23 22:56:44 UTC
Sorry, I should've built it in koji to begin with.  Here's an updated version:

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

http://www.norwoodfamily.info/rpms/libnoise.spec
http://www.norwoodfamily.info/rpms/libnoise-1.0.0-2.fc12.src.rpm

With the 'drop noise/doc/html from the base package' comment, I assumed you meant for me to just put it in the -devel package, and not create a -doc subpackage.  I can do the latter if you think it's warranted, though.

Thanks!

Comment 4 Martin Gieseking 2010-05-24 06:54:22 UTC
Hi Robin,

I just had a closer look at the package, and found a couple of further things to be addressed:

- The library is licensed under LGPLv2+, not GPLv2+. Please update the License field accordingly.

- Source0 should be updated according to https://fedoraproject.org/wiki/Packaging/SourceURL#Sourceforge.net

- I suggest to use the same suffix (.patch) for all patches.

- The doxygen documentation is indeed quite extensive. It's a good idea to put it in a -doc subpackage.

- Remove the Makefile from %{_includedir}/noise/

- %{_includedir}/* is a bit too generic. Please change it to %{_includedir}/noise/

Comment 6 Martin Gieseking 2010-05-24 16:49:37 UTC
Hi Robin,

is there a special reason why you patch in an additional noise quality variant (QUALITY_BESTCASE)? This extends the interface and would require a bump of the library's release number. BTW, the version number should consist of 3 integers (libnoise.so.0.3.0 instead of libnoise.so.0.3 -- the latter can be added as a symlink, though).
If possible, please ask upstream to fix this. Maybe he can also incorporate your patches.

Comment 7 Robin Norwood 2010-05-24 16:56:29 UTC
Hi Martin,

The reason I'm packaging libnoise in the first place is that the new version of MathMap (1.3.5) requires it.  The upstream version of MathMap ships with a tarball of libnoise, patches it, builds it, and links against it statically.  The QUALITY_BESTCASE patch is from MathMap.  I can check to see if MathMap has submitted the patch upstream or not...otherwise, I'm not really sure how to proceed if libnoise upstream is not interested in the patch...none of the options seem very appealing.  Any suggestions?

Comment 8 Robin Norwood 2010-05-24 17:06:35 UTC
To be clear, the options I see are:

1) Just let MathMap build and link statically to their patched libnoise - the packaging guidelines strongly discourage this: http://fedoraproject.org/wiki/PackagingGuidelines#Packaging_Static_Libraries
2) Package libtool separately with the patch, the route I chose here.  Nasty because it does change the API.

Comment 9 Martin Gieseking 2010-05-24 18:36:54 UTC
I agree, 1) is not an option here. The best variant would be a corporative upstream developer. If he can't be convinced to add the patch, the cleanest way would probably be a fork of the library. This leads to additional work, though. I think, Fedora shouldn't provide a shared library with an updated interface that differs from upstream. However, I'm not sure about this. Maybe you can ask on the devel or packaging list for further suggestions.

Comment 10 Robin Norwood 2010-05-24 19:43:48 UTC
Ok, thanks.  I'll work on contacting the upstream developers for MathMap and libnoise and see what we can work out.

Comment 11 Robin Norwood 2010-05-25 01:02:51 UTC
I've emailed MathMap's developer and am awaiting a response.  I'll update this bug when I hear back from him.

Comment 12 Chen Lei 2010-05-25 12:53:48 UTC
The License should be LGPLv2+, license field is for binary not for source.

Comment 13 Martin Gieseking 2010-05-25 13:00:38 UTC
(In reply to comment #12)
> The License should be LGPLv2+, license field is for binary not for source.    

Incorrect. See https://fedoraproject.org/wiki/Packaging/LicensingGuidelines#Combined_Dual_and_Multiple_Licensing_Scenario

The license of the file is "compiled" into the library and thus part of the binary.

Comment 14 Chen Lei 2010-05-25 13:08:57 UTC
(In reply to comment #13)
> (In reply to comment #12)
> > The License should be LGPLv2+, license field is for binary not for source.    
> Incorrect. See
> https://fedoraproject.org/wiki/Packaging/LicensingGuidelines#Combined_Dual_and_Multiple_Licensing_Scenario
> The license of the file is "compiled" into the library and thus part of the
> binary.    

See https://fedoraproject.org/wiki/Packaging/LicensingGuidelines#License:_field

LGPLv2+ + Public domain = LGPLv2+, because LGPLv2+ contains all limitation Public domain 

Yesterday, someone confirmed this with spot.

Comment 15 Martin Gieseking 2010-05-25 13:25:10 UTC
(In reply to comment #14)
> 
> LGPLv2+ + Public domain = LGPLv2+, because LGPLv2+ contains all limitation
> Public domain 
> 
> Yesterday, someone confirmed this with spot.    

A couple of months ago I got different information about this. But if the additional "Public Domain" tags can now be omitted, then that's fine.

Comment 16 Chen Lei 2010-05-25 13:33:50 UTC
(In reply to comment #15)
> (In reply to comment #14)
> > 
> > LGPLv2+ + Public domain = LGPLv2+, because LGPLv2+ contains all limitation
> > Public domain 
> > 
> > Yesterday, someone confirmed this with spot.    
> A couple of months ago I got different information about this. But if the
> additional "Public Domain" tags can now be omitted, then that's fine.    

Being in the public domain is not a license; rather, it means the material is not copyrighted and no license is needed. 

If LPGL files compile with some others common license such as MIT BSD, the license is also LPGL.

Comment 17 Robin Norwood 2010-05-25 13:54:32 UTC
How about we hash that question out on the devel list or fedora-legal?  I'm still working with upstream to get the patch issue resolved, so there's plenty of time.

Comment 18 Martin Gieseking 2010-05-25 15:14:42 UTC
Hi Robin,

I just got the confirmation that you can drop "and Public Domain" from the License field. Sorry for the confusion. Next time I'll know better. :)

Comment 19 Robin Norwood 2010-05-26 04:56:31 UTC
Hi,

I've discussed the issues with the MathMap maintainer, and we'll work on getting the -bestest patch upstream, and in the meantime getting MM working without this patch to libnoise...the patch is only needed for very specific use cases, and it's absence won't effect most users.  So, another version, with a fixed license tag and no -bestest patch:

http://www.norwoodfamily.info/rpms/libnoise.spec
http://www.norwoodfamily.info/rpms/libnoise-1.0.0-4.fc12.src.rpm

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

Comment 20 Martin Gieseking 2010-05-26 17:56:45 UTC
Hi Robin,

thanks for clarifying the patch issue. Let's hope the library maintainer will accept it. Here's the formal review of libnoise. The spec file is almost fine. Just one minor thing: Please move "rm -rf $RPM_BUILD_ROOT" to the top of the %install section as requested by the EPEL (and previous Fedora) guidelines.

$ rpmlint /var/lib/mock/fedora-13-x86_64/result/libnoise*.rpm
libnoise.src: W: spelling-error %description -l en_US multifractal -> multifaceted, multiracial, multifarious
libnoise.x86_64: W: spelling-error %description -l en_US multifractal -> multifaceted, multiracial, multifarious
libnoise-devel.x86_64: W: no-documentation
5 packages and 0 specfiles checked; 0 errors, 3 warnings.

The above warnings can be safely ignored.

---------------------------------
keys used in following checklist:

[+] OK
[.] OK, not applicable
[X] needs work
---------------------------------

[+] MUST: The package must be named according to the Package Naming Guidelines.
[+] MUST: The spec file name must match the base package %{name}.
[+] MUST: The package must meet the Packaging Guidelines.
[+] MUST: The package must be licensed with a Fedora approved license.
    - LGPLv2+ according to source file headers

[+] MUST: The License field must match the actual license.
[+] MUST: The file containing the text of the license(s) for the package must be included in %doc.
    - COPYING.txt added in %doc

[+] MUST: The spec file must be written in American English.
[+] MUST: The spec file for the package MUST be legible.
[+] MUST: The sources used to build the package must match the upstream source.
    $ md5sum libnoisesrc-1.0.0.zip*
    fc0d9b4f6477397568c3a9d5294b3b8c  libnoisesrc-1.0.0.zip
    fc0d9b4f6477397568c3a9d5294b3b8c  libnoisesrc-1.0.0.zip.1

[+] MUST: The package MUST successfully compile and build into binary rpms on at least one primary architecture.
    - builds in koji for F-12, F-13, and rawhide

[.] MUST: If the package does not successfully compile, build or work on an architecture, ...

[+] MUST: All build dependencies must be listed in BuildRequires.

[.] MUST: The spec file MUST handle locales properly.
    - no locales

[+] MUST: Packages storing shared library files must call ldconfig in %post and %postun.

[+] MUST: Packages must NOT bundle copies of system libraries.
[.] MUST: If the package is designed to be relocatable, ...
[+] MUST: A package must own all directories that it creates. 
[+] MUST: A Fedora package must not list a file more than once in %files.
[+] MUST: Permissions on files must be set properly.
[+] MUST: Each package must consistently use macros.
[+] MUST: The package must contain code, or permissable content.
[+] MUST: Large documentation files must go in a -doc subpackage.
[+] MUST: Files in %doc must not affect the runtime of the application.
[+] MUST: Header files must be in a -devel package.
[.] MUST: Static libraries must be in a -static package.
    - no static libs packaged

[+] MUST: Library files that end in .so (without suffix) must go in a -devel package.

[+] MUST: devel packages must require the base package using a fully versioned dependency.

[+] MUST: Packages must NOT contain any .la libtool archives.
    - .la files removed

[.] MUST: Packages containing GUI applications must include a %{name}.desktop file.
    - no GUI

[+] MUST: Packages must not own files or directories already owned by other packages.

[X] MUST: At the beginning of %install, each package MUST run rm -rf %{buildroot}.
    - Please move the rm statement to the top of the %install section

[+] MUST: All filenames in rpm packages must be valid UTF-8.

[+] SHOULD: The reviewer should test that the package builds in mock.
    - builds in mock

[+] SHOULD: The reviewer should test that the package functions as described.
    - a small test program calling a library funtion compiled, linked, and worked properly on F-13.

[+] SHOULD: If scriptlets are used, those scriptlets must be sane.
[+] SHOULD: Subpackages other than devel should require the base package.
[.] SHOULD: pkgconfig(.pc) files should be placed in a -devel pkg.

Comment 22 Martin Gieseking 2010-05-27 17:19:56 UTC
The spec file and the resulting packages look fine now.

----------------
Package APPROVED
----------------

Comment 23 Robin Norwood 2010-05-27 17:25:29 UTC
Thanks, Martin!

Comment 24 Robin Norwood 2010-05-27 17:27:12 UTC
New Package CVS Request
=======================
Package Name: libnoise
Short Description: A general-purpose library that generates three-dimensional coherent noise
Owners: rnorwood
Branches: F-12 F-13
InitialCC:

Comment 25 Dennis Gilmore 2010-05-27 22:49:40 UTC
CVS Done

Comment 26 Susi Lehtola 2010-05-29 08:48:58 UTC
Patch0 is missing a comment in the spec file. What does it do?

Comment 27 Robin Norwood 2010-05-30 00:31:53 UTC
Jussi: The upstream makefile doesn't work with current versions of libtool.  Also, it doesn't respect Fedora's compiler flags.

Comment 28 Robin Norwood 2010-05-30 00:32:19 UTC
I'll include a comment to that effect in the next release.


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