[SLOF] [PATCH] Allow to override build date with SOURCE_DATE_EPOCH

Thomas Huth thuth at redhat.com
Mon Oct 23 20:03:13 AEDT 2023


On 23/10/2023 10.39, Bernhard M. Wiedemann wrote:
> in order to make builds reproducible.
> See https://reproducible-builds.org/ for why this is good
> and https://reproducible-builds.org/specs/source-date-epoch/
> for the definition of this variable.
> 
> Without this patch, openSUSE's qemu package
> always varied between builds.
> 
> This patch was done while working on reproducible builds for openSUSE.
> 
> This is an alternative to
> https://lists.ozlabs.org/pipermail/slof/2023-October/002895.html
> 
> Signed-off-by: Bernhard M. Wiedemann <bwiedemann at suse.de>
> ---
>   romfs/tools/create_crc.c | 8 +++++++-
>   1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/romfs/tools/create_crc.c b/romfs/tools/create_crc.c
> index abc373b..9122e3c 100644
> --- a/romfs/tools/create_crc.c
> +++ b/romfs/tools/create_crc.c
> @@ -95,7 +95,13 @@ createHeaderImage(int notime)
>   
>   	if (!notime) {
>   		/* read time and write it into data stream */
> -		if ((caltime = time(NULL)) == -1) {
> +		char *source_date_epoch;
> +		/* This assumes that (if used) the SOURCE_DATE_EPOCH environment variable
> +		   will contain a correct, positive integer in the time_t range */
> +		if ((source_date_epoch = getenv("SOURCE_DATE_EPOCH")) == NULL ||
> +			(caltime = (time_t)strtoll(source_date_epoch, NULL, 10)) <= 0)

Mostly a matter of taste, but I think it would be nicer to indent "(caltime" 
to the same level as "(source_date_epoch" in the previous line.

> +			time(&caltime);

Could you please use caltime = time(NULL) instead? ... I'm not quite sure 
whether time() will return -1 as error code via the pointer, too, or whether 
it only returns -1 as error via the return code.

With that change added:
Reviewed-by: Thomas Huth <thuth at redhat.com>


> +		if (caltime == -1) {
>   			printf("time error\n");
>   		}
>   		if ((tm = localtime(&caltime)) == NULL) {



More information about the SLOF mailing list