From 8faa8431db13084170e190da7a65fd2035505c90 Mon Sep 17 00:00:00 2001 From: jow Date: Thu, 12 Apr 2012 17:31:16 +0000 Subject: [PATCH] [buildroot] 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") git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31262 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- include/version.mk | 40 ++++++++++++++ package/base-files/Makefile | 9 +++- package/base-files/files/etc/banner | 2 +- package/base-files/files/etc/openwrt_release | 6 +++ package/base-files/files/etc/openwrt_version | 1 + package/base-files/image-config.in | 55 +++++++++++++++++++- package/opkg/Makefile | 5 +- package/opkg/files/opkg.conf | 2 +- 8 files changed, 113 insertions(+), 7 deletions(-) create mode 100644 include/version.mk create mode 100644 package/base-files/files/etc/openwrt_release create mode 100644 package/base-files/files/etc/openwrt_version diff --git a/include/version.mk b/include/version.mk new file mode 100644 index 000000000..af25be02f --- /dev/null +++ b/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' \ diff --git a/package/base-files/Makefile b/package/base-files/Makefile index c8088a021..f3bfecaa7 100644 --- a/package/base-files/Makefile +++ b/package/base-files/Makefile @@ -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 diff --git a/package/base-files/files/etc/banner b/package/base-files/files/etc/banner index efee88596..301861568 100644 --- a/package/base-files/files/etc/banner +++ b/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 - 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 index 000000000..8ad2d9d4f --- /dev/null +++ b/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" diff --git a/package/base-files/files/etc/openwrt_version b/package/base-files/files/etc/openwrt_version new file mode 100644 index 000000000..4b14f596f --- /dev/null +++ b/package/base-files/files/etc/openwrt_version @@ -0,0 +1 @@ +%V diff --git a/package/base-files/image-config.in b/package/base-files/image-config.in index aca511cdf..497b092d2 100644 --- a/package/base-files/image-config.in +++ b/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 # # 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 diff --git a/package/opkg/Makefile b/package/opkg/Makefile index 30bf181e1..56b4a5474 100644 --- a/package/opkg/Makefile +++ b/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. # 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 diff --git a/package/opkg/files/opkg.conf b/package/opkg/files/opkg.conf index 0e85936ba..6fb42b7fa 100644 --- a/package/opkg/files/opkg.conf +++ b/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 ram /tmp lists_dir ext /var/opkg-lists