[Fedora-packaging] New packaging guidelines for Ruby

Mo Morsi mmorsi at redhat.com
Wed Feb 29 11:43:14 UTC 2012


> Ok, I'll give you 3 examples:
>
> = Old guidelines, used from the time RubyGems were packaged for Fedora =
>
> %prep
>
> %build
>
> %install
> mkdir -p %{buildroot}%{gem_dir}
> gem install --local --install-dir %{buildroot}%{gem_dir} \
>             --force %{SOURCE0}
>
>
>
>
> = What we are proposing =
>
> %prep
> %setup -q -c -T
> mkdir -p .%{gem_dir}
> gem install --local --install-dir .%{gem_dir} \
>             --force %{SOURCE0}
>
> %build
>
> %install
> mkdir -p %{buildroot}%{gem_dir}
> cp -a .%{gem_dir}/* \
>         %{buildroot}%{gem_dir}/
>
>
>
>
> = What FPC is proposing =
>
> %prep
> %setup -q -c -T
> pushd ..
> gem unpack %{SOURCE0}
>
> pushd %{gem_name}-%{version}
> gem spec %{SOURCE0} -l --ruby > %{gem_name}.gemspec
>
> gem build %{gem_name}.gemspec
> popd
> popd
>
> %build
> mkdir -p ./%{gem_dir}
> gem install --local --install-dir ./%{gem_dir} \
>     --force    ../%{gem_name}-%{version}/%{gem_name}-%{version}.gem
>
> %install
> mkdir -p %{buildroot}%{gem_dir}
> cp -a .%{gem_dir}/* \
>         %{buildroot}%{gem_dir}/
>
>
> All three versions provide the same output, unless I did some mistake,
> since I did not tested it (actually the middle one was taken directly
> from rubygem-POpen4.spec). So which version you prefer? Please note
> that the "gem install" will always "unpack" the gem with some
> additional, for our case unimportant, steps. We do not distribute the
> .gem file anywhere.

Alternatively we can go with a hybrid of solutions 2 and 3 (your and
FPC's proposals) where the 'gem unpack' and 'gem spec' steps are optional.

The majority of gems do not need an additional modification or patching
to be converted into a RPM. Yes these steps bring things more inline w/
other packages, but at the expense of unnecessary additional work.

If the solution is to suggest gem unpack / gem spec is used while
allowing for it to be omitted (still need to determine if gem install
should still be run in the %build or %install sections), package
maintainers will have a bit more flexibility to run the steps necessary
to build their package w/out any additional work, while at the same time
still being more compliant and in-line w/ other Fedora practices.

Thoughts?

As a side node, if at all possible, please make sure to cc' both lists
(packaging and ruby-sig) on replies as this discussion is relevant to
both communities. Noticed alot of discussion only on the packaging list
meaning the Fedora ruby community is missing out on alot of this.

Appreciate it,

  -Mo





More information about the ruby-sig mailing list