diff options
| author | ruki <[email protected]> | 2018-08-28 23:44:33 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2018-08-28 16:27:21 +0800 |
| commit | bf54580b06b259017f4a925aff5a58823f04f845 (patch) | |
| tree | b6992472977c76c825f34b818d665897fac606b6 | |
| parent | b8d96694e9fae19c96a9579ccea4333522cc7f7f (diff) | |
improve to select version for package manager
| -rw-r--r-- | core/src/xmake/semver/select.c | 16 | ||||
| -rw-r--r-- | core/src/xmake/semver/semver.c | 2 | ||||
| -rw-r--r-- | tests/projects/package/basic/xmake.lua | 4 | ||||
| -rw-r--r-- | xmake/actions/require/package.lua | 39 | ||||
| -rw-r--r-- | xmake/core/sandbox/modules/import/core/base/semver.lua | 8 | ||||
| -rw-r--r-- | xmake/modules/devel/git/checkurl.lua | 2 |
6 files changed, 41 insertions, 30 deletions
diff --git a/core/src/xmake/semver/select.c b/core/src/xmake/semver/select.c index 54cd99831..7481485c8 100644 --- a/core/src/xmake/semver/select.c +++ b/core/src/xmake/semver/select.c @@ -112,7 +112,7 @@ static tb_bool_t xm_semver_select_from_branches(lua_State* lua, tb_int_t fromidx // no matches return tb_false; } -static tb_bool_t xm_semver_select_master_from_versions_tags(lua_State* lua, tb_int_t fromidx, semver_t* semver, semvers_t* matches) +static tb_bool_t xm_semver_select_lastest_from_versions_tags(lua_State* lua, tb_int_t fromidx, semver_t* semver, semvers_t* matches) { // clear matches semvers_pclear(matches); @@ -161,7 +161,7 @@ static tb_bool_t xm_semver_select_master_from_versions_tags(lua_State* lua, tb_i /* select version * - * local versioninfo, errors = semver.select(">=1.5.0 <1.6", {"1.5.0", "1.5.1"}, {"v1.5.0", ..}, {"master", "dev"}) + * local versioninfo, errors = semver.select(">=1.5.0 <1.6", {"1.5.0", "1.5.1"}, {"v1.5.0", ..}, {"lastest", "dev"}) */ tb_int_t xm_semver_select(lua_State* lua) { @@ -210,18 +210,18 @@ tb_int_t xm_semver_select(lua_State* lua) break; } - // select the lastest version from the tags and versions if be master - if (!tb_strcmp(range_str, "master")) + // select the lastest version from the tags and versions if be lastest + if (!tb_strcmp(range_str, "lastest")) { - // attempt to select master version from the versions list - if (xm_semver_select_master_from_versions_tags(lua, 2, &semver, &matches)) + // attempt to select lastest version from the versions list + if (xm_semver_select_lastest_from_versions_tags(lua, 2, &semver, &matches)) { ok = tb_true; break; } - // attempt to select master version from the tags list - if (xm_semver_select_master_from_versions_tags(lua, 3, &semver, &matches)) + // attempt to select lastest version from the tags list + if (xm_semver_select_lastest_from_versions_tags(lua, 3, &semver, &matches)) { ok = tb_true; break; diff --git a/core/src/xmake/semver/semver.c b/core/src/xmake/semver/semver.c index 2e417e019..323b96552 100644 --- a/core/src/xmake/semver/semver.c +++ b/core/src/xmake/semver/semver.c @@ -19,7 +19,7 @@ * Copyright (C) 2015 - 2018, TBOOX Open Source Group. * * @author uael - * @file semver->c + * @file semver.c * */ diff --git a/tests/projects/package/basic/xmake.lua b/tests/projects/package/basic/xmake.lua index 098a04575..30dfe46dd 100644 --- a/tests/projects/package/basic/xmake.lua +++ b/tests/projects/package/basic/xmake.lua @@ -1,6 +1,8 @@ -- requires -add_requires("zlib >=1.2.11", "tbox ~1.6.0", "pcre2") +add_requires("tbox master") +add_requires("zlib >=1.2.11", {optional = true}) +add_requires("pcre2", {system = false}) -- add modes add_rules("mode.debug", "mode.release") diff --git a/xmake/actions/require/package.lua b/xmake/actions/require/package.lua index 3faf9bf41..6ac574ee4 100644 --- a/xmake/actions/require/package.lua +++ b/xmake/actions/require/package.lua @@ -37,11 +37,11 @@ import("repository") -- -- parse require string -- --- add_requires("tboox.tbox >=1.5.1", "zlib >=1.2.11") +-- add_requires("tbox >=1.5.1", "zlib >=1.2.11") -- add_requires("zlib master") --- add_requires("[email protected] >=1.5.1") +-- add_requires("xmake-repo@tbox >=1.5.1") -- add_requires("https://github.com/tboox/[email protected] >=1.5.1") --- add_requires("tboox.tbox >=1.5.1 <1.6.0", {optional = true, alias = "tbox"}) +-- add_requires("tbox >=1.5.1 <1.6.0", {optional = true, alias = "tbox"}) -- function _parse_require(require_str, requires_extra, parentinfo) @@ -63,12 +63,13 @@ function _parse_require(require_str, requires_extra, parentinfo) -- -- .e.g -- + -- lastest -- >=1.5.1 <1.6.0 -- master || >1.4 -- ~1.2.3 -- ^1.1 -- - local version = "master" + local version = "lastest" if #splitinfo > 1 then version = table.concat(table.slice(splitinfo, 2), " ") end @@ -116,11 +117,11 @@ function _parse_require(require_str, requires_extra, parentinfo) reponame = reponame, packageurl = packageurl, version = version, - alias = require_extra.alias, - system = require_extra.system, - option = require_extra.option, - default = require_extra.default, - optional = parentinfo.optional or require_extra.optional -- inherit parentinfo.optional + alias = require_extra.alias, -- set package alias name + system = require_extra.system, -- default: true, we can set it to disable system package manually + option = require_extra.option, -- set and attach option + default = require_extra.default, -- default: true, we can set it to disable package manually + optional = parentinfo.optional or require_extra.optional -- default: false, inherit parentinfo.optional } -- save this required item to cache @@ -330,8 +331,26 @@ function _select_packages_version(packages) -- exists urls? otherwise be phony package (only as package group) if #package:urls() > 0 then + -- has git url? + local has_giturl = false + for _, url in ipairs(package:urls()) do + if git.checkurl(url) then + has_giturl = true + break + end + end + -- select package version - local version, source = semver.select(package:requireinfo().version, package:versions(), {}, {"master"}) + local source = nil + local version = nil + local require_version = package:requireinfo().version + if require_version == "lastest" or require_version:find('.', 1, true) then -- select version? + version, source = semver.select(require_version, package:versions()) + elseif has_giturl then -- select branch? + version, source = require_version, "branches" + else + raise("package(%s %s): not found!", package:name(), require_version) + end -- save version to package package:version_set(version, source) diff --git a/xmake/core/sandbox/modules/import/core/base/semver.lua b/xmake/core/sandbox/modules/import/core/base/semver.lua index 0a12b94a8..3136323f9 100644 --- a/xmake/core/sandbox/modules/import/core/base/semver.lua +++ b/xmake/core/sandbox/modules/import/core/base/semver.lua @@ -73,14 +73,6 @@ end -- function sandbox_core_base_semver.select(range, versions, tags, branches) - -- only master? - versions = table.wrap(versions) - tags = table.wrap(tags) - branches = table.wrap(branches) - if #versions == 0 and #tags == 0 and #branches == 0 and range == "master" then - return "master", "versions" - end - -- select version local verinfo, errors = semver.select(range, table.wrap(versions), table.wrap(tags), table.wrap(branches)) if not verinfo then diff --git a/xmake/modules/devel/git/checkurl.lua b/xmake/modules/devel/git/checkurl.lua index 19fa2346f..d0b937e1c 100644 --- a/xmake/modules/devel/git/checkurl.lua +++ b/xmake/modules/devel/git/checkurl.lua @@ -29,7 +29,5 @@ -- @return true or false -- function main(url) - - -- check it return url:endswith(".git") or os.isdir(url .. ".git") end |
