diff options
| author | ruki <[email protected]> | 2025-01-08 00:59:28 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2025-01-08 00:59:28 +0800 |
| commit | 4ad00835a9070c32b6ce17248e5702ef0eae5a37 (patch) | |
| tree | 2102b2025ba2e7246f6940925a38c1ecf74559be | |
| parent | 14fff0b1c97238ec498c1a237862d4fe943b8d6c (diff) | |
fix package error
| -rw-r--r-- | xmake/core/package/package.lua | 11 | ||||
| -rw-r--r-- | xmake/core/project/project.lua | 27 | ||||
| -rw-r--r-- | xmake/modules/private/action/require/impl/package.lua | 6 |
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 |
