From 6fa7f7c2613087074ae68cafce9a024d57720a51 Mon Sep 17 00:00:00 2001 From: Jonathan Rajotte Date: Fri, 4 May 2018 10:53:57 -0400 Subject: [PATCH] Backport: Introduce EXTRA_VERSION_NAME and EXTRA_VERSION_DESCRIPTION Backport: remove .gitignore to accommodate dist tar patching 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 --- Makefile.am | 3 ++- include/Makefile.am | 29 ++++++++++++++++++++++------- version/README | 16 ++++++++++++++++ 3 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 version/README diff --git a/Makefile.am b/Makefile.am index 63101c541..d18aca143 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 84c442292..833407a2a 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 "-". -- 2.34.1