summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-08-24 00:37:09 +0800
committerruki <[email protected]>2021-08-24 00:37:09 +0800
commit7e07186439f900505c1ab31a8b2a36452faf5fd3 (patch)
treeebf34fb6c96a7d609d057fa0c5ed515e4fb89bf8
parent3fbff8a507a94441047957c9eaaeadfb58e8f901 (diff)
show upgraded packages
-rw-r--r--tests/projects/package/multiconfig/xmake-requires.lock3
-rw-r--r--tests/projects/package/toolchain_muslcc/xmake-requires.lock18
-rw-r--r--xmake/modules/private/action/require/impl/install_packages.lua23
-rw-r--r--xmake/modules/private/action/require/impl/package.lua33
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 {}