[packages/ruby/rawhide] bigdecimal fix + relative symlinks macro
mis
mis at pld-linux.org
Sat Sep 26 11:50:12 CEST 2026
commit 1d90a613be62fa70321fa2c5b8e417f6773746f7
Author: Pawel Gajda <mis at pld-linux.org>
Date: Sat Sep 26 11:50:05 2026 +0200
bigdecimal fix + relative symlinks macro
ruby.spec | 52 ++++++++++++++++++++++++++++++++--------------------
1 file changed, 32 insertions(+), 20 deletions(-)
---
diff --git a/ruby.spec b/ruby.spec
index 5d3b200..f98cc32 100644
--- a/ruby.spec
+++ b/ruby.spec
@@ -12,7 +12,7 @@
%bcond_with bootstrap # build bootstrap version
%bcond_with tests # build with tests
-%define rel 2
+%define rel 4
%define ruby_version 3.4
%define patchlevel 11
%define pkg_version %{ruby_version}.%{patchlevel}
@@ -63,6 +63,7 @@ URL: http://www.ruby-lang.org/
BuildRequires: autoconf >= 2.67
BuildRequires: automake
BuildRequires: bison >= 1.875
+BuildRequires: coreutils
BuildRequires: db-devel
BuildRequires: gdbm-devel >= 1.8.3
BuildRequires: gmp-devel
@@ -100,6 +101,15 @@ Conflicts: ruby-activesupport < 2.3.11-2
Conflicts: ruby-activesupport2 < 2.3.11-2
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+# relative symlinks
+# usage: %make_rel_symlink <target-in-install-root> [<directory> [<link-name>]]
+# e.g. %make_rel_symlink %{gem_instdir rdoc}/lib/rdoc %{ruby_libdir}
+# creates <directory>/<link-name> as a symlink holding the shortest relative
+# path to <target>, so that it stays valid after installation. <link-name>
+# defaults to the basename of <target>.
+%define rel_symlink() %(realpath -m --relative-to=%{buildroot}%{?2} %{buildroot}%{?1})
+%define make_rel_symlink() ln -s %{rel_symlink %{?1} %{?2}} %{buildroot}%{?2}/%{?3}%{!?3:%(basename %{?1})}
+
# hack: skip rubygem(ipaddr)
%define _noautoreq ipaddr
%{expand:%%global _noautoreq %{_noautoreq} 'ruby\\(abi\\)'}
@@ -757,9 +767,9 @@ cp -f /usr/share/automake/config.sub .
%{__autoconf}
-# RPM's %%configure runs %%_configure (default: ./configure) in the current
+# The %%configure macro runs %%_configure (default: ./configure) in the current
# directory. For a VPATH build we are in build/, but the real configure script
-# lives in the source directory. Provide a tiny wrapper so %%configure finds it.
+# lives in the source directory, hence the wrapper created below.
mkdir -p %{_vpath_builddir}
cd %{_vpath_builddir}
rm -f configure
@@ -869,12 +879,13 @@ install -d $RPM_BUILD_ROOT%{gem_dir}
# packages should go to vendor dirs)%
install -d $RPM_BUILD_ROOT%{gem_instdir rdoc}/lib
%{__mv} $RPM_BUILD_ROOT%{ruby_libdir}/rdoc* $RPM_BUILD_ROOT%{gem_instdir rdoc}/lib
-ln -sr %{gem_instdir rdoc}/lib/rdoc $RPM_BUILD_ROOT%{ruby_libdir}
-ln -sr %{gem_instdir rdoc}/lib/rdoc.rb $RPM_BUILD_ROOT%{ruby_libdir}
+%make_rel_symlink %{gem_instdir rdoc}/lib/rdoc %{ruby_libdir}
+%make_rel_symlink %{gem_instdir rdoc}/lib/rdoc.rb %{ruby_libdir}
%{__mv} $RPM_BUILD_ROOT%{gem_spec -d rdoc} $RPM_BUILD_ROOT%{gem_dir}/specifications
-ln -sr %{gem_instdir bigdecimal}/lib/bigdecimal $RPM_BUILD_ROOT%{ruby_libdir}/bigdecimal
-ln -sr %{gem_extdir_mri bigdecimal}/lib/bigdecimal.so $RPM_BUILD_ROOT%{ruby_libarchdir}/bigdecimal.so
+%make_rel_symlink %{gem_instdir bigdecimal}/lib/bigdecimal %{ruby_libdir}
+%make_rel_symlink %{gem_instdir bigdecimal}/lib/bigdecimal.rb %{ruby_libdir}
+%make_rel_symlink %{gem_extdir_mri bigdecimal}/bigdecimal.so %{ruby_libarchdir}
install -d $RPM_BUILD_ROOT%{gem_instdir io-console}/lib
install -d $RPM_BUILD_ROOT%{gem_extdir_mri io-console}/lib/io
@@ -882,8 +893,8 @@ touch $RPM_BUILD_ROOT%{gem_extdir_mri io-console}/gem.build_complete
%{__mv} $RPM_BUILD_ROOT%{ruby_libdir}/io $RPM_BUILD_ROOT%{gem_instdir io-console}/lib
%{__mv} $RPM_BUILD_ROOT%{ruby_libarchdir}/io/console.so $RPM_BUILD_ROOT%{gem_extdir_mri io-console}/lib/io
%{__mv} $RPM_BUILD_ROOT%{gem_spec -d io-console} $RPM_BUILD_ROOT%{gem_dir}/specifications
-ln -sr %{gem_instdir io-console}/lib/io $RPM_BUILD_ROOT%{ruby_libdir}/io
-ln -sr %{gem_extdir_mri io-console}/lib/io/console.so $RPM_BUILD_ROOT%{ruby_libarchdir}/io/console.so
+%make_rel_symlink %{gem_instdir io-console}/lib/io %{ruby_libdir}
+%make_rel_symlink %{gem_extdir_mri io-console}/lib/io/console.so %{ruby_libarchdir}/io
install -d $RPM_BUILD_ROOT%{gem_instdir json}/lib
install -d $RPM_BUILD_ROOT%{gem_extdir_mri json}/lib
@@ -891,16 +902,16 @@ touch $RPM_BUILD_ROOT%{gem_extdir_mri json}/gem.build_complete
%{__mv} $RPM_BUILD_ROOT%{ruby_libdir}/json* $RPM_BUILD_ROOT%{gem_instdir json}/lib
%{__mv} $RPM_BUILD_ROOT%{ruby_libarchdir}/json $RPM_BUILD_ROOT%{gem_extdir_mri json}/lib
%{__mv} $RPM_BUILD_ROOT%{gem_spec -d json} $RPM_BUILD_ROOT%{gem_dir}/specifications
-ln -sr %{gem_instdir json}/lib/json $RPM_BUILD_ROOT%{ruby_libdir}/json
-ln -sr %{gem_instdir json}/lib/json.rb $RPM_BUILD_ROOT%{ruby_libdir}/json.rb
+%make_rel_symlink %{gem_instdir json}/lib/json %{ruby_libdir}
+%make_rel_symlink %{gem_instdir json}/lib/json.rb %{ruby_libdir}
install -d $RPM_BUILD_ROOT%{ruby_libarchdir}/json/ext
-ln -sr %{gem_extdir_mri json}/lib/json/ext/parser.so $RPM_BUILD_ROOT%{ruby_libarchdir}/json/ext
-ln -sr %{gem_extdir_mri json}/lib/json/ext/generator.so $RPM_BUILD_ROOT%{ruby_libarchdir}/json/ext
+%make_rel_symlink %{gem_extdir_mri json}/lib/json/ext/parser.so %{ruby_libarchdir}/json/ext
+%make_rel_symlink %{gem_extdir_mri json}/lib/json/ext/generator.so %{ruby_libarchdir}/json/ext
-ln -sr %{gem_instdir minitest}/lib/minitest $RPM_BUILD_ROOT%{ruby_libdir}
+%make_rel_symlink %{gem_instdir minitest}/lib/minitest %{ruby_libdir}
install -d $RPM_BUILD_ROOT%{ruby_libdir}/test
-ln -sr %{gem_instdir test-unit}/lib/test/unit $RPM_BUILD_ROOT%{ruby_libdir}/test
+%make_rel_symlink %{gem_instdir test-unit}/lib/test/unit %{ruby_libdir} test/unit
install -d $RPM_BUILD_ROOT%{gem_instdir psych}/lib
install -d $RPM_BUILD_ROOT%{gem_extdir_mri psych}/lib
@@ -908,9 +919,9 @@ touch $RPM_BUILD_ROOT%{gem_extdir_mri psych}/gem.build_complete
%{__mv} $RPM_BUILD_ROOT%{ruby_libdir}/psych* $RPM_BUILD_ROOT%{gem_instdir psych}/lib
%{__mv} $RPM_BUILD_ROOT%{ruby_libarchdir}/psych.so $RPM_BUILD_ROOT%{gem_extdir_mri psych}/lib/
%{__mv} $RPM_BUILD_ROOT%{gem_spec -d psych} $RPM_BUILD_ROOT%{gem_dir}/specifications
-ln -sr %{gem_instdir psych}/lib/psych $RPM_BUILD_ROOT%{ruby_libdir}/psych
-ln -sr %{gem_instdir psych}/lib/psych.rb $RPM_BUILD_ROOT%{ruby_libdir}/psych.rb
-ln -sr %{gem_extdir_mri psych}/lib/psych.so $RPM_BUILD_ROOT%{ruby_archdir}/psych.so
+%make_rel_symlink %{gem_instdir psych}/lib/psych %{ruby_libdir}
+%make_rel_symlink %{gem_instdir psych}/lib/psych.rb %{ruby_libdir}
+%make_rel_symlink %{gem_extdir_mri psych}/lib/psych.so %{ruby_archdir}
#install -d $RPM_BUILD_ROOT%{gem_libdir bundler}
#%{__mv} $RPM_BUILD_ROOT%{ruby_libdir}/bundler.rb $RPM_BUILD_ROOT%{gem_libdir bundler}
@@ -921,8 +932,8 @@ install -d $RPM_BUILD_ROOT%{gem_instdir bundler}/lib
install -d $RPM_BUILD_ROOT%{gem_extdir_mri bundler}/lib
%{__mv} $RPM_BUILD_ROOT%{ruby_libdir}/bundler* $RPM_BUILD_ROOT%{gem_instdir bundler}/lib
%{__mv} $RPM_BUILD_ROOT%{gem_spec -d bundler} $RPM_BUILD_ROOT%{gem_dir}/specifications
-ln -sr %{gem_instdir bundler}/lib/bundler $RPM_BUILD_ROOT%{ruby_libdir}/bundler
-ln -sr %{gem_instdir bundler}/lib/bundler.rb $RPM_BUILD_ROOT%{ruby_libdir}/bundler.rb
+%make_rel_symlink %{gem_instdir bundler}/lib/bundler %{ruby_libdir}
+%make_rel_symlink %{gem_instdir bundler}/lib/bundler.rb %{ruby_libdir}
# Move the binary extensions into proper place (if no gem has binary extension,
# the extensions directory might be empty).
@@ -1197,6 +1208,7 @@ sed -i '/def test_ctx_server_session_cb$/,/^ end$/ s/^/#/' test/openssl/test_ss
%{gem_extdir_mri bigdecimal}
%{gem_spec bigdecimal}
%{ruby_libdir}/bigdecimal
+%{ruby_libdir}/bigdecimal.rb
%{ruby_archdir}/bigdecimal.so
%files io-console
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/ruby.git/commitdiff/1d90a613be62fa70321fa2c5b8e417f6773746f7
More information about the pld-cvs-commit
mailing list