Bug 809614 - Review Request: gfal2 - Grid file access library 2.0
Review Request: gfal2 - Grid file access library 2.0
Status: CLOSED ERRATA
Product: Fedora
Classification: Fedora
Component: Package Review (Show other bugs)
rawhide
All Linux
medium Severity medium
: ---
: ---
Assigned To: Ricardo Rocha
Fedora Extras Quality Assurance
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2012-04-03 15:51 EDT by Adrien Devresse
Modified: 2012-05-03 03:27 EDT (History)
4 users (show)

See Also:
Fixed In Version: gfal2-2.0.0-0.6.2012041515snap.fc15
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2012-05-02 16:30:56 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
rocha.porto: fedora‑review+
limburgher: fedora‑cvs+


Attachments (Terms of Use)

  None (edit)
Description Adrien Devresse 2012-04-03 15:51:57 EDT
Spec URL: http://firwen.org/home/specs/gfal2.spec
SRPM URL: http://firwen.org/home/specs/gfal2-2.0.0-0.6.beta.el5.centos.src.rpm
Description: GFAL 2.0 provides a unified interface for POSIX-like file interaction and file transfer operations for a set of file access protocols. 
Designed for the wlcg data management, It offers an extensible plugin systems able to support new protocols.
Comment 1 Ricardo Rocha 2012-04-04 12:05:08 EDT
Hi.

I'm happy to take this up, but can you provide some details on why this is not going as an update to the 'gfal' package, which is already in Fedora?

After a quick look, the spec seems to take the code from a 'main' branch, wouldn't it be better to build from a tag instead?

The version number also looks special.

Regards,
  Ricardo
Comment 2 Adrien Devresse 2012-04-04 12:31:04 EDT
> I'm happy to take this up, but can you provide some details on why this is not
going as an update to the 'gfal' package, which is already in Fedora?

gfal 2.0 breaks API compatibility of gfal 1.0, it's a new library written from scratch.

The both can coexist and will have to coexist in order to make the migration easy.


> After a quick look, the spec seems to take the code from a 'main' branch,
wouldn't it be better to build from a tag instead


> After a quick look, the spec seems to take the code from a 'main' branch,
wouldn't it be better to build from a tag instead.

The source comes from the Source0 field, that is a tarball "tagged".

The commented link present of the spec is purely indicative and provides a direct link to the upstream of the component.
This format follow the same pattern than in the other already approved lcg-utils components : 

https://bugzilla.redhat.com/show_bug.cgi?id=790347
https://bugzilla.redhat.com/show_bug.cgi?id=768174
https://bugzilla.redhat.com/show_bug.cgi?id=768183
https://bugzilla.redhat.com/show_bug.cgi?id=768310

> The version number also looks special.

gfal 2.0 is still in pre-release and normally follows packaging name rules for pre-releases : http://fedoraproject.org/wiki/Packaging:NamingGuidelines#Pre-Release_packages
Comment 3 Adrien Devresse 2012-04-06 06:43:08 EDT
Update in order to correct a compilation problem with the rawhide :

Spec URL: http://firwen.org/home/specs/gfal2.spec
SRPM URL: http://firwen.org/home/specs/gfal2-2.0.0-0.6.beta.el5.centos.src.rpm

I add the rpmlint content too :

rpmlint output :

gfal2-core.x86_64: W: executable-stack /usr/lib64/libgfal2.so.2.0.0

    -> needed by the some parts with nested functions.

gfal2-plugin-rfio.x86_64: E: explicit-lib-dependency dpm-libs

    -> libdpm is loaded dynamically by design, the explicit dependencie is required.


13 packages and 0 specfiles checked; 1 errors, 1 warnings.
Comment 4 Ricardo Rocha 2012-04-13 14:35:45 EDT
Ok here goes a first round.

