summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2018-09-15 00:48:48 +0800
committerruki <[email protected]>2018-09-14 22:52:49 +0800
commit5459e9f49a3922c9fdc3e63631aa88f8292736b0 (patch)
treedcd28ddc0e2d21370a5c0fbcfb748993eef35d5a
parent1811b84c21ccfc2fe35b7b9ada2219a7a2b7db73 (diff)
add version filter for package
-rw-r--r--xmake/actions/require/action/filter.lua16
-rw-r--r--xmake/core/package/package.lua11
2 files changed, 24 insertions, 3 deletions
diff --git a/xmake/actions/require/action/filter.lua b/xmake/actions/require/action/filter.lua
index 3aaa067d4..0955e8f8d 100644
--- a/xmake/actions/require/action/filter.lua
+++ b/xmake/actions/require/action/filter.lua
@@ -74,7 +74,7 @@ function _filter()
end
-- the package handler
-function _handler(package)
+function _handler(package, strval)
-- @note cannot cache it, because the package instance will be changed
return function (variable)
@@ -82,7 +82,17 @@ function _handler(package)
-- init maps
local maps =
{
- version = function () return package:version_str() end
+ version = function ()
+ if strval then
+ -- set_urls("https://sqlite.org/2018/sqlite-autoconf-$(version)000.tar.gz",
+ -- {version = function (version) return version:gsub("%.", "") end})
+ local version_filter = package:url_version(strval)
+ if version_filter then
+ return version_filter(package:version_str())
+ end
+ end
+ return package:version_str()
+ end
, buildir = function () return package:buildir() end
}
@@ -121,7 +131,7 @@ end
function handle(strval, package)
-- register filter handler
- _filter():register("package", _handler(package))
+ _filter():register("package", _handler(package, strval))
-- handle string value
strval = _filter():handle(strval)
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua
index cdd853257..8ee1c807b 100644
--- a/xmake/core/package/package.lua
+++ b/xmake/core/package/package.lua
@@ -109,6 +109,17 @@ function _instance:url_alias(url)
end
end
+-- get the version filter of url, @note need raw url
+function _instance:url_version(url)
+ local urls_extra = self:get("__extra_urls")
+ if urls_extra then
+ local urlextra = urls_extra[url]
+ if urlextra then
+ return urlextra.version
+ end
+ end
+end
+
-- get deps
function _instance:deps()
return self._DEPS