Bug 790805 - Review Request: lcg-util - Command line tools for wlcg data management
Summary: Review Request: lcg-util - Command line tools for wlcg data management
Keywords:
Status: CLOSED NEXTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Ricardo Rocha
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2012-02-15 13:11 UTC by Adrien Devresse
Modified: 2012-10-11 15:18 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-10-11 15:18:18 UTC
Type: ---
rocha.porto: fedora-review+
gwync: fedora-cvs+


Attachments (Terms of Use)

Description Adrien Devresse 2012-02-15 13:11:42 UTC
Spec URL: http://firwen.org/home/specs/lcg-util.spec
SRPM URL: http://firwen.org/home/specs/lcg-util-1.12.0-1.el5.centos.src.rpm
Description: The LCG Utilities package is the main end user command line tool for data management provided by LCG.

Comment 1 Mohamed El Morabity 2012-02-15 14:45:04 UTC
I will review this package.

Comment 2 Adrien Devresse 2012-03-06 09:27:23 UTC
Update with a correction on EL6 :

Spec URL: http://firwen.org/home/specs/lcg-util.spec
SRPM URL: http://firwen.org/home/specs/lcg-util-1.12.0-2.el5.centos.src.rpm
Description: The LCG Utilities package is the main end user command line tool
for data management provided by LCG.

Comment 3 Mohamed El Morabity 2012-03-12 19:48:06 UTC
Sorry for this late answer, I got really busy these last days.

Is there a particular reason for this Provides in the python subpackage?
    Provides:   %{name}-py%{python_version_nodot} = %{version}
Such Provides are not common in Fedora packages.

You can remove automake from the BuildRequires list, it's already required by libtool and voms-devel.

You *MUST* use the %configure macro, instead of calling explicitely the ./configure script:
- the macro sets the appropriate CFLAGS/CXXFLAGS to build the program
- it already set most of the options you pass to configure

By the way, I wonder why you set the following options:

* --enable-debug → the debug flags are already in RPM_OPT_FLAGS
* --enable-wall → already in RPM_OPT_FLAGS too
* --with-pythonrelease=%{python_version} → the ./configure script is able to find the defaut Python version/libs
* --with-version=%{version} / --with-release=%{release} → do you really need to set explicitely the version of lcg-util at build time? This is all but robust.

It looks like lcg-util requires an old and specific version of swig (1.3.0), obviously no more available in latest Fedora releases. Is it a real lack not to have swig support for Fedora packages?

Comment 4 Adrien Devresse 2012-03-13 09:03:18 UTC

Is there a particular reason for this Provides in the python subpackage?
    Provides:   %{name}-py%{python_version_nodot} = %{version}

-> Yes, it is a compatibility with the European project EMI. Similars things for the other EMI components ( Lcgdm, lfc, gfal ) have already been added to EPEL/fedora.


You can remove automake from the BuildRequires list, it's already required by
libtool and voms-devel.

-> done


You *MUST* use the %configure macro, instead of calling explicitely the
./configure script:
- the macro sets the appropriate CFLAGS/CXXFLAGS to build the program
- it already set most of the options you pass to configure

-> done, sorry for this.. the copy/paste kills the little cats.

* --enable-debug → the debug flags are already in RPM_OPT_FLAGS
* --enable-wall → already in RPM_OPT_FLAGS too

-> removed, too.

* --with-pythonrelease=%{python_version} → the ./configure script is able to
find the defaut Python version/libs
* --with-version=%{version} / --with-release=%{release} → do you really need to
set explicitely the version of lcg-util at build time? This is all but robust.

-> This is needed by the upstream, this software is included in differents project that are not EPEL related and this flags are still needed in these one.



I upload the updated version as soon as possible

Comment 5 Adrien Devresse 2012-03-13 09:04:13 UTC
comments about SWIG :

It can compile without problem on rawhide, it is not the required version of SWIG but the minimum requirement in fact.

Comment 6 Adrien Devresse 2012-03-13 10:29:03 UTC
Updated again 

Spec URL: http://firwen.org/home/specs/lcg-util.spec
SRPM URL: http://firwen.org/home/specs/lcg-util-1.12.0-3.el5.centos.src.rpm
Description: The LCG Utilities package is the main end user command line tool
for data management provided by LCG.

Comment 7 Adrien Devresse 2012-06-01 08:05:58 UTC
Updated again with unit tests and python26 support :

Spec URL: http://firwen.org/home/specs/lcg-util.spec
SRPM URL: firwen.org/home/specs/lcg-util-1.12.0-5.2012060109snap.el5.centos.src.rpm
Description: The LCG Utilities package is the main end user command line tool
for data management provided by LCG.

Comment 8 Ricardo Rocha 2012-06-12 09:20:54 UTC
Hi.

Here's the first go.

General comments:

- svn export comment refers to trunk. i understand you're doing a snapshot from trunk, but this should disappear and be replaced with a tag when you're done.

