mirror of
https://github.com/valitydev/thrift.git
synced 2024-11-07 02:45:22 +00:00
(THRIFT-40) Add -version switch to the compiler to show the Thrift version
The version is determined by configure.ac. After this version is shown the revision. For subversion, it is simply the current revision as given by `svnversion`. For git, the latest svn revision that HEAD includes is shown, followed by the offset of HEAD from that commit, followed by a truncated sha1 for HEAD. If the offset is 0, the offset and sha1 are omitted. git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@672900 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
6b082755f0
commit
dd08f6d5a5
@ -1,4 +1,5 @@
|
||||
AM_YFLAGS = -d
|
||||
BUILT_SOURCES =
|
||||
|
||||
bin_PROGRAMS = thrift
|
||||
|
||||
@ -80,3 +81,31 @@ EXTRA_DIST = README
|
||||
|
||||
clean-local:
|
||||
$(RM) thriftl.cc thrifty.cc thrifty.h
|
||||
|
||||
src/main.cc: version.h
|
||||
|
||||
# Adding this to BUILT_SOURCES will cause version.h to be
|
||||
# regenerated on every "make all" or "make check", which is
|
||||
# necessary because it changes whenever we "svn up" or similar.
|
||||
# Ideally, we would like this to be regenerated whenever the
|
||||
# compiler is rebuilt, but every way we could think of to do
|
||||
# that caused unnecessary rebuilds of the compiler.
|
||||
BUILT_SOURCES += regen_version_h
|
||||
|
||||
THRIFT_VERSION=$(shell /bin/sh $(top_srcdir)/print_version.sh -v)
|
||||
THRIFT_REVISION=$(shell /bin/sh $(top_srcdir)/print_version.sh -r)
|
||||
|
||||
regen_version_h:
|
||||
@echo -n "Regenerating version.h... "
|
||||
@TMPFILE=`mktemp ./version_h.tmp_XXXXXX` ; \
|
||||
echo "// AUTOGENERATED, DO NOT EDIT" > $$TMPFILE ; \
|
||||
echo '#define THRIFT_VERSION "$(THRIFT_VERSION)"\n' >> $$TMPFILE ; \
|
||||
echo '#define THRIFT_REVISION "$(THRIFT_REVISION)"\n' >> $$TMPFILE ; \
|
||||
if cmp $$TMPFILE version.h >/dev/null ; \
|
||||
then \
|
||||
rm -f $$TMPFILE ; \
|
||||
echo "No changes." ; \
|
||||
else \
|
||||
mv $$TMPFILE version.h ; \
|
||||
echo "Updated." ; \
|
||||
fi
|
||||
|
@ -40,6 +40,8 @@
|
||||
#include "generate/t_xsd_generator.h"
|
||||
#include "generate/t_erl_generator.h"
|
||||
|
||||
#include "version.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
/**
|
||||
@ -588,12 +590,20 @@ void generate_all_fingerprints(t_program* program) {
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the version number
|
||||
*/
|
||||
void version() {
|
||||
printf("Thrift version %s-%s\n", THRIFT_VERSION, THRIFT_REVISION);
|
||||
}
|
||||
|
||||
/**
|
||||
* Diplays the usage message and then exits with an error code.
|
||||
*/
|
||||
void usage() {
|
||||
fprintf(stderr, "Usage: thrift [options] file\n");
|
||||
fprintf(stderr, "Options:\n");
|
||||
fprintf(stderr, " -version Print the compiler version\n");
|
||||
fprintf(stderr, " -php Generate PHP output files\n");
|
||||
fprintf(stderr, " -phpi Generate PHP inlined files\n");
|
||||
fprintf(stderr, " -phps Generate PHP server stubs (with -php)\n");
|
||||
@ -937,7 +947,10 @@ int main(int argc, char** argv) {
|
||||
++arg;
|
||||
}
|
||||
|
||||
if (strcmp(arg, "-debug") == 0) {
|
||||
if (strcmp(arg, "-version") == 0) {
|
||||
version();
|
||||
exit(1);
|
||||
} else if (strcmp(arg, "-debug") == 0) {
|
||||
g_debug = 1;
|
||||
} else if (strcmp(arg, "-nowarn") == 0) {
|
||||
g_warn = 0;
|
||||
@ -1051,6 +1064,12 @@ int main(int argc, char** argv) {
|
||||
}
|
||||
}
|
||||
|
||||
// if you're asking for version, you have a right not to pass a file
|
||||
if (strcmp(argv[argc-1], "-version") == 0) {
|
||||
version();
|
||||
exit(1);
|
||||
}
|
||||
|
||||
// TODO(dreiss): Delete these when everyone is using the new hotness.
|
||||
if (gen_cpp) {
|
||||
pwarning(1, "-cpp is deprecated. Use --gen cpp");
|
||||
|
28
print_version.sh
Executable file
28
print_version.sh
Executable file
@ -0,0 +1,28 @@
|
||||
#!/bin/sh
|
||||
|
||||
cd "`dirname "$0"`"
|
||||
|
||||
# Computing both the version and the revision on every invocation is wasteful,
|
||||
# but it is cheap and avoids the use of nonportable shell functions.
|
||||
|
||||
VERSION=`sed -ne 's/^AC_INIT(\[thrift\], \[\(.*\)\])$/\1/p' configure.ac`
|
||||
|
||||
if test -d .svn ; then
|
||||
REVISION="r`svnversion`"
|
||||
elif test -d .git ; then
|
||||
SHA1=`git rev-list --max-count=1 --grep='^git-svn-id:' HEAD`
|
||||
REVISION=`git cat-file commit $SHA1 | sed -ne 's/^git-svn-id:[^@]*@\([0-9][0-9]*\).*/r\1/p'`
|
||||
OFFSET=`git rev-list ^$SHA1 HEAD | wc -l`
|
||||
if test $OFFSET != 0 ; then
|
||||
REVISION="$REVISION-$OFFSET-`git rev-parse --verify HEAD | cut -c 1-7`"
|
||||
fi
|
||||
else
|
||||
REVISION="exported"
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
-v) echo $VERSION ;;
|
||||
-r) echo $REVISION ;;
|
||||
-a) echo "$VERSION-$REVISION" ;;
|
||||
*) echo "Usage: $0 -v|-r|-a"; exit 1;;
|
||||
esac
|
Loading…
Reference in New Issue
Block a user