summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2022-10-08 00:55:22 +0800
committerruki <[email protected]>2022-10-08 00:55:22 +0800
commit3af745fe82cc5ff1627a395b184908ee6d1f6907 (patch)
tree1cb78ddb8e3cb594f8c8445dd9f406bc94663822
parent9db1c9224342114ba6b40ad0860f09ed69be0ba9 (diff)
fix package info
-rw-r--r--xmake/actions/config/main.lua10
-rw-r--r--xmake/core/project/package.lua12
-rw-r--r--xmake/core/project/project.lua8
3 files changed, 12 insertions, 18 deletions
diff --git a/xmake/actions/config/main.lua b/xmake/actions/config/main.lua
index 9b7414f58..eb51cb4dc 100644
--- a/xmake/actions/config/main.lua
+++ b/xmake/actions/config/main.lua
@@ -197,11 +197,11 @@ function _config_targets(targetname)
end
-- load rules in the required packages for target
-function _load_package_rules_for_target(target, packages)
+function _load_package_rules_for_target(target)
for _, rulename in ipairs(target:get("rules")) do
local packagename = rulename:match("@(.-)/")
if packagename then
- local pkginfo = packages[packagename]
+ local pkginfo = project.required_package(packagename)
if pkginfo then
local r = pkginfo:rule(rulename)
if r then
@@ -225,13 +225,9 @@ end
-- @endcode
--
function _load_package_rules_for_targets()
- local packages = project.required_packages()
- if not packages then
- return
- end
for _, target in ipairs(project.ordertargets()) do
if target:is_enabled() then
- _load_package_rules_for_target(target, packages)
+ _load_package_rules_for_target(target)
end
end
end
diff --git a/xmake/core/project/package.lua b/xmake/core/project/package.lua
index 388862d91..a716ae9e6 100644
--- a/xmake/core/project/package.lua
+++ b/xmake/core/project/package.lua
@@ -209,19 +209,17 @@ function package._cache()
return localcache.cache("package")
end
--- load the requires info from the cache
+-- load the package from the cache
function package.load(name)
-
- -- check
- assert(name)
-
- -- get info
local info = package._cache():get(name)
if info == nil then
return
end
+ return package.load_withinfo(name, info)
+end
- -- init package instance
+-- load package from the give package info
+function package.load_withinfo(name, info)
local instance = table.inherit(_instance)
instance._INFO = info
instance._NAME = name
diff --git a/xmake/core/project/project.lua b/xmake/core/project/project.lua
index 7d40a65ef..bb1540106 100644
--- a/xmake/core/project/project.lua
+++ b/xmake/core/project/project.lua
@@ -495,11 +495,11 @@ function project._load_requires()
end
-- load it from cache first (@note will discard scripts in extrainfo)
- local instance = project_package.load(alias or packagename)
+ local name = alias or packagename
+ local instance = project_package.load(name)
if not instance then
- instance = table.inherit(project_package)
- instance._NAME = alias or packagename
- instance._INFO = { __requirestr = requirestr, __extrainfo = extrainfo }
+ local info = {__requirestr = requirestr, __extrainfo = extrainfo}
+ instance = project_package.load_withinfo(name, info)
end
-- add require info