mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-12-08 23:03:46 +00:00
55 lines
2.1 KiB
Diff
55 lines
2.1 KiB
Diff
Description: Reproducible builds requires that the build time stamp is not
|
|
recorded in binaries. In FPC they are fuild in via the $INCLUDE %DATE%
|
|
directive which calls getdatestr in globals.pas. To allow reproducible builds
|
|
we should honor the SOURCE_DATE_EPOCH environment variable. To not depend on
|
|
the dateutil unit, we include the required code from that package here.
|
|
Author: Paul Gevers <elbrus@debian.org>
|
|
Author: Abou Al Montacir <abou.almontacir@sfr.fr>
|
|
|
|
Index: fpc/fpcsrc/compiler/globals.pas
|
|
===================================================================
|
|
--- fpc.orig/fpcsrc/compiler/globals.pas
|
|
+++ fpc/fpcsrc/compiler/globals.pas
|
|
@@ -559,6 +559,7 @@ interface
|
|
startsystime : TSystemTime;
|
|
|
|
function getdatestr:string;
|
|
+ Function UnixToDateTime(const AValue: Int64): TDateTime;
|
|
function gettimestr:string;
|
|
function filetimestring( t : longint) : string;
|
|
function getrealtime(const st: TSystemTime) : real;
|
|
@@ -816,12 +817,34 @@ implementation
|
|
get the current date in a string YY/MM/DD
|
|
}
|
|
var
|
|
+ Year,Month,Day: Word;
|
|
st: TSystemTime;
|
|
+ SourceDateEpoch: string;
|
|
begin
|
|
+ SourceDateEpoch := GetEnvironmentVariable('SOURCE_DATE_EPOCH');
|
|
+ if Length(SourceDateEpoch)>0 then
|
|
+ begin
|
|
+ DecodeDate(UnixToDateTime(StrToInt64(SourceDateEpoch)),Year,Month,Day);
|
|
+ getdatestr:=L0(Year)+'/'+L0(Month)+'/'+L0(Day);
|
|
+ end
|
|
+ else
|
|
+ begin
|
|
GetLocalTime(st);
|
|
getdatestr:=L0(st.Year)+'/'+L0(st.Month)+'/'+L0(st.Day);
|
|
+ end;
|
|
end;
|
|
|
|
+ Function UnixToDateTime(const AValue: Int64): TDateTime;
|
|
+ { Code copied from fpcsrc/packages/rtl-objpas/src/inc/dateutil.inc and
|
|
+ fpcsrc/rtl/objpas/sysutils/datih.inc }
|
|
+ const
|
|
+ TDateTimeEpsilon = 2.2204460493e-16 ;
|
|
+ UnixEpoch = TDateTime(-2415018.5) + TDateTime(2440587.5) ;
|
|
+ begin
|
|
+ Result:=UnixEpoch + AValue/SecsPerDay;
|
|
+ if (UnixEpoch>=0) and (Result<-TDateTimeEpsilon) then
|
|
+ Result:=int(Result-1.0+TDateTimeEpsilon)-frac(1.0+frac(Result));
|
|
+ end;
|
|
|
|
function filetimestring( t : longint) : string;
|
|
{
|