diff options
| author | ruki <[email protected]> | 2021-08-24 00:37:09 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-08-24 00:37:09 +0800 |
| commit | 7e07186439f900505c1ab31a8b2a36452faf5fd3 (patch) | |
| tree | ebf34fb6c96a7d609d057fa0c5ed515e4fb89bf8 | |
| parent | 3fbff8a507a94441047957c9eaaeadfb58e8f901 (diff) | |
show upgraded packages
4 files changed, 47 insertions, 30 deletions
diff --git a/tests/projects/package/multiconfig/xmake-requires.lock b/tests/projects/package/multiconfig/xmake-requires.lock index e162c68b2..af73d677c 100644 --- a/tests/projects/package/multiconfig/xmake-requires.lock +++ b/tests/projects/package/multiconfig/xmake-requires.lock @@ -4,7 +4,6 @@ }, ["macosx|x86_64"] = { ["zlib#31fecfc4"] = { - buildhash = "b76a297309d14c09b42cfe3927260a51", repo = { branch = "master", commit = "eda7adee81bac151f87c507030cc0dd8ab299462", @@ -13,7 +12,6 @@ version = "1.2.11" }, ["zlib~debug#55833b12"] = { - buildhash = "e6a6fa6a86ad4fc7ae3c2cf7c60cc084", repo = { branch = "master", commit = "eda7adee81bac151f87c507030cc0dd8ab299462", @@ -22,7 +20,6 @@ version = "1.2.11" }, ["zlib~shared#b6ab42cb"] = { - buildhash = "8e5b898b0f344715bac89cc6a1577506", repo = { branch = "master", commit = "eda7adee81bac151f87c507030cc0dd8ab299462", diff --git a/tests/projects/package/toolchain_muslcc/xmake-requires.lock b/tests/projects/package/toolchain_muslcc/xmake-requires.lock index 8c55e49ea..4adae3fbb 100644 --- a/tests/projects/package/toolchain_muslcc/xmake-requires.lock +++ b/tests/projects/package/toolchain_muslcc/xmake-requires.lock @@ -4,7 +4,6 @@ }, ["macosx|x86_64"] = { ["autoconf#31fecfc4"] = { - buildhash = "cd4169a7cb484832b2f70d2174072ca2", repo = { branch = "master", commit = "4498f11267de5112199152ab030ed139c985ad5a", @@ -13,7 +12,6 @@ version = "2.71" }, ["automake#31fecfc4"] = { - buildhash = "5b4ee7b727764ece8aa3e149603cfc7a", repo = { branch = "master", commit = "eda7adee81bac151f87c507030cc0dd8ab299462", @@ -22,7 +20,6 @@ version = "1.16.4" }, ["cmake#31fecfc4"] = { - buildhash = "a6d18f8c0bf347d980f8bb762583c91a", repo = { branch = "master", commit = "4498f11267de5112199152ab030ed139c985ad5a", @@ -31,16 +28,14 @@ version = "3.21.0" }, ["gmp#31fecfc4"] = { - buildhash = "7dd9c224447e46698ac73d29f58b1d73", repo = { branch = "master", - commit = "eda7adee81bac151f87c507030cc0dd8ab299462", + commit = "c1b4838c9b1e7a2c52d9bf1a9beafeaee7305e30", url = "https://gitee.com/tboox/xmake-repo.git" }, version = "6.2.1" }, ["libisl 0.22#67114504"] = { - buildhash = "f649e1fb365e442e8f79f372fd91483b", repo = { branch = "master", commit = "eda7adee81bac151f87c507030cc0dd8ab299462", @@ -49,7 +44,6 @@ version = "0.22" }, ["libogg#31fecfc4"] = { - buildhash = "d894fc29f2fb4c45a0f48bc2c6ece273", repo = { branch = "master", commit = "eda7adee81bac151f87c507030cc0dd8ab299462", @@ -58,7 +52,6 @@ version = "v1.3.4" }, ["libplist#31fecfc4"] = { - buildhash = "0c01b22920be4876b1de74629194eb8f", repo = { branch = "master", commit = "eda7adee81bac151f87c507030cc0dd8ab299462", @@ -67,7 +60,6 @@ version = "2.2.0" }, ["libtool#31fecfc4"] = { - buildhash = "64584ec84a4743ecb740b598b263ffa6", repo = { branch = "master", commit = "eda7adee81bac151f87c507030cc0dd8ab299462", @@ -76,16 +68,14 @@ version = "2.4.6" }, ["m4#31fecfc4"] = { - buildhash = "fd0e83e5759b442a970327ebb1c89793", repo = { branch = "master", - commit = "eda7adee81bac151f87c507030cc0dd8ab299462", + commit = "c1b4838c9b1e7a2c52d9bf1a9beafeaee7305e30", url = "https://gitee.com/tboox/xmake-repo.git" }, version = "1.4.19" }, ["muslcc#31fecfc4"] = { - buildhash = "11062c09ebeb484594488ad73ddbcd1f", repo = { branch = "master", commit = "eda7adee81bac151f87c507030cc0dd8ab299462", @@ -94,16 +84,14 @@ version = "20210202" }, ["pkg-config#31fecfc4"] = { - buildhash = "84fd7f9b9f7a47709512cfc85cd9e5f7", repo = { branch = "master", - commit = "eda7adee81bac151f87c507030cc0dd8ab299462", + commit = "c1b4838c9b1e7a2c52d9bf1a9beafeaee7305e30", url = "https://gitee.com/tboox/xmake-repo.git" }, version = "0.29.2" }, ["zlib#31fecfc4"] = { - buildhash = "be90a245b8bb48e6b08a1a15bdcad467", repo = { branch = "master", commit = "eda7adee81bac151f87c507030cc0dd8ab299462", diff --git a/xmake/modules/private/action/require/impl/install_packages.lua b/xmake/modules/private/action/require/impl/install_packages.lua index 79fb71c3f..9eba4caf7 100644 --- a/xmake/modules/private/action/require/impl/install_packages.lua +++ b/xmake/modules/private/action/require/impl/install_packages.lua @@ -243,6 +243,19 @@ function _get_confirm(packages) return result, packages_modified end +-- show upgraded packages +function _show_upgraded_packages(packages) + local upgraded_count = 0 + for _, instance in ipairs(packages) do + local locked_requireinfo = package.get_locked_requireinfo(instance:requireinfo(), {force = true}) + if locked_requireinfo and locked_requireinfo.version and instance:version():gt(locked_requireinfo.version) then + cprint(" ${color.dump.string}%s${clear}: %s -> ${color.success}%s", instance:displayname(), locked_requireinfo.version, instance:version_str()) + upgraded_count = upgraded_count + 1 + end + end + cprint("${bright}%d packages are upgraded!", upgraded_count) +end + -- install packages function _install_packages(packages_install, packages_download, installdeps) @@ -580,6 +593,11 @@ function main(requires, opt) end end + -- show upgraded information + if option.get("upgrade") then + print("upgrading packages ..") + end + -- some packages are modified? we need fix packages list and all deps if packages_modified then order_packages = {} @@ -602,6 +620,11 @@ function main(requires, opt) -- because there may be some missing optional dependencies reinstalled register_packages(packages) + -- show upgraded packages + if option.get("upgrade") then + _show_upgraded_packages(packages) + end + -- lock packages lock_packages(packages) return packages diff --git a/xmake/modules/private/action/require/impl/package.lua b/xmake/modules/private/action/require/impl/package.lua index c8035fecd..c3d642964 100644 --- a/xmake/modules/private/action/require/impl/package.lua +++ b/xmake/modules/private/action/require/impl/package.lua @@ -208,17 +208,19 @@ function _load_package_from_repository(packagename, opt) end -- has locked requires? -function _has_locked_requires() - if not option.get("upgrade") then +function _has_locked_requires(opt) + opt = opt or {} + if not option.get("upgrade") or opt.force then return project.policy("package.requires_lock") and os.isfile(project.requireslock()) end end -- get locked requires -function _get_locked_requires(requirekey) +function _get_locked_requires(requirekey, opt) + opt = opt or {} local requireslock = _memcache():get("requireslock") - if requireslock == nil then - if _has_locked_requires() then + if requireslock == nil or opt.force then + if _has_locked_requires(opt) then requireslock = io.load(project.requireslock()) end _memcache():set("requireslock", requireslock or false) @@ -651,13 +653,7 @@ function _load_package(packagename, requireinfo, opt) requireinfo.requirekey = requirekey -- get locked requireinfo - local locked_requireinfo, requireslock_version - if _has_locked_requires() then - locked_requireinfo, requireslock_version = _get_locked_requires(requirekey) - if requireslock_version and semver.compare(project.requireslock_version(), requireslock_version) < 0 then - locked_requireinfo = nil - end - end + local locked_requireinfo = get_locked_requireinfo(requireinfo) -- load package from project first local package @@ -955,6 +951,19 @@ function get_configs_str(package) return configs_str end +-- get locked requireinfo +function get_locked_requireinfo(requireinfo, opt) + local requirekey = requireinfo.requirekey + local locked_requireinfo, requireslock_version + if _has_locked_requires(opt) and requirekey then + locked_requireinfo, requireslock_version = _get_locked_requires(requirekey, opt) + if requireslock_version and semver.compare(project.requireslock_version(), requireslock_version) < 0 then + locked_requireinfo = nil + end + end + return locked_requireinfo, requireslock_version +end + -- load requires function load_requires(requires, requires_extra, opt) opt = opt or {} |
