From e6d194f95ed107e3bf75d110c64c7d7fcd1e3587 Mon Sep 17 00:00:00 2001 From: Ian Ker-Seymer Date: Fri, 31 Jan 2025 22:37:40 -0500 Subject: [PATCH] Use deterministic SOURCE_DATE_EPOCH --- docker/setup/rb-sys-dock.sh | 2 +- gem/exe/rb-sys-dock | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/docker/setup/rb-sys-dock.sh b/docker/setup/rb-sys-dock.sh index 3573b8d7..d2ba924b 100755 --- a/docker/setup/rb-sys-dock.sh +++ b/docker/setup/rb-sys-dock.sh @@ -3,7 +3,7 @@ set -e setup_sudoers() { - echo "Defaults env_keep += \"BUNDLE_PATH RB_SYS_CARGO_TARGET_DIR RAKEOPT RUBY_TARGET\"" >> /etc/sudoers.d/rb-sys-dock + echo "Defaults env_keep += \"BUNDLE_PATH RB_SYS_CARGO_TARGET_DIR RAKEOPT RUBY_TARGET GEM_PRIVATE_KEY_PASSPHRASE SOURCE_DATE_EPOCH\"" >> /etc/sudoers.d/rb-sys-dock } main() { diff --git a/gem/exe/rb-sys-dock b/gem/exe/rb-sys-dock index 6edd701f..ffb43faa 100755 --- a/gem/exe/rb-sys-dock +++ b/gem/exe/rb-sys-dock @@ -392,6 +392,7 @@ def rcd(input_args) -e RB_SYS_CARGO_TARGET_DIR=#{tmp_target_dir.inspect} \ -e RUBY_CC_VERSION="#{ruby_versions}" \ -e RUBY_TARGET="#{OPTIONS.fetch(:platform)}" \ + -e SOURCE_DATE_EPOCH="#{source_date_epoch}" \ -e RAKEOPT \ -e TERM \ -w #{working_directory} \ @@ -410,6 +411,19 @@ def rcd(input_args) exec(cmd) end +def source_date_epoch + return ENV["SOURCE_DATE_EPOCH"] if ENV.key?("SOURCE_DATE_EPOCH") + + stdout, status = Open3.capture2("git log -1 --pretty=%ct") + + if status.success? + stdout.strip + else + logger.warn("Could not determine SOURCE_DATE_EPOCH from git log, using current time") + Time.now.to_i.to_s + end +end + def download_image image = ENV.fetch("RCD_IMAGE")