taken from upstream https://bugs.gentoo.org/531154 From 976a674b42f9647865d40fa417e7a3dc56a16e6e Mon Sep 17 00:00:00 2001 From: Grisha Trubetskoy Date: Thu, 19 Dec 2013 12:23:18 -0500 Subject: [PATCH] Fixes for compile without git, correct how git revision hash is generated (skip it if it's a tag or no git available or we are not working with a checkin), also fix a bash-dependency (helps on Solaris), and a couple of cross-platform awk fixes in configure. --- configure.in | 6 +++--- dist/version.sh | 15 +++++++++++++-- src/Makefile.in | 14 +++++--------- src/include/mod_python.h | 1 - src/include/mod_python.h.in | 1 - src/include/mp_version.h | 2 -- 6 files changed, 21 insertions(+), 18 deletions(-) diff --git a/dist/version.sh b/dist/version.sh index 1060b4f..e50000d 100755 --- a/dist/version.sh +++ b/dist/version.sh @@ -5,6 +5,17 @@ MPV_PATH="`dirname $0`/../src/include/mp_version.h" MAJ=`awk '/MP_VERSION_MAJOR/ {print $3}' $MPV_PATH` MIN=`awk '/MP_VERSION_MINOR/ {print $3}' $MPV_PATH` PCH=`awk '/MP_VERSION_PATCH/ {print $3}' $MPV_PATH` -GIT=`git describe --always` -echo $MAJ.$MIN.$PCH-$GIT +# if git exists in path +if type git >/dev/null 2>&1; then + # and we are in a checkout + if git rev-parse 2>/dev/null; then + # but not on a tag (which means this is a release) + if test -z "`git log 'HEAD^!' --format=%d 2>/dev/null | grep 'tag: '`"; then + # append git revision hash to version + GIT="-`git describe --always`" + fi + fi +fi + +echo $MAJ.$MIN.$PCH$GIT diff --git a/src/Makefile.in b/src/Makefile.in index c3b3fb2..081c954 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -50,7 +50,7 @@ psp_parser.c: psp_parser.l dso: mod_python.so -mod_python.so: $(SRCS) @SOLARIS_HACKS@ +mod_python.so: $(SRCS) @SOLARIS_HACKS@ @echo @echo 'Building mod_python.so.' @echo @@ -64,21 +64,17 @@ distclean: clean rm -f Makefile .depend version.c: - @MP_GIT_SHA=$$(git describe --always); \ - echo > version.c ; \ + @echo > version.c ; \ echo "/* THIS FILE IS AUTO-GENERATED BY Makefile */" >> version.c ; \ echo "#include \"mp_version.h\"" >> version.c ; \ - echo "const char * const mp_git_sha = \"$${MP_GIT_SHA}\";" >> version.c ; \ echo "const int mp_version_major = MP_VERSION_MAJOR;" >> version.c ; \ echo "const int mp_version_minor = MP_VERSION_MINOR;" >> version.c ; \ echo "const int mp_version_patch = MP_VERSION_PATCH;" >> version.c ; \ - echo "const char * const mp_version_string = MP_VERSION_STRING(MP_VERSION_MAJOR,MP_VERSION_MINOR,MP_VERSION_PATCH) \"-$${MP_GIT_SHA}\";" >> version.c ; \ - echo "const char * const mp_version_component = \"mod_python/\" MP_VERSION_STRING(MP_VERSION_MAJOR,MP_VERSION_MINOR,MP_VERSION_PATCH) \"-$${MP_GIT_SHA}\";" >> version.c - -# echo "const char * const mp_version_component = \"mod_python/\" #MP_VERSION_MAJOR \".\" #MP_VERSION_MINOR \".\" #MP_VERSION_PATCH \"-$${MP_GIT_SHA}\";" >> version.c + echo "const char * const mp_version_string = \"`../dist/version.sh`\";" >> version.c ; \ + echo "const char * const mp_version_component = \"mod_python/\" \"`../dist/version.sh`\";" >> version.c # this is a hack to help avoid a gcc/solaris problem -# python uses assert() which needs _eprintf(). See +# python uses assert() which needs _eprintf(). See # SOLARIS_HACKS above _eprintf.o: ar -x `gcc -print-libgcc-file-name` _eprintf.o diff --git a/src/include/mod_python.h b/src/include/mod_python.h index 061146b..68a77d4 100644 --- a/src/include/mod_python.h +++ b/src/include/mod_python.h @@ -156,7 +156,6 @@ extern module AP_MODULE_DECLARE_DATA python_module; #define MUTEX_DIR "/tmp" /* version stuff */ -extern const char * const mp_git_sha; extern const int mp_version_major; extern const int mp_version_minor; extern const int mp_version_patch; diff --git a/src/include/mod_python.h.in b/src/include/mod_python.h.in index 4b6f1fb..7d536c5 100644 --- a/src/include/mod_python.h.in +++ b/src/include/mod_python.h.in @@ -156,7 +156,6 @@ extern module AP_MODULE_DECLARE_DATA python_module; #define MUTEX_DIR "@MUTEX_DIR@" /* version stuff */ -extern const char * const mp_git_sha; extern const int mp_version_major; extern const int mp_version_minor; extern const int mp_version_patch; diff --git a/src/include/mp_version.h b/src/include/mp_version.h index 4b3a494..5ed83a1 100644 --- a/src/include/mp_version.h +++ b/src/include/mp_version.h @@ -10,5 +10,3 @@ #define MP_VERSION_MINOR 5 #define MP_VERSION_PATCH 0 -#define STR(x) #x -#define MP_VERSION_STRING(maj, min, p) STR(maj) "." STR(min) "." STR(p) -- 2.6.2