Parcourir la source

include, base-files, opkg: introduce version configuration to override the embedded version info of generated images - Introduce new Kconfig symbols VERSION_DIST, VERSION_NICK, VERSION_NUMBER and VERSION_REPO to specify distribution, release name, version and repository for a given build - Introduce include/version.mk to provide common helpers for packages dealing with versions - Make opkg use version.mk to populate the opkg.conf template - Make base-files use version.mk to populate /etc/openwrt_version, /etc/openwrt_release and /etc/banner

The available placeholders are:
 %D .. Replace with $(CONFIG_VERSION_DIST), default to "OpenWrt"
 %d .. Like %D, but all characters made lowercase and spaces substituted with "_" (e.g. "openwrt")
 %N .. Replace with $(CONFIG_VERSION_NICK), default to the build tree release (e.g. "Attitude Adjustment")
 %n .. Like %N, but all characters made lowercase and spaces substituted with "_" (e.g. "attitude_adjustment")
 %V .. Replace with $(CONFIG_VERSION_NUMBER), default to the build tree release (e.g. "r31262")
 %v .. Like %V, but all characters made lowercase and spaces substituted with "_"
 %C .. Replace with $(CONFIG_VERSION_NUMBER), default to "Bleeding Edge"
 %c .. Like %C, but all characters made lowercase and spaces substituted with "_" (e.g. "bleeding_edge")
 %U .. Replace with $(CONFIG_VERSION_REPO), default to "http://downloads.openwrt.org/snapshots/trunk/%T/packages"
 %R .. Replace with the current build tree revision (e.g. "r31262" or "75488c4a05b8033cf69e91874a61852db7ba9c6c")
 %T .. Replace with the current target (e.g. "ar71xx")
 %S .. Replace with the current target/subtarget combo (e.g. "adm5120/router_le")

SVN-Revision: 31262
Jo-Philipp Wich il y a 13 ans
Parent
commit
a43ae30e1b

+ 40 - 0
include/version.mk

@@ -0,0 +1,40 @@
+#
+# Copyright (C) 2012 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+PKG_CONFIG_DEPENDS += \
+	CONFIG_VERSION_NUMBER \
+	CONFIG_VERSION_NICK \
+	CONFIG_VERSION_REPO \
+	CONFIG_VERSION_DIST
+
+VERSION_NUMBER:=$(call qstrip,$(CONFIG_VERSION_NUMBER))
+VERSION_NUMBER:=$(if $(VERSION_NUMBER),$(VERSION_NUMBER),$(REVISION))
+
+VERSION_CODE:=$(call qstrip,$(CONFIG_VERSION_NUMBER))
+VERSION_CODE:=$(if $(VERSION_CODE),$(VERSION_CODE),Bleeding Edge)
+
+VERSION_NICK:=$(call qstrip,$(CONFIG_VERSION_NICK))
+VERSION_NICK:=$(if $(VERSION_NICK),$(VERSION_NICK),$(RELEASE))
+
+VERSION_REPO:=$(call qstrip,$(CONFIG_VERSION_REPO))
+VERSION_REPO:=$(if $(VERSION_REPO),$(VERSION_REPO),http://downloads.openwrt.org/snapshots/trunk/%T/packages)
+
+VERSION_DIST:=$(call qstrip,$(CONFIG_VERSION_DIST))
+VERSION_DIST:=$(if $(VERSION_DIST),$(VERSION_DIST),OpenWrt)
+
+VERSION_SED:=$(SED) 's,%U,$(VERSION_REPO),g' \
+	-e 's,%V,$(VERSION_NUMBER),g' \
+	-e 's,%v,\L$(subst $(space),_,$(VERSION_NUMBER)),g' \
+	-e 's,%C,$(VERSION_CODE),g' \
+	-e 's,%c,\L$(subst $(space),_,$(VERSION_CODE)),g' \
+	-e 's,%N,$(VERSION_NICK),g' \
+	-e 's,%n,\L$(subst $(space),_,$(VERSION_NICK)),g' \
+	-e 's,%D,$(VERSION_DIST),g' \
+	-e 's,%d,\L$(subst $(space),_,$(VERSION_DIST)),g' \
+	-e 's,%R,$(REVISION),g' \
+	-e 's,%T,$(BOARD),g' \
+	-e 's,%S,$(BOARD)$(if $(SUBTARGET),/$(SUBTARGET)),g' \

+ 7 - 2
package/base-files/Makefile

@@ -8,9 +8,10 @@
 
 
 include $(TOPDIR)/rules.mk
 include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 include $(INCLUDE_DIR)/kernel.mk
+include $(INCLUDE_DIR)/version.mk
 
 
 PKG_NAME:=base-files
 PKG_NAME:=base-files
-PKG_RELEASE:=104
+PKG_RELEASE:=105
 
 
 PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
 PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
 PKG_BUILD_DEPENDS:=opkg/host
 PKG_BUILD_DEPENDS:=opkg/host
@@ -453,7 +454,11 @@ define Package/base-files/install
 	cut -d ':' -f 1-2 $(1)/etc/passwd > $(1)/etc/shadow; \
 	cut -d ':' -f 1-2 $(1)/etc/passwd > $(1)/etc/shadow; \
 	$(SED) 's/$$$$/:0:0:99999:7:::/' $(1)/etc/shadow
 	$(SED) 's/$$$$/:0:0:99999:7:::/' $(1)/etc/shadow
 
 
-	$(SED) 's,$$$$R,$(REVISION),g' $(1)/etc/banner
+	$(VERSION_SED) \
+		$(1)/etc/banner \
+		$(1)/etc/openwrt_version \
+		$(1)/etc/openwrt_release
+
 	mkdir -p $(1)/CONTROL
 	mkdir -p $(1)/CONTROL
 	mkdir -p $(1)/dev
 	mkdir -p $(1)/dev
 	mkdir -p $(1)/etc/crontabs
 	mkdir -p $(1)/etc/crontabs

+ 1 - 1
package/base-files/files/etc/banner

@@ -3,7 +3,7 @@
  |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
  |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
  |_______||   __|_____|__|__||________||__|  |____|
  |_______||   __|_____|__|__||________||__|  |____|
           |__| W I R E L E S S   F R E E D O M
           |__| W I R E L E S S   F R E E D O M
- ATTITUDE ADJUSTMENT (bleeding edge, $R) ----------
+ ATTITUDE ADJUSTMENT (%C, %R) ----------
   * 1/4 oz Vodka      Pour all ingredients into mixing
   * 1/4 oz Vodka      Pour all ingredients into mixing
   * 1/4 oz Gin        tin with ice, strain into glass.
   * 1/4 oz Gin        tin with ice, strain into glass.
   * 1/4 oz Amaretto
   * 1/4 oz Amaretto

+ 6 - 0
package/base-files/files/etc/openwrt_release

@@ -0,0 +1,6 @@
+DISTRIB_ID="%D"
+DISTRIB_RELEASE="%C"
+DISTRIB_REVISION="%R"
+DISTRIB_CODENAME="%n"
+DISTRIB_TARGET="%S"
+DISTRIB_DESCRIPTION="%D %N %V"

+ 1 - 0
package/base-files/files/etc/openwrt_version

@@ -0,0 +1 @@
+%V

+ 54 - 1
package/base-files/image-config.in

@@ -1,4 +1,4 @@
-# Copyright (C) 2006 OpenWrt.org
+# Copyright (C) 2006-2012 OpenWrt.org
 # Copyright (C) 2010 Vertical Communications
 # Copyright (C) 2010 Vertical Communications
 #
 #
 # This is free software, licensed under the GNU General Public License v2.
 # This is free software, licensed under the GNU General Public License v2.
@@ -130,3 +130,56 @@ menuconfig INITOPT
 		suppressed during preinit.  This is the default behaviour in 
 		suppressed during preinit.  This is the default behaviour in 
 		previous versions of OpenWRT.  Removing this does nothing if 
 		previous versions of OpenWRT.  Removing this does nothing if 
 		stderr is suppressed during preinit (which is the default).
 		stderr is suppressed during preinit (which is the default).
+
+
+menuconfig VERSIONOPT
+    bool "Version configuration options" if IMAGEOPT
+    default n
+    help
+		These options allow to override the version information embedded in
+		the /etc/openwrt_version, /etc/openwrt_release, /etc/banner and 
+		/etc/opkg.conf files. Usually there is no need to set these, but
+		they're useful for release builds or custom OpenWrt redistributions
+		that should carry custom version tags.
+
+	config VERSION_DIST
+		string
+		prompt "Release distribution" if VERSIONOPT
+		default "OpenWrt"
+		help
+			This is the name of the release distribution.
+			If unspecified, it defaults to OpenWrt.
+
+	config VERSION_NICK
+		string
+		prompt "Release version nickname" if VERSIONOPT
+		help
+			This is the release codename embedded in the image.
+			If unspecified, it defaults to the name of source branch.
+
+    config VERSION_NUMBER
+        string
+    	prompt "Release version number" if VERSIONOPT
+		help
+			This is the release version number embedded in the image.
+			If unspecified, it defaults to the svn or git-svn revision
+			of the build tree.
+
+	config VERSION_REPO
+		string
+		prompt "Release repository" if VERSIONOPT
+		default "http://downloads.openwrt.org/snapshots/trunk/%T/packages"
+		help
+			This is the repository address embedded in the image, it defaults
+			to the trunk snapshot repo; the url may contain the following placeholders:
+			 %R .. Revision number
+			 %V .. Release version or revision number, uppercase
+			 %v .. Release version or revision number, lowercase
+			 %C .. Release version or "Bleeding Edge", uppercase
+			 %c .. Release version or "bleeding_edge", lowercase
+			 %N .. Release name, uppercase
+			 %n .. Release name, lowercase
+			 %D .. Distribution name or "OpenWrt", uppercase
+			 %d .. Distribution name or "openwrt", lowercase
+			 %T .. Target name
+			 %S .. Target/Subtarget name

+ 3 - 2
package/opkg/Makefile

@@ -1,11 +1,12 @@
 #
 #
-# Copyright (C) 2006-2011 OpenWrt.org
+# Copyright (C) 2006-2012 OpenWrt.org
 #
 #
 # This is free software, licensed under the GNU General Public License v2.
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
 # See /LICENSE for more information.
 
 
 include $(TOPDIR)/rules.mk
 include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 include $(INCLUDE_DIR)/kernel.mk
+include $(INCLUDE_DIR)/version.mk
 
 
 PKG_NAME:=opkg
 PKG_NAME:=opkg
 PKG_REV:=618
 PKG_REV:=618
@@ -69,7 +70,7 @@ define Package/opkg/install
 	$(INSTALL_DIR) $(1)/bin
 	$(INSTALL_DIR) $(1)/bin
 	$(INSTALL_DIR) $(1)/etc
 	$(INSTALL_DIR) $(1)/etc
 	$(INSTALL_DATA) ./files/opkg.conf $(1)/etc/
 	$(INSTALL_DATA) ./files/opkg.conf $(1)/etc/
-	$(SED) 's,$$$$S,$(PKGARCH),g' $(1)/etc/opkg.conf
+	$(VERSION_SED) $(1)/etc/opkg.conf
 	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/opkg-cl $(1)/bin/opkg
 	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/opkg-cl $(1)/bin/opkg
 endef
 endef
 
 

+ 1 - 1
package/opkg/files/opkg.conf

@@ -1,4 +1,4 @@
-src/gz snapshots http://downloads.openwrt.org/snapshots/trunk/$S/packages
+src/gz %n %U
 dest root /
 dest root /
 dest ram /tmp
 dest ram /tmp
 lists_dir ext /var/opkg-lists
 lists_dir ext /var/opkg-lists