Bug 823337 - Review Request: rubygem-mixlib-shellout - mixin for running external commands
Review Request: rubygem-mixlib-shellout - mixin for running external commands
Status: CLOSED CURRENTRELEASE
Product: Fedora
Classification: Fedora
Component: Package Review (Show other bugs)
rawhide
Unspecified Unspecified
unspecified Severity unspecified
: ---
: ---
Assigned To: Vít Ondruch
Fedora Extras Quality Assurance
:
Depends On:
Blocks: 823352
  Show dependency treegraph
 
Reported: 2012-05-20 20:07 EDT by Jonas Courteau
Modified: 2013-01-11 18:26 EST (History)
5 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2012-12-30 22:28:17 EST
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
vondruch: fedora‑review+
limburgher: fedora‑cvs+


Attachments (Terms of Use)

  None (edit)
Description Jonas Courteau 2012-05-20 20:07:58 EDT
Spec URL: https://raw.github.com/jcourteau/rubygems-rpms/master/fc17/rubygem-mixlib-shellout/rubygem-mixlib-shellout.spec
SRPM URL: http://rpms.courteau.org/fedora/rubygem-mixlib-shellout-1.0.0-1.fc17.src.rpm

Description: A rubygem for running external commands on Unix or Windows

This is part of a set of dependencies for rubygem-chef.  I've got about 14 packages to add, all ruby gems, and am looking for a sponsor.  Several of the packages were previously in Fedora (F11 and F12), but were removed due to lack of a maintainer.
Comment 1 David Nalley 2012-05-30 17:55:23 EDT
Jonas - I am happy to sponsor you, and thrilled that you are willing to do the work around getting chef into Fedora/EPEL. I'll start looking at this and your other packages (please remove FE-NEEDSPONSOR) from your other bugs - (unless someone else has stepped up in another bug - in which case I'll defer to them.)
Comment 2 David Nalley 2012-05-30 18:02:40 EDT
Couple of quick comments. 

Have you upstreamed your patches for tests? link? (bug report or mailing list archive link?) 

Have you filed a bug upstream for not including tests in the gem? 

OpenShift has a number of ruby packages in process as well - so please take a look at their packages and do some informal reviews (and add me to the cc-list on the bugs you do reviews on) 

--David
Comment 3 Jonas Courteau 2012-06-03 18:15:42 EDT
Excellent, thanks David.  The rest of the packages that I'm trying to get added are all linked from the comments here: https://bugzilla.redhat.com/show_bug.cgi?id=823352

I'm going to do another pass through each of these packages today to clean up a few things, including filing upstream bugs to get tests included in the gems.  It does seem that there's a bit of a trend of gems dropping their tests lately though.

I'll do look through the OpenShift packages this week as well.
Comment 4 Jonas Courteau 2012-06-04 03:16:43 EDT
Updated
-------
SPEC URL - https://raw.github.com/jcourteau/rubygems-rpms/master/fc17/rubygem-mixlib-shellout/rubygem-mixlib-shellout.spec
SRPM URL - http://rpms.courteau.org/fedora/rubygem-mixlib-shellout-1.0.0-2.fc17.src.rpm

