Bug 819099 - Review Request: gf2x - polynomial multiplication over the binary field
Summary: Review Request: gf2x - polynomial multiplication over the binary field
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Mario Blättermann
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2012-05-04 20:33 UTC by Jerry James
Modified: 2015-01-13 00:56 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-08-22 21:04:25 UTC
Type: ---
Embargoed:
mario.blaettermann: fedora-review+
gwync: fedora-cvs+


Attachments (Terms of Use)

Description Jerry James 2012-05-04 20:33:56 UTC
Spec URL: http://jjames.fedorapeople.org/gf2x/gf2x.spec
SRPM URL: http://jjames.fedorapeople.org/gf2x/gf2x-1.0-1.fc18.src.rpm
Description: 
Gf2x is a C/C++ software package containing routines for fast arithmetic
in GF(2)[x] (multiplication, squaring, GCD) and searching for
irreducible/primitive trinomials.

This package can be used by NTL, which is already in Fedora.  The combination of the two is required for the Sage math package.

Comment 1 Mario Blättermann 2012-07-09 19:05:48 UTC
Koji scratch build:
http://koji.fedoraproject.org/koji/taskinfo?taskID=4227776

$ rpmlint -i -v *
gf2x.i686: I: checking
gf2x.i686: W: spelling-error %description -l en_US trinomials -> binomials, mistrials
The value of this tag appears to be misspelled. Please double-check.

gf2x.i686: I: checking-url http://gf2x.gforge.inria.fr/ (timeout 10 seconds)
gf2x.i686: W: shared-lib-calls-exit /usr/lib/libgf2x.so.1.0.0 exit
This library package calls exit() or _exit(), probably in a non-fork()
context. Doing so from a library is strongly discouraged - when a library
function calls exit(), it prevents the calling program from handling the
error, reporting it to the user, closing files properly, and cleaning up any
state that the program has. It is preferred for the library to return an
actual error code and let the calling program decide how to handle the
situation.

gf2x.x86_64: I: checking
gf2x.x86_64: W: spelling-error %description -l en_US trinomials -> binomials, mistrials
The value of this tag appears to be misspelled. Please double-check.

gf2x.x86_64: I: checking-url http://gf2x.gforge.inria.fr/ (timeout 10 seconds)
gf2x.x86_64: W: shared-lib-calls-exit /usr/lib64/libgf2x.so.1.0.0 exit.5
This library package calls exit() or _exit(), probably in a non-fork()
context. Doing so from a library is strongly discouraged - when a library
function calls exit(), it prevents the calling program from handling the
error, reporting it to the user, closing files properly, and cleaning up any
state that the program has. It is preferred for the library to return an
actual error code and let the calling program decide how to handle the
situation.

gf2x.src: I: checking
gf2x.src: W: spelling-error %description -l en_US trinomials -> binomials, mistrials
The value of this tag appears to be misspelled. Please double-check.

gf2x.src: I: checking-url http://gf2x.gforge.inria.fr/ (timeout 10 seconds)
gf2x.src: I: checking-url https://gforge.inria.fr/frs/download.php/27999/gf2x-1.0.tar.gz (timeout 10 seconds)
gf2x-debuginfo.i686: I: checking
gf2x-debuginfo.i686: I: checking-url http://gf2x.gforge.inria.fr/ (timeout 10 seconds)
gf2x-debuginfo.x86_64: I: checking
gf2x-debuginfo.x86_64: I: checking-url http://gf2x.gforge.inria.fr/ (timeout 10 seconds)
gf2x-devel.i686: I: checking
gf2x-devel.i686: I: checking-url http://gf2x.gforge.inria.fr/ (timeout 10 seconds)
gf2x-devel.i686: W: no-documentation
The package contains no documentation (README, doc, etc). You have to include
documentation files.

gf2x-devel.x86_64: I: checking
gf2x-devel.x86_64: I: checking-url http://gf2x.gforge.inria.fr/ (timeout 10 seconds)
gf2x-devel.x86_64: W: no-documentation
The package contains no documentation (README, doc, etc). You have to include
documentation files.

gf2x.spec: I: checking-url https://gforge.inria.fr/frs/download.php/27999/gf2x-1.0.tar.gz (timeout 10 seconds)
7 packages and 1 specfiles checked; 0 errors, 7 warnings.


