summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2025-01-07 23:19:03 +0800
committerruki <[email protected]>2025-01-07 23:19:03 +0800
commitbd6ded54efbea8fe01040941ce8d39951a8431c9 (patch)
treedd9666e69463dfb7e0c69400c41e06c95293d659
parent9021afe5a0fd56abc7683409c921fd60de786588 (diff)
fix package with 3rd namespace
-rw-r--r--tests/apis/namespace/package/test.lua2
-rw-r--r--tests/apis/namespace/package/xmake.lua21
-rw-r--r--xmake/core/base/interpreter.lua2
-rw-r--r--xmake/core/package/package.lua22
-rw-r--r--xmake/modules/private/action/require/impl/package.lua3
5 files changed, 31 insertions, 19 deletions
diff --git a/tests/apis/namespace/package/test.lua b/tests/apis/namespace/package/test.lua
index 83c0a9546..bff75b066 100644
--- a/tests/apis/namespace/package/test.lua
+++ b/tests/apis/namespace/package/test.lua
@@ -1,3 +1,3 @@
function main()
- os.exec("xmake -vD")
+ os.exec("xmake -vD -y")
end
diff --git a/tests/apis/namespace/package/xmake.lua b/tests/apis/namespace/package/xmake.lua
index b2bc61d73..9f01f4bdb 100644
--- a/tests/apis/namespace/package/xmake.lua
+++ b/tests/apis/namespace/package/xmake.lua
@@ -1,19 +1,21 @@
-add_requires("package0")
+add_requires("package0", {system = false})
package("package0")
- on_fetch(function (package)
- return {defines = "PACKAGE0"}
+ on_load(function (package)
+ package:add("defines", "PACKAGE0")
end)
+ on_install(function (package) end)
namespace("ns1", function ()
- add_requires("package1")
+ add_requires("package1", {system = false})
package("package1")
- on_fetch(function (package)
- return {defines = "NS1_PACKAGE1"}
+ on_load(function (package)
+ package:add("defines", "NS1_PACKAGE1")
end)
+ on_install(function (package) end)
target("foo")
set_kind("static")
@@ -22,12 +24,13 @@ namespace("ns1", function ()
namespace("ns2", function()
- add_requires("package2")
+ add_requires("package2", {system = false})
package("package2")
- on_fetch(function (package)
- return {defines = "NS2_PACKAGE2"}
+ on_load(function (package)
+ package:add("defines", "NS2_PACKAGE2")
end)
+ on_install(function (package) end)
target("bar")
set_kind("static")
diff --git a/xmake/core/base/interpreter.lua b/xmake/core/base/interpreter.lua
index 5ae08de33..2ae021f79 100644
--- a/xmake/core/base/interpreter.lua
+++ b/xmake/core/base/interpreter.lua
@@ -260,7 +260,7 @@ function interpreter:_api_register_xxx_values(scope_kind, action, apifunc, ...)
-- init current root scope
local rootkey = scope_kind
- if namespace then
+ if namespace and scope_kind ~= "__rootkind" then
rootkey = scope_kind .. "@@" .. namespace .. "::"
end
local root = scopes._ROOT[rootkey] or {}
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua
index d3032f15b..05be6af8c 100644
--- a/xmake/core/package/package.lua
+++ b/xmake/core/package/package.lua
@@ -55,12 +55,24 @@ local sandbox_module = require("sandbox/modules/import/core/sandbox/module")
-- new an instance
function _instance.new(name, info, opt)
opt = opt or {}
- local instance = table.inherit(_instance)
local parts = name:split("::", {plain = true})
- instance._NAME = parts[#parts]
- table.remove(parts)
- if #parts > 0 then
- instance._NAMESPACE = table.concat(parts, "::")
+ local instance = table.inherit(_instance)
+ local managers = package._memcache():get("managers")
+ if managers == nil and #parts == 2 then
+ managers = hashset.new()
+ for _, dir in ipairs(os.dirs(path.join(os.programdir(), "modules/package/manager/*"))) do
+ managers:insert(path.filename(dir))
+ end
+ package._memcache():set("managers", managers)
+ end
+ if #parts == 2 and managers and managers:has(parts[1]) then
+ instance._NAME = name
+ else
+ instance._NAME = parts[#parts]
+ table.remove(parts)
+ if #parts > 0 then
+ instance._NAMESPACE = table.concat(parts, "::")
+ end
end
instance._INFO = info
instance._REPO = opt.repo
diff --git a/xmake/modules/private/action/require/impl/package.lua b/xmake/modules/private/action/require/impl/package.lua
index a06ee7a29..30c571592 100644
--- a/xmake/modules/private/action/require/impl/package.lua
+++ b/xmake/modules/private/action/require/impl/package.lua
@@ -1064,9 +1064,6 @@ function _load_package(packagename, requireinfo, opt)
end
_memcache():set2("packageids", packagename, (packageid or 0) + 1)
end
- if displayname and package:namespace() then
- displayname = package:namespace() .. "::" .. displayname
- end
package:displayname_set(displayname)
-- disable parallelize if the package cache directory conflicts