- added upstream ticket numbers for patches
- exclude tests from final package
Comment 5 David Nalley 2012-06-04 12:33:40 EDT
[OK     ] MUST: rpmlint must be run on the source rpm and all binary rpms the
         build produces. The output should be posted in the review.(refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#rpmlint)
rpmlint ./rubygem-mixlib-shellout.spec ../SRPMS/rubygem-mixlib-shellout-1.0.0-2.fc16.src.rpm 
./rubygem-mixlib-shellout.spec: W: invalid-url Source1: rubygem-mixlib-shellout-1.0.0-specs.tgz
rubygem-mixlib-shellout.src: W: invalid-url Source1: rubygem-mixlib-shellout-1.0.0-specs.tgz
1 packages and 1 specfiles checked; 0 errors, 2 warnings.


[OK    ] MUST: The package must be named according to the
         http://fedoraproject.org/wiki/Packaging/NamingGuidelines
[OK    ] MUST: The spec file name must match the base package
         <code>%{name}</code>, in the format <code>%{name}.spec</code> unless your
         package has an exemption. (refer to
         http://fedoraproject.org/wiki/Packaging/NamingGuidelines#Spec_file_name).
[OK    ] MUST: The package must meet the
         http://fedoraproject.org/wiki/Packaging/Guidelines.
[OK    ] MUST: The package must be licensed with a Fedora approved license and
         meet the http://fedoraproject.org/wiki/Packaging/LicensingGuidelines.
[OK    ] MUST: The License field in the package spec file must match the actual
         license. (refer to
         http://fedoraproject.org/wiki/Packaging/LicensingGuidelines#ValidLicenseShortNames)
[OK    ] 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 <code>%doc</code>.(refer to
         http://fedoraproject.org/wiki/Packaging/LicensingGuidelines#License Text)
[OK    ] MUST: The spec file must be written in American English. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#summary)
[OK    ] MUST: The spec file for the package '''MUST''' be legible. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#Spec_Legibility)
[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
         http://fedoraproject.org/wiki/Packaging/SourceURL for how to deal with
         this.
md5sum mixlib-shellout-1.0.0.gem*
0e58aeae55b974aba9eb9bae0fc33bea  mixlib-shellout-1.0.0.gem
0e58aeae55b974aba9eb9bae0fc33bea  mixlib-shellout-1.0.0.gem.1

[OK    ] MUST: The package '''MUST''' successfully compile and build into
         binary rpms on at least one primary architecture. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#Architecture_Support)

http://koji.fedoraproject.org/koji/getfile?taskID=4126851

[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
         <code>ExcludeArch</code>. Each architecture listed in <code>ExcludeArch</code>
         '''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 <code>ExcludeArch</code> line.
         (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#Architecture_Build_Failures)
[OK    ] MUST: All build dependencies must be listed in
         <code>BuildRequires</code>, except for any that are listed in the
         http://fedoraproject.org/wiki/Packaging/Guidelines#Exceptions_2 section of the
         Packaging Guidelines ; inclusion of those as <code>BuildRequires</code> is
         optional. Apply common sense.
[NA    ] MUST: The spec file MUST handle locales properly. This is done by
         using the <code>%find_lang</code> macro. Using
         <code>%{_datadir}/locale/*</code> is strictly forbidden.(refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#Handling_Locale_Files)
[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 <code>%post</code> and <code>%postun</code>. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#Shared_Libraries)
[OK    ] MUST: Packages must NOT bundle copies of system libraries.(refer to
         http://fedoraproject.org/wiki/Packaging:Guidelines#Duplication_of_system_libraries)
[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. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#RelocatablePackages)
[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.  (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#FileAndDirectoryOwnership)
[OK    ] MUST: A Fedora package must not list a file more than once in the spec
         file's %files listings. (Notable exception: license texts in specific
         situations)(refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#DuplicateFiles)
[OK    ] MUST: Permissions on files must be set properly. Executables should be
         set with executable permissions, for example. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#FilePermissions)
[OK    ] MUST: Each package must consistently use macros. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#macros)
[OK    ] MUST: The package must contain code, or permissable content. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#CodeVsContent)
[NA    ] 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). (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#PackageDocumentation)
[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. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#PackageDocumentation)
[NA    ] MUST: Header files must be in a -devel package. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#DevelPackages)
[NA    ] MUST: Static libraries must be in a -static package. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#StaticLibraries)
[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. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#DevelPackages)
[OK    ] MUST: In the vast majority of cases, devel packages must require the
         base package using a fully versioned dependency: <code>Requires:
         %{name}%{?_isa} = %{version}-%{release} </code> (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#RequiringBasePackage)
[OK    ] MUST: Packages must NOT contain any .la libtool archives, these must
         be removed in the spec if they are built.(refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#StaticLibraries)
[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. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#desktop)
[OK    ] 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
         <code>filesystem</code> or <code>man</code> 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. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#FileAndDirectoryOwnership)
[OK    ] MUST: All filenames in rpm packages must be valid UTF-8. (refer to
         http://fedoraproject.org/wiki/Packaging/Guidelines#FilenameEncoding)




Some other comments: 

Why are you building before you patch? (and not in the %build section?) 
%prep needs a good lookover anyway - checkout this: 
https://fedoraproject.org/wiki/Packaging/Ruby#.25prep

Aside from that, this package looks pretty good, let me know what packages you perform reviews of and we'll move forward.
Comment 6 Vít Ondruch 2012-06-05 03:29:48 EDT
(In reply to comment #5)
> Why are you building before you patch? (and not in the %build section?) 
> %prep needs a good lookover anyway - checkout this: 
> https://fedoraproject.org/wiki/Packaging/Ruby#.25prep

99% of gems are fine with the %prep section as used by Jonas. The %prep section as suggested by guidelines is not mandatory IMO.



Jonas, I have 2 notes:

* Could you please unpack the test suite in the %check section, something like rubybem-hike [1] for example? Also running in .%{gem_instdir} is preferable (although it has definitely some downsides). This will prevent possible pollution of the packaged gem.

* I typically suggest to exclude the %{gem_cache}.


[1] http://pkgs.fedoraproject.org/gitweb/?p=rubygem-hike.git;a=blob;f=rubygem-hike.spec;h=68f3affe56da17bbf72226da7030a2031c078150;hb=HEAD
Comment 7 Jonas Courteau 2012-06-12 03:17:40 EDT
I was doing the unpacking of the test suite in %prep since I have to apply a patch to the tests to get them working correctly.  I have filed a bug upstream; as soon as that's fixed I'll move the test suite setup into %check.  I did verify that the RPM didn't have any test-related cruft left over.

David, I was looking around for the gems mentioned on the OpenShift Origin wiki page [1] and didn't see review requests, and the OpenShift community site [2] implies that Fedora 18 support is pending the Passenger stuff getting cleared up.  Can you point me in the right direction?  Thanks!

[1] https://fedoraproject.org/wiki/Features/OpenShift_Origin
[2] https://openshift.redhat.com/community/
Comment 8 Vít Ondruch 2012-06-12 04:14:27 EDT
(In reply to comment #7)
> I was doing the unpacking of the test suite in %prep since I have to apply a
> patch to the tests to get them working correctly.  I have filed a bug
> upstream; as soon as that's fixed I'll move the test suite setup into
> %check.  I did verify that the RPM didn't have any test-related cruft left
> over.

Yes, I understand that. But you can patch the tests in %check as well as in %prep. You can use something like "cat %{PATCH0} | patch -p2" for that.
Comment 9 Jonas Courteau 2012-06-18 03:02:18 EDT
Ah, I didn't know it was okay to patch stuff in %check.  I've made the recommended changes:
- now extracting and patching tests in %check
- tests are extracted, patched, and run from .%{gem_instdir} instead of buildroot.
- excluding %{gem_cache}

Updated SRPM - http://rpms.courteau.org/fedora/rubygem-mixlib-shellout-1.0.0-3.fc17.src.rpm
Updated SPEC - https://raw.github.com/jcourteau/rubygems-rpms/master/fc17/rubygem-mixlib-shellout/rubygem-mixlib-shellout.spec
Comment 10 Julian C. Dunn 2012-10-21 21:40:24 EDT
David, et. al.:

I've been in discussions with Opscode about all of Jonas's review requests, since (according to them) he seems to have "disappeared".[1] I've started working on these packages again, and have an updated SRPM and SPEC for rubygem-mixlib-shellout-1.1.0:

http://jdunn.fedorapeople.org/rubygem-mixlib-shellout/rubygem-mixlib-shellout.spec
http://jdunn.fedorapeople.org/rubygem-mixlib-shellout/rubygem-mixlib-shellout-1.1.0-1.fc19.src.rpm

My package drops the patch for the broken test on FC17; Opscode seems to have fixed that.

What else would need to be done to move this particular review forward? As you can tell, I'm already a Fedora packager.

[1] http://tickets.opscode.com/browse/CHEF-522
Comment 11 Vít Ondruch 2012-12-14 08:00:56 EST
* Test suite fails
  - Seems that test suite depends on awesome_print?

      /usr/share/rubygems/rubygems/custom_require.rb:36:in `require': cannot
          load such file -- ap (LoadError)

    I tried to remove it and the test suite works. So please do
    
      sed -i "/^require 'ap'$/ s/^/#/" spec/spec_helper.rb

    and report it upstream. Nevertheless, there is still one test failure:

      1) Mixlib::ShellOut when executing the command with a current working
         directory when running under Unix should chdir to the working directory
         Failure/Error: should eql(fully_qualified_cwd)
       
         expected: "/bin"
              got: "/usr/bin"
  
    This seems to be caused by UsrMove and should be resolved with upstream.
  - The '-Ilib' seems to be superfluous.

* I woudl move the README into -doc subpackage, but it is more the matter of
  taste.

The package looks quite good otherwise. But let's fix the test suite first.
Comment 12 Julian C. Dunn 2012-12-18 13:34:35 EST
Upstream tickets and pull requests have been filed.

http://tickets.opscode.com/browse/MIXLIB-6
http://tickets.opscode.com/browse/MIXLIB-7

I'll update the spec with these patches and rebuild.
Comment 14 Vít Ondruch 2012-12-19 04:30:24 EST
Cool. Thank you for the patches. I hope they'll get accepted soon.

Just cannot resist, have you tested it on F18+? Since /tmp is now TmpFs, I hope it will not cause another troubles ;)

And few other notes:

* Mark patches as Patch0 and Patch1
  - I'd love to see the patches marked as Patch0, Patch1 instead of Source2,
    Source3. I don't think where will be any difference in the end, but it feels
    better to me.

* %exclude %{gem_instdir}/spec should not be needed
  - If I am not mistaken, this line is not needed, since you expand the test
    suite after the %install section is done, so there is no chance that it
    could appear in %{buildroot}




@David: Any other comments? Will you finish the review or should I?
Comment 15 Julian C. Dunn 2012-12-19 11:24:41 EST
(In reply to comment #14)
> Cool. Thank you for the patches. I hope they'll get accepted soon.
> 
> Just cannot resist, have you tested it on F18+? Since /tmp is now TmpFs, I
> hope it will not cause another troubles ;)

Yes, I tested my patches on a F18-beta VM.

> And few other notes:
> 
> * Mark patches as Patch0 and Patch1
>   - I'd love to see the patches marked as Patch0, Patch1 instead of Source2,
>     Source3. I don't think where will be any difference in the end, but it
> feels
>     better to me.

That makes sense.

> * %exclude %{gem_instdir}/spec should not be needed
>   - If I am not mistaken, this line is not needed, since you expand the test
>     suite after the %install section is done, so there is no chance that it
>     could appear in %{buildroot}

Correct.

The above problems have been fixed and SPEC/SRPM have been updated.

http://fedorapeople.org/~jdunn/rubygem-mixlib-shellout/rubygem-mixlib-shellout.spec
http://fedorapeople.org/~jdunn/rubygem-mixlib-shellout/rubygem-mixlib-shellout-1.1.0-2.fc19.src.rpm
Comment 16 Vít Ondruch 2012-12-20 03:48:28 EST
* Wrong ruby(abi) require.
  - Requires: ruby(abi) > %{rubyabi}
  + Requires: ruby(abi) = %{rubyabi}

BTW please always bump release when submitting updated .spec for review. It will avoid possible confusion.

Otherwise, I am fine with the rest of the package, so I APPROVE it (hope David don't mind ;). But please fix the above mentioned issue prior importing the package, otherwise it cannot get installed (but you would find it soon ;).
Comment 17 Julian C. Dunn 2012-12-20 08:47:00 EST
(In reply to comment #16)
> * Wrong ruby(abi) require.
>   - Requires: ruby(abi) > %{rubyabi}
>   + Requires: ruby(abi) = %{rubyabi}
> 
> BTW please always bump release when submitting updated .spec for review. It
> will avoid possible confusion.
> 
> Otherwise, I am fine with the rest of the package, so I APPROVE it (hope
> David don't mind ;). But please fix the above mentioned issue prior
> importing the package, otherwise it cannot get installed (but you would find
> it soon ;).

Thanks Vit. Yes, I saw that bad Requires. Must have been an artifact of an earlier version, which I will fix when importing.
Comment 18 Julian C. Dunn 2012-12-20 10:30:11 EST
New Package SCM Request
=======================
Package Name: rubygem-mixlib-shellout
Short Description: Ruby mixin for running external commands
Owners: jdunn
Branches: f17 f18 el6
InitialCC:
Comment 19 Gwyn Ciesla 2012-12-20 10:55:54 EST
Git done (by process-git-requests).
Comment 20 Fedora Update System 2012-12-20 14:23:12 EST
rubygem-mixlib-shellout-1.1.0-4.fc17 has been submitted as an update for Fedora 17.
https://admin.fedoraproject.org/updates/rubygem-mixlib-shellout-1.1.0-4.fc17
Comment 21 Fedora Update System 2012-12-20 14:24:04 EST
rubygem-mixlib-shellout-1.1.0-4.fc18 has been submitted as an update for Fedora 18.
https://admin.fedoraproject.org/updates/rubygem-mixlib-shellout-1.1.0-4.fc18
Comment 22 Fedora Update System 2012-12-20 14:24:37 EST
rubygem-mixlib-shellout-1.1.0-4.el6 has been submitted as an update for Fedora EPEL 6.
https://admin.fedoraproject.org/updates/rubygem-mixlib-shellout-1.1.0-4.el6
Comment 23 Fedora Update System 2012-12-20 19:30:45 EST
rubygem-mixlib-shellout-1.1.0-4.el6 has been pushed to the Fedora EPEL 6 testing repository.
Comment 24 Fedora Update System 2012-12-30 22:28:21 EST
rubygem-mixlib-shellout-1.1.0-4.fc17 has been pushed to the Fedora 17 stable repository.
Comment 25 Fedora Update System 2013-01-04 14:40:07 EST
rubygem-mixlib-shellout-1.1.0-4.el6 has been pushed to the Fedora EPEL 6 stable repository.
Comment 26 Fedora Update System 2013-01-11 18:26:12 EST
rubygem-mixlib-shellout-1.1.0-4.fc18 has been pushed to the Fedora 18 stable repository.

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