Compare commits
69 Commits
riscv64-25
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
986dc48123 | ||
|
be9961f6d0 | ||
|
946f8b8693 | ||
|
8b746d13cf | ||
|
78c9d9e324 | ||
|
d471fb8f62 | ||
|
4979be53ac | ||
|
d461276d48 | ||
|
064a0517d6 | ||
|
bc5cb6094e | ||
|
0963ae5102 | ||
|
29816481d1 | ||
|
26bc2eb795 | ||
|
102ff85d98 | ||
|
50345c3ee4 | ||
|
fb50c77241 | ||
|
ca69f778a9 | ||
|
838cca0381 | ||
|
baf046a6a4 | ||
|
c63e907e87 | ||
|
e5cef5e271 | ||
|
759d6796c6 | ||
|
a9b3ba531f | ||
|
f2d727806b | ||
|
79683d7d62 | ||
|
40937c8a7a | ||
|
40610a988c | ||
|
dde320d13d | ||
|
26cfdf277e | ||
|
345ce0e5b8 | ||
|
197c02993b | ||
|
bb318e2964 | ||
|
8454ff1601 | ||
|
3696d7be37 | ||
|
04b63f48ea | ||
|
fe3a1dd604 | ||
|
050a503e16 | ||
|
423327ef48 | ||
|
13a1b3e907 | ||
|
1cc2a497d3 | ||
|
ed790644ea | ||
|
ea106d15b2 | ||
|
e38302eeb1 | ||
|
395ef05d65 | ||
|
9d08846cc7 | ||
|
5aa32e278d | ||
|
f4c0ae4dea | ||
|
392287d18b | ||
|
a889754fa2 | ||
|
f3953123c0 | ||
|
17f23f30d6 | ||
|
bc094d8811 | ||
|
b610699f35 | ||
|
1e60df6dc1 | ||
|
bb1cbacab5 | ||
|
d66ece5f5d | ||
|
0c8cdc456b | ||
|
bb26a282aa | ||
|
2506a2faa2 | ||
|
c80ecd9db9 | ||
|
5dcc35c709 | ||
|
7fa10a167d | ||
|
5bf57b1504 | ||
|
32488add5b | ||
|
7c66ce151d | ||
|
d5e84a533c | ||
|
e91d1127db | ||
|
b19096d798 | ||
|
ec97a0708b |
@ -1,8 +0,0 @@
|
||||
if defined?(Gem)
|
||||
require 'rubygems.rb'
|
||||
|
||||
begin
|
||||
require 'abrt'
|
||||
rescue LoadError
|
||||
end
|
||||
end
|
@ -21,7 +21,7 @@
|
||||
%gem_install(d:n:) \
|
||||
mkdir -p %{-d*}%{!?-d:.%{gem_dir}} \
|
||||
\
|
||||
CONFIGURE_ARGS="--with-cflags='%{optflags}' $CONFIGURE_ARGS" \\\
|
||||
CONFIGURE_ARGS="--with-cflags='%{optflags}' --with-cxxflags='%{optflags}' $CONFIGURE_ARGS" \\\
|
||||
gem install \\\
|
||||
-V \\\
|
||||
--local \\\
|
||||
@ -32,16 +32,6 @@ gem install \\\
|
||||
%{nil}
|
||||
|
||||
|
||||
# For rubygems packages we want to filter out any provides caused by private
|
||||
# libs in %%{gem_archdir}.
|
||||
#
|
||||
# Note that this must be invoked in the spec file, preferably as
|
||||
# "%{?rubygems_default_filter}", before any %description block.
|
||||
%rubygems_default_filter %{expand: \
|
||||
%global __provides_exclude_from %{?__provides_exclude_from:%{__provides_exclude_from}|}^%{gem_extdir_mri}/.*\\\\.so$ \
|
||||
}
|
||||
|
||||
|
||||
# The 'read' command in %%gemspec_* macros is not essential, but it is usefull
|
||||
# to make the sript appear in build log.
|
||||
|
||||
@ -60,7 +50,7 @@ gem install \\\
|
||||
#
|
||||
%gemspec_add_dep(g:s:d) \
|
||||
read -d '' gemspec_add_dep_script << 'EOR' || : \
|
||||
gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}.gemspec}' \
|
||||
gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}%{?prerelease}.gemspec}' \
|
||||
\
|
||||
name = '%{-g*}' \
|
||||
requirements = %{*}%{!?1:nil} \
|
||||
@ -97,7 +87,7 @@ unset -v gemspec_add_dep_script \
|
||||
#
|
||||
%gemspec_remove_dep(g:s:d) \
|
||||
read -d '' gemspec_remove_dep_script << 'EOR' || : \
|
||||
gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}.gemspec}' \
|
||||
gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}%{?prerelease}.gemspec}' \
|
||||
\
|
||||
name = '%{-g*}' \
|
||||
requirements = %{*}%{!?1:nil} \
|
||||
@ -144,7 +134,7 @@ unset -v gemspec_remove_dep_script \
|
||||
#
|
||||
%gemspec_add_file(s:tr) \
|
||||
read -d '' gemspec_add_file_script << 'EOR' || : \
|
||||
gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}.gemspec}' \
|
||||
gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}%{?prerelease}.gemspec}' \
|
||||
\
|
||||
abort("gemspec_add_file: Use only one '-t' or '-r' at a time.") if "%{?-t}%{?-r}" == "-t-r" \
|
||||
\
|
||||
@ -177,7 +167,7 @@ unset -v gemspec_add_file_script \
|
||||
#
|
||||
%gemspec_remove_file(s:tr) \
|
||||
read -d '' gemspec_remove_file_script << 'EOR' || : \
|
||||
gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}.gemspec}' \
|
||||
gemspec_file = '%{-s*}%{!?-s:%{_builddir}/%{gem_name}-%{version}%{?prerelease}.gemspec}' \
|
||||
\
|
||||
abort("gemspec_remove_file: Use only one '-t' or '-r' at a time.") if "%{?-t}%{?-r}" == "-t-r" \
|
||||
\
|
||||
|
@ -119,6 +119,7 @@ module Gem
|
||||
def default_path
|
||||
path = default_dirs.collect {|location, paths| paths[:gem_dir]}
|
||||
path.unshift Gem.user_dir if File.exist? Gem.user_home
|
||||
path
|
||||
end
|
||||
|
||||
def default_ext_dir_for base_dir
|
||||
|
@ -11,7 +11,7 @@ diff --git a/lib/mkmf.rb b/lib/mkmf.rb
|
||||
index 682eb46..e6b1445 100644
|
||||
--- a/lib/mkmf.rb
|
||||
+++ b/lib/mkmf.rb
|
||||
@@ -1899,7 +1899,7 @@ def configuration(srcdir)
|
||||
@@ -1930,7 +1930,7 @@ def configuration(srcdir)
|
||||
SHELL = /bin/sh
|
||||
|
||||
# V=0 quiet, V=1 verbose. other values don't work.
|
||||
|
@ -1,58 +0,0 @@
|
||||
From 996012f6abe0ce4d68a2de9f249935c6d5b467bc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Fri, 4 Oct 2013 22:13:11 +0200
|
||||
Subject: [PATCH] Allow to specify addition preludes by configuration option.
|
||||
|
||||
---
|
||||
Makefile.in | 2 ++
|
||||
common.mk | 2 +-
|
||||
configure.ac | 7 +++++++
|
||||
3 files changed, 10 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Makefile.in b/Makefile.in
|
||||
index 7e8ed82..7916993 100644
|
||||
--- a/Makefile.in
|
||||
+++ b/Makefile.in
|
||||
@@ -119,6 +119,8 @@ XRUBY_RUBYLIBDIR = @XRUBY_RUBYLIBDIR@
|
||||
XRUBY_RUBYHDRDIR = @XRUBY_RUBYHDRDIR@
|
||||
BOOTSTRAPRUBY = @BOOTSTRAPRUBY@
|
||||
|
||||
+OPTIONAL_PRELUDES = @OPTIONAL_PRELUDES@
|
||||
+
|
||||
#### End of system configuration section. ####
|
||||
|
||||
MAJOR= @MAJOR@
|
||||
diff --git a/common.mk b/common.mk
|
||||
index 5cfbc3d..3f0a82e 100644
|
||||
--- a/common.mk
|
||||
+++ b/common.mk
|
||||
@@ -147,7 +147,7 @@ ALLOBJS = $(NORMALMAINOBJ) $(MINIOBJS) $(COMMONOBJS) $(INITOBJS)
|
||||
GOLFOBJS = goruby.$(OBJEXT) golf_prelude.$(OBJEXT)
|
||||
|
||||
DEFAULT_PRELUDES = $(GEM_PRELUDE)
|
||||
-PRELUDE_SCRIPTS = $(srcdir)/prelude.rb $(DEFAULT_PRELUDES)
|
||||
+PRELUDE_SCRIPTS = $(srcdir)/prelude.rb $(DEFAULT_PRELUDES) $(OPTIONAL_PRELUDES)
|
||||
GEM_PRELUDE = $(srcdir)/gem_prelude.rb
|
||||
PRELUDES = {$(srcdir)}prelude.c {$(srcdir)}miniprelude.c
|
||||
GOLFPRELUDES = {$(srcdir)}golf_prelude.c
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 028ef7ca3e..cdeff87871 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -4396,6 +4396,13 @@ AC_SUBST(rubyarchhdrdir)dnl
|
||||
AC_SUBST(sitearchhdrdir)dnl
|
||||
AC_SUBST(vendorarchhdrdir)dnl
|
||||
|
||||
+AC_ARG_WITH(prelude,
|
||||
+ AS_HELP_STRING([--with-prelude=FILE-LIST], [specify additional preludes separated by space]),
|
||||
+ [prelude=$withval])
|
||||
+if test "$prelude" != ""; then
|
||||
+ AC_SUBST(OPTIONAL_PRELUDES, $prelude)
|
||||
+fi
|
||||
+
|
||||
AC_ARG_WITH(mantype,
|
||||
AS_HELP_STRING([--with-mantype=TYPE], [specify man page type; TYPE is one of man and doc]),
|
||||
[
|
||||
--
|
||||
1.8.3.1
|
||||
|
@ -8,10 +8,10 @@ Subject: [PATCH] Allow to configure libruby.so placement.
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 11fc237552..b77e88fc37 100644
|
||||
index d261ea57b5..3c13076b82 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -3641,6 +3641,11 @@ AS_IF([test ${multiarch+set}], [
|
||||
@@ -3105,6 +3105,11 @@ AS_IF([test ${multiarch+set}], [
|
||||
])
|
||||
|
||||
archlibdir='${libdir}/${arch}'
|
||||
@ -24,5 +24,5 @@ index 11fc237552..b77e88fc37 100644
|
||||
archincludedir='${includedir}/${arch}'
|
||||
sitearchincludedir='${includedir}/${sitearch}'
|
||||
--
|
||||
1.8.3.1
|
||||
2.22.0
|
||||
|
||||
|
@ -11,10 +11,10 @@ Subject: [PATCH] Prevent duplicated paths when empty version string is
|
||||
3 files changed, 15 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 999e2d6d5d..11fc237552 100644
|
||||
index c42436c23d..d261ea57b5 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -4251,7 +4251,8 @@ AS_CASE(["$ruby_version_dir_name"],
|
||||
@@ -3743,7 +3743,8 @@ AS_CASE(["$ruby_version_dir_name"],
|
||||
ruby_version_dir=/'${ruby_version_dir_name}'
|
||||
|
||||
if test -z "${ruby_version_dir_name}"; then
|
||||
@ -66,7 +66,7 @@ diff --git a/tool/mkconfig.rb b/tool/mkconfig.rb
|
||||
index 07076d4..35e6c3c 100755
|
||||
--- a/tool/mkconfig.rb
|
||||
+++ b/tool/mkconfig.rb
|
||||
@@ -111,7 +111,7 @@
|
||||
@@ -114,7 +114,7 @@
|
||||
val = val.gsub(/\$(?:\$|\{?(\w+)\}?)/) {$1 ? "$(#{$1})" : $&}.dump
|
||||
case name
|
||||
when /^prefix$/
|
||||
|
@ -8,10 +8,10 @@ Subject: [PATCH] Always use i386.
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index b77e88fc37..6bba453e3c 100644
|
||||
index 3c13076b82..93af30321d 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -4315,6 +4315,8 @@ AC_SUBST(vendorarchdir)dnl
|
||||
@@ -3807,6 +3807,8 @@ AC_SUBST(vendorarchdir)dnl
|
||||
AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl
|
||||
AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl
|
||||
|
||||
|
@ -5,17 +5,17 @@ Subject: [PATCH] Allow to install RubyGems into custom location, outside of
|
||||
Ruby tree.
|
||||
|
||||
---
|
||||
configure.ac | 5 +++++
|
||||
loadpath.c | 4 ++++
|
||||
template/verconf.h.tmpl | 3 +++
|
||||
tool/rbinstall.rb | 7 +++++++
|
||||
4 files changed, 19 insertions(+)
|
||||
configure.ac | 5 +++++
|
||||
loadpath.c | 4 ++++
|
||||
template/verconf.h.tmpl | 3 +++
|
||||
tool/rbinstall.rb | 10 ++++++++++
|
||||
4 files changed, 22 insertions(+)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 6bba453e3c..028ef7ca3e 100644
|
||||
index 93af30321d..bc13397e0e 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -4287,6 +4287,10 @@ AC_ARG_WITH(vendorarchdir,
|
||||
@@ -3779,6 +3779,10 @@ AC_ARG_WITH(vendorarchdir,
|
||||
[vendorarchdir=$withval],
|
||||
[vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby'${ruby_version_dir}}${multiarch-'${vendorlibdir}/${sitearch}'}])
|
||||
|
||||
@ -26,7 +26,7 @@ index 6bba453e3c..028ef7ca3e 100644
|
||||
AS_IF([test "${LOAD_RELATIVE+set}"], [
|
||||
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
|
||||
RUBY_EXEC_PREFIX=''
|
||||
@@ -4311,6 +4315,7 @@ AC_SUBST(sitearchdir)dnl
|
||||
@@ -3803,6 +3807,7 @@ AC_SUBST(sitearchdir)dnl
|
||||
AC_SUBST(vendordir)dnl
|
||||
AC_SUBST(vendorlibdir)dnl
|
||||
AC_SUBST(vendorarchdir)dnl
|
||||
@ -67,24 +67,27 @@ diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
|
||||
index b47b6e1..0b99408 100755
|
||||
--- a/tool/rbinstall.rb
|
||||
+++ b/tool/rbinstall.rb
|
||||
@@ -331,6 +331,7 @@ def CONFIG.[](name, mandatory = false)
|
||||
sitearchlibdir = CONFIG["sitearchdir"]
|
||||
vendorlibdir = CONFIG["vendorlibdir"]
|
||||
vendorarchlibdir = CONFIG["vendorarchdir"]
|
||||
@@ -343,6 +343,7 @@ def CONFIG.[](name, mandatory = false)
|
||||
vendorlibdir = CONFIG["vendorlibdir"]
|
||||
vendorarchlibdir = CONFIG["vendorarchdir"]
|
||||
end
|
||||
+rubygemsdir = CONFIG["rubygemsdir"]
|
||||
mandir = CONFIG["mandir", true]
|
||||
docdir = CONFIG["docdir", true]
|
||||
configure_args = Shellwords.shellwords(CONFIG["configure_args"])
|
||||
@@ -537,7 +538,13 @@ def install(src, cmd)
|
||||
enable_shared = CONFIG["ENABLE_SHARED"] == 'yes'
|
||||
@@ -570,7 +571,16 @@ def stub
|
||||
install?(:local, :comm, :lib) do
|
||||
prepare "library scripts", rubylibdir
|
||||
noinst = %w[*.txt *.rdoc *.gemspec]
|
||||
+ noinst += %w[rubygems.rb rubygems/ datadir.rb] if rubygemsdir
|
||||
+ # Bundler carries "rubygems.rb" file, so it must be specialcased :/
|
||||
+ noinst += %w[rubygems.rb rubygems/ bundler.rb bundler/] if rubygemsdir
|
||||
install_recursive(File.join(srcdir, "lib"), rubylibdir, :no_install => noinst, :mode => $data_mode)
|
||||
+ if rubygemsdir
|
||||
+ noinst = %w[obsolete.rb]
|
||||
+ install_recursive(File.join(srcdir, "lib", "rubygems"), File.join(rubygemsdir, "rubygems"), :mode => $data_mode)
|
||||
+ noinst = %w[*.txt *.rdoc *.gemspec]
|
||||
+ install_recursive(File.join(srcdir, "lib", "rubygems"), File.join(rubygemsdir, "rubygems"), :no_install => noinst, :mode => $data_mode)
|
||||
+ install(File.join(srcdir, "lib", "rubygems.rb"), File.join(rubygemsdir, "rubygems.rb"), :mode => $data_mode)
|
||||
+ install_recursive(File.join(srcdir, "lib", "bundler"), File.join(rubylibdir, "bundler"), :no_install => noinst, :mode => $data_mode)
|
||||
+ install(File.join(srcdir, "lib", "bundler.rb"), rubylibdir, :mode => $data_mode)
|
||||
+ end
|
||||
end
|
||||
|
||||
|
@ -1,28 +0,0 @@
|
||||
From 07eb5f5e775dec01a92a8b13910eaced9e8ee0cd Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Tue, 2 Dec 2014 10:56:58 +0100
|
||||
Subject: [PATCH] Generate preludes using miniruby.
|
||||
|
||||
---
|
||||
common.mk | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/common.mk b/common.mk
|
||||
index 168dc52..20c218a 100644
|
||||
--- a/common.mk
|
||||
+++ b/common.mk
|
||||
@@ -962,9 +962,9 @@ $(MINIPRELUDE_C): $(COMPILE_PRELUDE)
|
||||
$(srcdir)/template/prelude.c.tmpl
|
||||
|
||||
$(PRELUDE_C): $(COMPILE_PRELUDE) \
|
||||
- $(PRELUDE_SCRIPTS)
|
||||
+ $(PRELUDE_SCRIPTS) $(PREP)
|
||||
$(ECHO) generating $@
|
||||
- $(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb -I$(srcdir) -c -o $@ \
|
||||
+ $(Q) $(MINIRUBY) $(srcdir)/tool/generic_erb.rb -I$(srcdir) -c -o $@ \
|
||||
$(srcdir)/template/prelude.c.tmpl $(PRELUDE_SCRIPTS)
|
||||
|
||||
{$(VPATH)}golf_prelude.c: $(COMPILE_PRELUDE) {$(srcdir)}golf_prelude.rb
|
||||
--
|
||||
2.6.3
|
||||
|
@ -12,15 +12,15 @@ ruby_version_dir_name now specifies custom version string for versioned
|
||||
directories, e.g. instead of default X.Y.Z, you can specify whatever
|
||||
string.
|
||||
---
|
||||
configure.ac | 64 ++++++++++++++++++++++++++++-------------------------
|
||||
configure.ac | 64 ++++++++++++++++++++++++---------------------
|
||||
template/ruby.pc.in | 1 +
|
||||
2 files changed, 35 insertions(+), 30 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 8ea969412f..a00f2b6776 100644
|
||||
index 80b137e380..63cd3b4f8b 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -4202,9 +4202,6 @@ AS_CASE(["$target_os"],
|
||||
@@ -3694,9 +3694,6 @@ AS_CASE(["$target_os"],
|
||||
rubyw_install_name='$(RUBYW_INSTALL_NAME)'
|
||||
])
|
||||
|
||||
@ -30,7 +30,7 @@ index 8ea969412f..a00f2b6776 100644
|
||||
rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'}
|
||||
AC_ARG_WITH(rubyarchprefix,
|
||||
AS_HELP_STRING([--with-rubyarchprefix=DIR],
|
||||
@@ -4227,56 +4224,62 @@ AC_ARG_WITH(ridir,
|
||||
@@ -3719,56 +3716,62 @@ AC_ARG_WITH(ridir,
|
||||
AC_SUBST(ridir)
|
||||
AC_SUBST(RI_BASE_NAME)
|
||||
|
||||
@ -120,7 +120,7 @@ index 8ea969412f..a00f2b6776 100644
|
||||
|
||||
AS_IF([test "${LOAD_RELATIVE+set}"], [
|
||||
AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
|
||||
@@ -4293,6 +4296,7 @@ AC_SUBST(sitearchincludedir)dnl
|
||||
@@ -3785,6 +3788,7 @@ AC_SUBST(sitearchincludedir)dnl
|
||||
AC_SUBST(arch)dnl
|
||||
AC_SUBST(sitearch)dnl
|
||||
AC_SUBST(ruby_version)dnl
|
||||
@ -171,58 +171,50 @@ diff --git a/tool/rbinstall.rb b/tool/rbinstall.rb
|
||||
index d4c110e..d39c9a6 100755
|
||||
--- a/tool/rbinstall.rb
|
||||
+++ b/tool/rbinstall.rb
|
||||
@@ -417,7 +417,7 @@ def CONFIG.[](name, mandatory = false)
|
||||
@@ -433,7 +433,7 @@ def CONFIG.[](name, mandatory = false)
|
||||
|
||||
install?(:doc, :rdoc) do
|
||||
if $rdocdir
|
||||
- ridatadir = File.join(CONFIG['ridir'], CONFIG['ruby_version'], "system")
|
||||
+ ridatadir = File.join(CONFIG['ridir'], CONFIG['ruby_version_dir_name'] || CONFIG['ruby_version'], "system")
|
||||
prepare "rdoc", ridatadir
|
||||
install_recursive($rdocdir, ridatadir, :mode => $data_mode)
|
||||
install_recursive($rdocdir, ridatadir, :no_install => rdoc_noinst, :mode => $data_mode)
|
||||
end
|
||||
--
|
||||
2.1.0
|
||||
2.23.0
|
||||
|
||||
|
||||
From f8d136f9a46d1fe87eba622ab9665935d05e981b 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>
|
||||
Date: Tue, 31 Mar 2015 16:37:44 +0200
|
||||
Subject: [PATCH 3/4] Add ruby_version_dir_name support for RubyGems.
|
||||
|
||||
---
|
||||
lib/rubygems/defaults.rb | 11 ++++++-----
|
||||
test/rubygems/test_gem.rb | 5 +++--
|
||||
2 files changed, 9 insertions(+), 7 deletions(-)
|
||||
lib/rubygems/defaults.rb | 9 +++++----
|
||||
test/rubygems/test_gem.rb | 5 +++--
|
||||
2 files changed, 8 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb
|
||||
index 55ca080..75eea2b 100644
|
||||
index d4ff4a262c..3f9a5bf590 100644
|
||||
--- a/lib/rubygems/defaults.rb
|
||||
+++ b/lib/rubygems/defaults.rb
|
||||
@@ -32,20 +32,20 @@ def self.default_dir
|
||||
@@ -32,13 +32,13 @@ def self.default_dir
|
||||
[
|
||||
File.dirname(RbConfig::CONFIG['sitedir']),
|
||||
'Gems',
|
||||
- RbConfig::CONFIG['ruby_version']
|
||||
+ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
|
||||
]
|
||||
elsif RbConfig::CONFIG['rubylibprefix'] then
|
||||
[
|
||||
RbConfig::CONFIG['rubylibprefix'],
|
||||
'gems',
|
||||
- RbConfig::CONFIG['ruby_version']
|
||||
+ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
|
||||
]
|
||||
else
|
||||
[
|
||||
RbConfig::CONFIG['libdir'],
|
||||
ruby_engine,
|
||||
RbConfig::CONFIG['rubylibprefix'],
|
||||
'gems',
|
||||
- RbConfig::CONFIG['ruby_version']
|
||||
+ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
|
||||
]
|
||||
end
|
||||
|
||||
@@ -75,7 +75,8 @@ def self.default_rubygems_dirs
|
||||
@@ -75,7 +75,8 @@ def self.default_specifications_dir
|
||||
|
||||
def self.user_dir
|
||||
parts = [Gem.user_home, '.gem', ruby_engine]
|
||||
@ -232,7 +224,7 @@ index 55ca080..75eea2b 100644
|
||||
File.join parts
|
||||
end
|
||||
|
||||
@@ -172,7 +173,7 @@ def self.vendor_dir # :nodoc:
|
||||
@@ -158,7 +159,7 @@ def self.vendor_dir # :nodoc:
|
||||
return nil unless RbConfig::CONFIG.key? 'vendordir'
|
||||
|
||||
File.join RbConfig::CONFIG['vendordir'], 'gems',
|
||||
@ -242,10 +234,10 @@ index 55ca080..75eea2b 100644
|
||||
|
||||
##
|
||||
diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb
|
||||
index 0428bea..b6e090e 100644
|
||||
index b25068405d..e9fef4a311 100644
|
||||
--- a/test/rubygems/test_gem.rb
|
||||
+++ b/test/rubygems/test_gem.rb
|
||||
@@ -1156,7 +1156,8 @@ def test_self_use_paths
|
||||
@@ -1378,7 +1378,8 @@ def test_self_use_paths
|
||||
|
||||
def test_self_user_dir
|
||||
parts = [@userhome, '.gem', Gem.ruby_engine]
|
||||
@ -255,15 +247,15 @@ index 0428bea..b6e090e 100644
|
||||
|
||||
assert_equal File.join(parts), Gem.user_dir
|
||||
end
|
||||
@@ -1283,7 +1284,7 @@ def test_self_user_home_user_drive_and_path
|
||||
def test_self_vendor_dir
|
||||
expected =
|
||||
File.join RbConfig::CONFIG['vendordir'], 'gems',
|
||||
- RbConfig::CONFIG['ruby_version']
|
||||
+ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
|
||||
@@ -1454,7 +1455,7 @@ def test_self_vendor_dir
|
||||
vendordir(File.join(@tempdir, 'vendor')) do
|
||||
expected =
|
||||
File.join RbConfig::CONFIG['vendordir'], 'gems',
|
||||
- RbConfig::CONFIG['ruby_version']
|
||||
+ RbConfig::CONFIG['ruby_version_dir_name'] || RbConfig::CONFIG['ruby_version']
|
||||
|
||||
assert_equal expected, Gem.vendor_dir
|
||||
end
|
||||
assert_equal expected, Gem.vendor_dir
|
||||
end
|
||||
--
|
||||
2.1.0
|
||||
|
||||
@ -282,7 +274,7 @@ diff --git a/configure.ac b/configure.ac
|
||||
index a00f2b6776..999e2d6d5d 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -164,7 +164,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"`
|
||||
@@ -98,7 +98,7 @@ RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"`
|
||||
RUBYW_BASE_NAME=`echo rubyw | sed "$program_transform_name"`
|
||||
AC_SUBST(RUBY_BASE_NAME)
|
||||
AC_SUBST(RUBYW_BASE_NAME)
|
||||
|
@ -8,14 +8,14 @@ on Red Hat platforms.
|
||||
|
||||
This workaround rhbz#1361037
|
||||
---
|
||||
test/fiddle/helper.rb | 92 ---------------------------------------------------
|
||||
1 file changed, 92 deletions(-)
|
||||
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,95 +6,6 @@
|
||||
@@ -6,115 +6,6 @@
|
||||
|
||||
libc_so = libm_so = nil
|
||||
|
||||
@ -23,12 +23,28 @@ index 1da3d93..65148a1 100644
|
||||
-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 [0].pack('L!').size
|
||||
- case RbConfig::SIZEOF['void*']
|
||||
- when 4
|
||||
- # 32-bit ruby
|
||||
- libdir = '/lib32' if File.directory? '/lib32'
|
||||
- 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'
|
||||
@ -40,8 +56,7 @@ index 1da3d93..65148a1 100644
|
||||
- crtname = RbConfig::CONFIG["RUBY_SO_NAME"][/msvc\w+/] || 'ucrtbase'
|
||||
- libc_so = libm_so = "#{crtname}.dll"
|
||||
-when /darwin/
|
||||
- libc_so = "/usr/lib/libc.dylib"
|
||||
- libm_so = "/usr/lib/libm.dylib"
|
||||
- libc_so = libm_so = "/usr/lib/libSystem.B.dylib"
|
||||
-when /kfreebsd/
|
||||
- libc_so = "/lib/libc.so.0.1"
|
||||
- libm_so = "/lib/libm.so.1"
|
||||
@ -59,7 +74,7 @@ index 1da3d93..65148a1 100644
|
||||
- libm_so = "/usr/lib/libm.so"
|
||||
-when /solaris/
|
||||
- libdir = '/lib'
|
||||
- case [0].pack('L!').size
|
||||
- case RbConfig::SIZEOF['void*']
|
||||
- when 4
|
||||
- # 32-bit ruby
|
||||
- libdir = '/lib' if File.directory? '/lib'
|
||||
@ -107,10 +122,15 @@ index 1da3d93..65148a1 100644
|
||||
-
|
||||
-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
|
||||
ldd = `ldd #{ruby}`
|
||||
# When the ruby binary is 32-bit and the host is 64-bit,
|
||||
--
|
||||
2.9.2
|
||||
|
||||
|
@ -1,80 +0,0 @@
|
||||
From 60eb961c25f801ee43ca1be9393ab2f0a0546677 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Tue, 19 Dec 2017 14:00:20 +0100
|
||||
Subject: [PATCH] Add Gem.operating_system_defaults to allow packagers to
|
||||
override defaults.
|
||||
|
||||
This change allows Ruby packagers to override defaults and lazily query
|
||||
them.
|
||||
|
||||
This is very much the same change as #1644 to treat the
|
||||
operating_system defaults the same way as platform defaults.
|
||||
---
|
||||
lib/rubygems/config_file.rb | 2 +-
|
||||
lib/rubygems/defaults.rb | 21 ++++++++++++++++++++-
|
||||
test/rubygems/test_gem.rb | 7 +++++++
|
||||
3 files changed, 28 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/lib/rubygems/config_file.rb b/lib/rubygems/config_file.rb
|
||||
index a4efed0f5a..deee38e6d9 100644
|
||||
--- a/lib/rubygems/config_file.rb
|
||||
+++ b/lib/rubygems/config_file.rb
|
||||
@@ -48,7 +48,7 @@ class Gem::ConfigFile
|
||||
# For Ruby packagers to set configuration defaults. Set in
|
||||
# rubygems/defaults/operating_system.rb
|
||||
|
||||
- OPERATING_SYSTEM_DEFAULTS = {}
|
||||
+ OPERATING_SYSTEM_DEFAULTS = Gem.operating_system_defaults
|
||||
|
||||
##
|
||||
# For Ruby implementers to set configuration defaults. Set in
|
||||
diff --git a/lib/rubygems/defaults.rb b/lib/rubygems/defaults.rb
|
||||
index 43d57fc808..b8222877ae 100644
|
||||
--- a/lib/rubygems/defaults.rb
|
||||
+++ b/lib/rubygems/defaults.rb
|
||||
@@ -177,7 +177,26 @@ def self.vendor_dir # :nodoc:
|
||||
end
|
||||
|
||||
##
|
||||
- # Default options for gem commands.
|
||||
+ # Default options for gem commands for Ruby packagers.
|
||||
+ #
|
||||
+ # The options here should be structured as an array of string "gem"
|
||||
+ # command names as keys and a string of the default options as values.
|
||||
+ #
|
||||
+ # Example:
|
||||
+ #
|
||||
+ # def self.operating_system_defaults
|
||||
+ # {
|
||||
+ # 'install' => '--no-rdoc --no-ri --env-shebang',
|
||||
+ # 'update' => '--no-rdoc --no-ri --env-shebang'
|
||||
+ # }
|
||||
+ # end
|
||||
+
|
||||
+ def self.operating_system_defaults
|
||||
+ {}
|
||||
+ end
|
||||
+
|
||||
+ ##
|
||||
+ # Default options for gem commands for Ruby implementers.
|
||||
#
|
||||
# The options here should be structured as an array of string "gem"
|
||||
# command names as keys and a string of the default options as values.
|
||||
diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb
|
||||
index 3225a05c6b..62b80c4945 100644
|
||||
--- a/test/rubygems/test_gem.rb
|
||||
+++ b/test/rubygems/test_gem.rb
|
||||
@@ -1802,6 +1802,13 @@ def test_use_gemdeps_specific
|
||||
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
|
||||
end
|
||||
|
||||
+ def test_operating_system_defaults
|
||||
+ operating_system_defaults = Gem.operating_system_defaults
|
||||
+
|
||||
+ assert operating_system_defaults != nil
|
||||
+ assert operating_system_defaults.is_a? Hash
|
||||
+ end
|
||||
+
|
||||
def test_platform_defaults
|
||||
platform_defaults = Gem.platform_defaults
|
||||
|
@ -1,35 +0,0 @@
|
||||
From 51e2c91412a511196e58efea5b87c460b4fa6a20 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Thu, 26 Jul 2018 13:17:52 +0200
|
||||
Subject: [PATCH] Avoid need of C++ compiler to pass the test suite.
|
||||
|
||||
The test suite fails when C++ compiler is not available on the system:
|
||||
|
||||
~~~
|
||||
TestGemExtCmakeBuilder#test_self_build:
|
||||
Gem::InstallError: cmake failed, exit code 1
|
||||
/builddir/build/BUILD/ruby-2.5.1/lib/rubygems/ext/builder.rb:92:in `run'
|
||||
/builddir/build/BUILD/ruby-2.5.1/lib/rubygems/ext/cmake_builder.rb:10:in `build'
|
||||
/builddir/build/BUILD/ruby-2.5.1/test/rubygems/test_gem_ext_cmake_builder.rb:37:in `block in test_self_build'
|
||||
/builddir/build/BUILD/ruby-2.5.1/test/rubygems/test_gem_ext_cmake_builder.rb:36:in `chdir'
|
||||
/builddir/build/BUILD/ruby-2.5.1/test/rubygems/test_gem_ext_cmake_builder.rb:36:in `test_self_build'
|
||||
~~~
|
||||
|
||||
But there is nothing which would realy required C++. It is just CMake
|
||||
default to check for C++.
|
||||
---
|
||||
test/rubygems/test_gem_ext_cmake_builder.rb | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/test/rubygems/test_gem_ext_cmake_builder.rb b/test/rubygems/test_gem_ext_cmake_builder.rb
|
||||
index 76d3cb2afe..2d449fc2fd 100644
|
||||
--- a/test/rubygems/test_gem_ext_cmake_builder.rb
|
||||
+++ b/test/rubygems/test_gem_ext_cmake_builder.rb
|
||||
@@ -25,6 +25,7 @@ def test_self_build
|
||||
File.open File.join(@ext, 'CMakeLists.txt'), 'w' do |cmakelists|
|
||||
cmakelists.write <<-eo_cmake
|
||||
cmake_minimum_required(VERSION 2.6)
|
||||
+project(self_build LANGUAGES NONE)
|
||||
install (FILES test.txt DESTINATION bin)
|
||||
eo_cmake
|
||||
end
|
@ -1,112 +0,0 @@
|
||||
From 71057ca5963108bac1e2c31bd0e8e205ba74cc19 Mon Sep 17 00:00:00 2001
|
||||
From: Kazuki Yamaguchi <k@rhe.jp>
|
||||
Date: Fri, 11 May 2018 13:43:32 +0900
|
||||
Subject: [PATCH 1/2] test/test_pkey_rsa: fix test failure with OpenSSL 1.1.1
|
||||
|
||||
OpenSSL 1.1.1 raised the minimum size for RSA keys to 512 bits.
|
||||
---
|
||||
test/openssl/test_pkey_rsa.rb | 9 ++++++++-
|
||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/test/openssl/test_pkey_rsa.rb b/test/openssl/test_pkey_rsa.rb
|
||||
index c1205563..b4393e68 100644
|
||||
--- a/test/openssl/test_pkey_rsa.rb
|
||||
+++ b/test/openssl/test_pkey_rsa.rb
|
||||
@@ -60,6 +60,13 @@ def test_new_with_exponent
|
||||
end
|
||||
end
|
||||
|
||||
+ def test_generate
|
||||
+ key = OpenSSL::PKey::RSA.generate(512, 17)
|
||||
+ assert_equal 512, key.n.num_bits
|
||||
+ assert_equal 17, key.e
|
||||
+ assert_not_nil key.d
|
||||
+ end
|
||||
+
|
||||
def test_new_break
|
||||
assert_nil(OpenSSL::PKey::RSA.new(1024) { break })
|
||||
assert_raise(RuntimeError) do
|
||||
@@ -256,7 +263,7 @@ def test_pem_passwd
|
||||
end
|
||||
|
||||
def test_dup
|
||||
- key = OpenSSL::PKey::RSA.generate(256, 17)
|
||||
+ key = Fixtures.pkey("rsa1024")
|
||||
key2 = key.dup
|
||||
assert_equal key.params, key2.params
|
||||
key2.set_key(key2.n, 3, key2.d)
|
||||
|
||||
From a5e26bc1345fe325bdc619f9b1768b7ad3c94214 Mon Sep 17 00:00:00 2001
|
||||
From: Kazuki Yamaguchi <k@rhe.jp>
|
||||
Date: Fri, 11 May 2018 14:12:39 +0900
|
||||
Subject: [PATCH 2/2] test/test_ssl_session: set client protocol version
|
||||
explicitly
|
||||
|
||||
Clients that implement TLS 1.3's Middlebox Compatibility Mode will
|
||||
always provide a non-empty session ID in the ClientHello. This means
|
||||
the "get" callback for the server-side session caching may be called
|
||||
for the initial connection.
|
||||
---
|
||||
test/openssl/test_ssl_session.rb | 14 +++++++++-----
|
||||
1 file changed, 9 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/test/openssl/test_ssl_session.rb b/test/openssl/test_ssl_session.rb
|
||||
index af8c65b1..6db0c2d1 100644
|
||||
--- a/test/openssl/test_ssl_session.rb
|
||||
+++ b/test/openssl/test_ssl_session.rb
|
||||
@@ -198,7 +198,9 @@ def test_server_session_cache
|
||||
first_session = nil
|
||||
10.times do |i|
|
||||
connections = i
|
||||
- server_connect_with_session(port, nil, first_session) { |ssl|
|
||||
+ cctx = OpenSSL::SSL::SSLContext.new
|
||||
+ cctx.ssl_version = :TLSv1_2
|
||||
+ server_connect_with_session(port, cctx, first_session) { |ssl|
|
||||
ssl.puts("abc"); assert_equal "abc\n", ssl.gets
|
||||
first_session ||= ssl.session
|
||||
|
||||
@@ -257,6 +259,8 @@ def test_ctx_server_session_cb
|
||||
|
||||
connections = nil
|
||||
called = {}
|
||||
+ cctx = OpenSSL::SSL::SSLContext.new
|
||||
+ cctx.ssl_version = :TLSv1_2
|
||||
sctx = nil
|
||||
ctx_proc = Proc.new { |ctx|
|
||||
sctx = ctx
|
||||
@@ -292,7 +296,7 @@ def test_ctx_server_session_cb
|
||||
}
|
||||
start_server(ctx_proc: ctx_proc) do |port|
|
||||
connections = 0
|
||||
- sess0 = server_connect_with_session(port, nil, nil) { |ssl|
|
||||
+ sess0 = server_connect_with_session(port, cctx, nil) { |ssl|
|
||||
ssl.puts("abc"); assert_equal "abc\n", ssl.gets
|
||||
assert_equal false, ssl.session_reused?
|
||||
ssl.session
|
||||
@@ -307,7 +311,7 @@ def test_ctx_server_session_cb
|
||||
|
||||
# Internal cache hit
|
||||
connections = 1
|
||||
- server_connect_with_session(port, nil, sess0.dup) { |ssl|
|
||||
+ server_connect_with_session(port, cctx, sess0.dup) { |ssl|
|
||||
ssl.puts("abc"); assert_equal "abc\n", ssl.gets
|
||||
assert_equal true, ssl.session_reused?
|
||||
ssl.session
|
||||
@@ -328,7 +332,7 @@ def test_ctx_server_session_cb
|
||||
|
||||
# External cache hit
|
||||
connections = 2
|
||||
- sess2 = server_connect_with_session(port, nil, sess0.dup) { |ssl|
|
||||
+ sess2 = server_connect_with_session(port, cctx, sess0.dup) { |ssl|
|
||||
ssl.puts("abc"); assert_equal "abc\n", ssl.gets
|
||||
if !ssl.session_reused? && openssl?(1, 1, 0) && !openssl?(1, 1, 0, 7)
|
||||
# OpenSSL >= 1.1.0, < 1.1.0g
|
||||
@@ -355,7 +359,7 @@ def test_ctx_server_session_cb
|
||||
|
||||
# Cache miss
|
||||
connections = 3
|
||||
- sess3 = server_connect_with_session(port, nil, sess0.dup) { |ssl|
|
||||
+ sess3 = server_connect_with_session(port, cctx, sess0.dup) { |ssl|
|
||||
ssl.puts("abc"); assert_equal "abc\n", ssl.gets
|
||||
assert_equal false, ssl.session_reused?
|
||||
ssl.session
|
@ -1,115 +0,0 @@
|
||||
From 584b5929f9b769c4d0b03e322a9fddf2b2dd3454 Mon Sep 17 00:00:00 2001
|
||||
From: nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>
|
||||
Date: Sun, 1 Apr 2018 13:02:11 +0000
|
||||
Subject: [PATCH] test_time_tz.rb: Kiritimati tzdata fix
|
||||
|
||||
* test/ruby/test_time_tz.rb (gen_zdump_test): fix the expected
|
||||
data at the Kiritimati's skip of New Year's Eve 1994.
|
||||
[Bug #14655]
|
||||
|
||||
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63055 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
||||
---
|
||||
test/ruby/test_time_tz.rb | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/test/ruby/test_time_tz.rb b/test/ruby/test_time_tz.rb
|
||||
index dfe139033ed3..ac5f81892878 100644
|
||||
--- a/test/ruby/test_time_tz.rb
|
||||
+++ b/test/ruby/test_time_tz.rb
|
||||
@@ -364,9 +364,18 @@ def self.gen_zdump_test(data)
|
||||
Europe/London Sun Aug 10 01:00:00 1947 UTC = Sun Aug 10 02:00:00 1947 BST isdst=1 gmtoff=3600
|
||||
Europe/London Sun Nov 2 01:59:59 1947 UTC = Sun Nov 2 02:59:59 1947 BST isdst=1 gmtoff=3600
|
||||
Europe/London Sun Nov 2 02:00:00 1947 UTC = Sun Nov 2 02:00:00 1947 GMT isdst=0 gmtoff=0
|
||||
+End
|
||||
+ if CORRECT_KIRITIMATI_SKIP_1994
|
||||
+ gen_zdump_test <<'End'
|
||||
+Pacific/Kiritimati Sat Dec 31 09:59:59 1994 UTC = Fri Dec 30 23:59:59 1994 LINT isdst=0 gmtoff=-36000
|
||||
+Pacific/Kiritimati Sat Dec 31 10:00:00 1994 UTC = Sun Jan 1 00:00:00 1995 LINT isdst=0 gmtoff=50400
|
||||
+End
|
||||
+ else
|
||||
+ gen_zdump_test <<'End'
|
||||
Pacific/Kiritimati Sun Jan 1 09:59:59 1995 UTC = Sat Dec 31 23:59:59 1994 LINT isdst=0 gmtoff=-36000
|
||||
Pacific/Kiritimati Sun Jan 1 10:00:00 1995 UTC = Mon Jan 2 00:00:00 1995 LINT isdst=0 gmtoff=50400
|
||||
End
|
||||
+ end
|
||||
gen_zdump_test <<'End' if has_right_tz
|
||||
right/America/Los_Angeles Fri Jun 30 23:59:60 1972 UTC = Fri Jun 30 16:59:60 1972 PDT isdst=1 gmtoff=-25200
|
||||
right/America/Los_Angeles Wed Dec 31 23:59:60 2008 UTC = Wed Dec 31 15:59:60 2008 PST isdst=0 gmtoff=-28800
|
||||
--
|
||||
|
||||
From 2965c2d4df78e6f5acf8759f84c88ce14a4e70f1 Mon Sep 17 00:00:00 2001
|
||||
From: nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>
|
||||
Date: Sun, 1 Apr 2018 02:00:36 +0000
|
||||
Subject: [PATCH] test_time_tz.rb: Kiritimati tzdata fix
|
||||
|
||||
* test/ruby/test_time_tz.rb (TestTimeTZ#test_pacific_kiritimati):
|
||||
fix the expected data at the skip of New Year's Eve 1994.
|
||||
[Bug #14655]
|
||||
|
||||
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63054 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
||||
---
|
||||
test/ruby/test_time_tz.rb | 17 ++++++++++++++---
|
||||
1 file changed, 14 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/test/ruby/test_time_tz.rb b/test/ruby/test_time_tz.rb
|
||||
index 39b830d28a3d..dfe139033ed3 100644
|
||||
--- a/test/ruby/test_time_tz.rb
|
||||
+++ b/test/ruby/test_time_tz.rb
|
||||
@@ -89,6 +89,9 @@ def group_by(e, &block)
|
||||
Time.local(1951, 5, 6, 1, 0, 0).dst? # DST with fixed tzdata
|
||||
end
|
||||
}
|
||||
+ CORRECT_KIRITIMATI_SKIP_1994 = with_tz("Pacific/Kiritimati") {
|
||||
+ Time.local(1994, 12, 31, 0, 0, 0).year == 1995
|
||||
+ }
|
||||
|
||||
def time_to_s(t)
|
||||
t.to_s
|
||||
@@ -178,9 +181,17 @@ def test_europe_lisbon
|
||||
|
||||
def test_pacific_kiritimati
|
||||
with_tz(tz="Pacific/Kiritimati") {
|
||||
- assert_time_constructor(tz, "1994-12-31 23:59:59 -1000", :local, [1994,12,31,23,59,59])
|
||||
- assert_time_constructor(tz, "1995-01-02 00:00:00 +1400", :local, [1995,1,1,0,0,0])
|
||||
- assert_time_constructor(tz, "1995-01-02 23:59:59 +1400", :local, [1995,1,1,23,59,59])
|
||||
+ assert_time_constructor(tz, "1994-12-30 00:00:00 -1000", :local, [1994,12,30,0,0,0])
|
||||
+ assert_time_constructor(tz, "1994-12-30 23:59:59 -1000", :local, [1994,12,30,23,59,59])
|
||||
+ if CORRECT_KIRITIMATI_SKIP_1994
|
||||
+ assert_time_constructor(tz, "1995-01-01 00:00:00 +1400", :local, [1994,12,31,0,0,0])
|
||||
+ assert_time_constructor(tz, "1995-01-01 23:59:59 +1400", :local, [1994,12,31,23,59,59])
|
||||
+ assert_time_constructor(tz, "1995-01-01 00:00:00 +1400", :local, [1995,1,1,0,0,0])
|
||||
+ else
|
||||
+ assert_time_constructor(tz, "1994-12-31 23:59:59 -1000", :local, [1994,12,31,23,59,59])
|
||||
+ assert_time_constructor(tz, "1995-01-02 00:00:00 +1400", :local, [1995,1,1,0,0,0])
|
||||
+ assert_time_constructor(tz, "1995-01-02 23:59:59 +1400", :local, [1995,1,1,23,59,59])
|
||||
+ end
|
||||
assert_time_constructor(tz, "1995-01-02 00:00:00 +1400", :local, [1995,1,2,0,0,0])
|
||||
}
|
||||
end
|
||||
--
|
||||
|
||||
From a0e6607a8172f9eaf9a15f03065736deb2035771 Mon Sep 17 00:00:00 2001
|
||||
From: nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>
|
||||
Date: Sun, 1 Apr 2018 13:16:14 +0000
|
||||
Subject: [PATCH] test_time_tz.rb: Lisbon tzdata fix
|
||||
|
||||
* test/ruby/test_time_tz.rb (gen_variational_zdump_test): Update
|
||||
Lisbon zdump data, which fixed the 1912-01-01 transition for
|
||||
Portugual and its colonies. [Bug #14655]
|
||||
|
||||
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63056 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
||||
---
|
||||
test/ruby/test_time_tz.rb | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/test/ruby/test_time_tz.rb b/test/ruby/test_time_tz.rb
|
||||
index ac5f81892878..b32caff9c539 100644
|
||||
--- a/test/ruby/test_time_tz.rb
|
||||
+++ b/test/ruby/test_time_tz.rb
|
||||
@@ -434,5 +434,6 @@ def self.gen_variational_zdump_test(hint, data)
|
||||
gen_variational_zdump_test "lisbon", <<'End' if has_lisbon_tz
|
||||
Europe/Lisbon Mon Jan 1 00:36:31 1912 UTC = Sun Dec 31 23:59:59 1911 LMT isdst=0 gmtoff=-2192
|
||||
Europe/Lisbon Mon Jan 1 00:36:44 1912 UT = Sun Dec 31 23:59:59 1911 LMT isdst=0 gmtoff=-2205
|
||||
+Europe/Lisbon Sun Dec 31 23:59:59 1911 UT = Sun Dec 31 23:23:14 1911 LMT isdst=0 gmtoff=-2205
|
||||
End
|
||||
end
|
@ -1,203 +0,0 @@
|
||||
From 6fcc6c0efc42d1c6325cf4bb0ca16e2a448cdbed Mon Sep 17 00:00:00 2001
|
||||
From: Kazuki Yamaguchi <k@rhe.jp>
|
||||
Date: Mon, 6 Aug 2018 20:51:42 +0900
|
||||
Subject: [PATCH] test/test_ssl: fix test failure with TLS 1.3
|
||||
|
||||
SSL_connect() on the client side may return before SSL_accept() on
|
||||
server side returns. This will fix test failures with OpenSSL's current
|
||||
master.
|
||||
---
|
||||
test/openssl/test_ssl.rb | 45 ++++++++++++++++++++++++++--------------
|
||||
test/openssl/test_ssl_session.rb | 1 +
|
||||
2 files changed, 31 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/test/openssl/test_ssl.rb b/test/openssl/test_ssl.rb
|
||||
index 7bb32adf..408c7d82 100644
|
||||
--- a/test/openssl/test_ssl.rb
|
||||
+++ b/test/openssl/test_ssl.rb
|
||||
@@ -47,6 +47,8 @@ def test_ssl_with_server_cert
|
||||
assert_equal 2, ssl.peer_cert_chain.size
|
||||
assert_equal @svr_cert.to_der, ssl.peer_cert_chain[0].to_der
|
||||
assert_equal @ca_cert.to_der, ssl.peer_cert_chain[1].to_der
|
||||
+
|
||||
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
|
||||
ensure
|
||||
ssl&.close
|
||||
sock&.close
|
||||
@@ -157,6 +159,7 @@ def test_sync_close
|
||||
sock = TCPSocket.new("127.0.0.1", port)
|
||||
ssl = OpenSSL::SSL::SSLSocket.new(sock)
|
||||
ssl.connect
|
||||
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
|
||||
ssl.close
|
||||
assert_not_predicate sock, :closed?
|
||||
ensure
|
||||
@@ -168,6 +171,7 @@ def test_sync_close
|
||||
ssl = OpenSSL::SSL::SSLSocket.new(sock)
|
||||
ssl.sync_close = true # !!
|
||||
ssl.connect
|
||||
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
|
||||
ssl.close
|
||||
assert_predicate sock, :closed?
|
||||
ensure
|
||||
@@ -259,7 +263,10 @@ def test_client_ca
|
||||
client_ca_from_server = sslconn.client_ca
|
||||
[@cli_cert, @cli_key]
|
||||
end
|
||||
- server_connect(port, ctx) { |ssl| assert_equal([@ca], client_ca_from_server) }
|
||||
+ server_connect(port, ctx) { |ssl|
|
||||
+ assert_equal([@ca], client_ca_from_server)
|
||||
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
|
||||
+ }
|
||||
}
|
||||
end
|
||||
|
||||
@@ -356,21 +363,16 @@ def test_verify_result
|
||||
}
|
||||
|
||||
start_server { |port|
|
||||
- sock = TCPSocket.new("127.0.0.1", port)
|
||||
ctx = OpenSSL::SSL::SSLContext.new
|
||||
ctx.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
||||
ctx.verify_callback = Proc.new do |preverify_ok, store_ctx|
|
||||
store_ctx.error = OpenSSL::X509::V_OK
|
||||
true
|
||||
end
|
||||
- ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx)
|
||||
- ssl.sync_close = true
|
||||
- begin
|
||||
- ssl.connect
|
||||
+ server_connect(port, ctx) { |ssl|
|
||||
assert_equal(OpenSSL::X509::V_OK, ssl.verify_result)
|
||||
- ensure
|
||||
- ssl.close
|
||||
- end
|
||||
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
|
||||
+ }
|
||||
}
|
||||
|
||||
start_server(ignore_listener_error: true) { |port|
|
||||
@@ -455,6 +457,8 @@ def test_post_connection_check
|
||||
|
||||
start_server { |port|
|
||||
server_connect(port) { |ssl|
|
||||
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
|
||||
+
|
||||
assert_raise(sslerr){ssl.post_connection_check("localhost.localdomain")}
|
||||
assert_raise(sslerr){ssl.post_connection_check("127.0.0.1")}
|
||||
assert(ssl.post_connection_check("localhost"))
|
||||
@@ -476,6 +482,8 @@ def test_post_connection_check
|
||||
@svr_cert = issue_cert(@svr, @svr_key, 4, exts, @ca_cert, @ca_key)
|
||||
start_server { |port|
|
||||
server_connect(port) { |ssl|
|
||||
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
|
||||
+
|
||||
assert(ssl.post_connection_check("localhost.localdomain"))
|
||||
assert(ssl.post_connection_check("127.0.0.1"))
|
||||
assert_raise(sslerr){ssl.post_connection_check("localhost")}
|
||||
@@ -496,6 +502,8 @@ def test_post_connection_check
|
||||
@svr_cert = issue_cert(@svr, @svr_key, 5, exts, @ca_cert, @ca_key)
|
||||
start_server { |port|
|
||||
server_connect(port) { |ssl|
|
||||
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
|
||||
+
|
||||
assert(ssl.post_connection_check("localhost.localdomain"))
|
||||
assert_raise(sslerr){ssl.post_connection_check("127.0.0.1")}
|
||||
assert_raise(sslerr){ssl.post_connection_check("localhost")}
|
||||
@@ -722,6 +730,8 @@ def test_tlsext_hostname
|
||||
ssl.connect
|
||||
assert_equal @cli_cert.serial, ssl.peer_cert.serial
|
||||
assert_predicate fooctx, :frozen?
|
||||
+
|
||||
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
|
||||
ensure
|
||||
ssl&.close
|
||||
sock.close
|
||||
@@ -733,6 +743,8 @@ def test_tlsext_hostname
|
||||
ssl.hostname = "bar.example.com"
|
||||
ssl.connect
|
||||
assert_equal @svr_cert.serial, ssl.peer_cert.serial
|
||||
+
|
||||
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
|
||||
ensure
|
||||
ssl&.close
|
||||
sock.close
|
||||
@@ -805,7 +817,8 @@ def test_verify_hostname_on_connect
|
||||
ssl = OpenSSL::SSL::SSLSocket.new(sock, ctx)
|
||||
ssl.hostname = name
|
||||
if expected_ok
|
||||
- assert_nothing_raised { ssl.connect }
|
||||
+ ssl.connect
|
||||
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
|
||||
else
|
||||
assert_handshake_error { ssl.connect }
|
||||
end
|
||||
@@ -1086,6 +1099,7 @@ def test_renegotiation_cb
|
||||
start_server_version(:SSLv23, ctx_proc) { |port|
|
||||
server_connect(port) { |ssl|
|
||||
assert_equal(1, num_handshakes)
|
||||
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
|
||||
}
|
||||
}
|
||||
end
|
||||
@@ -1104,6 +1118,7 @@ def test_alpn_protocol_selection_ary
|
||||
ctx.alpn_protocols = advertised
|
||||
server_connect(port, ctx) { |ssl|
|
||||
assert_equal(advertised.first, ssl.alpn_protocol)
|
||||
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
|
||||
}
|
||||
}
|
||||
end
|
||||
@@ -1226,14 +1241,11 @@ def test_npn_selected_protocol_too_long
|
||||
end
|
||||
|
||||
def test_close_after_socket_close
|
||||
- server_proc = proc { |ctx, ssl|
|
||||
- # Do nothing
|
||||
- }
|
||||
- start_server(server_proc: server_proc) { |port|
|
||||
+ start_server { |port|
|
||||
sock = TCPSocket.new("127.0.0.1", port)
|
||||
ssl = OpenSSL::SSL::SSLSocket.new(sock)
|
||||
- ssl.sync_close = true
|
||||
ssl.connect
|
||||
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
|
||||
sock.close
|
||||
assert_nothing_raised do
|
||||
ssl.close
|
||||
@@ -1298,6 +1310,7 @@ def test_get_ephemeral_key
|
||||
ctx.ciphers = "DEFAULT:!kRSA:!kEDH"
|
||||
server_connect(port, ctx) { |ssl|
|
||||
assert_instance_of OpenSSL::PKey::EC, ssl.tmp_key
|
||||
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
|
||||
}
|
||||
end
|
||||
end
|
||||
@@ -1440,6 +1453,7 @@ def test_ecdh_curves
|
||||
assert_equal "secp384r1", ssl.tmp_key.group.curve_name
|
||||
end
|
||||
end
|
||||
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
|
||||
}
|
||||
|
||||
if openssl?(1, 0, 2) || libressl?(2, 5, 1)
|
||||
@@ -1455,6 +1469,7 @@ def test_ecdh_curves
|
||||
|
||||
server_connect(port, ctx) { |ssl|
|
||||
assert_equal "secp521r1", ssl.tmp_key.group.curve_name
|
||||
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
|
||||
}
|
||||
end
|
||||
end
|
||||
diff --git a/test/openssl/test_ssl_session.rb b/test/openssl/test_ssl_session.rb
|
||||
index 6db0c2d1..78b160ed 100644
|
||||
--- a/test/openssl/test_ssl_session.rb
|
||||
+++ b/test/openssl/test_ssl_session.rb
|
||||
@@ -113,6 +113,7 @@ def test_resumption
|
||||
non_resumable = nil
|
||||
start_server { |port|
|
||||
server_connect_with_session(port, nil, nil) { |ssl|
|
||||
+ ssl.puts "abc"; assert_equal "abc\n", ssl.gets
|
||||
non_resumable = ssl.session
|
||||
}
|
||||
}
|
@ -1,177 +0,0 @@
|
||||
From bb3db69e2a0c210cc3a63940622db96a97eb7947 Mon Sep 17 00:00:00 2001
|
||||
From: nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>
|
||||
Date: Fri, 2 Mar 2018 01:37:53 +0000
|
||||
Subject: [PATCH] configure.ac: library options to MAINLIBS
|
||||
|
||||
* configure.ac (MAINLIBS): moved library options for main program
|
||||
and static libruby, and append MAINLIBS to LIBRUBYARG_STATIC, as
|
||||
these libraries are not needed for linking to shared libruby.
|
||||
[ruby-core:85882] [Bug #14422]
|
||||
|
||||
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62627 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
||||
---
|
||||
configure.ac | 33 +++++++++++++++------------------
|
||||
template/ruby.pc.in | 1 +
|
||||
win32/Makefile.sub | 6 ++++--
|
||||
3 files changed, 20 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index aebbae1969a5..733a0c992fd7 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -10,6 +10,7 @@ AC_DISABLE_OPTION_CHECKING
|
||||
AC_ARG_VAR([cflags], [additional CFLAGS])
|
||||
AC_ARG_VAR([cppflags], [additional CPPFLAGS])
|
||||
AC_ARG_VAR([cxxflags], [additional CXXFLAGS])
|
||||
+ORIG_LIBS=$LIBS
|
||||
|
||||
AC_DEFUN([RUBY_RM_RECURSIVE], [
|
||||
m4_version_prereq([2.70], [-1], [
|
||||
@@ -2938,13 +2939,11 @@ AS_IF([test x"$enable_pthread" = xyes], [
|
||||
AC_DEFINE(_THREAD_SAFE)
|
||||
AC_DEFINE(HAVE_LIBPTHREAD)
|
||||
AC_CHECK_HEADERS(pthread_np.h, [], [], [@%:@include <pthread.h>])
|
||||
- AS_CASE([$pthread_lib],
|
||||
- [c], [],
|
||||
- [root], [],
|
||||
- [c_r], [MAINLIBS="-pthread $MAINLIBS"],
|
||||
- [AS_CASE(["$target_os"],
|
||||
- [openbsd*|mirbsd*], [LIBS="-pthread $LIBS"],
|
||||
- [LIBS="-l$pthread_lib $LIBS"])])
|
||||
+ AS_CASE(["$pthread_lib:$target_os"],
|
||||
+ [c:*], [],
|
||||
+ [root:*], [],
|
||||
+ [c_r:*|*:openbsd*|*:mirbsd*], [LIBS="-pthread $LIBS"],
|
||||
+ [LIBS="-l$pthread_lib $LIBS"])
|
||||
], [
|
||||
AC_MSG_WARN("Don't know how to find pthread library on your system -- thread support disabled")
|
||||
])
|
||||
@@ -3623,7 +3622,7 @@ LIBRUBY_A='lib$(RUBY_SO_NAME)-static.a'
|
||||
LIBRUBY='$(LIBRUBY_A)'
|
||||
LIBRUBYARG_STATIC='-l$(RUBY_SO_NAME)-static'
|
||||
LIBRUBYARG='$(LIBRUBYARG_STATIC)'
|
||||
-SOLIBS=
|
||||
+SOLIBS='$(MAINLIBS)'
|
||||
|
||||
AS_CASE(["$target_os"],
|
||||
[cygwin*|mingw*|haiku*|darwin*], [
|
||||
@@ -3689,9 +3688,6 @@ AS_CASE("$enable_shared", [yes], [
|
||||
LIBRUBY_RELATIVE=no
|
||||
test -z "$CCDLFLAGS" || CFLAGS="$CFLAGS $CCDLFLAGS"
|
||||
ENABLE_SHARED=yes
|
||||
- AS_IF([test "$rb_cv_binary_elf" = yes], [
|
||||
- SOLIBS='$(LIBS)'
|
||||
- ])
|
||||
|
||||
# libdir can be overridden in config.site file (on OpenSUSE at least).
|
||||
libdir_basename=lib
|
||||
@@ -3726,7 +3722,6 @@ AS_CASE("$enable_shared", [yes], [
|
||||
])
|
||||
],
|
||||
[freebsd*|dragonfly*], [
|
||||
- SOLIBS='$(LIBS)'
|
||||
LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR)$(MINOR)'
|
||||
LIBRUBY_SONAME='$(LIBRUBY_SO)'
|
||||
AS_IF([test "$rb_cv_binary_elf" != "yes" ], [
|
||||
@@ -3735,7 +3730,6 @@ AS_CASE("$enable_shared", [yes], [
|
||||
])
|
||||
],
|
||||
[netbsd*], [
|
||||
- SOLIBS='$(LIBS)'
|
||||
LIBRUBY_SONAME='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR)$(MINOR)'
|
||||
LIBRUBY_SO="${LIBRUBY_SONAME}"'.$(TEENY)'
|
||||
RUBY_APPEND_OPTIONS(LIBRUBY_DLDFLAGS, ['-Wl,-soname,$(LIBRUBY_SONAME)' "$LDFLAGS_OPTDIR"])
|
||||
@@ -3746,11 +3740,9 @@ AS_CASE("$enable_shared", [yes], [
|
||||
])
|
||||
],
|
||||
[openbsd*|mirbsd*], [
|
||||
- SOLIBS='$(LIBS)'
|
||||
LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR).'`expr ${MINOR} \* 10 + ${TEENY}`
|
||||
],
|
||||
[solaris*], [
|
||||
- SOLIBS='$(LIBS)'
|
||||
LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR)'
|
||||
LIBRUBY_SONAME='lib$(RUBY_SO_NAME).$(SOEXT).$(RUBY_PROGRAM_VERSION)'
|
||||
LIBRUBY_ALIASES='$(LIBRUBY_SONAME) lib$(RUBY_SO_NAME).$(SOEXT)'
|
||||
@@ -3768,7 +3760,7 @@ AS_CASE("$enable_shared", [yes], [
|
||||
[aix*], [
|
||||
RUBY_APPEND_OPTIONS(LIBRUBY_DLDFLAGS, ["${linker_flag}-bnoentry" "$XLDFLAGS" "$LDFLAGS_OPTDIR"])
|
||||
LIBRUBYARG_SHARED='-L${libdir} -l${RUBY_SO_NAME}'
|
||||
- SOLIBS='-lm -lc'
|
||||
+ LIBS="$LIBS -lm -lc"
|
||||
],
|
||||
[darwin*], [
|
||||
LIBRUBY_LDSHARED='$(CC) -dynamiclib'
|
||||
@@ -3788,7 +3780,6 @@ AS_CASE("$enable_shared", [yes], [
|
||||
LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT)'
|
||||
LIBRUBY_SONAME='lib$(RUBY_BASE_NAME).$(RUBY_API_VERSION).$(SOEXT)'
|
||||
LIBRUBY_ALIASES='$(LIBRUBY_SONAME) lib$(RUBY_INSTALL_NAME).$(SOEXT)'
|
||||
- SOLIBS='$(LIBS)'
|
||||
],
|
||||
[interix*], [
|
||||
LIBRUBYARG_SHARED='-L. -L${libdir} -l$(RUBY_SO_NAME)'
|
||||
@@ -4031,7 +4022,6 @@ AS_CASE(["$target_os"],
|
||||
])
|
||||
LIBRUBY_ALIASES=''
|
||||
FIRSTMAKEFILE=GNUmakefile:cygwin/GNUmakefile.in
|
||||
- SOLIBS='$(LIBS)'
|
||||
AS_IF([test x"$enable_shared" = xyes], [
|
||||
LIBRUBY='lib$(RUBY_SO_NAME).dll.a'
|
||||
], [
|
||||
@@ -4131,6 +4121,13 @@ AS_IF([test "${universal_binary-no}" = yes ], [
|
||||
[rb_cv_architecture_available=yes], [rb_cv_architecture_available=no]))
|
||||
])
|
||||
|
||||
+MAINLIBS="$LIBS"
|
||||
+LIBS=$ORIG_LIBS
|
||||
+AS_IF([test -n "${LIBS}"], [
|
||||
+ libspat=`echo "${LIBS}" | sed 's/[[][|.*$^]]/\\&/g;s/^ */ /;s/^ *$/ /'`
|
||||
+ MAINFLAGS=`echo " $MAINLIBS " | sed "s|$libspat"'||;s/^ *//;s/ *$//'`
|
||||
+])
|
||||
+LIBRUBYARG_STATIC="${LIBRUBYARG_STATIC} \$(MAINLIBS)"
|
||||
CPPFLAGS="$CPPFLAGS "'$(DEFS)'
|
||||
test -z "$CPPFLAGS" || CPPFLAGS="$CPPFLAGS "; CPPFLAGS="$CPPFLAGS"'${cppflags}'
|
||||
AS_IF([test -n "${cflags+set}"], [
|
||||
diff --git a/template/ruby.pc.in b/template/ruby.pc.in
|
||||
index d874f92c3b20..7ce4461c05df 100644
|
||||
--- a/template/ruby.pc.in
|
||||
+++ b/template/ruby.pc.in
|
||||
@@ -39,6 +39,7 @@ sitehdrdir=@sitehdrdir@
|
||||
rubyarchhdrdir=@rubyarchhdrdir@
|
||||
vendorarchhdrdir=@vendorarchhdrdir@
|
||||
sitearchhdrdir=@sitearchhdrdir@
|
||||
+MAINLIBS=@MAINLIBS@
|
||||
SOEXT=@SOEXT@
|
||||
LIBPATH=@LIBPATH@
|
||||
LIBRUBY_A=@LIBRUBY_A@
|
||||
diff --git a/win32/Makefile.sub b/win32/Makefile.sub
|
||||
index 8673c121641e..f8316cccb68e 100644
|
||||
--- a/win32/Makefile.sub
|
||||
+++ b/win32/Makefile.sub
|
||||
@@ -279,6 +279,7 @@ MJIT_DEBUGFLAGS = $(DEBUGFLAGS)
|
||||
CPPFLAGS = $(DEFS) $(ARCHDEFS) $(CPPFLAGS)
|
||||
|
||||
DLDFLAGS = $(LDFLAGS) -dll
|
||||
+MAINLIBS = $(LIBS)
|
||||
SOLIBS =
|
||||
RCFILES = $(RUBY_INSTALL_NAME).rc $(RUBYW_INSTALL_NAME).rc $(RUBY_SO_NAME).rc
|
||||
!ifndef RCFLAGS
|
||||
@@ -821,7 +822,8 @@ s,@CPPFLAGS@,$(CPPFLAGS),;t t
|
||||
s,@CXXFLAGS@,$(CXXFLAGS),;t t
|
||||
s,@FFLAGS@,$(FFLAGS),;t t
|
||||
s,@LDFLAGS@,$(LDFLAGS),;t t
|
||||
-s,@LIBS@,$(LIBS),;t t
|
||||
+s,@LIBS@,,;t t
|
||||
+s,@MAINLIBS@,$(MAINLIBS),;t t
|
||||
s,@exec_prefix@,$${prefix},;t t
|
||||
s,@prefix@,$(prefix),;t t
|
||||
s,@program_transform_name@,s,.*,$(PROGRAM_PREFIX)&$(PROGRAM_SUFFIX),,;t t
|
||||
@@ -909,7 +911,7 @@ s,@LIBRUBY_SO@,$$(RUBY_SO_NAME).dll,;t t
|
||||
s,@LIBRUBY_ALIASES@,$(LIBRUBY_ALIASES),;t t
|
||||
s,@LIBRUBY@,$$(RUBY_SO_NAME).lib,;t t
|
||||
s,@LIBRUBYARG@,$$(LIBRUBYARG_SHARED),;t t
|
||||
-s,@LIBRUBYARG_STATIC@,$$(LIBRUBY_A),;t t
|
||||
+s,@LIBRUBYARG_STATIC@,$$(LIBRUBY_A) $$(MAINLIBS),;t t
|
||||
s,@LIBRUBYARG_SHARED@,$$(LIBRUBY),;t t
|
||||
s,@SOLIBS@,$(SOLIBS),;t t
|
||||
s,@DLDLIBS@,$(DLDLIBS),;t t
|
@ -1,157 +0,0 @@
|
||||
From 1dfc377ae3b174b043d3f0ed36de57b0296b34d0 Mon Sep 17 00:00:00 2001
|
||||
From: rhe <rhe@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>
|
||||
Date: Wed, 8 Aug 2018 14:13:55 +0000
|
||||
Subject: [PATCH] net/http, net/ftp: fix session resumption with TLS 1.3
|
||||
|
||||
When TLS 1.3 is in use, the session ticket may not have been sent yet
|
||||
even though a handshake has finished. Also, the ticket could change if
|
||||
multiple session ticket messages are sent by the server. Use
|
||||
SSLContext#session_new_cb instead of calling SSLSocket#session
|
||||
immediately after a handshake. This way also works with earlier protocol
|
||||
versions.
|
||||
|
||||
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64234 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
|
||||
---
|
||||
lib/net/ftp.rb | 5 ++++-
|
||||
lib/net/http.rb | 7 +++++--
|
||||
test/net/http/test_https.rb | 35 ++++++++++-------------------------
|
||||
3 files changed, 19 insertions(+), 28 deletions(-)
|
||||
|
||||
diff --git a/lib/net/ftp.rb b/lib/net/ftp.rb
|
||||
index c3ee47ef4d36..9902f9dc657a 100644
|
||||
--- a/lib/net/ftp.rb
|
||||
+++ b/lib/net/ftp.rb
|
||||
@@ -230,6 +230,10 @@ def initialize(host = nil, user_or_options = {}, passwd = nil, acct = nil)
|
||||
if defined?(VerifyCallbackProc)
|
||||
@ssl_context.verify_callback = VerifyCallbackProc
|
||||
end
|
||||
+ @ssl_context.session_cache_mode =
|
||||
+ OpenSSL::SSL::SSLContext::SESSION_CACHE_CLIENT |
|
||||
+ OpenSSL::SSL::SSLContext::SESSION_CACHE_NO_INTERNAL_STORE
|
||||
+ @ssl_context.session_new_cb = proc {|sock, sess| @ssl_session = sess }
|
||||
@ssl_session = nil
|
||||
if options[:private_data_connection].nil?
|
||||
@private_data_connection = true
|
||||
@@ -349,7 +353,6 @@ def start_tls_session(sock)
|
||||
if @ssl_context.verify_mode != VERIFY_NONE
|
||||
ssl_sock.post_connection_check(@host)
|
||||
end
|
||||
- @ssl_session = ssl_sock.session
|
||||
return ssl_sock
|
||||
end
|
||||
private :start_tls_session
|
||||
diff --git a/lib/net/http.rb b/lib/net/http.rb
|
||||
index 281b15cedff0..683a884f5dbe 100644
|
||||
--- a/lib/net/http.rb
|
||||
+++ b/lib/net/http.rb
|
||||
@@ -983,6 +983,10 @@ def connect
|
||||
end
|
||||
@ssl_context = OpenSSL::SSL::SSLContext.new
|
||||
@ssl_context.set_params(ssl_parameters)
|
||||
+ @ssl_context.session_cache_mode =
|
||||
+ OpenSSL::SSL::SSLContext::SESSION_CACHE_CLIENT |
|
||||
+ OpenSSL::SSL::SSLContext::SESSION_CACHE_NO_INTERNAL_STORE
|
||||
+ @ssl_context.session_new_cb = proc {|sock, sess| @ssl_session = sess }
|
||||
D "starting SSL for #{conn_address}:#{conn_port}..."
|
||||
s = OpenSSL::SSL::SSLSocket.new(s, @ssl_context)
|
||||
s.sync_close = true
|
||||
@@ -990,13 +994,12 @@ def connect
|
||||
s.hostname = @address if s.respond_to? :hostname=
|
||||
if @ssl_session and
|
||||
Process.clock_gettime(Process::CLOCK_REALTIME) < @ssl_session.time.to_f + @ssl_session.timeout
|
||||
- s.session = @ssl_session if @ssl_session
|
||||
+ s.session = @ssl_session
|
||||
end
|
||||
ssl_socket_connect(s, @open_timeout)
|
||||
if @ssl_context.verify_mode != OpenSSL::SSL::VERIFY_NONE
|
||||
s.post_connection_check(@address)
|
||||
end
|
||||
- @ssl_session = s.session
|
||||
D "SSL established"
|
||||
end
|
||||
@socket = BufferedIO.new(s, read_timeout: @read_timeout,
|
||||
diff --git a/test/net/http/test_https.rb b/test/net/http/test_https.rb
|
||||
index 8004d5c5f29f..a5182a1fe9db 100644
|
||||
--- a/test/net/http/test_https.rb
|
||||
+++ b/test/net/http/test_https.rb
|
||||
@@ -71,20 +71,11 @@ def test_session_reuse
|
||||
http.get("/")
|
||||
http.finish
|
||||
|
||||
- http.start
|
||||
- http.get("/")
|
||||
- http.finish # three times due to possible bug in OpenSSL 0.9.8
|
||||
-
|
||||
- sid = http.instance_variable_get(:@ssl_session).id
|
||||
-
|
||||
http.start
|
||||
http.get("/")
|
||||
|
||||
socket = http.instance_variable_get(:@socket).io
|
||||
-
|
||||
- assert socket.session_reused?
|
||||
-
|
||||
- assert_equal sid, http.instance_variable_get(:@ssl_session).id
|
||||
+ assert_equal true, socket.session_reused?
|
||||
|
||||
http.finish
|
||||
rescue SystemCallError
|
||||
@@ -101,16 +92,12 @@ def test_session_reuse_but_expire
|
||||
http.get("/")
|
||||
http.finish
|
||||
|
||||
- sid = http.instance_variable_get(:@ssl_session).id
|
||||
-
|
||||
http.start
|
||||
http.get("/")
|
||||
|
||||
socket = http.instance_variable_get(:@socket).io
|
||||
assert_equal false, socket.session_reused?
|
||||
|
||||
- assert_not_equal sid, http.instance_variable_get(:@ssl_session).id
|
||||
-
|
||||
http.finish
|
||||
rescue SystemCallError
|
||||
skip $!
|
||||
@@ -160,15 +147,16 @@ def test_certificate_verify_failure
|
||||
end
|
||||
|
||||
def test_identity_verify_failure
|
||||
+ # the certificate's subject has CN=localhost
|
||||
http = Net::HTTP.new("127.0.0.1", config("port"))
|
||||
http.use_ssl = true
|
||||
- http.verify_callback = Proc.new do |preverify_ok, store_ctx|
|
||||
- true
|
||||
- end
|
||||
+ http.cert_store = TEST_STORE
|
||||
+ @log_tester = lambda {|_| }
|
||||
ex = assert_raise(OpenSSL::SSL::SSLError){
|
||||
http.request_get("/") {|res| }
|
||||
}
|
||||
- assert_match(/hostname \"127.0.0.1\" does not match/, ex.message)
|
||||
+ re_msg = /certificate verify failed|hostname \"127.0.0.1\" does not match/
|
||||
+ assert_match(re_msg, ex.message)
|
||||
end
|
||||
|
||||
def test_timeout_during_SSL_handshake
|
||||
@@ -193,16 +181,13 @@ def test_timeout_during_SSL_handshake
|
||||
end
|
||||
|
||||
def test_min_version
|
||||
- http = Net::HTTP.new("127.0.0.1", config("port"))
|
||||
+ http = Net::HTTP.new("localhost", config("port"))
|
||||
http.use_ssl = true
|
||||
http.min_version = :TLS1
|
||||
- http.verify_callback = Proc.new do |preverify_ok, store_ctx|
|
||||
- true
|
||||
- end
|
||||
- ex = assert_raise(OpenSSL::SSL::SSLError){
|
||||
- http.request_get("/") {|res| }
|
||||
+ http.cert_store = TEST_STORE
|
||||
+ http.request_get("/") {|res|
|
||||
+ assert_equal($test_net_http_data, res.body)
|
||||
}
|
||||
- assert_match(/hostname \"127.0.0.1\" does not match/, ex.message)
|
||||
end
|
||||
|
||||
def test_max_version
|
77
ruby-2.7.0-Initialize-ABRT-hook.patch
Normal file
77
ruby-2.7.0-Initialize-ABRT-hook.patch
Normal file
@ -0,0 +1,77 @@
|
||||
From eca084e4079c77c061045df9c21b219175b05228 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?V=C3=ADt=20Ondruch?= <vondruch@redhat.com>
|
||||
Date: Mon, 6 Jan 2020 13:56:04 +0100
|
||||
Subject: [PATCH] Initialize ABRT hook.
|
||||
|
||||
The ABRT hook used to be initialized by preludes via patches [[1], [2]].
|
||||
Unfortunately, due to [[3]] and especially since [[4]], this would
|
||||
require boostrapping [[5]].
|
||||
|
||||
To keep the things simple for now, load the ABRT hook via C.
|
||||
|
||||
[1]: https://bugs.ruby-lang.org/issues/8566
|
||||
[2]: https://bugs.ruby-lang.org/issues/15306
|
||||
[3]: https://bugs.ruby-lang.org/issues/16254
|
||||
[4]: https://github.com/ruby/ruby/pull/2735
|
||||
[5]: https://lists.fedoraproject.org/archives/list/ruby-sig@lists.fedoraproject.org/message/LH6L6YJOYQT4Y5ZNOO4SLIPTUWZ5V45Q/
|
||||
---
|
||||
abrt.c | 12 ++++++++++++++
|
||||
common.mk | 3 ++-
|
||||
ruby.c | 4 ++++
|
||||
3 files changed, 18 insertions(+), 1 deletion(-)
|
||||
create mode 100644 abrt.c
|
||||
|
||||
diff --git a/abrt.c b/abrt.c
|
||||
new file mode 100644
|
||||
index 0000000000..74b0bd5c0f
|
||||
--- /dev/null
|
||||
+++ b/abrt.c
|
||||
@@ -0,0 +1,12 @@
|
||||
+#include "internal.h"
|
||||
+
|
||||
+void
|
||||
+Init_abrt(void)
|
||||
+{
|
||||
+ rb_eval_string(
|
||||
+ " begin\n"
|
||||
+ " require 'abrt'\n"
|
||||
+ " rescue LoadError\n"
|
||||
+ " end\n"
|
||||
+ );
|
||||
+}
|
||||
diff --git a/common.mk b/common.mk
|
||||
index b2e5b2b6d0..f39f81da5c 100644
|
||||
--- a/common.mk
|
||||
+++ b/common.mk
|
||||
@@ -81,7 +81,8 @@ ENC_MK = enc.mk
|
||||
MAKE_ENC = -f $(ENC_MK) V="$(V)" UNICODE_HDR_DIR="$(UNICODE_HDR_DIR)" \
|
||||
RUBY="$(MINIRUBY)" MINIRUBY="$(MINIRUBY)" $(mflags)
|
||||
|
||||
-COMMONOBJS = array.$(OBJEXT) \
|
||||
+COMMONOBJS = abrt.$(OBJEXT) \
|
||||
+ array.$(OBJEXT) \
|
||||
ast.$(OBJEXT) \
|
||||
bignum.$(OBJEXT) \
|
||||
class.$(OBJEXT) \
|
||||
diff --git a/ruby.c b/ruby.c
|
||||
index 60c57d6259..1eec16f2c8 100644
|
||||
--- a/ruby.c
|
||||
+++ b/ruby.c
|
||||
@@ -1451,10 +1451,14 @@ proc_options(long argc, char **argv, ruby_cmdline_options_t *opt, int envopt)
|
||||
|
||||
void Init_builtin_features(void);
|
||||
|
||||
+/* abrt.c */
|
||||
+void Init_abrt(void);
|
||||
+
|
||||
static void
|
||||
ruby_init_prelude(void)
|
||||
{
|
||||
Init_builtin_features();
|
||||
+ Init_abrt();
|
||||
rb_const_remove(rb_cObject, rb_intern_const("TMP_RUBY_PREFIX"));
|
||||
}
|
||||
|
||||
--
|
||||
2.24.1
|
||||
|
32
ruby-2.7.0-Remove-RubyGems-dependency.patch
Normal file
32
ruby-2.7.0-Remove-RubyGems-dependency.patch
Normal file
@ -0,0 +1,32 @@
|
||||
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
|
||||
|
@ -0,0 +1,34 @@
|
||||
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
|
||||
|
22
ruby-2.8.0-remove-unneeded-gem-require-for-ipaddr.patch
Normal file
22
ruby-2.8.0-remove-unneeded-gem-require-for-ipaddr.patch
Normal file
@ -0,0 +1,22 @@
|
||||
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"])
|
@ -0,0 +1,178 @@
|
||||
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;
|
167
rubygems-3.1.3-Fix-I-require-priority.patch
Normal file
167
rubygems-3.1.3-Fix-I-require-priority.patch
Normal file
@ -0,0 +1,167 @@
|
||||
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
|
@ -0,0 +1,324 @@
|
||||
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
|
92
rubygems-3.1.3-Improve-require.patch
Normal file
92
rubygems-3.1.3-Improve-require.patch
Normal file
@ -0,0 +1,92 @@
|
||||
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
|
||||
|
@ -0,0 +1,29 @@
|
||||
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
|
||||
|
@ -9,9 +9,9 @@ module RubyGemsProv
|
||||
def self.normalize_prerelease(version)
|
||||
if version.prerelease?
|
||||
prerelease = version.version.sub /^#{version.release}\./, ''
|
||||
"#{version.release}-0.1.#{prerelease}"
|
||||
"#{version.release}~#{prerelease}"
|
||||
else
|
||||
"#{version.release}-1"
|
||||
version.release
|
||||
end
|
||||
end
|
||||
end
|
||||
|
32
rubygems.req
32
rubygems.req
@ -35,31 +35,35 @@ module RubyGemsReq
|
||||
# with RPM .spec file.
|
||||
def self.requirement_versions_to_rpm(requirement)
|
||||
self.expand_requirement(requirement.requirements).map do |op, version|
|
||||
version == Gem::Version.new(0) ? "" : "#{op} #{version}"
|
||||
version == Gem::Version.new(0) ? "" : " #{op} #{version}"
|
||||
end
|
||||
end
|
||||
|
||||
# Compose dependency together with its requirements in RPM rich dependency
|
||||
# string.
|
||||
def self.compose_dependency_string(name, requirements)
|
||||
dependency_strings = requirements.map { |requirement| name + requirement }
|
||||
dependency_string = dependency_strings.join(' with ')
|
||||
dependency_string.prepend('(').concat(')') if dependency_strings.length > 1
|
||||
dependency_string
|
||||
end
|
||||
end
|
||||
|
||||
# Report RubyGems dependency, versioned if required.
|
||||
def self.rubygems_dependency(specification)
|
||||
Helpers::requirement_versions_to_rpm(specification.required_rubygems_version).each do |requirement|
|
||||
dependency_string = "ruby(rubygems)"
|
||||
dependency_string += " #{specification.required_rubygems_version}" if requirement&.length > 0
|
||||
puts dependency_string
|
||||
end
|
||||
dependency_name = "ruby(rubygems)"
|
||||
requirements = Helpers::requirement_versions_to_rpm(specification.required_rubygems_version)
|
||||
|
||||
puts Helpers::compose_dependency_string(dependency_name, requirements)
|
||||
end
|
||||
|
||||
# Report all gem dependencies including their version.
|
||||
def self.gem_depenencies(specification)
|
||||
specification.runtime_dependencies.each do |dependency|
|
||||
dependency_strings = Helpers::requirement_versions_to_rpm(dependency.requirement).map do |requirement|
|
||||
requirement_string = "rubygem(#{dependency.name})"
|
||||
requirement_string += " #{requirement}" if requirement&.length > 0
|
||||
requirement_string
|
||||
end
|
||||
dependency_string = dependency_strings.join(' with ')
|
||||
dependency_string.prepend('(').concat(')') if dependency_strings.length > 1
|
||||
puts dependency_string
|
||||
dependency_name = "rubygem(#{dependency.name})"
|
||||
requirements = Helpers::requirement_versions_to_rpm(dependency.requirement)
|
||||
|
||||
puts Helpers::compose_dependency_string(dependency_name, requirements)
|
||||
end
|
||||
end
|
||||
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (ruby-2.5.1.tar.xz) = 31bacf58469953282cd5d8b51862dcf4b84dedb927c1871bc3fca32fc157fe49187631575a70838705fe246f4555647577a7ecc26894445a7d64de5503dc11b4
|
||||
SHA512 (ruby-2.7.2.tar.xz) = 7972278b096aa768c7adf2befd26003e18781a29ca317640317d30d93d6e963ded197724c8e2f1dfe1e838c5647176d414a74732a62e931fb50d6f2e0f777349
|
||||
|
Loading…
Reference in New Issue
Block a user