diff options
| author | ruki <[email protected]> | 2017-09-22 21:02:00 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2017-09-22 00:12:03 +0800 |
| commit | e52dcf0c8dda3fd4f1189af14ce09034d3b31b51 (patch) | |
| tree | ceab0429427e8ed494d9dd97d057b2a105191e82 | |
| parent | 7440cc5f7f08f21682571ed33fa02e76a6b02afa (diff) | |
modify sha256s api for package
| -rw-r--r-- | xmake/actions/require/action/download.lua | 9 | ||||
| -rw-r--r-- | xmake/core/package/package.lua | 54 | ||||
| -rw-r--r-- | xmake/packages/git/xmake.lua | 15 |
3 files changed, 51 insertions, 27 deletions
diff --git a/xmake/actions/require/action/download.lua b/xmake/actions/require/action/download.lua index 51d8bc91b..aa28d432e 100644 --- a/xmake/actions/require/action/download.lua +++ b/xmake/actions/require/action/download.lua @@ -84,13 +84,13 @@ function _checkout(package, url, sourcedir) end -- download codes from ftp/http/https -function _download(package, url, sourcedir) +function _download(package, url, sourcedir, url_alias) -- get package file local packagefile = path.filename(url) -- the package file have been downloaded? - local sha256 = package:sha256() + local sha256 = package:sha256(url_alias) if option.get("force") or not os.isfile(packagefile) or (sha256 and sha256 ~= hash.sha256(packagefile)) then -- attempt to remove package file first @@ -153,6 +153,9 @@ function main(package) local urls = _urls(package) for idx, url in ipairs(urls) do + -- get url alias + local url_alias = package:url_alias(url) + -- filter url url = package:filter():handle(url) @@ -166,7 +169,7 @@ function main(package) if git.checkurl(url) then _checkout(package, url, sourcedir) else - _download(package, url, sourcedir) + _download(package, url, sourcedir, url_alias) end -- ok diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua index 98fd4bb97..52a3eba13 100644 --- a/xmake/core/package/package.lua +++ b/xmake/core/package/package.lua @@ -119,6 +119,17 @@ function _instance:urls_set(urls) self._URLS = urls end +-- get the alias of url, @note need raw url +function _instance:url_alias(url) + local urls_extra = self:get("__extra_urls") + if urls_extra then + local urlextra = urls_extra[url] + if urlextra then + return urlextra.alias + end + end +end + -- get deps function _instance:deps() return self._DEPS @@ -129,29 +140,25 @@ function _instance:orderdeps() return self._ORDERDEPS end --- get sha256 -function _instance:sha256() +-- get sha256 of the url_alias@version_str +function _instance:sha256(url_alias) - -- get it from cache first - if self._SHA256 then - return self._SHA256 - end + -- get sha256 + local sha256s = self:get("sha256s") + local version_str = self:version_str() + if sha256s and version_str then - -- find sha256 - local version = self:version() - local sha256s = table.wrap(self:get("sha256s")) - local versions = table.wrap(self:get("versions")) - if version then - for idx, ver in ipairs(versions) do - if ver == version then - self._SHA256 = sha256s[idx] - break - end + local sha256 = nil + if url_alias then + sha256 = sha256s[url_alias .. "@" ..version_str] + end + if not sha256 then + sha256 = sha256s[version_str] end - end - -- get it - return self._SHA256 + -- ok? + return sha256 + end end -- this package is from system/local/global? @@ -378,14 +385,12 @@ function package.apis() -- package.set_xxx "package.set_urls" , "package.set_kind" - , "package.set_sha256s" , "package.set_versions" , "package.set_homepage" , "package.set_description" -- package.add_xxx , "package.add_deps" , "package.add_urls" - , "package.add_sha256s" , "package.add_imports" , "package.add_versions" } @@ -406,6 +411,13 @@ function package.apis() , "package.after_install" , "package.after_test" } + , dictionary = + { + -- package.set_xxx + "package.set_sha256s" + -- package.add_xxx + , "package.add_sha256s" + } } end diff --git a/xmake/packages/git/xmake.lua b/xmake/packages/git/xmake.lua index 1029771b1..77e8575c2 100644 --- a/xmake/packages/git/xmake.lua +++ b/xmake/packages/git/xmake.lua @@ -3,11 +3,20 @@ package("git") set_kind("binary") set_homepage("https://git-scm.com/") set_description("A free and open source distributed version control system") + set_versions("v1.0.1") if os.host() == "windows" then - local winenv_arch = ifelse(os.arch() == "x64", "win64", "win32") - add_urls(format("https://github.com/tboox/xmake-%senv/archive/master.zip", winenv_arch)) - add_urls(format("https://coding.net/u/waruqi/p/xmake-%senv/git/archive/master", winenv_arch)) + if os.arch() == "x64" then + add_urls("https://coding.net/u/waruqi/p/xmake-win64env/git/archive/$(version).zip", {alias = "coding"}) + add_urls("https://github.com/tboox/xmake-win64env/archive/$(version).zip", {alias = "github"}) + add_sha256s("[email protected]", "1071c5e43613ff591bad7f5ad90fe1621a070cf20c56f06d5177e095f88c9a74") + add_sha256s("[email protected]", "95170b1d144ebb30961611fd87b1e9404bbe37d2d904adb15f3e202bb3e19c21") + else + add_urls("https://coding.net/u/waruqi/p/xmake-win32env/git/archive/$(version).zip", {alias = "coding"}) + add_urls("https://github.com/tboox/xmake-win32env/archive/$(version).zip", {alias = "github"}) + add_sha256s("[email protected]", "de8623309f956619f70a8681201ecacfb99b7694070b63c4d53756de8855697e") + add_sha256s("[email protected]", "3c46983379329a246596a2b5f0ff971b55e3eccbbfd34272e7121e13fb346db5") + end else add_imports("package.manager.install") end |
