summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2017-09-22 21:02:00 +0800
committerruki <[email protected]>2017-09-22 00:12:03 +0800
commite52dcf0c8dda3fd4f1189af14ce09034d3b31b51 (patch)
treeceab0429427e8ed494d9dd97d057b2a105191e82
parent7440cc5f7f08f21682571ed33fa02e76a6b02afa (diff)
modify sha256s api for package
-rw-r--r--xmake/actions/require/action/download.lua9
-rw-r--r--xmake/core/package/package.lua54
-rw-r--r--xmake/packages/git/xmake.lua15
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