[-] MUST: rpmlint must be run on every package.
rpmlint is not silent (on the rpm packages):
gfal2.src: W: spelling-error %description -l en_US wlcg -> cowl
gfal2.x86_64: W: spelling-error %description -l en_US wlcg -> cowl
gfal2-all.x86_64: W: spelling-error Summary(en_US) gfal -> gal, goal, fall
gfal2-all.x86_64: W: spelling-error %description -l en_US gfal -> gal, goal, fall
gfal2-doc.x86_64: W: spelling-error %description -l en_US Doxygen -> Oxygen, D oxygen
gfal2-plugin-dcap.x86_64: W: spelling-error %description -l en_US gsidcap -> sidecar
gfal2-plugin-dcap.x86_64: W: spelling-error %description -l en_US dCache -> d Cache, cache, cached
gfal2-plugin-gridftp.x86_64: W: spelling-error %description -l en_US gsiftp -> sift
gfal2-plugin-lfc.x86_64: W: spelling-error %description -l en_US lfn -> NFL
gfal2-plugin-rfio.x86_64: W: spelling-error %description -l en_US dpm -> pm, dim, dam
gfal2-transfer.x86_64: W: spelling-error %description -l en_US gfal -> gal, goal, fall

These should all be due to the usage of lowercase.

gfal2.x86_64: W: no-manual-page-for-binary gfal2_version

Any chance of adding it? I know it's probably not meaningful, but it would go away :-)

gfal2-core.x86_64: W: executable-stack /usr/lib64/libgfal2.so.2.0.0

# rpmlint -I executable-stack
executable-stack:
The binary declares the stack as executable.  Executable stack is usually an
error as it is only needed if the code contains GCC trampolines or similar
constructs which uses code on the stack.  One common source for needlessly
executable stack cases are object files built from assembler files which don't
define a proper .note.GNU-stack section.

Please check.

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

[=] MUST: The package must be named according to the Package Naming Guidelines.
Sorry for pointing this again, but i find it confusing to have a new package due to a backwards incompatible change.

1) Could the library simple have a soversion major bump instead of a rename?

2) If it's a new version with big changes, then could you consider this:
http://fedoraproject.org/wiki/Packaging:NamingGuidelines#Multiple_packages_with_the_same_base_name

it suggests versioning the old one and shipping the new one with the actual name?

It looks like the rename comes from upstream anyway so it should probably go like this, just pointing this out.

[+] 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 and meet
the Licensing Guidelines.
[+] MUST: The License field in the package spec file must match the actual
license.
[+] 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 must be included in %doc.
[=] MUST: The spec file must be written in American English.
Very minor things, but please check:
line 42: 'it' instead of 'It'
line 43: 'system' instead of 'systems'
line 60: 'file' instead of 'files'
line 127: 'allows' instead of 'allow'

[+] MUST: The spec file for the package MUST be legible.
[+] MUST: The sources used to build the package must match the upstream source,
as provided in the spec URL.
# md5sum gfal2-2.0.0.tar.gz gfal2-2.0.0.tar.gz.srpm 
3be87c77dbaf99078552bfa96cbb97db  gfal2-2.0.0.tar.gz
3be87c77dbaf99078552bfa96cbb97db  gfal2-2.0.0.tar.gz.srpm

[+] MUST: The package must successfully compile and build into binary rpms on
at least one supported architecture.

Koji builds successful.

https://koji.fedoraproject.org/koji/taskinfo?taskID=3989055 (el5)
https://koji.fedoraproject.org/koji/taskinfo?taskID=3989059 (el6)
https://koji.fedoraproject.org/koji/taskinfo?taskID=3989050 (f16)
https://koji.fedoraproject.org/koji/taskinfo?taskID=3989064 (rawhide)

