From 51996a78f1abc9a57feeb98bf4cad6e8faec05a3 Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@openwrt.org>
Date: Thu, 13 Dec 2007 06:25:54 +0000
Subject: [PATCH] clean up openwrt version handling, use a separate script that
 is executed at the beginning of the build process, fix revision checking with
 git

SVN-Revision: 9723
---
 include/toplevel.mk         | 17 ++++++-----------
 package/base-files/Makefile | 10 +++-------
 scripts/getver.sh           | 26 ++++++++++++++++++++++++++
 3 files changed, 35 insertions(+), 18 deletions(-)
 create mode 100755 scripts/getver.sh

diff --git a/include/toplevel.mk b/include/toplevel.mk
index 040ff51249d..63325aa0183 100644
--- a/include/toplevel.mk
+++ b/include/toplevel.mk
@@ -7,20 +7,15 @@
 #
 
 RELEASE:=Kamikaze
-#VERSION:=2.0 # uncomment for final release
-
 SHELL:=/usr/bin/env bash
-OPENWRTVERSION:=$(RELEASE)
 PREP_MK= OPENWRT_BUILD= QUIET=0
+
 include $(TOPDIR)/include/verbose.mk
-ifneq ($(VERSION),)
-  OPENWRTVERSION:=$(VERSION) ($(OPENWRTVERSION))
-else
-  REV:=$(if $(wildcard .svn/entries),$(shell LANG=C svn info | awk '/^Revision:/ { print$$2 }' ))
-  ifneq ($(REV),)
-    OPENWRTVERSION:=$(OPENWRTVERSION)/r$(REV)
-  endif
-endif
+
+REVISION:=$(shell $(TOPDIR)/scripts/getver.sh)
+OPENWRTVERSION:=$(RELEASE)$(if $(REVISION), ($(REVISION)))
+export RELEASE
+export REVISION
 export OPENWRTVERSION
 export IS_TTY=$(shell tty -s && echo 1 || echo 0)
 
diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index 3e83c01d93d..091ce0f0169 100644
--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
@@ -14,14 +14,10 @@ PKG_RELEASE:=12
 
 PKG_FILE_DEPEND:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
 
-REV:=$(shell LANG=C svn info | awk '/^Revision:/ { print$$2 }' )
-ifeq ($(REV),)
-  REV:=0
-endif
 include $(INCLUDE_DIR)/package.mk
 
 ifneq ($(DUMP),1)
-  TARGET:=-$(BOARD)-$(KERNEL)
+  TARGET:=-$(BOARD)
   LIBGCC_VERSION:=$(GCC_VERSION)
 else
   UCLIBC_VERSION:=<UCLIBC_VERSION>
@@ -35,7 +31,7 @@ define Package/base-files$(TARGET)
   CATEGORY:=Base system
   TITLE:=Base filesystem for OpenWrt
   URL:=http://openwrt.org/
-  VERSION:=$(PKG_RELEASE)-$(REV)
+  VERSION:=$(PKG_RELEASE)-$(REVISION)
   $(call Config,network.lan.proto,string,static,LAN Protocol)
   $(call Config,network.lan.ipaddr,ip,192.168.1.1,LAN IP Address)
   $(call Config,network.lan.netmask,netmask,255.255.255.0,LAN Network Mask)
@@ -138,7 +134,7 @@ define Package/base-files$(TARGET)/install
 			$(CP) $(PLATFORM_SUBDIR)/base-files/* $(1)/; \
 		fi \
 	)
-	$(SED) 's,$$$$R,r$(REV),g' $(1)/etc/banner
+	$(SED) 's,$$$$R,r$(REVISION),g' $(1)/etc/banner
 	$(SED) 's,$$$$S,$(BOARD),g' -e 's,$$$$A,$(ARCH),g' $(1)/etc/ipkg.conf
 	mkdir -p $(1)/dev
 	mkdir -p $(1)/etc/crontabs
diff --git a/scripts/getver.sh b/scripts/getver.sh
new file mode 100755
index 00000000000..c33505edc71
--- /dev/null
+++ b/scripts/getver.sh
@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+export LANG=C
+[ -n "$TOPDIR" ] && cd $TOPDIR
+
+try_version() {
+	[ -f version ] || return 1
+	REV="$(cat version)"
+	[ -n "$REV" ]
+}
+
+try_svn() {
+	[ -d .svn ] || return 1
+	REV="$(svn info | awk '/^Revision:/ { print $2 }')"
+	REV="${REV:+r$REV}"
+	[ -n "$REV" ]
+}
+
+try_git() {
+	[ -d .git ] || return 1
+	REV="$(git-log | grep -m 1 git-svn-id | awk '{ gsub(/.*@/, "", $2); print $2 }')"
+	REV="${REV:+r$REV}"
+	[ -n "$REV" ]
+}
+
+try_version || try_svn || try_git || REV="unknown"
+echo "$REV"