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
This commit is contained in:
Jo-Philipp Wich 2012-04-12 17:31:16 +00:00
parent 8b7533c496
commit a43ae30e1b
8 changed files with 113 additions and 7 deletions

40
include/version.mk Normal file
View File

@ -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' \

View 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

View 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

View File

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

View File

@ -0,0 +1 @@
%V

View 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

View 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

View 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