[+] MUST: If the package does not successfully compile, build or work on an
architecture, then those architectures should be listed in the spec in
ExcludeArch.
[+] MUST: All build dependencies must be listed in BuildRequires
Builds fine with mock and koji.
[+] MUST: The spec file MUST handle locales properly. This is done by using the
%find_lang macro.
[+] MUST: Every binary RPM package which stores shared library files (not just
symlinks) in any of the dynamic linker's default paths, must call ldconfig in
%post and %postun.
[+] MUST: If the package is designed to be relocatable, the packager must state
this fact in the request for review
[+] MUST: A package must own all directories that it creates. If it does not
create a directory that it uses, then it should require a package which does
create that directory.
[+] MUST: A package must not contain any duplicate files in the %files listing.
[+] MUST: Permissions on files must be set properly. Executables should be set
with executable permissions, for example. Every %files section must include a
%defattr(...) line.
[+] MUST: Each package must have a %clean section, which contains rm -rf
%{buildroot} (or $RPM_BUILD_ROOT).
[+] MUST: Each package must consistently use macros, as described in the macros
section of Packaging Guidelines.
[+] MUST: The package must contain code, or permissible content. This is
described in detail in the code vs. content section of Packaging Guidelines.
[+] MUST: Large documentation files should go in a doc subpackage.
[+] MUST: If a package includes something as %doc, it 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: Packages containing pkgconfig(.pc) files must 'Requires: pkgconfig'
(for directory ownership and usability).
[+] MUST: If a package contains library files with a suffix (e.g.
libfoo.so.1.1), then library files that end in .so (without suffix) must go in
a -devel package.
[-] MUST: In the vast majority of cases, devel packages must require the base
package using a fully versioned dependency: Requires: %{name} =
%{version}-%{release} 

You depend only on %{version}, is release missing or is there another reason?

[+] MUST: Packages must NOT contain any .la libtool archives, these should be
removed in the spec.
[+] MUST: Packages containing GUI applications must include a %{name}.desktop
file, and that file 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: At the beginning of %install, each package MUST run rm -rf
%{buildroot} (or $RPM_BUILD_ROOT).
[+] MUST: All filenames in rpm packages must be valid UTF-8.

SHOULD Items:
[+] 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.
[+] SHOULD: The description and summary sections in the package spec file
should contain translations for supported Non-English languages, if available.
[+] SHOULD: The reviewer should test that the package builds in mock.
[+] SHOULD: The package should compile and build into binary rpms on all
supported architectures.
[+] SHOULD: The reviewer should test that the package functions as described.
Very minimal test:
# /usr/bin/gfal2_version 
GFAL-client-"2.0.0"
[+] 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: The placement of pkgconfig(.pc) files depends on their usecase, and
this is usually for development purposes, so should be placed in a -devel pkg.
A reasonable exception is that the main pkg itself is a devel tool not
installed in a user runtime, e.g. gcc or gdb.
[+] SHOULD: If the package has file dependencies outside of /etc, /bin, /sbin,
/usr/bin, or /usr/sbin consider requiring the package which provides the file
instead of the file itself.
[+] SHOULD: Packages should try to preserve timestamps of original installed
files.
Comment 5 Adrien Devresse 2012-04-13 18:40:08 EDT
Thank you a lot Ricardo for this review,
I have updated the sources from your comments.

Spec URL: http://firwen.org/home/specs/gfal2.spec
SRPM URL: http://firwen.org/home/specs/gfal2-2.0.0-0.6.beta.el5.centos.src.rpm


> W: spelling-error

-> all corrected, descriptions have been updated for more explicit ones.

> gfal2.x86_64: W: no-manual-page-for-binary gfal2_version

-> done

> gfal2-core.x86_64: W: executable-stack /usr/lib64/libgfal2.so.2.0.0

GFAL 2.0 uses a lot the GCC C nested functions in the current state, the nested functions usage needs an executable-stack. This cannot be avoided.


> MUST: The package must be named according to the Package Naming Guidelines.
> Sorry for pointing this again, but i find it confusing to have a new package
> due to a backwards incompatible change.

