summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2025-01-08 00:59:28 +0800
committerruki <[email protected]>2025-01-08 00:59:28 +0800
commit4ad00835a9070c32b6ce17248e5702ef0eae5a37 (patch)
tree2102b2025ba2e7246f6940925a38c1ecf74559be
parent14fff0b1c97238ec498c1a237862d4fe943b8d6c (diff)
fix package error
-rw-r--r--xmake/core/package/package.lua11
-rw-r--r--xmake/core/project/project.lua27
-rw-r--r--xmake/modules/private/action/require/impl/package.lua6
3 files changed, 43 insertions, 1 deletions
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua
index 05be6af8c..be736d2f0 100644
--- a/xmake/core/package/package.lua
+++ b/xmake/core/package/package.lua
@@ -3001,7 +3001,16 @@ function package.load_from_project(packagename, project)
-- get package info
local packageinfo = packages[packagename]
- if not packageinfo then
+ if packageinfo == nil and project.namespaces() then
+ for _, namespace in ipairs(project.namespaces()) do
+ packageinfo = packages[namespace .. "::" .. packagename]
+ if packageinfo then
+ packagename = namespace .. "::" .. packagename
+ break
+ end
+ end
+ end
+ if packageinfo == nil then
return
end
diff --git a/xmake/core/project/project.lua b/xmake/core/project/project.lua
index c283e1e36..7a24a298a 100644
--- a/xmake/core/project/project.lua
+++ b/xmake/core/project/project.lua
@@ -1030,11 +1030,38 @@ function project.requires_str()
-- get raw requires
requires_str, requires_extra = project.get("requires"), project.get("__extra_requires")
+ local namespaces = project.namespaces()
+ if namespaces then
+ for _, namespace in ipairs(namespaces) do
+ local ns_requires_str, ns_requires_extra = project.get(namespace .. "::requires"), project.get(namespace .. "::__extra_requires")
+ if ns_requires_str then
+ requires_str = table.wrap(requires_str)
+ table.insert(requires_str, ns_requires_str)
+ end
+ if ns_requires_extra then
+ requires_extra = table.wrap(requires_extra)
+ table.join2(requires_extra, ns_requires_extra)
+ end
+ end
+ end
project._memcache():set("requires_str", requires_str or false)
project._memcache():set("requires_extra", requires_extra)
-- get raw requireconfs
local requireconfs_str, requireconfs_extra = project.get("requireconfs"), project.get("__extra_requireconfs")
+ if namespaces then
+ for _, namespace in ipairs(project.namespaces()) do
+ local ns_requireconfs_str, ns_requireconfs_extra = project.get(namespace .. "::requireconfs"), project.get(namespace .. "::__extra_requireconfs")
+ if ns_requireconfs_str then
+ requireconfs_str = table.wrap(requireconfs_str)
+ table.insert(requireconfs_str, ns_requireconfs_str)
+ end
+ if ns_requireconfs_extra then
+ requireconfs_extra = table.wrap(requireconfs_extra)
+ table.join2(requireconfs_extra, ns_requireconfs_extra)
+ end
+ end
+ end
project._memcache():set("requireconfs_str", requireconfs_str or false)
project._memcache():set("requireconfs_extra", requireconfs_extra)
end
diff --git a/xmake/modules/private/action/require/impl/package.lua b/xmake/modules/private/action/require/impl/package.lua
index 30c571592..840814040 100644
--- a/xmake/modules/private/action/require/impl/package.lua
+++ b/xmake/modules/private/action/require/impl/package.lua
@@ -961,6 +961,12 @@ function _load_package(packagename, requireinfo, opt)
local package
if os.isfile(os.projectfile()) then
package = _load_package_from_project(packagename)
+ if package and package:namespace() then
+ packagename = package:namespace() .. "::" .. packagename
+ if displayname then
+ displayname = package:namespace() .. "::" .. displayname
+ end
+ end
end
-- load package from repositories