On 17 April 2017 at 11:59, Alistair Grant <akgrant0710@gmail.com> wrote:
What about the genVersion.sh script I provided earlier in this thread?

The genVersion.sh script has a dependency under the hood that I can't satisfy: it expects to be able to run git commands but I can't do that in the nix environment.

The root problem is that nix requires a perfectly reproducible build environment, with the sha256 hash of every dependency declared, and that is hard to do for the .git folder. The .git is really a database that contains many source code versions and not just the one that I have checked out.

Which perl script (I'm still learning about the build process), and why
would you need access to git blobs directly?

Check out opensmalltalk-vm/.git_filters/RevDateURL.smudge. This is a perl script that is accessing environmental state that's off-limits in the nix universe e.g. whoami, hostname, date, git, etc.

Could be that I should write the version info by hand and apply it as a patch.

I have to make my build produce the same result every time it runs. That way it will always work the same, and somebody in 5 years who wants to run an _ancient_ Pharo 6 image will be able to do that with my build script because it's a fixed point.
��
What does "Smalltalk vm interpreterSourceDate" actually return?

actually it gets an exception because I don't have well-formed values from the strings it is trying to parse.