Proceed to a so bump will break existing working packages that relies on gfal ( 1.0 ) functionalities that has been suppressed on gfal 2.0. this will probably cause more troubles than benefits.
Concerning the versioning the old gfal, several externals meta-packages ( EMI project, glite-projects ) depends directly on the gfal package names in differents project, and I wish to not not break this.
 
Indeed, several populars packages like glib -> glib2, gtk -> gtk2, sqlite -> sqlite2, glade -> glade2, ... etc.. proceed in the same way than gfal -> gfal2.
I think that the changes between gfal 1.0 and gfal 2.0 are too big to be considered like a simple update, or a transparent name swap.


> MUST: In the vast majority of cases, devel packages must require the base
> package using a fully versioned dependency: Requires: %{name} =
> %{version}-%{release} 

-> corrected too.

Thank you again.
Comment 6 Ricardo Rocha 2012-04-14 12:42:06 EDT
Hi.

(In reply to comment #5)
> Thank you a lot Ricardo for this review,
> I have updated the sources from your comments.
> 
> Spec URL: http://firwen.org/home/specs/gfal2.spec
> SRPM URL: http://firwen.org/home/specs/gfal2-2.0.0-0.6.beta.el5.centos.src.rpm
> 
> 
> > W: spelling-error
> 
> -> all corrected, descriptions have been updated for more explicit ones.
> 
> > gfal2.x86_64: W: no-manual-page-for-binary gfal2_version
> 
> -> done

A patch would have been fine too. I see you updated the tarball without changing the version - probably not a good idea to do it again i guess, otherwise you'll get inconsistencies between what is pointed by the spec and what's in the srpm.

If you're building the tar upstream from an evolving branch, consider adding a date, as in:
http://fedoraproject.org/wiki/Packaging:SourceURL#Using_Revision_Control

I think it would be cleaner, it will help you debug later.
 
> > gfal2-core.x86_64: W: executable-stack /usr/lib64/libgfal2.so.2.0.0
> 
> GFAL 2.0 uses a lot the GCC C nested functions in the current state, the nested
> functions usage needs an executable-stack. This cannot be avoided.

Ok, i'll let you decide if you want to add a bug upstream to fix it later.

> > MUST: The package must be named according to the Package Naming Guidelines.
> > Sorry for pointing this again, but i find it confusing to have a new package
> > due to a backwards incompatible change.
> 
> Proceed to a so bump will break existing working packages that relies on gfal (
> 1.0 ) functionalities that has been suppressed on gfal 2.0. this will probably
> cause more troubles than benefits.
> Concerning the versioning the old gfal, several externals meta-packages ( EMI
> project, glite-projects ) depends directly on the gfal package names in
> differents project, and I wish to not not break this.
> 
> Indeed, several populars packages like glib -> glib2, gtk -> gtk2, sqlite ->
> sqlite2, glade -> glade2, ... etc.. proceed in the same way than gfal -> gfal2.
> I think that the changes between gfal 1.0 and gfal 2.0 are too big to be
> considered like a simple update, or a transparent name swap.

Ok.

> 
> > MUST: In the vast majority of cases, devel packages must require the base
> > package using a fully versioned dependency: Requires: %{name} =
> > %{version}-%{release} 
> 
> -> corrected too.

You seem to have added for all but gfal2 and gfal2-transfer. Maybe add it there too?

Let me know what you think, this should be pretty much done.

Regards,
  Ricardo

> 
> Thank you again.
Comment 7 Adrien Devresse 2012-04-14 13:15:50 EDT
Updated from the comments :

Spec URL: http://firwen.org/home/specs/gfal2.spec
SRPM URL: http://firwen.org/home/specs/gfal2-2.0.0-0.6.beta.el5.centos.src.rpm

> If you're building the tar upstream from an evolving branch, consider adding a
> date, as in:
> http://fedoraproject.org/wiki/Packaging:SourceURL#Using_Revision_Control
> 
> I think it would be cleaner, it will help you debug later.

Thank you for the advice :)
I will act like this in my next reviews.

