[lttng-dev] [PATCH] Add a git version information in LTTng versions compiled from git sources

Yannick Brosseau yannick.brosseau at gmail.com
Thu Mar 14 13:15:07 EDT 2013


I think this method is really sensible on the execution order of the
makefile. Maybe it should be put at the top level.

On 2013-03-14 13:04, David Goulet wrote:
> Oh wait it did create the version.h with the GIT_VERSION but I had to
> compile again so this header file could be used in the code.
>
> David
>
> David Goulet:
>> Hey Raphaël,
>>
>> This does not seems to work... I've applied your patch and recompile my
>> git tree but version are still showing "2.1.0" ... ?
>>
>> Another thing, we really do prefer having #ifdef statement in one call
>> site per binaries this means that you might want to use like
>> "lttng-sessiond.h", put the ifdef there and do an inline function to
>> print the correct version.
>>
>> Last thing, don't use spaces please! You can use extras/checkpatch.pl to
>> make sure you are ok with the std we have.
>>
>> Thanks!
>> David
>>
>> Raphaël Beamonte:
>>> Signed-off-by: Raphaël Beamonte <raphael.beamonte at gmail.com>
>>> ---
>>>  include/Makefile.am              |   20 +++++++++++++++++++-
>>>  include/lttng/version.h          |   25 +++++++++++++++++++++++++
>>>  src/bin/lttng-sessiond/main.c    |    5 +++++
>>>  src/bin/lttng/commands/version.c |    4 ++++
>>>  src/bin/lttng/lttng.c            |    7 ++++++-
>>>  5 files changed, 59 insertions(+), 2 deletions(-)
>>>  create mode 100644 include/lttng/version.h
>>>
>>> diff --git a/include/Makefile.am b/include/Makefile.am
>>> index 0bcb6f9..6664813 100644
>>> --- a/include/Makefile.am
>>> +++ b/include/Makefile.am
>>> @@ -1 +1,19 @@
>>> -lttnginclude_HEADERS = lttng/lttng.h lttng/lttng-error.h
>>> +all-local:
>>> +	(git_version=$$(git describe --long --all 2>/dev/null); \
>>> +	version_h=$(top_builddir)/include/lttng/version.h; \
>>> +	if [ -z "$${git_version}" ]; then \
>>> +		if [ $$(grep -c "^#define GIT_VERSION" "$${version_h}") -gt 0 ]; then \
>>> +			sed -i "/^#define GIT_VERSION/d" "$${version_h}"; \
>>> +		fi; \
>>> +	else \
>>> +		if [ $$(grep -cE "^#define GIT_VERSION \"?$${git_version}\"?$$" "$${version_h}") -eq 0 ]; then \
>>> +			if [ $$(grep -c "^#define GIT_VERSION" "$${version_h}") -gt 0 ]; then \
>>> +				sed -i "s'^#define GIT_VERSION.*$$'#define GIT_VERSION \"$${git_version}\"'" "$${version_h}"; \
>>> +			else \
>>> +				sed -i "s'^\(#define VERSION_H.*\)$$'\1\n\n#define GIT_VERSION \"$${git_version}\"'" "$${version_h}"; \
>>> +			fi; \
>>> +		fi; \
>>> +	fi)
>>> +
>>> +
>>> +lttnginclude_HEADERS = lttng/lttng.h lttng/lttng-error.h lttng/version.h
>>> diff --git a/include/lttng/version.h b/include/lttng/version.h
>>> new file mode 100644
>>> index 0000000..42a509d
>>> --- /dev/null
>>> +++ b/include/lttng/version.h
>>> @@ -0,0 +1,25 @@
>>> +/*
>>> + * version.h
>>> + *
>>> + * Linux Trace Toolkit version header file
>>> + *
>>> + * Copyright (C) 2013 - Raphaël Beamonte <raphael.beamonte at gmail.com>
>>> + *
>>> + * This library is free software; you can redistribute it and/or modify it
>>> + * under the terms of the GNU Lesser General Public License, version 2.1 only,
>>> + * as published by the Free Software Foundation.
>>> + *
>>> + * This library is distributed in the hope that it will be useful, but WITHOUT
>>> + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
>>> + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
>>> + * for more details.
>>> + *
>>> + * You should have received a copy of the GNU Lesser General Public License
>>> + * along with this library; if not, write to the Free Software Foundation,
>>> + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
>>> + */
>>> +
>>> +#ifndef VERSION_H
>>> +#define VERSION_H
>>> +
>>> +#endif /* VERSION_H */
>>> diff --git a/src/bin/lttng-sessiond/main.c b/src/bin/lttng-sessiond/main.c
>>> index f7bb53e..f0d5895 100644
>>> --- a/src/bin/lttng-sessiond/main.c
>>> +++ b/src/bin/lttng-sessiond/main.c
>>> @@ -35,6 +35,7 @@
>>>  #include <urcu/uatomic.h>
>>>  #include <unistd.h>
>>>  #include <config.h>
>>> +#include <lttng/version.h>
>>>  
>>>  #include <common/common.h>
>>>  #include <common/compat/socket.h>
>>> @@ -3547,7 +3548,11 @@ static int parse_args(int argc, char **argv)
>>>  			usage();
>>>  			exit(EXIT_FAILURE);
>>>  		case 'V':
>>> +#ifdef GIT_VERSION
>>> +			fprintf(stdout, "%s (Git: %s)\n", VERSION, GIT_VERSION);
>>> +#else /* GIT_VERSION */
>>>  			fprintf(stdout, "%s\n", VERSION);
>>> +#endif /* GIT_VERSION */
>>>  			exit(EXIT_SUCCESS);
>>>  		case 'S':
>>>  			opt_sig_parent = 1;
>>> diff --git a/src/bin/lttng/commands/version.c b/src/bin/lttng/commands/version.c
>>> index 7f69de3..c6e9e10 100644
>>> --- a/src/bin/lttng/commands/version.c
>>> +++ b/src/bin/lttng/commands/version.c
>>> @@ -24,6 +24,7 @@
>>>  #include <sys/types.h>
>>>  #include <unistd.h>
>>>  #include <config.h>
>>> +#include <lttng/version.h>
>>>  
>>>  #include "../command.h"
>>>  
>>> @@ -79,6 +80,9 @@ int cmd_version(int argc, const char **argv)
>>>  	}
>>>  
>>>  	MSG("lttng version " VERSION " - " VERSION_NAME);
>>> +#ifdef GIT_VERSION
>>> +        MSG("Git version: " GIT_VERSION);
>>> +#endif
>>>  	MSG("\n" VERSION_DESCRIPTION "\n");
>>>  	MSG("Web site: http://lttng.org");
>>>  	MSG("\nlttng is free software and under the GPL license and part LGPL");
>>> diff --git a/src/bin/lttng/lttng.c b/src/bin/lttng/lttng.c
>>> index 8562144..e30a7c6 100644
>>> --- a/src/bin/lttng/lttng.c
>>> +++ b/src/bin/lttng/lttng.c
>>> @@ -25,6 +25,7 @@
>>>  #include <sys/wait.h>
>>>  #include <unistd.h>
>>>  #include <config.h>
>>> +#include <lttng/version.h>
>>>  #include <ctype.h>
>>>  
>>>  #include <lttng/lttng.h>
>>> @@ -81,7 +82,11 @@ static struct cmd_struct commands[] =  {
>>>  
>>>  static void usage(FILE *ofp)
>>>  {
>>> -	fprintf(ofp, "LTTng Trace Control " VERSION" - " VERSION_NAME"\n\n");
>>> +	fprintf(ofp, "LTTng Trace Control " VERSION" - " VERSION_NAME"\n");
>>> +#ifdef GIT_VERSION
>>> +		fprintf(ofp, "Git version: " GIT_VERSION"\n");
>>> +#endif
>>> +	fprintf(ofp, "\n");
>>>  	fprintf(ofp, "usage: lttng [OPTIONS] <COMMAND> [<ARGS>]\n");
>>>  	fprintf(ofp, "\n");
>>>  	fprintf(ofp, "Options:\n");
>> _______________________________________________
>> lttng-dev mailing list
>> lttng-dev at lists.lttng.org
>> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
> _______________________________________________
> lttng-dev mailing list
> lttng-dev at lists.lttng.org
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev




More information about the lttng-dev mailing list