import ruby-2.5.5-105.module+el8.1.0+3656+f80bfa1d
This commit is contained in:
parent
a8c8f51841
commit
72d8be21a1
@ -60,7 +60,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 +97,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 +144,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 +177,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" \
|
||||
\
|
||||
|
@ -0,0 +1,214 @@
|
||||
From 091459248d3ce814e10d50cc4421f0c0454ef61f Mon Sep 17 00:00:00 2001
|
||||
From: "Bernhard M. Wiedemann" <bwiedemann@suse.de>
|
||||
Date: Sun, 30 Apr 2017 22:47:40 +0200
|
||||
Subject: [PATCH 1/4] created.rid: use SOURCE_DATE_EPOCH
|
||||
|
||||
use SOURCE_DATE_EPOCH instead of current time in created.rid top line
|
||||
to enable reproducible builds of ruby docs
|
||||
|
||||
See https://reproducible-builds.org/ for why this is good
|
||||
and https://reproducible-builds.org/specs/source-date-epoch/
|
||||
for the definition of this variable.
|
||||
---
|
||||
lib/rdoc/rdoc.rb | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/lib/rdoc/rdoc.rb b/lib/rdoc/rdoc.rb
|
||||
index 68775c8be1..a2711fbbd1 100644
|
||||
--- a/lib/rdoc/rdoc.rb
|
||||
+++ b/lib/rdoc/rdoc.rb
|
||||
@@ -232,6 +232,9 @@ def store= store
|
||||
|
||||
def update_output_dir(op_dir, time, last = {})
|
||||
return if @options.dry_run or not @options.update_output_dir
|
||||
+ unless ENV['SOURCE_DATE_EPOCH'].nil?
|
||||
+ time = Time.at(ENV['SOURCE_DATE_EPOCH'].to_i).gmtime
|
||||
+ end
|
||||
|
||||
open output_flag_file(op_dir), "w" do |f|
|
||||
f.puts time.rfc2822
|
||||
--
|
||||
2.21.0
|
||||
|
||||
From 73a935e9fa63b056ea0be69c0c923afdfb4d88da Mon Sep 17 00:00:00 2001
|
||||
From: "Bernhard M. Wiedemann" <bwiedemann@suse.de>
|
||||
Date: Thu, 14 Dec 2017 10:54:54 +0100
|
||||
Subject: [PATCH 2/4] Do not store current timestamps in gz headers
|
||||
|
||||
to enable reproducible builds of rdoc
|
||||
|
||||
Normally, 0 would be the preferred value to indicate "no date"
|
||||
but that value is handled differently in Zlib::GzipWriter
|
||||
to put in the current time
|
||||
---
|
||||
lib/rdoc/generator/json_index.rb | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/lib/rdoc/generator/json_index.rb b/lib/rdoc/generator/json_index.rb
|
||||
index e4cfe967c6..a059a5d4d0 100644
|
||||
--- a/lib/rdoc/generator/json_index.rb
|
||||
+++ b/lib/rdoc/generator/json_index.rb
|
||||
@@ -175,7 +175,7 @@ def generate_gzipped
|
||||
debug_msg "Writing gzipped search index to %s" % outfile
|
||||
|
||||
Zlib::GzipWriter.open(outfile) do |gz|
|
||||
- gz.mtime = File.mtime(search_index_file)
|
||||
+ gz.mtime = 1 # make output reproducible
|
||||
gz.orig_name = search_index_file.basename.to_s
|
||||
gz.write search_index
|
||||
gz.close
|
||||
@@ -193,7 +193,7 @@ def generate_gzipped
|
||||
debug_msg "Writing gzipped file to %s" % outfile
|
||||
|
||||
Zlib::GzipWriter.open(outfile) do |gz|
|
||||
- gz.mtime = File.mtime(dest)
|
||||
+ gz.mtime = 1 # make output reproducible
|
||||
gz.orig_name = dest.basename.to_s
|
||||
gz.write data
|
||||
gz.close
|
||||
--
|
||||
2.21.0
|
||||
|
||||
From 1b34b337b72918e83c3b952eed6998ad47974960 Mon Sep 17 00:00:00 2001
|
||||
From: aycabta <aycabta@gmail.com>
|
||||
Date: Sat, 27 Jan 2018 14:37:42 +0900
|
||||
Subject: [PATCH 3/4] Improve reproducible builds for .js and .js.gz files
|
||||
|
||||
The mtime for search_index.js.gz should be updated because it's
|
||||
generated dynamically. So uses SOURCE_DATE_EPOCH after
|
||||
RDoc::Generator::JsonIndex#generate creates index file.
|
||||
|
||||
FileUtils.install in RDoc::Generator::JsonIndex#generate with :preserve
|
||||
option because the mtime value is based on original .js file.
|
||||
---
|
||||
lib/rdoc/generator/json_index.rb | 9 +++++---
|
||||
test/rdoc/test_rdoc_generator_json_index.rb | 25 ++++++++++++++++++++-
|
||||
2 files changed, 30 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/lib/rdoc/generator/json_index.rb b/lib/rdoc/generator/json_index.rb
|
||||
index a059a5d4d0..3a1000033d 100644
|
||||
--- a/lib/rdoc/generator/json_index.rb
|
||||
+++ b/lib/rdoc/generator/json_index.rb
|
||||
@@ -147,12 +147,15 @@ def generate
|
||||
|
||||
JSON.dump data, io, 0
|
||||
end
|
||||
+ unless ENV['SOURCE_DATE_EPOCH'].nil?
|
||||
+ index_file.utime index_file.atime, Time.at(ENV['SOURCE_DATE_EPOCH'].to_i).gmtime
|
||||
+ end
|
||||
|
||||
Dir.chdir @template_dir do
|
||||
Dir['**/*.js'].each do |source|
|
||||
dest = File.join out_dir, source
|
||||
|
||||
- FileUtils.install source, dest, :mode => 0644, :verbose => $DEBUG_RDOC
|
||||
+ FileUtils.install source, dest, :mode => 0644, :preserve => true, :verbose => $DEBUG_RDOC
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -175,7 +178,7 @@ def generate_gzipped
|
||||
debug_msg "Writing gzipped search index to %s" % outfile
|
||||
|
||||
Zlib::GzipWriter.open(outfile) do |gz|
|
||||
- gz.mtime = 1 # make output reproducible
|
||||
+ gz.mtime = File.mtime(search_index_file)
|
||||
gz.orig_name = search_index_file.basename.to_s
|
||||
gz.write search_index
|
||||
gz.close
|
||||
@@ -193,7 +196,7 @@ def generate_gzipped
|
||||
debug_msg "Writing gzipped file to %s" % outfile
|
||||
|
||||
Zlib::GzipWriter.open(outfile) do |gz|
|
||||
- gz.mtime = 1 # make output reproducible
|
||||
+ gz.mtime = File.mtime(dest)
|
||||
gz.orig_name = dest.basename.to_s
|
||||
gz.write data
|
||||
gz.close
|
||||
diff --git a/test/rdoc/test_rdoc_generator_json_index.rb b/test/rdoc/test_rdoc_generator_json_index.rb
|
||||
index 6cb5463d29..65e7f087cc 100644
|
||||
--- a/test/rdoc/test_rdoc_generator_json_index.rb
|
||||
+++ b/test/rdoc/test_rdoc_generator_json_index.rb
|
||||
@@ -8,7 +8,7 @@ class TestRDocGeneratorJsonIndex < RDoc::TestCase
|
||||
def setup
|
||||
super
|
||||
|
||||
- @tmpdir = File.join Dir.tmpdir, "test_rdoc_generator_darkfish_#{$$}"
|
||||
+ @tmpdir = Dir.mktmpdir "test_rdoc_generator_darkfish_#{$$}_"
|
||||
FileUtils.mkdir_p @tmpdir
|
||||
|
||||
@options = RDoc::Options.new
|
||||
@@ -89,12 +89,21 @@ def test_file_dir
|
||||
end
|
||||
|
||||
def test_generate
|
||||
+ now = Time.now
|
||||
@g.generate
|
||||
|
||||
assert_file 'js/searcher.js'
|
||||
assert_file 'js/navigation.js'
|
||||
assert_file 'js/search_index.js'
|
||||
|
||||
+ orig_file = Pathname(File.join @pwd, 'lib/rdoc/generator/template/json_index/js/navigation.js')
|
||||
+ generated_file = Pathname(File.join @tmpdir, 'js/navigation.js')
|
||||
+ assert_equal orig_file.mtime, generated_file.mtime
|
||||
+ assert generated_file.mtime < now, '.js files should be the same timestamp'
|
||||
+
|
||||
+ generated_search_index = Pathname(File.join @tmpdir, 'js/search_index.js')
|
||||
+ assert generated_search_index.mtime > (now - 1), 'search_index.js should be generated timestamp'
|
||||
+
|
||||
json = File.read 'js/search_index.js'
|
||||
|
||||
json =~ /\Avar search_data = /
|
||||
@@ -137,6 +146,20 @@ def test_generate
|
||||
assert_equal expected, index
|
||||
end
|
||||
|
||||
+ def test_generate_search_index_with_reproducible_builds
|
||||
+ backup_epoch = ENV['SOURCE_DATE_EPOCH']
|
||||
+ ruby_birthday = Time.parse 'Wed, 24 Feb 1993 21:00:00 +0900'
|
||||
+ ENV['SOURCE_DATE_EPOCH'] = ruby_birthday.to_i.to_s
|
||||
+
|
||||
+ @g.generate
|
||||
+
|
||||
+ assert_file 'js/search_index.js'
|
||||
+ generated_search_index = Pathname(File.join @tmpdir, 'js/search_index.js')
|
||||
+ assert_equal ruby_birthday, generated_search_index.mtime
|
||||
+
|
||||
+ ENV['SOURCE_DATE_EPOCH'] = backup_epoch
|
||||
+ end
|
||||
+
|
||||
def test_generate_gzipped
|
||||
begin
|
||||
require 'zlib'
|
||||
--
|
||||
2.21.0
|
||||
|
||||
From 74c1e201f2146e7175e74d6fc0b9386c2e95210f Mon Sep 17 00:00:00 2001
|
||||
From: aycabta <aycabta@gmail.com>
|
||||
Date: Sat, 27 Jan 2018 17:54:31 +0900
|
||||
Subject: [PATCH 4/4] Use dirty hack on JRuby for MiniTest 4
|
||||
|
||||
---
|
||||
test/rdoc/test_rdoc_generator_json_index.rb | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/test/rdoc/test_rdoc_generator_json_index.rb b/test/rdoc/test_rdoc_generator_json_index.rb
|
||||
index 65e7f087cc..714d496195 100644
|
||||
--- a/test/rdoc/test_rdoc_generator_json_index.rb
|
||||
+++ b/test/rdoc/test_rdoc_generator_json_index.rb
|
||||
@@ -98,7 +98,11 @@ def test_generate
|
||||
|
||||
orig_file = Pathname(File.join @pwd, 'lib/rdoc/generator/template/json_index/js/navigation.js')
|
||||
generated_file = Pathname(File.join @tmpdir, 'js/navigation.js')
|
||||
- assert_equal orig_file.mtime, generated_file.mtime
|
||||
+
|
||||
+ # This is dirty hack on JRuby for MiniTest 4
|
||||
+ assert orig_file.mtime.inspect == generated_file.mtime.inspect,
|
||||
+ '.js files should be tha same timestamp of original'
|
||||
+
|
||||
assert generated_file.mtime < now, '.js files should be the same timestamp'
|
||||
|
||||
generated_search_index = Pathname(File.join @tmpdir, 'js/search_index.js')
|
||||
--
|
||||
2.21.0
|
||||
|
@ -0,0 +1,61 @@
|
||||
diff --git a/ext/fiddle/closure.c b/ext/fiddle/closure.c
|
||||
index 1a80b2b..b997e23 100644
|
||||
--- a/ext/fiddle/closure.c
|
||||
+++ b/ext/fiddle/closure.c
|
||||
@@ -13,25 +13,11 @@ typedef struct {
|
||||
ffi_type **argv;
|
||||
} fiddle_closure;
|
||||
|
||||
-#if defined(USE_FFI_CLOSURE_ALLOC)
|
||||
-#elif defined(__OpenBSD__) || defined(__APPLE__) || defined(__linux__)
|
||||
-# define USE_FFI_CLOSURE_ALLOC 0
|
||||
-#elif defined(RUBY_LIBFFI_MODVERSION) && RUBY_LIBFFI_MODVERSION < 3000005 && \
|
||||
- (defined(__i386__) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_AMD64))
|
||||
-# define USE_FFI_CLOSURE_ALLOC 0
|
||||
-#else
|
||||
-# define USE_FFI_CLOSURE_ALLOC 1
|
||||
-#endif
|
||||
-
|
||||
static void
|
||||
dealloc(void * ptr)
|
||||
{
|
||||
fiddle_closure * cls = (fiddle_closure *)ptr;
|
||||
-#if USE_FFI_CLOSURE_ALLOC
|
||||
ffi_closure_free(cls->pcl);
|
||||
-#else
|
||||
- munmap(cls->pcl, sizeof(*cls->pcl));
|
||||
-#endif
|
||||
if (cls->argv) xfree(cls->argv);
|
||||
xfree(cls);
|
||||
}
|
||||
@@ -205,12 +191,7 @@ allocate(VALUE klass)
|
||||
VALUE i = TypedData_Make_Struct(klass, fiddle_closure,
|
||||
&closure_data_type, closure);
|
||||
|
||||
-#if USE_FFI_CLOSURE_ALLOC
|
||||
closure->pcl = ffi_closure_alloc(sizeof(ffi_closure), &closure->code);
|
||||
-#else
|
||||
- closure->pcl = mmap(NULL, sizeof(ffi_closure), PROT_READ | PROT_WRITE,
|
||||
- MAP_ANON | MAP_PRIVATE, -1, 0);
|
||||
-#endif
|
||||
|
||||
return i;
|
||||
}
|
||||
@@ -257,17 +238,8 @@ initialize(int rbargc, VALUE argv[], VALUE self)
|
||||
if (FFI_OK != result)
|
||||
rb_raise(rb_eRuntimeError, "error prepping CIF %d", result);
|
||||
|
||||
-#if USE_FFI_CLOSURE_ALLOC
|
||||
result = ffi_prep_closure_loc(pcl, cif, callback,
|
||||
(void *)self, cl->code);
|
||||
-#else
|
||||
- result = ffi_prep_closure(pcl, cif, callback, (void *)self);
|
||||
- cl->code = (void *)pcl;
|
||||
- i = mprotect(pcl, sizeof(*pcl), PROT_READ | PROT_EXEC);
|
||||
- if (i) {
|
||||
- rb_sys_fail("mprotect");
|
||||
- }
|
||||
-#endif
|
||||
|
||||
if (FFI_OK != result)
|
||||
rb_raise(rb_eRuntimeError, "error prepping closure %d", result);
|
@ -21,7 +21,8 @@
|
||||
%endif
|
||||
|
||||
|
||||
%global release 104
|
||||
%global release 105
|
||||
|
||||
%{!?release_string:%global release_string %{?development_release:0.}%{release}%{?development_release:.%{development_release}}%{?dist}}
|
||||
|
||||
# The RubyGems library has to stay out of Ruby directory tree, since the
|
||||
@ -160,6 +161,19 @@ Patch22: ruby-2.6.0-config-support-include-directive.patch
|
||||
# https://github.com/ruby/openssl/pull/217
|
||||
Patch23: ruby-2.6.0-use-larger-keys-for-SSL-tests.patch
|
||||
|
||||
# Use ffi_closure_alloc to avoid segmentation fault by libffi on aarch64.
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1727832
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1721569
|
||||
# https://github.com/ruby/fiddle/pull/20
|
||||
Patch26: ruby-2.6.3-fiddle-1.0.0-ffi-closure-alloc-default.patch
|
||||
# Fix rdoc gzipped javascript pages are not the same across multilib.
|
||||
# https://github.com/ruby/ruby/commit/98c7058bf7b3eab91c62a77cb10b09f6c8ed368e
|
||||
# https://github.com/ruby/rdoc/commit/524a8ffc7efbc10b09234f7ac3f81d30a3f9f65c
|
||||
# https://github.com/ruby/rdoc/commit/2df261bb8a9336438508bba94e22e0f968f88983
|
||||
# https://github.com/ruby/rdoc/commit/8e1916b89ef1d50930c2c863119ddb6ce6c796ed
|
||||
# https://github.com/ruby/rdoc/commit/5a8dc7ce883b24539918c75a460a740943c46970
|
||||
Patch27: ruby-2.6.0-rdoc-6.0.2-fix-different-js-gz-pages-across-multilib.patch
|
||||
|
||||
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
||||
Suggests: rubypick
|
||||
Recommends: ruby(rubygems) >= %{rubygems_version}
|
||||
@ -544,11 +558,22 @@ rm -rf ext/fiddle/libffi*
|
||||
%patch10 -p1
|
||||
%patch15 -p1
|
||||
%patch16 -p1
|
||||
|
||||
# Preserve rdoc's js file timestamp modified by patch command
|
||||
# for reproducible build. It is used as generated js.gz file's metadata.
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1719647
|
||||
# https://github.com/junaruga/rdoc/blob/v6.0.2/lib/rdoc/generator/json_index.rb#L199
|
||||
# https://github.com/rpm-software-management/rpm/issues/788
|
||||
ORIG_EPOCH=$(stat --printf='%y' lib/rdoc/generator/template/json_index/js/navigation.js)
|
||||
%patch20 -p1
|
||||
touch -d "${ORIG_EPOCH}" lib/rdoc/generator/template/json_index/js/navigation.js
|
||||
|
||||
%patch22 -p1
|
||||
%patch23 -p1
|
||||
%patch24 -p1
|
||||
%patch25 -p1
|
||||
%patch26 -p1
|
||||
%patch27 -p1
|
||||
|
||||
# Provide an example of usage of the tapset:
|
||||
cp -a %{SOURCE3} .
|
||||
@ -1101,6 +1126,14 @@ OPENSSL_SYSTEM_CIPHERS_OVERRIDE=xyz_nonexistent_file OPENSSL_CONF='' \
|
||||
%{gem_dir}/specifications/xmlrpc-%{xmlrpc_version}.gemspec
|
||||
|
||||
%changelog
|
||||
* Thu Jul 04 2019 Jun Aruga <jaruga@redhat.com> - 2.5.5-105
|
||||
- Use ffi_closure_alloc to avoid segmentation fault by libffi on aarch64.
|
||||
Resolves: rhbz#1727832
|
||||
- Properly support %%prerelease in %%gemspec_ macros.
|
||||
Related: rhbz#1688758
|
||||
- Fix rdoc gzipped javascript pages are not the same across multilib.
|
||||
Resolves: rhbz#1719647
|
||||
|
||||
* Wed Apr 17 2019 Vít Ondruch <vondruch@redhat.com> - 2.5.5-104
|
||||
- Update to Ruby 2.5.5.
|
||||
* Remove Patch25: ruby-2.6.0-Update-for-tzdata-2018f.patch; subsumed
|
||||
|
Loading…
Reference in New Issue
Block a user