> You seem to have added for all but gfal2 and gfal2-transfer. Maybe add it there
> too?

Corrected .

Regards,

Adrien
Comment 8 Adrien Devresse 2012-04-15 10:16:46 EDT
Updated with versionning of the src.rpm / tarball in snapshots :

Spec URL: http://firwen.org/home/specs/gfal2.spec
SRPM URL: http://firwen.org/home/specs/gfal2-2.0.0-0.6.2012041515snap.el5.centos.src.rpm

Thank you,

Adrien.
Comment 9 Ricardo Rocha 2012-04-15 17:46:33 EDT
Looks better now.

One very last thing i noticed is a gfal_2_0_dev dir inside the tarball that looks pointless, you might want to report it.

APPROVED.
Comment 10 Adrien Devresse 2012-04-15 17:50:10 EDT
Thank you :)
Comment 11 Adrien Devresse 2012-04-15 17:54:20 EDT
New Package SCM Request
=======================
Package Name: gfal2
Short Description: Grid file access library 2.0
Owners: adev
Branches: f15 f16 f17 el6 el5
InitialCC:
Comment 12 Gwyn Ciesla 2012-04-15 20:43:36 EDT
Git done (by process-git-requests).

Ricardo, please take ownership of review BZs, thanks!
Comment 13 Fedora Update System 2012-04-16 03:23:15 EDT
gfal2-2.0.0-0.6.2012041515snap.el5 has been submitted as an update for Fedora EPEL 5.
https://admin.fedoraproject.org/updates/gfal2-2.0.0-0.6.2012041515snap.el5
Comment 14 Fedora Update System 2012-04-16 03:34:45 EDT
gfal2-2.0.0-0.6.2012041515snap.el6 has been submitted as an update for Fedora EPEL 6.
https://admin.fedoraproject.org/updates/gfal2-2.0.0-0.6.2012041515snap.el6
Comment 15 Fedora Update System 2012-04-16 03:47:46 EDT
gfal2-2.0.0-0.6.2012041515snap.fc16 has been submitted as an update for Fedora 16.
https://admin.fedoraproject.org/updates/gfal2-2.0.0-0.6.2012041515snap.fc16
Comment 16 Fedora Update System 2012-04-16 03:55:25 EDT
gfal2-2.0.0-0.6.2012041515snap.fc17 has been submitted as an update for Fedora 17.
https://admin.fedoraproject.org/updates/gfal2-2.0.0-0.6.2012041515snap.fc17
Comment 17 Fedora Update System 2012-04-16 05:24:51 EDT
gfal2-2.0.0-0.6.2012041515snap.fc15 has been submitted as an update for Fedora 15.
https://admin.fedoraproject.org/updates/gfal2-2.0.0-0.6.2012041515snap.fc15
Comment 18 Fedora Update System 2012-04-16 13:56:41 EDT
gfal2-2.0.0-0.6.2012041515snap.el5 has been pushed to the Fedora EPEL 5 testing repository.
Comment 19 Fedora Update System 2012-05-02 16:30:56 EDT
gfal2-2.0.0-0.6.2012041515snap.el6 has been pushed to the Fedora EPEL 6 stable repository.
Comment 20 Fedora Update System 2012-05-02 16:31:46 EDT
gfal2-2.0.0-0.6.2012041515snap.el5 has been pushed to the Fedora EPEL 5 stable repository.
Comment 21 Fedora Update System 2012-05-02 16:53:07 EDT
gfal2-2.0.0-0.6.2012041515snap.fc17 has been pushed to the Fedora 17 stable repository.
Comment 22 Fedora Update System 2012-05-03 03:21:45 EDT
gfal2-2.0.0-0.6.2012041515snap.fc16 has been pushed to the Fedora 16 stable repository.
Comment 23 Fedora Update System 2012-05-03 03:27:08 EDT
gfal2-2.0.0-0.6.2012041515snap.fc15 has been pushed to the Fedora 15 stable repository.

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