Bug 742189

Summary: Review Request: rubygem-webmock - Library for stubbing HTTP requests in Ruby
Product: [Fedora] Fedora Reporter: Mo Morsi <mmorsi>
Component: Package ReviewAssignee: James Laska <jlaska>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: jlaska, jturner, notting, package-review, tdawson, vondruch
Target Milestone: ---Flags: jlaska: fedora-review+
gwync: fedora-cvs+
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: rubygem-webmock-1.7.6-2.fc16 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-10-25 03:23:00 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 743402    

Description Mo Morsi 2011-09-29 10:52:38 UTC
Spec URL: http://mo.morsi.org/files/rpms/rubygem-webmock.spec
SRPM URL:
http://mo.morsi.org/files/rpms/rubygem-webmock-1.7.6-1.fc15.src.rpm
Koji Build: http://koji.fedoraproject.org/koji/taskinfo?taskID=3388044

Description: 
WebMock allows stubbing HTTP requests and setting expectations on HTTP requests.

Comment 1 James Laska 2011-09-30 19:03:46 UTC
Taking review ownership.  This is my first rubygem package review.  I've done my best to apply the ruby packaging guidelines (https://fedoraproject.org/wiki/Packaging:Ruby).  However, I'm not the authority on rubygem's, so we can certainly work through any issues raised.


> [ WARN ] MUST: rpmlint must be run on every package

rubygem-webmock.noarch: W: doc-file-dependency /usr/lib/ruby/gems/1.8/gems/webmock-1.7.6/Rakefile /usr/bin/env

From rpmlint source ... '''An included file marked as %doc creates a possible additional dependency in the package.  Usually, this is not wanted and may be caused by eg. example scripts with executable bits set included in the package's documentation.'''

rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/RequestSignature/eql%3f-i.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/HeadersPattern/matches%3f-i.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/Curl/WebMockCurlEasy/put_data_with_webmock%3d-i.yaml %3d
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/HttpLibAdapters/NetHttpAdapter/const_defined%3f-c.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/allow_net_connect%21-c.yaml %21
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/Curl/WebMockCurlEasy/delete_with_webmock%3d-i.yaml %3d
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/WebMockMatcher/matches%3f-i.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/RequestPatternMatcher/does_not_match%3f-i.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/URIStringPattern/matches%3f-i.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/Curl/WebMockCurlEasy/post_body_with_webmock%3d-i.yaml %3d
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/CallbackRegistry/any_callbacks%3f-c.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/Curl/WebMockCurlEasy/head%3d-i.yaml %3d
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/net_connect_allowed%3f-c.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/StubRegistry/reset%21-i.yaml %21
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/Curl/WebMockCurlEasy/delete%3d-i.yaml %3d
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/Curl/WebMockCurlEasy/head_with_webmock%3d-i.yaml %3d
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/HttpLibAdapters/TyphoeusAdapter/enable%21-c.yaml %21
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/HttpLibAdapters/CurbAdapter/enable%21-c.yaml %21
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/StubRegistry/registered_request%3f-i.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/RequestExecutionVerifier/does_not_match%3f-i.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/MethodPattern/matches%3f-i.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/URIRegexpPattern/matches%3f-i.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/HttpLibAdapters/HTTPClientAdapter/disable%21-c.yaml %21
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/Curl/WebMockCurlEasy/post_body%3d-i.yaml %3d
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/RequestRegistry/reset%21-i.yaml %21
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/Response/exception%3d-i.yaml %3d
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/RequestStub/matches%3f-i.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/RequestSignature/url_encoded%3f-i.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/Response/body%3d-i.yaml %3d
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/HttpLibAdapters/NetHttpAdapter/enable%21-c.yaml %21
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/RequestStub/has_responses%3f-i.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/Response/%3d%3d-i.yaml %3d
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/Response/%3d%3d-i.yaml %3d
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/HttpLibAdapters/TyphoeusAdapter/disabled%3f-c.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/HttpLibAdapters/TyphoeusAdapter/disable%21-c.yaml %21
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/BodyPattern/matches%3f-i.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/HttpLibAdapters/NetHttpAdapter/disable%21-c.yaml %21
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/RequestPattern/matches%3f-i.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/RequestPatternMatcher/matches%3f-i.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/HttpLibAdapters/CurbAdapter/disable%21-c.yaml %21
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/disable%21-c.yaml %21
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/Response/headers%3d-i.yaml %3d
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/HttpLibAdapters/EmHttpRequestAdapter/enable%21-c.yaml %21
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/registered_request%3f-c.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/RequestSignature/headers%3d-i.yaml %3d
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/HttpLibAdapters/PatronAdapter/enable%21-c.yaml %21
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/WebMockMatcher/does_not_match%3f-i.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/disable_net_connect%21-c.yaml %21
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/Util/HashKeysStringifier/stringify_keys%21-c.yaml %21
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/HttpLibAdapters/EmHttpRequestAdapter/disable%21-c.yaml %21
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/ResponsesSequence/end%3f-i.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/Response/options%3d-i.yaml %3d
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/HttpLibAdapters/HTTPClientAdapter/enable%21-c.yaml %21
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/is_uri_localhost%3f-c.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/HttpLibAdapters/PatronAdapter/disable%21-c.yaml %21
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/RequestExecutionVerifier/matches%3f-i.yaml %3f
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/reset%21-c.yaml %21
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/enable%21-c.yaml %21
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/Response/status%3d-i.yaml %3d
rubygem-webmock-doc.noarch: W: unexpanded-macro /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/Curl/WebMockCurlEasy/put_data%3d-i.yaml %3d
3 packages and 1 specfiles checked; 0 errors, 61 warnings.

