bef633
From: Prarit Bhargava <prarit@redhat.com>
bef633
bef633
Subject: mcelog version: Add ability for OS to define version
bef633
bef633
commit 59b8cab3f607573cb55b6841ece2f2577be6b419
bef633
Author: Prarit Bhargava <prarit@redhat.com>
bef633
Date:   Mon May 22 10:25:57 2017 -0400
bef633
bef633
    mcelog version: Add ability for OS to define version
bef633
    
bef633
    Example usage of this patch:
bef633
    
bef633
    [root@intel-purley-03 mcelog]# cat .os_version
bef633
    mcelog-144-3.94d853b2ea81.el7
bef633
    [root@intel-purley-03 mcelog]# make version.tmp
bef633
    ( printf "char version[] = \"" ;                        \
bef633
    if test -e .os_version; then                            \
bef633
            cat .os_version | tr -d '\n' ;                  \
bef633
    elif command -v git >/dev/null; then                    \
bef633
            if [ -d .git ] ; then                           \
bef633
                    git describe --tags HEAD | tr -d '\n';  \
bef633
            else                                            \
bef633
                    printf "unknown" ;                      \
bef633
            fi ;                                            \
bef633
    else                                                    \
bef633
            printf "unknown" ;                              \
bef633
    fi ;                                                    \
bef633
    printf '";\n'                                           \
bef633
    ) > version.tmp
bef633
    [root@intel-purley-03 mcelog]# cat version.tmp
bef633
    char version[] = "mcelog-144-3.94d853b2ea81.el7";
bef633
    [root@intel-purley-03 mcelog]# rm .os_version
bef633
    rm: remove regular file ‘.os_version’? y
bef633
    [root@intel-purley-03 mcelog]# make version.tmp
bef633
    ( printf "char version[] = \"" ;                        \
bef633
    if test -e .os_version; then                            \
bef633
            cat .os_version | tr -d '\n' ;                  \
bef633
    elif command -v git >/dev/null; then                    \
bef633
            if [ -d .git ] ; then                           \
bef633
                    git describe --tags HEAD | tr -d '\n';  \
bef633
            else                                            \
bef633
                    printf "unknown" ;                      \
bef633
            fi ;                                            \
bef633
    else                                                    \
bef633
            printf "unknown" ;                              \
bef633
    fi ;                                                    \
bef633
    printf '";\n'                                           \
bef633
    ) > version.tmp
bef633
    [root@intel-purley-03 mcelog]# cat version.tmp
bef633
    char version[] = "v149-7-g62e645e4c0e9";
bef633
    
bef633
    ----8<----
bef633
    
bef633
    OSes package mcelog (rpm, deb, etc.) and the package version may differ
bef633
    from the git version.
bef633
    
bef633
    Add the ability for the OS to define a version in a local .os_version
bef633
    file.  If the file exists, the version in the file is returned for
bef633
    'mcelog --version'.  If the file isn't specified the old method of using
bef633
    git and defaulting to 'unknown' are used.
bef633
    
bef633
    Signed-off-by: Prarit Bhargava <prarit@redhat.com>
bef633
    Signed-off-by: Andi Kleen <ak@linux.intel.com>
bef633
bef633
diff --git a/Makefile b/Makefile
bef633
index 864378eb72de315f07d424540509e844241fd932..57373afaf6c77f40d2188dc855c5bc2bd5a02657 100644
bef633
--- a/Makefile
bef633
+++ b/Makefile
bef633
@@ -81,16 +81,20 @@ depend: .depend
bef633
 	$(CC) -c $(CFLAGS) $(CPPFLAGS) $(WARNINGS) $(ADD_DEFINES) -o $@ $<
bef633
 
bef633
 version.tmp: FORCE
bef633
-	( echo -n "char version[] = \"" ; 	\
bef633
-	if command -v git >/dev/null; then 	\
bef633
-	if [ -d .git ] ; then 			\
bef633
-		git describe --tags HEAD | tr -d '\n'; 	\
bef633
-	else 					\
bef633
-		echo -n "unknown" ; 		\
bef633
-	fi ;					\
bef633
-	else echo -n "unknown" ; fi ;		\
bef633
-	echo '";'				\
bef633
-	 ) > version.tmp
bef633
+	( printf "char version[] = \"" ; 			\
bef633
+	if test -e .os_version; then				\
bef633
+		cat .os_version	| tr -d '\n' ;			\
bef633
+	elif command -v git >/dev/null; then 			\
bef633
+		if [ -d .git ] ; then 				\
bef633
+			git describe --tags HEAD | tr -d '\n'; 	\
bef633
+		else 						\
bef633
+			printf "unknown" ; 			\
bef633
+		fi ;						\
bef633
+	else							\
bef633
+		printf "unknown" ;				\
bef633
+	fi ;							\
bef633
+	printf '";\n'						\
bef633
+	) > version.tmp
bef633
 
bef633
 version.c: version.tmp
bef633
 	cmp version.tmp version.c || mv version.tmp version.c