Bug 993482 - Review Request: rubygem-geoip - Search a GeoIP database for an IP address
Summary: Review Request: rubygem-geoip - Search a GeoIP database for an IP address
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Ken Dreyer
QA Contact: Jan Včelák
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2013-08-06 03:17 UTC by Ken Dreyer
Modified: 2013-09-29 01:24 UTC (History)
4 users (show)

Fixed In Version: rubygem-geoip-1.3.0-2.fc19
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2013-09-29 01:24:31 UTC
Type: ---
Embargoed:
jv+fedora: fedora-review+
gwync: fedora-cvs+


Attachments (Terms of Use)

Description Ken Dreyer 2013-08-06 03:17:21 UTC
Spec URL: http://ktdreyer.fedorapeople.org/reviews/rubygem-geoip.spec
SRPM URL: http://ktdreyer.fedorapeople.org/reviews/rubygem-geoip-1.2.2-1.fc20.src.rpm
Description: GeoIP searches a GeoIP database for a given host or IP address, and returns information about the country where the IP address is allocated, and the city, ISP and other information, if you have that database version.
Fedora Account System Username: ktdreyer

$ rpmlint rubygem-geoip-1.2.2-1.fc20.src.rpm 
1 packages and 0 specfiles checked; 0 errors, 0 warnings.

Rawhide scratch build: http://koji.fedoraproject.org/koji/taskinfo?taskID=5781852

Comment 1 Ken Dreyer 2013-09-12 23:51:06 UTC
Update to latest upstream:

* Thu Sep 12 2013 Ken Dreyer <ktdreyer> - 1.3.0-1
- Update to 1.3.0
- Include LGPLv2+ license text

Spec URL: http://ktdreyer.fedorapeople.org/reviews/rubygem-geoip.spec
SRPM URL: http://ktdreyer.fedorapeople.org/reviews/rubygem-geoip-1.3.0-1.fc21.src.rpm

Comment 2 Jan Včelák 2013-09-13 06:26:20 UTC
I will do the review of this package.

Comment 3 Jan Včelák 2013-09-13 08:54:20 UTC
Package Review
==============

Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated
[ ] = Manual review needed


Issues:
=======

Please, fix or justify following issues. Then the package can be approved.

Issues on fedora-review checklist (see the details below):

[!]: Package must own all directories that it creates.
[!]: Requires correct, justified where necessary.
[!]: All build dependencies are listed in BuildRequires, except for any that
[!]: Permissions on files are set properly.
[!]: Final provides and requires are sane (see attachments).

Other issues (maybe pedantic):

[!]: Directive %exclude is usually used when the file is covered by other
     match in %files section. This is not the case. 'rm' can be used after
     %build or %install instead.
[!]: The presence of tests in the -doc subpackage is IMHO wrong. I would
     leave them in the main package.


===== MUST items =====

Generic:
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[x]: License field in the package spec file matches the actual license.
[x]: License file installed when any subpackage combination is installed.
[!]: Package must own all directories that it creates.

     Directory '/usr/share/gems/doc' is not owned. In addition, i think
     the documentation should be placed somewhere else.

