diff options
| author | ruki <[email protected]> | 2018-09-15 00:48:48 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2018-09-14 22:52:49 +0800 |
| commit | 5459e9f49a3922c9fdc3e63631aa88f8292736b0 (patch) | |
| tree | dcd28ddc0e2d21370a5c0fbcfb748993eef35d5a | |
| parent | 1811b84c21ccfc2fe35b7b9ada2219a7a2b7db73 (diff) | |
add version filter for package
| -rw-r--r-- | xmake/actions/require/action/filter.lua | 16 | ||||
| -rw-r--r-- | xmake/core/package/package.lua | 11 |
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 |
