# %%gem_unpack macro unpacks a gem file into %%{_builddir} # # example: # %prep # %gem_unpack %{SOURCE0} # %patch1 -p1 # %gem_unpack(s:) \ source=%{-s:%{-s*}}%{!-s:%{SOURCE0}} \ %{?gem_binary}%{!?gem_binary:/usr/bin/gem} unpack --verbose $source \ cd %{mod_name}-%{version} \ chmod og-w -R . \ %{?gem_binary}%{!?gem_binary:/usr/bin/gem} specification --ruby $source > %{mod_name}-%{version}.gemspec \ %{nil} # %%gem_build macro ... # %gem_build() \ GEMSPEC_SOURCE_DIR=`find . -maxdepth 2 -type f -name %{mod_name}-%{version}.gemspec | xargs dirname` \ cd $GEMSPEC_SOURCE_DIR && %{?gem_binary}%{!?gem_binary:/usr/bin/gem} build --verbose %{mod_name}-%{version}.gemspec \ %{nil} # %%gem_install macro ... # # When invoked with a single parameter, the macro retains the old macro behavior, i.e. # building the upstream gem directly in $RPM_BUILD_ROOT without unpacking to %{_builddir} first. # %gem_install /usr/lib/rpm/gem_install.sh --default-gem %{mod_name}-%{version}.gem --build-root %{buildroot} %{?gem_binary:--gem-binary %{gem_binary}} # we need to copy parts of the %fdupes macro as rpm can't expand parameters in macro "calls" ;( %gem_cleanup() \ /usr/lib/rpm/gem_build_cleanup.sh %{buildroot}%{_libdir}/ruby/gems/%{rb_ver}/ \ fdupes -q -p -n -r %{buildroot}%{gem_base} | \ while read _file; do \ if test -z "$_target" ; then \ _target="$_file"; \ else \ if test -z "$_file" ; then \ _target=""; \ continue ; \ fi ; \ ln -sf "${_target#%{buildroot}}" "$_file"; \ fi ; \ done \ %{nil} # this is used in older gems - but it's pointless with newer ruby/rpm versions %rubygems_requires %{nil} %gem_base %(%{rb_binary} -rrubygems -e 'print Gem::Specification.new.base_dir' ) %gem_extensions %(%{rb_binary} -rrubygems -e 'print Gem::Specification.new.extensions_dir' || echo %{_libdir}/ruby/gems/%{rb_ver}/gems ) %gem_doc_ext %(%{rb_binary} -r rubygems -e 'bs = Gem::Specification.new; rp = bs.extensions_dir.rpartition(bs.base_dir); print rp[1]+"/doc"+rp[2]' ) %gem_platform %(%{rb_binary} -r rubygems -r rbconfig -e 'print Gem::Platform.new(RbConfig::CONFIG["arch"]).to_s' )