On 30/09/2021 16:12:30+0200, Alexander Kanavin wrote:
> Does this mean ruby can be dropped from reproducibility exception list?
> 

That is the goal, I'll run that through the autobuilders

> Alex
> 
> On Thu, 30 Sept 2021 at 16:04, Thomas Perrot <thomas.per...@bootlin.com>
> wrote:
> 
> > 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]
> >
> > Signed-off-by: Thomas Perrot <thomas.per...@bootlin.com>
> > ---
> >  ...doc-build-reproducible-documentation.patch | 35 ++++++++++
> >  ...-list-of-object-files-in-generated-M.patch | 28 ++++++++
> >  ...eproducible-change-fixing-784225-too.patch | 28 ++++++++
> >  .../0006-Make-gemspecs-reproducible.patch     | 67 +++++++++++++++++++
> >  meta/recipes-devtools/ruby/ruby_3.0.2.bb      |  4 ++
> >  5 files changed, 162 insertions(+)
> >  create mode 100644
> > meta/recipes-devtools/ruby/ruby/0003-rdoc-build-reproducible-documentation.patch
> >  create mode 100644
> > meta/recipes-devtools/ruby/ruby/0004-lib-mkmf.rb-sort-list-of-object-files-in-generated-M.patch
> >  create mode 100644
> > meta/recipes-devtools/ruby/ruby/0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch
> >  create mode 100644
> > meta/recipes-devtools/ruby/ruby/0006-Make-gemspecs-reproducible.patch
> >
> > diff --git
> > a/meta/recipes-devtools/ruby/ruby/0003-rdoc-build-reproducible-documentation.patch
> > b/meta/recipes-devtools/ruby/ruby/0003-rdoc-build-reproducible-documentation.patch
> > new file mode 100644
> > index 000000000000..f92f0e1ba683
> > --- /dev/null
> > +++
> > b/meta/recipes-devtools/ruby/ruby/0003-rdoc-build-reproducible-documentation.patch
> > @@ -0,0 +1,35 @@
> > +From: Christian Hofstaedtler <z...@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 <terce...@debian.org>
> > +Signed-off-by: Christian Hofstaedtler <z...@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
> > diff --git
> > a/meta/recipes-devtools/ruby/ruby/0004-lib-mkmf.rb-sort-list-of-object-files-in-generated-M.patch
> > b/meta/recipes-devtools/ruby/ruby/0004-lib-mkmf.rb-sort-list-of-object-files-in-generated-M.patch
> > new file mode 100644
> > index 000000000000..e0aca0dcfc10
> > --- /dev/null
> > +++
> > b/meta/recipes-devtools/ruby/ruby/0004-lib-mkmf.rb-sort-list-of-object-files-in-generated-M.patch
> > @@ -0,0 +1,28 @@
> > +From: Reiner Herrmann <rei...@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 <terce...@debian.org>
> > +Signed-off-by: Reiner Herrmann <rei...@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}
> > diff --git
> > a/meta/recipes-devtools/ruby/ruby/0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch
> > b/meta/recipes-devtools/ruby/ruby/0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch
> > new file mode 100644
> > index 000000000000..b7faa58655b2
> > --- /dev/null
> > +++
> > b/meta/recipes-devtools/ruby/ruby/0005-Mark-Gemspec-reproducible-change-fixing-784225-too.patch
> > @@ -0,0 +1,28 @@
> > +From: Christian Hofstaedtler <z...@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 <terce...@debian.org>
> > +Signed-off-by: Christian Hofstaedtler <z...@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
> > diff --git
> > a/meta/recipes-devtools/ruby/ruby/0006-Make-gemspecs-reproducible.patch
> > b/meta/recipes-devtools/ruby/ruby/0006-Make-gemspecs-reproducible.patch
> > new file mode 100644
> > index 000000000000..504893b4b4ff
> > --- /dev/null
> > +++ b/meta/recipes-devtools/ruby/ruby/0006-Make-gemspecs-reproducible.patch
> > @@ -0,0 +1,67 @@
> > +From: Lucas Kanashiro <kanash...@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         = ["m...@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         = ["aa...@tenderlovemaking.com", "
> > h...@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 = "n...@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         = ["k...@idaemons.org", "u...@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 = [
> > diff --git a/meta/recipes-devtools/ruby/ruby_3.0.2.bb
> > b/meta/recipes-devtools/ruby/ruby_3.0.2.bb
> > index 38e594a59ef3..2abf504d91bc 100644
> > --- a/meta/recipes-devtools/ruby/ruby_3.0.2.bb
> > +++ b/meta/recipes-devtools/ruby/ruby_3.0.2.bb
> > @@ -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"
> > --
> > 2.31.1
> >
> >
> > 
> >
> >

-- 
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#156502): 
https://lists.openembedded.org/g/openembedded-core/message/156502
Mute This Topic: https://lists.openembedded.org/mt/85974381/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to