mirror of
https://git.yoctoproject.org/poky
synced 2026-02-27 03:49:41 +01:00
ruby: fix the reproducibility issue
Apply some changes on the Ruby makefiles in order to fix the reproducibility: - use a fixed timestamp, - sort linked objects, - doesn't use the current date, - and use UTC date. [YOCTO #14268] (From OE-Core rev: 59b07ab51ff932a4632a31675445ba4192bae36b) Signed-off-by: Thomas Perrot <thomas.perrot@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
3115aa157d
commit
aeb712ebb0
@@ -0,0 +1,35 @@
|
||||
From: Christian Hofstaedtler <zeha@debian.org>
|
||||
Date: Tue, 10 Oct 2017 15:04:34 -0300
|
||||
Subject: rdoc: build reproducible documentation
|
||||
|
||||
- provide a fixed timestamp to the gzip compression
|
||||
|
||||
Upstream-Status: Backport [debian]
|
||||
|
||||
Signed-off-by: Antonio Terceiro <terceiro@debian.org>
|
||||
Signed-off-by: Christian Hofstaedtler <zeha@debian.org>
|
||||
---
|
||||
lib/rdoc/generator/json_index.rb | 4 ++--
|
||||
lib/rdoc/rdoc.rb | 2 +-
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/lib/rdoc/generator/json_index.rb
|
||||
+++ b/lib/rdoc/generator/json_index.rb
|
||||
@@ -178,7 +178,7 @@
|
||||
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
|
||||
gz.orig_name = search_index_file.basename.to_s
|
||||
gz.write search_index
|
||||
gz.close
|
||||
@@ -196,7 +196,7 @@
|
||||
debug_msg "Writing gzipped file to %s" % outfile
|
||||
|
||||
Zlib::GzipWriter.open(outfile) do |gz|
|
||||
- gz.mtime = File.mtime(dest)
|
||||
+ gz.mtime = -1
|
||||
gz.orig_name = dest.basename.to_s
|
||||
gz.write data
|
||||
gz.close
|
||||
@@ -0,0 +1,28 @@
|
||||
From: Reiner Herrmann <reiner@reiner-h.de>
|
||||
Date: Tue, 10 Oct 2017 15:06:13 -0300
|
||||
Subject: lib/mkmf.rb: sort list of object files in generated Makefile
|
||||
|
||||
Without sorting the list explicitly, its order is indeterministic,
|
||||
because readdir() is also not deterministic.
|
||||
When the list of object files varies between builds, they are linked
|
||||
in a different order, which results in an unreproducible build.
|
||||
|
||||
Upstream-Status: Backport [debian]
|
||||
|
||||
Signed-off-by: Antonio Terceiro <terceiro@debian.org>
|
||||
Signed-off-by: Reiner Herrmann <reiner@reiner-h.de>
|
||||
---
|
||||
lib/mkmf.rb | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/lib/mkmf.rb
|
||||
+++ b/lib/mkmf.rb
|
||||
@@ -2315,7 +2315,7 @@
|
||||
LIBS = #{$LIBRUBYARG} #{$libs} #{$LIBS}
|
||||
ORIG_SRCS = #{orig_srcs.collect(&File.method(:basename)).join(' ')}
|
||||
SRCS = $(ORIG_SRCS) #{(srcs - orig_srcs).collect(&File.method(:basename)).join(' ')}
|
||||
-OBJS = #{$objs.join(" ")}
|
||||
+OBJS = #{$objs.sort.join(" ")}
|
||||
HDRS = #{hdrs.map{|h| '$(srcdir)/' + File.basename(h)}.join(' ')}
|
||||
LOCAL_HDRS = #{$headers.join(' ')}
|
||||
TARGET = #{target}
|
||||
@@ -0,0 +1,28 @@
|
||||
From: Christian Hofstaedtler <zeha@debian.org>
|
||||
Date: Tue, 10 Oct 2017 15:07:11 -0300
|
||||
Subject: Mark Gemspec-reproducible change fixing #784225, too
|
||||
|
||||
I think the UTC date change will fix the Multi-Arch not-same file issue,
|
||||
too.
|
||||
|
||||
Upstream-Status: Backport [debian]
|
||||
|
||||
Signed-off-by: Antonio Terceiro <terceiro@debian.org>
|
||||
Signed-off-by: Christian Hofstaedtler <zeha@debian.org>
|
||||
---
|
||||
lib/rubygems/specification.rb | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/lib/rubygems/specification.rb
|
||||
+++ b/lib/rubygems/specification.rb
|
||||
@@ -1695,7 +1695,9 @@
|
||||
raise(Gem::InvalidSpecificationException,
|
||||
"invalid date format in specification: #{date.inspect}")
|
||||
end
|
||||
- when Time, DateLike then
|
||||
+ when Time then
|
||||
+ Time.utc(date.utc.year, date.utc.month, date.utc.day)
|
||||
+ when DateLike then
|
||||
Time.utc(date.year, date.month, date.day)
|
||||
else
|
||||
TODAY
|
||||
@@ -0,0 +1,67 @@
|
||||
From: Lucas Kanashiro <kanashiro@debian.org>
|
||||
Date: Fri, 1 Nov 2019 15:25:17 -0300
|
||||
Subject: Make gemspecs reproducible
|
||||
|
||||
Without an explicit date, they will get the current date and make the
|
||||
build unreproducible
|
||||
|
||||
Upstream-Status: Backport [debian]
|
||||
|
||||
---
|
||||
ext/bigdecimal/bigdecimal.gemspec | 1 +
|
||||
ext/fiddle/fiddle.gemspec | 1 +
|
||||
ext/io/console/io-console.gemspec | 2 +-
|
||||
lib/ipaddr.gemspec | 1 +
|
||||
lib/rdoc/rdoc.gemspec | 1 +
|
||||
5 files changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/ext/bigdecimal/bigdecimal.gemspec
|
||||
+++ b/ext/bigdecimal/bigdecimal.gemspec
|
||||
@@ -6,6 +6,7 @@
|
||||
s.name = "bigdecimal"
|
||||
s.version = bigdecimal_version
|
||||
s.authors = ["Kenta Murata", "Zachary Scott", "Shigeo Kobayashi"]
|
||||
+ s.date = RUBY_RELEASE_DATE
|
||||
s.email = ["mrkn@mrkn.jp"]
|
||||
|
||||
s.summary = "Arbitrary-precision decimal floating-point number library."
|
||||
--- a/ext/fiddle/fiddle.gemspec
|
||||
+++ b/ext/fiddle/fiddle.gemspec
|
||||
@@ -8,6 +8,7 @@
|
||||
Gem::Specification.new do |spec|
|
||||
spec.name = "fiddle"
|
||||
spec.version = version_module::Fiddle::VERSION
|
||||
+ spec.date = RUBY_RELEASE_DATE
|
||||
spec.authors = ["Aaron Patterson", "SHIBATA Hiroshi"]
|
||||
spec.email = ["aaron@tenderlovemaking.com", "hsbt@ruby-lang.org"]
|
||||
|
||||
--- a/ext/io/console/io-console.gemspec
|
||||
+++ b/ext/io/console/io-console.gemspec
|
||||
@@ -4,6 +4,7 @@
|
||||
Gem::Specification.new do |s|
|
||||
s.name = "io-console"
|
||||
s.version = _VERSION
|
||||
+ s.date = RUBY_RELEASE_DATE
|
||||
s.summary = "Console interface"
|
||||
s.email = "nobu@ruby-lang.org"
|
||||
s.description = "add console capabilities to IO instances."
|
||||
--- a/lib/ipaddr.gemspec
|
||||
+++ b/lib/ipaddr.gemspec
|
||||
@@ -6,6 +6,7 @@
|
||||
Gem::Specification.new do |spec|
|
||||
spec.name = "ipaddr"
|
||||
spec.version = "1.2.2"
|
||||
+ spec.date = RUBY_RELEASE_DATE
|
||||
spec.authors = ["Akinori MUSHA", "Hajimu UMEMOTO"]
|
||||
spec.email = ["knu@idaemons.org", "ume@mahoroba.org"]
|
||||
|
||||
--- a/lib/rdoc/rdoc.gemspec
|
||||
+++ b/lib/rdoc/rdoc.gemspec
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
Gem::Specification.new do |s|
|
||||
s.name = "rdoc"
|
||||
+ s.date = RUBY_RELEASE_DATE
|
||||
s.version = RDoc::VERSION
|
||||
|
||||
s.authors = [
|
||||
@@ -7,6 +7,10 @@ SRC_URI += " \
|
||||
file://run-ptest \
|
||||
file://0001-template-Makefile.in-do-not-write-host-cross-cc-item.patch \
|
||||
file://0002-template-Makefile.in-filter-out-f-prefix-map.patch \
|
||||
file://0003-rdoc-build-reproducible-documentation.patch \
|
||||
file://0004-lib-mkmf.rb-sort-list-of-object-files-in-generated-M.patch \
|
||||
file://0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch \
|
||||
file://0006-Make-gemspecs-reproducible.patch \
|
||||
"
|
||||
|
||||
SRC_URI[sha256sum] = "5085dee0ad9f06996a8acec7ebea4a8735e6fac22f22e2d98c3f2bc3bef7e6f1"
|
||||
|
||||
Reference in New Issue
Block a user