From 7f5ed73a87449fc7133a2bf7268a7f59f191e155 Mon Sep 17 00:00:00 2001 From: Jonathan Rajotte Date: Mon, 14 May 2018 16:03:12 -0400 Subject: [PATCH] Introduce EXTRA_VERSION_PATCHES MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This allow third-party (packagers) to provide more information about what custom patches were applied to the tree. To do so, one can create emtpy files in "version/extra_patches/", the filenames will be used to generate the EXTRA_VERSION_PATCHES define. Add this information to the debug log of lttng-relayd and lttng-sessiond. Also append it at the end of the "version" command of the lttng binary. Signed-off-by: Jonathan Rajotte Signed-off-by: Michael Jeanson Signed-off-by: Jérémie Galarneau --- include/Makefile.am | 10 ++++++++++ src/bin/lttng-relayd/main.c | 3 +++ src/bin/lttng-sessiond/sessiond-config.c | 3 +++ src/bin/lttng/commands/version.c | 3 +++ version/extra_patches/README | 8 ++++++++ 5 files changed, 27 insertions(+) create mode 100644 version/extra_patches/README diff --git a/include/Makefile.am b/include/Makefile.am index 85ffa11da..79597f4f2 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -31,6 +31,15 @@ ## with "-" and join all lines by replacing "\n" with litteral string c-style "\n\t" and ## output it to "version.i.tmp". ## +## Repeat the same logic for the "version/extra_patches" directory. +## Data fetched from "version/extra_patches" must be sanitized and +## formatted. +## The data is fetched using "ls" with an ignore pattern for the README file. +## The sanitize step uses sed with a script to replace all +## non-alpha-numeric values, except " " (space), to "-". +## The formatting step uses sed with a script to join all lines +## by replacing "\n" with litteral string c-style "\n\t". +## ## 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 @@ -61,6 +70,7 @@ 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; \ + echo "#define EXTRA_VERSION_PATCHES \"`ls --ignore='README' -1 "$(top_srcdir)/version/extra_patches" | $(SED) -E ':a ; N ; $$!ba ; s/[^a-zA-Z0-9 \n\t\.]/-/g ; s/\r{0,1}\n/\\\n\\\t/g' 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; \ diff --git a/src/bin/lttng-relayd/main.c b/src/bin/lttng-relayd/main.c index 1c272c392..2836c489c 100644 --- a/src/bin/lttng-relayd/main.c +++ b/src/bin/lttng-relayd/main.c @@ -201,6 +201,9 @@ static void relayd_config_log(void) if (EXTRA_VERSION_DESCRIPTION[0] != '\0') { DBG("LTTng-relayd extra version description:\n\t" EXTRA_VERSION_DESCRIPTION "\n"); } + if (EXTRA_VERSION_PATCHES[0] != '\0') { + DBG("LTTng-relayd extra patches:\n\t" EXTRA_VERSION_PATCHES "\n"); + } } /* diff --git a/src/bin/lttng-sessiond/sessiond-config.c b/src/bin/lttng-sessiond/sessiond-config.c index 7ab1f5d7b..f1e3dea9d 100644 --- a/src/bin/lttng-sessiond/sessiond-config.c +++ b/src/bin/lttng-sessiond/sessiond-config.c @@ -508,6 +508,9 @@ void sessiond_config_log(struct sessiond_config *config) if (EXTRA_VERSION_DESCRIPTION[0] != '\0') { DBG_NO_LOC("\textra version description:\n\t%s", EXTRA_VERSION_DESCRIPTION); } + if (EXTRA_VERSION_PATCHES[0] != '\0') { + DBG_NO_LOC("\textra version patches:\n\t%s", EXTRA_VERSION_PATCHES); + } DBG_NO_LOC("\tverbose: %i", config->verbose); DBG_NO_LOC("\tverbose consumer: %i", config->verbose_consumer); DBG_NO_LOC("\tquiet mode: %s", config->quiet ? "True" : "False"); diff --git a/src/bin/lttng/commands/version.c b/src/bin/lttng/commands/version.c index 6459e7b9f..37ab10626 100644 --- a/src/bin/lttng/commands/version.c +++ b/src/bin/lttng/commands/version.c @@ -167,6 +167,9 @@ int cmd_version(int argc, const char **argv) if (EXTRA_VERSION_DESCRIPTION[0] != '\0') { MSG("\nExtra version description:\n\t" EXTRA_VERSION_DESCRIPTION); } + if (EXTRA_VERSION_PATCHES[0] != '\0') { + MSG("\nExtra version patches:\n\t" EXTRA_VERSION_PATCHES); + } } end: diff --git a/version/extra_patches/README b/version/extra_patches/README new file mode 100644 index 000000000..43c64b105 --- /dev/null +++ b/version/extra_patches/README @@ -0,0 +1,8 @@ +This directory and its content is used to generate the +EXTRA_VERSION_PATCHES constant used in "include/version.i". + +A third party can create a file inside this directory and its name will be +propagated in all "version" output of the following lttng-executable: + lttng-relayd + lttng-sessiond + lttng -- 2.34.1