Introduce EXTRA_VERSION_NAME and EXTRA_VERSION_DESCRIPTION
authorJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Fri, 4 May 2018 14:53:57 +0000 (10:53 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 8 Oct 2019 17:33:26 +0000 (13:33 -0400)
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 <jonathan.rajotte-julien@efficios.com>
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
.gitignore
Makefile.am
include/Makefile.am
version/README [new file with mode: 0644]

index 13ca8751c3ecf15672fa18761207a9d8e3b6d854..dcf4d37d059d9ab7a84423d2b1f6cb346d851772 100644 (file)
@@ -157,4 +157,6 @@ health_check
 /include/version.i
 /include/version.i.tmp
 
 /include/version.i
 /include/version.i.tmp
 
+/version
+
 classnoinst.stamp
 classnoinst.stamp
index 6ebdb589a7033704e87affbbb47fb58f82094d28..552fe510b33363fad4dadf950c7c3d4ef537260f 100644 (file)
@@ -14,4 +14,5 @@ dist_doc_DATA = LICENSE \
 
 dist_noinst_DATA = CodingStyle
 
 
 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
index c86a1c5e09c0341c062033cfd39c86107915c9e0..85ffa11da55af922abb9c07f98c2c70428be3c60 100644 (file)
 ## 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
 ## 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@)
 ##
 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 \
                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; \
                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; \
                        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 (file)
index 0000000..b043354
--- /dev/null
@@ -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 "-".
This page took 0.028455 seconds and 5 git commands to generate.