Misspelled words and devel packages without docs are ignorable. But what means this:

gf2x.x86_64: W: shared-lib-calls-exit /usr/lib64/libgf2x.so.1.0.0 exit.5
This library package calls exit() or _exit(), probably in a non-fork()
context. Doing so from a library is strongly discouraged - when a library
function calls exit(), it prevents the calling program from handling the
error, reporting it to the user, closing files properly, and cleaning up any
state that the program has. It is preferred for the library to return an
actual error code and let the calling program decide how to handle the
situation.

Comment 2 Jerry James 2012-08-03 21:31:45 UTC
Mario, thanks for the comments.  I've looked into gf2x's use of exit().  It occurs in one place, where it is a sanity check.  That is, exit() is called only if internal data structures are in an inconsistent state.  This is not good, of course.  It would be much better to return some kind of error code to the caller.

On the other hand, I don't see how to fix this easily without changing the library's API.  I will write to upstream and suggest that they change their API to report the error to the caller instead of calling exit().  But I would like to proceed with this review, regardless, since this issue is not required to be resolved by the Fedora Packaging Guidelines.  (I think; at least, I can't find where it is even mentioned in the guidelines.  Correct me if I am wrong.)

New URLs for a new upstream version:
Spec URL: http://jjames.fedorapeople.org/gf2x/gf2x.spec
SRPM URL: http://jjames.fedorapeople.org/gf2x/gf2x-1.1-1.fc18.src.rpm

Comment 3 Mario Blättermann 2012-08-04 17:53:41 UTC
Successful scratch build:
http://koji.fedoraproject.org/koji/taskinfo?taskID=4359153


$ rpmlint -i -v *
gf2x.i686: I: checking
gf2x.i686: W: spelling-error %description -l en_US trinomials -> binomials, mistrials
The value of this tag appears to be misspelled. Please double-check.

gf2x.i686: I: checking-url http://gf2x.gforge.inria.fr/ (timeout 10 seconds)
gf2x.i686: W: shared-lib-calls-exit /usr/lib/libgf2x.so.1.0.0 exit
This library package calls exit() or _exit(), probably in a non-fork()
context. Doing so from a library is strongly discouraged - when a library
function calls exit(), it prevents the calling program from handling the
error, reporting it to the user, closing files properly, and cleaning up any
state that the program has. It is preferred for the library to return an
actual error code and let the calling program decide how to handle the
situation.

gf2x.src: I: checking
gf2x.src: W: spelling-error %description -l en_US trinomials -> binomials, mistrials
The value of this tag appears to be misspelled. Please double-check.

gf2x.src: I: checking-url http://gf2x.gforge.inria.fr/ (timeout 10 seconds)
gf2x.src: I: checking-url https://gforge.inria.fr/frs/download.php/30873/gf2x-1.1.tar.gz (timeout 10 seconds)
gf2x.x86_64: I: checking
gf2x.x86_64: W: spelling-error %description -l en_US trinomials -> binomials, mistrials
The value of this tag appears to be misspelled. Please double-check.

gf2x.x86_64: I: checking-url http://gf2x.gforge.inria.fr/ (timeout 10 seconds)
gf2x.x86_64: W: shared-lib-calls-exit /usr/lib64/libgf2x.so.1.0.0 exit.5
This library package calls exit() or _exit(), probably in a non-fork()
context. Doing so from a library is strongly discouraged - when a library
function calls exit(), it prevents the calling program from handling the
error, reporting it to the user, closing files properly, and cleaning up any
state that the program has. It is preferred for the library to return an
actual error code and let the calling program decide how to handle the
situation.

gf2x-debuginfo.i686: I: checking
gf2x-debuginfo.i686: I: checking-url http://gf2x.gforge.inria.fr/ (timeout 10 seconds)
gf2x-debuginfo.x86_64: I: checking
gf2x-debuginfo.x86_64: I: checking-url http://gf2x.gforge.inria.fr/ (timeout 10 seconds)
gf2x-devel.i686: I: checking
gf2x-devel.i686: I: checking-url http://gf2x.gforge.inria.fr/ (timeout 10 seconds)
gf2x-devel.i686: W: no-documentation
The package contains no documentation (README, doc, etc). You have to include
documentation files.

gf2x-devel.x86_64: I: checking
gf2x-devel.x86_64: I: checking-url http://gf2x.gforge.inria.fr/ (timeout 10 seconds)
gf2x-devel.x86_64: W: no-documentation
The package contains no documentation (README, doc, etc). You have to include
documentation files.

7 packages and 0 specfiles checked; 0 errors, 7 warnings.


The same exit() problem as already mentioned above. However, it is a warning, not an error message from rpmlint. Nowhere seen in the guidelines, how to handle this or whether it is needed to do anything. That's why to be ignored.


---------------------------------
key:

[+] 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.
    GPLv2+
[+] MUST: The License field in the package spec file must match the actual
license.
[+] MUST: The file containing the text of the license(s) for the package must
be included 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.
    $ sha256sum *
    0d3f01604680102a00ca34e079903cc4d5a3208afda223748979b724d358849f  gf2x-1.1.tar.gz
    0d3f01604680102a00ca34e079903cc4d5a3208afda223748979b724d358849f  gf2x-1.1.tar.gz.orig

[+] MUST: The package MUST successfully compile and build into binary rpms on
at least one primary architecture.
- See Koji build above.
[.] 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.
[.] MUST: If a package installs files below %{_datadir}/icons, the icon cache
must be updated.
[+] MUST: Packages storing shared library files (not just symlinks) 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: Packages must not provide RPM dependency information when that
information is not global in nature, or are otherwise handled.
[.] MUST: When filtering automatically generated RPM dependency information,
the filtering system implemented by Fedora must be used.
[+] 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.
[+] MUST: If a package contains library files with a suffix (e.g.
libfoo.so.1.1), ...
[+] MUST: devel packages must require the base package using a fully versioned
dependency.
[+] MUST: Packages must NOT contain any .la libtool archives.
[.] MUST: Packages containing GUI applications must include a %{name}.desktop
file
[.] MUST: .desktop files must be properly installed with desktop-file-install
in the %install section.
[+] MUST: Packages must not own files or directories already owned by other
packages.
[+] MUST: All filenames in rpm packages must be valid UTF-8.

[.] SHOULD: If the source package does not include license text(s) as a
    separate file from upstream, the packager SHOULD query upstream...

[+] SHOULD: Timestamps of files should be preserved.
[+] SHOULD: The reviewer should test that the package builds in mock.
    See Koji build above (which uses mock anyway)
[.] SHOULD: The reviewer should test that the package functions as described.
[+] SHOULD: If scriptlets are used, those scriptlets must be sane.
[.] SHOULD: Usually, subpackages other than devel should require the base
package using a fully versioned dependency.
[.] SHOULD: pkgconfig(.pc) files should be placed in a -devel pkg.
[.] SHOULD: If the package has file dependencies outside of /etc, /bin, /sbin,
/usr/bin, or /usr/sbin ...
[.] SHOULD: Your package should contain man pages for binaries/scripts.

--------------------------------------

PACKAGE APPROVED

--------------------------------------

Comment 4 Jerry James 2012-08-13 21:46:44 UTC
Thanks very much for the review, Mario.  I will talk with upstream about removing that exit() call.

New Package SCM Request
=======================
Package Name: gf2x
Short Description: polynomial multiplication over the binary field
Owners: jjames
Branches: f17 f18
InitialCC:

Comment 5 Gwyn Ciesla 2012-08-14 10:57:50 UTC
Git done (by process-git-requests).

Comment 6 Fedora Update System 2012-08-14 15:39:13 UTC
gf2x-1.1-1.fc17 has been submitted as an update for Fedora 17.
https://admin.fedoraproject.org/updates/gf2x-1.1-1.fc17

Comment 7 Fedora Update System 2012-08-14 21:57:39 UTC
gf2x-1.1-1.fc17 has been pushed to the Fedora 17 testing repository.

Comment 8 Fedora Update System 2012-08-22 21:04:25 UTC
gf2x-1.1-1.fc17 has been pushed to the Fedora 17 stable repository.

Comment 9 marianne@tuxette.fr 2015-01-12 18:00:28 UTC
Package Change Request
======================
Package Name: gf2x
New Branches: epel7
Owners: jehane jjames

Comment 10 Gwyn Ciesla 2015-01-13 00:56:37 UTC
Git done (by process-git-requests).


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