| Summary: | Review Request: lcg-util - Command line tools for wlcg data management | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Adrien Devresse <adev88> |
| Component: | Package Review | Assignee: | Ricardo Rocha <rocha.porto> |
| Status: | CLOSED NEXTRELEASE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
| Severity: | medium | Docs Contact: | |
| Priority: | medium | ||
| Version: | rawhide | CC: | notting, package-review, pikachu.2014, rocha.porto |
| Target Milestone: | --- | Flags: | rocha.porto:
fedora-review+
gwync: fedora-cvs+ |
| Target Release: | --- | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2012-10-11 15:18:18 UTC | Type: | --- |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
|
Description
Adrien Devresse
2012-02-15 13:11:42 UTC
I will review this package. 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. 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?
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
comments about SWIG : It can compile without problem on rawhide, it is not the required version of SWIG but the minimum requirement in fact. 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. 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. 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.
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. (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. > 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 :) (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. 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: Git done (by process-git-requests). |