From 1f52aa7cafd3de6f9d52a21195a02a51a2a43b17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Wed, 8 Mar 2017 19:24:44 +0100 Subject: [PATCH 01/33] Update to RubyGems 2.6.10. This should be now better aligned and comparable with ruby.spec. --- .gitignore | 1 + macros.rubygems | 115 ++++++++++- operating_system.rb | 26 ++- ....4.8-Increase-DH-key-size-fixes-1289.patch | 28 --- rubygems.spec | 192 +++++++++--------- sources | 2 +- 6 files changed, 221 insertions(+), 143 deletions(-) delete mode 100644 rubygem-2.4.8-Increase-DH-key-size-fixes-1289.patch diff --git a/.gitignore b/.gitignore index 79fb8fd..7d1b7f5 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,4 @@ rubygems-1.3.7.tgz /rubygems-2.1.11.tgz /rubygems-2.2.2.tgz /rubygems-2.4.8.tgz +/rubygems-2.6.10.tgz diff --git a/macros.rubygems b/macros.rubygems index 1043c02..0652ec6 100644 --- a/macros.rubygems +++ b/macros.rubygems @@ -3,16 +3,21 @@ %gem_archdir %{_libdir}/gems # Common gem locations and files. -%gem_instdir %{gem_dir}/gems/%{gem_name}-%{version} -%gem_extdir_mri %{gem_archdir}/%{name}/%{gem_name}-%{version} +%gem_instdir %{gem_dir}/gems/%{gem_name}-%{version}%{?prerelease} +%gem_extdir_mri %{gem_archdir}/%{name}/%{gem_name}-%{version}%{?prerelease} %gem_libdir %{gem_instdir}/lib -%gem_cache %{gem_dir}/cache/%{gem_name}-%{version}.gem -%gem_spec %{gem_dir}/specifications/%{gem_name}-%{version}.gemspec -%gem_docdir %{gem_dir}/doc/%{gem_name}-%{version} +%gem_cache %{gem_dir}/cache/%{gem_name}-%{version}%{?prerelease}.gem +%gem_spec %{gem_dir}/specifications/%{gem_name}-%{version}%{?prerelease}.gemspec +%gem_docdir %{gem_dir}/doc/%{gem_name}-%{version}%{?prerelease} -# Install gem into appropriate directory. -# -n Overrides gem file name for installation. -# -d Set installation directory. + +# %gem_install - Install gem into appropriate directory. +# +# Usage: %gem_install [options] +# +# -n Overrides gem file name for installation. +# -d Set installation directory. +# %gem_install(d:n:) \ mkdir -p %{-d*}%{!?-d:.%{gem_dir}} \ \ @@ -20,13 +25,13 @@ CONFIGURE_ARGS="--with-cflags='%{optflags}' $CONFIGURE_ARGS" \\\ gem install \\\ -V \\\ --local \\\ - --install-dir %{-d*}%{!?-d:.%{gem_dir}} \\\ - --bindir .%{_bindir} \\\ + --build-root %{-d*}%{!?-d:.} \\\ --force \\\ --document=ri,rdoc \\\ - %{-n*}%{!?-n:%{gem_name}-%{version}.gem} \ + %{-n*}%{!?-n:%{gem_name}-%{version}%{?prerelease}.gem} \ %{nil} + # For rubygems packages we want to filter out any provides caused by private # libs in %%{gem_archdir}. # @@ -35,3 +40,91 @@ gem install \\\ %rubygems_default_filter %{expand: \ %global __provides_exclude_from %{?__provides_exclude_from:%{__provides_exclude_from}|}^%{gem_extdir_mri}/.*\\\\.so$ \ } + + +# The 'read' command in gemspec_add _depand gemspec_remove_dep macros is not +# essential, but it is usefull to make the sript appear in build log. + + +# %gemspec_add_dep - Add dependency into .gemspec. +# +# Usage: %gemspec_add_dep -g [options] [requirements] +# +# Add dependency named to .gemspec file. The macro adds runtime +# dependency by default. The [requirements] argument can be used to specify +# the dependency constraints more precisely. It is expected to be valid Ruby +# code. +# +# -s Overrides the default .gemspec location. +# -d Add development dependecy. +# +%gemspec_add_dep(g:s:d) \ +read -d '' gemspec_add_dep_script << 'EOR' || : \ + gemspec_file = '%{-s*}%{!?-s:./%{gem_name}.gemspec}' \ + \ + name = '%{-g*}' \ + requirements = %{*}%{!?1:nil} \ + \ + type = :%{!?-d:runtime}%{?-d:development} \ + \ + spec = Gem::Specification.load(gemspec_file) \ + abort("#{gemspec_file} is not accessible.") unless spec \ + \ + dep = spec.dependencies.detect { |d| d.type == type && d.name == name } \ + if dep \ + dep.requirement.concat requirements \ + else \ + spec.public_send "add_#{type}_dependency", name, requirements \ + end \ + File.write gemspec_file, spec.to_ruby \ +EOR\ +echo "$gemspec_add_dep_script" | ruby \ +unset -v gemspec_add_dep_script \ +%{nil} + + +# %gemspec_remove_dep - Remove dependency from .gemspec. +# +# Usage: %gemspec_remove_dep -g [options] [requirements] +# +# Remove dependency named from .gemspec file. The macro removes runtime +# dependency by default. The [requirements] argument can be used to specify +# the dependency constraints more precisely. It is expected to be valid Ruby +# code. The macro fails if these specific requirements can't be removed. +# +# -s Overrides the default .gemspec location. +# -d Remove development dependecy. +# +%gemspec_remove_dep(g:s:d) \ +read -d '' gemspec_remove_dep_script << 'EOR' || : \ + gemspec_file = '%{-s*}%{!?-s:./%{gem_name}.gemspec}' \ + \ + name = '%{-g*}' \ + requirements = %{*}%{!?1:nil} \ + \ + type = :%{!?-d:runtime}%{?-d:development} \ + \ + spec = Gem::Specification.load(gemspec_file) \ + abort("#{gemspec_file} is not accessible.") unless spec \ + \ + dep = spec.dependencies.detect { |d| d.type == type && d.name == name } \ + if dep \ + if requirements \ + requirements = Gem::Requirement.create(requirements).requirements \ + requirements.each do |r| \ + unless dep.requirement.requirements.reject! { |dependency_requirements| dependency_requirements == r } \ + abort("Requirement '#{r.first} #{r.last}' was not possible to remove for dependency '#{dep}'!") \ + end \ + end \ + spec.dependencies.delete dep if dep.requirement.requirements.empty? \ + else \ + spec.dependencies.delete dep \ + end \ + else \ + abort("Dependency '#{name}' was not found!") \ + end \ + File.write gemspec_file, spec.to_ruby \ +EOR\ +echo "$gemspec_remove_dep_script" | ruby \ +unset -v gemspec_remove_dep_script \ +%{nil} diff --git a/operating_system.rb b/operating_system.rb index ed653fd..4b2903d 100644 --- a/operating_system.rb +++ b/operating_system.rb @@ -13,12 +13,28 @@ module Gem end private :previous_but_one_dir_to + ## + # Detects --install-dir option specified on command line. + + def opt_install_dir? + @opt_install_dir ||= ARGV.include?('--install-dir') || ARGV.include?('-i') + end + private :opt_install_dir? + + ## + # Detects --build-root option specified on command line. + + def opt_build_root? + @opt_build_root ||= ARGV.include?('--build-root') + end + private :opt_build_root? + ## # Tries to detect, if arguments and environment variables suggest that # 'gem install' is executed from rpmbuild. def rpmbuild? - (ARGV.include?('--install-dir') || ARGV.include?('-i')) && ENV['RPM_PACKAGE_NAME'] + @rpmbuild ||= ENV['RPM_PACKAGE_NAME'] && (opt_install_dir? || opt_build_root?) end private :rpmbuild? @@ -80,7 +96,9 @@ module Gem # RubyGems default overrides. def default_dir - if Process.uid == 0 + if opt_build_root? + Gem.default_dirs[:system][:gem_dir] + elsif Process.uid == 0 Gem.default_dirs[:local][:gem_dir] else Gem.user_dir @@ -93,7 +111,9 @@ module Gem end def default_bindir - if Process.uid == 0 + if opt_build_root? + Gem.default_dirs[:system][:bin_dir] + elsif Process.uid == 0 Gem.default_dirs[:local][:bin_dir] else File.join [Dir.home, 'bin'] diff --git a/rubygem-2.4.8-Increase-DH-key-size-fixes-1289.patch b/rubygem-2.4.8-Increase-DH-key-size-fixes-1289.patch deleted file mode 100644 index be5e72f..0000000 --- a/rubygem-2.4.8-Increase-DH-key-size-fixes-1289.patch +++ /dev/null @@ -1,28 +0,0 @@ -From d000290a675745d9fb8a4658b8b5922f6a734522 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?V=C3=ADt=20Ondruch?= -Date: Tue, 16 Jun 2015 08:22:47 +0200 -Subject: [PATCH] Increase DH key size (fixes #1289). - -This fixes compatibility with OpenSLL 1.0.2c+: - -https://www.openssl.org/blog/blog/2015/05/20/logjam-freak-upcoming-changes/ ---- - test/rubygems/test_gem_remote_fetcher.rb | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/test/rubygems/test_gem_remote_fetcher.rb b/test/rubygems/test_gem_remote_fetcher.rb -index 6b29e18..c318870 100644 ---- a/test/rubygems/test_gem_remote_fetcher.rb -+++ b/test/rubygems/test_gem_remote_fetcher.rb -@@ -898,7 +898,7 @@ gems: - server.mount_proc("/insecure_redirect") { |req, res| - res.set_redirect(WEBrick::HTTPStatus::MovedPermanently, req.query['to']) - } -- server.ssl_context.tmp_dh_callback = proc { OpenSSL::PKey::DH.new 128 } -+ server.ssl_context.tmp_dh_callback = proc { OpenSSL::PKey::DH.new 2048 } - t = Thread.new do - begin - server.start --- -2.4.3 - diff --git a/rubygems.spec b/rubygems.spec index c7abe00..33c275a 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -2,12 +2,20 @@ # https://github.com/rubygems/rubygems.git # +# Bundled libraries versions +%global molinillo_version 0.5.5 + +# Requires versions +%global io_console_version 0.4.6 +%global json_version 2.0.2 +%global openssl_version 2.0.2 +%global psych_version 2.2.2 +%global rdoc_version 5.0.0 + # The RubyGems library has to stay out of Ruby directory three, since the # RubyGems should be share by all Ruby implementations. %global rubygems_dir %(ruby -e "puts RbConfig::CONFIG['rubygemsdir']") -# Specify custom RubyGems root and other related macros. -%global gem_dir %{_datadir}/gems # TODO: These folders should go into rubygem-filesystem but how to achieve it, # since noarch package cannot provide arch dependent subpackages? # http://rpm.org/ticket/78 @@ -15,96 +23,96 @@ # Executing testsuite (enabling %%check section) will cause dependency loop. # To avoid dependency loop when necessary, please set the following value to 0 -%global enable_check 1 +%global enable_check 1 # It cannot be relied on %%{_libdir} for noarch packages. Query Ruby for # the right value. # https://fedorahosted.org/rel-eng/ticket/5257 %{!?buildtime_libdir:%global buildtime_libdir $(ruby -rrbconfig -e 'puts RbConfig::CONFIG["libdir"]')} -Summary: The Ruby standard for packaging ruby libraries -Name: rubygems -Version: 2.4.8 -Release: 102%{?dist} -Group: Development/Libraries -License: Ruby or MIT +Summary: The Ruby standard for packaging ruby libraries +Name: rubygems +Version: 2.6.10 +Release: 100%{?dist} +Group: Development/Libraries +License: Ruby or MIT -URL: https://rubygems.org/ -Source0: http://production.cf.rubygems.org/rubygems/%{name}-%{version}.tgz +URL: https://rubygems.org/ +Source0: http://production.cf.rubygems.org/rubygems/%{name}-%{version}.tgz # Sources from the works by Vít Ondruch # Please keep Source{1,5,8,9,10} in sync with ruby.spec -Source1: operating_system.rb -Source5: macros.rubygems +Source1: operating_system.rb +Source5: macros.rubygems # RPM dependency generators. -Source8: rubygems.attr -Source9: rubygems.req -Source10: rubygems.prov +Source8: rubygems.attr +Source9: rubygems.req +Source10: rubygems.prov # http://seclists.org/oss-sec/2013/q3/att-576/check_CVE-2013-4287_rb.bin # Slightly modified for exit status -Source11: check_CVE-2013-4287.rb +Source11: check_CVE-2013-4287.rb # http://seclists.org/oss-sec/2013/q3/att-621/check_CVE-2013-XXXX_rb.bin # Slightly modified for exit status, # Also modified to match: # http://seclists.org/oss-sec/2013/q3/605 -Source12: check_CVE-2013-4363.rb - -# Fix test suite failure with openssl-1.0.2c+. -# https://github.com/rubygems/rubygems/issues/1289 -Patch0: rubygem-2.4.8-Increase-DH-key-size-fixes-1289.patch +Source12: check_CVE-2013-4363.rb %{?load:%{SOURCE5}} -Requires: ruby(release) -Requires: rubygem(rdoc) >= 4.0.0 -Requires: rubygem(io-console) >= 0.4.1 -Requires: rubygem(psych) >= 2.0.0 -BuildRequires: ruby(release) +Requires: ruby(release) +Recommends: rubygem(rdoc) >= %{rdoc_version} +Recommends: rubygem(io-console) >= %{io_console_version} +Requires: rubygem(openssl) >= %{openssl_version} +Requires: rubygem(psych) >= %{psych_version} +BuildRequires: ruby(release) +BuildRequires: rubygem(json) +BuildRequires: rubygem(rdoc) %if %{enable_check} # For mkmf.rb -BuildRequires: ruby-devel -BuildRequires: rubygem(minitest) < 5 -BuildRequires: rubygem(rake) -BuildRequires: rubygem(rdoc) >= 4.0.0 -BuildRequires: rubygem(io-console) >= 0.4.1 -BuildRequires: rubygem(psych) >= 2.0.0 +BuildRequires: ruby-devel +BuildRequires: rubygem(minitest) < 5 +BuildRequires: rubygem(rake) # TestGemExtCmakeBuilder -BuildRequires: %{_bindir}/cmake -BuildRequires: git -BuildRequires: rubygem(builder) +BuildRequires: %{_bindir}/cmake +BuildRequires: git +BuildRequires: rubygem(builder) %endif -BuildArch: noarch -Provides: ruby(rubygems) = %{version}-%{release} Provides: gem = %{version}-%{release} +Provides: ruby(rubygems) = %{version}-%{release} +# https://github.com/rubygems/rubygems/pull/1189#issuecomment-121600910 +Provides: bundled(rubygem(molinillo)) = %{molinillo_version} +Provides: bundled(rubygem-molinillo) = %{molinillo_version} +BuildArch: noarch %description RubyGems is the Ruby standard for publishing and managing third party libraries. -%package devel -Summary: Macros and development tools for packaging RubyGems -Group: Development/Libraries -License: Ruby or MIT -Requires: ruby(%{name}) = %{version}-%{release} -BuildArch: noarch +%package devel +Summary: Macros and development tools for packaging RubyGems +Group: Development/Libraries +License: Ruby or MIT +Requires: ruby(%{name}) = %{version}-%{release} +# Needed for RDoc documentation format generation. +Requires: rubygem(json) >= %{json_version} +Requires: rubygem(rdoc) >= %{rdoc_version} +BuildArch: noarch -%description devel +%description devel Macros and development tools for packaging RubyGems. -%package doc -Summary: Documentation for %{name} -Group: Development/Libraries -License: Ruby or MIT -Requires: ruby(%{name}) = %{version}-%{release} -BuildArch: noarch +%package doc +Summary: Documentation for %{name} +Group: Development/Libraries +License: Ruby or MIT +Requires: ruby(%{name}) = %{version}-%{release} +BuildArch: noarch -%description doc +%description doc Documentation for %{name}. %prep %setup -q -%patch0 -p1 - %build # Nothing @@ -116,11 +124,6 @@ GEM_HOME=%{buildroot}/%{gem_dir} \ --backtrace \ --destdir=%{buildroot}/%{rubygems_dir}/ -# Remove original filenames from *.gz files. -# https://github.com/rdoc/rdoc/pull/341 -find %{buildroot}/%{gem_dir}/ -name *.gz \ - -exec sh -c "gzip -dc '{}' | gzip > '{}.new' && mv '{}.new' '{}'" \; - mkdir -p %{buildroot}/%{_bindir} mv %{buildroot}/%{rubygems_dir}/bin/gem %{buildroot}/%{_bindir}/gem rm -rf %{buildroot}/%{rubygems_dir}/bin @@ -131,15 +134,15 @@ rmdir %{buildroot}%{rubygems_dir}/lib # Kill bundled certificates, as they should be part of ca-certificates. for cert in \ - Class3PublicPrimaryCertificationAuthority.pem \ - DigiCertHighAssuranceEVRootCA.pem \ - EntrustnetSecureServerCertificationAuthority.pem \ - GeoTrustGlobalCA.pem \ - AddTrustExternalCARoot.pem \ - AddTrustExternalCARoot-2048.pem + rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem \ + rubygems.org/AddTrustExternalCARoot.pem \ + index.rubygems.org/GlobalSignRootCA.pem do rm %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert + rm -r $(dirname %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert) done +# Ensure there is not forgotten any certificate. +test ! "$(ls -A %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/ 2>/dev/null)" # Move macros file into proper place and replace the %%{name} macro, since it # would be wrongly evaluated during build of other packages. @@ -164,43 +167,41 @@ mkdir -p %{buildroot}%{gem_extdir}/ruby # Create below mkdir -p %{buildroot}%{gem_dir}/specifications/default -%if %{enable_check} %check # Create an empty operating_system.rb, so that the system's one doesn't get used, # otherwise the test suite fails. mkdir -p lib/rubygems/defaults touch lib/rubygems/defaults/operating_system.rb -# It is necessary to specify the paths using RUBYOPT to let the test suite pass." +# It is necessary to specify the paths to let the test suite pass." export GEM_PATH=%{gem_dir} -RUBYOPT="-Ilib:test" -for module in \ - json; \ -do - for dir in \ - %{gem_dir}/gems/$module-*/lib \ - %{buildtime_libdir}/gems/ruby/$module-* - do - RUBYOPT="$RUBYOPT:$dir" - done -done -export RUBYOPT +export RUBYOPT="--disable-gems -Ilib:test" -# TODO: Not sure why Builder is not required by rubygems/indexer :/ -ruby -rbuilder/xchar -e 'Dir.glob "./test/**/test_*.rb", &method(:require)' +# Check Molinillo version correctness. +[ "`ruby -e 'module Gem; module Resolver; end; end; require %{rubygems/resolver/molinillo/lib/molinillo/gem_metadata}; puts Gem::Resolver::Molinillo::VERSION' | tail -1`" \ + == '%{molinillo_version}' ] + +%if %{enable_check} +ruby -e 'Dir.glob "./test/**/test_*.rb", &method(:require)' # CVE vulnerability check -ruby -Ilib %{SOURCE11} -ruby -Ilib %{SOURCE12} +ruby %{SOURCE11} +ruby %{SOURCE12} %endif %files %doc README* %doc History.txt -%doc MIT.txt LICENSE.txt +%license MIT.txt LICENSE.txt %doc CVE-*txt -# TODO: Ruby's rubygems subpackage owns whole gem_dir. We should probably -# align the owhership either here or there. +%{_bindir}/gem +%dir %{rubygems_dir} +%{rubygems_dir}/rubygems +%{rubygems_dir}/rubygems.rb +%{rubygems_dir}/ubygems.rb + +# Explicitly include only RubyGems directory strucure to avoid accidentally +# packaged content. %dir %{gem_dir} %dir %{gem_dir}/build_info %dir %{gem_dir}/cache @@ -209,20 +210,8 @@ ruby -Ilib %{SOURCE12} %dir %{gem_dir}/gems %dir %{gem_dir}/specifications %dir %{gem_dir}/specifications/default -%{_bindir}/gem - -%dir %{rubygems_dir}/ -# The following directory is killed on rubygem 2.0.0!! -#%%{rubygems_dir}/rbconfig/ -%{rubygems_dir}/rubygems/ -%{rubygems_dir}/rubygems.rb -%{rubygems_dir}/ubygems.rb -%{rubygems_dir}/gauntlet_rubygems.rb - -%dir %{_exec_prefix}/lib/gems -%dir %{_exec_prefix}/lib64/gems -%dir %{_exec_prefix}/lib/gems/ruby -%dir %{_exec_prefix}/lib64/gems/ruby +%dir %{_exec_prefix}/lib*/gems +%dir %{_exec_prefix}/lib*/gems/ruby %files devel %{_rpmconfigdir}/macros.d/macros.rubygems @@ -235,6 +224,9 @@ ruby -Ilib %{SOURCE12} %changelog +* Tue Mar 07 2017 Vít Ondruch - 2.6.10-100 +- Update to RubyGems 2.6.10. + * Sat Feb 11 2017 Fedora Release Engineering - 2.4.8-102 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild diff --git a/sources b/sources index 71255a9..5a84bbf 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -dc77b51449dffe5b31776bff826bf559 rubygems-2.4.8.tgz +SHA512 (rubygems-2.6.10.tgz) = 5f771e26fa57290a7dfb4c50778af4617964bb72141e757f538da2619ac36fa247715fb3f8cff314e5a573b27a38439c9a8a96fd37d806554e6f37d49608f6b7 From e1f42b9eef437d1cd00598dc11eb9ff1e222a87f Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 27 Jul 2017 18:00:32 +0000 Subject: [PATCH 02/33] - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild --- rubygems.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rubygems.spec b/rubygems.spec index 33c275a..a9eed98 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -33,7 +33,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 2.6.10 -Release: 100%{?dist} +Release: 101%{?dist} Group: Development/Libraries License: Ruby or MIT @@ -224,6 +224,9 @@ ruby %{SOURCE12} %changelog +* Thu Jul 27 2017 Fedora Release Engineering - 2.6.10-101 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + * Tue Mar 07 2017 Vít Ondruch - 2.6.10-100 - Update to RubyGems 2.6.10. From c25bc8c3e46fccf7742502f8280a21a95b2ed10c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Tue, 5 Sep 2017 13:44:23 +0200 Subject: [PATCH 03/33] Update to RubyGems 2.6.13. --- .gitignore | 1 + ...ored-test-for-real-world-default-gem.patch | 51 +++++++++++++++++++ rubygems.spec | 16 ++++-- sources | 2 +- 4 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch diff --git a/.gitignore b/.gitignore index 7d1b7f5..be25674 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,4 @@ rubygems-1.3.7.tgz /rubygems-2.2.2.tgz /rubygems-2.4.8.tgz /rubygems-2.6.10.tgz +/rubygems-2.6.13.tgz diff --git a/rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch b/rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch new file mode 100644 index 0000000..54e3ad0 --- /dev/null +++ b/rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch @@ -0,0 +1,51 @@ +From 8598da6ea02fe69c20f93ac4d5504ca4aba6fe6b Mon Sep 17 00:00:00 2001 +From: SHIBATA Hiroshi +Date: Wed, 9 Aug 2017 16:30:53 +0900 +Subject: [PATCH 1/2] Ignored test for real world default gem. + + Because default gem was enabled after ruby installation that + is `make install` +--- + test/rubygems/test_require.rb | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb +index 936f78fb2..c44c759cc 100644 +--- a/test/rubygems/test_require.rb ++++ b/test/rubygems/test_require.rb +@@ -303,6 +303,12 @@ def test_default_gem_only + + def test_realworld_default_gem + skip "no default gems on ruby < 2.0" unless RUBY_VERSION >= "2" ++ begin ++ gem 'json' ++ rescue Gem::MissingSpecError ++ skip "default gems is only available after ruby installation" ++ end ++ + cmd = <<-RUBY + $stderr = $stdout + require "json" + +From 0dafce8188691a7b942ed4724a0d0e462e74a809 Mon Sep 17 00:00:00 2001 +From: SHIBATA Hiroshi +Date: Wed, 9 Aug 2017 21:06:41 +0900 +Subject: [PATCH 2/2] Fixed grammer + +--- + test/rubygems/test_require.rb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb +index c44c759cc..edb36f1f3 100644 +--- a/test/rubygems/test_require.rb ++++ b/test/rubygems/test_require.rb +@@ -306,7 +306,7 @@ def test_realworld_default_gem + begin + gem 'json' + rescue Gem::MissingSpecError +- skip "default gems is only available after ruby installation" ++ skip "default gems are only available after ruby installation" + end + + cmd = <<-RUBY diff --git a/rubygems.spec b/rubygems.spec index a9eed98..47e931d 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -3,7 +3,7 @@ # # Bundled libraries versions -%global molinillo_version 0.5.5 +%global molinillo_version 0.5.7 # Requires versions %global io_console_version 0.4.6 @@ -32,8 +32,8 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems -Version: 2.6.10 -Release: 101%{?dist} +Version: 2.6.13 +Release: 100%{?dist} Group: Development/Libraries License: Ruby or MIT @@ -56,6 +56,11 @@ Source11: check_CVE-2013-4287.rb # http://seclists.org/oss-sec/2013/q3/605 Source12: check_CVE-2013-4363.rb +# Ignore failing TestGemRequire#test_realworld_default_gem with +# --disable-gems option. +# https://github.com/rubygems/rubygems/pull/1986 +Patch0: rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch + %{?load:%{SOURCE5}} Requires: ruby(release) @@ -113,6 +118,8 @@ Documentation for %{name}. %prep %setup -q +%patch0 -p1 + %build # Nothing @@ -224,6 +231,9 @@ ruby %{SOURCE12} %changelog +* Tue Sep 05 2017 Vít Ondruch - 2.6.13-100 +- Update to RubyGems 2.6.13. + * Thu Jul 27 2017 Fedora Release Engineering - 2.6.10-101 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild diff --git a/sources b/sources index 5a84bbf..2e443bc 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (rubygems-2.6.10.tgz) = 5f771e26fa57290a7dfb4c50778af4617964bb72141e757f538da2619ac36fa247715fb3f8cff314e5a573b27a38439c9a8a96fd37d806554e6f37d49608f6b7 +SHA512 (rubygems-2.6.13.tgz) = c952b6061a9a0778db304c3aa5bea693e71ae2564abfb19f8b123eef66eb1e3877fc7c36f4f1527da97bb320870cbfd4574ac57ad88e850a44fadd67ebdac152 From 1f105e45e7912d602246661bd6dfc91c33eb9b72 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 9 Feb 2018 15:11:13 +0000 Subject: [PATCH 04/33] - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- rubygems.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rubygems.spec b/rubygems.spec index 47e931d..b18aa1b 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -33,7 +33,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 2.6.13 -Release: 100%{?dist} +Release: 101%{?dist} Group: Development/Libraries License: Ruby or MIT @@ -231,6 +231,9 @@ ruby %{SOURCE12} %changelog +* Fri Feb 09 2018 Fedora Release Engineering - 2.6.13-101 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + * Tue Sep 05 2017 Vít Ondruch - 2.6.13-100 - Update to RubyGems 2.6.13. From 540ac6b4368d60f488cbde50aa6c89bc912e3143 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 14 Jul 2018 04:58:06 +0000 Subject: [PATCH 05/33] - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- rubygems.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rubygems.spec b/rubygems.spec index b18aa1b..34a6ced 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -33,7 +33,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 2.6.13 -Release: 101%{?dist} +Release: 102%{?dist} Group: Development/Libraries License: Ruby or MIT @@ -231,6 +231,9 @@ ruby %{SOURCE12} %changelog +* Sat Jul 14 2018 Fedora Release Engineering - 2.6.13-102 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + * Fri Feb 09 2018 Fedora Release Engineering - 2.6.13-101 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild From 483842ba5fa6f70e6b9af3a41173a2598076519e Mon Sep 17 00:00:00 2001 From: Igor Gnatenko Date: Mon, 28 Jan 2019 20:18:23 +0100 Subject: [PATCH 06/33] Remove obsolete Group tag References: https://fedoraproject.org/wiki/Changes/Remove_Group_Tag --- rubygems.spec | 3 --- 1 file changed, 3 deletions(-) diff --git a/rubygems.spec b/rubygems.spec index 34a6ced..29ba73c 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -34,7 +34,6 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 2.6.13 Release: 102%{?dist} -Group: Development/Libraries License: Ruby or MIT URL: https://rubygems.org/ @@ -94,7 +93,6 @@ libraries. %package devel Summary: Macros and development tools for packaging RubyGems -Group: Development/Libraries License: Ruby or MIT Requires: ruby(%{name}) = %{version}-%{release} # Needed for RDoc documentation format generation. @@ -107,7 +105,6 @@ Macros and development tools for packaging RubyGems. %package doc Summary: Documentation for %{name} -Group: Development/Libraries License: Ruby or MIT Requires: ruby(%{name}) = %{version}-%{release} BuildArch: noarch From 18b94f7548f2ec21f85afca05cb34613e06673f5 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 2 Feb 2019 13:19:02 +0000 Subject: [PATCH 07/33] - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- rubygems.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rubygems.spec b/rubygems.spec index 29ba73c..d5a1211 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -33,7 +33,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 2.6.13 -Release: 102%{?dist} +Release: 103%{?dist} License: Ruby or MIT URL: https://rubygems.org/ @@ -228,6 +228,9 @@ ruby %{SOURCE12} %changelog +* Sat Feb 02 2019 Fedora Release Engineering - 2.6.13-103 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + * Sat Jul 14 2018 Fedora Release Engineering - 2.6.13-102 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild From 4490edd12d625f24fd727b4ebd5b5bcc3288456e Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 26 Jul 2019 20:26:26 +0000 Subject: [PATCH 08/33] - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- rubygems.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rubygems.spec b/rubygems.spec index d5a1211..b05960b 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -33,7 +33,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 2.6.13 -Release: 103%{?dist} +Release: 104%{?dist} License: Ruby or MIT URL: https://rubygems.org/ @@ -228,6 +228,9 @@ ruby %{SOURCE12} %changelog +* Fri Jul 26 2019 Fedora Release Engineering - 2.6.13-104 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + * Sat Feb 02 2019 Fedora Release Engineering - 2.6.13-103 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild From 366607586d95b505277165fce54d9494650e8b91 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 8 Aug 2019 16:32:40 +0000 Subject: [PATCH 09/33] rubygems fails to build from source: https://bugzilla.redhat.com/show_bug.cgi?id=1675964 --- .gitignore | 37 -- check_CVE-2013-4287.rb | 29 - check_CVE-2013-4363.rb | 29 - dead.package | 1 + macros.rubygems | 130 ----- operating_system.rb | 146 ----- ...ored-test-for-real-world-default-gem.patch | 51 -- rubygems.attr | 5 - rubygems.prov | 36 -- rubygems.req | 81 --- rubygems.spec | 518 ------------------ sources | 1 - 12 files changed, 1 insertion(+), 1063 deletions(-) delete mode 100644 .gitignore delete mode 100644 check_CVE-2013-4287.rb delete mode 100644 check_CVE-2013-4363.rb create mode 100644 dead.package delete mode 100644 macros.rubygems delete mode 100644 operating_system.rb delete mode 100644 rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch delete mode 100644 rubygems.attr delete mode 100644 rubygems.prov delete mode 100644 rubygems.req delete mode 100644 rubygems.spec delete mode 100644 sources diff --git a/.gitignore b/.gitignore deleted file mode 100644 index be25674..0000000 --- a/.gitignore +++ /dev/null @@ -1,37 +0,0 @@ -rubygems-1.3.7.tgz -/rubygems-1.5.0.tgz -/rubygems-1.5.2.tgz -/rubygems-1.5.3.tgz -/rubygems-1.6.0.tgz -/rubygems-1.6.1.tgz -/rubygems-1.6.2.tgz -/rubygems-1.7.2.tgz -/rubygems-1.8.5.tgz -/rubygems-1.8.6.tgz -/rubygems-1.8.7.tgz -/rubygems-1.8.8.tgz -/rubygems-1.8.9.tgz -/rubygems-1.8.10.tgz -/rubygems-1.8.11.tgz -/rubygems-1.8.15.tgz -/rubygems-1.8.22.tgz -/rubygems-1.8.23.tgz -/rubygems-1.8.24.tgz -/rubygems-1.8.25.tgz -/rubygems-2.0.0.tgz -/rubygems-2.0.3.tgz -/rubygems-2.0.5.tgz -/rubygems-2.0.6.tgz -/rubygems-2.0.7.tgz -/rubygems-2.0.8.tgz -/rubygems-2.0.9.tgz -/rubygems-2.0.10.tgz -/rubygems-2.0.11.tgz -/rubygems-2.0.12.tgz -/rubygems-2.1.9.tgz -/rubygems-2.1.10.tgz -/rubygems-2.1.11.tgz -/rubygems-2.2.2.tgz -/rubygems-2.4.8.tgz -/rubygems-2.6.10.tgz -/rubygems-2.6.13.tgz diff --git a/check_CVE-2013-4287.rb b/check_CVE-2013-4287.rb deleted file mode 100644 index a643b57..0000000 --- a/check_CVE-2013-4287.rb +++ /dev/null @@ -1,29 +0,0 @@ -require 'benchmark' -require 'rubygems' - -valid = Benchmark.measure do - Gem::Version.new '1.22.333.4444.55555.666666.7777777' -end - -puts 'Valid version time:' -puts valid - -invalid = Benchmark.measure do - begin - Gem::Version.new '1.22.333.4444.55555.666666.7777777.' - rescue - end -end - -puts 'Invalid version time:' -puts invalid - -n = (valid.real - invalid.real).abs - -if 0.1 < n then - puts 'You are vulnerable to CVE-2013-4287.' - exit(1) -else - puts 'You are NOT vulnerable to CVE-2013-4287.' -end - diff --git a/check_CVE-2013-4363.rb b/check_CVE-2013-4363.rb deleted file mode 100644 index 7843fcd..0000000 --- a/check_CVE-2013-4363.rb +++ /dev/null @@ -1,29 +0,0 @@ -require 'benchmark' -require 'rubygems' - -valid = Benchmark.measure do - Gem::Version.new '111111111111111111111111' -end - -puts 'Valid version time:' -puts valid - -invalid = Benchmark.measure do - begin - Gem::Version.new '111111111111111111111111.' - rescue - end -end - -puts 'Invalid version time:' -puts invalid - -n = (valid.real - invalid.real).abs - -if 0.1 < n then - puts 'You are vulnerable to CVE-2013-XXXX.' - exit(1) -else - puts 'You are NOT vulnerable to CVE-2013-XXXX.' -end - diff --git a/dead.package b/dead.package new file mode 100644 index 0000000..b4bbd71 --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +rubygems fails to build from source: https://bugzilla.redhat.com/show_bug.cgi?id=1675964 diff --git a/macros.rubygems b/macros.rubygems deleted file mode 100644 index 0652ec6..0000000 --- a/macros.rubygems +++ /dev/null @@ -1,130 +0,0 @@ -# The RubyGems root folder. -%gem_dir %{_datadir}/gems -%gem_archdir %{_libdir}/gems - -# Common gem locations and files. -%gem_instdir %{gem_dir}/gems/%{gem_name}-%{version}%{?prerelease} -%gem_extdir_mri %{gem_archdir}/%{name}/%{gem_name}-%{version}%{?prerelease} -%gem_libdir %{gem_instdir}/lib -%gem_cache %{gem_dir}/cache/%{gem_name}-%{version}%{?prerelease}.gem -%gem_spec %{gem_dir}/specifications/%{gem_name}-%{version}%{?prerelease}.gemspec -%gem_docdir %{gem_dir}/doc/%{gem_name}-%{version}%{?prerelease} - - -# %gem_install - Install gem into appropriate directory. -# -# Usage: %gem_install [options] -# -# -n Overrides gem file name for installation. -# -d Set installation directory. -# -%gem_install(d:n:) \ -mkdir -p %{-d*}%{!?-d:.%{gem_dir}} \ -\ -CONFIGURE_ARGS="--with-cflags='%{optflags}' $CONFIGURE_ARGS" \\\ -gem install \\\ - -V \\\ - --local \\\ - --build-root %{-d*}%{!?-d:.} \\\ - --force \\\ - --document=ri,rdoc \\\ - %{-n*}%{!?-n:%{gem_name}-%{version}%{?prerelease}.gem} \ -%{nil} - - -# For rubygems packages we want to filter out any provides caused by private -# libs in %%{gem_archdir}. -# -# Note that this must be invoked in the spec file, preferably as -# "%{?rubygems_default_filter}", before any %description block. -%rubygems_default_filter %{expand: \ -%global __provides_exclude_from %{?__provides_exclude_from:%{__provides_exclude_from}|}^%{gem_extdir_mri}/.*\\\\.so$ \ -} - - -# The 'read' command in gemspec_add _depand gemspec_remove_dep macros is not -# essential, but it is usefull to make the sript appear in build log. - - -# %gemspec_add_dep - Add dependency into .gemspec. -# -# Usage: %gemspec_add_dep -g [options] [requirements] -# -# Add dependency named to .gemspec file. The macro adds runtime -# dependency by default. The [requirements] argument can be used to specify -# the dependency constraints more precisely. It is expected to be valid Ruby -# code. -# -# -s Overrides the default .gemspec location. -# -d Add development dependecy. -# -%gemspec_add_dep(g:s:d) \ -read -d '' gemspec_add_dep_script << 'EOR' || : \ - gemspec_file = '%{-s*}%{!?-s:./%{gem_name}.gemspec}' \ - \ - name = '%{-g*}' \ - requirements = %{*}%{!?1:nil} \ - \ - type = :%{!?-d:runtime}%{?-d:development} \ - \ - spec = Gem::Specification.load(gemspec_file) \ - abort("#{gemspec_file} is not accessible.") unless spec \ - \ - dep = spec.dependencies.detect { |d| d.type == type && d.name == name } \ - if dep \ - dep.requirement.concat requirements \ - else \ - spec.public_send "add_#{type}_dependency", name, requirements \ - end \ - File.write gemspec_file, spec.to_ruby \ -EOR\ -echo "$gemspec_add_dep_script" | ruby \ -unset -v gemspec_add_dep_script \ -%{nil} - - -# %gemspec_remove_dep - Remove dependency from .gemspec. -# -# Usage: %gemspec_remove_dep -g [options] [requirements] -# -# Remove dependency named from .gemspec file. The macro removes runtime -# dependency by default. The [requirements] argument can be used to specify -# the dependency constraints more precisely. It is expected to be valid Ruby -# code. The macro fails if these specific requirements can't be removed. -# -# -s Overrides the default .gemspec location. -# -d Remove development dependecy. -# -%gemspec_remove_dep(g:s:d) \ -read -d '' gemspec_remove_dep_script << 'EOR' || : \ - gemspec_file = '%{-s*}%{!?-s:./%{gem_name}.gemspec}' \ - \ - name = '%{-g*}' \ - requirements = %{*}%{!?1:nil} \ - \ - type = :%{!?-d:runtime}%{?-d:development} \ - \ - spec = Gem::Specification.load(gemspec_file) \ - abort("#{gemspec_file} is not accessible.") unless spec \ - \ - dep = spec.dependencies.detect { |d| d.type == type && d.name == name } \ - if dep \ - if requirements \ - requirements = Gem::Requirement.create(requirements).requirements \ - requirements.each do |r| \ - unless dep.requirement.requirements.reject! { |dependency_requirements| dependency_requirements == r } \ - abort("Requirement '#{r.first} #{r.last}' was not possible to remove for dependency '#{dep}'!") \ - end \ - end \ - spec.dependencies.delete dep if dep.requirement.requirements.empty? \ - else \ - spec.dependencies.delete dep \ - end \ - else \ - abort("Dependency '#{name}' was not found!") \ - end \ - File.write gemspec_file, spec.to_ruby \ -EOR\ -echo "$gemspec_remove_dep_script" | ruby \ -unset -v gemspec_remove_dep_script \ -%{nil} diff --git a/operating_system.rb b/operating_system.rb deleted file mode 100644 index 4b2903d..0000000 --- a/operating_system.rb +++ /dev/null @@ -1,146 +0,0 @@ -module Gem - class << self - - ## - # Returns full path of previous but one directory of dir in path - # E.g. for '/usr/share/ruby', 'ruby', it returns '/usr' - - def previous_but_one_dir_to(path, dir) - return unless path - - split_path = path.split(File::SEPARATOR) - File.join(split_path.take_while { |one_dir| one_dir !~ /^#{dir}$/ }[0..-2]) - end - private :previous_but_one_dir_to - - ## - # Detects --install-dir option specified on command line. - - def opt_install_dir? - @opt_install_dir ||= ARGV.include?('--install-dir') || ARGV.include?('-i') - end - private :opt_install_dir? - - ## - # Detects --build-root option specified on command line. - - def opt_build_root? - @opt_build_root ||= ARGV.include?('--build-root') - end - private :opt_build_root? - - ## - # Tries to detect, if arguments and environment variables suggest that - # 'gem install' is executed from rpmbuild. - - def rpmbuild? - @rpmbuild ||= ENV['RPM_PACKAGE_NAME'] && (opt_install_dir? || opt_build_root?) - end - private :rpmbuild? - - ## - # Default gems locations allowed on FHS system (/usr, /usr/share). - # The locations are derived from directories specified during build - # configuration. - - def default_locations - @default_locations ||= { - :system => previous_but_one_dir_to(RbConfig::CONFIG['vendordir'], RbConfig::CONFIG['RUBY_INSTALL_NAME']), - :local => previous_but_one_dir_to(RbConfig::CONFIG['sitedir'], RbConfig::CONFIG['RUBY_INSTALL_NAME']) - } - end - - ## - # For each location provides set of directories for binaries (:bin_dir) - # platform independent (:gem_dir) and dependent (:ext_dir) files. - - def default_dirs - @libdir ||= case RUBY_PLATFORM - when 'java' - RbConfig::CONFIG['datadir'] - else - RbConfig::CONFIG['libdir'] - end - - @default_dirs ||= default_locations.inject(Hash.new) do |hash, location| - destination, path = location - - hash[destination] = if path - { - :bin_dir => File.join(path, RbConfig::CONFIG['bindir'].split(File::SEPARATOR).last), - :gem_dir => File.join(path, RbConfig::CONFIG['datadir'].split(File::SEPARATOR).last, 'gems'), - :ext_dir => File.join(path, @libdir.split(File::SEPARATOR).last, 'gems') - } - else - { - :bin_dir => '', - :gem_dir => '', - :ext_dir => '' - } - end - - hash - end - end - - ## - # Remove methods we are going to override. This avoids "method redefined;" - # warnings otherwise issued by Ruby. - - remove_method :default_dir if method_defined? :default_dir - remove_method :default_path if method_defined? :default_path - remove_method :default_bindir if method_defined? :default_bindir - remove_method :default_ext_dir_for if method_defined? :default_ext_dir_for - - ## - # RubyGems default overrides. - - def default_dir - if opt_build_root? - Gem.default_dirs[:system][:gem_dir] - elsif Process.uid == 0 - Gem.default_dirs[:local][:gem_dir] - else - Gem.user_dir - end - end - - def default_path - path = default_dirs.collect {|location, paths| paths[:gem_dir]} - path.unshift Gem.user_dir if File.exist? Gem.user_home - end - - def default_bindir - if opt_build_root? - Gem.default_dirs[:system][:bin_dir] - elsif Process.uid == 0 - Gem.default_dirs[:local][:bin_dir] - else - File.join [Dir.home, 'bin'] - end - end - - def default_ext_dir_for base_dir - dir = if rpmbuild? - build_dir = base_dir.chomp Gem.default_dirs[:system][:gem_dir] - if build_dir != base_dir - File.join build_dir, Gem.default_dirs[:system][:ext_dir] - end - else - dirs = Gem.default_dirs.detect {|location, paths| paths[:gem_dir] == base_dir} - dirs && dirs.last[:ext_dir] - end - dir && File.join(dir, RbConfig::CONFIG['RUBY_INSTALL_NAME']) - end - - # This method should be available since RubyGems 2.2 until RubyGems 3.0. - # https://github.com/rubygems/rubygems/issues/749 - if method_defined? :install_extension_in_lib - remove_method :install_extension_in_lib - - def install_extension_in_lib - false - end - end - end -end diff --git a/rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch b/rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch deleted file mode 100644 index 54e3ad0..0000000 --- a/rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 8598da6ea02fe69c20f93ac4d5504ca4aba6fe6b Mon Sep 17 00:00:00 2001 -From: SHIBATA Hiroshi -Date: Wed, 9 Aug 2017 16:30:53 +0900 -Subject: [PATCH 1/2] Ignored test for real world default gem. - - Because default gem was enabled after ruby installation that - is `make install` ---- - test/rubygems/test_require.rb | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb -index 936f78fb2..c44c759cc 100644 ---- a/test/rubygems/test_require.rb -+++ b/test/rubygems/test_require.rb -@@ -303,6 +303,12 @@ def test_default_gem_only - - def test_realworld_default_gem - skip "no default gems on ruby < 2.0" unless RUBY_VERSION >= "2" -+ begin -+ gem 'json' -+ rescue Gem::MissingSpecError -+ skip "default gems is only available after ruby installation" -+ end -+ - cmd = <<-RUBY - $stderr = $stdout - require "json" - -From 0dafce8188691a7b942ed4724a0d0e462e74a809 Mon Sep 17 00:00:00 2001 -From: SHIBATA Hiroshi -Date: Wed, 9 Aug 2017 21:06:41 +0900 -Subject: [PATCH 2/2] Fixed grammer - ---- - test/rubygems/test_require.rb | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb -index c44c759cc..edb36f1f3 100644 ---- a/test/rubygems/test_require.rb -+++ b/test/rubygems/test_require.rb -@@ -306,7 +306,7 @@ def test_realworld_default_gem - begin - gem 'json' - rescue Gem::MissingSpecError -- skip "default gems is only available after ruby installation" -+ skip "default gems are only available after ruby installation" - end - - cmd = <<-RUBY diff --git a/rubygems.attr b/rubygems.attr deleted file mode 100644 index f033d43..0000000 --- a/rubygems.attr +++ /dev/null @@ -1,5 +0,0 @@ -%__rubygems_requires %{_rpmconfigdir}/rubygems.req -%__rubygems_provides %{_rpmconfigdir}/rubygems.prov -# In non-gem packages, the %%{gem_name} macro is not available and the macro -# stays unexpanded which leads to "invalid regex" error (rhbz#1154067). -%__rubygems_path ^%{?gem_name:%{gem_spec}}%{!?gem_name:this_should_never_match_anything}$ diff --git a/rubygems.prov b/rubygems.prov deleted file mode 100644 index b7c9777..0000000 --- a/rubygems.prov +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/ruby - -require 'rubygems/package' - -module RubyGemsProv - module Helpers - # If there is some prelease version files, such as rc1 (i.e. non-numeric - # field), prepend this field by tilde instead of dot. - def self.normalize_prerelease(version) - if version.prerelease? - prerelease = version.version.sub /^#{version.release}\./, '' - "#{version.release}-0.1.#{prerelease}" - else - "#{version.release}-1" - end - end - end - - # Reports all functionality gem provides. - def self.provides - while filename = gets - filename.strip! - begin - specification = Gem::Specification.load filename - - puts "rubygem(#{specification.name}) = #{Helpers::normalize_prerelease(specification.version)}" - rescue => e - # Ignore all errors. - end - end - end -end - -if __FILE__ == $0 - RubyGemsProv::provides -end diff --git a/rubygems.req b/rubygems.req deleted file mode 100644 index 4f7a583..0000000 --- a/rubygems.req +++ /dev/null @@ -1,81 +0,0 @@ -#!/usr/bin/ruby - -require 'rubygems/package' - -module RubyGemsReq - module Helpers - # Expands '~>' and '!=' gem requirements. - def self.expand_requirement(requirements) - requirements.inject([]) do |output, r| - output.concat case r.first - when '~>' - expand_pessimistic_requirement(r) - when '!=' - expand_not_equal_requirement(r) - else - [r] - end - end - end - - # Expands the pessimistic version operator '~>' into equivalent '>=' and - # '<' pair. - def self.expand_pessimistic_requirement(requirement) - next_version = Gem::Version.create(requirement.last).bump - return ['>=', requirement.last], ['<', next_version] - end - - # Expands the not equal version operator '!=' into equivalent '<' and - # '>' pair. - def self.expand_not_equal_requirement(requirement) - return ['<', requirement.last], ['>', requirement.last] - end - - # Converts Gem::Requirement into array of requirements strings compatible - # with RPM .spec file. - def self.requirement_versions_to_rpm(requirement) - self.expand_requirement(requirement.requirements).map do |op, version| - version == Gem::Version.new(0) ? "" : "#{op} #{version}" - end - end - end - - # Report RubyGems dependency, versioned if required. - def self.rubygems_dependency(specification) - Helpers::requirement_versions_to_rpm(specification.required_rubygems_version).each do |requirement| - dependency_string = "ruby(rubygems)" - dependency_string += " #{specification.required_rubygems_version}" if requirement && requirement.length > 0 - puts dependency_string - end - end - - # Report all gem dependencies including their version. - def self.gem_depenencies(specification) - specification.runtime_dependencies.each do |dependency| - Helpers::requirement_versions_to_rpm(dependency.requirement).each do |requirement| - dependency_string = "rubygem(#{dependency.name})" - dependency_string += " #{requirement}" if requirement && requirement.length > 0 - puts dependency_string - end - end - end - - # Reports all requirements specified by all provided .gemspec files. - def self.requires - while filename = gets - filename.strip! - begin - specification = Gem::Specification.load filename - - rubygems_dependency(specification) - gem_depenencies(specification) - rescue => e - # Ignore all errors. - end - end - end -end - -if __FILE__ == $0 - RubyGemsReq::requires -end diff --git a/rubygems.spec b/rubygems.spec deleted file mode 100644 index b05960b..0000000 --- a/rubygems.spec +++ /dev/null @@ -1,518 +0,0 @@ -# Upstream git: -# https://github.com/rubygems/rubygems.git -# - -# Bundled libraries versions -%global molinillo_version 0.5.7 - -# Requires versions -%global io_console_version 0.4.6 -%global json_version 2.0.2 -%global openssl_version 2.0.2 -%global psych_version 2.2.2 -%global rdoc_version 5.0.0 - -# The RubyGems library has to stay out of Ruby directory three, since the -# RubyGems should be share by all Ruby implementations. -%global rubygems_dir %(ruby -e "puts RbConfig::CONFIG['rubygemsdir']") - -# TODO: These folders should go into rubygem-filesystem but how to achieve it, -# since noarch package cannot provide arch dependent subpackages? -# http://rpm.org/ticket/78 -%global gem_extdir %{_exec_prefix}/lib{,64}/gems - -# Executing testsuite (enabling %%check section) will cause dependency loop. -# To avoid dependency loop when necessary, please set the following value to 0 -%global enable_check 1 - -# It cannot be relied on %%{_libdir} for noarch packages. Query Ruby for -# the right value. -# https://fedorahosted.org/rel-eng/ticket/5257 -%{!?buildtime_libdir:%global buildtime_libdir $(ruby -rrbconfig -e 'puts RbConfig::CONFIG["libdir"]')} - -Summary: The Ruby standard for packaging ruby libraries -Name: rubygems -Version: 2.6.13 -Release: 104%{?dist} -License: Ruby or MIT - -URL: https://rubygems.org/ -Source0: http://production.cf.rubygems.org/rubygems/%{name}-%{version}.tgz -# Sources from the works by Vít Ondruch -# Please keep Source{1,5,8,9,10} in sync with ruby.spec -Source1: operating_system.rb -Source5: macros.rubygems -# RPM dependency generators. -Source8: rubygems.attr -Source9: rubygems.req -Source10: rubygems.prov -# http://seclists.org/oss-sec/2013/q3/att-576/check_CVE-2013-4287_rb.bin -# Slightly modified for exit status -Source11: check_CVE-2013-4287.rb -# http://seclists.org/oss-sec/2013/q3/att-621/check_CVE-2013-XXXX_rb.bin -# Slightly modified for exit status, -# Also modified to match: -# http://seclists.org/oss-sec/2013/q3/605 -Source12: check_CVE-2013-4363.rb - -# Ignore failing TestGemRequire#test_realworld_default_gem with -# --disable-gems option. -# https://github.com/rubygems/rubygems/pull/1986 -Patch0: rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch - -%{?load:%{SOURCE5}} - -Requires: ruby(release) -Recommends: rubygem(rdoc) >= %{rdoc_version} -Recommends: rubygem(io-console) >= %{io_console_version} -Requires: rubygem(openssl) >= %{openssl_version} -Requires: rubygem(psych) >= %{psych_version} -BuildRequires: ruby(release) -BuildRequires: rubygem(json) -BuildRequires: rubygem(rdoc) -%if %{enable_check} -# For mkmf.rb -BuildRequires: ruby-devel -BuildRequires: rubygem(minitest) < 5 -BuildRequires: rubygem(rake) -# TestGemExtCmakeBuilder -BuildRequires: %{_bindir}/cmake -BuildRequires: git -BuildRequires: rubygem(builder) -%endif -Provides: gem = %{version}-%{release} -Provides: ruby(rubygems) = %{version}-%{release} -# https://github.com/rubygems/rubygems/pull/1189#issuecomment-121600910 -Provides: bundled(rubygem(molinillo)) = %{molinillo_version} -Provides: bundled(rubygem-molinillo) = %{molinillo_version} -BuildArch: noarch - -%description -RubyGems is the Ruby standard for publishing and managing third party -libraries. - -%package devel -Summary: Macros and development tools for packaging RubyGems -License: Ruby or MIT -Requires: ruby(%{name}) = %{version}-%{release} -# Needed for RDoc documentation format generation. -Requires: rubygem(json) >= %{json_version} -Requires: rubygem(rdoc) >= %{rdoc_version} -BuildArch: noarch - -%description devel -Macros and development tools for packaging RubyGems. - -%package doc -Summary: Documentation for %{name} -License: Ruby or MIT -Requires: ruby(%{name}) = %{version}-%{release} -BuildArch: noarch - -%description doc -Documentation for %{name}. - -%prep -%setup -q - -%patch0 -p1 - -%build -# Nothing - -%install -GEM_HOME=%{buildroot}/%{gem_dir} \ - ruby setup.rb \ - --document rdoc,ri \ - --prefix=/ \ - --backtrace \ - --destdir=%{buildroot}/%{rubygems_dir}/ - -mkdir -p %{buildroot}/%{_bindir} -mv %{buildroot}/%{rubygems_dir}/bin/gem %{buildroot}/%{_bindir}/gem -rm -rf %{buildroot}/%{rubygems_dir}/bin - -mv %{buildroot}/%{rubygems_dir}/lib/* %{buildroot}/%{rubygems_dir}/. -# No longer needed -rmdir %{buildroot}%{rubygems_dir}/lib - -# Kill bundled certificates, as they should be part of ca-certificates. -for cert in \ - rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem \ - rubygems.org/AddTrustExternalCARoot.pem \ - index.rubygems.org/GlobalSignRootCA.pem -do - rm %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert - rm -r $(dirname %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert) -done -# Ensure there is not forgotten any certificate. -test ! "$(ls -A %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/ 2>/dev/null)" - -# Move macros file into proper place and replace the %%{name} macro, since it -# would be wrongly evaluated during build of other packages. -mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d -install -m 644 %{SOURCE5} %{buildroot}%{_rpmconfigdir}/macros.d/macros.rubygems -sed -i "s/%%{name}/ruby/" %{buildroot}%{_rpmconfigdir}/macros.d/macros.rubygems - -# Install dependency generators. -mkdir -p %{buildroot}%{_rpmconfigdir}/fileattrs -install -m 644 %{SOURCE8} %{buildroot}%{_rpmconfigdir}/fileattrs -install -m 755 %{SOURCE9} %{buildroot}%{_rpmconfigdir} -install -m 755 %{SOURCE10} %{buildroot}%{_rpmconfigdir} - -# Install custom operating_system.rb. -mkdir -p %{buildroot}%{rubygems_dir}/rubygems/defaults -install -cpm 0644 %{SOURCE1} %{buildroot}%{rubygems_dir}/rubygems/defaults/ - -# Create gem folders. -mkdir -p %{buildroot}%{gem_dir}/{cache,gems,specifications,extensions,doc} -mkdir -p %{buildroot}%{gem_extdir}/ruby - -# Create below -mkdir -p %{buildroot}%{gem_dir}/specifications/default - -%check -# Create an empty operating_system.rb, so that the system's one doesn't get used, -# otherwise the test suite fails. -mkdir -p lib/rubygems/defaults -touch lib/rubygems/defaults/operating_system.rb - -# It is necessary to specify the paths to let the test suite pass." -export GEM_PATH=%{gem_dir} -export RUBYOPT="--disable-gems -Ilib:test" - -# Check Molinillo version correctness. -[ "`ruby -e 'module Gem; module Resolver; end; end; require %{rubygems/resolver/molinillo/lib/molinillo/gem_metadata}; puts Gem::Resolver::Molinillo::VERSION' | tail -1`" \ - == '%{molinillo_version}' ] - -%if %{enable_check} -ruby -e 'Dir.glob "./test/**/test_*.rb", &method(:require)' - -# CVE vulnerability check -ruby %{SOURCE11} -ruby %{SOURCE12} -%endif - -%files -%doc README* -%doc History.txt -%license MIT.txt LICENSE.txt -%doc CVE-*txt -%{_bindir}/gem -%dir %{rubygems_dir} -%{rubygems_dir}/rubygems -%{rubygems_dir}/rubygems.rb -%{rubygems_dir}/ubygems.rb - -# Explicitly include only RubyGems directory strucure to avoid accidentally -# packaged content. -%dir %{gem_dir} -%dir %{gem_dir}/build_info -%dir %{gem_dir}/cache -%dir %{gem_dir}/doc -%dir %{gem_dir}/extensions -%dir %{gem_dir}/gems -%dir %{gem_dir}/specifications -%dir %{gem_dir}/specifications/default -%dir %{_exec_prefix}/lib*/gems -%dir %{_exec_prefix}/lib*/gems/ruby - -%files devel -%{_rpmconfigdir}/macros.d/macros.rubygems -%{_rpmconfigdir}/fileattrs/rubygems.attr -%{_rpmconfigdir}/rubygems.req -%{_rpmconfigdir}/rubygems.prov - -%files doc -%doc %{gem_dir}/doc/* - - -%changelog -* Fri Jul 26 2019 Fedora Release Engineering - 2.6.13-104 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Sat Feb 02 2019 Fedora Release Engineering - 2.6.13-103 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Sat Jul 14 2018 Fedora Release Engineering - 2.6.13-102 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Fri Feb 09 2018 Fedora Release Engineering - 2.6.13-101 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Tue Sep 05 2017 Vít Ondruch - 2.6.13-100 -- Update to RubyGems 2.6.13. - -* Thu Jul 27 2017 Fedora Release Engineering - 2.6.10-101 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Tue Mar 07 2017 Vít Ondruch - 2.6.10-100 -- Update to RubyGems 2.6.10. - -* Sat Feb 11 2017 Fedora Release Engineering - 2.4.8-102 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Thu Feb 04 2016 Fedora Release Engineering - 2.4.8-101 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Fri Jul 10 2015 Vít Ondruch - 2.4.8-100 -- Update to RubyGems 2.4.8. - -* Fri Jun 19 2015 Fedora Release Engineering -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Sun Jun 08 2014 Fedora Release Engineering -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Wed May 07 2014 Vít Ondruch - 2.2.2-100 -- Update to RubyGems 2.2.2. - -* Fri Jan 10 2014 Mamoru TASAKA - 2.1.11-115 -- Add extension directory also to WhichCommand::gem_paths (bug 1051169) - -* Fri Dec 13 2013 Mamoru TASAKA - 2.1.11-114 -- Add extension directory to contains_requirable_file (bug 1041391) - -* Thu Nov 14 2013 Mamoru TASAKA - 2.1.11-113 -- Update to 2.1.11 - -* Sat Oct 26 2013 Mamoru TASAKA - 2.1.10-112 -- Update to 2.1.10 - -* Mon Oct 21 2013 Mamoru TASAKA - 2.1.9-111 -- Update to 2.1.9 - -* Tue Oct 15 2013 Mamoru TASAKA - 2.0.12-110 -- Backport from 2.1.x branch to fix concurrent requires issue - (ref:bug 989574) - -* Tue Oct 15 2013 Mamoru TASAKA - 2.0.12-109 -- Update to 2.0.12 -- Un-unlink %%{_sysconfdir}/pki/tls/cert.pem with discussion with - Vít Ondruch - -* Wed Oct 9 2013 Mamoru TASAKA - 2.0.11-108 -- Add BR: cmake for TestGemExtCmakeBuilder - -* Wed Oct 9 2013 Mamoru TASAKA - 2.0.11-107 -- Update to 2.0.11 - -* Wed Sep 25 2013 Mamoru TASAKA - 2.0.10-106 -- Update to 2.0.10 (fix for CVE-2013-4363 included) - -* Mon Sep 23 2013 Mamoru TASAKA - 2.0.9-105 -- Update to 2.0.9 -- Fix %%gem_dir/doc ownership (bug 1008866) -- Patch for CVE-2013-4363 - -* Tue Sep 10 2013 Mamoru TASAKA - 2.0.8-104 -- Update to 2.0.8, which fixes CVE-2013-4287 - -* Fri Aug 16 2013 Mamoru TASAKA - 2.0.7-103 -- Update to 2.0.7 - -* Thu Aug 15 2013 Mamoru TASAKA - 2.0.6-102 -- Update to 2.0.6 - -* Sun Aug 04 2013 Fedora Release Engineering - 2.0.5-101 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Mon Jul 15 2013 Mamoru TASAKA - 2.0.5-100 -- Update to 2.0.5 -- Show backtrace when %%gem_install fails - -* Thu Jul 04 2013 Vít Ondruch - 2.0.3-2 -- Fix RubyGems search paths when building gems with native extension - (rhbz#979133). - -* Thu Mar 21 2013 Mamoru TASAKA - 2.0.3-1 -- Update to 2.0.3 - -* Fri Mar 08 2013 Mamoru TASAKA - 2.0.0-108 -- Don't mark rpm config file as %%config (fpc#259) - -* Tue Mar 05 2013 Vít Ondruch - 2.0.0-107 -- Avoid "method redefined;" warnings due to modified operating_system.rb. - -* Tue Mar 5 2013 Mamoru Tasaka - 2.0.0-106 -- Fix regex for creating native extension directory - (Vít Ondruch ) - -* Sun Mar 3 2013 Mamoru TASAKA - 2.0.0-105 -- Kill creating unneeded LOCAL_LIBS\ = directory under - %%gem_libdir when building native extension - -* Wed Feb 27 2013 Mamoru TASAKA - 2.0.0-104 -- Kill %%gem_extdir - -* Tue Feb 26 2013 Vít Ondruch - 2.0.0-103 -- Prevent squash of %%gem_install with following line. - -* Mon Feb 25 2013 Mamoru TASAKA - 2.0.0-102 -- Provide %%gem_extdir_mri - -* Mon Feb 25 2013 Mamoru TASAKA - 2.0.0-101 -- Split out ri-generated documentation - -* Mon Feb 25 2013 Mamoru TASAKA - 2.0.0-100 -- Update to 2.0.0 - -* Mon Feb 25 2013 Mamoru TASAKA - 1.8.25-3 -- Backport %%gem_install macro - -* Tue Feb 5 2013 Mamoru TASAKA - 1.8.25-2 -- Fix rubygem(json) path - -* Tue Feb 5 2013 Mamoru TASAKA - 1.8.25-1 -- 1.8.25 - -* Tue Feb 5 2013 Mamoru TASAKA - 1.8.24-4 -- Bump release - -* Wed Sep 05 2012 Vít Ondruch - 1.8.24-3 -- Fixed Fedora 18 mass rebuild issue. - -* Sat Jul 21 2012 Fedora Release Engineering - 1.8.24-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Sat Apr 28 2012 Mamoru Tasaka - 1.8.24-1 -- 1.8.24 - -* Sat Apr 21 2012 Mamoru Tasaka - 1.8.23-20 -- 1.8.23 -- Use system-wide cert.pem - -* Wed Apr 18 2012 Mamoru Tasaka - 1.8.22-1 -- 1.8.22 - -* Thu Jan 26 2012 Vít Ondruch - 1.8.15-2 -- Make test suite green. - -* Thu Jan 26 2012 Mamoru Tasaka - 1.8.15-1 -- 1.8.15 - -* Thu Jan 26 2012 Mamoru Tasaka - 1.8.11-10 -- Incorpolate works by Vít Ondruch - made for ruby 1.9.x - -* Sat Jan 14 2012 Fedora Release Engineering - 1.8.11-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild - -* Tue Nov 22 2011 Mamoru Tasaka - 1.8.11-1 -- 1.8.11 - -* Sun Aug 28 2011 Mamoru Tasaka - 1.8.10-1 -- 1.8.10 - -* Thu Aug 25 2011 Mamoru Tasaka - 1.8.9-1 -- 1.8.9 - -* Sun Aug 21 2011 Mamoru Tasaka - 1.8.8-1 -- 1.8.8 - -* Sat Aug 6 2011 Mamoru Tasaka - 1.8.7-1 -- 1.8.7 - -* Wed Jul 27 2011 Mamoru Tasaka - 1.8.6-1 -- 1.8.6 - -* Sat Jun 25 2011 Mamoru Tasaka - 1.8.5-2 -- Fix Gem.latest_load_paths (for rubygem-gettext FTBFS) -- Fix Gem.all_load_paths (for rubygem-gettext FTBFS, although it is already - deprecated from 1.7.0) - -* Wed Jun 1 2011 Mamoru Tasaka - 1.8.5-1 -- Try 1.8.5 - -* Tue May 24 2011 Mamoru Tasaka - 1.7.2-2 -- Handle gemspec file with containing "invalid" date format - generated with psych (ref: bug 706914) - -* Sat Apr 30 2011 Mamoru Tasaka - 1.7.2-1 -- Update to 1.7.2 - -* Sat Mar 12 2011 Mamoru Tasaka - 1.6.2-1 -- Update to 1.6.2 - -* Fri Mar 4 2011 Mamoru Tasaka - 1.6.1-1 -- Update to 1.6.1 -- Patch2, 4 upstreamed - -* Thu Mar 3 2011 Mamoru Tasaka - 1.6.0-1 -- Update to 1.6.0 - -* Sun Feb 27 2011 Mamoru Tasaka - 1.5.3-1 -- Update to 1.5.3 - -* Sun Feb 20 2011 Mamoru Tasaka - 1.5.2-1 -- Update to 1.5.2 -- Show rdoc process verbosely in verbose mode - -* Fri Feb 11 2011 Mamoru Tasaka - 1.5.0-2 -- Modify in-sync patch to keep the original behavior (for testsuite) -- Patch to make testsuite succeed, enabling testsuite - -* Thu Feb 10 2011 Mamoru Tasaka - 1.5.0-1 -- Update to 1.5.0 - -* Wed Feb 09 2011 Fedora Release Engineering - 1.3.7-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - -* Fri Oct 8 2010 Mamoru Tasaka - 1.3.7-2 -- Show build process of extension library in sync - -* Mon May 17 2010 Mamoru Tasaka - 1.3.7-1 -- Update to 1.3.7, dropping upstreamed patch - -* Wed Apr 28 2010 Mamoru Tasaka - 1.3.6-1 -- Update to 1.3.6 -- Show prefix with gem contents by default as shown in --help - -* Mon Sep 21 2009 Mamoru Tasaka - 1.3.5-1 -- Update to 1.3.5 - -* Sun Jul 26 2009 Fedora Release Engineering - 1.3.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild - -* Wed Feb 25 2009 Fedora Release Engineering - 1.3.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild - -* Sun Nov 09 2008 Jeroen van Meeuwen - 1.3.1-1 -- New upstream version - -* Tue Sep 16 2008 David Lutterkort - 1.2.0-2 -- Bump release because I forgot to check in newer patch - -* Tue Sep 16 2008 David Lutterkort - 1.2.0-1 -- Updated for new setup.rb -- Simplified by removing conditionals that were needed for EL-4; - there's just no way we can support that with newer rubygems - -* Wed Sep 3 2008 Tom "spot" Callaway - 0.9.4-2 -- fix license tag - -* Fri Jul 27 2007 David Lutterkort - 0.9.4-1 -- Conditionalize so it builds on RHEL4 - -* Tue Feb 27 2007 David Lutterkort - 0.9.2-1 -- New version -- Add patch0 to fix multilib sensitivity of Gem::dir (bz 227400) - -* Thu Jan 18 2007 David Lutterkort - 0.9.1-1 -- New version; include LICENSE.txt and GPL.txt -- avoid '..' in gem_dir to work around a bug in gem installer -- add ruby-rdoc to requirements - -* Tue Jan 2 2007 David Lutterkort - 0.9.0-2 -- Fix gem_dir to be arch independent -- Mention dual licensing in License field - -* Fri Dec 22 2006 David Lutterkort - 0.9.0-1 -- Updated to 0.9.0 -- Changed to agree with Fedora Extras guidelines - -* Mon Jan 9 2006 David Lutterkort - 0.8.11-1 -- Updated for 0.8.11 - -* Sun Oct 10 2004 Omar Kilani 0.8.1-1ts -- First version of the package diff --git a/sources b/sources deleted file mode 100644 index 2e443bc..0000000 --- a/sources +++ /dev/null @@ -1 +0,0 @@ -SHA512 (rubygems-2.6.13.tgz) = c952b6061a9a0778db304c3aa5bea693e71ae2564abfb19f8b123eef66eb1e3877fc7c36f4f1527da97bb320870cbfd4574ac57ad88e850a44fadd67ebdac152 From 04e86d73e87d2ccfc5a1f88ad656cc3a4ded24fa Mon Sep 17 00:00:00 2001 From: Tomas Hrcka Date: Mon, 16 Sep 2019 13:36:06 +0200 Subject: [PATCH 10/33] Revert "rubygems fails to build from source: https://bugzilla.redhat.com/show_bug.cgi?id=1675964" This reverts commit 366607586d95b505277165fce54d9494650e8b91. Unretirement request: https://pagure.io/releng/issue/8797 --- .gitignore | 37 ++ check_CVE-2013-4287.rb | 29 + check_CVE-2013-4363.rb | 29 + dead.package | 1 - macros.rubygems | 130 +++++ operating_system.rb | 146 +++++ ...ored-test-for-real-world-default-gem.patch | 51 ++ rubygems.attr | 5 + rubygems.prov | 36 ++ rubygems.req | 81 +++ rubygems.spec | 518 ++++++++++++++++++ sources | 1 + 12 files changed, 1063 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 check_CVE-2013-4287.rb create mode 100644 check_CVE-2013-4363.rb delete mode 100644 dead.package create mode 100644 macros.rubygems create mode 100644 operating_system.rb create mode 100644 rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch create mode 100644 rubygems.attr create mode 100644 rubygems.prov create mode 100644 rubygems.req create mode 100644 rubygems.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..be25674 --- /dev/null +++ b/.gitignore @@ -0,0 +1,37 @@ +rubygems-1.3.7.tgz +/rubygems-1.5.0.tgz +/rubygems-1.5.2.tgz +/rubygems-1.5.3.tgz +/rubygems-1.6.0.tgz +/rubygems-1.6.1.tgz +/rubygems-1.6.2.tgz +/rubygems-1.7.2.tgz +/rubygems-1.8.5.tgz +/rubygems-1.8.6.tgz +/rubygems-1.8.7.tgz +/rubygems-1.8.8.tgz +/rubygems-1.8.9.tgz +/rubygems-1.8.10.tgz +/rubygems-1.8.11.tgz +/rubygems-1.8.15.tgz +/rubygems-1.8.22.tgz +/rubygems-1.8.23.tgz +/rubygems-1.8.24.tgz +/rubygems-1.8.25.tgz +/rubygems-2.0.0.tgz +/rubygems-2.0.3.tgz +/rubygems-2.0.5.tgz +/rubygems-2.0.6.tgz +/rubygems-2.0.7.tgz +/rubygems-2.0.8.tgz +/rubygems-2.0.9.tgz +/rubygems-2.0.10.tgz +/rubygems-2.0.11.tgz +/rubygems-2.0.12.tgz +/rubygems-2.1.9.tgz +/rubygems-2.1.10.tgz +/rubygems-2.1.11.tgz +/rubygems-2.2.2.tgz +/rubygems-2.4.8.tgz +/rubygems-2.6.10.tgz +/rubygems-2.6.13.tgz diff --git a/check_CVE-2013-4287.rb b/check_CVE-2013-4287.rb new file mode 100644 index 0000000..a643b57 --- /dev/null +++ b/check_CVE-2013-4287.rb @@ -0,0 +1,29 @@ +require 'benchmark' +require 'rubygems' + +valid = Benchmark.measure do + Gem::Version.new '1.22.333.4444.55555.666666.7777777' +end + +puts 'Valid version time:' +puts valid + +invalid = Benchmark.measure do + begin + Gem::Version.new '1.22.333.4444.55555.666666.7777777.' + rescue + end +end + +puts 'Invalid version time:' +puts invalid + +n = (valid.real - invalid.real).abs + +if 0.1 < n then + puts 'You are vulnerable to CVE-2013-4287.' + exit(1) +else + puts 'You are NOT vulnerable to CVE-2013-4287.' +end + diff --git a/check_CVE-2013-4363.rb b/check_CVE-2013-4363.rb new file mode 100644 index 0000000..7843fcd --- /dev/null +++ b/check_CVE-2013-4363.rb @@ -0,0 +1,29 @@ +require 'benchmark' +require 'rubygems' + +valid = Benchmark.measure do + Gem::Version.new '111111111111111111111111' +end + +puts 'Valid version time:' +puts valid + +invalid = Benchmark.measure do + begin + Gem::Version.new '111111111111111111111111.' + rescue + end +end + +puts 'Invalid version time:' +puts invalid + +n = (valid.real - invalid.real).abs + +if 0.1 < n then + puts 'You are vulnerable to CVE-2013-XXXX.' + exit(1) +else + puts 'You are NOT vulnerable to CVE-2013-XXXX.' +end + diff --git a/dead.package b/dead.package deleted file mode 100644 index b4bbd71..0000000 --- a/dead.package +++ /dev/null @@ -1 +0,0 @@ -rubygems fails to build from source: https://bugzilla.redhat.com/show_bug.cgi?id=1675964 diff --git a/macros.rubygems b/macros.rubygems new file mode 100644 index 0000000..0652ec6 --- /dev/null +++ b/macros.rubygems @@ -0,0 +1,130 @@ +# The RubyGems root folder. +%gem_dir %{_datadir}/gems +%gem_archdir %{_libdir}/gems + +# Common gem locations and files. +%gem_instdir %{gem_dir}/gems/%{gem_name}-%{version}%{?prerelease} +%gem_extdir_mri %{gem_archdir}/%{name}/%{gem_name}-%{version}%{?prerelease} +%gem_libdir %{gem_instdir}/lib +%gem_cache %{gem_dir}/cache/%{gem_name}-%{version}%{?prerelease}.gem +%gem_spec %{gem_dir}/specifications/%{gem_name}-%{version}%{?prerelease}.gemspec +%gem_docdir %{gem_dir}/doc/%{gem_name}-%{version}%{?prerelease} + + +# %gem_install - Install gem into appropriate directory. +# +# Usage: %gem_install [options] +# +# -n Overrides gem file name for installation. +# -d Set installation directory. +# +%gem_install(d:n:) \ +mkdir -p %{-d*}%{!?-d:.%{gem_dir}} \ +\ +CONFIGURE_ARGS="--with-cflags='%{optflags}' $CONFIGURE_ARGS" \\\ +gem install \\\ + -V \\\ + --local \\\ + --build-root %{-d*}%{!?-d:.} \\\ + --force \\\ + --document=ri,rdoc \\\ + %{-n*}%{!?-n:%{gem_name}-%{version}%{?prerelease}.gem} \ +%{nil} + + +# For rubygems packages we want to filter out any provides caused by private +# libs in %%{gem_archdir}. +# +# Note that this must be invoked in the spec file, preferably as +# "%{?rubygems_default_filter}", before any %description block. +%rubygems_default_filter %{expand: \ +%global __provides_exclude_from %{?__provides_exclude_from:%{__provides_exclude_from}|}^%{gem_extdir_mri}/.*\\\\.so$ \ +} + + +# The 'read' command in gemspec_add _depand gemspec_remove_dep macros is not +# essential, but it is usefull to make the sript appear in build log. + + +# %gemspec_add_dep - Add dependency into .gemspec. +# +# Usage: %gemspec_add_dep -g [options] [requirements] +# +# Add dependency named to .gemspec file. The macro adds runtime +# dependency by default. The [requirements] argument can be used to specify +# the dependency constraints more precisely. It is expected to be valid Ruby +# code. +# +# -s Overrides the default .gemspec location. +# -d Add development dependecy. +# +%gemspec_add_dep(g:s:d) \ +read -d '' gemspec_add_dep_script << 'EOR' || : \ + gemspec_file = '%{-s*}%{!?-s:./%{gem_name}.gemspec}' \ + \ + name = '%{-g*}' \ + requirements = %{*}%{!?1:nil} \ + \ + type = :%{!?-d:runtime}%{?-d:development} \ + \ + spec = Gem::Specification.load(gemspec_file) \ + abort("#{gemspec_file} is not accessible.") unless spec \ + \ + dep = spec.dependencies.detect { |d| d.type == type && d.name == name } \ + if dep \ + dep.requirement.concat requirements \ + else \ + spec.public_send "add_#{type}_dependency", name, requirements \ + end \ + File.write gemspec_file, spec.to_ruby \ +EOR\ +echo "$gemspec_add_dep_script" | ruby \ +unset -v gemspec_add_dep_script \ +%{nil} + + +# %gemspec_remove_dep - Remove dependency from .gemspec. +# +# Usage: %gemspec_remove_dep -g [options] [requirements] +# +# Remove dependency named from .gemspec file. The macro removes runtime +# dependency by default. The [requirements] argument can be used to specify +# the dependency constraints more precisely. It is expected to be valid Ruby +# code. The macro fails if these specific requirements can't be removed. +# +# -s Overrides the default .gemspec location. +# -d Remove development dependecy. +# +%gemspec_remove_dep(g:s:d) \ +read -d '' gemspec_remove_dep_script << 'EOR' || : \ + gemspec_file = '%{-s*}%{!?-s:./%{gem_name}.gemspec}' \ + \ + name = '%{-g*}' \ + requirements = %{*}%{!?1:nil} \ + \ + type = :%{!?-d:runtime}%{?-d:development} \ + \ + spec = Gem::Specification.load(gemspec_file) \ + abort("#{gemspec_file} is not accessible.") unless spec \ + \ + dep = spec.dependencies.detect { |d| d.type == type && d.name == name } \ + if dep \ + if requirements \ + requirements = Gem::Requirement.create(requirements).requirements \ + requirements.each do |r| \ + unless dep.requirement.requirements.reject! { |dependency_requirements| dependency_requirements == r } \ + abort("Requirement '#{r.first} #{r.last}' was not possible to remove for dependency '#{dep}'!") \ + end \ + end \ + spec.dependencies.delete dep if dep.requirement.requirements.empty? \ + else \ + spec.dependencies.delete dep \ + end \ + else \ + abort("Dependency '#{name}' was not found!") \ + end \ + File.write gemspec_file, spec.to_ruby \ +EOR\ +echo "$gemspec_remove_dep_script" | ruby \ +unset -v gemspec_remove_dep_script \ +%{nil} diff --git a/operating_system.rb b/operating_system.rb new file mode 100644 index 0000000..4b2903d --- /dev/null +++ b/operating_system.rb @@ -0,0 +1,146 @@ +module Gem + class << self + + ## + # Returns full path of previous but one directory of dir in path + # E.g. for '/usr/share/ruby', 'ruby', it returns '/usr' + + def previous_but_one_dir_to(path, dir) + return unless path + + split_path = path.split(File::SEPARATOR) + File.join(split_path.take_while { |one_dir| one_dir !~ /^#{dir}$/ }[0..-2]) + end + private :previous_but_one_dir_to + + ## + # Detects --install-dir option specified on command line. + + def opt_install_dir? + @opt_install_dir ||= ARGV.include?('--install-dir') || ARGV.include?('-i') + end + private :opt_install_dir? + + ## + # Detects --build-root option specified on command line. + + def opt_build_root? + @opt_build_root ||= ARGV.include?('--build-root') + end + private :opt_build_root? + + ## + # Tries to detect, if arguments and environment variables suggest that + # 'gem install' is executed from rpmbuild. + + def rpmbuild? + @rpmbuild ||= ENV['RPM_PACKAGE_NAME'] && (opt_install_dir? || opt_build_root?) + end + private :rpmbuild? + + ## + # Default gems locations allowed on FHS system (/usr, /usr/share). + # The locations are derived from directories specified during build + # configuration. + + def default_locations + @default_locations ||= { + :system => previous_but_one_dir_to(RbConfig::CONFIG['vendordir'], RbConfig::CONFIG['RUBY_INSTALL_NAME']), + :local => previous_but_one_dir_to(RbConfig::CONFIG['sitedir'], RbConfig::CONFIG['RUBY_INSTALL_NAME']) + } + end + + ## + # For each location provides set of directories for binaries (:bin_dir) + # platform independent (:gem_dir) and dependent (:ext_dir) files. + + def default_dirs + @libdir ||= case RUBY_PLATFORM + when 'java' + RbConfig::CONFIG['datadir'] + else + RbConfig::CONFIG['libdir'] + end + + @default_dirs ||= default_locations.inject(Hash.new) do |hash, location| + destination, path = location + + hash[destination] = if path + { + :bin_dir => File.join(path, RbConfig::CONFIG['bindir'].split(File::SEPARATOR).last), + :gem_dir => File.join(path, RbConfig::CONFIG['datadir'].split(File::SEPARATOR).last, 'gems'), + :ext_dir => File.join(path, @libdir.split(File::SEPARATOR).last, 'gems') + } + else + { + :bin_dir => '', + :gem_dir => '', + :ext_dir => '' + } + end + + hash + end + end + + ## + # Remove methods we are going to override. This avoids "method redefined;" + # warnings otherwise issued by Ruby. + + remove_method :default_dir if method_defined? :default_dir + remove_method :default_path if method_defined? :default_path + remove_method :default_bindir if method_defined? :default_bindir + remove_method :default_ext_dir_for if method_defined? :default_ext_dir_for + + ## + # RubyGems default overrides. + + def default_dir + if opt_build_root? + Gem.default_dirs[:system][:gem_dir] + elsif Process.uid == 0 + Gem.default_dirs[:local][:gem_dir] + else + Gem.user_dir + end + end + + def default_path + path = default_dirs.collect {|location, paths| paths[:gem_dir]} + path.unshift Gem.user_dir if File.exist? Gem.user_home + end + + def default_bindir + if opt_build_root? + Gem.default_dirs[:system][:bin_dir] + elsif Process.uid == 0 + Gem.default_dirs[:local][:bin_dir] + else + File.join [Dir.home, 'bin'] + end + end + + def default_ext_dir_for base_dir + dir = if rpmbuild? + build_dir = base_dir.chomp Gem.default_dirs[:system][:gem_dir] + if build_dir != base_dir + File.join build_dir, Gem.default_dirs[:system][:ext_dir] + end + else + dirs = Gem.default_dirs.detect {|location, paths| paths[:gem_dir] == base_dir} + dirs && dirs.last[:ext_dir] + end + dir && File.join(dir, RbConfig::CONFIG['RUBY_INSTALL_NAME']) + end + + # This method should be available since RubyGems 2.2 until RubyGems 3.0. + # https://github.com/rubygems/rubygems/issues/749 + if method_defined? :install_extension_in_lib + remove_method :install_extension_in_lib + + def install_extension_in_lib + false + end + end + end +end diff --git a/rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch b/rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch new file mode 100644 index 0000000..54e3ad0 --- /dev/null +++ b/rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch @@ -0,0 +1,51 @@ +From 8598da6ea02fe69c20f93ac4d5504ca4aba6fe6b Mon Sep 17 00:00:00 2001 +From: SHIBATA Hiroshi +Date: Wed, 9 Aug 2017 16:30:53 +0900 +Subject: [PATCH 1/2] Ignored test for real world default gem. + + Because default gem was enabled after ruby installation that + is `make install` +--- + test/rubygems/test_require.rb | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb +index 936f78fb2..c44c759cc 100644 +--- a/test/rubygems/test_require.rb ++++ b/test/rubygems/test_require.rb +@@ -303,6 +303,12 @@ def test_default_gem_only + + def test_realworld_default_gem + skip "no default gems on ruby < 2.0" unless RUBY_VERSION >= "2" ++ begin ++ gem 'json' ++ rescue Gem::MissingSpecError ++ skip "default gems is only available after ruby installation" ++ end ++ + cmd = <<-RUBY + $stderr = $stdout + require "json" + +From 0dafce8188691a7b942ed4724a0d0e462e74a809 Mon Sep 17 00:00:00 2001 +From: SHIBATA Hiroshi +Date: Wed, 9 Aug 2017 21:06:41 +0900 +Subject: [PATCH 2/2] Fixed grammer + +--- + test/rubygems/test_require.rb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb +index c44c759cc..edb36f1f3 100644 +--- a/test/rubygems/test_require.rb ++++ b/test/rubygems/test_require.rb +@@ -306,7 +306,7 @@ def test_realworld_default_gem + begin + gem 'json' + rescue Gem::MissingSpecError +- skip "default gems is only available after ruby installation" ++ skip "default gems are only available after ruby installation" + end + + cmd = <<-RUBY diff --git a/rubygems.attr b/rubygems.attr new file mode 100644 index 0000000..f033d43 --- /dev/null +++ b/rubygems.attr @@ -0,0 +1,5 @@ +%__rubygems_requires %{_rpmconfigdir}/rubygems.req +%__rubygems_provides %{_rpmconfigdir}/rubygems.prov +# In non-gem packages, the %%{gem_name} macro is not available and the macro +# stays unexpanded which leads to "invalid regex" error (rhbz#1154067). +%__rubygems_path ^%{?gem_name:%{gem_spec}}%{!?gem_name:this_should_never_match_anything}$ diff --git a/rubygems.prov b/rubygems.prov new file mode 100644 index 0000000..b7c9777 --- /dev/null +++ b/rubygems.prov @@ -0,0 +1,36 @@ +#!/usr/bin/ruby + +require 'rubygems/package' + +module RubyGemsProv + module Helpers + # If there is some prelease version files, such as rc1 (i.e. non-numeric + # field), prepend this field by tilde instead of dot. + def self.normalize_prerelease(version) + if version.prerelease? + prerelease = version.version.sub /^#{version.release}\./, '' + "#{version.release}-0.1.#{prerelease}" + else + "#{version.release}-1" + end + end + end + + # Reports all functionality gem provides. + def self.provides + while filename = gets + filename.strip! + begin + specification = Gem::Specification.load filename + + puts "rubygem(#{specification.name}) = #{Helpers::normalize_prerelease(specification.version)}" + rescue => e + # Ignore all errors. + end + end + end +end + +if __FILE__ == $0 + RubyGemsProv::provides +end diff --git a/rubygems.req b/rubygems.req new file mode 100644 index 0000000..4f7a583 --- /dev/null +++ b/rubygems.req @@ -0,0 +1,81 @@ +#!/usr/bin/ruby + +require 'rubygems/package' + +module RubyGemsReq + module Helpers + # Expands '~>' and '!=' gem requirements. + def self.expand_requirement(requirements) + requirements.inject([]) do |output, r| + output.concat case r.first + when '~>' + expand_pessimistic_requirement(r) + when '!=' + expand_not_equal_requirement(r) + else + [r] + end + end + end + + # Expands the pessimistic version operator '~>' into equivalent '>=' and + # '<' pair. + def self.expand_pessimistic_requirement(requirement) + next_version = Gem::Version.create(requirement.last).bump + return ['>=', requirement.last], ['<', next_version] + end + + # Expands the not equal version operator '!=' into equivalent '<' and + # '>' pair. + def self.expand_not_equal_requirement(requirement) + return ['<', requirement.last], ['>', requirement.last] + end + + # Converts Gem::Requirement into array of requirements strings compatible + # with RPM .spec file. + def self.requirement_versions_to_rpm(requirement) + self.expand_requirement(requirement.requirements).map do |op, version| + version == Gem::Version.new(0) ? "" : "#{op} #{version}" + end + end + end + + # Report RubyGems dependency, versioned if required. + def self.rubygems_dependency(specification) + Helpers::requirement_versions_to_rpm(specification.required_rubygems_version).each do |requirement| + dependency_string = "ruby(rubygems)" + dependency_string += " #{specification.required_rubygems_version}" if requirement && requirement.length > 0 + puts dependency_string + end + end + + # Report all gem dependencies including their version. + def self.gem_depenencies(specification) + specification.runtime_dependencies.each do |dependency| + Helpers::requirement_versions_to_rpm(dependency.requirement).each do |requirement| + dependency_string = "rubygem(#{dependency.name})" + dependency_string += " #{requirement}" if requirement && requirement.length > 0 + puts dependency_string + end + end + end + + # Reports all requirements specified by all provided .gemspec files. + def self.requires + while filename = gets + filename.strip! + begin + specification = Gem::Specification.load filename + + rubygems_dependency(specification) + gem_depenencies(specification) + rescue => e + # Ignore all errors. + end + end + end +end + +if __FILE__ == $0 + RubyGemsReq::requires +end diff --git a/rubygems.spec b/rubygems.spec new file mode 100644 index 0000000..b05960b --- /dev/null +++ b/rubygems.spec @@ -0,0 +1,518 @@ +# Upstream git: +# https://github.com/rubygems/rubygems.git +# + +# Bundled libraries versions +%global molinillo_version 0.5.7 + +# Requires versions +%global io_console_version 0.4.6 +%global json_version 2.0.2 +%global openssl_version 2.0.2 +%global psych_version 2.2.2 +%global rdoc_version 5.0.0 + +# The RubyGems library has to stay out of Ruby directory three, since the +# RubyGems should be share by all Ruby implementations. +%global rubygems_dir %(ruby -e "puts RbConfig::CONFIG['rubygemsdir']") + +# TODO: These folders should go into rubygem-filesystem but how to achieve it, +# since noarch package cannot provide arch dependent subpackages? +# http://rpm.org/ticket/78 +%global gem_extdir %{_exec_prefix}/lib{,64}/gems + +# Executing testsuite (enabling %%check section) will cause dependency loop. +# To avoid dependency loop when necessary, please set the following value to 0 +%global enable_check 1 + +# It cannot be relied on %%{_libdir} for noarch packages. Query Ruby for +# the right value. +# https://fedorahosted.org/rel-eng/ticket/5257 +%{!?buildtime_libdir:%global buildtime_libdir $(ruby -rrbconfig -e 'puts RbConfig::CONFIG["libdir"]')} + +Summary: The Ruby standard for packaging ruby libraries +Name: rubygems +Version: 2.6.13 +Release: 104%{?dist} +License: Ruby or MIT + +URL: https://rubygems.org/ +Source0: http://production.cf.rubygems.org/rubygems/%{name}-%{version}.tgz +# Sources from the works by Vít Ondruch +# Please keep Source{1,5,8,9,10} in sync with ruby.spec +Source1: operating_system.rb +Source5: macros.rubygems +# RPM dependency generators. +Source8: rubygems.attr +Source9: rubygems.req +Source10: rubygems.prov +# http://seclists.org/oss-sec/2013/q3/att-576/check_CVE-2013-4287_rb.bin +# Slightly modified for exit status +Source11: check_CVE-2013-4287.rb +# http://seclists.org/oss-sec/2013/q3/att-621/check_CVE-2013-XXXX_rb.bin +# Slightly modified for exit status, +# Also modified to match: +# http://seclists.org/oss-sec/2013/q3/605 +Source12: check_CVE-2013-4363.rb + +# Ignore failing TestGemRequire#test_realworld_default_gem with +# --disable-gems option. +# https://github.com/rubygems/rubygems/pull/1986 +Patch0: rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch + +%{?load:%{SOURCE5}} + +Requires: ruby(release) +Recommends: rubygem(rdoc) >= %{rdoc_version} +Recommends: rubygem(io-console) >= %{io_console_version} +Requires: rubygem(openssl) >= %{openssl_version} +Requires: rubygem(psych) >= %{psych_version} +BuildRequires: ruby(release) +BuildRequires: rubygem(json) +BuildRequires: rubygem(rdoc) +%if %{enable_check} +# For mkmf.rb +BuildRequires: ruby-devel +BuildRequires: rubygem(minitest) < 5 +BuildRequires: rubygem(rake) +# TestGemExtCmakeBuilder +BuildRequires: %{_bindir}/cmake +BuildRequires: git +BuildRequires: rubygem(builder) +%endif +Provides: gem = %{version}-%{release} +Provides: ruby(rubygems) = %{version}-%{release} +# https://github.com/rubygems/rubygems/pull/1189#issuecomment-121600910 +Provides: bundled(rubygem(molinillo)) = %{molinillo_version} +Provides: bundled(rubygem-molinillo) = %{molinillo_version} +BuildArch: noarch + +%description +RubyGems is the Ruby standard for publishing and managing third party +libraries. + +%package devel +Summary: Macros and development tools for packaging RubyGems +License: Ruby or MIT +Requires: ruby(%{name}) = %{version}-%{release} +# Needed for RDoc documentation format generation. +Requires: rubygem(json) >= %{json_version} +Requires: rubygem(rdoc) >= %{rdoc_version} +BuildArch: noarch + +%description devel +Macros and development tools for packaging RubyGems. + +%package doc +Summary: Documentation for %{name} +License: Ruby or MIT +Requires: ruby(%{name}) = %{version}-%{release} +BuildArch: noarch + +%description doc +Documentation for %{name}. + +%prep +%setup -q + +%patch0 -p1 + +%build +# Nothing + +%install +GEM_HOME=%{buildroot}/%{gem_dir} \ + ruby setup.rb \ + --document rdoc,ri \ + --prefix=/ \ + --backtrace \ + --destdir=%{buildroot}/%{rubygems_dir}/ + +mkdir -p %{buildroot}/%{_bindir} +mv %{buildroot}/%{rubygems_dir}/bin/gem %{buildroot}/%{_bindir}/gem +rm -rf %{buildroot}/%{rubygems_dir}/bin + +mv %{buildroot}/%{rubygems_dir}/lib/* %{buildroot}/%{rubygems_dir}/. +# No longer needed +rmdir %{buildroot}%{rubygems_dir}/lib + +# Kill bundled certificates, as they should be part of ca-certificates. +for cert in \ + rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem \ + rubygems.org/AddTrustExternalCARoot.pem \ + index.rubygems.org/GlobalSignRootCA.pem +do + rm %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert + rm -r $(dirname %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert) +done +# Ensure there is not forgotten any certificate. +test ! "$(ls -A %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/ 2>/dev/null)" + +# Move macros file into proper place and replace the %%{name} macro, since it +# would be wrongly evaluated during build of other packages. +mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d +install -m 644 %{SOURCE5} %{buildroot}%{_rpmconfigdir}/macros.d/macros.rubygems +sed -i "s/%%{name}/ruby/" %{buildroot}%{_rpmconfigdir}/macros.d/macros.rubygems + +# Install dependency generators. +mkdir -p %{buildroot}%{_rpmconfigdir}/fileattrs +install -m 644 %{SOURCE8} %{buildroot}%{_rpmconfigdir}/fileattrs +install -m 755 %{SOURCE9} %{buildroot}%{_rpmconfigdir} +install -m 755 %{SOURCE10} %{buildroot}%{_rpmconfigdir} + +# Install custom operating_system.rb. +mkdir -p %{buildroot}%{rubygems_dir}/rubygems/defaults +install -cpm 0644 %{SOURCE1} %{buildroot}%{rubygems_dir}/rubygems/defaults/ + +# Create gem folders. +mkdir -p %{buildroot}%{gem_dir}/{cache,gems,specifications,extensions,doc} +mkdir -p %{buildroot}%{gem_extdir}/ruby + +# Create below +mkdir -p %{buildroot}%{gem_dir}/specifications/default + +%check +# Create an empty operating_system.rb, so that the system's one doesn't get used, +# otherwise the test suite fails. +mkdir -p lib/rubygems/defaults +touch lib/rubygems/defaults/operating_system.rb + +# It is necessary to specify the paths to let the test suite pass." +export GEM_PATH=%{gem_dir} +export RUBYOPT="--disable-gems -Ilib:test" + +# Check Molinillo version correctness. +[ "`ruby -e 'module Gem; module Resolver; end; end; require %{rubygems/resolver/molinillo/lib/molinillo/gem_metadata}; puts Gem::Resolver::Molinillo::VERSION' | tail -1`" \ + == '%{molinillo_version}' ] + +%if %{enable_check} +ruby -e 'Dir.glob "./test/**/test_*.rb", &method(:require)' + +# CVE vulnerability check +ruby %{SOURCE11} +ruby %{SOURCE12} +%endif + +%files +%doc README* +%doc History.txt +%license MIT.txt LICENSE.txt +%doc CVE-*txt +%{_bindir}/gem +%dir %{rubygems_dir} +%{rubygems_dir}/rubygems +%{rubygems_dir}/rubygems.rb +%{rubygems_dir}/ubygems.rb + +# Explicitly include only RubyGems directory strucure to avoid accidentally +# packaged content. +%dir %{gem_dir} +%dir %{gem_dir}/build_info +%dir %{gem_dir}/cache +%dir %{gem_dir}/doc +%dir %{gem_dir}/extensions +%dir %{gem_dir}/gems +%dir %{gem_dir}/specifications +%dir %{gem_dir}/specifications/default +%dir %{_exec_prefix}/lib*/gems +%dir %{_exec_prefix}/lib*/gems/ruby + +%files devel +%{_rpmconfigdir}/macros.d/macros.rubygems +%{_rpmconfigdir}/fileattrs/rubygems.attr +%{_rpmconfigdir}/rubygems.req +%{_rpmconfigdir}/rubygems.prov + +%files doc +%doc %{gem_dir}/doc/* + + +%changelog +* Fri Jul 26 2019 Fedora Release Engineering - 2.6.13-104 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sat Feb 02 2019 Fedora Release Engineering - 2.6.13-103 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sat Jul 14 2018 Fedora Release Engineering - 2.6.13-102 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Fri Feb 09 2018 Fedora Release Engineering - 2.6.13-101 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Sep 05 2017 Vít Ondruch - 2.6.13-100 +- Update to RubyGems 2.6.13. + +* Thu Jul 27 2017 Fedora Release Engineering - 2.6.10-101 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Tue Mar 07 2017 Vít Ondruch - 2.6.10-100 +- Update to RubyGems 2.6.10. + +* Sat Feb 11 2017 Fedora Release Engineering - 2.4.8-102 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Feb 04 2016 Fedora Release Engineering - 2.4.8-101 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Fri Jul 10 2015 Vít Ondruch - 2.4.8-100 +- Update to RubyGems 2.4.8. + +* Fri Jun 19 2015 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sun Jun 08 2014 Fedora Release Engineering +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed May 07 2014 Vít Ondruch - 2.2.2-100 +- Update to RubyGems 2.2.2. + +* Fri Jan 10 2014 Mamoru TASAKA - 2.1.11-115 +- Add extension directory also to WhichCommand::gem_paths (bug 1051169) + +* Fri Dec 13 2013 Mamoru TASAKA - 2.1.11-114 +- Add extension directory to contains_requirable_file (bug 1041391) + +* Thu Nov 14 2013 Mamoru TASAKA - 2.1.11-113 +- Update to 2.1.11 + +* Sat Oct 26 2013 Mamoru TASAKA - 2.1.10-112 +- Update to 2.1.10 + +* Mon Oct 21 2013 Mamoru TASAKA - 2.1.9-111 +- Update to 2.1.9 + +* Tue Oct 15 2013 Mamoru TASAKA - 2.0.12-110 +- Backport from 2.1.x branch to fix concurrent requires issue + (ref:bug 989574) + +* Tue Oct 15 2013 Mamoru TASAKA - 2.0.12-109 +- Update to 2.0.12 +- Un-unlink %%{_sysconfdir}/pki/tls/cert.pem with discussion with + Vít Ondruch + +* Wed Oct 9 2013 Mamoru TASAKA - 2.0.11-108 +- Add BR: cmake for TestGemExtCmakeBuilder + +* Wed Oct 9 2013 Mamoru TASAKA - 2.0.11-107 +- Update to 2.0.11 + +* Wed Sep 25 2013 Mamoru TASAKA - 2.0.10-106 +- Update to 2.0.10 (fix for CVE-2013-4363 included) + +* Mon Sep 23 2013 Mamoru TASAKA - 2.0.9-105 +- Update to 2.0.9 +- Fix %%gem_dir/doc ownership (bug 1008866) +- Patch for CVE-2013-4363 + +* Tue Sep 10 2013 Mamoru TASAKA - 2.0.8-104 +- Update to 2.0.8, which fixes CVE-2013-4287 + +* Fri Aug 16 2013 Mamoru TASAKA - 2.0.7-103 +- Update to 2.0.7 + +* Thu Aug 15 2013 Mamoru TASAKA - 2.0.6-102 +- Update to 2.0.6 + +* Sun Aug 04 2013 Fedora Release Engineering - 2.0.5-101 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Mon Jul 15 2013 Mamoru TASAKA - 2.0.5-100 +- Update to 2.0.5 +- Show backtrace when %%gem_install fails + +* Thu Jul 04 2013 Vít Ondruch - 2.0.3-2 +- Fix RubyGems search paths when building gems with native extension + (rhbz#979133). + +* Thu Mar 21 2013 Mamoru TASAKA - 2.0.3-1 +- Update to 2.0.3 + +* Fri Mar 08 2013 Mamoru TASAKA - 2.0.0-108 +- Don't mark rpm config file as %%config (fpc#259) + +* Tue Mar 05 2013 Vít Ondruch - 2.0.0-107 +- Avoid "method redefined;" warnings due to modified operating_system.rb. + +* Tue Mar 5 2013 Mamoru Tasaka - 2.0.0-106 +- Fix regex for creating native extension directory + (Vít Ondruch ) + +* Sun Mar 3 2013 Mamoru TASAKA - 2.0.0-105 +- Kill creating unneeded LOCAL_LIBS\ = directory under + %%gem_libdir when building native extension + +* Wed Feb 27 2013 Mamoru TASAKA - 2.0.0-104 +- Kill %%gem_extdir + +* Tue Feb 26 2013 Vít Ondruch - 2.0.0-103 +- Prevent squash of %%gem_install with following line. + +* Mon Feb 25 2013 Mamoru TASAKA - 2.0.0-102 +- Provide %%gem_extdir_mri + +* Mon Feb 25 2013 Mamoru TASAKA - 2.0.0-101 +- Split out ri-generated documentation + +* Mon Feb 25 2013 Mamoru TASAKA - 2.0.0-100 +- Update to 2.0.0 + +* Mon Feb 25 2013 Mamoru TASAKA - 1.8.25-3 +- Backport %%gem_install macro + +* Tue Feb 5 2013 Mamoru TASAKA - 1.8.25-2 +- Fix rubygem(json) path + +* Tue Feb 5 2013 Mamoru TASAKA - 1.8.25-1 +- 1.8.25 + +* Tue Feb 5 2013 Mamoru TASAKA - 1.8.24-4 +- Bump release + +* Wed Sep 05 2012 Vít Ondruch - 1.8.24-3 +- Fixed Fedora 18 mass rebuild issue. + +* Sat Jul 21 2012 Fedora Release Engineering - 1.8.24-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Sat Apr 28 2012 Mamoru Tasaka - 1.8.24-1 +- 1.8.24 + +* Sat Apr 21 2012 Mamoru Tasaka - 1.8.23-20 +- 1.8.23 +- Use system-wide cert.pem + +* Wed Apr 18 2012 Mamoru Tasaka - 1.8.22-1 +- 1.8.22 + +* Thu Jan 26 2012 Vít Ondruch - 1.8.15-2 +- Make test suite green. + +* Thu Jan 26 2012 Mamoru Tasaka - 1.8.15-1 +- 1.8.15 + +* Thu Jan 26 2012 Mamoru Tasaka - 1.8.11-10 +- Incorpolate works by Vít Ondruch + made for ruby 1.9.x + +* Sat Jan 14 2012 Fedora Release Engineering - 1.8.11-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Nov 22 2011 Mamoru Tasaka - 1.8.11-1 +- 1.8.11 + +* Sun Aug 28 2011 Mamoru Tasaka - 1.8.10-1 +- 1.8.10 + +* Thu Aug 25 2011 Mamoru Tasaka - 1.8.9-1 +- 1.8.9 + +* Sun Aug 21 2011 Mamoru Tasaka - 1.8.8-1 +- 1.8.8 + +* Sat Aug 6 2011 Mamoru Tasaka - 1.8.7-1 +- 1.8.7 + +* Wed Jul 27 2011 Mamoru Tasaka - 1.8.6-1 +- 1.8.6 + +* Sat Jun 25 2011 Mamoru Tasaka - 1.8.5-2 +- Fix Gem.latest_load_paths (for rubygem-gettext FTBFS) +- Fix Gem.all_load_paths (for rubygem-gettext FTBFS, although it is already + deprecated from 1.7.0) + +* Wed Jun 1 2011 Mamoru Tasaka - 1.8.5-1 +- Try 1.8.5 + +* Tue May 24 2011 Mamoru Tasaka - 1.7.2-2 +- Handle gemspec file with containing "invalid" date format + generated with psych (ref: bug 706914) + +* Sat Apr 30 2011 Mamoru Tasaka - 1.7.2-1 +- Update to 1.7.2 + +* Sat Mar 12 2011 Mamoru Tasaka - 1.6.2-1 +- Update to 1.6.2 + +* Fri Mar 4 2011 Mamoru Tasaka - 1.6.1-1 +- Update to 1.6.1 +- Patch2, 4 upstreamed + +* Thu Mar 3 2011 Mamoru Tasaka - 1.6.0-1 +- Update to 1.6.0 + +* Sun Feb 27 2011 Mamoru Tasaka - 1.5.3-1 +- Update to 1.5.3 + +* Sun Feb 20 2011 Mamoru Tasaka - 1.5.2-1 +- Update to 1.5.2 +- Show rdoc process verbosely in verbose mode + +* Fri Feb 11 2011 Mamoru Tasaka - 1.5.0-2 +- Modify in-sync patch to keep the original behavior (for testsuite) +- Patch to make testsuite succeed, enabling testsuite + +* Thu Feb 10 2011 Mamoru Tasaka - 1.5.0-1 +- Update to 1.5.0 + +* Wed Feb 09 2011 Fedora Release Engineering - 1.3.7-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Fri Oct 8 2010 Mamoru Tasaka - 1.3.7-2 +- Show build process of extension library in sync + +* Mon May 17 2010 Mamoru Tasaka - 1.3.7-1 +- Update to 1.3.7, dropping upstreamed patch + +* Wed Apr 28 2010 Mamoru Tasaka - 1.3.6-1 +- Update to 1.3.6 +- Show prefix with gem contents by default as shown in --help + +* Mon Sep 21 2009 Mamoru Tasaka - 1.3.5-1 +- Update to 1.3.5 + +* Sun Jul 26 2009 Fedora Release Engineering - 1.3.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Feb 25 2009 Fedora Release Engineering - 1.3.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Sun Nov 09 2008 Jeroen van Meeuwen - 1.3.1-1 +- New upstream version + +* Tue Sep 16 2008 David Lutterkort - 1.2.0-2 +- Bump release because I forgot to check in newer patch + +* Tue Sep 16 2008 David Lutterkort - 1.2.0-1 +- Updated for new setup.rb +- Simplified by removing conditionals that were needed for EL-4; + there's just no way we can support that with newer rubygems + +* Wed Sep 3 2008 Tom "spot" Callaway - 0.9.4-2 +- fix license tag + +* Fri Jul 27 2007 David Lutterkort - 0.9.4-1 +- Conditionalize so it builds on RHEL4 + +* Tue Feb 27 2007 David Lutterkort - 0.9.2-1 +- New version +- Add patch0 to fix multilib sensitivity of Gem::dir (bz 227400) + +* Thu Jan 18 2007 David Lutterkort - 0.9.1-1 +- New version; include LICENSE.txt and GPL.txt +- avoid '..' in gem_dir to work around a bug in gem installer +- add ruby-rdoc to requirements + +* Tue Jan 2 2007 David Lutterkort - 0.9.0-2 +- Fix gem_dir to be arch independent +- Mention dual licensing in License field + +* Fri Dec 22 2006 David Lutterkort - 0.9.0-1 +- Updated to 0.9.0 +- Changed to agree with Fedora Extras guidelines + +* Mon Jan 9 2006 David Lutterkort - 0.8.11-1 +- Updated for 0.8.11 + +* Sun Oct 10 2004 Omar Kilani 0.8.1-1ts +- First version of the package diff --git a/sources b/sources new file mode 100644 index 0000000..2e443bc --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (rubygems-2.6.13.tgz) = c952b6061a9a0778db304c3aa5bea693e71ae2564abfb19f8b123eef66eb1e3877fc7c36f4f1527da97bb320870cbfd4574ac57ad88e850a44fadd67ebdac152 From 290f2e2e787d631ce7fc8efdfeeebe43d2c59a55 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 30 Jan 2020 19:42:04 +0000 Subject: [PATCH 11/33] - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- rubygems.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rubygems.spec b/rubygems.spec index b05960b..791f8d2 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -33,7 +33,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 2.6.13 -Release: 104%{?dist} +Release: 105%{?dist} License: Ruby or MIT URL: https://rubygems.org/ @@ -228,6 +228,9 @@ ruby %{SOURCE12} %changelog +* Thu Jan 30 2020 Fedora Release Engineering - 2.6.13-105 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + * Fri Jul 26 2019 Fedora Release Engineering - 2.6.13-104 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild From 70bbbb78c260701ed83c9d09a884afccd9d49832 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Thu, 7 May 2020 10:37:41 +0200 Subject: [PATCH 12/33] Fix FTBFS due to Ruby 2.7, OpenSSL 1.1.1 and CMake 2.8+ incompatibilities. Resolves: rhbz#1800046 --- rubygems.spec | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/rubygems.spec b/rubygems.spec index 791f8d2..af91234 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -33,7 +33,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 2.6.13 -Release: 105%{?dist} +Release: 106%{?dist} License: Ruby or MIT URL: https://rubygems.org/ @@ -117,6 +117,15 @@ Documentation for %{name}. %patch0 -p1 +# Fix Ruby 2.7 compatibility. +# https://github.com/rubygems/rubygems/commit/8dc3d5f74af252d3b83678de80232e35c2542156 +sed -i '/hook.inspect/ s|/@(|/[ @](|' lib/rubygems/installer.rb + +# Fixed test fails against OpenSSL 1.1.1. +# https://github.com/rubygems/rubygems/commit/d9ed00405697f05d683b5d27a8417d207048996f +sed -i '/rescue IOError, SocketError, SystemCallError/ s|SystemCallError|SystemCallError, OpenSSL::SSL::SSLError|' \ + lib/rubygems/remote_fetcher.rb + %build # Nothing @@ -186,6 +195,11 @@ export RUBYOPT="--disable-gems -Ilib:test" == '%{molinillo_version}' ] %if %{enable_check} +# Fix compatibility with CMake 2.8+. +# https://github.com/rubygems/rubygems/commit/5d05164c79f5f93e41100e33f5de5f96291b1dd2 +sed -i "/cmake_minimum_required(VERSION 2.6)/a\ + project(self_build NONE)" test/rubygems/test_gem_ext_cmake_builder.rb + ruby -e 'Dir.glob "./test/**/test_*.rb", &method(:require)' # CVE vulnerability check @@ -228,6 +242,10 @@ ruby %{SOURCE12} %changelog +* Thu May 07 2020 Vít Ondruch - 2.6.13-106 +- Fix FTBFS due to Ruby 2.7, OpenSSL 1.1.1 and CMake 2.8+ incompatibilities. + Resolves: rhbz#1800046 + * Thu Jan 30 2020 Fedora Release Engineering - 2.6.13-105 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild From 3ad844443d5c43b8a393bd82d37dc79df25c8f34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Thu, 7 May 2020 10:43:17 +0200 Subject: [PATCH 13/33] Drop rubygems-devel subpackage. There is no need to provide this sub-package, because there is always rubygems-devel available coming along with ruby package. This will make maitenance of rubygems package much easier, because it won't need synchronization of various bits with ruby package. --- macros.rubygems | 130 ------------------------------------------------ rubygems.attr | 5 -- rubygems.prov | 36 -------------- rubygems.req | 81 ------------------------------ rubygems.spec | 42 ++-------------- 5 files changed, 3 insertions(+), 291 deletions(-) delete mode 100644 macros.rubygems delete mode 100644 rubygems.attr delete mode 100644 rubygems.prov delete mode 100644 rubygems.req diff --git a/macros.rubygems b/macros.rubygems deleted file mode 100644 index 0652ec6..0000000 --- a/macros.rubygems +++ /dev/null @@ -1,130 +0,0 @@ -# The RubyGems root folder. -%gem_dir %{_datadir}/gems -%gem_archdir %{_libdir}/gems - -# Common gem locations and files. -%gem_instdir %{gem_dir}/gems/%{gem_name}-%{version}%{?prerelease} -%gem_extdir_mri %{gem_archdir}/%{name}/%{gem_name}-%{version}%{?prerelease} -%gem_libdir %{gem_instdir}/lib -%gem_cache %{gem_dir}/cache/%{gem_name}-%{version}%{?prerelease}.gem -%gem_spec %{gem_dir}/specifications/%{gem_name}-%{version}%{?prerelease}.gemspec -%gem_docdir %{gem_dir}/doc/%{gem_name}-%{version}%{?prerelease} - - -# %gem_install - Install gem into appropriate directory. -# -# Usage: %gem_install [options] -# -# -n Overrides gem file name for installation. -# -d Set installation directory. -# -%gem_install(d:n:) \ -mkdir -p %{-d*}%{!?-d:.%{gem_dir}} \ -\ -CONFIGURE_ARGS="--with-cflags='%{optflags}' $CONFIGURE_ARGS" \\\ -gem install \\\ - -V \\\ - --local \\\ - --build-root %{-d*}%{!?-d:.} \\\ - --force \\\ - --document=ri,rdoc \\\ - %{-n*}%{!?-n:%{gem_name}-%{version}%{?prerelease}.gem} \ -%{nil} - - -# For rubygems packages we want to filter out any provides caused by private -# libs in %%{gem_archdir}. -# -# Note that this must be invoked in the spec file, preferably as -# "%{?rubygems_default_filter}", before any %description block. -%rubygems_default_filter %{expand: \ -%global __provides_exclude_from %{?__provides_exclude_from:%{__provides_exclude_from}|}^%{gem_extdir_mri}/.*\\\\.so$ \ -} - - -# The 'read' command in gemspec_add _depand gemspec_remove_dep macros is not -# essential, but it is usefull to make the sript appear in build log. - - -# %gemspec_add_dep - Add dependency into .gemspec. -# -# Usage: %gemspec_add_dep -g [options] [requirements] -# -# Add dependency named to .gemspec file. The macro adds runtime -# dependency by default. The [requirements] argument can be used to specify -# the dependency constraints more precisely. It is expected to be valid Ruby -# code. -# -# -s Overrides the default .gemspec location. -# -d Add development dependecy. -# -%gemspec_add_dep(g:s:d) \ -read -d '' gemspec_add_dep_script << 'EOR' || : \ - gemspec_file = '%{-s*}%{!?-s:./%{gem_name}.gemspec}' \ - \ - name = '%{-g*}' \ - requirements = %{*}%{!?1:nil} \ - \ - type = :%{!?-d:runtime}%{?-d:development} \ - \ - spec = Gem::Specification.load(gemspec_file) \ - abort("#{gemspec_file} is not accessible.") unless spec \ - \ - dep = spec.dependencies.detect { |d| d.type == type && d.name == name } \ - if dep \ - dep.requirement.concat requirements \ - else \ - spec.public_send "add_#{type}_dependency", name, requirements \ - end \ - File.write gemspec_file, spec.to_ruby \ -EOR\ -echo "$gemspec_add_dep_script" | ruby \ -unset -v gemspec_add_dep_script \ -%{nil} - - -# %gemspec_remove_dep - Remove dependency from .gemspec. -# -# Usage: %gemspec_remove_dep -g [options] [requirements] -# -# Remove dependency named from .gemspec file. The macro removes runtime -# dependency by default. The [requirements] argument can be used to specify -# the dependency constraints more precisely. It is expected to be valid Ruby -# code. The macro fails if these specific requirements can't be removed. -# -# -s Overrides the default .gemspec location. -# -d Remove development dependecy. -# -%gemspec_remove_dep(g:s:d) \ -read -d '' gemspec_remove_dep_script << 'EOR' || : \ - gemspec_file = '%{-s*}%{!?-s:./%{gem_name}.gemspec}' \ - \ - name = '%{-g*}' \ - requirements = %{*}%{!?1:nil} \ - \ - type = :%{!?-d:runtime}%{?-d:development} \ - \ - spec = Gem::Specification.load(gemspec_file) \ - abort("#{gemspec_file} is not accessible.") unless spec \ - \ - dep = spec.dependencies.detect { |d| d.type == type && d.name == name } \ - if dep \ - if requirements \ - requirements = Gem::Requirement.create(requirements).requirements \ - requirements.each do |r| \ - unless dep.requirement.requirements.reject! { |dependency_requirements| dependency_requirements == r } \ - abort("Requirement '#{r.first} #{r.last}' was not possible to remove for dependency '#{dep}'!") \ - end \ - end \ - spec.dependencies.delete dep if dep.requirement.requirements.empty? \ - else \ - spec.dependencies.delete dep \ - end \ - else \ - abort("Dependency '#{name}' was not found!") \ - end \ - File.write gemspec_file, spec.to_ruby \ -EOR\ -echo "$gemspec_remove_dep_script" | ruby \ -unset -v gemspec_remove_dep_script \ -%{nil} diff --git a/rubygems.attr b/rubygems.attr deleted file mode 100644 index f033d43..0000000 --- a/rubygems.attr +++ /dev/null @@ -1,5 +0,0 @@ -%__rubygems_requires %{_rpmconfigdir}/rubygems.req -%__rubygems_provides %{_rpmconfigdir}/rubygems.prov -# In non-gem packages, the %%{gem_name} macro is not available and the macro -# stays unexpanded which leads to "invalid regex" error (rhbz#1154067). -%__rubygems_path ^%{?gem_name:%{gem_spec}}%{!?gem_name:this_should_never_match_anything}$ diff --git a/rubygems.prov b/rubygems.prov deleted file mode 100644 index b7c9777..0000000 --- a/rubygems.prov +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/ruby - -require 'rubygems/package' - -module RubyGemsProv - module Helpers - # If there is some prelease version files, such as rc1 (i.e. non-numeric - # field), prepend this field by tilde instead of dot. - def self.normalize_prerelease(version) - if version.prerelease? - prerelease = version.version.sub /^#{version.release}\./, '' - "#{version.release}-0.1.#{prerelease}" - else - "#{version.release}-1" - end - end - end - - # Reports all functionality gem provides. - def self.provides - while filename = gets - filename.strip! - begin - specification = Gem::Specification.load filename - - puts "rubygem(#{specification.name}) = #{Helpers::normalize_prerelease(specification.version)}" - rescue => e - # Ignore all errors. - end - end - end -end - -if __FILE__ == $0 - RubyGemsProv::provides -end diff --git a/rubygems.req b/rubygems.req deleted file mode 100644 index 4f7a583..0000000 --- a/rubygems.req +++ /dev/null @@ -1,81 +0,0 @@ -#!/usr/bin/ruby - -require 'rubygems/package' - -module RubyGemsReq - module Helpers - # Expands '~>' and '!=' gem requirements. - def self.expand_requirement(requirements) - requirements.inject([]) do |output, r| - output.concat case r.first - when '~>' - expand_pessimistic_requirement(r) - when '!=' - expand_not_equal_requirement(r) - else - [r] - end - end - end - - # Expands the pessimistic version operator '~>' into equivalent '>=' and - # '<' pair. - def self.expand_pessimistic_requirement(requirement) - next_version = Gem::Version.create(requirement.last).bump - return ['>=', requirement.last], ['<', next_version] - end - - # Expands the not equal version operator '!=' into equivalent '<' and - # '>' pair. - def self.expand_not_equal_requirement(requirement) - return ['<', requirement.last], ['>', requirement.last] - end - - # Converts Gem::Requirement into array of requirements strings compatible - # with RPM .spec file. - def self.requirement_versions_to_rpm(requirement) - self.expand_requirement(requirement.requirements).map do |op, version| - version == Gem::Version.new(0) ? "" : "#{op} #{version}" - end - end - end - - # Report RubyGems dependency, versioned if required. - def self.rubygems_dependency(specification) - Helpers::requirement_versions_to_rpm(specification.required_rubygems_version).each do |requirement| - dependency_string = "ruby(rubygems)" - dependency_string += " #{specification.required_rubygems_version}" if requirement && requirement.length > 0 - puts dependency_string - end - end - - # Report all gem dependencies including their version. - def self.gem_depenencies(specification) - specification.runtime_dependencies.each do |dependency| - Helpers::requirement_versions_to_rpm(dependency.requirement).each do |requirement| - dependency_string = "rubygem(#{dependency.name})" - dependency_string += " #{requirement}" if requirement && requirement.length > 0 - puts dependency_string - end - end - end - - # Reports all requirements specified by all provided .gemspec files. - def self.requires - while filename = gets - filename.strip! - begin - specification = Gem::Specification.load filename - - rubygems_dependency(specification) - gem_depenencies(specification) - rescue => e - # Ignore all errors. - end - end - end -end - -if __FILE__ == $0 - RubyGemsReq::requires -end diff --git a/rubygems.spec b/rubygems.spec index af91234..e728cc9 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -7,7 +7,6 @@ # Requires versions %global io_console_version 0.4.6 -%global json_version 2.0.2 %global openssl_version 2.0.2 %global psych_version 2.2.2 %global rdoc_version 5.0.0 @@ -39,13 +38,8 @@ License: Ruby or MIT URL: https://rubygems.org/ Source0: http://production.cf.rubygems.org/rubygems/%{name}-%{version}.tgz # Sources from the works by Vít Ondruch -# Please keep Source{1,5,8,9,10} in sync with ruby.spec +# Please keep Source1 in sync with ruby.spec Source1: operating_system.rb -Source5: macros.rubygems -# RPM dependency generators. -Source8: rubygems.attr -Source9: rubygems.req -Source10: rubygems.prov # http://seclists.org/oss-sec/2013/q3/att-576/check_CVE-2013-4287_rb.bin # Slightly modified for exit status Source11: check_CVE-2013-4287.rb @@ -60,8 +54,6 @@ Source12: check_CVE-2013-4363.rb # https://github.com/rubygems/rubygems/pull/1986 Patch0: rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch -%{?load:%{SOURCE5}} - Requires: ruby(release) Recommends: rubygem(rdoc) >= %{rdoc_version} Recommends: rubygem(io-console) >= %{io_console_version} @@ -73,6 +65,7 @@ BuildRequires: rubygem(rdoc) %if %{enable_check} # For mkmf.rb BuildRequires: ruby-devel +BuildRequires: rubygems-devel BuildRequires: rubygem(minitest) < 5 BuildRequires: rubygem(rake) # TestGemExtCmakeBuilder @@ -91,18 +84,6 @@ BuildArch: noarch RubyGems is the Ruby standard for publishing and managing third party libraries. -%package devel -Summary: Macros and development tools for packaging RubyGems -License: Ruby or MIT -Requires: ruby(%{name}) = %{version}-%{release} -# Needed for RDoc documentation format generation. -Requires: rubygem(json) >= %{json_version} -Requires: rubygem(rdoc) >= %{rdoc_version} -BuildArch: noarch - -%description devel -Macros and development tools for packaging RubyGems. - %package doc Summary: Documentation for %{name} License: Ruby or MIT @@ -157,18 +138,6 @@ done # Ensure there is not forgotten any certificate. test ! "$(ls -A %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/ 2>/dev/null)" -# Move macros file into proper place and replace the %%{name} macro, since it -# would be wrongly evaluated during build of other packages. -mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d -install -m 644 %{SOURCE5} %{buildroot}%{_rpmconfigdir}/macros.d/macros.rubygems -sed -i "s/%%{name}/ruby/" %{buildroot}%{_rpmconfigdir}/macros.d/macros.rubygems - -# Install dependency generators. -mkdir -p %{buildroot}%{_rpmconfigdir}/fileattrs -install -m 644 %{SOURCE8} %{buildroot}%{_rpmconfigdir}/fileattrs -install -m 755 %{SOURCE9} %{buildroot}%{_rpmconfigdir} -install -m 755 %{SOURCE10} %{buildroot}%{_rpmconfigdir} - # Install custom operating_system.rb. mkdir -p %{buildroot}%{rubygems_dir}/rubygems/defaults install -cpm 0644 %{SOURCE1} %{buildroot}%{rubygems_dir}/rubygems/defaults/ @@ -231,12 +200,6 @@ ruby %{SOURCE12} %dir %{_exec_prefix}/lib*/gems %dir %{_exec_prefix}/lib*/gems/ruby -%files devel -%{_rpmconfigdir}/macros.d/macros.rubygems -%{_rpmconfigdir}/fileattrs/rubygems.attr -%{_rpmconfigdir}/rubygems.req -%{_rpmconfigdir}/rubygems.prov - %files doc %doc %{gem_dir}/doc/* @@ -245,6 +208,7 @@ ruby %{SOURCE12} * Thu May 07 2020 Vít Ondruch - 2.6.13-106 - Fix FTBFS due to Ruby 2.7, OpenSSL 1.1.1 and CMake 2.8+ incompatibilities. Resolves: rhbz#1800046 +- Drop rubygems-devel subpackage. * Thu Jan 30 2020 Fedora Release Engineering - 2.6.13-105 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild From e19d9442c8e9dec17fb9f43949ad0bfbbd0a01b1 Mon Sep 17 00:00:00 2001 From: Pavel Valena Date: Wed, 13 Mar 2019 16:55:42 +0000 Subject: [PATCH 14/33] Upgrade to Rubygems 3.0.3. Sync operating_system.rb with ruby package. Also enahnce .gitignore and .spec files. --- .gitignore | 38 +------------- operating_system.rb | 38 +++++++------- ...ored-test-for-real-world-default-gem.patch | 51 ------------------- rubygems.spec | 42 +++++++++------ sources | 2 +- 5 files changed, 48 insertions(+), 123 deletions(-) delete mode 100644 rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch diff --git a/.gitignore b/.gitignore index be25674..8ae4291 100644 --- a/.gitignore +++ b/.gitignore @@ -1,37 +1 @@ -rubygems-1.3.7.tgz -/rubygems-1.5.0.tgz -/rubygems-1.5.2.tgz -/rubygems-1.5.3.tgz -/rubygems-1.6.0.tgz -/rubygems-1.6.1.tgz -/rubygems-1.6.2.tgz -/rubygems-1.7.2.tgz -/rubygems-1.8.5.tgz -/rubygems-1.8.6.tgz -/rubygems-1.8.7.tgz -/rubygems-1.8.8.tgz -/rubygems-1.8.9.tgz -/rubygems-1.8.10.tgz -/rubygems-1.8.11.tgz -/rubygems-1.8.15.tgz -/rubygems-1.8.22.tgz -/rubygems-1.8.23.tgz -/rubygems-1.8.24.tgz -/rubygems-1.8.25.tgz -/rubygems-2.0.0.tgz -/rubygems-2.0.3.tgz -/rubygems-2.0.5.tgz -/rubygems-2.0.6.tgz -/rubygems-2.0.7.tgz -/rubygems-2.0.8.tgz -/rubygems-2.0.9.tgz -/rubygems-2.0.10.tgz -/rubygems-2.0.11.tgz -/rubygems-2.0.12.tgz -/rubygems-2.1.9.tgz -/rubygems-2.1.10.tgz -/rubygems-2.1.11.tgz -/rubygems-2.2.2.tgz -/rubygems-2.4.8.tgz -/rubygems-2.6.10.tgz -/rubygems-2.6.13.tgz +/rubygems-*.tgz diff --git a/operating_system.rb b/operating_system.rb index 4b2903d..d95b303 100644 --- a/operating_system.rb +++ b/operating_system.rb @@ -87,37 +87,39 @@ module Gem # Remove methods we are going to override. This avoids "method redefined;" # warnings otherwise issued by Ruby. + remove_method :operating_system_defaults if method_defined? :operating_system_defaults remove_method :default_dir if method_defined? :default_dir remove_method :default_path if method_defined? :default_path - remove_method :default_bindir if method_defined? :default_bindir remove_method :default_ext_dir_for if method_defined? :default_ext_dir_for + ## + # Regular user installs into user directory, root manages /usr/local. + + def operating_system_defaults + unless opt_build_root? + options = if Process.uid == 0 + "--install-dir=#{Gem.default_dirs[:local][:gem_dir]} --bindir #{Gem.default_dirs[:local][:bin_dir]}" + else + "--user-install --bindir #{File.join [Dir.home, 'bin']}" + end + + {"gem" => options} + else + {} + end + end + ## # RubyGems default overrides. def default_dir - if opt_build_root? - Gem.default_dirs[:system][:gem_dir] - elsif Process.uid == 0 - Gem.default_dirs[:local][:gem_dir] - else - Gem.user_dir - end + Gem.default_dirs[:system][:gem_dir] end def default_path path = default_dirs.collect {|location, paths| paths[:gem_dir]} path.unshift Gem.user_dir if File.exist? Gem.user_home - end - - def default_bindir - if opt_build_root? - Gem.default_dirs[:system][:bin_dir] - elsif Process.uid == 0 - Gem.default_dirs[:local][:bin_dir] - else - File.join [Dir.home, 'bin'] - end + path end def default_ext_dir_for base_dir diff --git a/rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch b/rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch deleted file mode 100644 index 54e3ad0..0000000 --- a/rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 8598da6ea02fe69c20f93ac4d5504ca4aba6fe6b Mon Sep 17 00:00:00 2001 -From: SHIBATA Hiroshi -Date: Wed, 9 Aug 2017 16:30:53 +0900 -Subject: [PATCH 1/2] Ignored test for real world default gem. - - Because default gem was enabled after ruby installation that - is `make install` ---- - test/rubygems/test_require.rb | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb -index 936f78fb2..c44c759cc 100644 ---- a/test/rubygems/test_require.rb -+++ b/test/rubygems/test_require.rb -@@ -303,6 +303,12 @@ def test_default_gem_only - - def test_realworld_default_gem - skip "no default gems on ruby < 2.0" unless RUBY_VERSION >= "2" -+ begin -+ gem 'json' -+ rescue Gem::MissingSpecError -+ skip "default gems is only available after ruby installation" -+ end -+ - cmd = <<-RUBY - $stderr = $stdout - require "json" - -From 0dafce8188691a7b942ed4724a0d0e462e74a809 Mon Sep 17 00:00:00 2001 -From: SHIBATA Hiroshi -Date: Wed, 9 Aug 2017 21:06:41 +0900 -Subject: [PATCH 2/2] Fixed grammer - ---- - test/rubygems/test_require.rb | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb -index c44c759cc..edb36f1f3 100644 ---- a/test/rubygems/test_require.rb -+++ b/test/rubygems/test_require.rb -@@ -306,7 +306,7 @@ def test_realworld_default_gem - begin - gem 'json' - rescue Gem::MissingSpecError -- skip "default gems is only available after ruby installation" -+ skip "default gems are only available after ruby installation" - end - - cmd = <<-RUBY diff --git a/rubygems.spec b/rubygems.spec index e728cc9..5f0b181 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -11,7 +11,7 @@ %global psych_version 2.2.2 %global rdoc_version 5.0.0 -# The RubyGems library has to stay out of Ruby directory three, since the +# The RubyGems library has to stay out of Ruby directory tree, since the # RubyGems should be share by all Ruby implementations. %global rubygems_dir %(ruby -e "puts RbConfig::CONFIG['rubygemsdir']") @@ -31,7 +31,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems -Version: 2.6.13 +Version: 3.0.3 Release: 106%{?dist} License: Ruby or MIT @@ -49,10 +49,6 @@ Source11: check_CVE-2013-4287.rb # http://seclists.org/oss-sec/2013/q3/605 Source12: check_CVE-2013-4363.rb -# Ignore failing TestGemRequire#test_realworld_default_gem with -# --disable-gems option. -# https://github.com/rubygems/rubygems/pull/1986 -Patch0: rubygems-2.6.13-Ignored-test-for-real-world-default-gem.patch Requires: ruby(release) Recommends: rubygem(rdoc) >= %{rdoc_version} @@ -66,12 +62,13 @@ BuildRequires: rubygem(rdoc) # For mkmf.rb BuildRequires: ruby-devel BuildRequires: rubygems-devel -BuildRequires: rubygem(minitest) < 5 +BuildRequires: rubygem(minitest) BuildRequires: rubygem(rake) # TestGemExtCmakeBuilder BuildRequires: %{_bindir}/cmake BuildRequires: git BuildRequires: rubygem(builder) +BuildRequires: rubygem(bundler) %endif Provides: gem = %{version}-%{release} Provides: ruby(rubygems) = %{version}-%{release} @@ -96,8 +93,6 @@ Documentation for %{name}. %prep %setup -q -%patch0 -p1 - # Fix Ruby 2.7 compatibility. # https://github.com/rubygems/rubygems/commit/8dc3d5f74af252d3b83678de80232e35c2542156 sed -i '/hook.inspect/ s|/@(|/[ @](|' lib/rubygems/installer.rb @@ -111,18 +106,20 @@ sed -i '/rescue IOError, SocketError, SystemCallError/ s|SystemCallError|SystemC # Nothing %install -GEM_HOME=%{buildroot}/%{gem_dir} \ +mkdir -p %{buildroot}{%{rubygems_dir},%{gem_dir}}/ +GEM_HOME=%{buildroot}%{gem_dir} \ ruby setup.rb \ --document rdoc,ri \ --prefix=/ \ --backtrace \ - --destdir=%{buildroot}/%{rubygems_dir}/ + --no-regenerate-binstubs \ + --destdir=%{buildroot}%{rubygems_dir}/ -mkdir -p %{buildroot}/%{_bindir} -mv %{buildroot}/%{rubygems_dir}/bin/gem %{buildroot}/%{_bindir}/gem -rm -rf %{buildroot}/%{rubygems_dir}/bin +mkdir -p %{buildroot}%{_bindir} +mv %{buildroot}%{rubygems_dir}/bin/gem %{buildroot}%{_bindir}/. +rm -rf %{buildroot}%{rubygems_dir}/bin -mv %{buildroot}/%{rubygems_dir}/lib/* %{buildroot}/%{rubygems_dir}/. +mv %{buildroot}/%{rubygems_dir}/lib/* %{buildroot}%{rubygems_dir}/. # No longer needed rmdir %{buildroot}%{rubygems_dir}/lib @@ -149,6 +146,12 @@ mkdir -p %{buildroot}%{gem_extdir}/ruby # Create below mkdir -p %{buildroot}%{gem_dir}/specifications/default +# Remove bundled bundler +rm -vr %{buildroot}%{rubygems_dir}/bundler* +rm -vr %{buildroot}%{rubygems_dir}%{gem_dir}/specifications/default/bundler-*.gemspec +rm -vr %{buildroot}%{rubygems_dir}%{buildroot}%{rubygems_dir}%{gem_dir}/specifications/gems/bundler* + + %check # Create an empty operating_system.rb, so that the system's one doesn't get used, # otherwise the test suite fails. @@ -169,6 +172,11 @@ export RUBYOPT="--disable-gems -Ilib:test" sed -i "/cmake_minimum_required(VERSION 2.6)/a\ project(self_build NONE)" test/rubygems/test_gem_ext_cmake_builder.rb +# Relax the check warning. +# https://github.com/rubygems/rubygems/commit/55bd2cd906a6fa03d1b603a3a9da0a70cca946d3 +sed -i "/main.rb:1: warning: uplevel/ s/equal/match/" \ + test/rubygems/test_require.rb + ruby -e 'Dir.glob "./test/**/test_*.rb", &method(:require)' # CVE vulnerability check @@ -180,7 +188,6 @@ ruby %{SOURCE12} %doc README* %doc History.txt %license MIT.txt LICENSE.txt -%doc CVE-*txt %{_bindir}/gem %dir %{rubygems_dir} %{rubygems_dir}/rubygems @@ -205,6 +212,9 @@ ruby %{SOURCE12} %changelog +* Thu May 07 2020 Pavel Valena - 3.0.3-106 +- Upgrade to Rubygems 3.0.3. + * Thu May 07 2020 Vít Ondruch - 2.6.13-106 - Fix FTBFS due to Ruby 2.7, OpenSSL 1.1.1 and CMake 2.8+ incompatibilities. Resolves: rhbz#1800046 diff --git a/sources b/sources index 2e443bc..b3d560a 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (rubygems-2.6.13.tgz) = c952b6061a9a0778db304c3aa5bea693e71ae2564abfb19f8b123eef66eb1e3877fc7c36f4f1527da97bb320870cbfd4574ac57ad88e850a44fadd67ebdac152 +SHA512 (rubygems-3.0.3.tgz) = 1dd585243341901c7b4cc60a4902000c10ce57fe2cc9c28e27e274a2e6029f936cde1c99d7097c93c2c5b2c8bcee5d692c8fe5cc00c996a040e4954b674e330e From 03f7c467981e28366fcc64a9c3560f08906a2fcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Wed, 13 May 2020 17:50:06 +0200 Subject: [PATCH 15/33] Update to RubyGems 3.1.3. --- ruby-2.3.0-ruby_version.patch | 74 +++++++++++++++++++ ...ems-3.1.3-Avoid-Bundler-installation.patch | 17 +++++ rubygems.spec | 60 ++++++++------- sources | 2 +- 4 files changed, 121 insertions(+), 32 deletions(-) create mode 100644 ruby-2.3.0-ruby_version.patch create mode 100644 rubygems-3.1.3-Avoid-Bundler-installation.patch diff --git a/ruby-2.3.0-ruby_version.patch b/ruby-2.3.0-ruby_version.patch new file mode 100644 index 0000000..5bfb8d9 --- /dev/null +++ b/ruby-2.3.0-ruby_version.patch @@ -0,0 +1,74 @@ +From 9f0ec0233f618cbb862629816b22491c3df79578 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Tue, 31 Mar 2015 16:37:44 +0200 +Subject: [PATCH 3/4] Add ruby_version_dir_name support for RubyGems. + +--- + lib/rubygems/defaults.rb | 9 +++++---- + test/rubygems/test_gem.rb | 5 +++-- + 2 files changed, 8 insertions(+), 6 deletions(-) + +diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb +index d4ff4a262c..3f9a5bf590 100644 +--- a/lib/rubygems/defaults.rb ++++ b/lib/rubygems/defaults.rb +@@ -32,13 +32,13 @@ def self.default_dir + [ + File.dirname(RbConfig::CONFIG['sitedir']), + 'Gems', +- RbConfig::CONFIG['ruby_version'] ++ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + ] + else + [ + RbConfig::CONFIG['rubylibprefix'], + 'gems', +- RbConfig::CONFIG['ruby_version'] ++ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + ] + end + +@@ -75,7 +75,8 @@ def self.default_specifications_dir + + def self.user_dir + parts = [Gem.user_home, '.gem', ruby_engine] +- parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty? ++ ruby_version_dir_name = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] ++ parts << ruby_version_dir_name unless ruby_version_dir_name.empty? + File.join parts + end + +@@ -158,7 +159,7 @@ def self.vendor_dir # :nodoc: + return nil unless RbConfig::CONFIG.key? 'vendordir' + + File.join RbConfig::CONFIG['vendordir'], 'gems', +- RbConfig::CONFIG['ruby_version'] ++ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + end + + ## +diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb +index b25068405d..e9fef4a311 100644 +--- a/test/rubygems/test_gem.rb ++++ b/test/rubygems/test_gem.rb +@@ -1384,7 +1384,8 @@ def test_self_use_paths + + def test_self_user_dir + parts = [@userhome, '.gem', Gem.ruby_engine] +- parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty? ++ ruby_version_dir_name = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] ++ parts << ruby_version_dir_name unless ruby_version_dir_name.empty? + + assert_equal File.join(parts), Gem.user_dir + end +@@ -1460,7 +1461,7 @@ def test_self_vendor_dir + vendordir(File.join(@tempdir, 'vendor')) do + expected = + File.join RbConfig::CONFIG['vendordir'], 'gems', +- RbConfig::CONFIG['ruby_version'] ++ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + + assert_equal expected, Gem.vendor_dir + end +-- +2.1.0 diff --git a/rubygems-3.1.3-Avoid-Bundler-installation.patch b/rubygems-3.1.3-Avoid-Bundler-installation.patch new file mode 100644 index 0000000..2844be8 --- /dev/null +++ b/rubygems-3.1.3-Avoid-Bundler-installation.patch @@ -0,0 +1,17 @@ +diff --git a/setup.rb b/setup.rb +index 16ffa7215..49f6bfca5 100644 +--- a/setup.rb ++++ b/setup.rb +@@ -31,6 +31,12 @@ require 'rubygems/exceptions' + + Gem::CommandManager.instance.register_command :setup + ++require 'rubygems/commands/setup_command' ++ ++class Gem::Commands::SetupCommand ++ def install_default_bundler_gem(bin_dir); end ++end ++ + args = ARGV.clone + if ENV["GEM_PREV_VER"] + args = [ '--previous-version', ENV["GEM_PREV_VER"] ] + args diff --git a/rubygems.spec b/rubygems.spec index 5f0b181..861f330 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -6,6 +6,7 @@ %global molinillo_version 0.5.7 # Requires versions +%global bundler_version 2.1.4 %global io_console_version 0.4.6 %global openssl_version 2.0.2 %global psych_version 2.2.2 @@ -31,14 +32,14 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems -Version: 3.0.3 -Release: 106%{?dist} +Version: 3.1.3 +Release: 200%{?dist} License: Ruby or MIT URL: https://rubygems.org/ Source0: http://production.cf.rubygems.org/rubygems/%{name}-%{version}.tgz # Sources from the works by Vít Ondruch -# Please keep Source1 in sync with ruby.spec +# NOTE: Keep Source1 in sync with ruby.spec. Source1: operating_system.rb # http://seclists.org/oss-sec/2013/q3/att-576/check_CVE-2013-4287_rb.bin # Slightly modified for exit status @@ -48,27 +49,32 @@ Source11: check_CVE-2013-4287.rb # Also modified to match: # http://seclists.org/oss-sec/2013/q3/605 Source12: check_CVE-2013-4363.rb +# Fix ruby_version abuse. +# https://bugs.ruby-lang.org/issues/11002 +# NOTE: Keep this patch in sync with ruby.spec. +Patch0: ruby-2.3.0-ruby_version.patch +# Bundler installation does not respec `--destdir`. But we ship Bundler in +# independent package, therefore just ignore the installation altogether. +# https://github.com/rubygems/rubygems/issues/3604 +Patch1: rubygems-3.1.3-Avoid-Bundler-installation.patch Requires: ruby(release) +Recommends: rubygem(bundler) >= %{bundler_version} Recommends: rubygem(rdoc) >= %{rdoc_version} Recommends: rubygem(io-console) >= %{io_console_version} Requires: rubygem(openssl) >= %{openssl_version} Requires: rubygem(psych) >= %{psych_version} BuildRequires: ruby(release) -BuildRequires: rubygem(json) +BuildRequires: rubygems-devel BuildRequires: rubygem(rdoc) %if %{enable_check} # For mkmf.rb BuildRequires: ruby-devel -BuildRequires: rubygems-devel BuildRequires: rubygem(minitest) -BuildRequires: rubygem(rake) -# TestGemExtCmakeBuilder BuildRequires: %{_bindir}/cmake -BuildRequires: git +BuildRequires: %{_bindir}/git BuildRequires: rubygem(builder) -BuildRequires: rubygem(bundler) %endif Provides: gem = %{version}-%{release} Provides: ruby(rubygems) = %{version}-%{release} @@ -93,14 +99,8 @@ Documentation for %{name}. %prep %setup -q -# Fix Ruby 2.7 compatibility. -# https://github.com/rubygems/rubygems/commit/8dc3d5f74af252d3b83678de80232e35c2542156 -sed -i '/hook.inspect/ s|/@(|/[ @](|' lib/rubygems/installer.rb - -# Fixed test fails against OpenSSL 1.1.1. -# https://github.com/rubygems/rubygems/commit/d9ed00405697f05d683b5d27a8417d207048996f -sed -i '/rescue IOError, SocketError, SystemCallError/ s|SystemCallError|SystemCallError, OpenSSL::SSL::SSLError|' \ - lib/rubygems/remote_fetcher.rb +%patch0 -p1 +%patch1 -p1 %build # Nothing @@ -148,8 +148,6 @@ mkdir -p %{buildroot}%{gem_dir}/specifications/default # Remove bundled bundler rm -vr %{buildroot}%{rubygems_dir}/bundler* -rm -vr %{buildroot}%{rubygems_dir}%{gem_dir}/specifications/default/bundler-*.gemspec -rm -vr %{buildroot}%{rubygems_dir}%{buildroot}%{rubygems_dir}%{gem_dir}/specifications/gems/bundler* %check @@ -160,24 +158,21 @@ touch lib/rubygems/defaults/operating_system.rb # It is necessary to specify the paths to let the test suite pass." export GEM_PATH=%{gem_dir} -export RUBYOPT="--disable-gems -Ilib:test" +export RUBYOPT="--disable-gems -Ilib:test:bundler/lib" # Check Molinillo version correctness. [ "`ruby -e 'module Gem; module Resolver; end; end; require %{rubygems/resolver/molinillo/lib/molinillo/gem_metadata}; puts Gem::Resolver::Molinillo::VERSION' | tail -1`" \ == '%{molinillo_version}' ] +# Check Bundler version. +[ "`ruby -rbundler/version -e 'puts Bundler::VERSION'| tail -1`" \ + == '%{bundler_version}' ] + + %if %{enable_check} -# Fix compatibility with CMake 2.8+. -# https://github.com/rubygems/rubygems/commit/5d05164c79f5f93e41100e33f5de5f96291b1dd2 -sed -i "/cmake_minimum_required(VERSION 2.6)/a\ - project(self_build NONE)" test/rubygems/test_gem_ext_cmake_builder.rb - -# Relax the check warning. -# https://github.com/rubygems/rubygems/commit/55bd2cd906a6fa03d1b603a3a9da0a70cca946d3 -sed -i "/main.rb:1: warning: uplevel/ s/equal/match/" \ - test/rubygems/test_require.rb - -ruby -e 'Dir.glob "./test/**/test_*.rb", &method(:require)' +# TestProjectSanity#test_manifest_is_up_to_date is of no interest and it +# expects to work in git repository. +ruby -e 'Dir.glob "./test/**/test_*.rb", &method(:require)' -- -e /test_manifest_is_up_to_date/ -v # CVE vulnerability check ruby %{SOURCE11} @@ -212,6 +207,9 @@ ruby %{SOURCE12} %changelog +* Thu May 07 2020 Vít Ondruch - 3.1.3-200 +- Update to RubyGems 3.1.3. + * Thu May 07 2020 Pavel Valena - 3.0.3-106 - Upgrade to Rubygems 3.0.3. diff --git a/sources b/sources index b3d560a..e1d6634 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (rubygems-3.0.3.tgz) = 1dd585243341901c7b4cc60a4902000c10ce57fe2cc9c28e27e274a2e6029f936cde1c99d7097c93c2c5b2c8bcee5d692c8fe5cc00c996a040e4954b674e330e +SHA512 (rubygems-3.1.3.tgz) = 8ca0c869a53c4b99072f220bca3455edee6126effb2bc5abb9265758083688b523303e8d2ca0e6d612fbc40140c06570f990fff50cce104f443d86458b190c3b From 634b956b770aad8ec6acadec151e94893cac89b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Thu, 28 May 2020 14:08:38 +0200 Subject: [PATCH 16/33] Fix `require` behavior allowing to load libraries multiple times. Resolves: rhbz#1835836 --- rubygems-3.1.3-Fix-I-require-priority.patch | 167 +++++++++ ...nd-performance-regression-in-require.patch | 324 ++++++++++++++++++ rubygems-3.1.3-Improve-require.patch | 92 +++++ ...ude-empty-suffix-from-I-require-loop.patch | 29 ++ rubygems.spec | 23 +- 5 files changed, 634 insertions(+), 1 deletion(-) create mode 100644 rubygems-3.1.3-Fix-I-require-priority.patch create mode 100644 rubygems-3.1.3-Fix-correctness-and-performance-regression-in-require.patch create mode 100644 rubygems-3.1.3-Improve-require.patch create mode 100644 rubygems-3.1.3-Revert-Exclude-empty-suffix-from-I-require-loop.patch diff --git a/rubygems-3.1.3-Fix-I-require-priority.patch b/rubygems-3.1.3-Fix-I-require-priority.patch new file mode 100644 index 0000000..6ed2f76 --- /dev/null +++ b/rubygems-3.1.3-Fix-I-require-priority.patch @@ -0,0 +1,167 @@ +From 912d141a351053d0f6d915b5e7807f6a8f4c0631 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?David=20Rodr=C3=ADguez?= +Date: Tue, 4 Feb 2020 17:25:56 +0100 +Subject: [PATCH 1/2] Make non "test_" method private + +--- + test/rubygems/test_require.rb | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb +index aa2675af5d..d618a93473 100644 +--- a/test/rubygems/test_require.rb ++++ b/test/rubygems/test_require.rb +@@ -532,6 +532,8 @@ def test_require_bundler_with_bundler_version + end + end + ++ private ++ + def silence_warnings + old_verbose, $VERBOSE = $VERBOSE, false + yield + +From b3944384f44b869985051863d8b05b545d09a585 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?David=20Rodr=C3=ADguez?= +Date: Tue, 4 Feb 2020 17:26:28 +0100 +Subject: [PATCH 2/2] Fix require issue with file extension priority + +If `require "a"` is run when two folders have been specified in the -I +option including a "a.rb" file and a "a.so" file respectively, the ruby +spec says that the ".rb" file should always be preferred. However, the +logic we added in https://github.com/rubygems/rubygems/commit/6b81076d9 +to make the -I option always beat default gems does not respect this +spec, creating a difference from the original ruby-core's require. + +[the ruby spec says]: https://github.com/ruby/spec/blob/d80a6e2b221d4f17a8cadcac75ef950c59cba901/core/kernel/shared/require.rb#L234-L246 +--- + lib/rubygems/core_ext/kernel_require.rb | 28 +++++------ + test/rubygems/test_require.rb | 62 +++++++++++++++++++++++++ + 2 files changed, 74 insertions(+), 16 deletions(-) + +diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb +index 60f4d18712..369f2c743e 100644 +--- a/lib/rubygems/core_ext/kernel_require.rb ++++ b/lib/rubygems/core_ext/kernel_require.rb +@@ -43,18 +43,18 @@ def require(path) + # https://github.com/rubygems/rubygems/pull/1868 + resolved_path = begin + rp = nil +- $LOAD_PATH[0...Gem.load_path_insert_index || -1].each do |lp| +- safe_lp = lp.dup.tap(&Gem::UNTAINT) +- begin +- if File.symlink? safe_lp # for backward compatibility +- next ++ Gem.suffixes.each do |s| ++ $LOAD_PATH[0...Gem.load_path_insert_index || -1].each do |lp| ++ safe_lp = lp.dup.tap(&Gem::UNTAINT) ++ begin ++ if File.symlink? safe_lp # for backward compatibility ++ next ++ end ++ rescue SecurityError ++ RUBYGEMS_ACTIVATION_MONITOR.exit ++ raise + end +- rescue SecurityError +- RUBYGEMS_ACTIVATION_MONITOR.exit +- raise +- end + +- Gem.suffixes.each do |s| + full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}")) + if File.file?(full_path) + rp = full_path +@@ -67,12 +67,8 @@ def require(path) + end + + if resolved_path +- begin +- RUBYGEMS_ACTIVATION_MONITOR.exit +- return gem_original_require(resolved_path) +- rescue LoadError +- RUBYGEMS_ACTIVATION_MONITOR.enter +- end ++ RUBYGEMS_ACTIVATION_MONITOR.exit ++ return gem_original_require(resolved_path) + end + + if spec = Gem.find_unresolved_default_spec(path) +diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb +index d618a93473..7cffbfa7fe 100644 +--- a/test/rubygems/test_require.rb ++++ b/test/rubygems/test_require.rb +@@ -120,6 +120,24 @@ def test_dash_i_beats_default_gems + Object.send :remove_const, :HELLO if Object.const_defined? :HELLO + end + ++ def test_dash_i_respects_default_library_extension_priority ++ skip "extensions don't quite work on jruby" if Gem.java_platform? ++ ++ dash_i_ext_arg = util_install_extension_file('a') ++ dash_i_lib_arg = util_install_ruby_file('a') ++ ++ lp = $LOAD_PATH.dup ++ ++ begin ++ $LOAD_PATH.unshift dash_i_lib_arg ++ $LOAD_PATH.unshift dash_i_ext_arg ++ assert_require 'a' ++ assert_match(/a\.rb$/, $LOADED_FEATURES.last) ++ ensure ++ $LOAD_PATH.replace lp ++ end ++ end ++ + def test_concurrent_require + Object.const_set :FILE_ENTERED_LATCH, Latch.new(2) + Object.const_set :FILE_EXIT_LATCH, Latch.new(1) +@@ -541,4 +559,48 @@ def silence_warnings + $VERBOSE = old_verbose + end + ++ def util_install_extension_file(name) ++ spec = quick_gem name ++ util_build_gem spec ++ ++ spec.extensions << "extconf.rb" ++ write_file File.join(@tempdir, "extconf.rb") do |io| ++ io.write <<-RUBY ++ require "mkmf" ++ create_makefile("#{name}") ++ RUBY ++ end ++ ++ write_file File.join(@tempdir, "#{name}.c") do |io| ++ io.write <<-C ++ #include ++ void Init_#{name}() { } ++ C ++ end ++ ++ spec.files += ["extconf.rb", "#{name}.c"] ++ ++ so = File.join(spec.gem_dir, "#{name}.#{RbConfig::CONFIG["DLEXT"]}") ++ refute_path_exists so ++ ++ path = Gem::Package.build spec ++ installer = Gem::Installer.at path ++ installer.install ++ assert_path_exists so ++ ++ spec.gem_dir ++ end ++ ++ def util_install_ruby_file(name) ++ dir_lib = Dir.mktmpdir("test_require_lib", @tempdir) ++ dash_i_lib_arg = File.join dir_lib ++ ++ a_rb = File.join dash_i_lib_arg, "#{name}.rb" ++ ++ FileUtils.mkdir_p File.dirname a_rb ++ File.open(a_rb, 'w') { |f| f.write "# #{name}.rb" } ++ ++ dash_i_lib_arg ++ end ++ + end diff --git a/rubygems-3.1.3-Fix-correctness-and-performance-regression-in-require.patch b/rubygems-3.1.3-Fix-correctness-and-performance-regression-in-require.patch new file mode 100644 index 0000000..734ae97 --- /dev/null +++ b/rubygems-3.1.3-Fix-correctness-and-performance-regression-in-require.patch @@ -0,0 +1,324 @@ +From 00d98eb8a3245fb93a475ecbbbc4c7ec7e6704cd Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?David=20Rodr=C3=ADguez?= +Date: Tue, 19 May 2020 14:00:00 +0200 +Subject: [PATCH 1/5] Fix performance regression in `require` + +Our check for `-I` paths should not go through all activated gems. +--- + lib/rubygems.rb | 10 ++++++++++ + lib/rubygems/core_ext/kernel_require.rb | 2 +- + lib/rubygems/test_case.rb | 1 + + test/rubygems/test_require.rb | 11 +++++++++++ + 4 files changed, 23 insertions(+), 1 deletion(-) + +diff --git a/lib/rubygems.rb b/lib/rubygems.rb +index 843cb49e4a..d1a9a1c7e1 100644 +--- a/lib/rubygems.rb ++++ b/lib/rubygems.rb +@@ -662,10 +662,20 @@ def self.load_path_insert_index + index + end + ++ ## ++ # The number of paths in the `$LOAD_PATH` from activated gems. Used to ++ # prioritize `-I` and `ENV['RUBYLIB`]` entries during `require`. ++ ++ def self.activated_gem_paths ++ @activated_gem_paths ||= 0 ++ end ++ + ## + # Add a list of paths to the $LOAD_PATH at the proper place. + + def self.add_to_load_path(*paths) ++ @activated_gem_paths = activated_gem_paths + paths.size ++ + insert_index = load_path_insert_index + + if insert_index +diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb +index ed24111bd5..7625ce1bee 100644 +--- a/lib/rubygems/core_ext/kernel_require.rb ++++ b/lib/rubygems/core_ext/kernel_require.rb +@@ -47,7 +47,7 @@ def require(path) + load_path_insert_index = Gem.load_path_insert_index + break unless load_path_insert_index + +- $LOAD_PATH[0...load_path_insert_index].each do |lp| ++ $LOAD_PATH[0...load_path_insert_index - Gem.activated_gem_paths].each do |lp| + safe_lp = lp.dup.tap(&Gem::UNTAINT) + begin + if File.symlink? safe_lp # for backward compatibility +diff --git a/lib/rubygems/test_case.rb b/lib/rubygems/test_case.rb +index a05a2898d1..53dd495aef 100644 +--- a/lib/rubygems/test_case.rb ++++ b/lib/rubygems/test_case.rb +@@ -379,6 +379,7 @@ def setup + Gem::Security.reset + + Gem.loaded_specs.clear ++ Gem.instance_variable_set(:@activated_gem_paths, 0) + Gem.clear_default_specs + Bundler.reset! + +diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb +index f36892f8cc..9f2fe3439a 100644 +--- a/test/rubygems/test_require.rb ++++ b/test/rubygems/test_require.rb +@@ -382,6 +382,17 @@ def test_default_gem_require_activates_just_once + assert_equal 0, times_called + end + ++ def test_second_gem_require_does_not_resolve_path_manually_before_going_through_standard_require ++ a1 = util_spec "a", "1", nil, "lib/test_gem_require_a.rb" ++ install_gem a1 ++ ++ assert_require "test_gem_require_a" ++ ++ stub(:gem_original_require, ->(path) { assert_equal "test_gem_require_a", path }) do ++ require "test_gem_require_a" ++ end ++ end ++ + def test_realworld_default_gem + testing_ruby_repo = !ENV["GEM_COMMAND"].nil? + skip "this test can't work under ruby-core setup" if testing_ruby_repo || java_platform? + +From ae95885dff6189c5ac59bbdf685cb4ec4751fdef Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?David=20Rodr=C3=ADguez?= +Date: Tue, 19 May 2020 14:08:19 +0200 +Subject: [PATCH 2/5] Refactor `Gem.load_path_insert_index` + +--- + lib/rubygems.rb | 13 +++---------- + lib/rubygems/core_ext/kernel_require.rb | 5 +---- + 2 files changed, 4 insertions(+), 14 deletions(-) + +diff --git a/lib/rubygems.rb b/lib/rubygems.rb +index d1a9a1c7e1..ca80326459 100644 +--- a/lib/rubygems.rb ++++ b/lib/rubygems.rb +@@ -659,7 +659,7 @@ def self.load_path_insert_index + + index = $LOAD_PATH.index RbConfig::CONFIG['sitelibdir'] + +- index ++ index || 0 + end + + ## +@@ -676,15 +676,8 @@ def self.activated_gem_paths + def self.add_to_load_path(*paths) + @activated_gem_paths = activated_gem_paths + paths.size + +- insert_index = load_path_insert_index +- +- if insert_index +- # gem directories must come after -I and ENV['RUBYLIB'] +- $LOAD_PATH.insert(insert_index, *paths) +- else +- # we are probably testing in core, -I and RUBYLIB don't apply +- $LOAD_PATH.unshift(*paths) +- end ++ # gem directories must come after -I and ENV['RUBYLIB'] ++ $LOAD_PATH.insert(Gem.load_path_insert_index, *paths) + end + + @yaml_loaded = false +diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb +index 7625ce1bee..decf4829f1 100644 +--- a/lib/rubygems/core_ext/kernel_require.rb ++++ b/lib/rubygems/core_ext/kernel_require.rb +@@ -44,10 +44,7 @@ def require(path) + resolved_path = begin + rp = nil + Gem.suffixes.each do |s| +- load_path_insert_index = Gem.load_path_insert_index +- break unless load_path_insert_index +- +- $LOAD_PATH[0...load_path_insert_index - Gem.activated_gem_paths].each do |lp| ++ $LOAD_PATH[0...Gem.load_path_insert_index - Gem.activated_gem_paths].each do |lp| + safe_lp = lp.dup.tap(&Gem::UNTAINT) + begin + if File.symlink? safe_lp # for backward compatibility + +From da1492e9d7b28d068fbfbb0ba1cafcc516681567 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?David=20Rodr=C3=ADguez?= +Date: Tue, 19 May 2020 14:32:12 +0200 +Subject: [PATCH 3/5] Extract a local outside the loop + +--- + lib/rubygems/core_ext/kernel_require.rb | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb +index decf4829f1..6a7faaf2d1 100644 +--- a/lib/rubygems/core_ext/kernel_require.rb ++++ b/lib/rubygems/core_ext/kernel_require.rb +@@ -43,8 +43,9 @@ def require(path) + # https://github.com/rubygems/rubygems/pull/1868 + resolved_path = begin + rp = nil ++ load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths + Gem.suffixes.each do |s| +- $LOAD_PATH[0...Gem.load_path_insert_index - Gem.activated_gem_paths].each do |lp| ++ $LOAD_PATH[0...load_path_check_index].each do |lp| + safe_lp = lp.dup.tap(&Gem::UNTAINT) + begin + if File.symlink? safe_lp # for backward compatibility + +From 22ad5717c38feda2375b53628d15ae3db2195684 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?David=20Rodr=C3=ADguez?= +Date: Thu, 21 May 2020 15:20:57 +0200 +Subject: [PATCH 4/5] Fix `$LOADED_FEATURES` cache sometimes not respected + +In the cases where the initial manually `-I` path resolution succeeded, +we were passing a full path to the original require effectively skipping +the `$LOADED_FEATURES` cache. With this change, we _only_ do the +resolution when a matching requirable path is found in a default gem. In +that case, we skip activation of the default gem if we detect that the +required file will be picked up for a `-I` path. +--- + lib/rubygems/core_ext/kernel_require.rb | 53 +++++++++++-------------- + test/rubygems/test_require.rb | 29 ++++++++++++++ + 2 files changed, 53 insertions(+), 29 deletions(-) + +diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb +index 6a7faaf2d1..81e37b98bf 100644 +--- a/lib/rubygems/core_ext/kernel_require.rb ++++ b/lib/rubygems/core_ext/kernel_require.rb +@@ -39,46 +39,41 @@ def require(path) + + path = path.to_path if path.respond_to? :to_path + +- # Ensure -I beats a default gem +- # https://github.com/rubygems/rubygems/pull/1868 +- resolved_path = begin +- rp = nil +- load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths +- Gem.suffixes.each do |s| +- $LOAD_PATH[0...load_path_check_index].each do |lp| +- safe_lp = lp.dup.tap(&Gem::UNTAINT) +- begin +- if File.symlink? safe_lp # for backward compatibility +- next ++ if spec = Gem.find_unresolved_default_spec(path) ++ # Ensure -I beats a default gem ++ # https://github.com/rubygems/rubygems/pull/1868 ++ resolved_path = begin ++ rp = nil ++ load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths ++ Gem.suffixes.each do |s| ++ $LOAD_PATH[0...load_path_check_index].each do |lp| ++ safe_lp = lp.dup.tap(&Gem::UNTAINT) ++ begin ++ if File.symlink? safe_lp # for backward compatibility ++ next ++ end ++ rescue SecurityError ++ RUBYGEMS_ACTIVATION_MONITOR.exit ++ raise + end +- rescue SecurityError +- RUBYGEMS_ACTIVATION_MONITOR.exit +- raise +- end + +- full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}")) +- if File.file?(full_path) +- rp = full_path +- break ++ full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}")) ++ if File.file?(full_path) ++ rp = full_path ++ break ++ end + end ++ break if rp + end +- break if rp ++ rp + end +- rp +- end + +- if resolved_path +- RUBYGEMS_ACTIVATION_MONITOR.exit +- return gem_original_require(resolved_path) +- end +- +- if spec = Gem.find_unresolved_default_spec(path) + begin + Kernel.send(:gem, spec.name, Gem::Requirement.default_prerelease) + rescue Exception + RUBYGEMS_ACTIVATION_MONITOR.exit + raise +- end ++ end unless resolved_path + end + + # If there are no unresolved deps, then we can use just try +diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb +index 9f2fe3439a..2b11e26dfe 100644 +--- a/test/rubygems/test_require.rb ++++ b/test/rubygems/test_require.rb +@@ -45,6 +45,35 @@ def refute_require(path) + refute require(path), "'#{path}' was not yet required" + end + ++ def test_respect_loaded_features_caching_like_standard_require ++ dir = Dir.mktmpdir("test_require", @tempdir) ++ ++ lp1 = File.join dir, 'foo1' ++ foo1 = File.join lp1, 'foo.rb' ++ ++ FileUtils.mkdir_p lp1 ++ File.open(foo1, 'w') { |f| f.write "class Object; HELLO = 'foo1' end" } ++ ++ lp = $LOAD_PATH.dup ++ ++ $LOAD_PATH.unshift lp1 ++ assert_require 'foo' ++ assert_equal "foo1", ::Object::HELLO ++ ++ lp2 = File.join dir, 'foo2' ++ foo2 = File.join lp2, 'foo.rb' ++ ++ FileUtils.mkdir_p lp2 ++ File.open(foo2, 'w') { |f| f.write "class Object; HELLO = 'foo2' end" } ++ ++ $LOAD_PATH.unshift lp2 ++ refute_require 'foo' ++ assert_equal "foo1", ::Object::HELLO ++ ensure ++ $LOAD_PATH.replace lp ++ Object.send :remove_const, :HELLO if Object.const_defined? :HELLO ++ end ++ + # Providing -I on the commandline should always beat gems + def test_dash_i_beats_gems + a1 = util_spec "a", "1", {"b" => "= 1"}, "lib/test_gem_require_a.rb" + +From db872c7a18d616f4447bdcca3130be6db9e5cb03 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?David=20Rodr=C3=ADguez?= +Date: Sat, 23 May 2020 20:18:41 +0200 +Subject: [PATCH 5/5] Remove direct reference to PR + +The code is quite different now, so I think the link might be even +confusing. If you want to know more, use git history. +--- + lib/rubygems/core_ext/kernel_require.rb | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb +index 81e37b98bf..115ae0cb50 100644 +--- a/lib/rubygems/core_ext/kernel_require.rb ++++ b/lib/rubygems/core_ext/kernel_require.rb +@@ -41,7 +41,6 @@ def require(path) + + if spec = Gem.find_unresolved_default_spec(path) + # Ensure -I beats a default gem +- # https://github.com/rubygems/rubygems/pull/1868 + resolved_path = begin + rp = nil + load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths diff --git a/rubygems-3.1.3-Improve-require.patch b/rubygems-3.1.3-Improve-require.patch new file mode 100644 index 0000000..2df5c4f --- /dev/null +++ b/rubygems-3.1.3-Improve-require.patch @@ -0,0 +1,92 @@ +From c5197b2ab35ba389f48918e0c773b43b6dca2fa5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?David=20Rodr=C3=ADguez?= +Date: Fri, 7 Feb 2020 17:16:05 +0100 +Subject: [PATCH 1/3] Tweaks to get test passing more reliably + +--- + test/rubygems/test_require.rb | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb +index 7cffbfa7fe..67c55416d4 100644 +--- a/test/rubygems/test_require.rb ++++ b/test/rubygems/test_require.rb +@@ -567,18 +567,20 @@ def util_install_extension_file(name) + write_file File.join(@tempdir, "extconf.rb") do |io| + io.write <<-RUBY + require "mkmf" ++ CONFIG['LDSHARED'] = '$(TOUCH) $@ ||' + create_makefile("#{name}") + RUBY + end + + write_file File.join(@tempdir, "#{name}.c") do |io| + io.write <<-C +- #include + void Init_#{name}() { } + C + end + +- spec.files += ["extconf.rb", "#{name}.c"] ++ write_file File.join(@tempdir, "depend") ++ ++ spec.files += ["extconf.rb", "depend", "#{name}.c"] + + so = File.join(spec.gem_dir, "#{name}.#{RbConfig::CONFIG["DLEXT"]}") + refute_path_exists so + +From 7bfd7319cd751837c3ccaf1d97b02846eaaf39d5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?David=20Rodr=C3=ADguez?= +Date: Tue, 11 Feb 2020 11:56:06 +0100 +Subject: [PATCH 2/3] Fix bug bug calculating $LOAD_PATH's to check in + `require` + +In `Gem.load_path_insert_index` is not set, we end up having +`$LOAD_PATH[0...-1]`, unintentionally skipping the last $LOAD_PATH entry +from the check. + +The correct thing to do in that case is to not even try since we have no +way of distinguisng default LOAD_PATH entries from those added with -I. +--- + lib/rubygems/core_ext/kernel_require.rb | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb +index 369f2c743e..a8d170f13a 100644 +--- a/lib/rubygems/core_ext/kernel_require.rb ++++ b/lib/rubygems/core_ext/kernel_require.rb +@@ -44,7 +44,10 @@ def require(path) + resolved_path = begin + rp = nil + Gem.suffixes.each do |s| +- $LOAD_PATH[0...Gem.load_path_insert_index || -1].each do |lp| ++ load_path_insert_index = Gem.load_path_insert_index ++ break unless load_path_insert_index ++ ++ $LOAD_PATH[0...load_path_insert_index].each do |lp| + safe_lp = lp.dup.tap(&Gem::UNTAINT) + begin + if File.symlink? safe_lp # for backward compatibility + +From 4fc0ab21c0f7713829abb522ce3b6d8e24c126b3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?David=20Rodr=C3=ADguez?= +Date: Fri, 14 Feb 2020 02:03:04 +0100 +Subject: [PATCH 3/3] Exclude empty suffix from `-I` require loop + +--- + lib/rubygems/core_ext/kernel_require.rb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb +index a8d170f13a..9712fb6ac0 100644 +--- a/lib/rubygems/core_ext/kernel_require.rb ++++ b/lib/rubygems/core_ext/kernel_require.rb +@@ -43,7 +43,7 @@ def require(path) + # https://github.com/rubygems/rubygems/pull/1868 + resolved_path = begin + rp = nil +- Gem.suffixes.each do |s| ++ Gem.suffixes[1..-1].each do |s| + load_path_insert_index = Gem.load_path_insert_index + break unless load_path_insert_index + diff --git a/rubygems-3.1.3-Revert-Exclude-empty-suffix-from-I-require-loop.patch b/rubygems-3.1.3-Revert-Exclude-empty-suffix-from-I-require-loop.patch new file mode 100644 index 0000000..463047c --- /dev/null +++ b/rubygems-3.1.3-Revert-Exclude-empty-suffix-from-I-require-loop.patch @@ -0,0 +1,29 @@ +From 301e30bf97dd603ca81d52b90186908575c4ddf8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?David=20Rodr=C3=ADguez?= +Date: Tue, 25 Feb 2020 15:01:44 +0100 +Subject: [PATCH] Revert "Exclude empty suffix from `-I` require loop" + +This reverts commit 4fc0ab21c0f7713829abb522ce3b6d8e24c126b3. + +Technically, extensionless ruby files are valid ruby files that can be +required. For example, `bin/bundle` is sometimes required from other +binstubs even if it's also runnable directly. + +So, we should technically consider this kind of files too. +--- + lib/rubygems/core_ext/kernel_require.rb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb +index 9712fb6ac0..a8d170f13a 100644 +--- a/lib/rubygems/core_ext/kernel_require.rb ++++ b/lib/rubygems/core_ext/kernel_require.rb +@@ -43,7 +43,7 @@ def require(path) + # https://github.com/rubygems/rubygems/pull/1868 + resolved_path = begin + rp = nil +- Gem.suffixes[1..-1].each do |s| ++ Gem.suffixes.each do |s| + load_path_insert_index = Gem.load_path_insert_index + break unless load_path_insert_index + diff --git a/rubygems.spec b/rubygems.spec index 861f330..89e7fcf 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -33,7 +33,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 3.1.3 -Release: 200%{?dist} +Release: 201%{?dist} License: Ruby or MIT URL: https://rubygems.org/ @@ -57,6 +57,18 @@ Patch0: ruby-2.3.0-ruby_version.patch # independent package, therefore just ignore the installation altogether. # https://github.com/rubygems/rubygems/issues/3604 Patch1: rubygems-3.1.3-Avoid-Bundler-installation.patch +# Fix `require` behavior allowing to load libraries multiple times. +# https://github.com/rubygems/rubygems/issues/3647 +# Because there were multiple fixes in `Kernel.require` in recent months, +# pickup all the changes one by one instead of squashing them. +# https://github.com/rubygems/rubygems/pull/3124 +Patch2: rubygems-3.1.3-Fix-I-require-priority.patch +# https://github.com/rubygems/rubygems/pull/3133 +Patch3: rubygems-3.1.3-Improve-require.patch +# https://github.com/rubygems/rubygems/pull/3153 +Patch4: rubygems-3.1.3-Revert-Exclude-empty-suffix-from-I-require-loop.patch +# https://github.com/rubygems/rubygems/pull/3639 +Patch5: rubygems-3.1.3-Fix-correctness-and-performance-regression-in-require.patch Requires: ruby(release) @@ -74,6 +86,7 @@ BuildRequires: ruby-devel BuildRequires: rubygem(minitest) BuildRequires: %{_bindir}/cmake BuildRequires: %{_bindir}/git +BuildRequires: %{_bindir}/gcc BuildRequires: rubygem(builder) %endif Provides: gem = %{version}-%{release} @@ -101,6 +114,10 @@ Documentation for %{name}. %patch0 -p1 %patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 %build # Nothing @@ -207,6 +224,10 @@ ruby %{SOURCE12} %changelog +* Thu May 28 2020 Vít Ondruch - 3.1.3-201 +- Fix `require` behavior allowing to load libraries multiple times. + Resolves: rhbz#1835836 + * Thu May 07 2020 Vít Ondruch - 3.1.3-200 - Update to RubyGems 3.1.3. From 2e4742a04a45babde33092349b2e6165176f16b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Wed, 24 Jun 2020 13:54:31 +0200 Subject: [PATCH 17/33] Update to RubyGems 3.1.4. --- ruby-2.3.0-ruby_version.patch | 4 ++-- ...correctness-and-performance-regression-in-require.patch | 2 +- rubygems.spec | 7 +++++-- sources | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/ruby-2.3.0-ruby_version.patch b/ruby-2.3.0-ruby_version.patch index 5bfb8d9..bd127bb 100644 --- a/ruby-2.3.0-ruby_version.patch +++ b/ruby-2.3.0-ruby_version.patch @@ -51,7 +51,7 @@ diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb index b25068405d..e9fef4a311 100644 --- a/test/rubygems/test_gem.rb +++ b/test/rubygems/test_gem.rb -@@ -1384,7 +1384,8 @@ def test_self_use_paths +@@ -1378,7 +1378,8 @@ def test_self_use_paths def test_self_user_dir parts = [@userhome, '.gem', Gem.ruby_engine] @@ -61,7 +61,7 @@ index b25068405d..e9fef4a311 100644 assert_equal File.join(parts), Gem.user_dir end -@@ -1460,7 +1461,7 @@ def test_self_vendor_dir +@@ -1454,7 +1455,7 @@ def test_self_vendor_dir vendordir(File.join(@tempdir, 'vendor')) do expected = File.join RbConfig::CONFIG['vendordir'], 'gems', diff --git a/rubygems-3.1.3-Fix-correctness-and-performance-regression-in-require.patch b/rubygems-3.1.3-Fix-correctness-and-performance-regression-in-require.patch index 734ae97..ae6ecbb 100644 --- a/rubygems-3.1.3-Fix-correctness-and-performance-regression-in-require.patch +++ b/rubygems-3.1.3-Fix-correctness-and-performance-regression-in-require.patch @@ -53,7 +53,7 @@ diff --git a/lib/rubygems/test_case.rb b/lib/rubygems/test_case.rb index a05a2898d1..53dd495aef 100644 --- a/lib/rubygems/test_case.rb +++ b/lib/rubygems/test_case.rb -@@ -379,6 +379,7 @@ def setup +@@ -385,6 +385,7 @@ def setup Gem::Security.reset Gem.loaded_specs.clear diff --git a/rubygems.spec b/rubygems.spec index 89e7fcf..14b8ddf 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -32,8 +32,8 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems -Version: 3.1.3 -Release: 201%{?dist} +Version: 3.1.4 +Release: 200%{?dist} License: Ruby or MIT URL: https://rubygems.org/ @@ -224,6 +224,9 @@ ruby %{SOURCE12} %changelog +* Wed Jun 24 2020 Vít Ondruch - 3.1.4-200 +- Update to RubyGems 3.1.4. + * Thu May 28 2020 Vít Ondruch - 3.1.3-201 - Fix `require` behavior allowing to load libraries multiple times. Resolves: rhbz#1835836 diff --git a/sources b/sources index e1d6634..c9c2d67 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (rubygems-3.1.3.tgz) = 8ca0c869a53c4b99072f220bca3455edee6126effb2bc5abb9265758083688b523303e8d2ca0e6d612fbc40140c06570f990fff50cce104f443d86458b190c3b +SHA512 (rubygems-3.1.4.tgz) = 86bb42736ccf320929eb12c83b3ce55fe95053ce5b38434902604d8d61d78c3f3cd8f20858d0fed66c473ef9fd70d7cb596c077cd06506caeac3e62ee6812ad2 From 4f22f48ab44a653e21bc0cc8f1f1623fb69410d2 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 29 Jul 2020 07:18:40 +0000 Subject: [PATCH 18/33] - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- rubygems.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rubygems.spec b/rubygems.spec index 14b8ddf..e0e19c6 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -33,7 +33,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 3.1.4 -Release: 200%{?dist} +Release: 201%{?dist} License: Ruby or MIT URL: https://rubygems.org/ @@ -224,6 +224,9 @@ ruby %{SOURCE12} %changelog +* Wed Jul 29 2020 Fedora Release Engineering - 3.1.4-201 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + * Wed Jun 24 2020 Vít Ondruch - 3.1.4-200 - Update to RubyGems 3.1.4. From 9eb95a29a8582990799df8c261431d9dba7e6830 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 27 Jan 2021 16:42:58 +0000 Subject: [PATCH 19/33] - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- rubygems.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rubygems.spec b/rubygems.spec index e0e19c6..6e36206 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -33,7 +33,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 3.1.4 -Release: 201%{?dist} +Release: 202%{?dist} License: Ruby or MIT URL: https://rubygems.org/ @@ -224,6 +224,9 @@ ruby %{SOURCE12} %changelog +* Wed Jan 27 2021 Fedora Release Engineering - 3.1.4-202 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + * Wed Jul 29 2020 Fedora Release Engineering - 3.1.4-201 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild From c7ee33ec577de1b8d9dcd9bb7f8de97a377f2a60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Wed, 10 Mar 2021 18:58:54 +0100 Subject: [PATCH 20/33] Update to RubyGems 3.2.14. Resolves: rhbz#1905813 Resolves: rhbz#1923699 --- ruby-2.3.0-ruby_version.patch | 24 +- ...ems-3.1.3-Avoid-Bundler-installation.patch | 2 +- rubygems-3.1.3-Fix-I-require-priority.patch | 167 --------- ...nd-performance-regression-in-require.patch | 324 ------------------ rubygems-3.1.3-Improve-require.patch | 92 ----- ...ude-empty-suffix-from-I-require-loop.patch | 29 -- ...-run-test-suite-from-release-tarball.patch | 51 +++ rubygems.spec | 90 ++--- sources | 2 +- 9 files changed, 114 insertions(+), 667 deletions(-) delete mode 100644 rubygems-3.1.3-Fix-I-require-priority.patch delete mode 100644 rubygems-3.1.3-Fix-correctness-and-performance-regression-in-require.patch delete mode 100644 rubygems-3.1.3-Improve-require.patch delete mode 100644 rubygems-3.1.3-Revert-Exclude-empty-suffix-from-I-require-loop.patch create mode 100644 rubygems-3.2.14-Allow-to-run-test-suite-from-release-tarball.patch diff --git a/ruby-2.3.0-ruby_version.patch b/ruby-2.3.0-ruby_version.patch index bd127bb..e4ea396 100644 --- a/ruby-2.3.0-ruby_version.patch +++ b/ruby-2.3.0-ruby_version.patch @@ -12,33 +12,33 @@ diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb index d4ff4a262c..3f9a5bf590 100644 --- a/lib/rubygems/defaults.rb +++ b/lib/rubygems/defaults.rb -@@ -32,13 +32,13 @@ def self.default_dir +@@ -38,13 +38,13 @@ def self.default_dir [ File.dirname(RbConfig::CONFIG['sitedir']), 'Gems', -- RbConfig::CONFIG['ruby_version'] +- RbConfig::CONFIG['ruby_version'], + RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] ] else [ RbConfig::CONFIG['rubylibprefix'], 'gems', -- RbConfig::CONFIG['ruby_version'] +- RbConfig::CONFIG['ruby_version'], + RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] ] end -@@ -75,7 +75,8 @@ def self.default_specifications_dir - - def self.user_dir - parts = [Gem.user_home, '.gem', ruby_engine] +@@ -117,7 +117,8 @@ def self.user_dir + gem_dir = File.join(Gem.user_home, ".gem") + gem_dir = File.join(Gem.data_home, "gem") unless File.exist?(gem_dir) + parts = [gem_dir, ruby_engine] - parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty? + ruby_version_dir_name = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + parts << ruby_version_dir_name unless ruby_version_dir_name.empty? File.join parts end -@@ -158,7 +159,7 @@ def self.vendor_dir # :nodoc: +@@ -252,7 +253,7 @@ def self.vendor_dir # :nodoc: return nil unless RbConfig::CONFIG.key? 'vendordir' File.join RbConfig::CONFIG['vendordir'], 'gems', @@ -51,7 +51,7 @@ diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb index b25068405d..e9fef4a311 100644 --- a/test/rubygems/test_gem.rb +++ b/test/rubygems/test_gem.rb -@@ -1378,7 +1378,8 @@ def test_self_use_paths +@@ -1452,7 +1452,8 @@ def test_self_use_paths def test_self_user_dir parts = [@userhome, '.gem', Gem.ruby_engine] @@ -59,9 +59,9 @@ index b25068405d..e9fef4a311 100644 + ruby_version_dir_name = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + parts << ruby_version_dir_name unless ruby_version_dir_name.empty? - assert_equal File.join(parts), Gem.user_dir - end -@@ -1454,7 +1455,7 @@ def test_self_vendor_dir + FileUtils.mkdir_p File.join(parts) + +@@ -1530,7 +1531,7 @@ def test_self_vendor_dir vendordir(File.join(@tempdir, 'vendor')) do expected = File.join RbConfig::CONFIG['vendordir'], 'gems', diff --git a/rubygems-3.1.3-Avoid-Bundler-installation.patch b/rubygems-3.1.3-Avoid-Bundler-installation.patch index 2844be8..18939e6 100644 --- a/rubygems-3.1.3-Avoid-Bundler-installation.patch +++ b/rubygems-3.1.3-Avoid-Bundler-installation.patch @@ -2,7 +2,7 @@ diff --git a/setup.rb b/setup.rb index 16ffa7215..49f6bfca5 100644 --- a/setup.rb +++ b/setup.rb -@@ -31,6 +31,12 @@ require 'rubygems/exceptions' +@@ -26,6 +26,12 @@ require 'rubygems/exceptions' Gem::CommandManager.instance.register_command :setup diff --git a/rubygems-3.1.3-Fix-I-require-priority.patch b/rubygems-3.1.3-Fix-I-require-priority.patch deleted file mode 100644 index 6ed2f76..0000000 --- a/rubygems-3.1.3-Fix-I-require-priority.patch +++ /dev/null @@ -1,167 +0,0 @@ -From 912d141a351053d0f6d915b5e7807f6a8f4c0631 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Tue, 4 Feb 2020 17:25:56 +0100 -Subject: [PATCH 1/2] Make non "test_" method private - ---- - test/rubygems/test_require.rb | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb -index aa2675af5d..d618a93473 100644 ---- a/test/rubygems/test_require.rb -+++ b/test/rubygems/test_require.rb -@@ -532,6 +532,8 @@ def test_require_bundler_with_bundler_version - end - end - -+ private -+ - def silence_warnings - old_verbose, $VERBOSE = $VERBOSE, false - yield - -From b3944384f44b869985051863d8b05b545d09a585 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Tue, 4 Feb 2020 17:26:28 +0100 -Subject: [PATCH 2/2] Fix require issue with file extension priority - -If `require "a"` is run when two folders have been specified in the -I -option including a "a.rb" file and a "a.so" file respectively, the ruby -spec says that the ".rb" file should always be preferred. However, the -logic we added in https://github.com/rubygems/rubygems/commit/6b81076d9 -to make the -I option always beat default gems does not respect this -spec, creating a difference from the original ruby-core's require. - -[the ruby spec says]: https://github.com/ruby/spec/blob/d80a6e2b221d4f17a8cadcac75ef950c59cba901/core/kernel/shared/require.rb#L234-L246 ---- - lib/rubygems/core_ext/kernel_require.rb | 28 +++++------ - test/rubygems/test_require.rb | 62 +++++++++++++++++++++++++ - 2 files changed, 74 insertions(+), 16 deletions(-) - -diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb -index 60f4d18712..369f2c743e 100644 ---- a/lib/rubygems/core_ext/kernel_require.rb -+++ b/lib/rubygems/core_ext/kernel_require.rb -@@ -43,18 +43,18 @@ def require(path) - # https://github.com/rubygems/rubygems/pull/1868 - resolved_path = begin - rp = nil -- $LOAD_PATH[0...Gem.load_path_insert_index || -1].each do |lp| -- safe_lp = lp.dup.tap(&Gem::UNTAINT) -- begin -- if File.symlink? safe_lp # for backward compatibility -- next -+ Gem.suffixes.each do |s| -+ $LOAD_PATH[0...Gem.load_path_insert_index || -1].each do |lp| -+ safe_lp = lp.dup.tap(&Gem::UNTAINT) -+ begin -+ if File.symlink? safe_lp # for backward compatibility -+ next -+ end -+ rescue SecurityError -+ RUBYGEMS_ACTIVATION_MONITOR.exit -+ raise - end -- rescue SecurityError -- RUBYGEMS_ACTIVATION_MONITOR.exit -- raise -- end - -- Gem.suffixes.each do |s| - full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}")) - if File.file?(full_path) - rp = full_path -@@ -67,12 +67,8 @@ def require(path) - end - - if resolved_path -- begin -- RUBYGEMS_ACTIVATION_MONITOR.exit -- return gem_original_require(resolved_path) -- rescue LoadError -- RUBYGEMS_ACTIVATION_MONITOR.enter -- end -+ RUBYGEMS_ACTIVATION_MONITOR.exit -+ return gem_original_require(resolved_path) - end - - if spec = Gem.find_unresolved_default_spec(path) -diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb -index d618a93473..7cffbfa7fe 100644 ---- a/test/rubygems/test_require.rb -+++ b/test/rubygems/test_require.rb -@@ -120,6 +120,24 @@ def test_dash_i_beats_default_gems - Object.send :remove_const, :HELLO if Object.const_defined? :HELLO - end - -+ def test_dash_i_respects_default_library_extension_priority -+ skip "extensions don't quite work on jruby" if Gem.java_platform? -+ -+ dash_i_ext_arg = util_install_extension_file('a') -+ dash_i_lib_arg = util_install_ruby_file('a') -+ -+ lp = $LOAD_PATH.dup -+ -+ begin -+ $LOAD_PATH.unshift dash_i_lib_arg -+ $LOAD_PATH.unshift dash_i_ext_arg -+ assert_require 'a' -+ assert_match(/a\.rb$/, $LOADED_FEATURES.last) -+ ensure -+ $LOAD_PATH.replace lp -+ end -+ end -+ - def test_concurrent_require - Object.const_set :FILE_ENTERED_LATCH, Latch.new(2) - Object.const_set :FILE_EXIT_LATCH, Latch.new(1) -@@ -541,4 +559,48 @@ def silence_warnings - $VERBOSE = old_verbose - end - -+ def util_install_extension_file(name) -+ spec = quick_gem name -+ util_build_gem spec -+ -+ spec.extensions << "extconf.rb" -+ write_file File.join(@tempdir, "extconf.rb") do |io| -+ io.write <<-RUBY -+ require "mkmf" -+ create_makefile("#{name}") -+ RUBY -+ end -+ -+ write_file File.join(@tempdir, "#{name}.c") do |io| -+ io.write <<-C -+ #include -+ void Init_#{name}() { } -+ C -+ end -+ -+ spec.files += ["extconf.rb", "#{name}.c"] -+ -+ so = File.join(spec.gem_dir, "#{name}.#{RbConfig::CONFIG["DLEXT"]}") -+ refute_path_exists so -+ -+ path = Gem::Package.build spec -+ installer = Gem::Installer.at path -+ installer.install -+ assert_path_exists so -+ -+ spec.gem_dir -+ end -+ -+ def util_install_ruby_file(name) -+ dir_lib = Dir.mktmpdir("test_require_lib", @tempdir) -+ dash_i_lib_arg = File.join dir_lib -+ -+ a_rb = File.join dash_i_lib_arg, "#{name}.rb" -+ -+ FileUtils.mkdir_p File.dirname a_rb -+ File.open(a_rb, 'w') { |f| f.write "# #{name}.rb" } -+ -+ dash_i_lib_arg -+ end -+ - end diff --git a/rubygems-3.1.3-Fix-correctness-and-performance-regression-in-require.patch b/rubygems-3.1.3-Fix-correctness-and-performance-regression-in-require.patch deleted file mode 100644 index ae6ecbb..0000000 --- a/rubygems-3.1.3-Fix-correctness-and-performance-regression-in-require.patch +++ /dev/null @@ -1,324 +0,0 @@ -From 00d98eb8a3245fb93a475ecbbbc4c7ec7e6704cd Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Tue, 19 May 2020 14:00:00 +0200 -Subject: [PATCH 1/5] Fix performance regression in `require` - -Our check for `-I` paths should not go through all activated gems. ---- - lib/rubygems.rb | 10 ++++++++++ - lib/rubygems/core_ext/kernel_require.rb | 2 +- - lib/rubygems/test_case.rb | 1 + - test/rubygems/test_require.rb | 11 +++++++++++ - 4 files changed, 23 insertions(+), 1 deletion(-) - -diff --git a/lib/rubygems.rb b/lib/rubygems.rb -index 843cb49e4a..d1a9a1c7e1 100644 ---- a/lib/rubygems.rb -+++ b/lib/rubygems.rb -@@ -662,10 +662,20 @@ def self.load_path_insert_index - index - end - -+ ## -+ # The number of paths in the `$LOAD_PATH` from activated gems. Used to -+ # prioritize `-I` and `ENV['RUBYLIB`]` entries during `require`. -+ -+ def self.activated_gem_paths -+ @activated_gem_paths ||= 0 -+ end -+ - ## - # Add a list of paths to the $LOAD_PATH at the proper place. - - def self.add_to_load_path(*paths) -+ @activated_gem_paths = activated_gem_paths + paths.size -+ - insert_index = load_path_insert_index - - if insert_index -diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb -index ed24111bd5..7625ce1bee 100644 ---- a/lib/rubygems/core_ext/kernel_require.rb -+++ b/lib/rubygems/core_ext/kernel_require.rb -@@ -47,7 +47,7 @@ def require(path) - load_path_insert_index = Gem.load_path_insert_index - break unless load_path_insert_index - -- $LOAD_PATH[0...load_path_insert_index].each do |lp| -+ $LOAD_PATH[0...load_path_insert_index - Gem.activated_gem_paths].each do |lp| - safe_lp = lp.dup.tap(&Gem::UNTAINT) - begin - if File.symlink? safe_lp # for backward compatibility -diff --git a/lib/rubygems/test_case.rb b/lib/rubygems/test_case.rb -index a05a2898d1..53dd495aef 100644 ---- a/lib/rubygems/test_case.rb -+++ b/lib/rubygems/test_case.rb -@@ -385,6 +385,7 @@ def setup - Gem::Security.reset - - Gem.loaded_specs.clear -+ Gem.instance_variable_set(:@activated_gem_paths, 0) - Gem.clear_default_specs - Bundler.reset! - -diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb -index f36892f8cc..9f2fe3439a 100644 ---- a/test/rubygems/test_require.rb -+++ b/test/rubygems/test_require.rb -@@ -382,6 +382,17 @@ def test_default_gem_require_activates_just_once - assert_equal 0, times_called - end - -+ def test_second_gem_require_does_not_resolve_path_manually_before_going_through_standard_require -+ a1 = util_spec "a", "1", nil, "lib/test_gem_require_a.rb" -+ install_gem a1 -+ -+ assert_require "test_gem_require_a" -+ -+ stub(:gem_original_require, ->(path) { assert_equal "test_gem_require_a", path }) do -+ require "test_gem_require_a" -+ end -+ end -+ - def test_realworld_default_gem - testing_ruby_repo = !ENV["GEM_COMMAND"].nil? - skip "this test can't work under ruby-core setup" if testing_ruby_repo || java_platform? - -From ae95885dff6189c5ac59bbdf685cb4ec4751fdef Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Tue, 19 May 2020 14:08:19 +0200 -Subject: [PATCH 2/5] Refactor `Gem.load_path_insert_index` - ---- - lib/rubygems.rb | 13 +++---------- - lib/rubygems/core_ext/kernel_require.rb | 5 +---- - 2 files changed, 4 insertions(+), 14 deletions(-) - -diff --git a/lib/rubygems.rb b/lib/rubygems.rb -index d1a9a1c7e1..ca80326459 100644 ---- a/lib/rubygems.rb -+++ b/lib/rubygems.rb -@@ -659,7 +659,7 @@ def self.load_path_insert_index - - index = $LOAD_PATH.index RbConfig::CONFIG['sitelibdir'] - -- index -+ index || 0 - end - - ## -@@ -676,15 +676,8 @@ def self.activated_gem_paths - def self.add_to_load_path(*paths) - @activated_gem_paths = activated_gem_paths + paths.size - -- insert_index = load_path_insert_index -- -- if insert_index -- # gem directories must come after -I and ENV['RUBYLIB'] -- $LOAD_PATH.insert(insert_index, *paths) -- else -- # we are probably testing in core, -I and RUBYLIB don't apply -- $LOAD_PATH.unshift(*paths) -- end -+ # gem directories must come after -I and ENV['RUBYLIB'] -+ $LOAD_PATH.insert(Gem.load_path_insert_index, *paths) - end - - @yaml_loaded = false -diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb -index 7625ce1bee..decf4829f1 100644 ---- a/lib/rubygems/core_ext/kernel_require.rb -+++ b/lib/rubygems/core_ext/kernel_require.rb -@@ -44,10 +44,7 @@ def require(path) - resolved_path = begin - rp = nil - Gem.suffixes.each do |s| -- load_path_insert_index = Gem.load_path_insert_index -- break unless load_path_insert_index -- -- $LOAD_PATH[0...load_path_insert_index - Gem.activated_gem_paths].each do |lp| -+ $LOAD_PATH[0...Gem.load_path_insert_index - Gem.activated_gem_paths].each do |lp| - safe_lp = lp.dup.tap(&Gem::UNTAINT) - begin - if File.symlink? safe_lp # for backward compatibility - -From da1492e9d7b28d068fbfbb0ba1cafcc516681567 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Tue, 19 May 2020 14:32:12 +0200 -Subject: [PATCH 3/5] Extract a local outside the loop - ---- - lib/rubygems/core_ext/kernel_require.rb | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb -index decf4829f1..6a7faaf2d1 100644 ---- a/lib/rubygems/core_ext/kernel_require.rb -+++ b/lib/rubygems/core_ext/kernel_require.rb -@@ -43,8 +43,9 @@ def require(path) - # https://github.com/rubygems/rubygems/pull/1868 - resolved_path = begin - rp = nil -+ load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths - Gem.suffixes.each do |s| -- $LOAD_PATH[0...Gem.load_path_insert_index - Gem.activated_gem_paths].each do |lp| -+ $LOAD_PATH[0...load_path_check_index].each do |lp| - safe_lp = lp.dup.tap(&Gem::UNTAINT) - begin - if File.symlink? safe_lp # for backward compatibility - -From 22ad5717c38feda2375b53628d15ae3db2195684 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Thu, 21 May 2020 15:20:57 +0200 -Subject: [PATCH 4/5] Fix `$LOADED_FEATURES` cache sometimes not respected - -In the cases where the initial manually `-I` path resolution succeeded, -we were passing a full path to the original require effectively skipping -the `$LOADED_FEATURES` cache. With this change, we _only_ do the -resolution when a matching requirable path is found in a default gem. In -that case, we skip activation of the default gem if we detect that the -required file will be picked up for a `-I` path. ---- - lib/rubygems/core_ext/kernel_require.rb | 53 +++++++++++-------------- - test/rubygems/test_require.rb | 29 ++++++++++++++ - 2 files changed, 53 insertions(+), 29 deletions(-) - -diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb -index 6a7faaf2d1..81e37b98bf 100644 ---- a/lib/rubygems/core_ext/kernel_require.rb -+++ b/lib/rubygems/core_ext/kernel_require.rb -@@ -39,46 +39,41 @@ def require(path) - - path = path.to_path if path.respond_to? :to_path - -- # Ensure -I beats a default gem -- # https://github.com/rubygems/rubygems/pull/1868 -- resolved_path = begin -- rp = nil -- load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths -- Gem.suffixes.each do |s| -- $LOAD_PATH[0...load_path_check_index].each do |lp| -- safe_lp = lp.dup.tap(&Gem::UNTAINT) -- begin -- if File.symlink? safe_lp # for backward compatibility -- next -+ if spec = Gem.find_unresolved_default_spec(path) -+ # Ensure -I beats a default gem -+ # https://github.com/rubygems/rubygems/pull/1868 -+ resolved_path = begin -+ rp = nil -+ load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths -+ Gem.suffixes.each do |s| -+ $LOAD_PATH[0...load_path_check_index].each do |lp| -+ safe_lp = lp.dup.tap(&Gem::UNTAINT) -+ begin -+ if File.symlink? safe_lp # for backward compatibility -+ next -+ end -+ rescue SecurityError -+ RUBYGEMS_ACTIVATION_MONITOR.exit -+ raise - end -- rescue SecurityError -- RUBYGEMS_ACTIVATION_MONITOR.exit -- raise -- end - -- full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}")) -- if File.file?(full_path) -- rp = full_path -- break -+ full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}")) -+ if File.file?(full_path) -+ rp = full_path -+ break -+ end - end -+ break if rp - end -- break if rp -+ rp - end -- rp -- end - -- if resolved_path -- RUBYGEMS_ACTIVATION_MONITOR.exit -- return gem_original_require(resolved_path) -- end -- -- if spec = Gem.find_unresolved_default_spec(path) - begin - Kernel.send(:gem, spec.name, Gem::Requirement.default_prerelease) - rescue Exception - RUBYGEMS_ACTIVATION_MONITOR.exit - raise -- end -+ end unless resolved_path - end - - # If there are no unresolved deps, then we can use just try -diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb -index 9f2fe3439a..2b11e26dfe 100644 ---- a/test/rubygems/test_require.rb -+++ b/test/rubygems/test_require.rb -@@ -45,6 +45,35 @@ def refute_require(path) - refute require(path), "'#{path}' was not yet required" - end - -+ def test_respect_loaded_features_caching_like_standard_require -+ dir = Dir.mktmpdir("test_require", @tempdir) -+ -+ lp1 = File.join dir, 'foo1' -+ foo1 = File.join lp1, 'foo.rb' -+ -+ FileUtils.mkdir_p lp1 -+ File.open(foo1, 'w') { |f| f.write "class Object; HELLO = 'foo1' end" } -+ -+ lp = $LOAD_PATH.dup -+ -+ $LOAD_PATH.unshift lp1 -+ assert_require 'foo' -+ assert_equal "foo1", ::Object::HELLO -+ -+ lp2 = File.join dir, 'foo2' -+ foo2 = File.join lp2, 'foo.rb' -+ -+ FileUtils.mkdir_p lp2 -+ File.open(foo2, 'w') { |f| f.write "class Object; HELLO = 'foo2' end" } -+ -+ $LOAD_PATH.unshift lp2 -+ refute_require 'foo' -+ assert_equal "foo1", ::Object::HELLO -+ ensure -+ $LOAD_PATH.replace lp -+ Object.send :remove_const, :HELLO if Object.const_defined? :HELLO -+ end -+ - # Providing -I on the commandline should always beat gems - def test_dash_i_beats_gems - a1 = util_spec "a", "1", {"b" => "= 1"}, "lib/test_gem_require_a.rb" - -From db872c7a18d616f4447bdcca3130be6db9e5cb03 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Sat, 23 May 2020 20:18:41 +0200 -Subject: [PATCH 5/5] Remove direct reference to PR - -The code is quite different now, so I think the link might be even -confusing. If you want to know more, use git history. ---- - lib/rubygems/core_ext/kernel_require.rb | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb -index 81e37b98bf..115ae0cb50 100644 ---- a/lib/rubygems/core_ext/kernel_require.rb -+++ b/lib/rubygems/core_ext/kernel_require.rb -@@ -41,7 +41,6 @@ def require(path) - - if spec = Gem.find_unresolved_default_spec(path) - # Ensure -I beats a default gem -- # https://github.com/rubygems/rubygems/pull/1868 - resolved_path = begin - rp = nil - load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths diff --git a/rubygems-3.1.3-Improve-require.patch b/rubygems-3.1.3-Improve-require.patch deleted file mode 100644 index 2df5c4f..0000000 --- a/rubygems-3.1.3-Improve-require.patch +++ /dev/null @@ -1,92 +0,0 @@ -From c5197b2ab35ba389f48918e0c773b43b6dca2fa5 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Fri, 7 Feb 2020 17:16:05 +0100 -Subject: [PATCH 1/3] Tweaks to get test passing more reliably - ---- - test/rubygems/test_require.rb | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb -index 7cffbfa7fe..67c55416d4 100644 ---- a/test/rubygems/test_require.rb -+++ b/test/rubygems/test_require.rb -@@ -567,18 +567,20 @@ def util_install_extension_file(name) - write_file File.join(@tempdir, "extconf.rb") do |io| - io.write <<-RUBY - require "mkmf" -+ CONFIG['LDSHARED'] = '$(TOUCH) $@ ||' - create_makefile("#{name}") - RUBY - end - - write_file File.join(@tempdir, "#{name}.c") do |io| - io.write <<-C -- #include - void Init_#{name}() { } - C - end - -- spec.files += ["extconf.rb", "#{name}.c"] -+ write_file File.join(@tempdir, "depend") -+ -+ spec.files += ["extconf.rb", "depend", "#{name}.c"] - - so = File.join(spec.gem_dir, "#{name}.#{RbConfig::CONFIG["DLEXT"]}") - refute_path_exists so - -From 7bfd7319cd751837c3ccaf1d97b02846eaaf39d5 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Tue, 11 Feb 2020 11:56:06 +0100 -Subject: [PATCH 2/3] Fix bug bug calculating $LOAD_PATH's to check in - `require` - -In `Gem.load_path_insert_index` is not set, we end up having -`$LOAD_PATH[0...-1]`, unintentionally skipping the last $LOAD_PATH entry -from the check. - -The correct thing to do in that case is to not even try since we have no -way of distinguisng default LOAD_PATH entries from those added with -I. ---- - lib/rubygems/core_ext/kernel_require.rb | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb -index 369f2c743e..a8d170f13a 100644 ---- a/lib/rubygems/core_ext/kernel_require.rb -+++ b/lib/rubygems/core_ext/kernel_require.rb -@@ -44,7 +44,10 @@ def require(path) - resolved_path = begin - rp = nil - Gem.suffixes.each do |s| -- $LOAD_PATH[0...Gem.load_path_insert_index || -1].each do |lp| -+ load_path_insert_index = Gem.load_path_insert_index -+ break unless load_path_insert_index -+ -+ $LOAD_PATH[0...load_path_insert_index].each do |lp| - safe_lp = lp.dup.tap(&Gem::UNTAINT) - begin - if File.symlink? safe_lp # for backward compatibility - -From 4fc0ab21c0f7713829abb522ce3b6d8e24c126b3 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Fri, 14 Feb 2020 02:03:04 +0100 -Subject: [PATCH 3/3] Exclude empty suffix from `-I` require loop - ---- - lib/rubygems/core_ext/kernel_require.rb | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb -index a8d170f13a..9712fb6ac0 100644 ---- a/lib/rubygems/core_ext/kernel_require.rb -+++ b/lib/rubygems/core_ext/kernel_require.rb -@@ -43,7 +43,7 @@ def require(path) - # https://github.com/rubygems/rubygems/pull/1868 - resolved_path = begin - rp = nil -- Gem.suffixes.each do |s| -+ Gem.suffixes[1..-1].each do |s| - load_path_insert_index = Gem.load_path_insert_index - break unless load_path_insert_index - diff --git a/rubygems-3.1.3-Revert-Exclude-empty-suffix-from-I-require-loop.patch b/rubygems-3.1.3-Revert-Exclude-empty-suffix-from-I-require-loop.patch deleted file mode 100644 index 463047c..0000000 --- a/rubygems-3.1.3-Revert-Exclude-empty-suffix-from-I-require-loop.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 301e30bf97dd603ca81d52b90186908575c4ddf8 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?David=20Rodr=C3=ADguez?= -Date: Tue, 25 Feb 2020 15:01:44 +0100 -Subject: [PATCH] Revert "Exclude empty suffix from `-I` require loop" - -This reverts commit 4fc0ab21c0f7713829abb522ce3b6d8e24c126b3. - -Technically, extensionless ruby files are valid ruby files that can be -required. For example, `bin/bundle` is sometimes required from other -binstubs even if it's also runnable directly. - -So, we should technically consider this kind of files too. ---- - lib/rubygems/core_ext/kernel_require.rb | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb -index 9712fb6ac0..a8d170f13a 100644 ---- a/lib/rubygems/core_ext/kernel_require.rb -+++ b/lib/rubygems/core_ext/kernel_require.rb -@@ -43,7 +43,7 @@ def require(path) - # https://github.com/rubygems/rubygems/pull/1868 - resolved_path = begin - rp = nil -- Gem.suffixes[1..-1].each do |s| -+ Gem.suffixes.each do |s| - load_path_insert_index = Gem.load_path_insert_index - break unless load_path_insert_index - diff --git a/rubygems-3.2.14-Allow-to-run-test-suite-from-release-tarball.patch b/rubygems-3.2.14-Allow-to-run-test-suite-from-release-tarball.patch new file mode 100644 index 0000000..161d189 --- /dev/null +++ b/rubygems-3.2.14-Allow-to-run-test-suite-from-release-tarball.patch @@ -0,0 +1,51 @@ +From 5c42ecf4457f7db4194ded5a64d48754752fc03f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?V=C3=ADt=20Ondruch?= +Date: Wed, 10 Mar 2021 16:53:26 +0100 +Subject: [PATCH] Allow to run test suite from release tarball. + +Just skip the Automatie if not avialable. It is not essential to run the +test suite. + +Fixes #4430 +--- + Rakefile | 24 ++++++++++++++---------- + 1 file changed, 14 insertions(+), 10 deletions(-) + +diff --git a/Rakefile b/Rakefile +index 8b1164559..393f65954 100644 +--- a/Rakefile ++++ b/Rakefile +@@ -58,16 +58,20 @@ RDoc::Task.new :rdoc => 'docs', :clobber_rdoc => 'clobber_docs' do |doc| + doc.rdoc_dir = 'doc' + end + +-load "util/automatiek.rake" +- +-# We currently ship Molinillo master branch as of +-# https://github.com/CocoaPods/Molinillo/commit/7cc27a355e861bdf593e2cde7bf1bca3daae4303 +-Automatiek::RakeTask.new("molinillo") do |lib| +- lib.version = "master" +- lib.download = { :github => "https://github.com/CocoaPods/Molinillo" } +- lib.namespace = "Molinillo" +- lib.prefix = "Gem::Resolver" +- lib.vendor_lib = "lib/rubygems/resolver/molinillo" ++begin ++ load "util/automatiek.rake" ++ ++ # We currently ship Molinillo master branch as of ++ # https://github.com/CocoaPods/Molinillo/commit/7cc27a355e861bdf593e2cde7bf1bca3daae4303 ++ Automatiek::RakeTask.new("molinillo") do |lib| ++ lib.version = "master" ++ lib.download = { :github => "https://github.com/CocoaPods/Molinillo" } ++ lib.namespace = "Molinillo" ++ lib.prefix = "Gem::Resolver" ++ lib.vendor_lib = "lib/rubygems/resolver/molinillo" ++ end ++rescue LoadError ++ # `rake` is likely executed from released tarball. Just ignore the issue. + end + + namespace :rubocop do +-- +2.30.0 + diff --git a/rubygems.spec b/rubygems.spec index 6e36206..b1451ae 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -3,14 +3,14 @@ # # Bundled libraries versions -%global molinillo_version 0.5.7 +%global molinillo_version 0.7.0 # Requires versions -%global bundler_version 2.1.4 -%global io_console_version 0.4.6 -%global openssl_version 2.0.2 -%global psych_version 2.2.2 -%global rdoc_version 5.0.0 +%global bundler_version 2.2.14 +%global io_console_version 0.5.6 +%global openssl_version 2.2.0 +%global psych_version 3.3.0 +%global rdoc_version 6.3.0 # The RubyGems library has to stay out of Ruby directory tree, since the # RubyGems should be share by all Ruby implementations. @@ -23,7 +23,7 @@ # Executing testsuite (enabling %%check section) will cause dependency loop. # To avoid dependency loop when necessary, please set the following value to 0 -%global enable_check 1 +%bcond_with bootstrap # It cannot be relied on %%{_libdir} for noarch packages. Query Ruby for # the right value. @@ -32,12 +32,12 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems -Version: 3.1.4 -Release: 202%{?dist} +Version: 3.2.14 +Release: 200%{?dist} License: Ruby or MIT URL: https://rubygems.org/ -Source0: http://production.cf.rubygems.org/rubygems/%{name}-%{version}.tgz +Source0: https://rubygems.org/rubygems/%{name}-%{version}.tgz # Sources from the works by Vít Ondruch # NOTE: Keep Source1 in sync with ruby.spec. Source1: operating_system.rb @@ -57,18 +57,10 @@ Patch0: ruby-2.3.0-ruby_version.patch # independent package, therefore just ignore the installation altogether. # https://github.com/rubygems/rubygems/issues/3604 Patch1: rubygems-3.1.3-Avoid-Bundler-installation.patch -# Fix `require` behavior allowing to load libraries multiple times. -# https://github.com/rubygems/rubygems/issues/3647 -# Because there were multiple fixes in `Kernel.require` in recent months, -# pickup all the changes one by one instead of squashing them. -# https://github.com/rubygems/rubygems/pull/3124 -Patch2: rubygems-3.1.3-Fix-I-require-priority.patch -# https://github.com/rubygems/rubygems/pull/3133 -Patch3: rubygems-3.1.3-Improve-require.patch -# https://github.com/rubygems/rubygems/pull/3153 -Patch4: rubygems-3.1.3-Revert-Exclude-empty-suffix-from-I-require-loop.patch -# https://github.com/rubygems/rubygems/pull/3639 -Patch5: rubygems-3.1.3-Fix-correctness-and-performance-regression-in-require.patch +# Remove unnecessary dependencies from Rakefile to make it usable to execute +# the test suite. +# https://github.com/rubygems/rubygems/pull/4447 +Patch2: rubygems-3.2.14-Allow-to-run-test-suite-from-release-tarball.patch Requires: ruby(release) @@ -80,7 +72,7 @@ Requires: rubygem(psych) >= %{psych_version} BuildRequires: ruby(release) BuildRequires: rubygems-devel BuildRequires: rubygem(rdoc) -%if %{enable_check} +%if %{without bootstrap} # For mkmf.rb BuildRequires: ruby-devel BuildRequires: rubygem(minitest) @@ -88,11 +80,12 @@ BuildRequires: %{_bindir}/cmake BuildRequires: %{_bindir}/git BuildRequires: %{_bindir}/gcc BuildRequires: rubygem(builder) +BuildRequires: rubygem(rake) +BuildRequires: rubygem(webrick) %endif Provides: gem = %{version}-%{release} Provides: ruby(rubygems) = %{version}-%{release} # https://github.com/rubygems/rubygems/pull/1189#issuecomment-121600910 -Provides: bundled(rubygem(molinillo)) = %{molinillo_version} Provides: bundled(rubygem-molinillo) = %{molinillo_version} BuildArch: noarch @@ -115,9 +108,6 @@ Documentation for %{name}. %patch0 -p1 %patch1 -p1 %patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 %build # Nothing @@ -142,22 +132,22 @@ rmdir %{buildroot}%{rubygems_dir}/lib # Kill bundled certificates, as they should be part of ca-certificates. for cert in \ - rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem \ - rubygems.org/AddTrustExternalCARoot.pem \ - index.rubygems.org/GlobalSignRootCA.pem + .document \ + rubygems.org/GlobalSignRootCA.pem \ + rubygems.org/GlobalSignRootCA_R3.pem do rm %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert - rm -r $(dirname %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert) + rm -d $(dirname %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/$cert) || : done # Ensure there is not forgotten any certificate. -test ! "$(ls -A %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/ 2>/dev/null)" +test ! "$(ls -A %{buildroot}%{rubygems_dir}/rubygems/ssl_certs/ 2>/dev/null)" # Install custom operating_system.rb. mkdir -p %{buildroot}%{rubygems_dir}/rubygems/defaults install -cpm 0644 %{SOURCE1} %{buildroot}%{rubygems_dir}/rubygems/defaults/ # Create gem folders. -mkdir -p %{buildroot}%{gem_dir}/{cache,gems,specifications,extensions,doc} +mkdir -p %{buildroot}%{gem_dir}/{cache,gems,specifications,extensions,doc,plugins} mkdir -p %{buildroot}%{gem_extdir}/ruby # Create below @@ -175,21 +165,29 @@ touch lib/rubygems/defaults/operating_system.rb # It is necessary to specify the paths to let the test suite pass." export GEM_PATH=%{gem_dir} -export RUBYOPT="--disable-gems -Ilib:test:bundler/lib" # Check Molinillo version correctness. -[ "`ruby -e 'module Gem; module Resolver; end; end; require %{rubygems/resolver/molinillo/lib/molinillo/gem_metadata}; puts Gem::Resolver::Molinillo::VERSION' | tail -1`" \ +[ "`RUBYOPT=-Ilib ruby -e 'module Gem; class Resolver; end; end; require %{rubygems/resolver/molinillo/lib/molinillo/gem_metadata}; puts Gem::Resolver::Molinillo::VERSION' | tail -1`" \ == '%{molinillo_version}' ] # Check Bundler version. -[ "`ruby -rbundler/version -e 'puts Bundler::VERSION'| tail -1`" \ +[ "`RUBYOPT=-Ibundler/lib ruby -rbundler/version -e 'puts Bundler::VERSION'| tail -1`" \ == '%{bundler_version}' ] -%if %{enable_check} +%if %{without bootstrap} +# util directory with changelog generator are not shipped in release archive. +mv test/test_changelog_generator.rb{,.disabled} + # TestProjectSanity#test_manifest_is_up_to_date is of no interest and it # expects to work in git repository. -ruby -e 'Dir.glob "./test/**/test_*.rb", &method(:require)' -- -e /test_manifest_is_up_to_date/ -v +# TestGemExtExtConfBuilder#test_class_(build_rbconfig_make_prog|build|build_env_make) +# are failing, because they cannot locate `gem.build_complete` file. +# https://github.com/rubygems/rubygems/pull/4440 +# The `test_realworld_{default_gem,upgraded_default_gem}` needs the same +# treatment as the have in Ruby repository. +GEM_COMMAND="skip test_realworld_{default_gem,upgraded_default_gem}" \ + rake TESTOPTS='- -v "-e /test_(manifest_is_up_to_date|class_(build_rbconfig_make_prog|build|build_env_make))/"' # CVE vulnerability check ruby %{SOURCE11} @@ -197,14 +195,18 @@ ruby %{SOURCE12} %endif %files -%doc README* -%doc History.txt +%doc CODE_OF_CONDUCT.md +%doc CHANGELOG.md +%doc CONTRIBUTING.md +%doc MAINTAINERS.txt +%doc POLICIES.md +%doc README.md +%doc UPGRADING.md %license MIT.txt LICENSE.txt %{_bindir}/gem %dir %{rubygems_dir} %{rubygems_dir}/rubygems %{rubygems_dir}/rubygems.rb -%{rubygems_dir}/ubygems.rb # Explicitly include only RubyGems directory strucure to avoid accidentally # packaged content. @@ -214,6 +216,7 @@ ruby %{SOURCE12} %dir %{gem_dir}/doc %dir %{gem_dir}/extensions %dir %{gem_dir}/gems +%dir %{gem_dir}/plugins %dir %{gem_dir}/specifications %dir %{gem_dir}/specifications/default %dir %{_exec_prefix}/lib*/gems @@ -224,6 +227,11 @@ ruby %{SOURCE12} %changelog +* Fri Mar 05 2021 Vít Ondruch - 3.2.14-200 +- Update to RubyGems 3.2.14. + Resolves: rhbz#1905813 + Resolves: rhbz#1923699 + * Wed Jan 27 2021 Fedora Release Engineering - 3.1.4-202 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild diff --git a/sources b/sources index c9c2d67..9bbf4c2 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (rubygems-3.1.4.tgz) = 86bb42736ccf320929eb12c83b3ce55fe95053ce5b38434902604d8d61d78c3f3cd8f20858d0fed66c473ef9fd70d7cb596c077cd06506caeac3e62ee6812ad2 +SHA512 (rubygems-3.2.14.tgz) = de28bdfdc239cd49bb5a1f78f0a9e3ec432fb70c8326c7899f7ef0a088f60becd99ba81285b20388296f96afb46ca3ca359208621d88a6be68b7388d155a2383 From 0dc319185bfd07088a93fb0f3bd772b7f552265f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Thu, 11 Mar 2021 18:58:03 +0100 Subject: [PATCH 21/33] Enable additional test cases with Ruby load path setup correctly. --- rubygems.spec | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/rubygems.spec b/rubygems.spec index b1451ae..569f1be 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -33,7 +33,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 3.2.14 -Release: 200%{?dist} +Release: 201%{?dist} License: Ruby or MIT URL: https://rubygems.org/ @@ -163,9 +163,6 @@ rm -vr %{buildroot}%{rubygems_dir}/bundler* mkdir -p lib/rubygems/defaults touch lib/rubygems/defaults/operating_system.rb -# It is necessary to specify the paths to let the test suite pass." -export GEM_PATH=%{gem_dir} - # Check Molinillo version correctness. [ "`RUBYOPT=-Ilib ruby -e 'module Gem; class Resolver; end; end; require %{rubygems/resolver/molinillo/lib/molinillo/gem_metadata}; puts Gem::Resolver::Molinillo::VERSION' | tail -1`" \ == '%{molinillo_version}' ] @@ -174,20 +171,32 @@ export GEM_PATH=%{gem_dir} [ "`RUBYOPT=-Ibundler/lib ruby -rbundler/version -e 'puts Bundler::VERSION'| tail -1`" \ == '%{bundler_version}' ] - %if %{without bootstrap} # util directory with changelog generator are not shipped in release archive. mv test/test_changelog_generator.rb{,.disabled} +# Put all required libraries on the `$LOAD_PATH`, where the original Ruby +# `require` can find them. This prevents the RubyGems load machinery from +# running and failing to find `gem.build_complete` files for sytem packages +# and therefore raising warnings such as: "Ignoring json-2.5.1 because its +# extensions are not built. Try: gem pristine json --version 2.5.1". +# https://github.com/rubygems/rubygems/pull/4446 +export RUBYOPT="-I$(ruby -e 'size = $LOAD_PATH.size; %w(rake minitest rdoc webrick).each {|r| require r}; puts $LOAD_PATH[...-size].join ?:')" \ + +# Also fake the SimpleCov for similar reasons as above. +cat >> lib/simplecov.rb << EOF +class SimpleCov + def self.method_missing(*args) + end +end +EOF + # TestProjectSanity#test_manifest_is_up_to_date is of no interest and it # expects to work in git repository. -# TestGemExtExtConfBuilder#test_class_(build_rbconfig_make_prog|build|build_env_make) -# are failing, because they cannot locate `gem.build_complete` file. -# https://github.com/rubygems/rubygems/pull/4440 # The `test_realworld_{default_gem,upgraded_default_gem}` needs the same # treatment as the have in Ruby repository. GEM_COMMAND="skip test_realworld_{default_gem,upgraded_default_gem}" \ - rake TESTOPTS='- -v "-e /test_(manifest_is_up_to_date|class_(build_rbconfig_make_prog|build|build_env_make))/"' + rake TESTOPTS='- -v "-e /test_(manifest_is_up_to_date)/"' # CVE vulnerability check ruby %{SOURCE11} @@ -227,6 +236,9 @@ ruby %{SOURCE12} %changelog +* Thu Mar 11 2021 Vít Ondruch - 3.2.14-201 +- Enable additional test cases with Ruby load path setup correctly. + * Fri Mar 05 2021 Vít Ondruch - 3.2.14-200 - Update to RubyGems 3.2.14. Resolves: rhbz#1905813 From 302d85f8c4bad18ed9f2f73df19a58979e642aac Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 23 Jul 2021 12:55:51 +0000 Subject: [PATCH 22/33] - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- rubygems.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rubygems.spec b/rubygems.spec index 569f1be..9a09b06 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -33,7 +33,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 3.2.14 -Release: 201%{?dist} +Release: 202%{?dist} License: Ruby or MIT URL: https://rubygems.org/ @@ -236,6 +236,9 @@ ruby %{SOURCE12} %changelog +* Fri Jul 23 2021 Fedora Release Engineering - 3.2.14-202 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + * Thu Mar 11 2021 Vít Ondruch - 3.2.14-201 - Enable additional test cases with Ruby load path setup correctly. From 0937400645f4df732b9a9595b0840f57335318a2 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 21 Jan 2022 19:29:54 +0000 Subject: [PATCH 23/33] - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- rubygems.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rubygems.spec b/rubygems.spec index 9a09b06..0083b08 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -33,7 +33,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 3.2.14 -Release: 202%{?dist} +Release: 203%{?dist} License: Ruby or MIT URL: https://rubygems.org/ @@ -236,6 +236,9 @@ ruby %{SOURCE12} %changelog +* Fri Jan 21 2022 Fedora Release Engineering - 3.2.14-203 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Fri Jul 23 2021 Fedora Release Engineering - 3.2.14-202 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild From cf5ca2d73947a6df35f2c99b4ed449dfb78a2560 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 23 Jul 2022 02:33:01 +0000 Subject: [PATCH 24/33] Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- rubygems.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rubygems.spec b/rubygems.spec index 0083b08..e88063d 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -33,7 +33,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 3.2.14 -Release: 203%{?dist} +Release: 204%{?dist} License: Ruby or MIT URL: https://rubygems.org/ @@ -236,6 +236,9 @@ ruby %{SOURCE12} %changelog +* Sat Jul 23 2022 Fedora Release Engineering - 3.2.14-204 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + * Fri Jan 21 2022 Fedora Release Engineering - 3.2.14-203 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild From d9386b917796d7ebda9f204b8fd14f65f99f93c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADt=20Ondruch?= Date: Thu, 15 Sep 2022 15:57:06 +0200 Subject: [PATCH 25/33] Update to RubyGems 3.3.22. Resolves: rhbz#1941091 Resolves: rhbz#2046966 --- ruby-2.3.0-ruby_version.patch | 62 +++++++++---------- ...ems-3.1.3-Avoid-Bundler-installation.patch | 4 +- ...-run-test-suite-from-release-tarball.patch | 51 --------------- rubygems.spec | 61 +++++++++--------- sources | 2 +- 5 files changed, 64 insertions(+), 116 deletions(-) delete mode 100644 rubygems-3.2.14-Allow-to-run-test-suite-from-release-tarball.patch diff --git a/ruby-2.3.0-ruby_version.patch b/ruby-2.3.0-ruby_version.patch index e4ea396..4ec9d47 100644 --- a/ruby-2.3.0-ruby_version.patch +++ b/ruby-2.3.0-ruby_version.patch @@ -4,46 +4,39 @@ Date: Tue, 31 Mar 2015 16:37:44 +0200 Subject: [PATCH 3/4] Add ruby_version_dir_name support for RubyGems. --- - lib/rubygems/defaults.rb | 9 +++++---- + lib/rubygems/defaults.rb | 7 ++++--- test/rubygems/test_gem.rb | 5 +++-- - 2 files changed, 8 insertions(+), 6 deletions(-) + 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb index d4ff4a262c..3f9a5bf590 100644 --- a/lib/rubygems/defaults.rb +++ b/lib/rubygems/defaults.rb -@@ -38,13 +38,13 @@ def self.default_dir - [ - File.dirname(RbConfig::CONFIG['sitedir']), - 'Gems', -- RbConfig::CONFIG['ruby_version'], -+ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] - ] - else - [ - RbConfig::CONFIG['rubylibprefix'], - 'gems', -- RbConfig::CONFIG['ruby_version'], -+ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] - ] - end +@@ -34,7 +34,7 @@ def self.default_spec_cache_dir + # specified in the environment -@@ -117,7 +117,8 @@ def self.user_dir + def self.default_dir +- @default_dir ||= File.join(RbConfig::CONFIG["rubylibprefix"], "gems", RbConfig::CONFIG["ruby_version"]) ++ @default_dir ||= File.join(RbConfig::CONFIG["rubylibprefix"], "gems", RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"]) + end + + ## +@@ -103,7 +103,8 @@ def self.user_dir gem_dir = File.join(Gem.user_home, ".gem") gem_dir = File.join(Gem.data_home, "gem") unless File.exist?(gem_dir) parts = [gem_dir, ruby_engine] -- parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty? -+ ruby_version_dir_name = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] +- parts << RbConfig::CONFIG["ruby_version"] unless RbConfig::CONFIG["ruby_version"].empty? ++ ruby_version_dir_name = RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"] + parts << ruby_version_dir_name unless ruby_version_dir_name.empty? File.join parts end -@@ -252,7 +253,7 @@ def self.vendor_dir # :nodoc: - return nil unless RbConfig::CONFIG.key? 'vendordir' +@@ -234,7 +235,7 @@ def self.vendor_dir # :nodoc: + return nil unless RbConfig::CONFIG.key? "vendordir" - File.join RbConfig::CONFIG['vendordir'], 'gems', -- RbConfig::CONFIG['ruby_version'] -+ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + File.join RbConfig::CONFIG["vendordir"], "gems", +- RbConfig::CONFIG["ruby_version"] ++ RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"] end ## @@ -51,24 +44,25 @@ diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb index b25068405d..e9fef4a311 100644 --- a/test/rubygems/test_gem.rb +++ b/test/rubygems/test_gem.rb -@@ -1452,7 +1452,8 @@ def test_self_use_paths +@@ -1394,7 +1394,8 @@ def test_self_use_paths def test_self_user_dir - parts = [@userhome, '.gem', Gem.ruby_engine] -- parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty? -+ ruby_version_dir_name = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + parts = [@userhome, ".gem", Gem.ruby_engine] +- parts << RbConfig::CONFIG["ruby_version"] unless RbConfig::CONFIG["ruby_version"].empty? ++ ruby_version_dir_name = RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"] + parts << ruby_version_dir_name unless ruby_version_dir_name.empty? FileUtils.mkdir_p File.join(parts) -@@ -1530,7 +1531,7 @@ def test_self_vendor_dir - vendordir(File.join(@tempdir, 'vendor')) do +@@ -1470,7 +1471,7 @@ def test_self_vendor_dir + vendordir(File.join(@tempdir, "vendor")) do expected = - File.join RbConfig::CONFIG['vendordir'], 'gems', -- RbConfig::CONFIG['ruby_version'] -+ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version'] + File.join RbConfig::CONFIG["vendordir"], "gems", +- RbConfig::CONFIG["ruby_version"] ++ RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"] assert_equal expected, Gem.vendor_dir end -- 2.1.0 + diff --git a/rubygems-3.1.3-Avoid-Bundler-installation.patch b/rubygems-3.1.3-Avoid-Bundler-installation.patch index 18939e6..55edaf0 100644 --- a/rubygems-3.1.3-Avoid-Bundler-installation.patch +++ b/rubygems-3.1.3-Avoid-Bundler-installation.patch @@ -2,7 +2,7 @@ diff --git a/setup.rb b/setup.rb index 16ffa7215..49f6bfca5 100644 --- a/setup.rb +++ b/setup.rb -@@ -26,6 +26,12 @@ require 'rubygems/exceptions' +@@ -24,6 +24,12 @@ require 'rubygems/exceptions' Gem::CommandManager.instance.register_command :setup @@ -14,4 +14,4 @@ index 16ffa7215..49f6bfca5 100644 + args = ARGV.clone if ENV["GEM_PREV_VER"] - args = [ '--previous-version', ENV["GEM_PREV_VER"] ] + args + args = [ "--previous-version", ENV["GEM_PREV_VER"] ] + args diff --git a/rubygems-3.2.14-Allow-to-run-test-suite-from-release-tarball.patch b/rubygems-3.2.14-Allow-to-run-test-suite-from-release-tarball.patch deleted file mode 100644 index 161d189..0000000 --- a/rubygems-3.2.14-Allow-to-run-test-suite-from-release-tarball.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 5c42ecf4457f7db4194ded5a64d48754752fc03f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?V=C3=ADt=20Ondruch?= -Date: Wed, 10 Mar 2021 16:53:26 +0100 -Subject: [PATCH] Allow to run test suite from release tarball. - -Just skip the Automatie if not avialable. It is not essential to run the -test suite. - -Fixes #4430 ---- - Rakefile | 24 ++++++++++++++---------- - 1 file changed, 14 insertions(+), 10 deletions(-) - -diff --git a/Rakefile b/Rakefile -index 8b1164559..393f65954 100644 ---- a/Rakefile -+++ b/Rakefile -@@ -58,16 +58,20 @@ RDoc::Task.new :rdoc => 'docs', :clobber_rdoc => 'clobber_docs' do |doc| - doc.rdoc_dir = 'doc' - end - --load "util/automatiek.rake" -- --# We currently ship Molinillo master branch as of --# https://github.com/CocoaPods/Molinillo/commit/7cc27a355e861bdf593e2cde7bf1bca3daae4303 --Automatiek::RakeTask.new("molinillo") do |lib| -- lib.version = "master" -- lib.download = { :github => "https://github.com/CocoaPods/Molinillo" } -- lib.namespace = "Molinillo" -- lib.prefix = "Gem::Resolver" -- lib.vendor_lib = "lib/rubygems/resolver/molinillo" -+begin -+ load "util/automatiek.rake" -+ -+ # We currently ship Molinillo master branch as of -+ # https://github.com/CocoaPods/Molinillo/commit/7cc27a355e861bdf593e2cde7bf1bca3daae4303 -+ Automatiek::RakeTask.new("molinillo") do |lib| -+ lib.version = "master" -+ lib.download = { :github => "https://github.com/CocoaPods/Molinillo" } -+ lib.namespace = "Molinillo" -+ lib.prefix = "Gem::Resolver" -+ lib.vendor_lib = "lib/rubygems/resolver/molinillo" -+ end -+rescue LoadError -+ # `rake` is likely executed from released tarball. Just ignore the issue. - end - - namespace :rubocop do --- -2.30.0 - diff --git a/rubygems.spec b/rubygems.spec index e88063d..550cf93 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -4,9 +4,12 @@ # Bundled libraries versions %global molinillo_version 0.7.0 +%global optparse_version 0.2.0 +# TODO: Check the version if/when available in library. +%global tsort_version 0.1.0 # Requires versions -%global bundler_version 2.2.14 +%global bundler_version 2.3.22 %global io_console_version 0.5.6 %global openssl_version 2.2.0 %global psych_version 3.3.0 @@ -32,9 +35,12 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems -Version: 3.2.14 -Release: 204%{?dist} -License: Ruby or MIT +Version: 3.3.22 +Release: 201%{?dist} +# BSD-2-Clause: lib/rubygems/tsort/ +# BSD-2-Clause OR RUBY: lib/rubygems/optparse/ +# MIT: lib/rubygems/resolver/molinillo +License: (Ruby OR MIT) AND BSD-2-Clause AND (BSD-2-Clause OR RUBY) AND MIT URL: https://rubygems.org/ Source0: https://rubygems.org/rubygems/%{name}-%{version}.tgz @@ -57,10 +63,6 @@ Patch0: ruby-2.3.0-ruby_version.patch # independent package, therefore just ignore the installation altogether. # https://github.com/rubygems/rubygems/issues/3604 Patch1: rubygems-3.1.3-Avoid-Bundler-installation.patch -# Remove unnecessary dependencies from Rakefile to make it usable to execute -# the test suite. -# https://github.com/rubygems/rubygems/pull/4447 -Patch2: rubygems-3.2.14-Allow-to-run-test-suite-from-release-tarball.patch Requires: ruby(release) @@ -71,15 +73,13 @@ Requires: rubygem(openssl) >= %{openssl_version} Requires: rubygem(psych) >= %{psych_version} BuildRequires: ruby(release) BuildRequires: rubygems-devel -BuildRequires: rubygem(rdoc) %if %{without bootstrap} # For mkmf.rb BuildRequires: ruby-devel -BuildRequires: rubygem(minitest) +BuildRequires: rubygem(test-unit) BuildRequires: %{_bindir}/cmake BuildRequires: %{_bindir}/git BuildRequires: %{_bindir}/gcc -BuildRequires: rubygem(builder) BuildRequires: rubygem(rake) BuildRequires: rubygem(webrick) %endif @@ -107,7 +107,6 @@ Documentation for %{name}. %patch0 -p1 %patch1 -p1 -%patch2 -p1 %build # Nothing @@ -163,13 +162,17 @@ rm -vr %{buildroot}%{rubygems_dir}/bundler* mkdir -p lib/rubygems/defaults touch lib/rubygems/defaults/operating_system.rb +# Check Bundler version. +[ "`RUBYOPT=-Ibundler/lib ruby -rbundler/version -e 'puts Bundler::VERSION'| tail -1`" \ + == '%{bundler_version}' ] + # Check Molinillo version correctness. [ "`RUBYOPT=-Ilib ruby -e 'module Gem; class Resolver; end; end; require %{rubygems/resolver/molinillo/lib/molinillo/gem_metadata}; puts Gem::Resolver::Molinillo::VERSION' | tail -1`" \ == '%{molinillo_version}' ] -# Check Bundler version. -[ "`RUBYOPT=-Ibundler/lib ruby -rbundler/version -e 'puts Bundler::VERSION'| tail -1`" \ - == '%{bundler_version}' ] +# Check optparse version correctness. +[ "`RUBYOPT=-Ilib ruby -e 'require %{rubygems/optparse/lib/optparse}; puts Gem::OptionParser::Version' | tail -1`" \ + == '%{optparse_version}' ] %if %{without bootstrap} # util directory with changelog generator are not shipped in release archive. @@ -181,22 +184,14 @@ mv test/test_changelog_generator.rb{,.disabled} # and therefore raising warnings such as: "Ignoring json-2.5.1 because its # extensions are not built. Try: gem pristine json --version 2.5.1". # https://github.com/rubygems/rubygems/pull/4446 -export RUBYOPT="-I$(ruby -e 'size = $LOAD_PATH.size; %w(rake minitest rdoc webrick).each {|r| require r}; puts $LOAD_PATH[...-size].join ?:')" \ +export RUBYOPT="-I$(ruby -e 'size = $LOAD_PATH.size; %w(rake test-unit rdoc webrick).each {|r| require r}; puts $LOAD_PATH[...-size].join ?:')" -# Also fake the SimpleCov for similar reasons as above. -cat >> lib/simplecov.rb << EOF -class SimpleCov - def self.method_missing(*args) - end -end -EOF - -# TestProjectSanity#test_manifest_is_up_to_date is of no interest and it -# expects to work in git repository. +# Rakefile is not shipped anymore => emulate its content. +# https://github.com/rubygems/rubygems/blob/v3.3.22/Rakefile#L56-L64 # The `test_realworld_{default_gem,upgraded_default_gem}` needs the same -# treatment as the have in Ruby repository. +# treatment as the have in Ruby repository. Use `GEM_COMMAND` to skip them. GEM_COMMAND="skip test_realworld_{default_gem,upgraded_default_gem}" \ - rake TESTOPTS='- -v "-e /test_(manifest_is_up_to_date)/"' + ruby -Itest:bundler/lib:lib -e 'Dir.glob "./test/**/test_*.rb", &method(:require)' - \ # CVE vulnerability check ruby %{SOURCE11} @@ -216,6 +211,11 @@ ruby %{SOURCE12} %dir %{rubygems_dir} %{rubygems_dir}/rubygems %{rubygems_dir}/rubygems.rb +%exclude %{rubygems_dir}/rubygems/optparse/.* +%license %{rubygems_dir}/rubygems/optparse/COPYING +%license %{rubygems_dir}/rubygems/resolver/molinillo/LICENSE +%exclude %{rubygems_dir}/rubygems/tsort/.* +%license %{rubygems_dir}/rubygems/tsort/LICENSE.txt # Explicitly include only RubyGems directory strucure to avoid accidentally # packaged content. @@ -236,6 +236,11 @@ ruby %{SOURCE12} %changelog +* Thu Sep 08 2022 Vít Ondruch - 3.3.22-201 +- Update to RubyGems 3.3.22. + Resolves: rhbz#1941091 + Resolves: rhbz#2046966 + * Sat Jul 23 2022 Fedora Release Engineering - 3.2.14-204 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild diff --git a/sources b/sources index 9bbf4c2..3aae483 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (rubygems-3.2.14.tgz) = de28bdfdc239cd49bb5a1f78f0a9e3ec432fb70c8326c7899f7ef0a088f60becd99ba81285b20388296f96afb46ca3ca359208621d88a6be68b7388d155a2383 +SHA512 (rubygems-3.3.22.tgz) = 3ef5c2e901ea60eff41b37283f55e406dd5c9b4c5a5406fb5b0307230879aabef0b2e2478d6254f6b159f5ff62916cfce83e636676f98307dbfe951b249965f0 From da1ce52ba28d39d27d436c96299ea95fb5e1e588 Mon Sep 17 00:00:00 2001 From: Jun Aruga Date: Thu, 3 Nov 2022 15:04:22 +0100 Subject: [PATCH 26/33] Update to RubyGems 3.3.25. Resolves: rhbz#2132563 --- ruby-2.3.0-ruby_version.patch | 4 ++-- rubygems.spec | 8 ++++++-- sources | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/ruby-2.3.0-ruby_version.patch b/ruby-2.3.0-ruby_version.patch index 4ec9d47..e460873 100644 --- a/ruby-2.3.0-ruby_version.patch +++ b/ruby-2.3.0-ruby_version.patch @@ -44,7 +44,7 @@ diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb index b25068405d..e9fef4a311 100644 --- a/test/rubygems/test_gem.rb +++ b/test/rubygems/test_gem.rb -@@ -1394,7 +1394,8 @@ def test_self_use_paths +@@ -1395,7 +1395,8 @@ def test_self_use_paths def test_self_user_dir parts = [@userhome, ".gem", Gem.ruby_engine] @@ -54,7 +54,7 @@ index b25068405d..e9fef4a311 100644 FileUtils.mkdir_p File.join(parts) -@@ -1470,7 +1471,7 @@ def test_self_vendor_dir +@@ -1471,7 +1472,7 @@ def test_self_vendor_dir vendordir(File.join(@tempdir, "vendor")) do expected = File.join RbConfig::CONFIG["vendordir"], "gems", diff --git a/rubygems.spec b/rubygems.spec index 550cf93..a87ba4d 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -9,7 +9,7 @@ %global tsort_version 0.1.0 # Requires versions -%global bundler_version 2.3.22 +%global bundler_version 2.3.25 %global io_console_version 0.5.6 %global openssl_version 2.2.0 %global psych_version 3.3.0 @@ -35,7 +35,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems -Version: 3.3.22 +Version: 3.3.25 Release: 201%{?dist} # BSD-2-Clause: lib/rubygems/tsort/ # BSD-2-Clause OR RUBY: lib/rubygems/optparse/ @@ -236,6 +236,10 @@ ruby %{SOURCE12} %changelog +* Thu Nov 03 2022 Jun Aruga - 3.3.25-201 +- Update to RubyGems 3.3.25. + Resolves: rhbz#2132563 + * Thu Sep 08 2022 Vít Ondruch - 3.3.22-201 - Update to RubyGems 3.3.22. Resolves: rhbz#1941091 diff --git a/sources b/sources index 3aae483..8eb1dc0 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (rubygems-3.3.22.tgz) = 3ef5c2e901ea60eff41b37283f55e406dd5c9b4c5a5406fb5b0307230879aabef0b2e2478d6254f6b159f5ff62916cfce83e636676f98307dbfe951b249965f0 +SHA512 (rubygems-3.3.25.tgz) = 0ec39f4110c0ae21b3a2acb97e78220a429b3340a1498d48e663e98ebdc16123cc99b455474bc43d116a6b7c967340aebd77d93c13edcb3f9112e6614759216a From f181990447b4288926d62c51b21276053d4125e9 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 20 Jan 2023 21:23:05 +0000 Subject: [PATCH 27/33] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- rubygems.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rubygems.spec b/rubygems.spec index a87ba4d..6bde6bd 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -36,7 +36,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 3.3.25 -Release: 201%{?dist} +Release: 202%{?dist} # BSD-2-Clause: lib/rubygems/tsort/ # BSD-2-Clause OR RUBY: lib/rubygems/optparse/ # MIT: lib/rubygems/resolver/molinillo @@ -236,6 +236,9 @@ ruby %{SOURCE12} %changelog +* Fri Jan 20 2023 Fedora Release Engineering - 3.3.25-202 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Thu Nov 03 2022 Jun Aruga - 3.3.25-201 - Update to RubyGems 3.3.25. Resolves: rhbz#2132563 From 4ae38aeaca35e3f5b7154d82e67890a6632dbda2 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 21 Jul 2023 18:40:03 +0000 Subject: [PATCH 28/33] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- rubygems.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rubygems.spec b/rubygems.spec index 6bde6bd..4707ae8 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -36,7 +36,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 3.3.25 -Release: 202%{?dist} +Release: 203%{?dist} # BSD-2-Clause: lib/rubygems/tsort/ # BSD-2-Clause OR RUBY: lib/rubygems/optparse/ # MIT: lib/rubygems/resolver/molinillo @@ -236,6 +236,9 @@ ruby %{SOURCE12} %changelog +* Fri Jul 21 2023 Fedora Release Engineering - 3.3.25-203 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Fri Jan 20 2023 Fedora Release Engineering - 3.3.25-202 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild From 3deb1a7064d037d5897f3ed165ede3fac3e8f1f1 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 26 Jan 2024 17:46:54 +0000 Subject: [PATCH 29/33] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- rubygems.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rubygems.spec b/rubygems.spec index 4707ae8..348fedd 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -36,7 +36,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 3.3.25 -Release: 203%{?dist} +Release: 204%{?dist} # BSD-2-Clause: lib/rubygems/tsort/ # BSD-2-Clause OR RUBY: lib/rubygems/optparse/ # MIT: lib/rubygems/resolver/molinillo @@ -236,6 +236,9 @@ ruby %{SOURCE12} %changelog +* Fri Jan 26 2024 Fedora Release Engineering - 3.3.25-204 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Fri Jul 21 2023 Fedora Release Engineering - 3.3.25-203 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild From 9dc3880e15cae603955f4f82cd4e0d50d2cf0daa Mon Sep 17 00:00:00 2001 From: Software Management Team Date: Thu, 30 May 2024 12:47:07 +0200 Subject: [PATCH 30/33] Eliminate use of obsolete %patchN syntax (#2283636) --- rubygems.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rubygems.spec b/rubygems.spec index 348fedd..42a10b9 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -105,8 +105,8 @@ Documentation for %{name}. %prep %setup -q -%patch0 -p1 -%patch1 -p1 +%patch 0 -p1 +%patch 1 -p1 %build # Nothing From 421aca024318e93c40a0388b924875abfcd870d4 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 19 Jul 2024 20:12:53 +0000 Subject: [PATCH 31/33] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- rubygems.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rubygems.spec b/rubygems.spec index 42a10b9..7bd0fb7 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -36,7 +36,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 3.3.25 -Release: 204%{?dist} +Release: 205%{?dist} # BSD-2-Clause: lib/rubygems/tsort/ # BSD-2-Clause OR RUBY: lib/rubygems/optparse/ # MIT: lib/rubygems/resolver/molinillo @@ -236,6 +236,9 @@ ruby %{SOURCE12} %changelog +* Fri Jul 19 2024 Fedora Release Engineering - 3.3.25-205 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Fri Jan 26 2024 Fedora Release Engineering - 3.3.25-204 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From d96fa24231861518718b661caac0761ba77e5c48 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sun, 19 Jan 2025 00:18:15 +0000 Subject: [PATCH 32/33] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- rubygems.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rubygems.spec b/rubygems.spec index 7bd0fb7..e9510ee 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -36,7 +36,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 3.3.25 -Release: 205%{?dist} +Release: 206%{?dist} # BSD-2-Clause: lib/rubygems/tsort/ # BSD-2-Clause OR RUBY: lib/rubygems/optparse/ # MIT: lib/rubygems/resolver/molinillo @@ -236,6 +236,9 @@ ruby %{SOURCE12} %changelog +* Sun Jan 19 2025 Fedora Release Engineering - 3.3.25-206 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Fri Jul 19 2024 Fedora Release Engineering - 3.3.25-205 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild From 7e4003d32d4bc9927b1d9cc091b389ac9464cb2b Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 25 Jul 2025 12:55:56 +0000 Subject: [PATCH 33/33] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- rubygems.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rubygems.spec b/rubygems.spec index e9510ee..44636f8 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -36,7 +36,7 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems Version: 3.3.25 -Release: 206%{?dist} +Release: 207%{?dist} # BSD-2-Clause: lib/rubygems/tsort/ # BSD-2-Clause OR RUBY: lib/rubygems/optparse/ # MIT: lib/rubygems/resolver/molinillo @@ -236,6 +236,9 @@ ruby %{SOURCE12} %changelog +* Fri Jul 25 2025 Fedora Release Engineering - 3.3.25-207 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Sun Jan 19 2025 Fedora Release Engineering - 3.3.25-206 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild