diff options
| author | ruki <[email protected]> | 2017-09-17 16:19:47 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2017-09-17 16:19:47 +0800 |
| commit | ca273d79459b563d649e7fdfea0b2a472f6ef4ca (patch) | |
| tree | 59dcb3f7cfbce6557a15e927a7248aef24a12056 | |
| parent | 5ea8f65e53f4903852a4490a9b25d6b1fff6ce83 (diff) | |
improve package urls and speed up fetching refs
| -rw-r--r-- | xmake/actions/require/package.lua | 75 | ||||
| -rw-r--r-- | xmake/modules/net/ping.lua | 3 |
2 files changed, 45 insertions, 33 deletions
diff --git a/xmake/actions/require/package.lua b/xmake/actions/require/package.lua index 172d60797..ea950071c 100644 --- a/xmake/actions/require/package.lua +++ b/xmake/actions/require/package.lua @@ -291,6 +291,9 @@ function _load_packages_gitrefs(packages) for _, url in ipairs(package:urls()) do if git.checkurl(url) then + -- trace + vprint("fetching refs for the git url ... %s", url) + -- fetch refs tags, branches = git.refs(url) @@ -314,20 +317,45 @@ function _load_packages_gitrefs(packages) return results end --- select package version -function _select_package_version(package, required_ver, gitrefs) +-- sort packages urls +function _sort_packages_urls(packages) - -- get versions - local versions = package:get("versions") + -- add all urls to fasturl and prepare to sort them together + for _, package in ipairs(packages) do + fasturl.add(package:urls()) + end - -- attempt to get tags and branches from the git url - local refs = {} - if gitrefs then - refs = gitrefs[package:fullname()] or {} + -- sort and update urls + for _, package in ipairs(packages) do + package:urls_set(fasturl.sort(package:urls())) end +end + +-- select packages version +function _select_packages_version(packages) + + -- load git refs from packages + local gitrefs = _load_packages_gitrefs(packages) + + -- sort and update urls + for _, package in ipairs(packages) do + + -- exists urls? otherwise be phony package (only as package group) + if #package:urls() > 0 then + + -- attempt to get tags and branches from the git url + local refs = {} + if gitrefs then + refs = gitrefs[package:fullname()] or {} + end - -- select required version - return semver.select(required_ver, versions, refs.tags, refs.branches) + -- select package version + local version, source = semver.select(package:requireinfo().version, package:get("versions"), refs.tags, refs.branches) + + -- save version to package + package:version_set(version, source) + end + end end -- the cache directory @@ -359,30 +387,11 @@ function load_packages(requires, requires_extra) -- laod all required packages recursively local packages = _load_packages(requires, requires_extra) - -- add all urls to fasturl and prepare to sort them together - for _, package in ipairs(packages) do - fasturl.add(package:urls()) - end - - -- load git refs from packages - local gitrefs = _load_packages_gitrefs(packages) - - -- sort and update urls - for _, package in ipairs(packages) do - - -- sort package urls - package:urls_set(fasturl.sort(package:urls())) - - -- exists urls? otherwise be phony package (only as package group) - if #package:urls() > 0 then - - -- select package version - local version, source = _select_package_version(package, package:requireinfo().version, gitrefs) + -- sort package urls + _sort_packages_urls(packages) - -- save version to package - package:version_set(version, source) - end - end + -- select packages version + _select_packages_version(packages) -- ok return packages diff --git a/xmake/modules/net/ping.lua b/xmake/modules/net/ping.lua index a3629b193..e87c2cd94 100644 --- a/xmake/modules/net/ping.lua +++ b/xmake/modules/net/ping.lua @@ -84,6 +84,9 @@ function main(hosts, opt) if cacheinfo then cacheinfo[host] = timeval end + + -- trace + vprint("pinging for the host(%s) ... %d ms", host, timeval) end end, catch |
