diff options
Diffstat (limited to 'pkgs/development/compilers/gcc/patches/use-source-date-epoch.patch')
-rw-r--r-- | pkgs/development/compilers/gcc/patches/use-source-date-epoch.patch | 52 |
1 files changed, 0 insertions, 52 deletions
diff --git a/pkgs/development/compilers/gcc/patches/use-source-date-epoch.patch b/pkgs/development/compilers/gcc/patches/use-source-date-epoch.patch deleted file mode 100644 index 65a5ab028c1c..000000000000 --- a/pkgs/development/compilers/gcc/patches/use-source-date-epoch.patch +++ /dev/null @@ -1,52 +0,0 @@ -https://gcc.gnu.org/ml/gcc-patches/2015-06/msg02210.html - -diff --git a/libcpp/macro.c b/libcpp/macro.c -index 1e0a0b5..a52e3cb 100644 ---- a/libcpp/macro.c -+++ b/libcpp/macro.c -@@ -349,14 +349,38 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node) - slow on some systems. */ - time_t tt; - struct tm *tb = NULL; -+ char *source_date_epoch; - -- /* (time_t) -1 is a legitimate value for "number of seconds -- since the Epoch", so we have to do a little dance to -- distinguish that from a genuine error. */ -- errno = 0; -- tt = time(NULL); -- if (tt != (time_t)-1 || errno == 0) -- tb = localtime (&tt); -+ /* Allow the date and time to be set externally by an exported -+ environment variable to enable reproducible builds. */ -+ source_date_epoch = getenv ("SOURCE_DATE_EPOCH"); -+ if (source_date_epoch) -+ { -+ errno = 0; -+ tt = (time_t) strtol (source_date_epoch, NULL, 10); -+ if (errno == 0) -+ { -+ tb = gmtime (&tt); -+ if (tb == NULL) -+ cpp_error (pfile, CPP_DL_ERROR, -+ "SOURCE_DATE_EPOCH=\"%s\" is not a valid date", -+ source_date_epoch); -+ } -+ else -+ cpp_error (pfile, CPP_DL_ERROR, -+ "SOURCE_DATE_EPOCH=\"%s\" is not a valid number", -+ source_date_epoch); -+ } -+ else -+ { -+ /* (time_t) -1 is a legitimate value for "number of seconds -+ since the Epoch", so we have to do a little dance to -+ distinguish that from a genuine error. */ -+ errno = 0; -+ tt = time(NULL); -+ if (tt != (time_t)-1 || errno == 0) -+ tb = localtime (&tt); -+ } - - if (tb) - { |