summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2026-01-06 22:37:43 +0800
committerruki <[email protected]>2026-01-09 17:59:03 +0800
commita1aed61239dc4892d67668a120f6a78367dfde30 (patch)
treea88c551cfd5258123495e6f1094b6a6543586fff
parent60fcc1c6c008d17a5fd0fcf39ba5d9ed3a7c139e (diff)
improve scheme:get
-rw-r--r--xmake/core/package/package.lua7
-rw-r--r--xmake/core/package/scheme.lua9
2 files changed, 10 insertions, 6 deletions
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua
index 849ab4fdd..75571f695 100644
--- a/xmake/core/package/package.lua
+++ b/xmake/core/package/package.lua
@@ -2462,13 +2462,10 @@ function _instance:schemes()
local schemes = self._SCHEMES
if not schemes then
schemes = {}
+ schemes["__default__"] = scheme.new("__default__", {package = self})
for _, name in ipairs(table.wrap(self:get("schemes"))) do
schemes[name] = scheme.new(name, {package = self})
end
- -- add default scheme if no schemes are defined
- if table.empty(schemes) then
- schemes["__default__"] = scheme.new("__default__", {package = self})
- end
self._SCHEMES = schemes
end
return schemes
@@ -2479,6 +2476,8 @@ function _instance:schemes_orderlist()
local schemes_orderlist = self._SCHEMES_ORDERLIST
if not schemes_orderlist then
schemes_orderlist = {}
+ -- always add default scheme first
+ table.insert(schemes_orderlist, self:scheme("__default__"))
for _, name in ipairs(table.wrap(self:get("schemes"))) do
table.insert(schemes_orderlist, self:scheme(name))
end
diff --git a/xmake/core/package/scheme.lua b/xmake/core/package/scheme.lua
index c2231543a..18d3392a8 100644
--- a/xmake/core/package/scheme.lua
+++ b/xmake/core/package/scheme.lua
@@ -60,6 +60,11 @@ function _instance:type()
return "scheme"
end
+-- is default scheme?
+function _instance:is_default()
+ return self:name() == "__default__"
+end
+
-- get the it's package
function _instance:package()
return self._PACKAGE
@@ -68,7 +73,7 @@ end
-- get the scheme configuration
function _instance:get(name)
local value = self._INFO:get(name)
- if value == nil then
+ if value == nil and self:is_default() then
value = self:package():get(name)
end
return value
@@ -87,7 +92,7 @@ end
-- get the extra configuration
function _instance:extraconf(name, item, key)
local conf = self._INFO:extraconf(name, item, key)
- if conf == nil then
+ if conf == nil and self:is_default() then
conf = self:package():extraconf(name, item, key)
end
return conf