Compare commits
104 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
deb89378b5 | ||
|
|
ed5fc66af7 | ||
|
|
95c21e5775 | ||
|
|
916dd3e4c2 | ||
|
|
bc07cae127 | ||
|
|
4c3cde9ed2 | ||
|
|
5d8c8b3fb5 | ||
|
|
c670682a97 | ||
|
|
4034e3e02c | ||
|
|
9dc850b911 | ||
|
|
6b81f1b80f | ||
|
|
aa9dd7be5f | ||
|
|
97eeae3d75 | ||
|
|
f50637ef39 | ||
|
|
84309be01e | ||
|
|
563fb688b3 | ||
|
|
1aeb02030c | ||
|
|
43d2363c1e | ||
|
|
e7395a7d22 | ||
|
|
a38fdce3da | ||
|
|
da900b8789 |
||
|
|
3541190791 | ||
|
|
7262ed4066 | ||
|
|
e3690ac430 | ||
|
|
5f10b7c93e | ||
|
|
74a9a07c69 | ||
|
|
7b420c76e8 | ||
|
|
4ccd95e387 | ||
|
|
037b0a34f2 | ||
|
|
da4a9f4b88 | ||
|
|
186be743be | ||
|
|
19423ee8d9 | ||
|
|
f241947e6c | ||
|
|
8daf7ccb72 | ||
|
|
b7e197fb88 | ||
|
|
6bed1e3bd5 | ||
|
|
2e6762df8d | ||
|
|
c4e686c716 | ||
|
|
f11fa48d8f | ||
|
|
bd711c9036 | ||
|
|
fde0aac8f9 | ||
|
|
0d81c8b95a | ||
|
|
d03ac3403a | ||
|
|
55661b64e9 | ||
|
|
ca13a51589 | ||
|
|
7724c2d703 | ||
|
|
42b0e43e5a | ||
|
|
c913e4326c | ||
|
|
93638d9e58 | ||
|
|
677893973e | ||
|
|
d9051618e3 | ||
|
|
ff5301a5f3 | ||
|
|
c649282efb | ||
|
|
4ff7de7007 | ||
|
|
5da6a15c57 | ||
|
|
a34f33bc50 | ||
|
|
3008410463 | ||
|
|
ac77c2a354 | ||
|
|
aa7e8debee | ||
|
|
066e0a3d6d | ||
|
|
308b2c0ab2 | ||
|
|
05a6c9c8f3 | ||
|
|
f195b6a3c8 | ||
|
|
321ed23c22 | ||
|
|
ba498ce48c | ||
|
|
8d5b538747 | ||
|
|
5fd12c42e7 | ||
|
|
d432c95c15 | ||
|
|
393e74f1e0 | ||
|
|
1f35109c5e | ||
|
|
64dc6dd3e4 | ||
|
|
814eaf5324 | ||
|
|
da8822cd33 | ||
|
|
9e39fd242a | ||
|
|
31778c5ebd | ||
|
|
8f9fe41ba6 | ||
|
|
59f62d6bc9 | ||
|
|
65acd291de | ||
|
|
9c8400d99a | ||
|
|
d46ef9bbf3 | ||
|
|
ff0f48acd6 | ||
|
|
22597b6039 | ||
|
|
c4043528c1 | ||
|
|
be9fcec798 | ||
|
|
f2899ee090 | ||
|
|
25858e766a | ||
|
|
f8ef5964d0 | ||
|
|
b1748af87f | ||
|
|
2cdb051166 | ||
|
|
9819174c8d | ||
|
|
649a6e3083 | ||
|
|
1d0c071aeb | ||
|
|
79d75fdcdd | ||
|
|
588a4ae9f0 | ||
|
|
c2026da175 | ||
|
|
3f106c188e | ||
|
|
bf921512e2 | ||
|
|
ad7f78b5c8 | ||
|
|
f93afdebdd | ||
|
|
e2951e6856 | ||
|
|
ca94aff023 | ||
|
|
b7b5473796 | ||
|
|
2c91b113bb | ||
|
|
03e8cec9fe |
30 changed files with 2266 additions and 1281 deletions
1
.fmf/version
Normal file
1
.fmf/version
Normal file
|
|
@ -0,0 +1 @@
|
|||
1
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -1,3 +1,6 @@
|
|||
/*/
|
||||
/ruby-*.tar.xz
|
||||
/rexml-*.gem
|
||||
/*.rpm
|
||||
|
||||
!/plans/
|
||||
|
|
|
|||
|
|
@ -2,14 +2,55 @@
|
|||
%gem_dir %{_datadir}/gems
|
||||
%gem_archdir %{_libdir}/gems
|
||||
|
||||
# %gem_prerelease - Provides prerelease string if available.
|
||||
#
|
||||
# Usage: %gem_prerelease [custom_gem_name]
|
||||
#
|
||||
# If avilable, prints prerelease string, which is a %prerelease macro by
|
||||
# default. When [custom_gem_name] is provided, the custom_gem_name is used to
|
||||
# derive %custom_gem_name_prerelease macro, which can be predefined.
|
||||
#
|
||||
# Please note that for the prerelease macros are the dashes in
|
||||
# [custom_gem_name] replaced by underscores.
|
||||
#
|
||||
%gem_prerelease() %{?1:%{expand:%%{?%{gsub %{1} - _}_prerelease}}}%{!?1:%{?prerelease}}
|
||||
|
||||
# %gem_version - Provides version string (including prerelease if available).
|
||||
#
|
||||
# Usage: %gem_version [custom_gem_name]
|
||||
#
|
||||
# Prints version (including prerelease string), that is %version macro by
|
||||
# default. When [custom_gem_name] is provided, the custom_gem_name is used to
|
||||
# derive %custom_gem_name_version macro which needs to be predefined.
|
||||
#
|
||||
# Please note that for the version macros are the dashes in [custom_gem_name]
|
||||
# replaced by underscores.
|
||||
#
|
||||
%gem_version() %{?1:%{expand:%{%{gsub %{1} - _}_version}}}%{!?1:%{version}}%{gem_prerelease %{?1}}
|
||||
|
||||
# %gem_name_version - Provides gem_name-version string.
|
||||
#
|
||||
# Usage: %gem_name_version [custom_gem_name]
|
||||
#
|
||||
# Prints gem_name-version string, by default joining %gem_name, %version and
|
||||
# %prerelease macros. When [custom_gem_name] is provided, the
|
||||
# custom_gem_name is joined with version as provided by %gem_version macro.
|
||||
#
|
||||
%gem_name_version() %{?1}%{!?1:%{gem_name}}-%{gem_version %{?1}}
|
||||
|
||||
# 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_plugin %{gem_dir}/plugins/%{gem_name}_plugin.rb
|
||||
#
|
||||
# These macros leverages %gem_name_version macro and accepts custom gem_name.
|
||||
#
|
||||
# -d Use default gem install location.
|
||||
#
|
||||
%gem_instdir() %{gem_dir}/gems/%{gem_name_version %{?1}}
|
||||
%gem_extdir_mri() %{gem_archdir}/%{name}/%{gem_name_version %{?1}}
|
||||
%gem_libdir() %{gem_instdir %{?1}}/lib
|
||||
%gem_cache() %{gem_dir}/cache/%{gem_name_version %{?1}}.gem
|
||||
%gem_spec(d) %{gem_dir}/specifications%{?-d:/default}/%{gem_name_version %{?1}}.gemspec
|
||||
%gem_docdir() %{gem_dir}/doc/%{gem_name_version %{?1}}
|
||||
%gem_plugin() %{gem_dir}/plugins/%{?1}%{!?1:%{gem_name}}_plugin.rb
|
||||
|
||||
|
||||
# %gem_install - Install gem into appropriate directory.
|
||||
|
|
|
|||
|
|
@ -87,41 +87,51 @@ 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_specifications_dir if method_defined? :default_specifications_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
|
||||
Gem.default_dirs[:system][:gem_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
|
||||
|
||||
##
|
||||
# Path to specification files of default gems.
|
||||
|
||||
def default_specifications_dir
|
||||
@default_specifications_dir ||= File.join(Gem.default_dirs[:system][:gem_dir], "specifications", "default")
|
||||
end
|
||||
|
||||
##
|
||||
# Default gem load path
|
||||
|
||||
def default_path
|
||||
path = default_dirs.collect {|location, paths| paths[:gem_dir]}
|
||||
path.unshift Gem.user_dir if File.exist? Gem.user_home
|
||||
path
|
||||
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]
|
||||
|
|
|
|||
6
plans/all.fmf
Normal file
6
plans/all.fmf
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
summary: Test plan with all Fedora tests
|
||||
discover:
|
||||
how: fmf
|
||||
url: https://src.fedoraproject.org/tests/ruby.git
|
||||
execute:
|
||||
how: tmt
|
||||
28
rdoc-pr1531-fix-mutilple-document-installation.patch
Normal file
28
rdoc-pr1531-fix-mutilple-document-installation.patch
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
From 994ee4c17fb8c217ab0335df55620c6bdb5d5cbe Mon Sep 17 00:00:00 2001
|
||||
From: tompng <tomoyapenguin@gmail.com>
|
||||
Date: Fri, 26 Dec 2025 04:57:12 +0900
|
||||
Subject: [PATCH] Fix comment_location for merged ClassModule
|
||||
|
||||
---
|
||||
lib/rdoc/code_object/class_module.rb | 7 ++++++-
|
||||
test/rdoc/code_object/class_module_test.rb | 6 ++++++
|
||||
2 files changed, 12 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/lib/rdoc/code_object/class_module.rb b/lib/rdoc/code_object/class_module.rb
|
||||
index b6bed352a2..d7ee36f950 100644
|
||||
--- a/lib/rdoc/code_object/class_module.rb
|
||||
+++ b/lib/rdoc/code_object/class_module.rb
|
||||
@@ -477,7 +477,12 @@ def merge(class_module)
|
||||
document = document.merge other_document
|
||||
|
||||
@comment = RDoc::Comment.from_document(document)
|
||||
- @comment_location = document
|
||||
+
|
||||
+ @comment_location = if document.parts.first.is_a?(RDoc::Markup::Document)
|
||||
+ document.parts.map { |doc| [doc, doc.file] }
|
||||
+ else
|
||||
+ [[document, document.file]]
|
||||
+ end
|
||||
end
|
||||
|
||||
cm = class_module
|
||||
166
rpm_test_helper.rb
Normal file
166
rpm_test_helper.rb
Normal file
|
|
@ -0,0 +1,166 @@
|
|||
require 'tmpdir'
|
||||
require 'tempfile'
|
||||
require 'fileutils'
|
||||
# Available in Ruby upstream sources under tool/lib/envutil.rb
|
||||
# Required for finding and setting up the built ruby binary.
|
||||
require 'envutil'
|
||||
|
||||
module RPMTestHelper
|
||||
def setup
|
||||
@tmpdir = Dir.mktmpdir
|
||||
@tempfiles = []
|
||||
end
|
||||
|
||||
def teardown
|
||||
@tempfiles.each do |file|
|
||||
file.close
|
||||
file.unlink
|
||||
end
|
||||
|
||||
FileUtils.rmtree(@tmpdir)
|
||||
end
|
||||
|
||||
GENERATOR_SCRIPT = ENV['GENERATOR_SCRIPT'].clone.freeze
|
||||
if GENERATOR_SCRIPT.nil? || GENERATOR_SCRIPT == ''
|
||||
raise "GENERATOR_SCRIPT is not specified." \
|
||||
"Specify the ENV variable with absolute path to the generator."
|
||||
end
|
||||
|
||||
Dependency = Struct.new('Dependency', :name, :requirements) do
|
||||
def to_rpm_str
|
||||
"rubygem(#{self.name})"
|
||||
end
|
||||
end
|
||||
|
||||
def make_gemspec(gem_info)
|
||||
file = Tempfile.new('req_gemspec', @tmpdir)
|
||||
# Fake gemspec with enough to pass most checks
|
||||
# Rubygems uses to validate the format.
|
||||
gemspec_contents = <<~EOF
|
||||
# -*- encoding: utf-8 -*-
|
||||
# stub: #{gem_info.name} #{gem_info.version} ruby lib
|
||||
|
||||
Gem::Specification.new do |s|
|
||||
s.name = "#{gem_info.name}".freeze
|
||||
s.version = "#{gem_info.version}"
|
||||
|
||||
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
||||
s.require_paths = ["lib".freeze]
|
||||
s.authors = ["John Doe".freeze]
|
||||
s.bindir = "bin".freeze
|
||||
s.date = "2023-12-15"
|
||||
s.description = "Fake gemspec helper for testing Rubygem Generators".freeze
|
||||
s.email = ["example@example.com".freeze]
|
||||
s.files = ["LICENSE.txt".freeze, "lib/#{gem_info.name}.rb".freeze, "#{gem_info.name}.gemspec".freeze]
|
||||
s.homepage = "https://pkgs.fedoraproject.org/rpms/ruby".freeze
|
||||
s.licenses = ["MIT".freeze]
|
||||
s.required_ruby_version = Gem::Requirement.new(">= 2.5.0".freeze)
|
||||
s.rubygems_version = "3.3.5".freeze
|
||||
s.summary = "Fake gemspec for testing Rubygem Generators".freeze
|
||||
|
||||
if s.respond_to? :specification_version then
|
||||
s.specification_version = 4
|
||||
end
|
||||
|
||||
if s.respond_to? :add_runtime_dependency then
|
||||
#{gem_info.gemspec_runtime_dep_str}
|
||||
else
|
||||
#{gem_info.gemspec_dep_str}
|
||||
end
|
||||
end
|
||||
EOF
|
||||
|
||||
file.write gemspec_contents
|
||||
file.rewind
|
||||
@tempfiles << file
|
||||
file
|
||||
end
|
||||
|
||||
# Caller is expected to close subprocess stdin via #close_write
|
||||
# in order to let subprocess proceed if the process is reading
|
||||
# from STDIN in a loop.
|
||||
def rb_subprocess(*args)
|
||||
args = [GENERATOR_SCRIPT] if args.empty?
|
||||
ruby = EnvUtil.rubybin
|
||||
f = IO.popen([ruby] + args, 'r+') #, external_encoding: external_encoding)
|
||||
yield(f)
|
||||
ensure
|
||||
f.close unless !f || f.closed?
|
||||
end
|
||||
|
||||
def run_generator_single_file(gem_info)
|
||||
lines = []
|
||||
gemspec_f = make_gemspec(gem_info)
|
||||
|
||||
rb_subprocess do |io|
|
||||
io.write gemspec_f.path
|
||||
io.close_write
|
||||
lines = io.readlines
|
||||
end
|
||||
|
||||
lines
|
||||
end
|
||||
|
||||
def helper_rubygems_dependency
|
||||
"ruby(rubygems)"
|
||||
end
|
||||
|
||||
class GemInfo
|
||||
attr_accessor :name, :version, :dependencies
|
||||
|
||||
def initialize(name: 'foo', version: '1.2.3', dependencies: [])
|
||||
@name = name
|
||||
@version = version
|
||||
@dependencies = dependencies
|
||||
end
|
||||
|
||||
def dependencies=(other)
|
||||
raise ArgumentError, "#{self.class.name}##{__method__.to_s}: Expected array of `Dependency' elements" \
|
||||
unless other.is_a?(Array) && other.all? { |elem| elem.respond_to?(:name) && elem.respond_to?(:requirements) }
|
||||
|
||||
@dependencies = other
|
||||
end
|
||||
|
||||
def to_rpm_str
|
||||
"rubygem(#{self.name})"
|
||||
end
|
||||
|
||||
def gemspec_dep_str
|
||||
return '' if self.dependencies.nil? || self.dependencies.empty?
|
||||
@dependencies.inject("") do |memo, dep|
|
||||
memo += if dep.requirements && !dep.requirements.empty?
|
||||
%Q|s.add_dependency(%q<#{dep.name}>.freeze, #{handle_dep_requirements(dep.requirements)})|
|
||||
else
|
||||
%Q|s.add_dependency(%q<#{dep.name}>.freeze)|
|
||||
end
|
||||
|
||||
memo += "\n"
|
||||
end
|
||||
end
|
||||
|
||||
def gemspec_runtime_dep_str
|
||||
return '' if self.dependencies.nil? || self.dependencies.empty?
|
||||
|
||||
@dependencies.inject("") do |memo, dep|
|
||||
memo += if dep.requirements && !dep.requirements.empty?
|
||||
%Q|s.add_runtime_dependency(%q<#{dep.name}>.freeze, #{handle_dep_requirements(dep.requirements)})|
|
||||
else
|
||||
%Q|s.add_runtime_dependency(%q<#{dep.name}>.freeze)|
|
||||
end
|
||||
|
||||
memo += "\n"
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def handle_dep_requirements(reqs)
|
||||
raise ArgumentError, "#{self.class.name}##{__method__.to_s}: Reqs must be an array." \
|
||||
unless reqs.is_a? Array
|
||||
raise ArgumentError, "#{self.class.name}##{__method__.to_s}: Reqs must not be empty for this method." \
|
||||
if reqs.empty?
|
||||
|
||||
'[ "' + reqs.join('", "') + '" ]'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
From 28cc0749d6729aa2444661ee7b411e183fe220b0 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Mon, 19 Nov 2012 15:14:51 +0100
|
||||
Subject: [PATCH] Verbose mkmf.
|
||||
|
||||
---
|
||||
lib/mkmf.rb | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/lib/mkmf.rb b/lib/mkmf.rb
|
||||
index 682eb46..e6b1445 100644
|
||||
--- a/lib/mkmf.rb
|
||||
+++ b/lib/mkmf.rb
|
||||
@@ -1974,7 +1974,7 @@ def configuration(srcdir)
|
||||
SHELL = /bin/sh
|
||||
|
||||
# V=0 quiet, V=1 verbose. other values don't work.
|
||||
-V = 0
|
||||
+V = 1
|
||||
V0 = $(V:0=)
|
||||
Q1 = $(V:1=)
|
||||
Q = $(Q1:0=@)
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 07c666ba5c3360dd6f43605a8ac7c85c99c1721f Mon Sep 17 00:00:00 2001
|
||||
From e1293f665128b0d9c5bfa0b5beeab4afebf07e6a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Tue, 1 Oct 2013 12:22:40 +0200
|
||||
Subject: [PATCH] Allow to configure libruby.so placement.
|
||||
|
|
@ -8,10 +8,10 @@ Subject: [PATCH] Allow to configure libruby.so placement.
|
|||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index d261ea57b5..3c13076b82 100644
|
||||
index a64358fada..b3bdfad1eb 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -3368,6 +3368,11 @@ AS_IF([test ${multiarch+set}], [
|
||||
@@ -3556,6 +3556,11 @@ AS_IF([test ${multiarch+set}], [
|
||||
])
|
||||
|
||||
archlibdir='${libdir}/${arch}'
|
||||
|
|
@ -23,6 +23,3 @@ index d261ea57b5..3c13076b82 100644
|
|||
sitearchlibdir='${libdir}/${sitearch}'
|
||||
archincludedir='${includedir}/${arch}'
|
||||
sitearchincludedir='${includedir}/${sitearch}'
|
||||
--
|
||||
2.22.0
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
From e24d97c938c481450ed80ec83e5399595946c1ae Mon Sep 17 00:00:00 2001
|
||||
From 6062f4976c5b51f8b952b9f6745175be7b1c5ff9 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Fri, 8 Feb 2013 22:48:41 +0100
|
||||
Subject: [PATCH] Prevent duplicated paths when empty version string is
|
||||
|
|
@ -11,10 +11,10 @@ Subject: [PATCH] Prevent duplicated paths when empty version string is
|
|||
3 files changed, 15 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index c42436c23d..d261ea57b5 100644
|
||||
index 2bc5153141..a64358fada 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -4026,7 +4026,8 @@ AS_CASE(["$ruby_version_dir_name"],
|
||||
@@ -4472,7 +4472,8 @@ AS_CASE(["$ruby_version_dir_name"],
|
||||
ruby_version_dir=/'${ruby_version_dir_name}'
|
||||
|
||||
if test -z "${ruby_version_dir_name}"; then
|
||||
|
|
@ -25,7 +25,7 @@ index c42436c23d..d261ea57b5 100644
|
|||
|
||||
rubylibdir='${rubylibprefix}'${ruby_version_dir}
|
||||
diff --git a/loadpath.c b/loadpath.c
|
||||
index 9160031..0d4d953 100644
|
||||
index b8969e6998..bbfd4daa78 100644
|
||||
--- a/loadpath.c
|
||||
+++ b/loadpath.c
|
||||
@@ -65,21 +65,33 @@ const char ruby_initial_load_paths[] =
|
||||
|
|
@ -63,10 +63,10 @@ index 9160031..0d4d953 100644
|
|||
|
||||
RUBY_LIB "\0"
|
||||
diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb
|
||||
index 07076d4..35e6c3c 100755
|
||||
index db74115730..2b01796abf 100755
|
||||
--- a/tool/mkconfig.rb
|
||||
+++ b/tool/mkconfig.rb
|
||||
@@ -115,7 +115,7 @@
|
||||
@@ -114,7 +114,7 @@
|
||||
val = val.gsub(/\$(?:\$|\{?(\w+)\}?)/) {$1 ? "$(#{$1})" : $&}.dump
|
||||
case name
|
||||
when /^prefix$/
|
||||
|
|
@ -75,6 +75,3 @@ index 07076d4..35e6c3c 100755
|
|||
when /^ARCH_FLAG$/
|
||||
val = "arch_flag || #{val}" if universal
|
||||
when /^UNIVERSAL_ARCHNAMES$/
|
||||
--
|
||||
1.9.0
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
From 2089cab72b38d6d5e7ba2b596e41014209acad30 Mon Sep 17 00:00:00 2001
|
||||
From 9e70f6e4b8771965a30ecfb6d1c6015df350ca55 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Mon, 19 Nov 2012 14:37:28 +0100
|
||||
Subject: [PATCH] Always use i386.
|
||||
|
|
@ -8,10 +8,10 @@ Subject: [PATCH] Always use i386.
|
|||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 3c13076b82..93af30321d 100644
|
||||
index b3bdfad1eb..411322a27f 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -4090,6 +4090,8 @@ AC_SUBST(vendorarchdir)dnl
|
||||
@@ -4536,6 +4536,8 @@ AC_SUBST(vendorarchdir)dnl
|
||||
AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl
|
||||
AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl
|
||||
|
||||
|
|
@ -20,6 +20,3 @@ index 3c13076b82..93af30321d 100644
|
|||
AS_IF([test "${universal_binary-no}" = yes ], [
|
||||
arch="universal-${target_os}"
|
||||
AS_IF([test "${rb_cv_architecture_available}" = yes], [
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
From 94da59aafacc6a9efe829529eb51385588d6f149 Mon Sep 17 00:00:00 2001
|
||||
From c7952996ac9738a14bea0a1a971fea13460a6c94 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Fri, 11 Nov 2011 13:14:45 +0100
|
||||
Subject: [PATCH] Allow to install RubyGems into custom location, outside of
|
||||
|
|
@ -12,10 +12,10 @@ Subject: [PATCH] Allow to install RubyGems into custom location, outside of
|
|||
4 files changed, 22 insertions(+)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 93af30321d..bc13397e0e 100644
|
||||
index 411322a27f..b5f842a512 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -4062,6 +4062,10 @@ AC_ARG_WITH(vendorarchdir,
|
||||
@@ -4508,6 +4508,10 @@ AC_ARG_WITH(vendorarchdir,
|
||||
[vendorarchdir=$withval],
|
||||
[vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby'${ruby_version_dir}}${multiarch-'${vendorlibdir}/${sitearch}'}])
|
||||
|
||||
|
|
@ -26,7 +26,7 @@ index 93af30321d..bc13397e0e 100644
|
|||
AS_IF([test "${LOAD_RELATIVE+set}"], [
|
||||
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
|
||||
RUBY_EXEC_PREFIX=''
|
||||
@@ -4086,6 +4090,7 @@ AC_SUBST(sitearchdir)dnl
|
||||
@@ -4532,6 +4536,7 @@ AC_SUBST(sitearchdir)dnl
|
||||
AC_SUBST(vendordir)dnl
|
||||
AC_SUBST(vendorlibdir)dnl
|
||||
AC_SUBST(vendorarchdir)dnl
|
||||
|
|
@ -35,7 +35,7 @@ index 93af30321d..bc13397e0e 100644
|
|||
AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl
|
||||
AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl
|
||||
diff --git a/loadpath.c b/loadpath.c
|
||||
index 623dc9d..74c5d9e 100644
|
||||
index bbfd4daa78..69677a9297 100644
|
||||
--- a/loadpath.c
|
||||
+++ b/loadpath.c
|
||||
@@ -94,6 +94,10 @@ const char ruby_initial_load_paths[] =
|
||||
|
|
@ -50,7 +50,7 @@ index 623dc9d..74c5d9e 100644
|
|||
#ifdef RUBY_THINARCH
|
||||
RUBY_ARCH_LIB_FOR(RUBY_THINARCH) "\0"
|
||||
diff --git a/template/verconf.h.tmpl b/template/verconf.h.tmpl
|
||||
index 79c003e..34f2382 100644
|
||||
index 9ba2bd6de5..4ec4ce9353 100644
|
||||
--- a/template/verconf.h.tmpl
|
||||
+++ b/template/verconf.h.tmpl
|
||||
@@ -36,6 +36,9 @@
|
||||
|
|
@ -64,10 +64,10 @@ index 79c003e..34f2382 100644
|
|||
% R = {}
|
||||
% R["ruby_version"] = '"RUBY_LIB_VERSION"'
|
||||
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
|
||||
index e9110a17ca..76a1f0a315 100755
|
||||
index a9e6365b27..7117e65e82 100755
|
||||
--- a/tool/rbinstall.rb
|
||||
+++ b/tool/rbinstall.rb
|
||||
@@ -359,6 +359,7 @@ def CONFIG.[](name, mandatory = false)
|
||||
@@ -393,6 +393,7 @@ def CONFIG.[](name, mandatory = false)
|
||||
vendorlibdir = CONFIG["vendorlibdir"]
|
||||
vendorarchlibdir = CONFIG["vendorarchdir"]
|
||||
end
|
||||
|
|
@ -75,7 +75,7 @@ index e9110a17ca..76a1f0a315 100755
|
|||
mandir = CONFIG["mandir", true]
|
||||
docdir = CONFIG["docdir", true]
|
||||
enable_shared = CONFIG["ENABLE_SHARED"] == 'yes'
|
||||
@@ -590,7 +591,16 @@ def stub
|
||||
@@ -1082,7 +1083,16 @@ def (bins = []).add(name)
|
||||
install?(:local, :comm, :lib) do
|
||||
prepare "library scripts", rubylibdir
|
||||
noinst = %w[*.txt *.rdoc *.gemspec]
|
||||
|
|
@ -92,6 +92,3 @@ index e9110a17ca..76a1f0a315 100755
|
|||
end
|
||||
|
||||
install?(:local, :comm, :hdr, :'comm-hdr') do
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
From f833e213596b0bcfad8264a555eb5093303fb5f2 Mon Sep 17 00:00:00 2001
|
||||
From: Jarek Prokop <jprokop@redhat.com>
|
||||
Date: Thu, 25 Sep 2025 12:26:39 +0200
|
||||
Subject: [PATCH] Add ruby_version_dir_name support for RDoc.
|
||||
|
||||
---
|
||||
lib/rdoc/ri/paths.rb | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/lib/rdoc/ri/paths.rb b/lib/rdoc/ri/paths.rb
|
||||
index 8e89b04e..731f9e36 100644
|
||||
--- a/lib/rdoc/ri/paths.rb
|
||||
+++ b/lib/rdoc/ri/paths.rb
|
||||
@@ -10,7 +10,7 @@ module RDoc::RI::Paths
|
||||
#:stopdoc:
|
||||
require 'rbconfig'
|
||||
|
||||
- version = RbConfig::CONFIG['ruby_version']
|
||||
+ version = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
|
||||
|
||||
BASE = File.join RbConfig::CONFIG['ridir'], version
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 4fc1be3af3f58621bb751c9e63c208b15c0e8d16 Mon Sep 17 00:00:00 2001
|
||||
From 5406ea4b4b13db747e5c1f8341bb257b4da04435 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Tue, 31 Mar 2015 16:21:04 +0200
|
||||
Subject: [PATCH 1/4] Use ruby_version_dir_name for versioned directories.
|
||||
|
|
@ -12,15 +12,15 @@ ruby_version_dir_name now specifies custom version string for versioned
|
|||
directories, e.g. instead of default X.Y.Z, you can specify whatever
|
||||
string.
|
||||
---
|
||||
configure.ac | 64 ++++++++++++++++++++++++---------------------
|
||||
configure.ac | 66 ++++++++++++++++++++++++---------------------
|
||||
template/ruby.pc.in | 1 +
|
||||
2 files changed, 35 insertions(+), 30 deletions(-)
|
||||
2 files changed, 36 insertions(+), 31 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 80b137e380..63cd3b4f8b 100644
|
||||
index 2bbce78fd0..9d8662369c 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -3977,9 +3977,6 @@ AS_CASE(["$target_os"],
|
||||
@@ -4422,9 +4422,6 @@ AS_CASE(["$target_os"],
|
||||
rubyw_install_name='$(RUBYW_INSTALL_NAME)'
|
||||
])
|
||||
|
||||
|
|
@ -30,7 +30,7 @@ index 80b137e380..63cd3b4f8b 100644
|
|||
rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'}
|
||||
AC_ARG_WITH(rubyarchprefix,
|
||||
AS_HELP_STRING([--with-rubyarchprefix=DIR],
|
||||
@@ -4002,56 +3999,62 @@ AC_ARG_WITH(ridir,
|
||||
@@ -4447,57 +4444,63 @@ AC_ARG_WITH(ridir,
|
||||
AC_SUBST(ridir)
|
||||
AC_SUBST(RI_BASE_NAME)
|
||||
|
||||
|
|
@ -46,6 +46,7 @@ index 80b137e380..63cd3b4f8b 100644
|
|||
-AS_IF([test ${RUBY_LIB_VERSION_STYLE+set}], [
|
||||
- {
|
||||
- echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE"
|
||||
- echo '@%:@include "confdefs.h"'
|
||||
- echo '#define STRINGIZE(x) x'
|
||||
- test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0'
|
||||
- echo '#include "version.h"'
|
||||
|
|
@ -61,6 +62,7 @@ index 80b137e380..63cd3b4f8b 100644
|
|||
+RUBY_LIB_VERSION_STYLE='3 /* full */'
|
||||
+{
|
||||
+echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE"
|
||||
+echo '@%:@include "confdefs.h"'
|
||||
+echo '#define STRINGIZE(x) x'
|
||||
+test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0'
|
||||
+echo '#include "version.h"'
|
||||
|
|
@ -120,7 +122,7 @@ index 80b137e380..63cd3b4f8b 100644
|
|||
|
||||
AS_IF([test "${LOAD_RELATIVE+set}"], [
|
||||
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
|
||||
@@ -4068,6 +4071,7 @@ AC_SUBST(sitearchincludedir)dnl
|
||||
@@ -4514,6 +4517,7 @@ AC_SUBST(sitearchincludedir)dnl
|
||||
AC_SUBST(arch)dnl
|
||||
AC_SUBST(sitearch)dnl
|
||||
AC_SUBST(ruby_version)dnl
|
||||
|
|
@ -129,7 +131,7 @@ index 80b137e380..63cd3b4f8b 100644
|
|||
AC_SUBST(rubyarchdir)dnl
|
||||
AC_SUBST(sitedir)dnl
|
||||
diff --git a/template/ruby.pc.in b/template/ruby.pc.in
|
||||
index 8a2c066..c81b211 100644
|
||||
index 6901ec2320..9b7b787208 100644
|
||||
--- a/template/ruby.pc.in
|
||||
+++ b/template/ruby.pc.in
|
||||
@@ -2,6 +2,7 @@ MAJOR=@MAJOR@
|
||||
|
|
@ -140,38 +142,21 @@ index 8a2c066..c81b211 100644
|
|||
RUBY_API_VERSION=@RUBY_API_VERSION@
|
||||
RUBY_PROGRAM_VERSION=@RUBY_PROGRAM_VERSION@
|
||||
arch=@arch@
|
||||
--
|
||||
2.1.0
|
||||
|
||||
|
||||
From 518850aba6eee76de7715aae8d37330e34b01983 Mon Sep 17 00:00:00 2001
|
||||
From baff562149499973123d2187620201be641c6538 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Tue, 31 Mar 2015 16:37:26 +0200
|
||||
Subject: [PATCH 2/4] Add ruby_version_dir_name support for RDoc.
|
||||
|
||||
---
|
||||
lib/rdoc/ri/paths.rb | 2 +-
|
||||
tool/rbinstall.rb | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
tool/rbinstall.rb | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/lib/rdoc/ri/paths.rb b/lib/rdoc/ri/paths.rb
|
||||
index 970cb91..5bf8230 100644
|
||||
--- a/lib/rdoc/ri/paths.rb
|
||||
+++ b/lib/rdoc/ri/paths.rb
|
||||
@@ -10,7 +10,7 @@ module RDoc::RI::Paths
|
||||
#:stopdoc:
|
||||
require 'rbconfig'
|
||||
|
||||
- version = RbConfig::CONFIG['ruby_version']
|
||||
+ version = RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
|
||||
|
||||
BASE = File.join RbConfig::CONFIG['ridir'], version
|
||||
|
||||
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
|
||||
index d4c110e..d39c9a6 100755
|
||||
index 874c3ef1d9..a9e6365b27 100755
|
||||
--- a/tool/rbinstall.rb
|
||||
+++ b/tool/rbinstall.rb
|
||||
@@ -448,7 +448,7 @@ def CONFIG.[](name, mandatory = false)
|
||||
@@ -1053,7 +1053,7 @@ def (bins = []).add(name)
|
||||
|
||||
install?(:doc, :rdoc) do
|
||||
if $rdocdir
|
||||
|
|
@ -180,11 +165,8 @@ index d4c110e..d39c9a6 100755
|
|||
prepare "rdoc", ridatadir
|
||||
install_recursive($rdocdir, ridatadir, :no_install => rdoc_noinst, :mode => $data_mode)
|
||||
end
|
||||
--
|
||||
2.23.0
|
||||
|
||||
|
||||
From 9f0ec0233f618cbb862629816b22491c3df79578 Mon Sep 17 00:00:00 2001
|
||||
From 7cf872a9a34f38d71cd2ca04ac114b4ea85cc56c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Tue, 31 Mar 2015 16:37:44 +0200
|
||||
Subject: [PATCH 3/4] Add ruby_version_dir_name support for RubyGems.
|
||||
|
|
@ -195,65 +177,62 @@ Subject: [PATCH 3/4] Add ruby_version_dir_name support for RubyGems.
|
|||
2 files changed, 7 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb
|
||||
index d4ff4a262c..3f9a5bf590 100644
|
||||
index 90f09fc191..f6b8a03b95 100644
|
||||
--- a/lib/rubygems/defaults.rb
|
||||
+++ b/lib/rubygems/defaults.rb
|
||||
@@ -34,7 +34,7 @@ def self.default_spec_cache_dir
|
||||
@@ -35,7 +35,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'])
|
||||
- @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
|
||||
@@ -104,7 +104,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
|
||||
|
||||
@@ -234,7 +235,7 @@ def self.vendor_dir # :nodoc:
|
||||
return nil unless RbConfig::CONFIG.key? 'vendordir'
|
||||
@@ -265,7 +266,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
|
||||
|
||||
##
|
||||
diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb
|
||||
index b25068405d..e9fef4a311 100644
|
||||
index 74c8953904..1f3bd91d51 100644
|
||||
--- a/test/rubygems/test_gem.rb
|
||||
+++ b/test/rubygems/test_gem.rb
|
||||
@@ -1410,7 +1410,8 @@ def test_self_use_paths
|
||||
@@ -1339,7 +1339,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)
|
||||
|
||||
@@ -1486,7 +1487,7 @@ def test_self_vendor_dir
|
||||
vendordir(File.join(@tempdir, 'vendor')) do
|
||||
@@ -1415,7 +1416,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
|
||||
|
||||
|
||||
From 88c38a030c22dbf9422ece847bdfbf87d6659313 Mon Sep 17 00:00:00 2001
|
||||
From 17cb98b7b78f8bfc511feffbe061747f676055b1 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Wed, 1 Apr 2015 14:55:37 +0200
|
||||
Subject: [PATCH 4/4] Let headers directories follow the configured version
|
||||
|
|
@ -264,10 +243,10 @@ Subject: [PATCH 4/4] Let headers directories follow the configured version
|
|||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index a00f2b6776..999e2d6d5d 100644
|
||||
index 9d8662369c..2bc5153141 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -108,7 +108,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"`
|
||||
@@ -151,7 +151,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"`
|
||||
RUBYW_BASE_NAME=`echo rubyw | sed "$program_transform_name"`
|
||||
AC_SUBST(RUBY_BASE_NAME)
|
||||
AC_SUBST(RUBYW_BASE_NAME)
|
||||
|
|
@ -276,6 +255,3 @@ index a00f2b6776..999e2d6d5d 100644
|
|||
|
||||
dnl checks for alternative programs
|
||||
AC_CANONICAL_BUILD
|
||||
--
|
||||
2.1.0
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
From eca084e4079c77c061045df9c21b219175b05228 Mon Sep 17 00:00:00 2001
|
||||
From 03b44a86b574dc0b63fd57c5f9b52b56ad3ced37 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Mon, 6 Jan 2020 13:56:04 +0100
|
||||
Subject: [PATCH] Initialize ABRT hook.
|
||||
|
|
@ -15,15 +15,16 @@ To keep the things simple for now, load the ABRT hook via C.
|
|||
[4]: https://github.com/ruby/ruby/pull/2735
|
||||
[5]: https://lists.fedoraproject.org/archives/list/ruby-sig@lists.fedoraproject.org/message/LH6L6YJOYQT4Y5ZNOO4SLIPTUWZ5V45Q/
|
||||
---
|
||||
abrt.c | 12 ++++++++++++
|
||||
common.mk | 3 ++-
|
||||
ruby.c | 4 ++++
|
||||
3 files changed, 18 insertions(+), 1 deletion(-)
|
||||
abrt.c | 12 ++++++++++++
|
||||
common.mk | 1 +
|
||||
ruby.c | 4 ++++
|
||||
spec/ruby/core/kernel/require_spec.rb | 2 ++
|
||||
4 files changed, 19 insertions(+)
|
||||
create mode 100644 abrt.c
|
||||
|
||||
diff --git a/abrt.c b/abrt.c
|
||||
new file mode 100644
|
||||
index 0000000000..74b0bd5c0f
|
||||
index 0000000000..e99cb432e6
|
||||
--- /dev/null
|
||||
+++ b/abrt.c
|
||||
@@ -0,0 +1,12 @@
|
||||
|
|
@ -40,24 +41,22 @@ index 0000000000..74b0bd5c0f
|
|||
+ );
|
||||
+}
|
||||
diff --git a/common.mk b/common.mk
|
||||
index b2e5b2b6d0..f39f81da5c 100644
|
||||
index 08fee9119a..dae7d9dc00 100644
|
||||
--- a/common.mk
|
||||
+++ b/common.mk
|
||||
@@ -82,7 +82,8 @@ ENC_MK = enc.mk
|
||||
MAKE_ENC = -f $(ENC_MK) V="$(V)" UNICODE_HDR_DIR="$(UNICODE_HDR_DIR)" \
|
||||
RUBY="$(MINIRUBY)" MINIRUBY="$(MINIRUBY)" $(mflags)
|
||||
@@ -116,6 +116,7 @@ PRISM_FILES = prism/api_node.$(OBJEXT) \
|
||||
prism_init.$(OBJEXT)
|
||||
|
||||
-COMMONOBJS = array.$(OBJEXT) \
|
||||
+COMMONOBJS = abrt.$(OBJEXT) \
|
||||
+ array.$(OBJEXT) \
|
||||
COMMONOBJS = \
|
||||
+ abrt.$(OBJEXT) \
|
||||
array.$(OBJEXT) \
|
||||
ast.$(OBJEXT) \
|
||||
bignum.$(OBJEXT) \
|
||||
class.$(OBJEXT) \
|
||||
diff --git a/ruby.c b/ruby.c
|
||||
index 60c57d6259..1eec16f2c8 100644
|
||||
index b00fc1502d..32b88f7496 100644
|
||||
--- a/ruby.c
|
||||
+++ b/ruby.c
|
||||
@@ -1611,10 +1611,14 @@ proc_options(long argc, char **argv, ruby_cmdline_options_t *opt, int envopt)
|
||||
@@ -1773,10 +1773,14 @@ proc_options(long argc, char **argv, ruby_cmdline_options_t *opt, int envopt)
|
||||
|
||||
void Init_builtin_features(void);
|
||||
|
||||
|
|
@ -69,9 +68,19 @@ index 60c57d6259..1eec16f2c8 100644
|
|||
{
|
||||
Init_builtin_features();
|
||||
+ Init_abrt();
|
||||
rb_const_remove(rb_cObject, rb_intern_const("TMP_RUBY_PREFIX"));
|
||||
}
|
||||
|
||||
--
|
||||
2.24.1
|
||||
|
||||
void rb_call_builtin_inits(void);
|
||||
diff --git a/spec/ruby/core/kernel/require_spec.rb b/spec/ruby/core/kernel/require_spec.rb
|
||||
index 60d17242fe..a8f93b0db4 100644
|
||||
--- a/spec/ruby/core/kernel/require_spec.rb
|
||||
+++ b/spec/ruby/core/kernel/require_spec.rb
|
||||
@@ -26,6 +26,8 @@
|
||||
out = ruby_exe("puts $LOADED_FEATURES", options: '--disable-gems --disable-did-you-mean')
|
||||
features = out.lines.map { |line| File.basename(line.chomp, '.*') }
|
||||
|
||||
+ # Ignore ABRT
|
||||
+ features -= %w[abrt]
|
||||
# Ignore CRuby internals
|
||||
features -= %w[encdb transdb windows_1252 windows_31j]
|
||||
features.reject! { |feature| feature.end_with?('-fake') }
|
||||
|
|
|
|||
|
|
@ -1,34 +0,0 @@
|
|||
From 9b42fce32bff25e0569581f76f532b9d57865aef Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Mon, 27 Jul 2020 14:56:05 +0200
|
||||
Subject: [PATCH] Timeout the test_bug_reporter_add witout raising error.
|
||||
|
||||
While timeouting the threads might be still good idea, it does not seems
|
||||
the timeout impacts the TestBugReporter#test_bug_reporter_add result,
|
||||
because the output of the child process has been already collected
|
||||
earlier.
|
||||
|
||||
It seems that when the system is under heavy load, the thread might not
|
||||
be sheduled to finish its processing. Even finishing the child process
|
||||
might take tens of seconds and therefore the test case finish might take
|
||||
a while.
|
||||
---
|
||||
test/-ext-/bug_reporter/test_bug_reporter.rb | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/test/-ext-/bug_reporter/test_bug_reporter.rb b/test/-ext-/bug_reporter/test_bug_reporter.rb
|
||||
index 628fcd0340..2c677cc8a7 100644
|
||||
--- a/test/-ext-/bug_reporter/test_bug_reporter.rb
|
||||
+++ b/test/-ext-/bug_reporter/test_bug_reporter.rb
|
||||
@@ -22,7 +22,7 @@ def test_bug_reporter_add
|
||||
args = ["--disable-gems", "-r-test-/bug_reporter",
|
||||
"-C", tmpdir]
|
||||
stdin = "register_sample_bug_reporter(12345); Process.kill :SEGV, $$"
|
||||
- assert_in_out_err(args, stdin, [], expected_stderr, encoding: "ASCII-8BIT")
|
||||
+ assert_in_out_err(args, stdin, [], expected_stderr, encoding: "ASCII-8BIT", timeout_error: nil)
|
||||
ensure
|
||||
FileUtils.rm_rf(tmpdir) if tmpdir
|
||||
end
|
||||
--
|
||||
2.27.0
|
||||
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
From 0ade5611df9f981005eed32b369d1e699e520221 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Thu, 10 Feb 2022 13:26:44 +0100
|
||||
Subject: [PATCH] Don't query `RubyVM::FrozenCore` for class path.
|
||||
|
||||
The `RubyVM::FrozenCore` class path is corrupted during GC cycle and
|
||||
returns random garbage, which might result in segfault.
|
||||
|
||||
But since it is easy to detect the `RubyVM::FrozenCore`, just provide
|
||||
the class path explicitly as a workaround.
|
||||
|
||||
Other possibility would be to ignore `RubyVM::FrozenCore` simlarly as
|
||||
TracePoint API does:
|
||||
|
||||
https://github.com/ruby/ruby/blob/46f6575157d4c2f6bbd5693896e26a65037e5552/vm_trace.c#L411
|
||||
---
|
||||
vm.c | 10 +++++++++-
|
||||
1 file changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/vm.c b/vm.c
|
||||
index 8ce8b279d4..3d189fa63a 100644
|
||||
--- a/vm.c
|
||||
+++ b/vm.c
|
||||
@@ -479,7 +479,15 @@ rb_dtrace_setup(rb_execution_context_t *ec, VALUE klass, ID id,
|
||||
}
|
||||
type = BUILTIN_TYPE(klass);
|
||||
if (type == T_CLASS || type == T_ICLASS || type == T_MODULE) {
|
||||
- VALUE name = rb_class_path(klass);
|
||||
+ VALUE name = Qnil;
|
||||
+ /*
|
||||
+ * Special treatment for rb_mRubyVMFrozenCore wchi is broken by GC.
|
||||
+ * https://bugs.ruby-lang.org/issues/18257
|
||||
+ */
|
||||
+ if (klass == rb_mRubyVMFrozenCore)
|
||||
+ name = rb_str_new_cstr("RubyVM::FrozenCore");
|
||||
+ else
|
||||
+ name = rb_class_path(klass);
|
||||
const char *classname, *filename;
|
||||
const char *methodname = rb_id2name(id);
|
||||
if (methodname && (filename = rb_source_location_cstr(&args->line_no)) != 0) {
|
||||
--
|
||||
2.34.1
|
||||
|
||||
|
|
@ -1,338 +0,0 @@
|
|||
From 111f8422427d78becc9183ae149b2105a16bf327 Mon Sep 17 00:00:00 2001
|
||||
From: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
Date: Tue, 5 Apr 2022 23:24:00 +0900
|
||||
Subject: [PATCH 1/5] Bundled gems are expanded under `.bundle/gems` now
|
||||
|
||||
---
|
||||
ext/extmk.rb | 13 +++++++------
|
||||
template/exts.mk.tmpl | 2 +-
|
||||
2 files changed, 8 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/ext/extmk.rb b/ext/extmk.rb
|
||||
index 4a087f294ac9..1da9e2704521 100755
|
||||
--- a/ext/extmk.rb
|
||||
+++ b/ext/extmk.rb
|
||||
@@ -146,7 +146,7 @@ def extmake(target, basedir = 'ext', maybestatic = true)
|
||||
top_srcdir = $top_srcdir
|
||||
topdir = $topdir
|
||||
hdrdir = $hdrdir
|
||||
- prefix = "../" * (target.count("/")+1)
|
||||
+ prefix = "../" * (basedir.count("/")+target.count("/")+1)
|
||||
$top_srcdir = relative_from(top_srcdir, prefix)
|
||||
$hdrdir = relative_from(hdrdir, prefix)
|
||||
$topdir = prefix + $topdir
|
||||
@@ -460,10 +460,11 @@ def $mflags.defined?(var)
|
||||
end unless $extstatic
|
||||
|
||||
@gemname = nil
|
||||
-if ARGV[0]
|
||||
- ext_prefix, exts = ARGV.shift.split('/', 2)
|
||||
+if exts = ARGV.shift
|
||||
+ ext_prefix = exts[%r[\A(?>\.bundle/)?[^/]+(?:/(?=(.+)?)|\z)]]
|
||||
+ exts = $1
|
||||
$extension = [exts] if exts
|
||||
- if ext_prefix == 'gems'
|
||||
+ if ext_prefix.start_with?('.')
|
||||
@gemname = exts
|
||||
elsif exts
|
||||
$static_ext.delete_if {|t, *| !File.fnmatch(t, exts)}
|
||||
@@ -515,7 +516,7 @@ def $mflags.defined?(var)
|
||||
exts.delete_if {|d| File.fnmatch?("-*", d)}
|
||||
end
|
||||
end
|
||||
-ext_prefix = File.basename(ext_prefix)
|
||||
+ext_prefix = ext_prefix[$top_srcdir.size+1..-2]
|
||||
|
||||
extend Module.new {
|
||||
def timestamp_file(name, target_prefix = nil)
|
||||
@@ -634,7 +635,7 @@ def initialize(src)
|
||||
end
|
||||
}
|
||||
|
||||
-Dir.chdir ".."
|
||||
+Dir.chdir dir
|
||||
unless $destdir.to_s.empty?
|
||||
$mflags.defined?("DESTDIR") or $mflags << "DESTDIR=#{$destdir}"
|
||||
end
|
||||
diff --git a/template/exts.mk.tmpl b/template/exts.mk.tmpl
|
||||
index 2f37f4480ac5..964939e365a1 100644
|
||||
--- a/template/exts.mk.tmpl
|
||||
+++ b/template/exts.mk.tmpl
|
||||
@@ -25,7 +25,7 @@ macros["old_extensions"] = []
|
||||
|
||||
contpat = /(?>(?>[^\\\n]|\\.)*\\\n)*(?>[^\\\n]|\\.)*/
|
||||
Dir.glob("{ext,.bundle/gems}/*/exts.mk") do |e|
|
||||
- gem = /\Agems(?=\/)/ =~ e
|
||||
+ gem = e.start_with?(".bundle/gems/")
|
||||
s = File.read(e)
|
||||
s.scan(/^(extensions|SUBMAKEOPTS|EXT[A-Z]+|MFLAGS|NOTE_[A-Z]+)[ \t]*=[ \t]*(#{contpat})$/o) do |n, v|
|
||||
v.gsub!(/\\\n[ \t]*/, ' ')
|
||||
|
||||
From 6ea34cac22131d28a9cc50e7875e854aed9bdb88 Mon Sep 17 00:00:00 2001
|
||||
From: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
Date: Wed, 6 Apr 2022 20:25:53 +0900
|
||||
Subject: [PATCH 2/5] Retrieve configured gems info
|
||||
|
||||
---
|
||||
template/configure-ext.mk.tmpl | 2 +-
|
||||
template/exts.mk.tmpl | 4 ++--
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/template/configure-ext.mk.tmpl b/template/configure-ext.mk.tmpl
|
||||
index 6636a7759c54..8ba6b963e3ec 100644
|
||||
--- a/template/configure-ext.mk.tmpl
|
||||
+++ b/template/configure-ext.mk.tmpl
|
||||
@@ -27,7 +27,7 @@ SCRIPT_ARGS = <%=script_args.gsub("#", "\\#")%>
|
||||
EXTMK_ARGS = $(SCRIPT_ARGS) --gnumake=$(gnumake) --extflags="$(EXTLDFLAGS)" \
|
||||
--make-flags="MINIRUBY='$(MINIRUBY)'"
|
||||
|
||||
-all: exts # gems
|
||||
+all: exts gems
|
||||
exts:
|
||||
gems:
|
||||
|
||||
diff --git a/template/exts.mk.tmpl b/template/exts.mk.tmpl
|
||||
index 964939e365a1..e544c4c88bd7 100644
|
||||
--- a/template/exts.mk.tmpl
|
||||
+++ b/template/exts.mk.tmpl
|
||||
@@ -19,7 +19,7 @@ opt = OptionParser.new do |o|
|
||||
o.on('--configure-exts=FILE') {|v| confexts = v}
|
||||
o.order!(ARGV)
|
||||
end
|
||||
-confexts &&= File.read(confexts).scan(/^exts: (.*\.mk)/).flatten rescue nil
|
||||
+confexts &&= File.read(confexts).scan(/^(?:ext|gem)s: (.*\.mk)/).flatten rescue nil
|
||||
confexts ||= []
|
||||
macros["old_extensions"] = []
|
||||
|
||||
@@ -30,7 +30,7 @@ Dir.glob("{ext,.bundle/gems}/*/exts.mk") do |e|
|
||||
s.scan(/^(extensions|SUBMAKEOPTS|EXT[A-Z]+|MFLAGS|NOTE_[A-Z]+)[ \t]*=[ \t]*(#{contpat})$/o) do |n, v|
|
||||
v.gsub!(/\\\n[ \t]*/, ' ')
|
||||
next if v.empty?
|
||||
- next if gem and n != "extensions"
|
||||
+ next if n != "extensions"
|
||||
n = "old_extensions" if n == "extensions" and !confexts.include?(e)
|
||||
v = v.split
|
||||
m = macros[n] ||= []
|
||||
|
||||
From be9d00ee7c72766551ba8c3530f1538034498a6a Mon Sep 17 00:00:00 2001
|
||||
From: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
Date: Wed, 6 Apr 2022 20:28:00 +0900
|
||||
Subject: [PATCH 3/5] Move the target directory of bundled gems like as
|
||||
rubygems
|
||||
|
||||
---
|
||||
ext/extmk.rb | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ext/extmk.rb b/ext/extmk.rb
|
||||
index 1da9e2704521..a440af27fc5d 100755
|
||||
--- a/ext/extmk.rb
|
||||
+++ b/ext/extmk.rb
|
||||
@@ -2,6 +2,9 @@
|
||||
# -*- mode: ruby; coding: us-ascii -*-
|
||||
# frozen_string_literal: false
|
||||
|
||||
+module Gem; end # only needs Gem::Platform
|
||||
+require 'rubygems/platform'
|
||||
+
|
||||
# :stopdoc:
|
||||
$extension = nil
|
||||
$extstatic = nil
|
||||
@@ -535,11 +538,12 @@ def create_makefile(*args, &block)
|
||||
super(*args) do |conf|
|
||||
conf.find do |s|
|
||||
s.sub!(/^(TARGET_SO_DIR *= *)\$\(RUBYARCHDIR\)/) {
|
||||
- "TARGET_GEM_DIR = $(extout)/gems/$(arch)/#{@gemname}\n"\
|
||||
+ "TARGET_GEM_DIR = $(topdir)/.bundle/extensions/$(gem_platform)/$(ruby_version)/#{@gemname}\n"\
|
||||
"#{$1}$(TARGET_GEM_DIR)$(target_prefix)"
|
||||
}
|
||||
end
|
||||
conf.any? {|s| /^TARGET *= *\S/ =~ s} and conf << %{
|
||||
+gem_platform = #{Gem::Platform.local}
|
||||
|
||||
# default target
|
||||
all:
|
||||
|
||||
From c4daf8e445925695c34bab8bf5135dcd1e8575a3 Mon Sep 17 00:00:00 2001
|
||||
From: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
Date: Wed, 6 Apr 2022 22:57:01 +0900
|
||||
Subject: [PATCH 4/5] Obey spec file locations to rubygems
|
||||
|
||||
---
|
||||
common.mk | 3 ++-
|
||||
defs/gmake.mk | 2 +-
|
||||
tool/gem-unpack.rb | 5 +++--
|
||||
3 files changed, 6 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/common.mk b/common.mk
|
||||
index 7c552cba1e04..b4adb2729c0e 100644
|
||||
--- a/common.mk
|
||||
+++ b/common.mk
|
||||
@@ -1359,10 +1359,11 @@ extract-gems$(gnumake:yes=-nongnumake): PHONY
|
||||
$(Q) $(RUNRUBY) -C "$(srcdir)" \
|
||||
-Itool -rgem-unpack -answ \
|
||||
-e 'BEGIN {FileUtils.mkdir_p(d = ".bundle/gems")}' \
|
||||
+ -e 'BEGIN {FileUtils.mkdir_p(s = ".bundle/specifications")}' \
|
||||
-e 'gem, ver = *$$F' \
|
||||
-e 'next if !ver or /^#/=~gem' \
|
||||
-e 'g = "#{gem}-#{ver}"' \
|
||||
- -e 'File.directory?("#{d}/#{g}") or Gem.unpack("gems/#{g}.gem", d)' \
|
||||
+ -e 'File.directory?("#{d}/#{g}") or Gem.unpack("gems/#{g}.gem", d, s)' \
|
||||
gems/bundled_gems
|
||||
|
||||
update-bundled_gems: PHONY
|
||||
diff --git a/defs/gmake.mk b/defs/gmake.mk
|
||||
index a625379a6804..27e3e21cc4d6 100644
|
||||
--- a/defs/gmake.mk
|
||||
+++ b/defs/gmake.mk
|
||||
@@ -290,7 +290,7 @@ extract-gems: | $(patsubst %,.bundle/gems/%,$(bundled-gems))
|
||||
$(ECHO) Extracting bundle gem $*...
|
||||
$(Q) $(BASERUBY) -C "$(srcdir)" \
|
||||
-Itool -rgem-unpack \
|
||||
- -e 'Gem.unpack("gems/$(@F).gem", ".bundle/gems")'
|
||||
+ -e 'Gem.unpack("gems/$(@F).gem", ".bundle/gems", ".bundle/specifications")'
|
||||
|
||||
$(srcdir)/.bundle/gems:
|
||||
$(MAKEDIRS) $@
|
||||
diff --git a/tool/gem-unpack.rb b/tool/gem-unpack.rb
|
||||
index cb05719463f2..fe10b0e420fa 100644
|
||||
--- a/tool/gem-unpack.rb
|
||||
+++ b/tool/gem-unpack.rb
|
||||
@@ -5,13 +5,14 @@
|
||||
# This library is used by "make extract-gems" to
|
||||
# unpack bundled gem files.
|
||||
|
||||
-def Gem.unpack(file, dir = nil)
|
||||
+def Gem.unpack(file, dir = nil, spec_dir = nil)
|
||||
pkg = Gem::Package.new(file)
|
||||
spec = pkg.spec
|
||||
target = spec.full_name
|
||||
target = File.join(dir, target) if dir
|
||||
pkg.extract_files target
|
||||
- spec_file = File.join(target, "#{spec.name}-#{spec.version}.gemspec")
|
||||
+ FileUtils.mkdir_p(spec_dir ||= target)
|
||||
+ spec_file = File.join(spec_dir, "#{spec.name}-#{spec.version}.gemspec")
|
||||
open(spec_file, 'wb') do |f|
|
||||
f.print spec.to_ruby
|
||||
end
|
||||
|
||||
From 3de652d8198be9cd2998c095903889a80e738275 Mon Sep 17 00:00:00 2001
|
||||
From: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||
Date: Thu, 7 Apr 2022 01:44:43 +0900
|
||||
Subject: [PATCH 5/5] Install built gem extension binaries
|
||||
|
||||
---
|
||||
tool/rbinstall.rb | 56 ++++++++++++++---------------------------------
|
||||
1 file changed, 16 insertions(+), 40 deletions(-)
|
||||
|
||||
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
|
||||
index 9d9b672be472..624961b4eee6 100755
|
||||
--- a/tool/rbinstall.rb
|
||||
+++ b/tool/rbinstall.rb
|
||||
@@ -858,6 +858,9 @@ class UnpackedInstaller < GemInstaller
|
||||
def write_cache_file
|
||||
end
|
||||
|
||||
+ def build_extensions
|
||||
+ end
|
||||
+
|
||||
def shebang(bin_file_name)
|
||||
path = File.join(gem_dir, spec.bindir, bin_file_name)
|
||||
first_line = File.open(path, "rb") {|file| file.gets}
|
||||
@@ -940,13 +943,12 @@ def ensure_writable_dir(dir)
|
||||
install_default_gem('ext', srcdir, bindir)
|
||||
end
|
||||
|
||||
-def load_gemspec(file, expanded = false)
|
||||
+def load_gemspec(file, base = nil)
|
||||
file = File.realpath(file)
|
||||
code = File.read(file, encoding: "utf-8:-")
|
||||
code.gsub!(/(?:`git[^\`]*`|%x\[git[^\]]*\])\.split\([^\)]*\)/m) do
|
||||
files = []
|
||||
- if expanded
|
||||
- base = File.dirname(file)
|
||||
+ if base
|
||||
Dir.glob("**/*", File::FNM_DOTMATCH, base: base) do |n|
|
||||
case File.basename(n); when ".", ".."; next; end
|
||||
next if File.directory?(File.join(base, n))
|
||||
@@ -959,7 +961,7 @@ def load_gemspec(file, expanded = false)
|
||||
unless Gem::Specification === spec
|
||||
raise TypeError, "[#{file}] isn't a Gem::Specification (#{spec.class} instead)."
|
||||
end
|
||||
- spec.loaded_from = file
|
||||
+ spec.loaded_from = base ? File.join(base, File.basename(file)) : file
|
||||
spec.files.reject! {|n| n.end_with?(".gemspec") or n.start_with?(".git")}
|
||||
|
||||
spec
|
||||
@@ -1014,20 +1016,6 @@ def install_default_gem(dir, srcdir, bindir)
|
||||
end
|
||||
|
||||
install?(:ext, :comm, :gem, :'bundled-gems') do
|
||||
- if CONFIG['CROSS_COMPILING'] == 'yes'
|
||||
- # The following hacky steps set "$ruby = BASERUBY" in tool/fake.rb
|
||||
- $hdrdir = ''
|
||||
- $extmk = nil
|
||||
- $ruby = nil # ...
|
||||
- ruby_path = $ruby + " -I#{Dir.pwd}" # $baseruby + " -I#{Dir.pwd}"
|
||||
- else
|
||||
- # ruby_path = File.expand_path(with_destdir(File.join(bindir, ruby_install_name)))
|
||||
- ENV['RUBYLIB'] = nil
|
||||
- ENV['RUBYOPT'] = nil
|
||||
- ruby_path = File.expand_path(with_destdir(File.join(bindir, ruby_install_name))) + " --disable=gems -I#{with_destdir(archlibdir)}"
|
||||
- end
|
||||
- Gem.instance_variable_set(:@ruby, ruby_path) if Gem.ruby != ruby_path
|
||||
-
|
||||
gem_dir = Gem.default_dir
|
||||
install_dir = with_destdir(gem_dir)
|
||||
prepare "bundled gems", gem_dir
|
||||
@@ -1047,40 +1035,28 @@ def install_default_gem(dir, srcdir, bindir)
|
||||
:wrappers => true,
|
||||
:format_executable => true,
|
||||
}
|
||||
- gem_ext_dir = "#$extout/gems/#{CONFIG['arch']}"
|
||||
- extensions_dir = with_destdir(Gem::StubSpecification.gemspec_stub("", gem_dir, gem_dir).extensions_dir)
|
||||
+
|
||||
+ extensions_dir = Gem::StubSpecification.gemspec_stub("", gem_dir, gem_dir).extensions_dir
|
||||
+ specifications_dir = File.join(gem_dir, "specifications")
|
||||
+ build_dir = Gem::StubSpecification.gemspec_stub("", ".bundle", ".bundle").extensions_dir
|
||||
|
||||
File.foreach("#{srcdir}/gems/bundled_gems") do |name|
|
||||
next if /^\s*(?:#|$)/ =~ name
|
||||
next unless /^(\S+)\s+(\S+).*/ =~ name
|
||||
gem_name = "#$1-#$2"
|
||||
- path = "#{srcdir}/.bundle/gems/#{gem_name}/#{gem_name}.gemspec"
|
||||
- if File.exist?(path)
|
||||
- spec = load_gemspec(path)
|
||||
- else
|
||||
- path = "#{srcdir}/.bundle/gems/#{gem_name}/#$1.gemspec"
|
||||
- next unless File.exist?(path)
|
||||
- spec = load_gemspec(path, true)
|
||||
- end
|
||||
+ path = "#{srcdir}/.bundle/specifications/#{gem_name}.gemspec"
|
||||
+ next unless File.exist?(path)
|
||||
+ spec = load_gemspec(path, "#{srcdir}/.bundle/gems/#{gem_name}")
|
||||
next unless spec.platform == Gem::Platform::RUBY
|
||||
next unless spec.full_name == gem_name
|
||||
- if !spec.extensions.empty? && CONFIG["EXTSTATIC"] == "static"
|
||||
- puts "skip installation of #{spec.name} #{spec.version}; bundled gem with an extension library is not supported on --with-static-linked-ext"
|
||||
- next
|
||||
- end
|
||||
spec.extension_dir = "#{extensions_dir}/#{spec.full_name}"
|
||||
- if File.directory?(ext = "#{gem_ext_dir}/#{spec.full_name}")
|
||||
- spec.extensions[0] ||= "-"
|
||||
- end
|
||||
package = RbInstall::DirPackage.new spec
|
||||
ins = RbInstall::UnpackedInstaller.new(package, options)
|
||||
puts "#{INDENT}#{spec.name} #{spec.version}"
|
||||
ins.install
|
||||
- unless $dryrun
|
||||
- File.chmod($data_mode, File.join(install_dir, "specifications", "#{spec.full_name}.gemspec"))
|
||||
- end
|
||||
- unless spec.extensions.empty?
|
||||
- install_recursive(ext, spec.extension_dir)
|
||||
+ install_recursive("#{build_dir}/#{gem_name}", "#{extensions_dir}/#{gem_name}") do |src, dest|
|
||||
+ # puts "#{INDENT} #{dest[extensions_dir.size+gem_name.size+2..-1]}"
|
||||
+ install src, dest, :mode => (File.executable?(src) ? $prog_mode : $data_mode)
|
||||
end
|
||||
installed_gems[spec.full_name] = true
|
||||
end
|
||||
23
ruby-3.3.0-Disable-syntax-suggest-test-case.patch
Normal file
23
ruby-3.3.0-Disable-syntax-suggest-test-case.patch
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
From 9b7cb6a40d73bb86ee0de34360068e90e80f4e7e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Thu, 7 Sep 2023 13:13:02 +0200
|
||||
Subject: [PATCH] Disable syntax-suggest test case.
|
||||
|
||||
This requires internet connection.
|
||||
---
|
||||
common.mk | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
diff --git a/common.mk b/common.mk
|
||||
index dae7d9dc00..111e859d1b 100644
|
||||
--- a/common.mk
|
||||
+++ b/common.mk
|
||||
@@ -1619,8 +1619,6 @@ no-test-bundled-gems-spec:
|
||||
|
||||
test-syntax-suggest:
|
||||
|
||||
-check: $(DOT_WAIT) $(PREPARE_SYNTAX_SUGGEST) test-syntax-suggest
|
||||
-
|
||||
test-bundler-precheck: $(TEST_RUNNABLE)-test-bundler-precheck
|
||||
no-test-bundler-precheck:
|
||||
yes-test-bundler-precheck: main $(arch)-fake.rb
|
||||
|
|
@ -0,0 +1,117 @@
|
|||
From 1cfb11bc8d01e4fc1ff47807721e29b250f0f19f Mon Sep 17 00:00:00 2001
|
||||
From: Jarek Prokop <jprokop@redhat.com>
|
||||
Date: Mon, 22 Dec 2025 10:13:34 +0100
|
||||
Subject: [PATCH] Support customizable rustc_flags for rustc builds.
|
||||
|
||||
Add `rustc_flags` option for configure that appends to RUSTC_FLAGS
|
||||
flags used when compiling with rustc for customizable build flags.
|
||||
It appends to existing defaults in RUSTC_FLAGS.
|
||||
|
||||
Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>
|
||||
---
|
||||
common.mk | 10 ++--------
|
||||
configure.ac | 8 ++++++++
|
||||
defs/jit.mk | 2 ++
|
||||
template/Makefile.in | 1 +
|
||||
4 files changed, 13 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/common.mk b/common.mk
|
||||
index 08fee9119a..9ac5ae919f 100644
|
||||
--- a/common.mk
|
||||
+++ b/common.mk
|
||||
@@ -270,21 +270,15 @@ MAKE_LINK = $(MINIRUBY) -rfileutils -e "include FileUtils::Verbose" \
|
||||
# For release builds
|
||||
YJIT_RUSTC_ARGS = --crate-name=yjit \
|
||||
$(JIT_RUST_FLAGS) \
|
||||
+ $(RUSTC_FLAGS) \
|
||||
--edition=2021 \
|
||||
- -g \
|
||||
- -C lto=thin \
|
||||
- -C opt-level=3 \
|
||||
- -C overflow-checks=on \
|
||||
'--out-dir=$(CARGO_TARGET_DIR)/release/' \
|
||||
'$(top_srcdir)/yjit/src/lib.rs'
|
||||
|
||||
ZJIT_RUSTC_ARGS = --crate-name=zjit \
|
||||
$(JIT_RUST_FLAGS) \
|
||||
+ $(RUSTC_FLAGS) \
|
||||
--edition=2024 \
|
||||
- -g \
|
||||
- -C lto=thin \
|
||||
- -C opt-level=3 \
|
||||
- -C overflow-checks=on \
|
||||
'--out-dir=$(CARGO_TARGET_DIR)/release/' \
|
||||
'$(top_srcdir)/zjit/src/lib.rs'
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 2bbce78fd0..a3aa6dc383 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -69,6 +69,7 @@ dnl 93(bright yellow) is copied from .github/workflows/mingw.yml
|
||||
AC_ARG_VAR([cflags], [additional CFLAGS (ignored when CFLAGS is given)])dnl
|
||||
AC_ARG_VAR([cppflags], [additional CPPFLAGS (ignored when CPPFLAGS is given)])dnl
|
||||
AC_ARG_VAR([cxxflags], [additional CXXFLAGS (ignored when CXXFLAGS is given)])dnl
|
||||
+AC_ARG_VAR([rustc_flags], [additional RUSTC_FLAGS])dnl
|
||||
|
||||
[begin]_group "environment section" && {
|
||||
HAVE_BASERUBY=yes
|
||||
@@ -4054,6 +4055,11 @@ AS_CASE(["${ZJIT_SUPPORT}"],
|
||||
AC_DEFINE(USE_ZJIT, 0)
|
||||
])
|
||||
|
||||
+RUSTC_FLAGS='-g -C lto=thin -C opt-level=3 -C overflow-checks=on'
|
||||
+AS_IF([test -n "${rustc_flags}"], [
|
||||
+ RUSTC_FLAGS="${RUSTC_FLAGS} ${rustc_flags}"
|
||||
+])
|
||||
+
|
||||
JIT_RUST_FLAGS='--crate-type=staticlib --cfg feature=\"stats_allocator\"'
|
||||
RLIB_DIR=
|
||||
AS_CASE(["$JIT_CARGO_SUPPORT:$YJIT_SUPPORT:$ZJIT_SUPPORT"],
|
||||
@@ -4111,6 +4117,7 @@ AS_IF([test -n "$RUST_LIB"], [
|
||||
dnl These variables end up in ::RbConfig::CONFIG
|
||||
AC_SUBST(RUSTC)dnl Rust compiler command
|
||||
AC_SUBST(JIT_RUST_FLAGS)dnl the common rustc flags for JIT crates such as zjit
|
||||
+AC_SUBST(RUSTC_FLAGS)dnl user-configurable rustc compiler flags
|
||||
AC_SUBST(CARGO)dnl Cargo command for Rust builds
|
||||
AC_SUBST(CARGO_BUILD_ARGS)dnl for selecting Rust build profiles
|
||||
AC_SUBST(YJIT_SUPPORT)dnl what flavor of YJIT the Ruby build includes
|
||||
@@ -4855,6 +4862,7 @@ config_summary "strip command" "$STRIP"
|
||||
config_summary "install doc" "$DOCTARGETS"
|
||||
config_summary "YJIT support" "$YJIT_SUPPORT"
|
||||
config_summary "ZJIT support" "$ZJIT_SUPPORT"
|
||||
+config_summary "RUSTC_FLAGS" "$RUSTC_FLAGS"
|
||||
config_summary "man page type" "$MANTYPE"
|
||||
config_summary "search path" "$search_path"
|
||||
config_summary "static-linked-ext" ${EXTSTATIC:+"yes"}
|
||||
diff --git a/defs/jit.mk b/defs/jit.mk
|
||||
index 42b56c4cd9..27b14e7a07 100644
|
||||
--- a/defs/jit.mk
|
||||
+++ b/defs/jit.mk
|
||||
@@ -40,6 +40,7 @@ else ifneq ($(strip $(RLIB_DIR)),) # combo build
|
||||
$(RUST_LIB): $(srcdir)/ruby.rs
|
||||
$(ECHO) 'building $(@F)'
|
||||
$(gnumake_recursive)$(Q) $(RUSTC) --edition=2024 \
|
||||
+ $(RUSTC_FLAGS) \
|
||||
'-L$(@D)' \
|
||||
--extern=yjit \
|
||||
--extern=zjit \
|
||||
@@ -58,6 +59,7 @@ $(JIT_RLIB):
|
||||
$(gnumake_recursive)$(Q) $(RUSTC) --crate-name=jit \
|
||||
--edition=2024 \
|
||||
$(JIT_RUST_FLAGS) \
|
||||
+ $(RUSTC_FLAGS) \
|
||||
'--out-dir=$(@D)' \
|
||||
'$(top_srcdir)/jit/src/lib.rs'
|
||||
endif # ifneq ($(JIT_CARGO_SUPPORT),no)
|
||||
diff --git a/template/Makefile.in b/template/Makefile.in
|
||||
index 443c394cb4..0b7b50e3aa 100644
|
||||
--- a/template/Makefile.in
|
||||
+++ b/template/Makefile.in
|
||||
@@ -115,6 +115,7 @@ CARGO_TARGET_DIR=@abs_top_builddir@/target
|
||||
CARGO_BUILD_ARGS=@CARGO_BUILD_ARGS@
|
||||
ZJIT_TEST_FEATURES=@ZJIT_TEST_FEATURES@
|
||||
JIT_RUST_FLAGS=@JIT_RUST_FLAGS@
|
||||
+RUSTC_FLAGS=@RUSTC_FLAGS@
|
||||
RLIB_DIR=@RLIB_DIR@
|
||||
RUST_LIB=@RUST_LIB@
|
||||
RUST_LIBOBJ = $(RUST_LIB:.a=.@OBJEXT@)
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
From bfa2f72cfa3bfde34049d26dcb24976316074ad7 Mon Sep 17 00:00:00 2001
|
||||
From: Jun Aruga <jaruga@redhat.com>
|
||||
Date: Mon, 21 Mar 2022 15:36:51 +0100
|
||||
Subject: [PATCH] Fix a test for `bin/bundle update --bundler` to pass on
|
||||
ruby/ruby.
|
||||
|
||||
Consider the case that the latest Bundler version on RubyGems is higher than
|
||||
the `system_bundler_version` (= `Bundler::VERSION`) in `make test-bundler` on
|
||||
ruby/ruby.
|
||||
|
||||
See <https://bugs.ruby-lang.org/issues/18643>.
|
||||
---
|
||||
spec/bundler/commands/binstubs_spec.rb | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/spec/bundler/commands/binstubs_spec.rb b/spec/bundler/commands/binstubs_spec.rb
|
||||
index 198226207bc..2634f43417c 100644
|
||||
--- a/spec/bundler/commands/binstubs_spec.rb
|
||||
+++ b/spec/bundler/commands/binstubs_spec.rb
|
||||
@@ -226,7 +226,10 @@
|
||||
|
||||
it "calls through to the latest bundler version" do
|
||||
sys_exec "bin/bundle update --bundler", :env => { "DEBUG" => "1" }
|
||||
- expect(out).to include %(Using bundler #{system_bundler_version}\n)
|
||||
+ using_bundler_line = /Using bundler ([\w\.]+)\n/.match(out)
|
||||
+ expect(using_bundler_line).to_not be_nil
|
||||
+ latest_version = using_bundler_line[1]
|
||||
+ expect(Gem::Version.new(latest_version)).to be >= Gem::Version.new(system_bundler_version)
|
||||
end
|
||||
|
||||
it "calls through to the explicit bundler version" do
|
||||
|
|
@ -13,15 +13,13 @@ addFilter(r'ruby\.(spec|src):\d+: W: unversioned-explicit-provides bundled\(ccan
|
|||
# The template files do not have to have executable bits.
|
||||
addFilter(r'^rubygem-bundler\.noarch: E: non-executable-script /usr/share/gems/gems/bundler-[\d\.]+/lib/bundler/templates/[\w/\.]+ 644 /usr/bin/env ')
|
||||
|
||||
# Samples don't really need executable bits.
|
||||
addFilter(r'^rubygem-bigdecimal\.x86_64: E: non-executable-script /usr/share/gems/gems/bigdecimal-[\d\.]+/sample/\w+.rb 644 /usr/local/bin/ruby$')
|
||||
|
||||
# The bundled gem files permissions are overridden as 644 by `make install`.
|
||||
# https://bugs.ruby-lang.org/issues/17840
|
||||
# https://github.com/rubygems/rubygems/issues/5255
|
||||
# https://github.com/ruby/debug/pull/481
|
||||
# https://github.com/ruby/net-ftp/pull/12
|
||||
# https://github.com/ruby/net-imap/pull/53
|
||||
# https://github.com/ruby/net-pop/pull/7
|
||||
# https://github.com/ruby/prime/pull/16
|
||||
addFilter(r'^.*: E: non-executable-script /usr/share/gems/gems/(debug|net-(ftp|imap|pop)|prime)-[\d\.]+/bin/\w+ 644 ')
|
||||
addFilter(r'^.*: E: non-executable-script /usr/share/gems/gems/(abbrev|getoptlong|nkf|observer|resolv|resolv-replace|rinda|syslog)-[\d\.]+/bin/\w+ 644 ')
|
||||
|
||||
# Ruby provides API to set the cipher list.
|
||||
addFilter(r'^ruby-libs\.\w+: W: crypto-policy-non-compliance-openssl /usr/lib(64)?/ruby/openssl.so SSL_CTX_set_cipher_list$')
|
||||
|
|
@ -31,31 +29,11 @@ addFilter(r'^ruby-libs\.\w+: W: crypto-policy-non-compliance-openssl /usr/lib(64
|
|||
# https://bugs.ruby-lang.org/issues/17944
|
||||
addFilter(r'^ruby-libs\.\w+: W: binary-or-shlib-calls-gethostbyname /usr/lib(64)?/ruby/socket.so$')
|
||||
|
||||
# Nothing referred and no dependency information should be no problem.
|
||||
# https://bugs.ruby-lang.org/issues/16558#note-2
|
||||
addFilter(r'^ruby-libs\.\w+: E: shared-library-without-dependency-information /usr/lib(64)?/ruby/enc/gb2312.so$')
|
||||
# Compatibility for rpmlint 1.11.
|
||||
addFilter(r'^ruby-libs\.\w+: E: shared-lib-without-dependency-information /usr/lib(64)?/ruby/enc/gb2312.so$')
|
||||
|
||||
# These are Ruby plugins, where Ruby always load glibc prior the library.
|
||||
addFilter(r'^ruby-libs\.\w+: W: library-not-linked-against-libc /usr/lib(64)?/ruby/.*.so$')
|
||||
|
||||
# The function `chroot` without using `chdir` is detected by rpmlint with the
|
||||
# following message. However it looks a false positive as the `chroot` in the
|
||||
# `dir.c` is just used as a Ruby binding `Dir.chroot` for the function.
|
||||
#
|
||||
# ruby-libs.x86_64: E: missing-call-to-chdir-with-chroot /usr/lib64/libruby.so.N.N.N
|
||||
# This executable appears to call chroot without using chdir to change the
|
||||
# current directory. This is likely an error and permits an attacker to break
|
||||
# out of the chroot by using fchdir. While that's not always a security issue,
|
||||
# this has to be checked.
|
||||
addFilter(r'^ruby-libs\.\w+: E: missing-call-to-chdir-with-chroot /usr/lib(64)?/libruby.so.[\d/.]+$')
|
||||
|
||||
# Rake ships some examples.
|
||||
addFilter(r'^rubygem-rake.noarch: W: devel-file-in-non-devel-package /usr/share/gems/gems/rake-[\d\.]+/doc/example/\w+.c$')
|
||||
|
||||
# Some executables don't have their manual pages. Is it worth of use help2man?
|
||||
addFilter(r'^.+: W: no-manual-page-for-binary (bundler|gem|rbs|rdbg|rdoc|ruby-mri|typeprof)$')
|
||||
addFilter(r'^.+: W: no-manual-page-for-binary (bundler|gem|racc|rbs|rdbg|rdoc|ruby-mri|syntax_suggest|typeprof)$')
|
||||
|
||||
# Default gems does not come with any documentation.
|
||||
addFilter(r'^rubygem-(bigdecimal|io-console|json|psych)\.\w+: W: no-documentation$')
|
||||
|
|
@ -64,6 +42,18 @@ addFilter(r'^rubygem-(bigdecimal|io-console|json|psych)\.\w+: W: no-documentatio
|
|||
# by RPM and can't be modified.
|
||||
addFilter(r'rubygems-devel.noarch: W: only-non-binary-in-usr-lib$')
|
||||
|
||||
# The empty gem.build_complete file is false positive. This error is gone in rpmlint 2.0+.
|
||||
# https://github.com/rpm-software-management/rpmlint/commit/e34ce874f27d733628f51c9884ac951af072bed2
|
||||
addFilter(r'^ruby(gem)?-(bigdecimal|bundled-gems|io-console|json|psych|rbs)\.\w+: E: zero-length /usr/lib(64)?/gems/ruby/.*/gem.build_complete')
|
||||
# Ignore some spelling false positives.
|
||||
# Ignore spelling of technical terms
|
||||
addFilter(r'^ruby-default-gems.noarch: E: spelling-error \(\'gemspec\'')
|
||||
addFilter(r'^ruby-libs.x86_64: E: spelling-error \(\'libruby\'')
|
||||
addFilter(r'^rubygem-test-unit.noarch: E: spelling-error \(\'xUnit\'')
|
||||
addFilter(r'^rubygem-psych.x86_64: E: spelling-error \(\'libyaml\'')
|
||||
addFilter(r'^rubygem-io-console.x86_64: E: spelling-error \(\'readline\'')
|
||||
# `pyaml` is part of URL
|
||||
addFilter(r'^rubygem-psych.x86_64: E: spelling-error \(\'pyyaml\'')
|
||||
# `de-` is actually prefix
|
||||
addFilter(r'^rubygem-psych.x86_64: E: spelling-error \(\'de\'')
|
||||
|
||||
# It does not seemt to be worth of changing rubygems to archful package due to
|
||||
# single directory, unless it causes some real troubles.
|
||||
addFilter(r'^rubygems.noarch: E: noarch-with-lib64$')
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ module RubyGemsReq
|
|||
end
|
||||
|
||||
# Report conflicting gem dependencies including their version.
|
||||
def self.gem_depenencies(specification)
|
||||
def self.gem_dependencies(specification)
|
||||
specification.runtime_dependencies.each do |dependency|
|
||||
conflict_strings = Helpers::requirement_versions_to_rpm(dependency.requirement).map do |requirement|
|
||||
requirement_string = "rubygem(#{dependency.name}) #{requirement}"
|
||||
|
|
@ -39,7 +39,7 @@ module RubyGemsReq
|
|||
begin
|
||||
specification = Gem::Specification.load filename
|
||||
|
||||
gem_depenencies(specification)
|
||||
gem_dependencies(specification)
|
||||
rescue => e
|
||||
# Ignore all errors.
|
||||
end
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ module RubyGemsReq
|
|||
end
|
||||
|
||||
# Report all gem dependencies including their version.
|
||||
def self.gem_depenencies(specification)
|
||||
def self.gem_dependencies(specification)
|
||||
specification.runtime_dependencies.each do |dependency|
|
||||
dependency_name = "rubygem(#{dependency.name})"
|
||||
requirements = Helpers::requirement_versions_to_rpm(dependency.requirement)
|
||||
|
|
@ -75,7 +75,7 @@ module RubyGemsReq
|
|||
specification = Gem::Specification.load filename
|
||||
|
||||
rubygems_dependency(specification)
|
||||
gem_depenencies(specification)
|
||||
gem_dependencies(specification)
|
||||
rescue => e
|
||||
# Ignore all errors.
|
||||
end
|
||||
|
|
|
|||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
SHA512 (ruby-3.1.2.tar.xz) = 4a74e9efc6ea4b3eff4fec7534eb1fff4794d021531defc2e9937e53c6668db8ecdc0fff2bc23d5e6602d0df344a2caa85b31c5414309541e3d5313ec82b6e21
|
||||
SHA512 (ruby-4.0.1.tar.xz) = b67d9d1f97ba30200d103f8454e39dc2d0450819d51d91eb5451d44b0bafc56d2fa48bb1be6c5081babe5828f679984bad02b9bcee7441f6bd34c0a95b8f200b
|
||||
|
|
|
|||
34
test_openssl_fips.rb
Normal file
34
test_openssl_fips.rb
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
require 'openssl'
|
||||
|
||||
# Run openssl tests in OpenSSL FIPS. See the link below for how to test.
|
||||
# https://github.com/ruby/openssl/blob/master/.github/workflows/test.yml
|
||||
# - step name: test on fips module
|
||||
|
||||
# Listing the testing files by an array explicitly rather than the `Dir.glob`
|
||||
# to prevent the test files from not loading unintentionally.
|
||||
TEST_FILES = %w[
|
||||
test/openssl/test_fips.rb
|
||||
test/openssl/test_pkey.rb
|
||||
].freeze
|
||||
|
||||
if ARGV.empty?
|
||||
puts 'ERROR: Argument base_dir required.'
|
||||
puts "Usage: #{__FILE__} base_dir [options]"
|
||||
exit false
|
||||
end
|
||||
BASE_DIR = ARGV[0]
|
||||
abs_test_files = TEST_FILES.map { |file| File.join(BASE_DIR, file) }
|
||||
|
||||
# Set Fedora/RHEL downstream OpenSSL downstream environment variable to enable
|
||||
# FIPS module in non-FIPS OS environment. It is available in Fedora 38 or later
|
||||
# versions.
|
||||
# https://src.fedoraproject.org/rpms/openssl/blob/rawhide/f/0009-Add-Kernel-FIPS-mode-flag-support.patch
|
||||
ENV['OPENSSL_FORCE_FIPS_MODE'] = '1'
|
||||
# A flag to tell the tests the current environment is FIPS enabled.
|
||||
# https://github.com/ruby/openssl/blob/master/test/openssl/test_fips.rb
|
||||
ENV['TEST_RUBY_OPENSSL_FIPS_ENABLED'] = 'true'
|
||||
|
||||
abs_test_files.each do |file|
|
||||
puts "INFO: Loading #{file}."
|
||||
require file
|
||||
end
|
||||
124
test_rubygems_con.rb
Normal file
124
test_rubygems_con.rb
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'test/unit'
|
||||
require 'rpm_test_helper'
|
||||
|
||||
class TestRubyGemsCon < Test::Unit::TestCase
|
||||
include RPMTestHelper
|
||||
|
||||
def test_filter_out_regular_requirements
|
||||
gem_i = GemInfo.new
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(0, lines.size)
|
||||
|
||||
deps = [ Dependency.new('bar') ]
|
||||
gem_i.dependencies = deps
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(0, lines.size)
|
||||
|
||||
deps = [
|
||||
Dependency.new('bar'),
|
||||
Dependency.new('baq'),
|
||||
Dependency.new('quz')
|
||||
]
|
||||
|
||||
gem_i.dependencies = deps
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(0, lines.size)
|
||||
|
||||
deps = [
|
||||
Dependency.new('bar', ['>= 4.1']),
|
||||
Dependency.new('baz', ['~> 3.2']),
|
||||
Dependency.new('quz', ['>= 5.6'])
|
||||
]
|
||||
|
||||
gem_i.dependencies = deps
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(0, lines.size)
|
||||
end
|
||||
|
||||
def test_single_gem_single_version_conflict
|
||||
con = Dependency.new('bar', ['!= 0.4.4'])
|
||||
|
||||
gem_i = GemInfo.new(dependencies: [ con ])
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(1, lines.size)
|
||||
assert_equal("#{con.to_rpm_str} = 0.4.4\n", lines.first)
|
||||
end
|
||||
|
||||
def test_multiple_gems_with_single_conflict
|
||||
cons = [
|
||||
Dependency.new('bar', ['!= 1.1']),
|
||||
Dependency.new('baq', ['!= 1.2.2']),
|
||||
Dependency.new('quz', ['!= 1.3'])
|
||||
]
|
||||
|
||||
gem_i = GemInfo.new(dependencies: cons)
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(3, lines.size)
|
||||
|
||||
assert_equal("#{cons[0].to_rpm_str} = 1.1\n" , lines[0])
|
||||
assert_equal("#{cons[1].to_rpm_str} = 1.2.2\n", lines[1])
|
||||
assert_equal("#{cons[2].to_rpm_str} = 1.3\n" , lines[2])
|
||||
end
|
||||
|
||||
def test_multiple_conflicts_on_single_gem
|
||||
con = Dependency.new('bar', ['!= 2.3', '!= 2.4'])
|
||||
|
||||
gem_i = GemInfo.new(dependencies: [con])
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(1, lines.size)
|
||||
rpm_name = con.to_rpm_str
|
||||
left_rpm_constraint = "(#{rpm_name} = 2.3 with "
|
||||
right_rpm_constraint = "#{rpm_name} = 2.4)\n"
|
||||
assert_equal((left_rpm_constraint + right_rpm_constraint), lines[0])
|
||||
|
||||
con = Dependency.new('bar', ['!= 2.3', '!= 2.4', '!= 4.5'])
|
||||
|
||||
gem_i = GemInfo.new(dependencies: [ con ])
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(1, lines.size)
|
||||
|
||||
rpm_name = con.to_rpm_str
|
||||
left_rpm_constraint = "(#{rpm_name} = 2.3 with "
|
||||
middle_rpm_constraint = "#{rpm_name} = 2.4 with "
|
||||
right_rpm_constraint = "#{rpm_name} = 4.5)\n"
|
||||
|
||||
assert_equal((left_rpm_constraint + middle_rpm_constraint + right_rpm_constraint), lines[0])
|
||||
end
|
||||
|
||||
def test_generates_conflicts_while_ignoring_regular_requirements
|
||||
deps = [
|
||||
Dependency.new('bar', ['>= 2.3', '!= 2.4.2']),
|
||||
Dependency.new('quz', ['~> 3.0', '!= 3.2'])
|
||||
]
|
||||
|
||||
gem_i = GemInfo.new(dependencies: deps)
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(2, lines.size)
|
||||
|
||||
rpm_name = deps[0].to_rpm_str
|
||||
rpm_constraint = "#{rpm_name} = 2.4.2\n"
|
||||
assert_equal(rpm_constraint, lines[0])
|
||||
|
||||
rpm_name = deps[1].to_rpm_str
|
||||
rpm_constraint = "#{rpm_name} = 3.2\n"
|
||||
assert_equal(rpm_constraint, lines[1])
|
||||
end
|
||||
end
|
||||
52
test_rubygems_prov.rb
Normal file
52
test_rubygems_prov.rb
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'test/unit'
|
||||
require 'rpm_test_helper'
|
||||
|
||||
class TestRubyGemsProv < Test::Unit::TestCase
|
||||
include RPMTestHelper
|
||||
|
||||
def test_provides_the_gem_version
|
||||
gem_i = GemInfo.new(version: '1.2')
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(1, lines.size)
|
||||
assert_equal("#{gem_i.to_rpm_str} = #{gem_i.version}\n", lines.first)
|
||||
|
||||
gem_i = GemInfo.new(name: 'somegem_foo', version: '4.5.6')
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(1, lines.size)
|
||||
assert_equal("#{gem_i.to_rpm_str} = #{gem_i.version}\n", lines.first)
|
||||
|
||||
deps = [
|
||||
Dependency.new('bar'),
|
||||
Dependency.new('baq', [">= 1.2"]),
|
||||
Dependency.new('quz', ["!= 3.2"])
|
||||
]
|
||||
gem_i = GemInfo.new(dependencies: deps)
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(1, lines.size)
|
||||
assert_equal("#{gem_i.to_rpm_str} = #{gem_i.version}\n", lines.first)
|
||||
end
|
||||
|
||||
def test_translates_prelease_version_provides_from_rubygems_to_rpm
|
||||
gem_i = GemInfo.new(version: '1.2.3.dev')
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(1, lines.size)
|
||||
assert_equal("#{gem_i.to_rpm_str} = 1.2.3~dev\n", lines.first)
|
||||
|
||||
gem_i = GemInfo.new(name: 'foo2', version: '1.2.3.dev.2')
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(1, lines.size)
|
||||
assert_equal("#{gem_i.to_rpm_str} = 1.2.3~dev.2\n", lines.first)
|
||||
end
|
||||
end
|
||||
205
test_rubygems_req.rb
Normal file
205
test_rubygems_req.rb
Normal file
|
|
@ -0,0 +1,205 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'test/unit'
|
||||
require 'rpm_test_helper'
|
||||
|
||||
class TestRubyGemsReq < Test::Unit::TestCase
|
||||
include RPMTestHelper
|
||||
|
||||
def test_depends_on_rubygems
|
||||
gem_i = GemInfo.new
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(1, lines.size)
|
||||
assert_equal("#{helper_rubygems_dependency}\n", lines.first)
|
||||
end
|
||||
|
||||
def test_requires_rubygems_and_dependency
|
||||
dep = Dependency.new('bar')
|
||||
gem_i = GemInfo.new(dependencies: [dep])
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(2, lines.size)
|
||||
assert_equal("#{helper_rubygems_dependency}\n", lines.first)
|
||||
assert_equal("#{dep.to_rpm_str}\n", lines[1])
|
||||
end
|
||||
|
||||
def test_requires_multiple_dependencies_with_constraint
|
||||
constraints = [
|
||||
'>= 3.0',
|
||||
'>= 3.0.0',
|
||||
'>= 3',
|
||||
'= 1.0.2',
|
||||
'= 3.0',
|
||||
'< 3.2',
|
||||
'<= 3.4'
|
||||
]
|
||||
|
||||
dependencies = []
|
||||
constraints.each_with_index do |constraint, idx|
|
||||
dependencies << Dependency.new("bar#{idx}", [constraint])
|
||||
end
|
||||
|
||||
gem_i = GemInfo.new(dependencies: dependencies)
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
# + 1 for the rubygems dependency
|
||||
assert_equal(constraints.size + 1, lines.size)
|
||||
dependencies.each_with_index do |dep, idx|
|
||||
rpm_dep_name = dep.to_rpm_str
|
||||
# Start indexing lines at 1, to jump over rubygems dependency
|
||||
assert_equal("#{rpm_dep_name} #{constraints[idx]}\n", lines[idx + 1])
|
||||
end
|
||||
end
|
||||
|
||||
def test_expands_pessimistic_constraint_for_rpm
|
||||
dep = Dependency.new('bar', ['~> 1.2'])
|
||||
|
||||
gem_i = GemInfo.new(dependencies: [dep])
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(2, lines.size)
|
||||
|
||||
rpm_dep_name = dep.to_rpm_str
|
||||
left_constraint = "#{rpm_dep_name} >= 1.2"
|
||||
right_constraint = "#{rpm_dep_name} < 2"
|
||||
expected_constraint = "(#{left_constraint} with #{right_constraint})\n"
|
||||
assert_equal(expected_constraint, lines[1])
|
||||
end
|
||||
|
||||
def test_multiple_pessimistically_constrained_dependencies
|
||||
dependencies = []
|
||||
dep_map = [
|
||||
{
|
||||
constraint: '~> 1.2.3',
|
||||
expanded_left: '>= 1.2.3',
|
||||
expanded_rigth: '< 1.3',
|
||||
gem_name: 'bar1'
|
||||
},
|
||||
{
|
||||
constraint: '~> 1.2',
|
||||
expanded_left: '>= 1.2',
|
||||
expanded_rigth: '< 2',
|
||||
gem_name: 'bar2'
|
||||
},
|
||||
{
|
||||
constraint: '~> 3',
|
||||
expanded_left: '>= 3',
|
||||
expanded_rigth: '< 4',
|
||||
gem_name: 'bar3'
|
||||
}
|
||||
].each do |deps|
|
||||
dependencies << Dependency.new(deps[:gem_name], [deps[:constraint]])
|
||||
end
|
||||
|
||||
gem_i = GemInfo.new(dependencies: dependencies)
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(dep_map.size + 1, lines.size)
|
||||
|
||||
dep_map.each_with_index do |hash, idx|
|
||||
rpm_dep_name = dependencies[idx].to_rpm_str
|
||||
left_constraint = rpm_dep_name + ' ' + hash[:expanded_left]
|
||||
right_constraint = rpm_dep_name + ' ' + hash[:expanded_rigth]
|
||||
expected_constraint = "(#{left_constraint} with #{right_constraint})\n"
|
||||
assert_equal(expected_constraint, lines[idx + 1])
|
||||
end
|
||||
end
|
||||
|
||||
def test_multiple_constraints_on_one_dependency_composes_constraints_for_RPM
|
||||
# The quoting here depends on how the constraint is expanded in the helpers.
|
||||
# right now the form is `["#{constraint}"]`, therefore we have to not specify
|
||||
# left and right quotes.
|
||||
constraints = ['>= 0.2.3', '<= 0.2.5']
|
||||
dep = Dependency.new('baz', constraints)
|
||||
|
||||
gem_i = GemInfo.new(dependencies: [dep])
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(2, lines.size)
|
||||
rpm_dep_name = dep.to_rpm_str
|
||||
assert_equal("(#{rpm_dep_name} >= 0.2.3 with #{rpm_dep_name} <= 0.2.5)\n", lines[1])
|
||||
|
||||
# Not sure who would compose a dependency like this, but it's possible
|
||||
# to do with the current generator
|
||||
constraints = ['> 0.4.5', '< 0.6.4', '>= 2.3', '<= 2.5.3']
|
||||
dep = Dependency.new('qux', constraints)
|
||||
|
||||
gem_i = GemInfo.new(dependencies: [dep])
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
rpm_dep = dep.to_rpm_str
|
||||
expected_str = "(#{rpm_dep} > 0.4.5 with #{rpm_dep} < 0.6.4 with " \
|
||||
"#{rpm_dep} >= 2.3 with #{rpm_dep} <= 2.5.3)\n"
|
||||
|
||||
assert_equal(2, lines.size)
|
||||
assert_equal(expected_str, lines[1])
|
||||
end
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1561487
|
||||
def test_depends_on_gem_with_version_conflict
|
||||
dep = Dependency.new('baz', ['!= 0.4'])
|
||||
|
||||
gem_i = GemInfo.new(dependencies: [dep])
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(2, lines.size)
|
||||
assert_equal("#{dep.to_rpm_str}\n", lines[1])
|
||||
end
|
||||
|
||||
def test_filters_conflict_from_regular_version_constraints
|
||||
constraint = ['> 1.2.4', '!= 1.2.7']
|
||||
dep = Dependency.new('baq', constraint)
|
||||
|
||||
gem_i = GemInfo.new(dependencies: [dep])
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(2, lines.size)
|
||||
assert_equal("#{dep.to_rpm_str} > 1.2.4\n", lines[1])
|
||||
end
|
||||
|
||||
def test_filtering_conflicts_is_not_depending_on_contraint_ordering
|
||||
constraints = ['!= 1.2.7', '> 1.2.4']
|
||||
dep = Dependency.new('baq', constraints)
|
||||
|
||||
gem_i = GemInfo.new(dependencies: [dep])
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(2, lines.size)
|
||||
assert_equal("#{dep.to_rpm_str} > 1.2.4\n", lines[1])
|
||||
end
|
||||
|
||||
def test_filters_multiple_conflicts_from_dependency
|
||||
omit "Case not yet supported."
|
||||
constraints = ['!= 1.2.4', '!= 1.2.5', '!= 2.3', '!= 4.8']
|
||||
dep = Dependency.new('baf', constraints)
|
||||
|
||||
gem_i = GemInfo.new(dependencies: [dep])
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(2, lines.size)
|
||||
assert_equal("#{dep.to_rpm_str}\n", lines[1])
|
||||
end
|
||||
|
||||
def test_filters_multiple_conflicts_from_dependency_but_keeps_regular_constraint
|
||||
constraints = ['!= 1.2.4', '!= 1.2.5', '!= 2.3', '<= 4.8']
|
||||
dep = Dependency.new('bam', constraints)
|
||||
|
||||
gem_i = GemInfo.new(dependencies: [dep])
|
||||
|
||||
lines = run_generator_single_file(gem_i)
|
||||
|
||||
assert_equal(2, lines.size)
|
||||
assert_equal("#{dep.to_rpm_str} <= 4.8\n", lines[1])
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue