浏览代码

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
Felix Fietkau 18 年之前
父节点
当前提交
51996a78f1
共有 3 个文件被更改,包括 35 次插入18 次删除
  1. 6 11
      include/toplevel.mk
  2. 3 7
      package/base-files/Makefile
  3. 26 0
      scripts/getver.sh

+ 6 - 11
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)
 

+ 3 - 7
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

+ 26 - 0
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"