diff options
| -rw-r--r-- | include/package-version-override.mk | 66 | ||||
| -rw-r--r-- | include/package.mk | 11 | 
2 files changed, 69 insertions, 8 deletions
diff --git a/include/package-version-override.mk b/include/package-version-override.mk index 7e3e5729a..f18ecd7bf 100644 --- a/include/package-version-override.mk +++ b/include/package-version-override.mk @@ -1,21 +1,71 @@ +# remember the provided package version  PKG_VERSION_ORGINAL:=$(PKG_VERSION) -ifeq ($(CONFIG_$(PKG_NAME)_USE_OTHER_VERSION),y) -PKG_VERSION:= $(strip $(subst ",, $(CONFIG_$(PKG_NAME)_OTHER_VERSION))) -PKG_MD5SUM:= +# in case that another version is provided, overwrite the original +ifeq ($(CONFIG_$(PKG_NAME)_USE_CUSTOM_VERSION),y) +PKG_VERSION:= $(strip $(subst ",, $(CONFIG_$(PKG_NAME)_CUSTOM_VERSION)))  PKG_SOURCE:=$(subst $(PKG_VERSION_ORGINAL),$(PKG_VERSION),$(PKG_SOURCE)) +PKG_MD5SUM:=  endif -define Package/$(PKG_NAME)/config +# package specific configuration +# if includeded the package version can be overwritten within the .config file (instead of changing the package specific Makefile) +define Package/$(PKG_NAME)/override_version  	menu "overwrite package version"  		depends on PACKAGE_$(PKG_NAME) -	config $(PKG_NAME)_USE_OTHER_VERSION +	config $(PKG_NAME)_USE_CUSTOM_VERSION  		depends on PACKAGE_$(PKG_NAME) -		bool "Use other source version" +		bool "Use custom package version"  		default n -	config $(PKG_NAME)_OTHER_VERSION -		depends on $(PKG_NAME)_USE_OTHER_VERSION +	config $(PKG_NAME)_CUSTOM_VERSION +		depends on $(PKG_NAME)_USE_CUSTOM_VERSION  		string "$(PKG_BASE_NAME) version as string (default version: $(PKG_VERSION_ORGINAL))"  		default "$(PKG_VERSION_ORGINAL)"  	endmenu  endef + +# in case that an customer source path is provided, set the acc. default variable +ifeq ($(CONFIG_$(PKG_NAME)_USE_CUSTOM_SOURCE_DIR),y) +PKG_DEFAULT_CUSTOM_SOURCE_DIR:= $(strip $(subst ",, $(CONFIG_$(PKG_NAME)_CUSTOM_SOURCE_DIR))) +endif + +# package specific configuration +# if includeded the package source path can be overwritten within the .config file (instead of changing the package specific Makefile) +# instead of using a source ball (eg tar.gz) the specified path will point to the location of the sources +define Package/$(PKG_NAME)/override_source_path +	menu "custom source directory" +		depends on PACKAGE_$(PKG_NAME) +	config $(PKG_NAME)_USE_CUSTOM_SOURCE_DIR +		depends on PACKAGE_$(PKG_NAME) +		bool "Use custom source directory" +		default n +	config $(PKG_NAME)_CUSTOM_SOURCE_DIR +		depends on $(PKG_NAME)_USE_CUSTOM_SOURCE_DIR +		string "Custom source directory" +		default "$(PKG_DEFAULT_CUSTOM_SOURCE_DIR)" +	endmenu +endef + +# default: +# include both configurations as long this file is included before package.mk +# in case that you're defining your own onfiguration within the package Makefile just include the stuff by yourself +define Package/$(PKG_NAME)/config +   $(call Package/$(PKG_NAME)/override_version) +   $(call Package/$(PKG_NAME)/override_source_path) +endef + +# hook for custom source path +# in case that the specified path is valid a link to the PKG_SOURCE_DIR is created +# otherwise the make is stopped +define prepare_custom_source_directory +	if [ -d $(CONFIG_$(PKG_NAME)_CUSTOM_SOURCE_DIR) ]; then \ +		rm -Rf $(PKG_BUILD_DIR); \ +		echo "Preparing Custom Source Directory link: $(CONFIG_$(PKG_NAME)_CUSTOM_SOURCE_DIR)"; \ +		ln -snf $(CONFIG_$(PKG_NAME)_CUSTOM_SOURCE_DIR) $(PKG_BUILD_DIR); \ +		( cd $(PKG_BUILD_DIR); autoreconf -i; ) \ +	else \ +		echo "Custom Source Directory $(CONFIG_$(PKG_NAME)_CUSTOM_SOURCE_DIR) is invalid"; \ +		false; \ +	fi +endef + diff --git a/include/package.mk b/include/package.mk index 79e1f143d..a35166142 100644 --- a/include/package.mk +++ b/include/package.mk @@ -48,6 +48,17 @@ ifeq ($(DUMP)$(filter prereq clean refresh update,$(MAKECMDGOALS)),)    endif  endif +ifeq ($(CONFIG_$(PKG_NAME)_USE_CUSTOM_SOURCE_DIR),y) +# disable load stage +PKG_SOURCE_URL:= +# add hook to install a link to customer source path of dedicated package +Hooks/Prepare/Pre += prepare_custom_source_directory +# define empty default action +define Build/Prepare/Default +	@:  +endef +endif +  define Download/default    FILE:=$(PKG_SOURCE)    URL:=$(PKG_SOURCE_URL)  | 
