When building from git, it can be useful to know which version
a user has at commit level resolution. When building in a git
repository, use git describe to generate a version string. If
HEAD matches a tag, use that. Examples:
$ ./svtplay-dl --version
0.20.2015.10.08-3-gbd75a67
$ git tag -a 0.20.2015.10.18
$ make
...
$ ./svtplay-dl --version
0.20.2015.10.18
make release is also adjusted, so that it overrides the version
value when building, so that official releases still only has the
tag.
The following error was reported when trying to build on OSX:
install: illegal option -- D
We now instead create the directories in a first, and copy in a second
step.
Even though zip's -X flag suggests that it removes timestamps, that's not
quite true. There's still modification times per file, and that introduces
non-determinism that are hard to notice, since the mtimes are unlikely to
change without changes to the files. Only when doing a new clone/unpacking
a tar ball under some circumstances or similar action that resets/discards
the mtimes, we would notice.
So, the -X is not enough, and from what I can tell, there's no way of
telling zip to not include timestamps (or truncate them). With this
change, we stage all files in a temporary .build directory, and set the
mtime manually to the beginning of time (as is the case for zip files:
1980-01-01T00:00). These timestamps should not be important to anyone,
since they are all presented to the user as a blob.
The rationale for this change is that this makes it possible to build
svtplay-dl reproducibly. And it also removes the pesky svtplay-dl diffs
just from regenerating the executable.
This change makes zip drop any additional metadata about the file, like access
time. Without this change, you'd get different md5sums every time you build
svtplay-dl --- even though you use the exact same sources.
Credit to the people behind http://reproducible.debian.net/ for inspiration! :)
This change makes it easier to add new packages; it's only necessary
to update the sub makefile (lib/Makefile) and add new packaes to the
PACKAGES variable.