[buildroot] include, base-files, opkg: introduce version configuration to override...
authorJo-Philipp Wich <jow@openwrt.org>
Thu, 12 Apr 2012 17:31:16 +0000 (17:31 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Thu, 12 Apr 2012 17:31:16 +0000 (17:31 +0000)
 - 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

include/version.mk [new file with mode: 0644]
package/base-files/Makefile
package/base-files/files/etc/banner
package/base-files/files/etc/openwrt_release [new file with mode: 0644]
package/base-files/files/etc/openwrt_version [new file with mode: 0644]
package/base-files/image-config.in
package/opkg/Makefile
package/opkg/files/opkg.conf

diff --git a/include/version.mk b/include/version.mk
new file mode 100644 (file)
index 0000000..af25be0
--- /dev/null
@@ -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' \
index c8088a0..f3bfeca 100644 (file)
@@ -8,9 +8,10 @@
 
 include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
 include $(TOPDIR)/rules.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_BUILD_DEPENDS:=opkg/host
 
 PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
 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; \
        $(SED) 's/$$$$/:0:0:99999:7:::/' $(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,$$$$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)/dev
        mkdir -p $(1)/etc/crontabs
        mkdir -p $(1)/CONTROL
        mkdir -p $(1)/dev
        mkdir -p $(1)/etc/crontabs
index efee885..3018615 100644 (file)
@@ -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 Gin        tin with ice, strain into glass.
   * 1/4 oz Amaretto
   * 1/4 oz Vodka      Pour all ingredients into mixing
   * 1/4 oz Gin        tin with ice, strain into glass.
   * 1/4 oz Amaretto
diff --git a/package/base-files/files/etc/openwrt_release b/package/base-files/files/etc/openwrt_release
new file mode 100644 (file)
index 0000000..8ad2d9d
--- /dev/null
@@ -0,0 +1,6 @@
+DISTRIB_ID="%D"
+DISTRIB_RELEASE="%C"
+DISTRIB_REVISION="%R"
+DISTRIB_CODENAME="%n"
+DISTRIB_TARGET="%S"
+DISTRIB_DESCRIPTION="%D %N %V"
diff --git a/package/base-files/files/etc/openwrt_version b/package/base-files/files/etc/openwrt_version
new file mode 100644 (file)
index 0000000..4b14f59
--- /dev/null
@@ -0,0 +1 @@
+%V
index aca511c..497b092 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2006 OpenWrt.org
+# Copyright (C) 2006-2012 OpenWrt.org
 # Copyright (C) 2010 Vertical Communications
 #
 # This is free software, licensed under the GNU General Public License v2.
 # Copyright (C) 2010 Vertical Communications
 #
 # 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 
                previous versions of OpenWRT.  Removing this does nothing if 
                stderr is suppressed during preinit (which is the default).
                suppressed during preinit.  This is the default behaviour in 
                previous versions of OpenWRT.  Removing this does nothing if 
                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
index 30bf181..56b4a54 100644 (file)
@@ -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.
 # See /LICENSE for more information.
 
 include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
 
 include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
+include $(INCLUDE_DIR)/version.mk
 
 PKG_NAME:=opkg
 PKG_REV:=618
 
 PKG_NAME:=opkg
 PKG_REV:=618
@@ -69,7 +70,7 @@ define Package/opkg/install
        $(INSTALL_DIR) $(1)/bin
        $(INSTALL_DIR) $(1)/etc
        $(INSTALL_DATA) ./files/opkg.conf $(1)/etc/
        $(INSTALL_DIR) $(1)/bin
        $(INSTALL_DIR) $(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
 endef
 
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/opkg-cl $(1)/bin/opkg
 endef
 
index 0e85936..6fb42b7 100644 (file)
@@ -1,4 +1,4 @@
-src/gz snapshots http://downloads.openwrt.org/snapshots/trunk/$S/packages
+src/gz %n %U
 dest root /
 dest ram /tmp
 lists_dir ext /var/opkg-lists
 dest root /
 dest ram /tmp
 lists_dir ext /var/opkg-lists