summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2017-10-20 22:50:27 +0800
committerruki <[email protected]>2017-10-20 11:02:47 +0800
commit0144b2a95a7aeccb1802843ab597a2c2f30fdb4a (patch)
tree8d32205024a4f944629ace0bd4bb56fbd4b7c23b
parent365ce94fe03a3d5330bfd3f76b1e703afff73da8 (diff)
inherit parent.optional
-rw-r--r--xmake/actions/require/package.lua15
1 files changed, 8 insertions, 7 deletions
diff --git a/xmake/actions/require/package.lua b/xmake/actions/require/package.lua
index 216a4c88e..b239f5e85 100644
--- a/xmake/actions/require/package.lua
+++ b/xmake/actions/require/package.lua
@@ -43,7 +43,7 @@ import("repository")
-- 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"})
--
-function _parse_require(require_str, requires_extra)
+function _parse_require(require_str, requires_extra, parentinfo)
-- get it from cache first
local requires = _g._REQUIRES or {}
@@ -108,6 +108,7 @@ function _parse_require(require_str, requires_extra)
-- init required item
local required = {}
+ parentinfo = parentinfo or {}
required.packagename = packagename
required.requireinfo =
{
@@ -119,7 +120,7 @@ function _parse_require(require_str, requires_extra)
system = require_extra.system,
option = require_extra.option,
default = require_extra.default,
- optional = require_extra.optional
+ optional = parentinfo.optional or require_extra.optional -- inherit parentinfo.optional
}
-- save this required item to cache
@@ -255,7 +256,7 @@ function _sort_packagedeps(package)
end
-- load all required packages
-function _load_packages(requires, requires_extra)
+function _load_packages(requires, requires_extra, parentinfo)
-- no requires?
if not requires or #requires == 0 then
@@ -264,7 +265,7 @@ function _load_packages(requires, requires_extra)
-- load packages
local packages = {}
- for packagename, requireinfo in pairs(load_requires(requires, requires_extra)) do
+ for packagename, requireinfo in pairs(load_requires(requires, requires_extra, parentinfo)) do
-- attempt to get project option about this package
local packageopt = project.option(packagename)
@@ -280,7 +281,7 @@ function _load_packages(requires, requires_extra)
local deps = package:get("deps")
if deps then
local packagedeps = {}
- for _, dep in ipairs(_load_packages(deps, package:get("__extra_deps"))) do
+ for _, dep in ipairs(_load_packages(deps, package:get("__extra_deps"), requireinfo)) do
table.insert(packages, dep)
packagedeps[dep:name()] = dep
end
@@ -439,14 +440,14 @@ function cachedir()
end
-- load requires
-function load_requires(requires, requires_extra)
+function load_requires(requires, requires_extra, parentinfo)
-- parse requires
local requireinfos = {}
for _, require_str in ipairs(requires) do
-- parse require info
- local packagename, requireinfo = _parse_require(require_str, requires_extra)
+ local packagename, requireinfo = _parse_require(require_str, requires_extra, parentinfo)
-- save this required package
requireinfos[packagename] = requireinfo