- requires on libs should be %{version}-%{release}, probably everywhere, more inline

- doc file not marked as doc in libs/devel/python/main, also see inline

- you have the release notes in the devel package, shouldn't it go to libs so that it is installed with all packages?

Cheers,
Ricardo

[-] MUST: rpmlint must be run on every package.

rpmlint is not silent.

lcg-util.x86_64: W: incoherent-version-in-changelog 1.12.0-5.2012060109snap ['1.12.0-5.2012060109snap.el5.centos', '1.12.0-5.2012060109snap.centos']
lcg-util-libs.x86_64: W: shared-lib-calls-exit /usr/lib64/liblcg_util.so.1.12.0 exit.5
lcg-util-python26.x86_64: W: no-documentation

The relevant one is the shared-lib-calls-exit. Any chance of this being patched?

The first one should go away when you start using a tag.

[+] 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 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.

Why not:
%doc VERSION LICENSE README
instead of:
%{_docdir}/%{name}-%{version}/VERSION
...

The same is valid for all the other doc files in the other packages, you don't use %doc.
http://fedoraproject.org/wiki/Packaging:Guidelines#Documentation

[+] 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, as provided in the spec URL.
[+] MUST: The package must successfully compile and build into binary rpms on at least one supported architecture.
[-] 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.

I see ppc listed in, but you should add additional information, and then add a bugzilla entry, as described in:
http://fedoraproject.org/wiki/Packaging:Guidelines#Architecture_Support

[+] 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.

Nothing owns %{_docdir}/%{name}-%{version}.

You can fix this by simply using %doc instead.

[+] 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} 

Please add the missing %{release}. You probably want to do the same on all the -libs dependencies.

[+] MUST: Packages must NOT contain any .la libtool archives, these should be removed in the spec.
Explicitly removed.
[=] 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.
ppc explicitly removed.
[+] SHOULD: The reviewer should test that the package functions as described.
Very basic tests done, like:
# lcg-cp
LCG_GFAL_INFOSYS is not set
usage: lcg-cp [-h,--help] [-c,--config config_file] [-n nbstreams] [-b,--nobdii] [-D,--defaultsetype se|srmv1|srmv2]
	[-T,--srcsetype se|srmv1|srmv2] [-U,--dstsetype se|srmv1|srmv2] [-s,--sst src_spacetokendesc]
	[-S,--dst dest_spacetokendesc] [--connect-timeout value] [--sendreceive-timeout value]
	[--bdii-timeout value] [--srm-timeout value] [--checksum] [--checksum-type type]
	[-v,--verbose] [-V,--vo vo] [--version]
	[--src-protocols <protocol1,protocol2,...>]
	[--dst-protocols <protocol1,protocol2,...>]
	src_file  dest_file

[+] 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.

Please see above, missing %{release} in the libs dependencies.

[+] 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.

Additional python checks:
[+] MUST: Python eggs must be built from source. They cannot simply drop an egg from upstream into the proper directory. (See prebuilt binaries Guidelines for details)
The sources do provide an egginfo directory, but it's not the one being packaged.
[+] MUST: Python eggs must not download any dependencies during the build process.
Seems to be an issue only for easy_install, not the case.
[+] MUST: When building a compat package, it must install using easy_install -m so it won't conflict with the main package.
Not a multi-version package.
[+] MUST: When building multiple versions (for a compat package) one of the packages must contain a default version that is usable via "import MODULE" with no prior setup.
Not a multi-version package.
[+] SHOULD: A package which is used by another package via an egg interface should provide egg info.
egginfo available.

Comment 9 Adrien Devresse 2012-06-12 13:31:32 UTC
Updated again from the comments 

Spec URL: http://firwen.org/home/specs/lcg-util.spec
SRPM URL: http://firwen.org/home/specs/lcg-util-1.12.0-5.2012061214snap.el5.centos.src.rpm

Description: The LCG Utilities package is the main end user command line tool
for data management provided by LCG.

> - svn export comment refers to trunk. i understand you're doing a snapshot from trunk, but this should disappear and be replaced with a tag when you're done.

The SVN export comment is just a link to the official source respository, the official sources are provided by a static tarball.
I am part of the upstream, a tag will be done as soon as the review is finished in order to integrate the review's modification directly to the trunk.

> - requires on libs should be %{version}-%{release}, probably everywhere, more inline

Done

> - doc file not marked as doc in libs/devel/python/main, also see inline

All files under a %{_docdir}/ macro as tagger like "%doc" by default.

> - you have the release notes in the devel package, shouldn't it go to libs so that it is installed with all packages?

Done 

> The relevant one is the shared-lib-calls-exit. Any chance of this being patched?

Impossible to patch in the current state without big modifications.

> Why not:
> %doc VERSION LICENSE README
> instead of:
> %{_docdir}/%{name}-%{version}/VERSION
> ...

Because my "make install" already install all the documentations in the proper place, and %{_docdir}/ already marks these files like "doc".


