%rb_binary /usr/bin/ruby %rb_arch %(%{rb_binary} -e 'print RUBY_PLATFORM') %rb_ver %(%{rb_binary} -r rbconfig -e 'print RbConfig::CONFIG["ruby_version"]') # ## Base # "rubylibprefix"=>"/usr/lib64/ruby", %rb_dir %(%{rb_binary} -rrbconfig -e 'puts RbConfig::CONFIG["rubylibprefix"]' ) # "rubylibdir" =>"/usr/lib64/ruby/2.1.0", %rb_libdir %(%{rb_binary} -rrbconfig -e 'puts RbConfig::CONFIG["rubylibdir"]' ) # "archdir" =>"/usr/lib64/ruby/2.1.0/x86_64-linux", %rb_archdir %(%{rb_binary} -rrbconfig -e 'puts RbConfig::CONFIG["archdir"]' ) ## Site # "sitedir" =>"/usr/lib64/ruby/site_ruby", %rb_sitedir %(%{rb_binary} -rrbconfig -e 'puts RbConfig::CONFIG["sitedir"]' ) # "sitelibdir" =>"/usr/lib64/ruby/site_ruby/2.1.0", %rb_sitelibdir %(%{rb_binary} -rrbconfig -e 'puts RbConfig::CONFIG["sitelibdir"]' ) # "sitearchdir" =>"/usr/lib64/ruby/site_ruby/2.1.0/x86_64-linux", %rb_sitearchdir %(%{rb_binary} -rrbconfig -e 'puts RbConfig::CONFIG["sitearchdir"]' ) ## Vendor # "vendordir" =>"/usr/lib64/ruby/vendor_ruby", %rb_vendordir %(%{rb_binary} -rrbconfig -e 'puts RbConfig::CONFIG["vendordir"]' ) # "vendorlibdir" =>"/usr/lib64/ruby/vendor_ruby/2.1.0", %rb_vendorlibdir %(%{rb_binary} -rrbconfig -e 'puts RbConfig::CONFIG["vendorlibdir"]' ) # "vendorarchdir" =>"/usr/lib64/ruby/vendor_ruby/2.1.0/x86_64-linux", %rb_vendorarchdir %(%{rb_binary} -rrbconfig -e 'puts RbConfig::CONFIG["vendorarchdir"]' ) # backward compat %rb_sitearch %{rb_sitearchdir} %rb_sitelib %{rb_sitelibdir} %rb_vendorlib %{rb_vendorlibdir} %rb_vendorarch %{rb_vendorarchdir} %set_gem_binary() \ %if "%{?gem_binary}" == "" \ %global gem_binary %(/usr/bin/ruby-find-versioned gem|head -n1) \ %endif \ %if "%{?gem_binary}" == "" \ echo "no gem binary found. Exiting." \ exit 1 \ %endif \ %{nil} # %%gem_unpack macro unpacks a gem file into %%{_builddir} # # example: # %prep # %gem_unpack %{SOURCE0} # %patch1 -p1 # %gem_unpack(s:) \ source=%{-s:%{-s*}}%{!-s:%{SOURCE0}} \ %{set_gem_binary} \ %{gem_binary} unpack --verbose $source \ cd %{mod_name}-%{version} \ chmod og-w -R . \ %{gem_binary} 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` \ %{set_gem_binary} \ cd $GEMSPEC_SOURCE_DIR && %{gem_binary} 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 --gem-name=%{mod_name} --gem-version=%{version} --build-root %{buildroot} %{?mod_version_suffix:--gem-suffix=%{mod_version_suffix}} %{?gem_binary:--gem-binary %{gem_binary}} %gem_packages %{expand:%(/usr/lib/rpm/gem_packages.sh --default-gem %{mod_name}-%{version}.gem --gem-name=%{mod_name} --gem-version=%{version} --build-root %{buildroot})} # we need to copy parts of the %fdupes macro as rpm can't expand parameters in macro "calls" ;( %gem_cleanup() \ for gem in $(/usr/bin/ruby-find-versioned gem) ; do \ gem_base="$($gem env gemdir)" \ /usr/lib/rpm/gem_build_cleanup.sh %{buildroot}${gem_base} \ fdupes -q -p -n -r -o name %{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 \ 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' )