From: Jonathan Rajotte Date: Fri, 4 May 2018 14:53:57 +0000 (-0400) Subject: Introduce EXTRA_VERSION_NAME and EXTRA_VERSION_DESCRIPTION X-Git-Tag: v2.12.0-rc1~321 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=2ebe596e3e57e57220afae2b4499aff6348ce3a7;p=lttng-tools.git Introduce EXTRA_VERSION_NAME and EXTRA_VERSION_DESCRIPTION On version.i generation, check the content of the following files : * "extra_version_name" The first line is used to populate the EXTRA_VERSION_NAME pre-processor define statement. * "extra_version_description" The content is used to populate the EXTRA_VERSION_DESCRIPTION pre-processor define statement. It should contain the description of local modifications done to the tree. This can be used by distribution packager to specify what changes were applied locally. Mostly in the form of patch/commit name. All non-alpha numeric characters are converted to "-". Signed-off-by: Jonathan Rajotte Signed-off-by: Michael Jeanson Signed-off-by: Jérémie Galarneau --- diff --git a/.gitignore b/.gitignore index 13ca8751c..dcf4d37d0 100644 --- a/.gitignore +++ b/.gitignore @@ -157,4 +157,6 @@ health_check /include/version.i /include/version.i.tmp +/version + classnoinst.stamp diff --git a/Makefile.am b/Makefile.am index 6ebdb589a..552fe510b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -14,4 +14,5 @@ dist_doc_DATA = LICENSE \ dist_noinst_DATA = CodingStyle -EXTRA_DIST = extras/lttng-bash_completion gpl-2.0.txt lgpl-2.1.txt +EXTRA_DIST = extras/lttng-bash_completion gpl-2.0.txt lgpl-2.1.txt \ + version diff --git a/include/Makefile.am b/include/Makefile.am index c86a1c5e0..85ffa11da 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -20,11 +20,21 @@ ## overwrite the git version with an empty string in "version.i.tmp". ## ## If we don't have a "version.i.tmp" nor a "version.i", generate an empty -## string as a failover. +## string as a failover. If a "version.i" is present, for example when building +## from a distribution tarball, get the git_version using grep. ## -## If we don't have a "version.i" or we have both files and they are different, -## copy "version.i.tmp" over "version.i". This way the dependent targets are -## only rebuilt when the version string changes. +## Fetch the EXTRA_VERSION_NAME define from "version/extra_version_name" and output it +## to "version.i.tmp". +## +## Fetch the EXTRA_VERSION_DESCRIPTION define from "version/extra_version_description", +## sanitize and format it with a sed script to replace all non-alpha-numeric values +## with "-" and join all lines by replacing "\n" with litteral string c-style "\n\t" and +## output it to "version.i.tmp". +## +## If we don't have a "version.i" or we have both files (version.i, version.i.tmp) +## and they are different, copy "version.i.tmp" over "version.i". +## This way the dependent targets are only rebuilt when the git version +## string or either one of extra version string change. ## version_verbose = $(version_verbose_@AM_V@) version_verbose_ = $(version_verbose_@AM_DEFAULT_V@) @@ -43,10 +53,15 @@ version.i: fi; \ fi; \ if test ! -f version.i.tmp; then \ - if test ! -f version.i; then \ - echo '#define GIT_VERSION ""' > version.i; \ + if test -f version.i; then \ + $(GREP) "^#define \bGIT_VERSION\b.*" version.i > version.i.tmp; \ + else \ + echo '#define GIT_VERSION ""' > version.i.tmp; \ fi; \ - elif test ! -f version.i || \ + fi; \ + echo "#define EXTRA_VERSION_NAME \"`$(SED) -n '1p' "$(top_srcdir)/version/extra_version_name" 2> /dev/null`\"" >> version.i.tmp; \ + echo "#define EXTRA_VERSION_DESCRIPTION \"`$(SED) -E ':a ; N ; $$!ba ; s/[^a-zA-Z0-9 \n\t\.,]/-/g ; s/\r{0,1}\n/\\\n\\\t/g' "$(top_srcdir)/version/extra_version_description" 2> /dev/null`\"" >> version.i.tmp; \ + if test ! -f version.i || \ test x"`cat version.i.tmp`" != x"`cat version.i`"; then \ mv version.i.tmp version.i; \ fi; \ diff --git a/version/README b/version/README new file mode 100644 index 000000000..b04335460 --- /dev/null +++ b/version/README @@ -0,0 +1,16 @@ +On version.i generation, check the content of the following files : + + * "extra_version_name" + + The first line is used to populate the EXTRA_VERSION_NAME pre-processor + define statement. + + * "extra_version_description" + + The content is used to populate the EXTRA_VERSION_DESCRIPTION pre-processor + define statement. + + It should contain the description of local modifications done to the tree. + This can be used by distribution packager to specify what changes were + applied locally. Mostly in the form of patch/commit name. All non-alpha + numeric characters are converted to "-".