Compare commits
167 commits
stream-rub
...
rawhide
| 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 | ||
|
|
c2061af620 | ||
|
|
09d0e79c2b | ||
|
|
22d91a0910 | ||
|
|
796a198176 | ||
|
|
aee17a2180 | ||
|
|
df8cc89df4 | ||
|
|
9e774fba70 | ||
|
|
74983bcd56 | ||
|
|
67d5a7b3c6 | ||
|
|
204bab4f7f | ||
|
|
8157cd4820 | ||
|
|
1ff09bed2b | ||
|
|
b0ce095f6d | ||
|
|
a51a61214c | ||
|
|
2da7a540e7 | ||
|
|
a0bcb33eaa | ||
|
|
a28556f684 | ||
|
|
b6d9b2acd1 | ||
|
|
46ee70614f | ||
|
|
b24ebf5ec1 | ||
|
|
08a1249d7f | ||
|
|
5d3688479a | ||
|
|
dbe75d1cb5 | ||
|
|
d584a5bfb3 | ||
|
|
c4f8814a93 | ||
|
|
78a9fbc351 | ||
|
|
d75a6c86f9 | ||
|
|
11a27766bd | ||
|
|
1170d812fe | ||
|
|
089c0a1928 | ||
|
|
63065e7db7 | ||
|
|
6b2ff68f33 | ||
|
|
e6a3dff909 | ||
|
|
a09dbbec17 | ||
|
|
882d68b75c | ||
|
|
26bc979446 | ||
|
|
fbaee91204 | ||
|
|
1b641ac57f | ||
|
|
9e656cf658 | ||
|
|
fd8c8ee765 | ||
|
|
4108f57be7 | ||
|
|
b65d1d3090 | ||
|
|
303495d1bf | ||
|
|
dae90ef93d | ||
|
|
cb0039f53c | ||
|
|
9b149e59e4 | ||
|
|
2bc8b3d5d5 | ||
|
|
3210f66fb1 | ||
|
|
35f28c9a68 | ||
|
|
b7229da165 | ||
|
|
b3e2d7fc60 | ||
|
|
c7513cd67c | ||
|
|
cdeff9e00a | ||
|
|
1e72602218 | ||
|
|
0256efd992 | ||
|
|
64975231d1 | ||
|
|
f63d6e5cd4 | ||
|
|
0e7ccf2b47 | ||
|
|
071cbd0906 | ||
|
|
fcc584306b | ||
|
|
9a03f61609 | ||
|
|
15d70f8b4a | ||
|
|
f11a9b4fe3 |
35 changed files with 2557 additions and 1758 deletions
1
.fmf/version
Normal file
1
.fmf/version
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
1
|
||||||
6
.gitignore
vendored
6
.gitignore
vendored
|
|
@ -1,4 +1,6 @@
|
||||||
/*/
|
/*/
|
||||||
/ruby-2.*.tar.bz2
|
/ruby-*.tar.xz
|
||||||
/ruby-2.*.tar.xz
|
/rexml-*.gem
|
||||||
/*.rpm
|
/*.rpm
|
||||||
|
|
||||||
|
!/plans/
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,55 @@
|
||||||
%gem_dir %{_datadir}/gems
|
%gem_dir %{_datadir}/gems
|
||||||
%gem_archdir %{_libdir}/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.
|
# Common gem locations and files.
|
||||||
%gem_instdir %{gem_dir}/gems/%{gem_name}-%{version}%{?prerelease}
|
#
|
||||||
%gem_extdir_mri %{gem_archdir}/%{name}/%{gem_name}-%{version}%{?prerelease}
|
# These macros leverages %gem_name_version macro and accepts custom gem_name.
|
||||||
%gem_libdir %{gem_instdir}/lib
|
#
|
||||||
%gem_cache %{gem_dir}/cache/%{gem_name}-%{version}%{?prerelease}.gem
|
# -d Use default gem install location.
|
||||||
%gem_spec %{gem_dir}/specifications/%{gem_name}-%{version}%{?prerelease}.gemspec
|
#
|
||||||
%gem_docdir %{gem_dir}/doc/%{gem_name}-%{version}%{?prerelease}
|
%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.
|
# %gem_install - Install gem into appropriate directory.
|
||||||
|
|
@ -21,7 +63,7 @@
|
||||||
%gem_install(d:n:) \
|
%gem_install(d:n:) \
|
||||||
mkdir -p %{-d*}%{!?-d:.%{gem_dir}} \
|
mkdir -p %{-d*}%{!?-d:.%{gem_dir}} \
|
||||||
\
|
\
|
||||||
CONFIGURE_ARGS="--with-cflags='%{optflags}' --with-cxxflags='%{optflags}' $CONFIGURE_ARGS" \\\
|
CONFIGURE_ARGS="--with-cflags='%{optflags}' --with-cxxflags='%{optflags}' --with-ldflags='%{build_ldflags}' $CONFIGURE_ARGS" \\\
|
||||||
gem install \\\
|
gem install \\\
|
||||||
-V \\\
|
-V \\\
|
||||||
--local \\\
|
--local \\\
|
||||||
|
|
|
||||||
|
|
@ -87,34 +87,34 @@ module Gem
|
||||||
# Remove methods we are going to override. This avoids "method redefined;"
|
# Remove methods we are going to override. This avoids "method redefined;"
|
||||||
# warnings otherwise issued by Ruby.
|
# 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_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_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
|
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.
|
# RubyGems default overrides.
|
||||||
|
|
||||||
def default_dir
|
def default_dir
|
||||||
|
if opt_build_root?
|
||||||
Gem.default_dirs[:system][:gem_dir]
|
Gem.default_dirs[:system][:gem_dir]
|
||||||
|
elsif Process.uid == 0
|
||||||
|
Gem.default_dirs[:local][:gem_dir]
|
||||||
|
else
|
||||||
|
Gem.user_dir
|
||||||
end
|
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
|
def default_path
|
||||||
path = default_dirs.collect {|location, paths| paths[:gem_dir]}
|
path = default_dirs.collect {|location, paths| paths[:gem_dir]}
|
||||||
|
|
@ -122,6 +122,16 @@ module Gem
|
||||||
path
|
path
|
||||||
end
|
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
|
def default_ext_dir_for base_dir
|
||||||
dir = if rpmbuild?
|
dir = if rpmbuild?
|
||||||
build_dir = base_dir.chomp Gem.default_dirs[:system][:gem_dir]
|
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
|
|
||||||
@@ -1930,7 +1930,7 @@ def configuration(srcdir)
|
|
||||||
SHELL = /bin/sh
|
|
||||||
|
|
||||||
# V=0 quiet, V=1 verbose. other values don't work.
|
|
||||||
-V = 0
|
|
||||||
+V = 1
|
|
||||||
Q1 = $(V:1=)
|
|
||||||
Q = $(Q1:0=@)
|
|
||||||
ECHO1 = $(V:1=@ #{CONFIG['NULLCMD']})
|
|
||||||
--
|
|
||||||
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>
|
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||||
Date: Tue, 1 Oct 2013 12:22:40 +0200
|
Date: Tue, 1 Oct 2013 12:22:40 +0200
|
||||||
Subject: [PATCH] Allow to configure libruby.so placement.
|
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(+)
|
1 file changed, 5 insertions(+)
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
diff --git a/configure.ac b/configure.ac
|
||||||
index d261ea57b5..3c13076b82 100644
|
index a64358fada..b3bdfad1eb 100644
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -3105,6 +3105,11 @@ AS_IF([test ${multiarch+set}], [
|
@@ -3556,6 +3556,11 @@ AS_IF([test ${multiarch+set}], [
|
||||||
])
|
])
|
||||||
|
|
||||||
archlibdir='${libdir}/${arch}'
|
archlibdir='${libdir}/${arch}'
|
||||||
|
|
@ -23,6 +23,3 @@ index d261ea57b5..3c13076b82 100644
|
||||||
sitearchlibdir='${libdir}/${sitearch}'
|
sitearchlibdir='${libdir}/${sitearch}'
|
||||||
archincludedir='${includedir}/${arch}'
|
archincludedir='${includedir}/${arch}'
|
||||||
sitearchincludedir='${includedir}/${sitearch}'
|
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>
|
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||||
Date: Fri, 8 Feb 2013 22:48:41 +0100
|
Date: Fri, 8 Feb 2013 22:48:41 +0100
|
||||||
Subject: [PATCH] Prevent duplicated paths when empty version string is
|
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(-)
|
3 files changed, 15 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
diff --git a/configure.ac b/configure.ac
|
||||||
index c42436c23d..d261ea57b5 100644
|
index 2bc5153141..a64358fada 100644
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -3743,7 +3743,8 @@ AS_CASE(["$ruby_version_dir_name"],
|
@@ -4472,7 +4472,8 @@ AS_CASE(["$ruby_version_dir_name"],
|
||||||
ruby_version_dir=/'${ruby_version_dir_name}'
|
ruby_version_dir=/'${ruby_version_dir_name}'
|
||||||
|
|
||||||
if test -z "${ruby_version_dir_name}"; then
|
if test -z "${ruby_version_dir_name}"; then
|
||||||
|
|
@ -25,7 +25,7 @@ index c42436c23d..d261ea57b5 100644
|
||||||
|
|
||||||
rubylibdir='${rubylibprefix}'${ruby_version_dir}
|
rubylibdir='${rubylibprefix}'${ruby_version_dir}
|
||||||
diff --git a/loadpath.c b/loadpath.c
|
diff --git a/loadpath.c b/loadpath.c
|
||||||
index 9160031..0d4d953 100644
|
index b8969e6998..bbfd4daa78 100644
|
||||||
--- a/loadpath.c
|
--- a/loadpath.c
|
||||||
+++ b/loadpath.c
|
+++ b/loadpath.c
|
||||||
@@ -65,21 +65,33 @@ const char ruby_initial_load_paths[] =
|
@@ -65,21 +65,33 @@ const char ruby_initial_load_paths[] =
|
||||||
|
|
@ -63,7 +63,7 @@ index 9160031..0d4d953 100644
|
||||||
|
|
||||||
RUBY_LIB "\0"
|
RUBY_LIB "\0"
|
||||||
diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb
|
diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb
|
||||||
index 07076d4..35e6c3c 100755
|
index db74115730..2b01796abf 100755
|
||||||
--- a/tool/mkconfig.rb
|
--- a/tool/mkconfig.rb
|
||||||
+++ b/tool/mkconfig.rb
|
+++ b/tool/mkconfig.rb
|
||||||
@@ -114,7 +114,7 @@
|
@@ -114,7 +114,7 @@
|
||||||
|
|
@ -75,6 +75,3 @@ index 07076d4..35e6c3c 100755
|
||||||
when /^ARCH_FLAG$/
|
when /^ARCH_FLAG$/
|
||||||
val = "arch_flag || #{val}" if universal
|
val = "arch_flag || #{val}" if universal
|
||||||
when /^UNIVERSAL_ARCHNAMES$/
|
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>
|
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||||
Date: Mon, 19 Nov 2012 14:37:28 +0100
|
Date: Mon, 19 Nov 2012 14:37:28 +0100
|
||||||
Subject: [PATCH] Always use i386.
|
Subject: [PATCH] Always use i386.
|
||||||
|
|
@ -8,10 +8,10 @@ Subject: [PATCH] Always use i386.
|
||||||
1 file changed, 2 insertions(+)
|
1 file changed, 2 insertions(+)
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
diff --git a/configure.ac b/configure.ac
|
||||||
index 3c13076b82..93af30321d 100644
|
index b3bdfad1eb..411322a27f 100644
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -3807,6 +3807,8 @@ AC_SUBST(vendorarchdir)dnl
|
@@ -4536,6 +4536,8 @@ AC_SUBST(vendorarchdir)dnl
|
||||||
AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl
|
AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl
|
||||||
AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")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 ], [
|
AS_IF([test "${universal_binary-no}" = yes ], [
|
||||||
arch="universal-${target_os}"
|
arch="universal-${target_os}"
|
||||||
AS_IF([test "${rb_cv_architecture_available}" = yes], [
|
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>
|
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||||
Date: Fri, 11 Nov 2011 13:14:45 +0100
|
Date: Fri, 11 Nov 2011 13:14:45 +0100
|
||||||
Subject: [PATCH] Allow to install RubyGems into custom location, outside of
|
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(+)
|
4 files changed, 22 insertions(+)
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
diff --git a/configure.ac b/configure.ac
|
||||||
index 93af30321d..bc13397e0e 100644
|
index 411322a27f..b5f842a512 100644
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -3779,6 +3779,10 @@ AC_ARG_WITH(vendorarchdir,
|
@@ -4508,6 +4508,10 @@ AC_ARG_WITH(vendorarchdir,
|
||||||
[vendorarchdir=$withval],
|
[vendorarchdir=$withval],
|
||||||
[vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby'${ruby_version_dir}}${multiarch-'${vendorlibdir}/${sitearch}'}])
|
[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}"], [
|
AS_IF([test "${LOAD_RELATIVE+set}"], [
|
||||||
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
|
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
|
||||||
RUBY_EXEC_PREFIX=''
|
RUBY_EXEC_PREFIX=''
|
||||||
@@ -3803,6 +3807,7 @@ AC_SUBST(sitearchdir)dnl
|
@@ -4532,6 +4536,7 @@ AC_SUBST(sitearchdir)dnl
|
||||||
AC_SUBST(vendordir)dnl
|
AC_SUBST(vendordir)dnl
|
||||||
AC_SUBST(vendorlibdir)dnl
|
AC_SUBST(vendorlibdir)dnl
|
||||||
AC_SUBST(vendorarchdir)dnl
|
AC_SUBST(vendorarchdir)dnl
|
||||||
|
|
@ -35,7 +35,7 @@ index 93af30321d..bc13397e0e 100644
|
||||||
AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl
|
AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl
|
||||||
AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl
|
AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl
|
||||||
diff --git a/loadpath.c b/loadpath.c
|
diff --git a/loadpath.c b/loadpath.c
|
||||||
index 623dc9d..74c5d9e 100644
|
index bbfd4daa78..69677a9297 100644
|
||||||
--- a/loadpath.c
|
--- a/loadpath.c
|
||||||
+++ b/loadpath.c
|
+++ b/loadpath.c
|
||||||
@@ -94,6 +94,10 @@ const char ruby_initial_load_paths[] =
|
@@ -94,6 +94,10 @@ const char ruby_initial_load_paths[] =
|
||||||
|
|
@ -50,7 +50,7 @@ index 623dc9d..74c5d9e 100644
|
||||||
#ifdef RUBY_THINARCH
|
#ifdef RUBY_THINARCH
|
||||||
RUBY_ARCH_LIB_FOR(RUBY_THINARCH) "\0"
|
RUBY_ARCH_LIB_FOR(RUBY_THINARCH) "\0"
|
||||||
diff --git a/template/verconf.h.tmpl b/template/verconf.h.tmpl
|
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
|
--- a/template/verconf.h.tmpl
|
||||||
+++ b/template/verconf.h.tmpl
|
+++ b/template/verconf.h.tmpl
|
||||||
@@ -36,6 +36,9 @@
|
@@ -36,6 +36,9 @@
|
||||||
|
|
@ -64,10 +64,10 @@ index 79c003e..34f2382 100644
|
||||||
% R = {}
|
% R = {}
|
||||||
% R["ruby_version"] = '"RUBY_LIB_VERSION"'
|
% R["ruby_version"] = '"RUBY_LIB_VERSION"'
|
||||||
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
|
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
|
||||||
index b47b6e1..0b99408 100755
|
index a9e6365b27..7117e65e82 100755
|
||||||
--- a/tool/rbinstall.rb
|
--- a/tool/rbinstall.rb
|
||||||
+++ b/tool/rbinstall.rb
|
+++ b/tool/rbinstall.rb
|
||||||
@@ -343,6 +343,7 @@ def CONFIG.[](name, mandatory = false)
|
@@ -393,6 +393,7 @@ def CONFIG.[](name, mandatory = false)
|
||||||
vendorlibdir = CONFIG["vendorlibdir"]
|
vendorlibdir = CONFIG["vendorlibdir"]
|
||||||
vendorarchlibdir = CONFIG["vendorarchdir"]
|
vendorarchlibdir = CONFIG["vendorarchdir"]
|
||||||
end
|
end
|
||||||
|
|
@ -75,7 +75,7 @@ index b47b6e1..0b99408 100755
|
||||||
mandir = CONFIG["mandir", true]
|
mandir = CONFIG["mandir", true]
|
||||||
docdir = CONFIG["docdir", true]
|
docdir = CONFIG["docdir", true]
|
||||||
enable_shared = CONFIG["ENABLE_SHARED"] == 'yes'
|
enable_shared = CONFIG["ENABLE_SHARED"] == 'yes'
|
||||||
@@ -570,7 +571,16 @@ def stub
|
@@ -1082,7 +1083,16 @@ def (bins = []).add(name)
|
||||||
install?(:local, :comm, :lib) do
|
install?(:local, :comm, :lib) do
|
||||||
prepare "library scripts", rubylibdir
|
prepare "library scripts", rubylibdir
|
||||||
noinst = %w[*.txt *.rdoc *.gemspec]
|
noinst = %w[*.txt *.rdoc *.gemspec]
|
||||||
|
|
@ -92,6 +92,3 @@ index b47b6e1..0b99408 100755
|
||||||
end
|
end
|
||||||
|
|
||||||
install?(:local, :comm, :hdr, :'comm-hdr') do
|
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>
|
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||||
Date: Tue, 31 Mar 2015 16:21:04 +0200
|
Date: Tue, 31 Mar 2015 16:21:04 +0200
|
||||||
Subject: [PATCH 1/4] Use ruby_version_dir_name for versioned directories.
|
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
|
directories, e.g. instead of default X.Y.Z, you can specify whatever
|
||||||
string.
|
string.
|
||||||
---
|
---
|
||||||
configure.ac | 64 ++++++++++++++++++++++++---------------------
|
configure.ac | 66 ++++++++++++++++++++++++---------------------
|
||||||
template/ruby.pc.in | 1 +
|
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
|
diff --git a/configure.ac b/configure.ac
|
||||||
index 80b137e380..63cd3b4f8b 100644
|
index 2bbce78fd0..9d8662369c 100644
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -3694,9 +3694,6 @@ AS_CASE(["$target_os"],
|
@@ -4422,9 +4422,6 @@ AS_CASE(["$target_os"],
|
||||||
rubyw_install_name='$(RUBYW_INSTALL_NAME)'
|
rubyw_install_name='$(RUBYW_INSTALL_NAME)'
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
@ -30,7 +30,7 @@ index 80b137e380..63cd3b4f8b 100644
|
||||||
rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'}
|
rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'}
|
||||||
AC_ARG_WITH(rubyarchprefix,
|
AC_ARG_WITH(rubyarchprefix,
|
||||||
AS_HELP_STRING([--with-rubyarchprefix=DIR],
|
AS_HELP_STRING([--with-rubyarchprefix=DIR],
|
||||||
@@ -3719,56 +3716,62 @@ AC_ARG_WITH(ridir,
|
@@ -4447,57 +4444,63 @@ AC_ARG_WITH(ridir,
|
||||||
AC_SUBST(ridir)
|
AC_SUBST(ridir)
|
||||||
AC_SUBST(RI_BASE_NAME)
|
AC_SUBST(RI_BASE_NAME)
|
||||||
|
|
||||||
|
|
@ -46,6 +46,7 @@ index 80b137e380..63cd3b4f8b 100644
|
||||||
-AS_IF([test ${RUBY_LIB_VERSION_STYLE+set}], [
|
-AS_IF([test ${RUBY_LIB_VERSION_STYLE+set}], [
|
||||||
- {
|
- {
|
||||||
- echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE"
|
- echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE"
|
||||||
|
- echo '@%:@include "confdefs.h"'
|
||||||
- echo '#define STRINGIZE(x) x'
|
- echo '#define STRINGIZE(x) x'
|
||||||
- test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0'
|
- test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0'
|
||||||
- echo '#include "version.h"'
|
- echo '#include "version.h"'
|
||||||
|
|
@ -61,6 +62,7 @@ index 80b137e380..63cd3b4f8b 100644
|
||||||
+RUBY_LIB_VERSION_STYLE='3 /* full */'
|
+RUBY_LIB_VERSION_STYLE='3 /* full */'
|
||||||
+{
|
+{
|
||||||
+echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE"
|
+echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE"
|
||||||
|
+echo '@%:@include "confdefs.h"'
|
||||||
+echo '#define STRINGIZE(x) x'
|
+echo '#define STRINGIZE(x) x'
|
||||||
+test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0'
|
+test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0'
|
||||||
+echo '#include "version.h"'
|
+echo '#include "version.h"'
|
||||||
|
|
@ -120,7 +122,7 @@ index 80b137e380..63cd3b4f8b 100644
|
||||||
|
|
||||||
AS_IF([test "${LOAD_RELATIVE+set}"], [
|
AS_IF([test "${LOAD_RELATIVE+set}"], [
|
||||||
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
|
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
|
||||||
@@ -3785,6 +3788,7 @@ AC_SUBST(sitearchincludedir)dnl
|
@@ -4514,6 +4517,7 @@ AC_SUBST(sitearchincludedir)dnl
|
||||||
AC_SUBST(arch)dnl
|
AC_SUBST(arch)dnl
|
||||||
AC_SUBST(sitearch)dnl
|
AC_SUBST(sitearch)dnl
|
||||||
AC_SUBST(ruby_version)dnl
|
AC_SUBST(ruby_version)dnl
|
||||||
|
|
@ -129,49 +131,32 @@ index 80b137e380..63cd3b4f8b 100644
|
||||||
AC_SUBST(rubyarchdir)dnl
|
AC_SUBST(rubyarchdir)dnl
|
||||||
AC_SUBST(sitedir)dnl
|
AC_SUBST(sitedir)dnl
|
||||||
diff --git a/template/ruby.pc.in b/template/ruby.pc.in
|
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
|
--- a/template/ruby.pc.in
|
||||||
+++ b/template/ruby.pc.in
|
+++ b/template/ruby.pc.in
|
||||||
@@ -9,6 +9,7 @@ MAJOR=@MAJOR@
|
@@ -2,6 +2,7 @@ MAJOR=@MAJOR@
|
||||||
MINOR=@MINOR@
|
MINOR=@MINOR@
|
||||||
TEENY=@TEENY@
|
TEENY=@TEENY@
|
||||||
ruby_version=@ruby_version@
|
ruby_version=@ruby_version@
|
||||||
+ruby_version_dir_name=@ruby_version_dir_name@
|
+ruby_version_dir_name=@ruby_version_dir_name@
|
||||||
RUBY_API_VERSION=@RUBY_API_VERSION@
|
RUBY_API_VERSION=@RUBY_API_VERSION@
|
||||||
RUBY_PROGRAM_VERSION=@RUBY_PROGRAM_VERSION@
|
RUBY_PROGRAM_VERSION=@RUBY_PROGRAM_VERSION@
|
||||||
RUBY_BASE_NAME=@RUBY_BASE_NAME@
|
arch=@arch@
|
||||||
--
|
|
||||||
2.1.0
|
|
||||||
|
|
||||||
|
From baff562149499973123d2187620201be641c6538 Mon Sep 17 00:00:00 2001
|
||||||
From 518850aba6eee76de7715aae8d37330e34b01983 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||||
Date: Tue, 31 Mar 2015 16:37:26 +0200
|
Date: Tue, 31 Mar 2015 16:37:26 +0200
|
||||||
Subject: [PATCH 2/4] Add ruby_version_dir_name support for RDoc.
|
Subject: [PATCH 2/4] Add ruby_version_dir_name support for RDoc.
|
||||||
|
|
||||||
---
|
---
|
||||||
lib/rdoc/ri/paths.rb | 2 +-
|
|
||||||
tool/rbinstall.rb | 2 +-
|
tool/rbinstall.rb | 2 +-
|
||||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
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 = if RbConfig::CONFIG.key? 'ridir' then
|
|
||||||
File.join RbConfig::CONFIG['ridir'], version
|
|
||||||
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
|
diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
|
||||||
index d4c110e..d39c9a6 100755
|
index 874c3ef1d9..a9e6365b27 100755
|
||||||
--- a/tool/rbinstall.rb
|
--- a/tool/rbinstall.rb
|
||||||
+++ b/tool/rbinstall.rb
|
+++ b/tool/rbinstall.rb
|
||||||
@@ -433,7 +433,7 @@ def CONFIG.[](name, mandatory = false)
|
@@ -1053,7 +1053,7 @@ def (bins = []).add(name)
|
||||||
|
|
||||||
install?(:doc, :rdoc) do
|
install?(:doc, :rdoc) do
|
||||||
if $rdocdir
|
if $rdocdir
|
||||||
|
|
@ -180,87 +165,74 @@ index d4c110e..d39c9a6 100755
|
||||||
prepare "rdoc", ridatadir
|
prepare "rdoc", ridatadir
|
||||||
install_recursive($rdocdir, ridatadir, :no_install => rdoc_noinst, :mode => $data_mode)
|
install_recursive($rdocdir, ridatadir, :no_install => rdoc_noinst, :mode => $data_mode)
|
||||||
end
|
end
|
||||||
--
|
|
||||||
2.23.0
|
|
||||||
|
|
||||||
|
From 7cf872a9a34f38d71cd2ca04ac114b4ea85cc56c Mon Sep 17 00:00:00 2001
|
||||||
From 9f0ec0233f618cbb862629816b22491c3df79578 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||||
Date: Tue, 31 Mar 2015 16:37:44 +0200
|
Date: Tue, 31 Mar 2015 16:37:44 +0200
|
||||||
Subject: [PATCH 3/4] Add ruby_version_dir_name support for RubyGems.
|
Subject: [PATCH 3/4] Add ruby_version_dir_name support for RubyGems.
|
||||||
|
|
||||||
---
|
---
|
||||||
lib/rubygems/defaults.rb | 9 +++++----
|
lib/rubygems/defaults.rb | 7 ++++---
|
||||||
test/rubygems/test_gem.rb | 5 +++--
|
test/rubygems/test_gem.rb | 5 +++--
|
||||||
2 files changed, 8 insertions(+), 6 deletions(-)
|
2 files changed, 7 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb
|
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
|
--- a/lib/rubygems/defaults.rb
|
||||||
+++ b/lib/rubygems/defaults.rb
|
+++ b/lib/rubygems/defaults.rb
|
||||||
@@ -32,13 +32,13 @@ def self.default_dir
|
@@ -35,7 +35,7 @@ def self.default_spec_cache_dir
|
||||||
[
|
# specified in the environment
|
||||||
File.dirname(RbConfig::CONFIG['sitedir']),
|
|
||||||
'Gems',
|
def self.default_dir
|
||||||
- RbConfig::CONFIG['ruby_version']
|
- @default_dir ||= File.join(RbConfig::CONFIG["rubylibprefix"], "gems", RbConfig::CONFIG["ruby_version"])
|
||||||
+ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
|
+ @default_dir ||= File.join(RbConfig::CONFIG["rubylibprefix"], "gems", RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"])
|
||||||
]
|
|
||||||
else
|
|
||||||
[
|
|
||||||
RbConfig::CONFIG['rubylibprefix'],
|
|
||||||
'gems',
|
|
||||||
- RbConfig::CONFIG['ruby_version']
|
|
||||||
+ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
|
|
||||||
]
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -75,7 +75,8 @@ def self.default_specifications_dir
|
##
|
||||||
|
@@ -104,7 +104,8 @@ def self.user_dir
|
||||||
def self.user_dir
|
gem_dir = File.join(Gem.user_home, ".gem")
|
||||||
parts = [Gem.user_home, '.gem', ruby_engine]
|
gem_dir = File.join(Gem.data_home, "gem") unless File.exist?(gem_dir)
|
||||||
- parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty?
|
parts = [gem_dir, ruby_engine]
|
||||||
+ 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?
|
+ parts << ruby_version_dir_name unless ruby_version_dir_name.empty?
|
||||||
File.join parts
|
File.join parts
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -158,7 +159,7 @@ def self.vendor_dir # :nodoc:
|
@@ -265,7 +266,7 @@ def self.vendor_dir # :nodoc:
|
||||||
return nil unless RbConfig::CONFIG.key? 'vendordir'
|
return nil unless RbConfig::CONFIG.key? "vendordir"
|
||||||
|
|
||||||
File.join RbConfig::CONFIG['vendordir'], 'gems',
|
File.join RbConfig::CONFIG["vendordir"], "gems",
|
||||||
- RbConfig::CONFIG['ruby_version']
|
- RbConfig::CONFIG["ruby_version"]
|
||||||
+ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
|
+ RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"]
|
||||||
end
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb
|
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
|
--- a/test/rubygems/test_gem.rb
|
||||||
+++ b/test/rubygems/test_gem.rb
|
+++ b/test/rubygems/test_gem.rb
|
||||||
@@ -1378,7 +1378,8 @@ def test_self_use_paths
|
@@ -1339,7 +1339,8 @@ def test_self_use_paths
|
||||||
|
|
||||||
def test_self_user_dir
|
def test_self_user_dir
|
||||||
parts = [@userhome, '.gem', Gem.ruby_engine]
|
parts = [@userhome, ".gem", Gem.ruby_engine]
|
||||||
- parts << RbConfig::CONFIG['ruby_version'] unless RbConfig::CONFIG['ruby_version'].empty?
|
- 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']
|
+ 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?
|
+ parts << ruby_version_dir_name unless ruby_version_dir_name.empty?
|
||||||
|
|
||||||
assert_equal File.join(parts), Gem.user_dir
|
FileUtils.mkdir_p File.join(parts)
|
||||||
end
|
|
||||||
@@ -1454,7 +1455,7 @@ def test_self_vendor_dir
|
@@ -1415,7 +1416,7 @@ def test_self_vendor_dir
|
||||||
vendordir(File.join(@tempdir, 'vendor')) do
|
vendordir(File.join(@tempdir, "vendor")) do
|
||||||
expected =
|
expected =
|
||||||
File.join RbConfig::CONFIG['vendordir'], 'gems',
|
File.join RbConfig::CONFIG["vendordir"], "gems",
|
||||||
- RbConfig::CONFIG['ruby_version']
|
- RbConfig::CONFIG["ruby_version"]
|
||||||
+ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
|
+ RbConfig::CONFIG["ruby_version_dir_name"] || RbConfig::CONFIG["ruby_version"]
|
||||||
|
|
||||||
assert_equal expected, Gem.vendor_dir
|
assert_equal expected, Gem.vendor_dir
|
||||||
end
|
end
|
||||||
--
|
|
||||||
2.1.0
|
|
||||||
|
|
||||||
|
From 17cb98b7b78f8bfc511feffbe061747f676055b1 Mon Sep 17 00:00:00 2001
|
||||||
From 88c38a030c22dbf9422ece847bdfbf87d6659313 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||||
Date: Wed, 1 Apr 2015 14:55:37 +0200
|
Date: Wed, 1 Apr 2015 14:55:37 +0200
|
||||||
Subject: [PATCH 4/4] Let headers directories follow the configured version
|
Subject: [PATCH 4/4] Let headers directories follow the configured version
|
||||||
|
|
@ -271,18 +243,15 @@ Subject: [PATCH 4/4] Let headers directories follow the configured version
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
diff --git a/configure.ac b/configure.ac
|
diff --git a/configure.ac b/configure.ac
|
||||||
index a00f2b6776..999e2d6d5d 100644
|
index 9d8662369c..2bc5153141 100644
|
||||||
--- a/configure.ac
|
--- a/configure.ac
|
||||||
+++ b/configure.ac
|
+++ b/configure.ac
|
||||||
@@ -98,7 +98,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"`
|
RUBYW_BASE_NAME=`echo rubyw | sed "$program_transform_name"`
|
||||||
AC_SUBST(RUBY_BASE_NAME)
|
AC_SUBST(RUBY_BASE_NAME)
|
||||||
AC_SUBST(RUBYW_BASE_NAME)
|
AC_SUBST(RUBYW_BASE_NAME)
|
||||||
-AC_SUBST(RUBY_VERSION_NAME, '${RUBY_BASE_NAME}-${ruby_version}')
|
-AC_SUBST(RUBY_VERSION_NAME, '${RUBY_BASE_NAME}-${ruby_version}')
|
||||||
+AC_SUBST(RUBY_VERSION_NAME, '${RUBY_BASE_NAME}-${ruby_version_dir_name}')
|
+AC_SUBST(RUBY_VERSION_NAME, '${RUBY_BASE_NAME}-${ruby_version_dir_name}')
|
||||||
|
|
||||||
AC_CANONICAL_TARGET
|
dnl checks for alternative programs
|
||||||
test x"$target_alias" = x &&
|
AC_CANONICAL_BUILD
|
||||||
--
|
|
||||||
2.1.0
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,136 +0,0 @@
|
||||||
From 346e147ba6480839b87046e9a9efab0bf6ed3660 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
|
||||||
Date: Wed, 10 Aug 2016 17:35:48 +0200
|
|
||||||
Subject: [PATCH] Rely on ldd to detect glibc.
|
|
||||||
|
|
||||||
This is just workaround, since we know we are quite sure this will be successful
|
|
||||||
on Red Hat platforms.
|
|
||||||
|
|
||||||
This workaround rhbz#1361037
|
|
||||||
---
|
|
||||||
test/fiddle/helper.rb | 111 ------------------------------------------
|
|
||||||
1 file changed, 111 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/test/fiddle/helper.rb b/test/fiddle/helper.rb
|
|
||||||
index 1da3d93..65148a1 100644
|
|
||||||
--- a/test/fiddle/helper.rb
|
|
||||||
+++ b/test/fiddle/helper.rb
|
|
||||||
@@ -6,115 +6,6 @@
|
|
||||||
|
|
||||||
libc_so = libm_so = nil
|
|
||||||
|
|
||||||
-case RUBY_PLATFORM
|
|
||||||
-when /cygwin/
|
|
||||||
- libc_so = "cygwin1.dll"
|
|
||||||
- libm_so = "cygwin1.dll"
|
|
||||||
-when /android/
|
|
||||||
- libdir = '/system/lib'
|
|
||||||
- if [0].pack('L!').size == 8
|
|
||||||
- libdir = '/system/lib64'
|
|
||||||
- end
|
|
||||||
- libc_so = File.join(libdir, "libc.so")
|
|
||||||
- libm_so = File.join(libdir, "libm.so")
|
|
||||||
-when /linux/
|
|
||||||
- libdir = '/lib'
|
|
||||||
- case RbConfig::SIZEOF['void*']
|
|
||||||
- when 4
|
|
||||||
- # 32-bit ruby
|
|
||||||
- case RUBY_PLATFORM
|
|
||||||
- when /armv\w+-linux/
|
|
||||||
- # In the ARM 32-bit libc package such as libc6:armhf libc6:armel,
|
|
||||||
- # libc.so and libm.so are installed to /lib/arm-linux-gnu*.
|
|
||||||
- # It's not installed to /lib32.
|
|
||||||
- dirs = Dir.glob('/lib/arm-linux-gnu*')
|
|
||||||
- libdir = dirs[0] if dirs && File.directory?(dirs[0])
|
|
||||||
- else
|
|
||||||
- libdir = '/lib32' if File.directory? '/lib32'
|
|
||||||
- end
|
|
||||||
- when 8
|
|
||||||
- # 64-bit ruby
|
|
||||||
- libdir = '/lib64' if File.directory? '/lib64'
|
|
||||||
- end
|
|
||||||
- libc_so = File.join(libdir, "libc.so.6")
|
|
||||||
- libm_so = File.join(libdir, "libm.so.6")
|
|
||||||
-when /mingw/, /mswin/
|
|
||||||
- require "rbconfig"
|
|
||||||
- crtname = RbConfig::CONFIG["RUBY_SO_NAME"][/msvc\w+/] || 'ucrtbase'
|
|
||||||
- libc_so = libm_so = "#{crtname}.dll"
|
|
||||||
-when /darwin/
|
|
||||||
- libc_so = libm_so = "/usr/lib/libSystem.B.dylib"
|
|
||||||
-when /kfreebsd/
|
|
||||||
- libc_so = "/lib/libc.so.0.1"
|
|
||||||
- libm_so = "/lib/libm.so.1"
|
|
||||||
-when /gnu/ #GNU/Hurd
|
|
||||||
- libc_so = "/lib/libc.so.0.3"
|
|
||||||
- libm_so = "/lib/libm.so.6"
|
|
||||||
-when /mirbsd/
|
|
||||||
- libc_so = "/usr/lib/libc.so.41.10"
|
|
||||||
- libm_so = "/usr/lib/libm.so.7.0"
|
|
||||||
-when /freebsd/
|
|
||||||
- libc_so = "/lib/libc.so.7"
|
|
||||||
- libm_so = "/lib/libm.so.5"
|
|
||||||
-when /bsd|dragonfly/
|
|
||||||
- libc_so = "/usr/lib/libc.so"
|
|
||||||
- libm_so = "/usr/lib/libm.so"
|
|
||||||
-when /solaris/
|
|
||||||
- libdir = '/lib'
|
|
||||||
- case RbConfig::SIZEOF['void*']
|
|
||||||
- when 4
|
|
||||||
- # 32-bit ruby
|
|
||||||
- libdir = '/lib' if File.directory? '/lib'
|
|
||||||
- when 8
|
|
||||||
- # 64-bit ruby
|
|
||||||
- libdir = '/lib/64' if File.directory? '/lib/64'
|
|
||||||
- end
|
|
||||||
- libc_so = File.join(libdir, "libc.so")
|
|
||||||
- libm_so = File.join(libdir, "libm.so")
|
|
||||||
-when /aix/
|
|
||||||
- pwd=Dir.pwd
|
|
||||||
- libc_so = libm_so = "#{pwd}/libaixdltest.so"
|
|
||||||
- unless File.exist? libc_so
|
|
||||||
- cobjs=%w!strcpy.o!
|
|
||||||
- mobjs=%w!floats.o sin.o!
|
|
||||||
- funcs=%w!sin sinf strcpy strncpy!
|
|
||||||
- expfile='dltest.exp'
|
|
||||||
- require 'tmpdir'
|
|
||||||
- Dir.mktmpdir do |dir|
|
|
||||||
- begin
|
|
||||||
- Dir.chdir dir
|
|
||||||
- %x!/usr/bin/ar x /usr/lib/libc.a #{cobjs.join(' ')}!
|
|
||||||
- %x!/usr/bin/ar x /usr/lib/libm.a #{mobjs.join(' ')}!
|
|
||||||
- %x!echo "#{funcs.join("\n")}\n" > #{expfile}!
|
|
||||||
- require 'rbconfig'
|
|
||||||
- if RbConfig::CONFIG["GCC"] = 'yes'
|
|
||||||
- lflag='-Wl,'
|
|
||||||
- else
|
|
||||||
- lflag=''
|
|
||||||
- end
|
|
||||||
- flags="#{lflag}-bE:#{expfile} #{lflag}-bnoentry -lm"
|
|
||||||
- %x!#{RbConfig::CONFIG["LDSHARED"]} -o #{libc_so} #{(cobjs+mobjs).join(' ')} #{flags}!
|
|
||||||
- ensure
|
|
||||||
- Dir.chdir pwd
|
|
||||||
- end
|
|
||||||
- end
|
|
||||||
- end
|
|
||||||
-else
|
|
||||||
- libc_so = ARGV[0] if ARGV[0] && ARGV[0][0] == ?/
|
|
||||||
- libm_so = ARGV[1] if ARGV[1] && ARGV[1][0] == ?/
|
|
||||||
- if( !(libc_so && libm_so) )
|
|
||||||
- $stderr.puts("libc and libm not found: #{$0} <libc> <libm>")
|
|
||||||
- end
|
|
||||||
-end
|
|
||||||
-
|
|
||||||
-libc_so = nil if !libc_so || (libc_so[0] == ?/ && !File.file?(libc_so))
|
|
||||||
-libm_so = nil if !libm_so || (libm_so[0] == ?/ && !File.file?(libm_so))
|
|
||||||
-
|
|
||||||
-# macOS 11.0+ removed libSystem.B.dylib from /usr/lib. But It works with dlopen.
|
|
||||||
-if RUBY_PLATFORM =~ /darwin/
|
|
||||||
- libc_so = libm_so = "/usr/lib/libSystem.B.dylib"
|
|
||||||
-end
|
|
||||||
-
|
|
||||||
if !libc_so || !libm_so
|
|
||||||
ruby = EnvUtil.rubybin
|
|
||||||
# When the ruby binary is 32-bit and the host is 64-bit,
|
|
||||||
--
|
|
||||||
2.9.2
|
|
||||||
|
|
||||||
|
|
@ -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>
|
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||||
Date: Mon, 6 Jan 2020 13:56:04 +0100
|
Date: Mon, 6 Jan 2020 13:56:04 +0100
|
||||||
Subject: [PATCH] Initialize ABRT hook.
|
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
|
[4]: https://github.com/ruby/ruby/pull/2735
|
||||||
[5]: https://lists.fedoraproject.org/archives/list/ruby-sig@lists.fedoraproject.org/message/LH6L6YJOYQT4Y5ZNOO4SLIPTUWZ5V45Q/
|
[5]: https://lists.fedoraproject.org/archives/list/ruby-sig@lists.fedoraproject.org/message/LH6L6YJOYQT4Y5ZNOO4SLIPTUWZ5V45Q/
|
||||||
---
|
---
|
||||||
abrt.c | 12 ++++++++++++++
|
abrt.c | 12 ++++++++++++
|
||||||
common.mk | 3 ++-
|
common.mk | 1 +
|
||||||
ruby.c | 4 ++++
|
ruby.c | 4 ++++
|
||||||
3 files changed, 18 insertions(+), 1 deletion(-)
|
spec/ruby/core/kernel/require_spec.rb | 2 ++
|
||||||
|
4 files changed, 19 insertions(+)
|
||||||
create mode 100644 abrt.c
|
create mode 100644 abrt.c
|
||||||
|
|
||||||
diff --git a/abrt.c b/abrt.c
|
diff --git a/abrt.c b/abrt.c
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000..74b0bd5c0f
|
index 0000000000..e99cb432e6
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/abrt.c
|
+++ b/abrt.c
|
||||||
@@ -0,0 +1,12 @@
|
@@ -0,0 +1,12 @@
|
||||||
|
|
@ -40,24 +41,22 @@ index 0000000000..74b0bd5c0f
|
||||||
+ );
|
+ );
|
||||||
+}
|
+}
|
||||||
diff --git a/common.mk b/common.mk
|
diff --git a/common.mk b/common.mk
|
||||||
index b2e5b2b6d0..f39f81da5c 100644
|
index 08fee9119a..dae7d9dc00 100644
|
||||||
--- a/common.mk
|
--- a/common.mk
|
||||||
+++ b/common.mk
|
+++ b/common.mk
|
||||||
@@ -81,7 +81,8 @@ ENC_MK = enc.mk
|
@@ -116,6 +116,7 @@ PRISM_FILES = prism/api_node.$(OBJEXT) \
|
||||||
MAKE_ENC = -f $(ENC_MK) V="$(V)" UNICODE_HDR_DIR="$(UNICODE_HDR_DIR)" \
|
prism_init.$(OBJEXT)
|
||||||
RUBY="$(MINIRUBY)" MINIRUBY="$(MINIRUBY)" $(mflags)
|
|
||||||
|
|
||||||
-COMMONOBJS = array.$(OBJEXT) \
|
COMMONOBJS = \
|
||||||
+COMMONOBJS = abrt.$(OBJEXT) \
|
+ abrt.$(OBJEXT) \
|
||||||
+ array.$(OBJEXT) \
|
array.$(OBJEXT) \
|
||||||
ast.$(OBJEXT) \
|
ast.$(OBJEXT) \
|
||||||
bignum.$(OBJEXT) \
|
bignum.$(OBJEXT) \
|
||||||
class.$(OBJEXT) \
|
|
||||||
diff --git a/ruby.c b/ruby.c
|
diff --git a/ruby.c b/ruby.c
|
||||||
index 60c57d6259..1eec16f2c8 100644
|
index b00fc1502d..32b88f7496 100644
|
||||||
--- a/ruby.c
|
--- a/ruby.c
|
||||||
+++ b/ruby.c
|
+++ b/ruby.c
|
||||||
@@ -1451,10 +1451,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);
|
void Init_builtin_features(void);
|
||||||
|
|
||||||
|
|
@ -69,9 +68,19 @@ index 60c57d6259..1eec16f2c8 100644
|
||||||
{
|
{
|
||||||
Init_builtin_features();
|
Init_builtin_features();
|
||||||
+ Init_abrt();
|
+ Init_abrt();
|
||||||
rb_const_remove(rb_cObject, rb_intern_const("TMP_RUBY_PREFIX"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
--
|
void rb_call_builtin_inits(void);
|
||||||
2.24.1
|
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,32 +0,0 @@
|
||||||
From 6532dbecf36d1f24dab1f2143afd171e0b7699eb Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
|
||||||
Date: Wed, 4 Sep 2019 15:07:07 +0200
|
|
||||||
Subject: [PATCH] Remove RubyGems dependency.
|
|
||||||
|
|
||||||
Since `Process::RLIMIT_NOFILE` is platform specific, better to use Ruby
|
|
||||||
introspection than detecting platform.
|
|
||||||
---
|
|
||||||
.../vendor/net-http-persistent/lib/net/http/persistent.rb | 6 +++---
|
|
||||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb b/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb
|
|
||||||
index a54be2a..06739f1 100644
|
|
||||||
--- a/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb
|
|
||||||
+++ b/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb
|
|
||||||
@@ -197,10 +197,10 @@ class Bundler::Persistent::Net::HTTP::Persistent
|
|
||||||
##
|
|
||||||
# The default connection pool size is 1/4 the allowed open files.
|
|
||||||
|
|
||||||
- if Gem.win_platform? then
|
|
||||||
- DEFAULT_POOL_SIZE = 256
|
|
||||||
- else
|
|
||||||
+ if Process.const_defined? :RLIMIT_NOFILE
|
|
||||||
DEFAULT_POOL_SIZE = Process.getrlimit(Process::RLIMIT_NOFILE).first / 4
|
|
||||||
+ else
|
|
||||||
+ DEFAULT_POOL_SIZE = 256
|
|
||||||
end
|
|
||||||
|
|
||||||
##
|
|
||||||
--
|
|
||||||
2.23.0
|
|
||||||
|
|
||||||
|
|
@ -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
|
|
||||||
@@ -19,7 +19,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,22 +0,0 @@
|
||||||
From 0689147586c6cb56b91bf0f368890f19d630ece1 Mon Sep 17 00:00:00 2001
|
|
||||||
From: nobletrout <nobletrout@gmail.com>
|
|
||||||
Date: Tue, 5 Feb 2019 08:14:02 -0500
|
|
||||||
Subject: [PATCH] remove unneeded gem require for ipaddr
|
|
||||||
|
|
||||||
ipaddr is a builtin class for ruby, that is occasionally merged. If the version isn't specified by the runtime dependency, then it will default to needing the latest gem rather than the version that ships with that version of ruby. That will lead to all kinds of potential dependency fails that are most likely unneeded since this gem already requires ruby > 2.3.0
|
|
||||||
---
|
|
||||||
ext/openssl/openssl.gemspec | 1 -
|
|
||||||
1 file changed, 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/ext/openssl/openssl.gemspec b/ext/openssl/openssl.gemspec
|
|
||||||
index 7c17cd54..f721f247 100644
|
|
||||||
--- a/ext/openssl/openssl.gemspec
|
|
||||||
+++ b/ext/openssl/openssl.gemspec
|
|
||||||
@@ -21,7 +21,6 @@ Gem::Specification.new do |spec|
|
|
||||||
s.rubygems_version = "3.0.0.beta1"
|
|
||||||
s.summary = "OpenSSL provides SSL, TLS and general purpose cryptography."
|
|
||||||
|
|
||||||
- s.add_runtime_dependency("ipaddr", [">= 0"])
|
|
||||||
s.add_development_dependency("rake", [">= 0"])
|
|
||||||
s.add_development_dependency("rake-compiler", [">= 0"])
|
|
||||||
s.add_development_dependency("test-unit", ["~> 3.0"])
|
|
||||||
|
|
@ -1,178 +0,0 @@
|
||||||
From c5806d668f84a86e9e6a522f84b8aa6cb4cdaae9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ali Saidi <alisaidi@amazon.com>
|
|
||||||
Date: Wed, 5 Aug 2020 20:46:28 -0500
|
|
||||||
Subject: [PATCH 1/3] Enable unaligned accesses on arm64
|
|
||||||
|
|
||||||
64-bit Arm platforms support unaligned accesses.
|
|
||||||
|
|
||||||
Running the string benchmarks this change improves performance
|
|
||||||
by an average of 1.04x, min .96x, max 1.21x, median 1.01x
|
|
||||||
---
|
|
||||||
include/ruby/defines.h | 2 +-
|
|
||||||
regint.h | 2 +-
|
|
||||||
siphash.c | 2 +-
|
|
||||||
st.c | 2 +-
|
|
||||||
4 files changed, 4 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/include/ruby/defines.h b/include/ruby/defines.h
|
|
||||||
index 49f673ef936a..0193275e8b78 100644
|
|
||||||
--- a/include/ruby/defines.h
|
|
||||||
+++ b/include/ruby/defines.h
|
|
||||||
@@ -485,7 +485,7 @@
|
|
||||||
#ifndef UNALIGNED_WORD_ACCESS
|
|
||||||
# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
|
|
||||||
defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || \
|
|
||||||
- defined(__powerpc64__) || \
|
|
||||||
+ defined(__powerpc64__) || defined(__aarch64__) || \
|
|
||||||
defined(__mc68020__)
|
|
||||||
# define UNALIGNED_WORD_ACCESS 1
|
|
||||||
# else
|
|
||||||
diff --git a/regint.h b/regint.h
|
|
||||||
index a2f5bbba1d1f..0740429688bc 100644
|
|
||||||
--- a/regint.h
|
|
||||||
+++ b/regint.h
|
|
||||||
@@ -52,7 +52,7 @@
|
|
||||||
#ifndef UNALIGNED_WORD_ACCESS
|
|
||||||
# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
|
|
||||||
defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || \
|
|
||||||
- defined(__powerpc64__) || \
|
|
||||||
+ defined(__powerpc64__) || defined(__aarch64__) || \
|
|
||||||
defined(__mc68020__)
|
|
||||||
# define UNALIGNED_WORD_ACCESS 1
|
|
||||||
# else
|
|
||||||
diff --git a/siphash.c b/siphash.c
|
|
||||||
index 153d2c690ab9..ddf8ee245d81 100644
|
|
||||||
--- a/siphash.c
|
|
||||||
+++ b/siphash.c
|
|
||||||
@@ -30,7 +30,7 @@
|
|
||||||
#ifndef UNALIGNED_WORD_ACCESS
|
|
||||||
# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
|
|
||||||
defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || \
|
|
||||||
- defined(__powerpc64__) || \
|
|
||||||
+ defined(__powerpc64__) || defined(__aarch64__) || \
|
|
||||||
defined(__mc68020__)
|
|
||||||
# define UNALIGNED_WORD_ACCESS 1
|
|
||||||
# endif
|
|
||||||
diff --git a/st.c b/st.c
|
|
||||||
index c11535ef9779..8be466bf733f 100644
|
|
||||||
--- a/st.c
|
|
||||||
+++ b/st.c
|
|
||||||
@@ -1815,7 +1815,7 @@ st_values_check(st_table *tab, st_data_t *values, st_index_t size,
|
|
||||||
#ifndef UNALIGNED_WORD_ACCESS
|
|
||||||
# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
|
|
||||||
defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || \
|
|
||||||
- defined(__powerpc64__) || \
|
|
||||||
+ defined(__powerpc64__) || defined(__aarch64__) || \
|
|
||||||
defined(__mc68020__)
|
|
||||||
# define UNALIGNED_WORD_ACCESS 1
|
|
||||||
# endif
|
|
||||||
|
|
||||||
From 79b7b9143fda0f33fc9375980cecc61eb42c6f66 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ali Saidi <alisaidi@amazon.com>
|
|
||||||
Date: Wed, 5 Aug 2020 21:04:37 -0500
|
|
||||||
Subject: [PATCH 2/3] arm64 enable gc optimizations
|
|
||||||
|
|
||||||
Similar to x86 and powerpc optimizations.
|
|
||||||
|
|
||||||
| |compare-ruby|built-ruby|
|
|
||||||
|:------|-----------:|---------:|
|
|
||||||
|hash1 | 0.225| 0.237|
|
|
||||||
| | -| 1.05x|
|
|
||||||
|hash2 | 0.110| 0.110|
|
|
||||||
| | 1.00x| -|
|
|
||||||
---
|
|
||||||
gc.c | 13 +++++++++++++
|
|
||||||
gc.h | 2 ++
|
|
||||||
2 files changed, 15 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/gc.c b/gc.c
|
|
||||||
index 22972dfc806c..788f06f1586e 100644
|
|
||||||
--- a/gc.c
|
|
||||||
+++ b/gc.c
|
|
||||||
@@ -1153,6 +1153,19 @@ tick(void)
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
|
|
||||||
+#elif defined(__aarch64__) && defined(__GNUC__)
|
|
||||||
+typedef unsigned long tick_t;
|
|
||||||
+#define PRItick "lu"
|
|
||||||
+
|
|
||||||
+static __inline__ tick_t
|
|
||||||
+tick(void)
|
|
||||||
+{
|
|
||||||
+ unsigned long val;
|
|
||||||
+ __asm__ __volatile__ ("mrs %0, cntvct_el0", : "=r" (val));
|
|
||||||
+ return val;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+
|
|
||||||
#elif defined(_WIN32) && defined(_MSC_VER)
|
|
||||||
#include <intrin.h>
|
|
||||||
typedef unsigned __int64 tick_t;
|
|
||||||
diff --git a/gc.h b/gc.h
|
|
||||||
index 6568079c54e5..47a4ca19a0c5 100644
|
|
||||||
--- a/gc.h
|
|
||||||
+++ b/gc.h
|
|
||||||
@@ -8,6 +8,8 @@
|
|
||||||
#define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("movl\t%%esp, %0" : "=r" (*(p)))
|
|
||||||
#elif defined(__powerpc64__) && defined(__GNUC__)
|
|
||||||
#define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("mr\t%0, %%r1" : "=r" (*(p)))
|
|
||||||
+#elif defined(__aarch64__) && defined(__GNUC__)
|
|
||||||
+#define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("mov\t%0, sp" : "=r" (*(p)))
|
|
||||||
#else
|
|
||||||
NOINLINE(void rb_gc_set_stack_end(VALUE **stack_end_p));
|
|
||||||
#define SET_MACHINE_STACK_END(p) rb_gc_set_stack_end(p)
|
|
||||||
|
|
||||||
From c985b8c6868a380e44e285368af4a4f414ce3309 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Ali Saidi <alisaidi@amazon.com>
|
|
||||||
Date: Wed, 5 Aug 2020 21:15:55 -0500
|
|
||||||
Subject: [PATCH 3/3] vm_exec.c: improve performance for arm64
|
|
||||||
|
|
||||||
| |compare-ruby|built-ruby|
|
|
||||||
|:------------------------------|-----------:|---------:|
|
|
||||||
|vm_array | 26.501M| 27.959M|
|
|
||||||
| | -| 1.06x|
|
|
||||||
|vm_attr_ivar | 21.606M| 31.429M|
|
|
||||||
| | -| 1.45x|
|
|
||||||
|vm_attr_ivar_set | 21.178M| 26.113M|
|
|
||||||
| | -| 1.23x|
|
|
||||||
|vm_backtrace | 6.621| 6.668|
|
|
||||||
| | -| 1.01x|
|
|
||||||
|vm_bigarray | 26.205M| 29.958M|
|
|
||||||
| | -| 1.14x|
|
|
||||||
|vm_bighash | 504.155k| 479.306k|
|
|
||||||
| | 1.05x| -|
|
|
||||||
|vm_block | 16.692M| 21.315M|
|
|
||||||
| | -| 1.28x|
|
|
||||||
|block_handler_type_iseq | 5.083| 7.004|
|
|
||||||
| | -| 1.38x|
|
|
||||||
---
|
|
||||||
vm_exec.c | 8 ++++++++
|
|
||||||
1 file changed, 8 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/vm_exec.c b/vm_exec.c
|
|
||||||
index ce2e053ee745..7aa56f6ad620 100644
|
|
||||||
--- a/vm_exec.c
|
|
||||||
+++ b/vm_exec.c
|
|
||||||
@@ -27,6 +27,9 @@ static void vm_insns_counter_count_insn(int insn) {}
|
|
||||||
#elif defined(__GNUC__) && defined(__powerpc64__)
|
|
||||||
#define DECL_SC_REG(type, r, reg) register type reg_##r __asm__("r" reg)
|
|
||||||
|
|
||||||
+#elif defined(__GNUC__) && defined(__aarch64__)
|
|
||||||
+#define DECL_SC_REG(type, r, reg) register type reg_##r __asm__("x" reg)
|
|
||||||
+
|
|
||||||
#else
|
|
||||||
#define DECL_SC_REG(type, r, reg) register type reg_##r
|
|
||||||
#endif
|
|
||||||
@@ -74,6 +77,11 @@ vm_exec_core(rb_execution_context_t *ec, VALUE initial)
|
|
||||||
DECL_SC_REG(rb_control_frame_t *, cfp, "15");
|
|
||||||
#define USE_MACHINE_REGS 1
|
|
||||||
|
|
||||||
+#elif defined(__GNUC__) && defined(__aarch64__)
|
|
||||||
+ DECL_SC_REG(const VALUE *, pc, "19");
|
|
||||||
+ DECL_SC_REG(rb_control_frame_t *, cfp, "20");
|
|
||||||
+#define USE_MACHINE_REGS 1
|
|
||||||
+
|
|
||||||
#else
|
|
||||||
register rb_control_frame_t *reg_cfp;
|
|
||||||
const VALUE *reg_pc;
|
|
||||||
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@)
|
||||||
59
ruby.rpmlintrc
Normal file
59
ruby.rpmlintrc
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
# Keep matching patterns enough not to hide unintended errors and warnings.
|
||||||
|
|
||||||
|
# There is no way to implement this with `%{SOURCE0}` without `%{_sourcedir}`.
|
||||||
|
# The order in the .spec file could be possibly different.
|
||||||
|
addFilter(r'ruby\.(spec|src):20: E: use-of-RPM_SOURCE_DIR$')
|
||||||
|
|
||||||
|
# The used version is not obvious.
|
||||||
|
addFilter(r'ruby\.(spec|src):\d+: W: unversioned-explicit-provides bundled\(ccan-build_assert\)$')
|
||||||
|
addFilter(r'ruby\.(spec|src):\d+: W: unversioned-explicit-provides bundled\(ccan-check_type\)$')
|
||||||
|
addFilter(r'ruby\.(spec|src):\d+: W: unversioned-explicit-provides bundled\(ccan-container_of\)$')
|
||||||
|
addFilter(r'ruby\.(spec|src):\d+: W: unversioned-explicit-provides bundled\(ccan-list\)$')
|
||||||
|
|
||||||
|
# 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
|
||||||
|
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$')
|
||||||
|
|
||||||
|
# `gethostbyname` is part of deprecated Ruby API. There is also request to drop the API altogether:
|
||||||
|
# https://bugs.ruby-lang.org/issues/13097
|
||||||
|
# https://bugs.ruby-lang.org/issues/17944
|
||||||
|
addFilter(r'^ruby-libs\.\w+: W: binary-or-shlib-calls-gethostbyname /usr/lib(64)?/ruby/socket.so$')
|
||||||
|
|
||||||
|
# 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|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$')
|
||||||
|
|
||||||
|
# rubygems-devel ships only RPM macros and generators. Their placement is given
|
||||||
|
# by RPM and can't be modified.
|
||||||
|
addFilter(r'rubygems-devel.noarch: W: only-non-binary-in-usr-lib$')
|
||||||
|
|
||||||
|
# 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$')
|
||||||
|
|
@ -1,167 +0,0 @@
|
||||||
From 912d141a351053d0f6d915b5e7807f6a8f4c0631 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
|
|
||||||
Date: Tue, 4 Feb 2020 17:25:56 +0100
|
|
||||||
Subject: [PATCH 1/2] Make non "test_" method private
|
|
||||||
|
|
||||||
---
|
|
||||||
test/rubygems/test_require.rb | 2 ++
|
|
||||||
1 file changed, 2 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb
|
|
||||||
index aa2675af5d..d618a93473 100644
|
|
||||||
--- a/test/rubygems/test_require.rb
|
|
||||||
+++ b/test/rubygems/test_require.rb
|
|
||||||
@@ -532,6 +532,8 @@ def test_require_bundler_with_bundler_version
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
+ private
|
|
||||||
+
|
|
||||||
def silence_warnings
|
|
||||||
old_verbose, $VERBOSE = $VERBOSE, false
|
|
||||||
yield
|
|
||||||
|
|
||||||
From b3944384f44b869985051863d8b05b545d09a585 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
|
|
||||||
Date: Tue, 4 Feb 2020 17:26:28 +0100
|
|
||||||
Subject: [PATCH 2/2] Fix require issue with file extension priority
|
|
||||||
|
|
||||||
If `require "a"` is run when two folders have been specified in the -I
|
|
||||||
option including a "a.rb" file and a "a.so" file respectively, the ruby
|
|
||||||
spec says that the ".rb" file should always be preferred. However, the
|
|
||||||
logic we added in https://github.com/rubygems/rubygems/commit/6b81076d9
|
|
||||||
to make the -I option always beat default gems does not respect this
|
|
||||||
spec, creating a difference from the original ruby-core's require.
|
|
||||||
|
|
||||||
[the ruby spec says]: https://github.com/ruby/spec/blob/d80a6e2b221d4f17a8cadcac75ef950c59cba901/core/kernel/shared/require.rb#L234-L246
|
|
||||||
---
|
|
||||||
lib/rubygems/core_ext/kernel_require.rb | 28 +++++------
|
|
||||||
test/rubygems/test_require.rb | 62 +++++++++++++++++++++++++
|
|
||||||
2 files changed, 74 insertions(+), 16 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
index 60f4d18712..369f2c743e 100644
|
|
||||||
--- a/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
+++ b/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
@@ -43,18 +43,18 @@ def require(path)
|
|
||||||
# https://github.com/rubygems/rubygems/pull/1868
|
|
||||||
resolved_path = begin
|
|
||||||
rp = nil
|
|
||||||
- $LOAD_PATH[0...Gem.load_path_insert_index || -1].each do |lp|
|
|
||||||
- safe_lp = lp.dup.tap(&Gem::UNTAINT)
|
|
||||||
- begin
|
|
||||||
- if File.symlink? safe_lp # for backward compatibility
|
|
||||||
- next
|
|
||||||
+ Gem.suffixes.each do |s|
|
|
||||||
+ $LOAD_PATH[0...Gem.load_path_insert_index || -1].each do |lp|
|
|
||||||
+ safe_lp = lp.dup.tap(&Gem::UNTAINT)
|
|
||||||
+ begin
|
|
||||||
+ if File.symlink? safe_lp # for backward compatibility
|
|
||||||
+ next
|
|
||||||
+ end
|
|
||||||
+ rescue SecurityError
|
|
||||||
+ RUBYGEMS_ACTIVATION_MONITOR.exit
|
|
||||||
+ raise
|
|
||||||
end
|
|
||||||
- rescue SecurityError
|
|
||||||
- RUBYGEMS_ACTIVATION_MONITOR.exit
|
|
||||||
- raise
|
|
||||||
- end
|
|
||||||
|
|
||||||
- Gem.suffixes.each do |s|
|
|
||||||
full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}"))
|
|
||||||
if File.file?(full_path)
|
|
||||||
rp = full_path
|
|
||||||
@@ -67,12 +67,8 @@ def require(path)
|
|
||||||
end
|
|
||||||
|
|
||||||
if resolved_path
|
|
||||||
- begin
|
|
||||||
- RUBYGEMS_ACTIVATION_MONITOR.exit
|
|
||||||
- return gem_original_require(resolved_path)
|
|
||||||
- rescue LoadError
|
|
||||||
- RUBYGEMS_ACTIVATION_MONITOR.enter
|
|
||||||
- end
|
|
||||||
+ RUBYGEMS_ACTIVATION_MONITOR.exit
|
|
||||||
+ return gem_original_require(resolved_path)
|
|
||||||
end
|
|
||||||
|
|
||||||
if spec = Gem.find_unresolved_default_spec(path)
|
|
||||||
diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb
|
|
||||||
index d618a93473..7cffbfa7fe 100644
|
|
||||||
--- a/test/rubygems/test_require.rb
|
|
||||||
+++ b/test/rubygems/test_require.rb
|
|
||||||
@@ -120,6 +120,24 @@ def test_dash_i_beats_default_gems
|
|
||||||
Object.send :remove_const, :HELLO if Object.const_defined? :HELLO
|
|
||||||
end
|
|
||||||
|
|
||||||
+ def test_dash_i_respects_default_library_extension_priority
|
|
||||||
+ skip "extensions don't quite work on jruby" if Gem.java_platform?
|
|
||||||
+
|
|
||||||
+ dash_i_ext_arg = util_install_extension_file('a')
|
|
||||||
+ dash_i_lib_arg = util_install_ruby_file('a')
|
|
||||||
+
|
|
||||||
+ lp = $LOAD_PATH.dup
|
|
||||||
+
|
|
||||||
+ begin
|
|
||||||
+ $LOAD_PATH.unshift dash_i_lib_arg
|
|
||||||
+ $LOAD_PATH.unshift dash_i_ext_arg
|
|
||||||
+ assert_require 'a'
|
|
||||||
+ assert_match(/a\.rb$/, $LOADED_FEATURES.last)
|
|
||||||
+ ensure
|
|
||||||
+ $LOAD_PATH.replace lp
|
|
||||||
+ end
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
def test_concurrent_require
|
|
||||||
Object.const_set :FILE_ENTERED_LATCH, Latch.new(2)
|
|
||||||
Object.const_set :FILE_EXIT_LATCH, Latch.new(1)
|
|
||||||
@@ -541,4 +559,48 @@ def silence_warnings
|
|
||||||
$VERBOSE = old_verbose
|
|
||||||
end
|
|
||||||
|
|
||||||
+ def util_install_extension_file(name)
|
|
||||||
+ spec = quick_gem name
|
|
||||||
+ util_build_gem spec
|
|
||||||
+
|
|
||||||
+ spec.extensions << "extconf.rb"
|
|
||||||
+ write_file File.join(@tempdir, "extconf.rb") do |io|
|
|
||||||
+ io.write <<-RUBY
|
|
||||||
+ require "mkmf"
|
|
||||||
+ create_makefile("#{name}")
|
|
||||||
+ RUBY
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
+ write_file File.join(@tempdir, "#{name}.c") do |io|
|
|
||||||
+ io.write <<-C
|
|
||||||
+ #include <ruby.h>
|
|
||||||
+ void Init_#{name}() { }
|
|
||||||
+ C
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
+ spec.files += ["extconf.rb", "#{name}.c"]
|
|
||||||
+
|
|
||||||
+ so = File.join(spec.gem_dir, "#{name}.#{RbConfig::CONFIG["DLEXT"]}")
|
|
||||||
+ refute_path_exists so
|
|
||||||
+
|
|
||||||
+ path = Gem::Package.build spec
|
|
||||||
+ installer = Gem::Installer.at path
|
|
||||||
+ installer.install
|
|
||||||
+ assert_path_exists so
|
|
||||||
+
|
|
||||||
+ spec.gem_dir
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
+ def util_install_ruby_file(name)
|
|
||||||
+ dir_lib = Dir.mktmpdir("test_require_lib", @tempdir)
|
|
||||||
+ dash_i_lib_arg = File.join dir_lib
|
|
||||||
+
|
|
||||||
+ a_rb = File.join dash_i_lib_arg, "#{name}.rb"
|
|
||||||
+
|
|
||||||
+ FileUtils.mkdir_p File.dirname a_rb
|
|
||||||
+ File.open(a_rb, 'w') { |f| f.write "# #{name}.rb" }
|
|
||||||
+
|
|
||||||
+ dash_i_lib_arg
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
end
|
|
||||||
|
|
@ -1,324 +0,0 @@
|
||||||
From 00d98eb8a3245fb93a475ecbbbc4c7ec7e6704cd Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
|
|
||||||
Date: Tue, 19 May 2020 14:00:00 +0200
|
|
||||||
Subject: [PATCH 1/5] Fix performance regression in `require`
|
|
||||||
|
|
||||||
Our check for `-I` paths should not go through all activated gems.
|
|
||||||
---
|
|
||||||
lib/rubygems.rb | 10 ++++++++++
|
|
||||||
lib/rubygems/core_ext/kernel_require.rb | 2 +-
|
|
||||||
lib/rubygems/test_case.rb | 1 +
|
|
||||||
test/rubygems/test_require.rb | 11 +++++++++++
|
|
||||||
4 files changed, 23 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/lib/rubygems.rb b/lib/rubygems.rb
|
|
||||||
index 843cb49e4a..d1a9a1c7e1 100644
|
|
||||||
--- a/lib/rubygems.rb
|
|
||||||
+++ b/lib/rubygems.rb
|
|
||||||
@@ -662,10 +662,20 @@ def self.load_path_insert_index
|
|
||||||
index
|
|
||||||
end
|
|
||||||
|
|
||||||
+ ##
|
|
||||||
+ # The number of paths in the `$LOAD_PATH` from activated gems. Used to
|
|
||||||
+ # prioritize `-I` and `ENV['RUBYLIB`]` entries during `require`.
|
|
||||||
+
|
|
||||||
+ def self.activated_gem_paths
|
|
||||||
+ @activated_gem_paths ||= 0
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
##
|
|
||||||
# Add a list of paths to the $LOAD_PATH at the proper place.
|
|
||||||
|
|
||||||
def self.add_to_load_path(*paths)
|
|
||||||
+ @activated_gem_paths = activated_gem_paths + paths.size
|
|
||||||
+
|
|
||||||
insert_index = load_path_insert_index
|
|
||||||
|
|
||||||
if insert_index
|
|
||||||
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
index ed24111bd5..7625ce1bee 100644
|
|
||||||
--- a/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
+++ b/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
@@ -47,7 +47,7 @@ def require(path)
|
|
||||||
load_path_insert_index = Gem.load_path_insert_index
|
|
||||||
break unless load_path_insert_index
|
|
||||||
|
|
||||||
- $LOAD_PATH[0...load_path_insert_index].each do |lp|
|
|
||||||
+ $LOAD_PATH[0...load_path_insert_index - Gem.activated_gem_paths].each do |lp|
|
|
||||||
safe_lp = lp.dup.tap(&Gem::UNTAINT)
|
|
||||||
begin
|
|
||||||
if File.symlink? safe_lp # for backward compatibility
|
|
||||||
diff --git a/lib/rubygems/test_case.rb b/lib/rubygems/test_case.rb
|
|
||||||
index a05a2898d1..53dd495aef 100644
|
|
||||||
--- a/lib/rubygems/test_case.rb
|
|
||||||
+++ b/lib/rubygems/test_case.rb
|
|
||||||
@@ -385,6 +385,7 @@ def setup
|
|
||||||
Gem::Security.reset
|
|
||||||
|
|
||||||
Gem.loaded_specs.clear
|
|
||||||
+ Gem.instance_variable_set(:@activated_gem_paths, 0)
|
|
||||||
Gem.clear_default_specs
|
|
||||||
Bundler.reset!
|
|
||||||
|
|
||||||
diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb
|
|
||||||
index f36892f8cc..9f2fe3439a 100644
|
|
||||||
--- a/test/rubygems/test_require.rb
|
|
||||||
+++ b/test/rubygems/test_require.rb
|
|
||||||
@@ -382,6 +382,17 @@ def test_default_gem_require_activates_just_once
|
|
||||||
assert_equal 0, times_called
|
|
||||||
end
|
|
||||||
|
|
||||||
+ def test_second_gem_require_does_not_resolve_path_manually_before_going_through_standard_require
|
|
||||||
+ a1 = util_spec "a", "1", nil, "lib/test_gem_require_a.rb"
|
|
||||||
+ install_gem a1
|
|
||||||
+
|
|
||||||
+ assert_require "test_gem_require_a"
|
|
||||||
+
|
|
||||||
+ stub(:gem_original_require, ->(path) { assert_equal "test_gem_require_a", path }) do
|
|
||||||
+ require "test_gem_require_a"
|
|
||||||
+ end
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
def test_realworld_default_gem
|
|
||||||
testing_ruby_repo = !ENV["GEM_COMMAND"].nil?
|
|
||||||
skip "this test can't work under ruby-core setup" if testing_ruby_repo || java_platform?
|
|
||||||
|
|
||||||
From ae95885dff6189c5ac59bbdf685cb4ec4751fdef Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
|
|
||||||
Date: Tue, 19 May 2020 14:08:19 +0200
|
|
||||||
Subject: [PATCH 2/5] Refactor `Gem.load_path_insert_index`
|
|
||||||
|
|
||||||
---
|
|
||||||
lib/rubygems.rb | 13 +++----------
|
|
||||||
lib/rubygems/core_ext/kernel_require.rb | 5 +----
|
|
||||||
2 files changed, 4 insertions(+), 14 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/rubygems.rb b/lib/rubygems.rb
|
|
||||||
index d1a9a1c7e1..ca80326459 100644
|
|
||||||
--- a/lib/rubygems.rb
|
|
||||||
+++ b/lib/rubygems.rb
|
|
||||||
@@ -659,7 +659,7 @@ def self.load_path_insert_index
|
|
||||||
|
|
||||||
index = $LOAD_PATH.index RbConfig::CONFIG['sitelibdir']
|
|
||||||
|
|
||||||
- index
|
|
||||||
+ index || 0
|
|
||||||
end
|
|
||||||
|
|
||||||
##
|
|
||||||
@@ -676,15 +676,8 @@ def self.activated_gem_paths
|
|
||||||
def self.add_to_load_path(*paths)
|
|
||||||
@activated_gem_paths = activated_gem_paths + paths.size
|
|
||||||
|
|
||||||
- insert_index = load_path_insert_index
|
|
||||||
-
|
|
||||||
- if insert_index
|
|
||||||
- # gem directories must come after -I and ENV['RUBYLIB']
|
|
||||||
- $LOAD_PATH.insert(insert_index, *paths)
|
|
||||||
- else
|
|
||||||
- # we are probably testing in core, -I and RUBYLIB don't apply
|
|
||||||
- $LOAD_PATH.unshift(*paths)
|
|
||||||
- end
|
|
||||||
+ # gem directories must come after -I and ENV['RUBYLIB']
|
|
||||||
+ $LOAD_PATH.insert(Gem.load_path_insert_index, *paths)
|
|
||||||
end
|
|
||||||
|
|
||||||
@yaml_loaded = false
|
|
||||||
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
index 7625ce1bee..decf4829f1 100644
|
|
||||||
--- a/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
+++ b/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
@@ -44,10 +44,7 @@ def require(path)
|
|
||||||
resolved_path = begin
|
|
||||||
rp = nil
|
|
||||||
Gem.suffixes.each do |s|
|
|
||||||
- load_path_insert_index = Gem.load_path_insert_index
|
|
||||||
- break unless load_path_insert_index
|
|
||||||
-
|
|
||||||
- $LOAD_PATH[0...load_path_insert_index - Gem.activated_gem_paths].each do |lp|
|
|
||||||
+ $LOAD_PATH[0...Gem.load_path_insert_index - Gem.activated_gem_paths].each do |lp|
|
|
||||||
safe_lp = lp.dup.tap(&Gem::UNTAINT)
|
|
||||||
begin
|
|
||||||
if File.symlink? safe_lp # for backward compatibility
|
|
||||||
|
|
||||||
From da1492e9d7b28d068fbfbb0ba1cafcc516681567 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
|
|
||||||
Date: Tue, 19 May 2020 14:32:12 +0200
|
|
||||||
Subject: [PATCH 3/5] Extract a local outside the loop
|
|
||||||
|
|
||||||
---
|
|
||||||
lib/rubygems/core_ext/kernel_require.rb | 3 ++-
|
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
index decf4829f1..6a7faaf2d1 100644
|
|
||||||
--- a/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
+++ b/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
@@ -43,8 +43,9 @@ def require(path)
|
|
||||||
# https://github.com/rubygems/rubygems/pull/1868
|
|
||||||
resolved_path = begin
|
|
||||||
rp = nil
|
|
||||||
+ load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths
|
|
||||||
Gem.suffixes.each do |s|
|
|
||||||
- $LOAD_PATH[0...Gem.load_path_insert_index - Gem.activated_gem_paths].each do |lp|
|
|
||||||
+ $LOAD_PATH[0...load_path_check_index].each do |lp|
|
|
||||||
safe_lp = lp.dup.tap(&Gem::UNTAINT)
|
|
||||||
begin
|
|
||||||
if File.symlink? safe_lp # for backward compatibility
|
|
||||||
|
|
||||||
From 22ad5717c38feda2375b53628d15ae3db2195684 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
|
|
||||||
Date: Thu, 21 May 2020 15:20:57 +0200
|
|
||||||
Subject: [PATCH 4/5] Fix `$LOADED_FEATURES` cache sometimes not respected
|
|
||||||
|
|
||||||
In the cases where the initial manually `-I` path resolution succeeded,
|
|
||||||
we were passing a full path to the original require effectively skipping
|
|
||||||
the `$LOADED_FEATURES` cache. With this change, we _only_ do the
|
|
||||||
resolution when a matching requirable path is found in a default gem. In
|
|
||||||
that case, we skip activation of the default gem if we detect that the
|
|
||||||
required file will be picked up for a `-I` path.
|
|
||||||
---
|
|
||||||
lib/rubygems/core_ext/kernel_require.rb | 53 +++++++++++--------------
|
|
||||||
test/rubygems/test_require.rb | 29 ++++++++++++++
|
|
||||||
2 files changed, 53 insertions(+), 29 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
index 6a7faaf2d1..81e37b98bf 100644
|
|
||||||
--- a/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
+++ b/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
@@ -39,46 +39,41 @@ def require(path)
|
|
||||||
|
|
||||||
path = path.to_path if path.respond_to? :to_path
|
|
||||||
|
|
||||||
- # Ensure -I beats a default gem
|
|
||||||
- # https://github.com/rubygems/rubygems/pull/1868
|
|
||||||
- resolved_path = begin
|
|
||||||
- rp = nil
|
|
||||||
- load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths
|
|
||||||
- Gem.suffixes.each do |s|
|
|
||||||
- $LOAD_PATH[0...load_path_check_index].each do |lp|
|
|
||||||
- safe_lp = lp.dup.tap(&Gem::UNTAINT)
|
|
||||||
- begin
|
|
||||||
- if File.symlink? safe_lp # for backward compatibility
|
|
||||||
- next
|
|
||||||
+ if spec = Gem.find_unresolved_default_spec(path)
|
|
||||||
+ # Ensure -I beats a default gem
|
|
||||||
+ # https://github.com/rubygems/rubygems/pull/1868
|
|
||||||
+ resolved_path = begin
|
|
||||||
+ rp = nil
|
|
||||||
+ load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths
|
|
||||||
+ Gem.suffixes.each do |s|
|
|
||||||
+ $LOAD_PATH[0...load_path_check_index].each do |lp|
|
|
||||||
+ safe_lp = lp.dup.tap(&Gem::UNTAINT)
|
|
||||||
+ begin
|
|
||||||
+ if File.symlink? safe_lp # for backward compatibility
|
|
||||||
+ next
|
|
||||||
+ end
|
|
||||||
+ rescue SecurityError
|
|
||||||
+ RUBYGEMS_ACTIVATION_MONITOR.exit
|
|
||||||
+ raise
|
|
||||||
end
|
|
||||||
- rescue SecurityError
|
|
||||||
- RUBYGEMS_ACTIVATION_MONITOR.exit
|
|
||||||
- raise
|
|
||||||
- end
|
|
||||||
|
|
||||||
- full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}"))
|
|
||||||
- if File.file?(full_path)
|
|
||||||
- rp = full_path
|
|
||||||
- break
|
|
||||||
+ full_path = File.expand_path(File.join(safe_lp, "#{path}#{s}"))
|
|
||||||
+ if File.file?(full_path)
|
|
||||||
+ rp = full_path
|
|
||||||
+ break
|
|
||||||
+ end
|
|
||||||
end
|
|
||||||
+ break if rp
|
|
||||||
end
|
|
||||||
- break if rp
|
|
||||||
+ rp
|
|
||||||
end
|
|
||||||
- rp
|
|
||||||
- end
|
|
||||||
|
|
||||||
- if resolved_path
|
|
||||||
- RUBYGEMS_ACTIVATION_MONITOR.exit
|
|
||||||
- return gem_original_require(resolved_path)
|
|
||||||
- end
|
|
||||||
-
|
|
||||||
- if spec = Gem.find_unresolved_default_spec(path)
|
|
||||||
begin
|
|
||||||
Kernel.send(:gem, spec.name, Gem::Requirement.default_prerelease)
|
|
||||||
rescue Exception
|
|
||||||
RUBYGEMS_ACTIVATION_MONITOR.exit
|
|
||||||
raise
|
|
||||||
- end
|
|
||||||
+ end unless resolved_path
|
|
||||||
end
|
|
||||||
|
|
||||||
# If there are no unresolved deps, then we can use just try
|
|
||||||
diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb
|
|
||||||
index 9f2fe3439a..2b11e26dfe 100644
|
|
||||||
--- a/test/rubygems/test_require.rb
|
|
||||||
+++ b/test/rubygems/test_require.rb
|
|
||||||
@@ -45,6 +45,35 @@ def refute_require(path)
|
|
||||||
refute require(path), "'#{path}' was not yet required"
|
|
||||||
end
|
|
||||||
|
|
||||||
+ def test_respect_loaded_features_caching_like_standard_require
|
|
||||||
+ dir = Dir.mktmpdir("test_require", @tempdir)
|
|
||||||
+
|
|
||||||
+ lp1 = File.join dir, 'foo1'
|
|
||||||
+ foo1 = File.join lp1, 'foo.rb'
|
|
||||||
+
|
|
||||||
+ FileUtils.mkdir_p lp1
|
|
||||||
+ File.open(foo1, 'w') { |f| f.write "class Object; HELLO = 'foo1' end" }
|
|
||||||
+
|
|
||||||
+ lp = $LOAD_PATH.dup
|
|
||||||
+
|
|
||||||
+ $LOAD_PATH.unshift lp1
|
|
||||||
+ assert_require 'foo'
|
|
||||||
+ assert_equal "foo1", ::Object::HELLO
|
|
||||||
+
|
|
||||||
+ lp2 = File.join dir, 'foo2'
|
|
||||||
+ foo2 = File.join lp2, 'foo.rb'
|
|
||||||
+
|
|
||||||
+ FileUtils.mkdir_p lp2
|
|
||||||
+ File.open(foo2, 'w') { |f| f.write "class Object; HELLO = 'foo2' end" }
|
|
||||||
+
|
|
||||||
+ $LOAD_PATH.unshift lp2
|
|
||||||
+ refute_require 'foo'
|
|
||||||
+ assert_equal "foo1", ::Object::HELLO
|
|
||||||
+ ensure
|
|
||||||
+ $LOAD_PATH.replace lp
|
|
||||||
+ Object.send :remove_const, :HELLO if Object.const_defined? :HELLO
|
|
||||||
+ end
|
|
||||||
+
|
|
||||||
# Providing -I on the commandline should always beat gems
|
|
||||||
def test_dash_i_beats_gems
|
|
||||||
a1 = util_spec "a", "1", {"b" => "= 1"}, "lib/test_gem_require_a.rb"
|
|
||||||
|
|
||||||
From db872c7a18d616f4447bdcca3130be6db9e5cb03 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
|
|
||||||
Date: Sat, 23 May 2020 20:18:41 +0200
|
|
||||||
Subject: [PATCH 5/5] Remove direct reference to PR
|
|
||||||
|
|
||||||
The code is quite different now, so I think the link might be even
|
|
||||||
confusing. If you want to know more, use git history.
|
|
||||||
---
|
|
||||||
lib/rubygems/core_ext/kernel_require.rb | 1 -
|
|
||||||
1 file changed, 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
index 81e37b98bf..115ae0cb50 100644
|
|
||||||
--- a/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
+++ b/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
@@ -41,7 +41,6 @@ def require(path)
|
|
||||||
|
|
||||||
if spec = Gem.find_unresolved_default_spec(path)
|
|
||||||
# Ensure -I beats a default gem
|
|
||||||
- # https://github.com/rubygems/rubygems/pull/1868
|
|
||||||
resolved_path = begin
|
|
||||||
rp = nil
|
|
||||||
load_path_check_index = Gem.load_path_insert_index - Gem.activated_gem_paths
|
|
||||||
|
|
@ -1,92 +0,0 @@
|
||||||
From c5197b2ab35ba389f48918e0c773b43b6dca2fa5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
|
|
||||||
Date: Fri, 7 Feb 2020 17:16:05 +0100
|
|
||||||
Subject: [PATCH 1/3] Tweaks to get test passing more reliably
|
|
||||||
|
|
||||||
---
|
|
||||||
test/rubygems/test_require.rb | 6 ++++--
|
|
||||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/test/rubygems/test_require.rb b/test/rubygems/test_require.rb
|
|
||||||
index 7cffbfa7fe..67c55416d4 100644
|
|
||||||
--- a/test/rubygems/test_require.rb
|
|
||||||
+++ b/test/rubygems/test_require.rb
|
|
||||||
@@ -567,18 +567,20 @@ def util_install_extension_file(name)
|
|
||||||
write_file File.join(@tempdir, "extconf.rb") do |io|
|
|
||||||
io.write <<-RUBY
|
|
||||||
require "mkmf"
|
|
||||||
+ CONFIG['LDSHARED'] = '$(TOUCH) $@ ||'
|
|
||||||
create_makefile("#{name}")
|
|
||||||
RUBY
|
|
||||||
end
|
|
||||||
|
|
||||||
write_file File.join(@tempdir, "#{name}.c") do |io|
|
|
||||||
io.write <<-C
|
|
||||||
- #include <ruby.h>
|
|
||||||
void Init_#{name}() { }
|
|
||||||
C
|
|
||||||
end
|
|
||||||
|
|
||||||
- spec.files += ["extconf.rb", "#{name}.c"]
|
|
||||||
+ write_file File.join(@tempdir, "depend")
|
|
||||||
+
|
|
||||||
+ spec.files += ["extconf.rb", "depend", "#{name}.c"]
|
|
||||||
|
|
||||||
so = File.join(spec.gem_dir, "#{name}.#{RbConfig::CONFIG["DLEXT"]}")
|
|
||||||
refute_path_exists so
|
|
||||||
|
|
||||||
From 7bfd7319cd751837c3ccaf1d97b02846eaaf39d5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
|
|
||||||
Date: Tue, 11 Feb 2020 11:56:06 +0100
|
|
||||||
Subject: [PATCH 2/3] Fix bug bug calculating $LOAD_PATH's to check in
|
|
||||||
`require`
|
|
||||||
|
|
||||||
In `Gem.load_path_insert_index` is not set, we end up having
|
|
||||||
`$LOAD_PATH[0...-1]`, unintentionally skipping the last $LOAD_PATH entry
|
|
||||||
from the check.
|
|
||||||
|
|
||||||
The correct thing to do in that case is to not even try since we have no
|
|
||||||
way of distinguisng default LOAD_PATH entries from those added with -I.
|
|
||||||
---
|
|
||||||
lib/rubygems/core_ext/kernel_require.rb | 5 ++++-
|
|
||||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
index 369f2c743e..a8d170f13a 100644
|
|
||||||
--- a/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
+++ b/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
@@ -44,7 +44,10 @@ def require(path)
|
|
||||||
resolved_path = begin
|
|
||||||
rp = nil
|
|
||||||
Gem.suffixes.each do |s|
|
|
||||||
- $LOAD_PATH[0...Gem.load_path_insert_index || -1].each do |lp|
|
|
||||||
+ load_path_insert_index = Gem.load_path_insert_index
|
|
||||||
+ break unless load_path_insert_index
|
|
||||||
+
|
|
||||||
+ $LOAD_PATH[0...load_path_insert_index].each do |lp|
|
|
||||||
safe_lp = lp.dup.tap(&Gem::UNTAINT)
|
|
||||||
begin
|
|
||||||
if File.symlink? safe_lp # for backward compatibility
|
|
||||||
|
|
||||||
From 4fc0ab21c0f7713829abb522ce3b6d8e24c126b3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
|
|
||||||
Date: Fri, 14 Feb 2020 02:03:04 +0100
|
|
||||||
Subject: [PATCH 3/3] Exclude empty suffix from `-I` require loop
|
|
||||||
|
|
||||||
---
|
|
||||||
lib/rubygems/core_ext/kernel_require.rb | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
index a8d170f13a..9712fb6ac0 100644
|
|
||||||
--- a/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
+++ b/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
@@ -43,7 +43,7 @@ def require(path)
|
|
||||||
# https://github.com/rubygems/rubygems/pull/1868
|
|
||||||
resolved_path = begin
|
|
||||||
rp = nil
|
|
||||||
- Gem.suffixes.each do |s|
|
|
||||||
+ Gem.suffixes[1..-1].each do |s|
|
|
||||||
load_path_insert_index = Gem.load_path_insert_index
|
|
||||||
break unless load_path_insert_index
|
|
||||||
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
From 301e30bf97dd603ca81d52b90186908575c4ddf8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: =?UTF-8?q?David=20Rodr=C3=ADguez?= <deivid.rodriguez@riseup.net>
|
|
||||||
Date: Tue, 25 Feb 2020 15:01:44 +0100
|
|
||||||
Subject: [PATCH] Revert "Exclude empty suffix from `-I` require loop"
|
|
||||||
|
|
||||||
This reverts commit 4fc0ab21c0f7713829abb522ce3b6d8e24c126b3.
|
|
||||||
|
|
||||||
Technically, extensionless ruby files are valid ruby files that can be
|
|
||||||
required. For example, `bin/bundle` is sometimes required from other
|
|
||||||
binstubs even if it's also runnable directly.
|
|
||||||
|
|
||||||
So, we should technically consider this kind of files too.
|
|
||||||
---
|
|
||||||
lib/rubygems/core_ext/kernel_require.rb | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/lib/rubygems/core_ext/kernel_require.rb b/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
index 9712fb6ac0..a8d170f13a 100644
|
|
||||||
--- a/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
+++ b/lib/rubygems/core_ext/kernel_require.rb
|
|
||||||
@@ -43,7 +43,7 @@ def require(path)
|
|
||||||
# https://github.com/rubygems/rubygems/pull/1868
|
|
||||||
resolved_path = begin
|
|
||||||
rp = nil
|
|
||||||
- Gem.suffixes[1..-1].each do |s|
|
|
||||||
+ Gem.suffixes.each do |s|
|
|
||||||
load_path_insert_index = Gem.load_path_insert_index
|
|
||||||
break unless load_path_insert_index
|
|
||||||
|
|
||||||
|
|
@ -19,7 +19,7 @@ module RubyGemsReq
|
||||||
end
|
end
|
||||||
|
|
||||||
# Report conflicting gem dependencies including their version.
|
# Report conflicting gem dependencies including their version.
|
||||||
def self.gem_depenencies(specification)
|
def self.gem_dependencies(specification)
|
||||||
specification.runtime_dependencies.each do |dependency|
|
specification.runtime_dependencies.each do |dependency|
|
||||||
conflict_strings = Helpers::requirement_versions_to_rpm(dependency.requirement).map do |requirement|
|
conflict_strings = Helpers::requirement_versions_to_rpm(dependency.requirement).map do |requirement|
|
||||||
requirement_string = "rubygem(#{dependency.name}) #{requirement}"
|
requirement_string = "rubygem(#{dependency.name}) #{requirement}"
|
||||||
|
|
@ -39,7 +39,7 @@ module RubyGemsReq
|
||||||
begin
|
begin
|
||||||
specification = Gem::Specification.load filename
|
specification = Gem::Specification.load filename
|
||||||
|
|
||||||
gem_depenencies(specification)
|
gem_dependencies(specification)
|
||||||
rescue => e
|
rescue => e
|
||||||
# Ignore all errors.
|
# Ignore all errors.
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ module RubyGemsReq
|
||||||
end
|
end
|
||||||
|
|
||||||
# Report all gem dependencies including their version.
|
# Report all gem dependencies including their version.
|
||||||
def self.gem_depenencies(specification)
|
def self.gem_dependencies(specification)
|
||||||
specification.runtime_dependencies.each do |dependency|
|
specification.runtime_dependencies.each do |dependency|
|
||||||
dependency_name = "rubygem(#{dependency.name})"
|
dependency_name = "rubygem(#{dependency.name})"
|
||||||
requirements = Helpers::requirement_versions_to_rpm(dependency.requirement)
|
requirements = Helpers::requirement_versions_to_rpm(dependency.requirement)
|
||||||
|
|
@ -75,7 +75,7 @@ module RubyGemsReq
|
||||||
specification = Gem::Specification.load filename
|
specification = Gem::Specification.load filename
|
||||||
|
|
||||||
rubygems_dependency(specification)
|
rubygems_dependency(specification)
|
||||||
gem_depenencies(specification)
|
gem_dependencies(specification)
|
||||||
rescue => e
|
rescue => e
|
||||||
# Ignore all errors.
|
# Ignore all errors.
|
||||||
end
|
end
|
||||||
|
|
|
||||||
2
sources
2
sources
|
|
@ -1 +1 @@
|
||||||
SHA512 (ruby-2.7.2.tar.xz) = 7972278b096aa768c7adf2befd26003e18781a29ca317640317d30d93d6e963ded197724c8e2f1dfe1e838c5647176d414a74732a62e931fb50d6f2e0f777349
|
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