add package source path override - use external source tree instead of source ball - the external package source tree will be included as symlink - make package/<name>/clean will delete the symlink instead of whole source tree - usefull in conjunction with external SCM like ClearCase - package-version-override.mk has to be included before package.mk

SVN-Revision: 16227
This commit is contained in:
Ralph Hempel 2009-05-31 11:35:13 +00:00
parent 69fbe5c3b0
commit 3dc92527a3
2 changed files with 69 additions and 8 deletions

View File

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

View File

@ -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)