[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 c8088a021851395b375dd6402bcc485d976dcd71..f3bfecaa757c4ed3d02ec6b7e32533bcb5a65ee5 100644 (file)
@@ -8,9 +8,10 @@
 
 include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
+include $(INCLUDE_DIR)/version.mk
 
 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
@@ -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
 
-       $(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
index efee88596f7c169aae615e223be8d8848ebd1c99..301861568230a1020145e38e377c641c796289c8 100644 (file)
@@ -3,7 +3,7 @@
  |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
  |_______||   __|_____|__|__||________||__|  |____|
           |__| 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
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 aca511cdf5c77845b1d4cc6daa9314401fbe0310..497b092d263055c9061067e0d4fff459681c9059 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.
@@ -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).
+
+
+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 30bf181e1ae5bd98c10c9fdd7e1fda04a3a0b156..56b4a54741388a49647568171acd7b4c2b361fd7 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
+include $(INCLUDE_DIR)/version.mk
 
 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/
-       $(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
 
index 0e85936ba2c9a216a1f1231125446115c82d0bb9..6fb42b7fa40a3bec7fc2b985316834869497e912 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