diff options
author | Ellen Marie Dash <the@smallest.dog> | 2019-08-17 04:45:09 +0000 |
---|---|---|
committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2019-09-26 17:48:00 +0900 |
commit | 508afe2c26737e0be60a72faa9d6740a06b0914c (patch) | |
tree | b912da8888b6d1b476b8fdc67562cbf9b3b9cdef /lib/rubygems | |
parent | 8436b2717c458a554dd81456a8e6e030e2c3e038 (diff) | |
download | ruby-508afe2c26737e0be60a72faa9d6740a06b0914c.tar.gz |
[rubygems/rubygems] Set SOURCE_DATE_EPOCH env var if not provided.
Fixes #2290.
1. `Gem::Specification.date` returns SOURCE_DATE_EPOCH when defined,
2. this commit makes RubyGems set it _persistently_ when not provided.
This combination means that you can build a gem, check the build time,
and use that value to generate a new build -- and then verify they're
the same.
https://github.com/rubygems/rubygems/commit/d830d53f59
Diffstat (limited to 'lib/rubygems')
-rw-r--r-- | lib/rubygems/package.rb | 2 | ||||
-rw-r--r-- | lib/rubygems/package/tar_writer.rb | 8 | ||||
-rw-r--r-- | lib/rubygems/specification.rb | 2 |
3 files changed, 6 insertions, 6 deletions
diff --git a/lib/rubygems/package.rb b/lib/rubygems/package.rb index 16cda5affe..bef37aedc1 100644 --- a/lib/rubygems/package.rb +++ b/lib/rubygems/package.rb @@ -193,7 +193,7 @@ class Gem::Package def initialize(gem, security_policy) # :notnew: @gem = gem - @build_time = ENV["SOURCE_DATE_EPOCH"] ? Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc : Time.now + @build_time = Gem.source_date_epoch @checksums = {} @contents = nil @digests = Hash.new { |h, algorithm| h[algorithm] = {} } diff --git a/lib/rubygems/package/tar_writer.rb b/lib/rubygems/package/tar_writer.rb index 87ee39a944..96d8184e8e 100644 --- a/lib/rubygems/package/tar_writer.rb +++ b/lib/rubygems/package/tar_writer.rb @@ -123,7 +123,7 @@ class Gem::Package::TarWriter header = Gem::Package::TarHeader.new :name => name, :mode => mode, :size => size, :prefix => prefix, - :mtime => ENV["SOURCE_DATE_EPOCH"] ? Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc : Time.now + :mtime => Gem.source_date_epoch @io.write header @io.pos = final_pos @@ -217,7 +217,7 @@ class Gem::Package::TarWriter header = Gem::Package::TarHeader.new(:name => name, :mode => mode, :size => size, :prefix => prefix, - :mtime => ENV["SOURCE_DATE_EPOCH"] ? Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc : Time.now).to_s + :mtime => Gem.source_date_epoch).to_s @io.write header os = BoundedStream.new @io, size @@ -245,7 +245,7 @@ class Gem::Package::TarWriter :size => 0, :typeflag => "2", :linkname => target, :prefix => prefix, - :mtime => ENV["SOURCE_DATE_EPOCH"] ? Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc : Time.now).to_s + :mtime => Gem.source_date_epoch).to_s @io.write header @@ -298,7 +298,7 @@ class Gem::Package::TarWriter header = Gem::Package::TarHeader.new :name => name, :mode => mode, :typeflag => "5", :size => 0, :prefix => prefix, - :mtime => ENV["SOURCE_DATE_EPOCH"] ? Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc : Time.now + :mtime => Gem.source_date_epoch @io.write header diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb index c023e4f4aa..b3db311cbf 100644 --- a/lib/rubygems/specification.rb +++ b/lib/rubygems/specification.rb @@ -1667,7 +1667,7 @@ class Gem::Specification < Gem::BasicSpecification # https://reproducible-builds.org/specs/source-date-epoch/ def date - @date ||= ENV["SOURCE_DATE_EPOCH"] ? Time.utc(*Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc.to_a[3..5].reverse) : TODAY + @date ||= Time.utc(*Gem.source_date_epoch.utc.to_a[3..5].reverse) end DateLike = Object.new # :nodoc: |