diff options
| author | ruki <[email protected]> | 2019-03-29 23:47:10 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2019-03-29 16:43:03 +0800 |
| commit | 53ef30e00965986dc2f0c227a5e35f87a3992066 (patch) | |
| tree | f66f55b2b8c2a9d9a9d8f872614a57b6dde682f9 | |
| parent | d1fd493decde10f77e382467dd1e6b75464801ad (diff) | |
fix load packages
| -rw-r--r-- | xmake/actions/require/impl/package.lua | 54 |
1 files changed, 30 insertions, 24 deletions
diff --git a/xmake/actions/require/impl/package.lua b/xmake/actions/require/impl/package.lua index f282815fa..3a0eeb22e 100644 --- a/xmake/actions/require/impl/package.lua +++ b/xmake/actions/require/impl/package.lua @@ -324,6 +324,18 @@ function _load_package(packagename, requireinfo) -- save require info to package package:requireinfo_set(requireinfo) + -- add some builtin configurations to package + _add_package_configurations(package) + + -- check package configurations + _check_package_configurations(package) + + -- do load for package + local on_load = package:script("load") + if on_load then + on_load(package) + end + -- save this package package to cache packages[packagename] = package _g._PACKAGES = packages @@ -333,7 +345,7 @@ function _load_package(packagename, requireinfo) end -- load all required packages -function _load_packages(requires, unique, opt) +function _load_packages(requires, opt) -- no requires? if not requires or #requires == 0 then @@ -350,38 +362,22 @@ function _load_packages(requires, unique, opt) -- maybe package not found and optional if package then - -- remove repeat packages with same the package name and version - local key = package:name() .. (package:version_str() or "") - if not unique[key] then - - -- add some builtin configurations to package - _add_package_configurations(package) - - -- check package configurations - _check_package_configurations(package) - - -- do load for package - local on_load = package:script("load") - if on_load then - on_load(package) - end - - -- load dependent packages and save them first of this package + -- load dependent packages and save them first of this package + if not package._DEPS then local deps = package:get("deps") if deps and opt.nodeps ~= true then local packagedeps = {} - for _, dep in ipairs(_load_packages(deps, unique, {requires_extra = package:get("__extra_deps"), parentinfo = requireinfo.info, nodeps = opt.nodeps})) do + for _, dep in ipairs(_load_packages(deps, {requires_extra = package:get("__extra_deps"), parentinfo = requireinfo.info, nodeps = opt.nodeps})) do table.insert(packages, dep) packagedeps[dep:name()] = dep end package._DEPS = packagedeps package._ORDERDEPS = table.unique(_sort_packagedeps(package)) end - - -- save this package package - table.insert(packages, package) - unique[key] = true end + + -- save this package package + table.insert(packages, package) end end return packages @@ -676,7 +672,17 @@ end -- load all required packages function load_packages(requires, opt) opt = opt or {} - return _load_packages(requires, {}, opt) + local unique = {} + local packages = {} + for _, package in ipairs(_load_packages(requires, opt)) do + -- remove repeat packages with same the package name and version + local key = package:name() .. (package:version_str() or "") + if not unique[key] then + table.insert(packages, package) + unique[key] = true + end + end + return packages end -- install packages |