From rpmlint source ... '''This package contains a file whose path contains something that looks like an unexpanded macro; this is often the sign of a misspelling. Please check your specfile.'''


> [  OK  ] MUST: The package must be named according to the Package Naming 
>          Guidelines
> [  OK  ] MUST: The spec file name must match the base package %{name} [...]
> [  OK  ] MUST: The package must meet the Packaging Guidelines
> [  OK  ] MUST: The package must be licensed with a Fedora approved license
>          and meet the Licensing Guidelines
> [ FAIL ] MUST: The License field in the package spec file must match the 
>          actual license

The upstream LICENSE file seems to indicate MIT, does this need to be updated?

https://github.com/bblimke/webmock/blob/master/LICENSE
https://secure.wikimedia.org/wikipedia/en/wiki/MIT_License#License_terms

> [ WARN ] 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

Note, there are too many files listed as %doc.  For example, the Rakefile probably shouldn't be a %doc.  Maybe the same with other source code?

%exclude %{geminstdir}/Rakefile

> [  OK  ] MUST: The spec file must be written in American English.
> [  OK  ] MUST: The spec file for the package MUST be legible.
> [  OK  ] MUST: The sources used to build the package must match the upstream 
>          source, as provided in the spec URL. Reviewers should use md5sum for 
>          this task. If no upstream URL can be specified for this package, 
>          please see the Source URL Guidelines for how to deal with this.

5ff10679f8e2865471fc9f9ae80dd2c5  webmock-1.7.6.gem
5ff10679f8e2865471fc9f9ae80dd2c5  webmock-rpm-1.7.6.gem

> [  OK  ] MUST: The package MUST successfully compile and build into binary 
>          rpms on at least one primary architecture

Task info: http://koji.fedoraproject.org/koji/taskinfo?taskID=3394322

