diff --git a/.gitignore b/.gitignore index 7d1b7f5..8ae4291 100644 --- a/.gitignore +++ b/.gitignore @@ -1,36 +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-*.tgz 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 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/ruby-2.3.0-ruby_version.patch b/ruby-2.3.0-ruby_version.patch new file mode 100644 index 0000000..e460873 --- /dev/null +++ b/ruby-2.3.0-ruby_version.patch @@ -0,0 +1,68 @@ +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 | 7 ++++--- + test/rubygems/test_gem.rb | 5 +++-- + 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 +@@ -34,7 +34,7 @@ def self.default_spec_cache_dir + # specified in the environment + + 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 << ruby_version_dir_name unless ruby_version_dir_name.empty? + File.join parts + end + +@@ -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"] + 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 +@@ -1395,7 +1395,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? + + FileUtils.mkdir_p File.join(parts) + +@@ -1471,7 +1472,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..55edaf0 --- /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 +@@ -24,6 +24,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.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 a9eed98..44636f8 100644 --- a/rubygems.spec +++ b/rubygems.spec @@ -3,16 +3,19 @@ # # Bundled libraries versions -%global molinillo_version 0.5.5 +%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 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 +%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 +%global rdoc_version 6.3.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']") @@ -23,7 +26,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,21 +35,18 @@ Summary: The Ruby standard for packaging ruby libraries Name: rubygems -Version: 2.6.10 -Release: 101%{?dist} -Group: Development/Libraries -License: Ruby or MIT +Version: 3.3.25 +Release: 207%{?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: 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 -# Please keep Source{1,5,8,9,10} in sync with ruby.spec +# NOTE: 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 @@ -55,31 +55,37 @@ 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 -%{?load:%{SOURCE5}} 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: rubygem(rdoc) -%if %{enable_check} +BuildRequires: rubygems-devel +%if %{without bootstrap} # For mkmf.rb BuildRequires: ruby-devel -BuildRequires: rubygem(minitest) < 5 -BuildRequires: rubygem(rake) -# TestGemExtCmakeBuilder +BuildRequires: rubygem(test-unit) BuildRequires: %{_bindir}/cmake -BuildRequires: git -BuildRequires: rubygem(builder) +BuildRequires: %{_bindir}/git +BuildRequires: %{_bindir}/gcc +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 @@ -87,22 +93,8 @@ BuildArch: noarch 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} -# 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} -Group: Development/Libraries License: Ruby or MIT Requires: ruby(%{name}) = %{version}-%{release} BuildArch: noarch @@ -113,76 +105,93 @@ Documentation for %{name}. %prep %setup -q +%patch 0 -p1 +%patch 1 -p1 + %build # 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 # 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)" - -# 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} +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 mkdir -p %{buildroot}%{gem_dir}/specifications/default +# Remove bundled bundler +rm -vr %{buildroot}%{rubygems_dir}/bundler* + + %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 Bundler version. +[ "`RUBYOPT=-Ibundler/lib ruby -rbundler/version -e 'puts Bundler::VERSION'| tail -1`" \ + == '%{bundler_version}' ] # 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}' ] -%if %{enable_check} -ruby -e 'Dir.glob "./test/**/test_*.rb", &method(:require)' +# 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. +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 test-unit rdoc webrick).each {|r| require r}; puts $LOAD_PATH[...-size].join ?:')" + +# 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. Use `GEM_COMMAND` to skip them. +GEM_COMMAND="skip test_realworld_{default_gem,upgraded_default_gem}" \ + ruby -Itest:bundler/lib:lib -e 'Dir.glob "./test/**/test_*.rb", &method(:require)' - \ # CVE vulnerability check ruby %{SOURCE11} @@ -190,15 +199,23 @@ 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 -%doc CVE-*txt %{_bindir}/gem %dir %{rubygems_dir} %{rubygems_dir}/rubygems %{rubygems_dir}/rubygems.rb -%{rubygems_dir}/ubygems.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. @@ -208,22 +225,103 @@ 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 %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 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 + +* 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 + +* 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 + +* 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 + Resolves: rhbz#2046966 + +* 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 + +* 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. + +* 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 + +* 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. + +* 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. + +* 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 +- 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 + +* 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 diff --git a/sources b/sources index 5a84bbf..8eb1dc0 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (rubygems-2.6.10.tgz) = 5f771e26fa57290a7dfb4c50778af4617964bb72141e757f538da2619ac36fa247715fb3f8cff314e5a573b27a38439c9a8a96fd37d806554e6f37d49608f6b7 +SHA512 (rubygems-3.3.25.tgz) = 0ec39f4110c0ae21b3a2acb97e78220a429b3340a1498d48e663e98ebdc16123cc99b455474bc43d116a6b7c967340aebd77d93c13edcb3f9112e6614759216a