From: Pascal Packaging Team Date: Sat, 14 Apr 2018 16:08:39 +0000 (+0100) Subject: honor_SOURCE_DATE_EPOCH_in_date X-Git-Tag: archive/raspbian/3.0.4+dfsg-17+rpi1^2~19 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=cf4d7e92f54c6955d22dc26c179d2ea03a017de9;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; {