> [  NA  ] 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. Each architecture listed in ExcludeArch MUST 
>          have a bug filed in bugzilla, describing the reason that the package 
>          does not compile/build/work on that architecture. The bug number MUST 
>          be placed in a comment, next to the corresponding ExcludeArch line
> [  OK  ] MUST: All build dependencies must be listed in BuildRequires, except 
>          for any that are listed in the exceptions section of the Packaging 
>          Guidelines ; inclusion of those as BuildRequires is optional. Apply 
>          common sense.
> [  NA  ] MUST: The spec file MUST handle locales properly. This is done by 
>          using the %find_lang macro. Using %{_datadir}/locale/* is strictly 
>          forbidden
> [  NA  ] MUST: Every binary RPM package (or subpackage) which stores shared 
>          library files (not just symlinks) in any of the dynamic linker's 
>          default paths, must call ldconfig in %post and %postun.
> [  NA  ] MUST: If the package is designed to be relocatable, the packager must 
>          state this fact in the request for review, along with the 
>          rationalization for relocation of that specific package. Without 
>          this, use of Prefix: /usr is considered a blocker.
> [  OK  ] 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.
> [  OK  ] MUST: A package must not contain any duplicate files in the %files 
>          listing.
> [ FAIL ] 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.
> [  NA  ] MUST: Each package must have a %clean section, which contains rm -rf
>          %{buildroot} (or $RPM_BUILD_ROOT).

No longer applies for F13 or newer

> [  OK  ] MUST: Each package must consistently use macros.
> [  OK  ] MUST: The package must contain code, or permissable content.
> [  OK  ] MUST: Large documentation files must go in a -doc subpackage. (The 
>          definition of large is left up to the packager's best judgement, but 
>          is not restricted to size. Large can refer to either size or 
>          quantity).
> [  OK  ] MUST: If a package includes something as %doc, it must not affect the 
>          runtime of the application. To summarize: If it is in %doc, the 
>          program must run properly if it is not present.
> [  OK  ] MUST: Header files must be in a -devel package.
> [  OK  ] MUST: Static libraries must be in a -static package.
> [  OK  ] MUST: Packages containing pkgconfig(.pc) files must 'Requires: 
>          pkgconfig' (for directory ownership and usability).
> [  NA  ] 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.
> [  NA  ] MUST: In the vast majority of cases, devel packages must require the 
>          base package using a fully versioned dependency: Requires: %{name} =
>          %{version}-%{release}
> [  NA  ] MUST: Packages must NOT contain any .la libtool archives, these must 
>          be removed in the spec if they are built.
> [  NA  ] 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. If you feel that your 
>          packaged GUI application does not need a .desktop file, you must put 
>          a comment in the spec file with your explanation.
> [  NA  ] MUST: Packages must not own files or directories already owned by 
>          other packages. The rule of thumb here is that the first package to 
>          be installed should own the files or directories that other packages 
>          may rely upon. This means, for example, that no package in Fedora 
>          should ever share ownership with any of the files or directories 
>          owned by the filesystem or man package. If you feel that you have a 
>          good reason to own a file or directory that another package owns, 
>          then please present that at package review time.
> [ FAIL ] MUST: At the beginning of %install, each package MUST run rm -rf
>          %{buildroot} (or $RPM_BUILD_ROOT).

Fixed, see http://fpaste.org/GNSM/

> [  OK  ] MUST: All filenames in rpm packages must be valid UTF-8.


== Ruby requirements ==
> [  OK  ] - Each Ruby package must indicate the Ruby ABI version it depends on with a line like 
> [  OK  ] - Pure Ruby packages must be built as noarch packages. 
> [ WARN ] - The Ruby library files in a pure Ruby package must be placed into Config::CONFIG["sitelibdir"] . The specfile must get that path using %{!?ruby_sitelib: %global ruby_sitelib %(ruby -rrbconfig -e 'puts Config::CONFIG["sitelibdir"] ')}

The specfile is using a different method for locating /usr/lib/ruby/*.  Should it be using %{ruby_sitelib} instead?  Or does this not apply since this is providing a rubygem?

> [  NA  ] - For packages with binary content, e.g., database drivers or any other Ruby bindings to C libraries, the package must be architecture specific. 
> [  OK  ] - Packages that contain Ruby Gems must be called rubygem-%{gemname} where gemname is the name from the Gem's specification.
> [  OK  ] - The Source of the package must be the full URL to the released Gem archive; the version of the package must be the Gem's version

Source0: http://rubygems.org/gems/%{gemname}-%{version}.gem

> [  OK  ] - The package must have a Requires and a BuildRequires on rubygems
> [  OK  ] - The package must provide rubygem(%{gemname}) where gemname is the name from the Gem's specification. For every dependency on a Gem named gemdep, the package must contain a Requires on rubygem(%{gemdep}) with the same version constraints as the Gem
> [ WARN ] - The %prep and %build sections of the specfile should be empty.

%build is empty, %prep is not ... I've adjusted per the ruby guidelines slightly.  However this is a *should* requirement, not a *must*.  

> [  OK  ] - The Gem must be installed into %{gemdir} defined as %global gemdir %(ruby -rubygems -e 'puts Gem::dir' 2>/dev/null)
> [ FAIL ] - The install should be performed with the command 'gem install --local --install-dir %{buildroot}%{gemdir} --force %{SOURCE0}'

This command is currently used in the %prep.  I've adjusted slighty to accommodate the *should* requirement.  Feel free to use if desired.

http://fpaste.org/GNSM/

> [  OK  ] - The package must own the following files and directories: 
%{gemdir}/gems/%{gemname}-%{version}/
%{gemdir}/cache/%{gemname}-%{version}.gem
%{gemdir}/specifications/%{gemname}-%{version}.gemspec

> [  NA  ] - Architecture-specific content must not be installed into %{gemdir}
> [  OK  ] - If the Gem only contains pure Ruby code, it must be marked as BuildArch: noarch. If the Gem contains binary content (e.g., for a database driver), it must be marked as architecture specific, and all architecture specific content must be moved from the %{gemdir} to the [#ruby_sitearch %{ruby_sitearch} directory] during %install

Comment 2 Mo Morsi 2011-10-03 11:20:56 UTC
New Spec / SPRM:


Spec URL: http://mo.morsi.org/files/rpms/rubygem-webmock.spec
SRPM URL:
http://mo.morsi.org/files/rpms/rubygem-webmock-1.7.6-2.fc15.src.rpm


> rubygem-webmock.noarch: W: doc-file-dependency
> /usr/lib/ruby/gems/1.8/gems/webmock-1.7.6/Rakefile /usr/bin/env
> 
> From rpmlint source ... '''An included file marked as %doc creates a possible
> additional dependency in the package.  Usually, this is not wanted and may be
> caused by eg. example scripts with executable bits set included in the
> package's documentation.'''

Fixed, unmarked Rakefile as doc. Also changed /usr/bin/env rake to /usr/bin/rake

> 
> rubygem-webmock-doc.noarch: W: unexpanded-macro
> /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/RequestSignature/eql%3f-i.yaml
> %3f
> <snip>
> 
> From rpmlint source ... '''This package contains a file whose path contains
> something that looks like an unexpanded macro; this is often the sign of a
> misspelling. Please check your specfile.'''
> 

These can be ignored, they occur in any rubygem that ships ri documentation


> > [ FAIL ] MUST: The License field in the package spec file must match the 
> >          actual license
> 
> The upstream LICENSE file seems to indicate MIT, does this need to be updated?
>

Fixed
 

> Note, there are too many files listed as %doc.  For example, the Rakefile
> probably shouldn't be a %doc.  Maybe the same with other source code?
> 
> %exclude %{geminstdir}/Rakefile
>

Unmarked Rakefile as doc, the others are appropriately marked as doc (include tests and such)

 

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

This is no longer needed

http://fedoraproject.org/wiki/Packaging/Guidelines#File_Permissions


> > [ FAIL ] MUST: At the beginning of %install, each package MUST run rm -rf
> >          %{buildroot} (or $RPM_BUILD_ROOT).
> 
> Fixed, see http://fpaste.org/GNSM/
>

This is no longer needed / should not be present

http://fedoraproject.org/wiki/Packaging/Guidelines#BuildRoot_tag



> > [ WARN ] - The Ruby library files in a pure Ruby package must be placed into Config::CONFIG["sitelibdir"] . The specfile must get that path using %{!?ruby_sitelib: %global ruby_sitelib %(ruby -rrbconfig -e 'puts Config::CONFIG["sitelibdir"] ')}
> 
> The specfile is using a different method for locating /usr/lib/ruby/*.  Should
> it be using %{ruby_sitelib} instead?  Or does this not apply since this is
> providing a rubygem?
> 

Yes according to the Fedora gem packaging guidelines, we define gemdir and geminstdir correctly


http://fedoraproject.org/wiki/Packaging:Ruby#Ruby_Gems


> > [ WARN ] - The %prep and %build sections of the specfile should be empty.
> 
> %build is empty, %prep is not ... I've adjusted per the ruby guidelines
> slightly.  However this is a *should* requirement, not a *must*.  
> 

I would prefer to leave it as it is. The reason being if we ever have to patch the gem, the gem install needs to occur in the %prep section before we can run the %patch commands there as well.


> > [ FAIL ] - The install should be performed with the command 'gem install --local --install-dir %{buildroot}%{gemdir} --force %{SOURCE0}'
> 
> This command is currently used in the %prep.  I've adjusted slighty to
> accommodate the *should* requirement.  Feel free to use if desired.
> 
> http://fpaste.org/GNSM/
>

Again would prefer to leave as is unless this is a major blocker.

Thank you greatly for the review!

Comment 3 James Laska 2011-10-03 14:16:23 UTC
(In reply to comment #2)
> New Spec / SPRM:
> 
> 
> Spec URL: http://mo.morsi.org/files/rpms/rubygem-webmock.spec
> SRPM URL:
> http://mo.morsi.org/files/rpms/rubygem-webmock-1.7.6-2.fc15.src.rpm

$ rpmlint rubygem-webmock.spec rubygem-webmock-1.7.6-2.fc15.src.rpm rubygem-webmock-1.7.6-2.fc15.noarch.rpm rubygem-webmock-doc-1.7.6-2.fc15.noarch.rpm | grep -v "unexpanded-macro"
3 packages and 1 specfiles checked; 0 errors, 60 warnings.

rpmlint looks good, excluding the 'unexpanded-macro' warning.

> > rubygem-webmock.noarch: W: doc-file-dependency
> > /usr/lib/ruby/gems/1.8/gems/webmock-1.7.6/Rakefile /usr/bin/env
> > 
> > From rpmlint source ... '''An included file marked as %doc creates a possible
> > additional dependency in the package.  Usually, this is not wanted and may be
> > caused by eg. example scripts with executable bits set included in the
> > package's documentation.'''
> 
> Fixed, unmarked Rakefile as doc. Also changed /usr/bin/env rake to
> /usr/bin/rake


Fix confirmed in latest spec/packages.

> > rubygem-webmock-doc.noarch: W: unexpanded-macro
> > /usr/lib/ruby/gems/1.8/doc/webmock-1.7.6/ri/WebMock/RequestSignature/eql%3f-i.yaml
> > %3f
> > <snip>
> > 
> > From rpmlint source ... '''This package contains a file whose path contains
> > something that looks like an unexpanded macro; this is often the sign of a
> > misspelling. Please check your specfile.'''
> > 
> 
> These can be ignored, they occur in any rubygem that ships ri documentation

Agreed, just a warning and can be ignored.

> > > [ FAIL ] MUST: The License field in the package spec file must match the 
> > >          actual license
> > 
> > The upstream LICENSE file seems to indicate MIT, does this need to be updated?
> >
> 
> Fixed

Fix confirmed in latest spec/packages.

> > Note, there are too many files listed as %doc.  For example, the Rakefile
> > probably shouldn't be a %doc.  Maybe the same with other source code?
> > 
> > %exclude %{geminstdir}/Rakefile
> >
> 
> Unmarked Rakefile as doc, the others are appropriately marked as doc (include
> tests and such)

Gotcha, thanks for explaining.

> > > [ FAIL ] 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.
> 
> This is no longer needed
> 
> http://fedoraproject.org/wiki/Packaging/Guidelines#File_Permissions

Thanks, I need to update my checklist.
 
> > > [ FAIL ] MUST: At the beginning of %install, each package MUST run rm -rf
> > >          %{buildroot} (or $RPM_BUILD_ROOT).
> > 
> > Fixed, see http://fpaste.org/GNSM/
> >
> 
> This is no longer needed / should not be present
> 
> http://fedoraproject.org/wiki/Packaging/Guidelines#BuildRoot_tag
> 
> 
> 
> > > [ WARN ] - The Ruby library files in a pure Ruby package must be placed into Config::CONFIG["sitelibdir"] . The specfile must get that path using %{!?ruby_sitelib: %global ruby_sitelib %(ruby -rrbconfig -e 'puts Config::CONFIG["sitelibdir"] ')}
> > 
> > The specfile is using a different method for locating /usr/lib/ruby/*.  Should
> > it be using %{ruby_sitelib} instead?  Or does this not apply since this is
> > providing a rubygem?
> > 
> 
> Yes according to the Fedora gem packaging guidelines, we define gemdir and
> geminstdir correctly
> 
> 
> http://fedoraproject.org/wiki/Packaging:Ruby#Ruby_Gems

Gotcha
 
> > > [ WARN ] - The %prep and %build sections of the specfile should be empty.
> > 
> > %build is empty, %prep is not ... I've adjusted per the ruby guidelines
> > slightly.  However this is a *should* requirement, not a *must*.  
> > 
> 
> I would prefer to leave it as it is. The reason being if we ever have to patch
> the gem, the gem install needs to occur in the %prep section before we can run
> the %patch commands there as well.

No objections, this shows up as a "should" requirement, and is entirely up to the maintainer in my opinion.

> > > [ FAIL ] - The install should be performed with the command 'gem install --local --install-dir %{buildroot}%{gemdir} --force %{SOURCE0}'
> > 
> > This command is currently used in the %prep.  I've adjusted slighty to
> > accommodate the *should* requirement.  Feel free to use if desired.
> > 
> > http://fpaste.org/GNSM/
> >
> Again would prefer to leave as is unless this is a major blocker.

Understood.  Makes sense given your comments about applying patches.

> Thank you greatly for the review!

Anytime.  

From what I can tell, everything else looks good with the packages posted in comment#2.  I approve this review request.

Comment 4 Vít Ondruch 2011-10-03 15:27:17 UTC
I have few suggestions:

* Please check duplicated "Requires: rubygem(addressable)"
* Please execute test suite if available upstream.
* I would suggest to move following files into -doc subpackage:

%{geminstdir}/Gemfile
%{geminstdir}/Rakefile
%doc %{geminstdir}/minitest
%doc %{geminstdir}/test
%doc %{geminstdir}/spec
%doc %{geminstdir}/%{gemname}.gemspec
%doc %{geminstdir}/CHANGELOG.md
%doc %{geminstdir}/Guardfile

Comment 5 Mo Morsi 2011-10-03 18:42:52 UTC
Thanks for the review. Will look into implementing the additional suggestions before pushing.

New Package SCM Request
=======================
Package Name: rubygem-webmock
Short Description: Library for stubbing HTTP requests in Ruby
Owners: mmorsi
Branches: f16
InitialCC:

Comment 6 Gwyn Ciesla 2011-10-03 18:46:22 UTC
Git done (by process-git-requests).

Comment 7 Fedora Update System 2011-10-03 19:18:14 UTC
rubygem-webmock-1.7.6-2.fc16 has been submitted as an update for Fedora 16.
https://admin.fedoraproject.org/updates/rubygem-webmock-1.7.6-2.fc16

Comment 8 Fedora Update System 2011-10-04 20:51:04 UTC
Package rubygem-webmock-1.7.6-2.fc16:
* should fix your issue,
* was pushed to the Fedora 16 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing rubygem-webmock-1.7.6-2.fc16'
as soon as you are able to.
Please go to the following url:
https://admin.fedoraproject.org/updates/rubygem-webmock-1.7.6-2.fc16
then log in and leave karma (feedback).

Comment 9 Fedora Update System 2011-10-25 03:23:00 UTC
rubygem-webmock-1.7.6-2.fc16 has been pushed to the Fedora 16 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 10 Troy Dawson 2014-08-01 13:38:46 UTC
Package Change Request
======================
Package Name: rubygem-webmock
New Branches: epel7
Owners: tdawson

Comment 11 Gwyn Ciesla 2014-08-01 16:05:21 UTC
Git done (by process-git-requests).