On 2021-09-10 03:57, Jaikiran Pai wrote:
Would this system property have a value that represents what SOURCE_DATE_EPOCH environment variable would have contained? i.e. it is the "A UNIX timestamp, defined as the number of seconds, excluding leap seconds, since 01 Jan 1970 00:00:00 UTC."? So users can potentially do -Djava.util.Properties.storeDate=${SOURCE_DATE_EPOCH}?

Or would this system property be just some kind flag, which when having a value of "true" would expect the java.util.Properties code to lookup the SOURCE_DATE_EPOCH environment variable and use that value from the environment variable?

I'm guessing it's the former where the value is the number of epoch seconds, but just wanted to be sure before I do this change.

Actually, why don't we define it as a free-form string instead? That way the onus is on the user setting the property to get it formatted the way they want. If they want a backwards-compatibly formatted string for SOURCE_DATE_EPOCH, they'd have to call Java with an argument something along the lines of:

-Djava.util.Properties.storeDate="$(date --date=@${SOURCE_DATE_EPOCH} +"%a %b %d %H:%M:%S %Z %Y")"

which is not much more terrible than

-Djava.util.Properties.storeDate=${SOURCE_DATE_EPOCH}

given that we in any case won't be reading SOURCE_DATE_EPOCH directly.

This also allows for the user to just skip the date completely:

-Djava.util.Properties.storeDate=""

By changing this property from a epoch based long to a string, all formatting and verification gets removed from your patch, and it is greatly simplified.

/Magnus

Reply via email to