> I see ppc listed in, but you should add additional information, and then add > a bugzilla entry, as described in:
> http://fedoraproject.org/wiki/Packaging:Guidelines#Architecture_Support

Done, Ticket will be added after review, like specified in the process spec.

> Nothing owns %{_docdir}/%{name}-%{version}.

Fixed.

> Please add the missing %{release}. You probably want to do the same on all the -libs dependencies.

Fixed.

Comment 10 Ricardo Rocha 2012-06-12 13:48:56 UTC
(In reply to comment #9)
> Updated again from the comments 
> 
> Spec URL: http://firwen.org/home/specs/lcg-util.spec
> SRPM URL:
> http://firwen.org/home/specs/lcg-util-1.12.0-5.2012061214snap.el5.centos.src.
> rpm
> 
> Description: The LCG Utilities package is the main end user command line tool
> for data management provided by LCG.
> 
> > - svn export comment refers to trunk. i understand you're doing a snapshot from trunk, but this should disappear and be replaced with a tag when you're done.
> 
> The SVN export comment is just a link to the official source respository,
> the official sources are provided by a static tarball.
> I am part of the upstream, a tag will be done as soon as the review is
> finished in order to integrate the review's modification directly to the
> trunk.

Ok i'll check for it after, it's just confusing to have this comment there.

> > - requires on libs should be %{version}-%{release}, probably everywhere, more inline
> 
> Done
> 
> > - doc file not marked as doc in libs/devel/python/main, also see inline
> 
> All files under a %{_docdir}/ macro as tagger like "%doc" by default.
> 
> > - you have the release notes in the devel package, shouldn't it go to libs so that it is installed with all packages?
> 
> Done 
> 
> > The relevant one is the shared-lib-calls-exit. Any chance of this being patched?
> 
> Impossible to patch in the current state without big modifications.

Ok, but make sure there's a bug added upstream and put the link back here.

> > Why not:
> > %doc VERSION LICENSE README
> > instead of:
> > %{_docdir}/%{name}-%{version}/VERSION
> > ...
> 
> Because my "make install" already install all the documentations in the
> proper place, and %{_docdir}/ already marks these files like "doc".
> 
> 
> > I see ppc listed in, but you should add additional information, and then add > a bugzilla entry, as described in:
> > http://fedoraproject.org/wiki/Packaging:Guidelines#Architecture_Support
> 
> Done, Ticket will be added after review, like specified in the process spec.

I think the goal was to add a comment explaining why it doesn't build. I would replace the copy paste from the guidelines with a more detailed description of the error, which you'll be putting later in the bug anyway.

> 
> > Nothing owns %{_docdir}/%{name}-%{version}.
> 
> Fixed.
> 
> > Please add the missing %{release}. You probably want to do the same on all the -libs dependencies.
> 
> Fixed.

So two very minor things (bug reference to upstream for shared-libs-call-exit and comment with gcc error in epel 5).

And then i'll approve it.

Comment 11 Adrien Devresse 2012-06-12 14:09:09 UTC
> So two very minor things (bug reference to upstream for shared-libs-call-exit and comment with gcc error in epel 5).

Done, https://svnweb.cern.ch/trac/lcgutil/ticket/332

> I think the goal was to add a comment explaining why it doesn't build. I would > replace the copy paste from the guidelines with a more detailed description of > the error, which you'll be putting later in the bug anyway.

I tried to described it with "compilation error internal to gcc on epel 5".
It is a complexe internal compiler error with a direct dependency ( gfal ) at the linker level. 
I think that describing the full complexity of the problem in a ticket included in the spec file as soon as the review is done would be better.
I can't explain it in a other way without putting a stacktrace :)

Comment 12 Ricardo Rocha 2012-06-12 14:17:09 UTC
(In reply to comment #11)
> > So two very minor things (bug reference to upstream for shared-libs-call-exit and comment with gcc error in epel 5).
> 
> Done, https://svnweb.cern.ch/trac/lcgutil/ticket/332
> 
> > I think the goal was to add a comment explaining why it doesn't build. I would > replace the copy paste from the guidelines with a more detailed description of > the error, which you'll be putting later in the bug anyway.
> 
> I tried to described it with "compilation error internal to gcc on epel 5".
> It is a complexe internal compiler error with a direct dependency ( gfal )
> at the linker level. 
> I think that describing the full complexity of the problem in a ticket
> included in the spec file as soon as the review is done would be better.
> I can't explain it in a other way without putting a stacktrace :)

That's good enough, you can simply add the link and remove the comment later.

APPROVED.

Comment 13 Adrien Devresse 2012-06-12 14:48:49 UTC
New Package SCM Request
=======================
Package Name: lcg-util
Short Description: Command line tools for wlcg storage system 
Owners: adev
Branches: el5 el6 f15 f16 f17
InitialCC:

Comment 14 Gwyn Ciesla 2012-06-12 15:08:54 UTC
Git done (by process-git-requests).


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