diff options
| author | ruki <[email protected]> | 2022-01-25 15:20:51 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-01-25 15:20:51 +0800 |
| commit | e219035a8e884bc3bbae0c57c122cefa4cd66b28 (patch) | |
| tree | 89d5cd2228816892edc12176fadabbea84634b11 /xmake | |
| parent | db60a26fa1334c1175c8a2a549a67b827a01978a (diff) | |
| parent | a314a9b8d4131701a4dcd6140765836d092d3bc3 (diff) | |
Merge pull request #2010 from xmake-io/basepkg
Support base package
Diffstat (limited to 'xmake')
| -rw-r--r-- | xmake/core/package/package.lua | 19 | ||||
| -rw-r--r-- | xmake/modules/private/action/require/impl/package.lua | 17 |
2 files changed, 32 insertions, 4 deletions
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua index 379d1ddea..73b2731dd 100644 --- a/xmake/core/package/package.lua +++ b/xmake/core/package/package.lua @@ -68,11 +68,17 @@ function _instance:type() return "package" end --- get the package configure -function _instance:get(name) +-- get the base package +function _instance:base() + return self._BASE +end - -- get it from info first +-- get the package configuration +function _instance:get(name) local value = self._INFO:get(name) + if value == nil and self:base() then + value = self:base():get(name) + end if value ~= nil then return value end @@ -90,7 +96,11 @@ end -- get the extra configuration function _instance:extraconf(name, item, key) - return self._INFO:extraconf(name, item, key) + local conf = self._INFO:extraconf(name, item, key) + if conf == nil and self:base() then + conf = self:base():extraconf(name, item, key) + end + return conf end -- set the extra configuration @@ -1811,6 +1821,7 @@ function package.apis() , "package.set_kind" , "package.set_plat" -- deprecated , "package.set_arch" -- deprecated + , "package.set_base" , "package.set_license" , "package.set_homepage" , "package.set_description" diff --git a/xmake/modules/private/action/require/impl/package.lua b/xmake/modules/private/action/require/impl/package.lua index 07e2abc34..3534723d2 100644 --- a/xmake/modules/private/action/require/impl/package.lua +++ b/xmake/modules/private/action/require/impl/package.lua @@ -217,6 +217,17 @@ function _load_package_from_repository(packagename, opt) end end +-- load package package from base +function _load_package_from_base(package, basename, opt) + local package_base = _load_package_from_project(basename) + if not package_base then + package_base = _load_package_from_repository(basename, opt) + end + if package_base then + package._BASE = package_base + end +end + -- has locked requires? function _has_locked_requires(opt) opt = opt or {} @@ -700,6 +711,12 @@ function _load_package(packagename, requireinfo, opt) end end + -- load base package + if package and package:get("base") then + _load_package_from_base(package, package:get("base", { + name = requireinfo.reponame, locked_repo = locked_requireinfo and locked_requireinfo.repo})) + end + -- load package from system local system = requireinfo.system if system == nil then |
