Provide git-describe based version information when running from within git
authorMichael Prokop <mika@grml.org>
Wed, 30 Oct 2019 14:34:34 +0000 (15:34 +0100)
committerMichael Prokop <mika@grml.org>
Thu, 31 Oct 2019 09:51:35 +0000 (10:51 +0100)
This is useful when executing grml2usb from inside grml2usb.git itself

Thanks: Florian Apolloner for review and feedback

debian/rules
grml2usb
tarball.sh

index 0ba3486..f8d5ced 100755 (executable)
@@ -18,7 +18,7 @@ build-indep: build-stamp
 build-stamp:
        dh_testdir
 
 build-stamp:
        dh_testdir
 
-       egrep -q "PROG_VERSION = '\*\*\*UNRELEASED\*\*\*'" grml2usb || (echo "PROG_VERSION in grml2usb wrong." && exit 2)
+       egrep -q "^PROG_VERSION = '\*\*\*UNKNOWN\*\*\*'" grml2usb || (echo "PROG_VERSION in grml2usb wrong." && exit 2)
        $(MAKE)
        cd mbr && $(MAKE) && cd ..
        touch build-stamp
        $(MAKE)
        cd mbr && $(MAKE) && cd ..
        touch build-stamp
@@ -41,7 +41,7 @@ install: build
 
        # Add here commands to install the package into debian/grml2usb.
        install -m 755 grml2usb               debian/grml2usb/usr/sbin/grml2usb
 
        # Add here commands to install the package into debian/grml2usb.
        install -m 755 grml2usb               debian/grml2usb/usr/sbin/grml2usb
-       sed -i -e "s/PROG_VERSION = '\*\*\*UNRELEASED\*\*\*'/PROG_VERSION = '$(VERSION)'/" debian/grml2usb/usr/sbin/grml2usb
+       sed -i -e "s/^PROG_VERSION = '\*\*\*UNKNOWN\*\*\*'/PROG_VERSION = '$(VERSION)'/" debian/grml2usb/usr/sbin/grml2usb
        install -m 755 grml2iso               debian/grml2usb/usr/sbin/grml2iso
        install -m 644 mbr/mbrmgr             debian/grml2usb/usr/share/grml2usb/mbr/mbrmgr
        install -m 644 mbr/mbrldr             debian/grml2usb/usr/share/grml2usb/mbr/mbrldr
        install -m 755 grml2iso               debian/grml2usb/usr/sbin/grml2iso
        install -m 644 mbr/mbrmgr             debian/grml2usb/usr/share/grml2usb/mbr/mbrmgr
        install -m 644 mbr/mbrldr             debian/grml2usb/usr/share/grml2usb/mbr/mbrldr
index 2103bb9..b4bbf3c 100755 (executable)
--- a/grml2usb
+++ b/grml2usb
@@ -32,7 +32,22 @@ import uuid
 import shutil
 
 # The line following this line is patched by debian/rules and tarball.sh.
 import shutil
 
 # The line following this line is patched by debian/rules and tarball.sh.
-PROG_VERSION = '***UNRELEASED***'
+PROG_VERSION = '***UNKNOWN***'
+
+# when running from inside git, try to report version information via git-describe
+try:
+    git_dir = os.path.abspath(os.path.dirname(sys.argv[0]))
+    with open(os.devnull, 'w') as devnull:
+        PROG_VERSION = subprocess.check_output(["git",
+                                                "-C",
+                                                git_dir,
+                                                "describe",
+                                                "--always",
+                                                "--dirty"],
+                                                stderr=devnull).strip().decode('utf-8', errors='replace') + \
+                                                " (git)"
+except Exception:
+    pass
 
 # global variables
 MOUNTED = set()   # register mountpoints
 
 # global variables
 MOUNTED = set()   # register mountpoints
index 1f3b003..8857bb4 100755 (executable)
@@ -116,7 +116,7 @@ rm grml2usb-$VERSION/grml2iso.8.txt
 
 # binaries, grub
 cp grml2usb grml2iso mbr/mbrldr mbr/mbrmgr grub/* grml2usb-$VERSION/
 
 # binaries, grub
 cp grml2usb grml2iso mbr/mbrldr mbr/mbrmgr grub/* grml2usb-$VERSION/
-sed -i -e "s/PROG_VERSION='\*\*\*UNRELEASED\*\*\*'/PROG_VERSION='${VERSION}'/" grml2usb-$VERSION/grml2usb
+sed -i -e "s/PROG_VERSION='\*\*\*UNKNOWN\*\*\*'/PROG_VERSION='${VERSION}'/" grml2usb-$VERSION/grml2usb
 
 tar zcf grml2usb.tgz "${DIR}"
 
 
 tar zcf grml2usb.tgz "${DIR}"