[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[-]: Package contains desktop file if it is a GUI application.
[-]: Development files must be in a -devel package
[x]: Package uses nothing in %doc for runtime.
[x]: Package consistently uses macros (instead of hard-coded directory names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[-]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[!]: Requires correct, justified where necessary.

     There should be just (others are extra):

     Requires: ruby(release)
     Requires: rubygems

[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[x]: Package is not known to require an ExcludeArch tag.
[x]: Package complies to the Packaging Guidelines
[x]: Package successfully compiles and builds into binary rpms on at least one
     supported primary architecture.
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
[x]: 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 is included in %doc.
[x]: Package requires other packages for directories it uses.
[x]: Package does not own files or directories owned by other packages.
[!]: All build dependencies are listed in BuildRequires, except for any that
     are listed in the exceptions section of Packaging Guidelines.

     There should be just (others are extra):

     BuildRequires: rubygems-devel

[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[x]: Each %files section contains %defattr if rpm < 4.4
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Package does not contain duplicates in %files.
[!]: Permissions on files are set properly.

     License file is installed as executable.

     I think the installation of geoip binary is cryptic. I do not like
     the combination of cp, find, xargs and chmod. I would prefer
     'install -m 0755 ...'. But the result is fine, feel free to keep this
     as it is now.
     
[-]: Package use %makeinstall only when make install' ' DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: Package do not use a name that already exist
[-]: Package is not relocatable.
[x]: Sources used to build the package match the upstream source, as provided
     in the spec URL.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.
[x]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
[x]: Packages must not store files under /srv, /opt or /usr/local

Ruby:
[x]: Platform dependent files must all go under %{gem_extdir_mri}, platform
     independent under %{gem_dir}.
[x]: Gem package must not define a non-gem subpackage
[x]: Macro %{gem_extdir} is deprecated.
[x]: Gem package is named rubygem-%{gem_name}
[x]: Package contains BuildRequires: rubygems-devel.
[x]: Gem package must define %{gem_name} macro.
[x]: Pure Ruby package must be built as noarch
[x]: Package does not contain Requires: ruby(abi).
[x]: Package contains Requires: ruby(release).

===== SHOULD items =====

Generic:
[x]: If the source package does not include license text(s) as a separate file
     from upstream, the packager SHOULD query upstream to include it.
[!]: Final provides and requires are sane (see attachments).

     Final provides are sane, but rubygem(name) should not be specified
     in Provides explicitly, it is generated by rpm.

[x]: Package functions as described.
[x]: Latest version is packaged.
[-]: Package does not include license text files separate from upstream.
[-]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[x]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed files.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[x]: Reviewer should test that the package builds in mock.
[x]: Buildroot is not present
[x]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
[x]: Dist tag is present (not strictly required in GL).
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Fully versioned dependency in subpackages if applicable.
[x]: SourceX tarball generation or download is documented.
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

Ruby:
[x]: Gem should use %gem_install macro.
[x]: Specfile should use macros from rubygem-devel package.
[x]: Gem package should exclude cached Gem.
[x]: Test suite of the library should be run.

===== EXTRA items =====

Generic:
[x]: Rpmlint is run on all installed packages.
[x]: Large data in /usr/share should live in a noarch subpackage if package is
     arched.
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: rubygem-geoip-1.3.0-1.fc21.noarch.rpm
          rubygem-geoip-doc-1.3.0-1.fc21.noarch.rpm
          rubygem-geoip-1.3.0-1.fc21.src.rpm
rubygem-geoip.noarch: E: script-without-shebang /usr/share/gems/gems/geoip-1.3.0/LICENSE
rubygem-geoip.noarch: W: no-manual-page-for-binary geoip
3 packages and 0 specfiles checked; 1 errors, 1 warnings.




Rpmlint (installed packages)
----------------------------
# rpmlint rubygem-geoip-doc rubygem-geoip
rubygem-geoip.noarch: E: script-without-shebang /usr/share/gems/gems/geoip-1.3.0/LICENSE
rubygem-geoip.noarch: W: no-manual-page-for-binary geoip
2 packages and 0 specfiles checked; 1 errors, 1 warnings.
# echo 'rpmlint-done:'



Requires
--------
rubygem-geoip-doc (rpmlib, GLIBC filtered):
    rubygem-geoip

rubygem-geoip (rpmlib, GLIBC filtered):
    /usr/bin/ruby
    ruby(release)
    ruby(rubygems)



Provides
--------
rubygem-geoip-doc:
    rubygem-geoip-doc

rubygem-geoip:
    rubygem(geoip)
    rubygem-geoip



Source checksums
----------------
https://rubygems.org/gems/geoip-1.3.0.gem :
  CHECKSUM(SHA256) this package     : 235f8332706bebf05e444fec9d0764aaa72293650ffb0724a19326f1f643f763
  CHECKSUM(SHA256) upstream package : 235f8332706bebf05e444fec9d0764aaa72293650ffb0724a19326f1f643f763
https://www.gnu.org/licenses/lgpl-2.1.txt :
  CHECKSUM(SHA256) this package     : dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551
  CHECKSUM(SHA256) upstream package : dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551


Generated by fedora-review 0.5.0 (920221d) last change: 2013-08-30
Command line :/bin/fedora-review -b 993482
Buildroot used: fedora-rawhide-x86_64
Active plugins: Generic, Ruby, Shell-api
Disabled plugins: Java, C/C++, Python, SugarActivity, Perl, R, PHP
Disabled flags: EPEL5, EXARCH, DISTTAG

Comment 4 Ken Dreyer 2013-09-13 12:53:32 UTC
Thank you very much for the review.

(In reply to Jan Včelák from comment #3)
> [!]: Package must own all directories that it creates.
> 
>      Directory '/usr/share/gems/doc' is not owned.

I think this may be a bug in fedora-review? I have seen this pop up on every gem I have created and reviewed. /usr/share/gems/doc is properly owned by a package ("yum whatprovides /usr/share/gems/doc" shows "rubygems").


>      In addition, i think
>      the documentation should be placed somewhere else.

Can you help me understand what you have in mind? I'm pretty sure this is where all gems place their documentation.


> [!]: Requires correct, justified where necessary.
> 
>      There should be just (others are extra):
> 
>      Requires: ruby(release)
>      Requires: rubygems

Thanks, I've filtered out /usr/bin/ruby in 1.3.0-2.


> [!]: All build dependencies are listed in BuildRequires, except for any that
>      are listed in the exceptions section of Packaging Guidelines.
> 
>      There should be just (others are extra):
> 
>      BuildRequires: rubygems-devel

This probably needs to be fixed in gem2rpm. I've removed the extra BuildRequires in 1.3.0-2.


> [!]: Permissions on files are set properly.
> 
>      License file is installed as executable.

Great catch. Fixed.


>      I think the installation of geoip binary is cryptic. I do not like
>      the combination of cp, find, xargs and chmod. I would prefer
>      'install -m 0755 ...'. But the result is fine, feel free to keep this
>      as it is now.

I agree that it's cryptic. I'll keep it as-is for the sake of consistency with other packages. But this probably needs to be fixed in gem2rpm.


> [!]: Final provides and requires are sane (see attachments).
> 
>      Final provides are sane, but rubygem(name) should not be specified
>      in Provides explicitly, it is generated by rpm.

I experimented with this, and I cannot make RPM generate the virtual provide. When I remove the explicit Provides: rubygem(name) in the .spec, and I check the resulting binary RPM with rpm -qp --provides, I just see rubygem-geoip, not rubygem(geoip). I think this is why gem2rpm puts this into the package.



Here's the updated package:

Diff: http://fedorapeople.org/cgit/ktdreyer/public_git/rubygem-geoip.git/commit/?id=5865ec8fb6094a6483e436a6d0c571ea56d7b682

Spec URL: http://ktdreyer.fedorapeople.org/reviews/rubygem-geoip.spec
SRPM URL: http://ktdreyer.fedorapeople.org/reviews/rubygem-geoip-1.3.0-2.fc21.src.rpm

Rawhide scratch build: http://koji.fedoraproject.org/koji/taskinfo?taskID=5930798

Comment 5 Jan Včelák 2013-09-13 14:04:52 UTC
> > [!]: Package must own all directories that it creates.
> > 
> >      Directory '/usr/share/gems/doc' is not owned.
> 
> I think this may be a bug in fedora-review? I have seen this pop up on every
> gem I have created and reviewed. /usr/share/gems/doc is properly owned by a
> package ("yum whatprovides /usr/share/gems/doc" shows "rubygems").

/usr/share/gems/doc is provided by rubygems-doc, not rubygems. I'm not sure how 'yum whatprovides' work.

http://pkgs.fedoraproject.org/cgit/rubygems.git/plain/rubygems.spec contains:

%files	doc
%doc %{gem_dir}/doc

So, this issue is really not fixed.

> >      In addition, i think
> >      the documentation should be placed somewhere else.
> 
> Can you help me understand what you have in mind? I'm pretty sure this is
> where all gems place their documentation.

My fault. You are right. I have checked with other packages.

> > [!]: Requires correct, justified where necessary.
> > 
> >      There should be just (others are extra):
> > 
> >      Requires: ruby(release)
> >      Requires: rubygems
> 
> Thanks, I've filtered out /usr/bin/ruby in 1.3.0-2.

Verified, OK.

> > [!]: All build dependencies are listed in BuildRequires, except for any that
> >      are listed in the exceptions section of Packaging Guidelines.
> > 
> >      There should be just (others are extra):
> > 
> >      BuildRequires: rubygems-devel
> 
> This probably needs to be fixed in gem2rpm. I've removed the extra
> BuildRequires in 1.3.0-2.

Verified, OK.

> > [!]: Permissions on files are set properly.
> > 
> >      License file is installed as executable.
> 
> Great catch. Fixed.

Verified, OK.

> >      I think the installation of geoip binary is cryptic. I do not like
> >      the combination of cp, find, xargs and chmod. I would prefer
> >      'install -m 0755 ...'. But the result is fine, feel free to keep this
> >      as it is now.
> 
> I agree that it's cryptic. I'll keep it as-is for the sake of consistency
> with other packages. But this probably needs to be fixed in gem2rpm.

No problem, OK.

> > [!]: Final provides and requires are sane (see attachments).
> > 
> >      Final provides are sane, but rubygem(name) should not be specified
> >      in Provides explicitly, it is generated by rpm.
> 
> I experimented with this, and I cannot make RPM generate the virtual
> provide. When I remove the explicit Provides: rubygem(name) in the .spec,
> and I check the resulting binary RPM with rpm -qp --provides, I just see
> rubygem-geoip, not rubygem(geoip). I think this is why gem2rpm puts this
> into the package.

You are right. You had it correctly. Again, I checked with other packages.


To sum it up, one problem with unversioned doc directory is still present. Otherwise perfect. :-)

Comment 6 Ken Dreyer 2013-09-17 16:02:16 UTC
I've confirmed on the ruby-sig mailing list that /usr/share/gems/doc ought to be owned by the rubygems package. See bug 1008866.

I think that takes care of the remaining issues for this package.

Comment 7 Jan Včelák 2013-09-17 16:22:02 UTC
> I think that takes care of the remaining issues for this package.

And you are right. I'm not aware of any other problems.

The verdict is: ACCEPT

Comment 8 Ken Dreyer 2013-09-17 16:28:05 UTC
Thank you Jan very much!


New Package SCM Request
=======================
Package Name: rubygem-geoip
Short Description: Search a GeoIP database for an IP address
Owners: ktdreyer
Branches: f19 f20
InitialCC: ruby-sig

Comment 9 Gwyn Ciesla 2013-09-17 16:44:12 UTC
Git done (by process-git-requests).

Comment 10 Fedora Update System 2013-09-18 23:29:58 UTC
rubygem-geoip-1.3.0-2.fc20 has been submitted as an update for Fedora 20.
https://admin.fedoraproject.org/updates/rubygem-geoip-1.3.0-2.fc20

Comment 11 Fedora Update System 2013-09-18 23:31:13 UTC
rubygem-geoip-1.3.0-2.fc19 has been submitted as an update for Fedora 19.
https://admin.fedoraproject.org/updates/rubygem-geoip-1.3.0-2.fc19

Comment 12 Fedora Update System 2013-09-20 16:23:16 UTC
rubygem-geoip-1.3.0-2.fc19 has been pushed to the Fedora 19 testing repository.

Comment 13 Fedora Update System 2013-09-27 00:45:56 UTC
rubygem-geoip-1.3.0-2.fc20 has been pushed to the Fedora 20 stable repository.

Comment 14 Fedora Update System 2013-09-29 01:24:31 UTC
rubygem-geoip-1.3.0-2.fc19 has been pushed to the Fedora 19 stable repository.


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