Hello everybody

In the last couple of days I have been looking into how our version
information is handled in DT (the string in "About darktable" and in the
upper right corner of the UI)

That area is a bit confusing and this mail is here to clarify what's going
on and make sure I havn't missed any use-case...

So here is the rules, in order of priority

* if PROJECT_VERSION is given on the cmake command line,
  * the string given on the command line will be used everywhere
  * the version will never been updated (i.e git fetch+make won't update it)
* if your working directory is NOT a git checkout, but it was generated
through "git archive" (this includes github-generated tarballs)
  * the version will be set to "archive-<SHA40>" where SHA40 is the commit
ID from which the git archive was built
  * the version will never been updated (this is not a git checkout, so you
can't update anyway)
* if your working directory is NOT a git checkout but it is NOT a git
archive either (i.e you copied the source tree from a checkout and removed
the .git directory)
  * the version string will be set to "unknown-version"
  * the version will never been updated (this is not a git checkout, so you
can't update anyway)
* if you are using a proper git-checkout
  * the version will be set at cmake time to "git describe --tags" (i.e the
old format) for packaging information
  * the version will be set at make time for the actual code (so git
pull+make will update version information)


Apart from the code related to version info above there are still three
places where git-describe is called directly, and thus might report
incorrect version information. None of these are likely to be a problem,
but i'll mention them

* create_release.sh use git-describe to generate version_gen.h itself. This
looks ok to me, i don't think we want to workaround that one
* packaging/macosx/make-app-bundle calls it directly to do some sed magic
on Info.plist... but afaict, the fields it is trying to replace have
already been correctly replaced by cmake at that point. i'm a bit confused
on that one
* packaging/Solaris_11/build_ips uses it to build its manifest file. Again,
this is probably not an issue since only the maintainer needs it and he
will probably work in a clean git checkout



Hope this helps... And please report any problem you have (especially
packagers, since they are the most likely to have special use-cases)

___________________________________________________________________________
darktable developer mailing list
to unsubscribe send a mail to [email protected]

Reply via email to