From: Pascal Packaging Team Date: Sat, 10 Jun 2017 17:13:48 +0000 (+0100) Subject: honor_SOURCE_DATE_EPOCH_in_date X-Git-Tag: archive/raspbian/3.0.0+dfsg-11+rpi1+deb9u1^2~21 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=59212eb23112a62806f1330f0fd4d0e624989b05;p=fpc.git honor_SOURCE_DATE_EPOCH_in_date Gbp-Pq: Name honor_SOURCE_DATE_EPOCH_in_date.patch --- diff --git a/fpcsrc/compiler/globals.pas b/fpcsrc/compiler/globals.pas index 47abece5..a27ed679 100644 --- a/fpcsrc/compiler/globals.pas +++ b/fpcsrc/compiler/globals.pas @@ -510,6 +510,7 @@ interface starttime : real; function getdatestr:string; + Function UnixToDateTime(const AValue: Int64): TDateTime; function gettimestr:string; function filetimestring( t : longint) : string; function getrealtime : real; @@ -766,11 +767,29 @@ implementation } var Year,Month,Day: Word; + SourceDateEpoch: string; begin - DecodeDate(Date,year,month,day); + SourceDateEpoch := GetEnvironmentVariable('SOURCE_DATE_EPOCH'); + if Length(SourceDateEpoch)>0 then + DecodeDate(UnixToDateTime(StrToInt64(SourceDateEpoch)),year,month,day) + else + DecodeDate(Date,year,month,day); getdatestr:=L0(Year)+'/'+L0(Month)+'/'+L0(Day); 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)) + else if (UnixEpoch<=-1.0) and (Result>-1.0+TDateTimeEpsilon) then + Result:=int(Result+1.0-TDateTimeEpsilon)+frac(1.0-abs(frac(1.0+Result))); + end; function filetimestring( t : longint) : string; {