[PATCH 2/2] Allow to override build date with SOURCE_DATE_EPOCH

Nick Clifton nickc@redhat.com
Mon Nov 5 17:29:00 GMT 2018


Hi Bernhard,

> This helps making xen efi binaries build reproducibly by default
> much more elegantly than
> https://lists.xenproject.org/archives/html/xen-devel/2018-10/msg01850.html

> +    {
> +      time_t build_time;
> +      const char *source_date_epoch = getenv ("SOURCE_DATE_EPOCH");
> +      if (source_date_epoch == NULL
> +          || (build_time = strtoll (source_date_epoch, NULL, 10)) <= 0)
> +        build_time = time (0);
> +      H_PUT_32 (abfd, build_time, filehdr_out->f_timdat);
> +    }

I *really* don't like this solution to the problem.  There are several
reasons:

   * There is no documentation on this environment variable, so
     users are not going to know that it exists.

   * There is already a well established way of customizing the
     behaviour of the linker: command line options.

   * Possibly the most important: It is really hard to debug problems
     reported by users when there are environment variables controlling
     the behaviour of the program.  Most users will not even bother to
     include the environment variables in the bug report, and even if
     they do, they could be misleading if the build system involved
     overrides these variables for its own purposes.

My suggestion would be to modify the already existing --insert-timestamp
option, so that it can take an option argument specifying the time to be
inserted.  That ought to work and would, in my opinion, be much better
than using environment variables.

Cheers
   Nick




More information about the Binutils mailing list