crystal-lang / crystal

The Crystal Programming Language
https://crystal-lang.org
Apache License 2.0
19.26k stars 1.61k forks source link

Add `src/SOURCE_DATE_EPOCH` to release tree #14574

Closed straight-shoota closed 2 months ago

straight-shoota commented 2 months ago

The Crystal compiler version info (crystal --version) includes a date representing the chronological aspect of the comiler version. It's supposed to represent the date of the source code. But this information is not available in a bare snapshot of the source tree. The Makefile tries to read the date of the last commit from git, which requires git and the repository.

This patch adds a file src/SOURCE_DATE_EPOCH which sits alongside src/VERSION to have both data available next to each other. It gets automatically populated in the release process and is removed afterwards. So it should only be available in the source tree of tagged release commits.

A practical use case for this is https://github.com/NixOS/nixpkgs/issues/306765 as well as any other package build that doesn't use the git repository.