diff options
| author | ruki <[email protected]> | 2025-01-07 23:19:03 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2025-01-07 23:19:03 +0800 |
| commit | bd6ded54efbea8fe01040941ce8d39951a8431c9 (patch) | |
| tree | dd9666e69463dfb7e0c69400c41e06c95293d659 | |
| parent | 9021afe5a0fd56abc7683409c921fd60de786588 (diff) | |
fix package with 3rd namespace
| -rw-r--r-- | tests/apis/namespace/package/test.lua | 2 | ||||
| -rw-r--r-- | tests/apis/namespace/package/xmake.lua | 21 | ||||
| -rw-r--r-- | xmake/core/base/interpreter.lua | 2 | ||||
| -rw-r--r-- | xmake/core/package/package.lua | 22 | ||||
| -rw-r--r-- | xmake/modules/private/action/require/impl/package.lua | 3 |
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 |
