From bd2b541f5839c5dc65d7931f0d7829d04d7941a7 Mon Sep 17 00:00:00 2001 From: eatradish Date: Thu, 13 Feb 2025 18:16:34 +0800 Subject: [PATCH 01/12] fix: fix build warning without aosc feature --- oma-refresh/src/db.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/oma-refresh/src/db.rs b/oma-refresh/src/db.rs index 4a975ab0..80411c2c 100644 --- a/oma-refresh/src/db.rs +++ b/oma-refresh/src/db.rs @@ -27,7 +27,6 @@ use oma_apt_sources_lists::SourcesListError; use oma_fetch::{ checksum::{Checksum, ChecksumError}, reqwest::{ - self, header::{HeaderValue, CONTENT_LENGTH}, Client, Response, }, @@ -39,8 +38,9 @@ use oma_fetch::{SingleDownloadError, Summary}; use oma_topics::TopicManager; use oma_utils::dpkg::dpkg_arch; + #[cfg(feature = "aosc")] -use reqwest::StatusCode; +use oma_fetch::reqwest::StatusCode; use sysinfo::{Pid, System}; use tokio::{ From 64933cdfe9b258c563f4be91340dd2a7ed4b6aa4 Mon Sep 17 00:00:00 2001 From: eatradish Date: Thu, 13 Feb 2025 18:18:08 +0800 Subject: [PATCH 02/12] v1.14.514-rc.2 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 07770943..d9625c05 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2973,7 +2973,7 @@ dependencies = [ [[package]] name = "oma" -version = "1.14.514-rc.1" +version = "1.14.514-rc.2" dependencies = [ "ahash", "ansi-to-tui", diff --git a/Cargo.toml b/Cargo.toml index 33d6218d..d1bec94a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "oma" -version = "1.14.514-rc.1" +version = "1.14.514-rc.2" edition = "2021" description = "User-friendly and performant package manager for APT repositories" license = "GPL-3.0-or-later" From dd5c87389b0ca646d2610ddc75e0c9449081394e Mon Sep 17 00:00:00 2001 From: eatradish Date: Sun, 16 Feb 2025 13:02:06 +0800 Subject: [PATCH 03/12] v1.14.514 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d9625c05..8e134909 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2973,7 +2973,7 @@ dependencies = [ [[package]] name = "oma" -version = "1.14.514-rc.2" +version = "1.14.514" dependencies = [ "ahash", "ansi-to-tui", diff --git a/Cargo.toml b/Cargo.toml index d1bec94a..05c4be3d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "oma" -version = "1.14.514-rc.2" +version = "1.14.514" edition = "2021" description = "User-friendly and performant package manager for APT repositories" license = "GPL-3.0-or-later" From 201432043adbd007ec913d223ac1fc195c2a54e4 Mon Sep 17 00:00:00 2001 From: Mag Mell Date: Mon, 17 Feb 2025 21:05:40 +0800 Subject: [PATCH 04/12] fix(tui): fix some edge case will panic (#347) in `oma tui`, [TAB] -> [Dn] will panic --- src/tui/state.rs | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/tui/state.rs b/src/tui/state.rs index 5c904850..b5554731 100644 --- a/src/tui/state.rs +++ b/src/tui/state.rs @@ -15,23 +15,19 @@ impl StatefulList { pub fn next(&mut self) { let i = match self.state.selected() { - Some(i) => { - if i < self.items.len() - 1 { - i + 1 - } else { - i - } - } - None => 0, + Some(i) => Some(if i < self.items.len() - 1 { i + 1 } else { i }), + None if self.items.is_empty() => None, + None => Some(0), }; - self.state.select(Some(i)); + self.state.select(i); } pub fn previous(&mut self) { let i = match self.state.selected() { - Some(i) => i.saturating_sub(1), - None => 0, + Some(i) => Some(i.saturating_sub(1)), + None if self.items.is_empty() => None, + None => Some(0), }; - self.state.select(Some(i)); + self.state.select(i); } } From d527d60714edfba504b07800cae43ad1469d7b63 Mon Sep 17 00:00:00 2001 From: eatradish Date: Mon, 17 Feb 2025 21:07:42 +0800 Subject: [PATCH 05/12] v1.14.515 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8e134909..7f91faef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2973,7 +2973,7 @@ dependencies = [ [[package]] name = "oma" -version = "1.14.514" +version = "1.14.515" dependencies = [ "ahash", "ansi-to-tui", diff --git a/Cargo.toml b/Cargo.toml index 05c4be3d..b8d4497b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "oma" -version = "1.14.514" +version = "1.14.515" edition = "2021" description = "User-friendly and performant package manager for APT repositories" license = "GPL-3.0-or-later" From 012fead5f400c1b8dda9dd1d2cc5af5f0cdcf073 Mon Sep 17 00:00:00 2001 From: Mag Mell Date: Tue, 18 Feb 2025 10:59:52 +0800 Subject: [PATCH 06/12] chore: update all deps (Fix build oma with libapt-pkg-7.0) --- Cargo.lock | 99 +++++++++++++++++++++++++++++------------------------- 1 file changed, 54 insertions(+), 45 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7f91faef..ca9ce196 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -641,9 +641,9 @@ dependencies = [ [[package]] name = "built" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73848a43c5d63a1251d17adf6c2bf78aa94830e60a335a95eeea45d6ba9e1e4d" +checksum = "56ed6191a7e78c36abdb16ab65341eefd73d64d303fffccdbb00d51e4205967b" [[package]] name = "bumpalo" @@ -719,9 +719,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.13" +version = "1.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7777341816418c02e033934a09f20dc0ccaf65a5201ef8a450ae0105a573fda" +checksum = "0c3d1b2e905a3a7b00a6141adb0e4c0bb941d11caf55349d863942a1cc44e3c9" dependencies = [ "jobserver", "libc", @@ -787,9 +787,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.29" +version = "4.5.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acebd8ad879283633b343856142139f2da2317c96b05b4dd6181c61e2480184" +checksum = "92b7b18d71fad5313a1e320fa9897994228ce274b60faa4d694fe0ea89cd9e6d" dependencies = [ "clap_builder", "clap_derive", @@ -797,22 +797,22 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.29" +version = "4.5.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ba32cbda51c7e1dfd49acc1457ba1a7dec5b64fe360e828acb13ca8dc9c2f9" +checksum = "a35db2071778a7344791a4fb4f95308b5673d219dee3ae348b86642574ecc90c" dependencies = [ "anstream", "anstyle", "clap_lex", "strsim", - "terminal_size", + "terminal_size 0.4.1", ] [[package]] name = "clap_complete" -version = "4.5.44" +version = "4.5.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "375f9d8255adeeedd51053574fd8d4ba875ea5fa558e86617b07f09f1680c8b6" +checksum = "1e3040c8291884ddf39445dc033c70abc2bc44a42f0a3a00571a0f483a83f0cd" dependencies = [ "clap", ] @@ -1357,9 +1357,9 @@ checksum = "c7f84e12ccf0a7ddc17a6c41c93326024c42920d7ee630d04950e6926645c0fe" [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" @@ -2595,9 +2595,9 @@ checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" [[package]] name = "logind-zbus" -version = "5.1.0" +version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e506e37789ea005178eafda1a20aea3deb6efd35de1a41d79e4c726d07e1dbdc" +checksum = "8adb500c73297d66c7c23ca3436600ea8c5d704f82eb3c65e1373689be965de7" dependencies = [ "serde", "zbus", @@ -3030,14 +3030,14 @@ dependencies = [ [[package]] name = "oma-apt" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b64cadf90dec35171f1e7c850262260383ea9789cdec5c9a7f4572ace4f4878e" +checksum = "58ca76b05298384b7d0ad7889541ea52df556468f1add47fcbf8df7030b868d8" dependencies = [ "cxx", "cxx-build", "paste", - "terminal_size", + "terminal_size 0.3.0", ] [[package]] @@ -3094,7 +3094,7 @@ dependencies = [ "flume", "futures", "md-5", - "oma-utils 0.10.4", + "oma-utils 0.10.5 (registry+https://github.com/rust-lang/crates.io-index)", "reqwest", "serde", "sha2", @@ -3248,29 +3248,29 @@ dependencies = [ [[package]] name = "oma-utils" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f5e099cd414f0fa91b788a617d428027edb89548ad0d325d85d485015b9d9fa" +version = "0.10.5" dependencies = [ "logind-zbus", + "number_prefix", + "oma-console", "os-release", "thiserror 2.0.11", "tracing", "url-escape", + "zbus", ] [[package]] name = "oma-utils" version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cc949eb58cea030ee5a1565d0313476892e25025850e5c6946e69311151c5a1" dependencies = [ "logind-zbus", - "number_prefix", - "oma-console", "os-release", "thiserror 2.0.11", "tracing", "url-escape", - "zbus", ] [[package]] @@ -3281,9 +3281,9 @@ checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" [[package]] name = "openssl" -version = "0.10.70" +version = "0.10.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61cfb4e166a8bb8c9b55c500bc2308550148ece889be90f609377e58140f42c6" +checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" dependencies = [ "bitflags 2.8.0", "cfg-if", @@ -3313,9 +3313,9 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.105" +version = "0.9.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b22d5b84be05a8d6947c7cb71f7c849aa0f112acd4bf51c2a7c1c988ac0a9dc" +checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd" dependencies = [ "cc", "libc", @@ -3605,9 +3605,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.13.4" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c0fef6c4230e4ccf618a35c59d7ede15dea37de8427500f50aff708806e42ec" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" dependencies = [ "bytes", "prost-derive", @@ -3615,12 +3615,12 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.4" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "157c5a9d7ea5c2ed2d9fb8f495b64759f7816c7eaea54ba3978f0d63000162e3" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.13.0", + "itertools 0.14.0", "proc-macro2", "quote", "syn", @@ -3628,9 +3628,9 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.13.4" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2f1e56baa61e93533aebc21af4d2134b70f66275e0fcdf3cbe43d77ff7e8fc" +checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" dependencies = [ "prost", ] @@ -3696,9 +3696,9 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.9" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c40286217b4ba3a71d644d752e6a0b71f13f1b6a2c5311acfcbe0c2418ed904" +checksum = "e46f3055866785f6b92bc6164b76be02ca8f2eb4b002c0354b28cf4c119e5944" dependencies = [ "cfg_aliases", "libc", @@ -3965,15 +3965,14 @@ checksum = "57397d16646700483b67d2dd6511d79318f9d057fdbd21a4066aeac8b41d310a" [[package]] name = "ring" -version = "0.17.8" +version = "0.17.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "e75ec5e92c4d8aede845126adc388046234541629e76029599ed35a003c7ed24" dependencies = [ "cc", "cfg-if", "getrandom 0.2.15", "libc", - "spin", "untrusted", "windows-sys 0.52.0", ] @@ -4435,9 +4434,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd" [[package]] name = "smawk" @@ -4643,9 +4642,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.16.0" +version = "3.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" +checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230" dependencies = [ "cfg-if", "fastrand", @@ -4689,6 +4688,16 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "terminal_size" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" +dependencies = [ + "rustix", + "windows-sys 0.48.0", +] + [[package]] name = "terminal_size" version = "0.4.1" From 50f4bcfb280ec79271d9e719f0597bb040242bc8 Mon Sep 17 00:00:00 2001 From: eatradish Date: Tue, 18 Feb 2025 11:01:00 +0800 Subject: [PATCH 07/12] v1.14.516 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ca9ce196..b8e75803 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2973,7 +2973,7 @@ dependencies = [ [[package]] name = "oma" -version = "1.14.515" +version = "1.14.516" dependencies = [ "ahash", "ansi-to-tui", diff --git a/Cargo.toml b/Cargo.toml index b8d4497b..3a5c2669 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "oma" -version = "1.14.515" +version = "1.14.516" edition = "2021" description = "User-friendly and performant package manager for APT repositories" license = "GPL-3.0-or-later" From 992e24cb6bca10694222f556c37e52d64b0e16dc Mon Sep 17 00:00:00 2001 From: eatradish Date: Thu, 20 Feb 2025 17:17:41 +0800 Subject: [PATCH 08/12] refactor(oma-pm)!: split to `is_needs_fix_dpkg_status` and `fix_dpkg_status` --- oma-pm/src/apt.rs | 30 ++++++++++++++++++------------ src/subcommand/upgrade.rs | 10 ++++++++-- src/subcommand/utils.rs | 8 +++++++- 3 files changed, 33 insertions(+), 15 deletions(-) diff --git a/oma-pm/src/apt.rs b/oma-pm/src/apt.rs index e06778f7..3ea5bb81 100644 --- a/oma-pm/src/apt.rs +++ b/oma-pm/src/apt.rs @@ -578,13 +578,27 @@ impl OmaApt { self.cache.fix_broken(); } - pub fn fix_dpkg_status(&self) -> OmaAptResult<()> { + pub fn fix_dpkg_status( + &self, + need_reconfigure: bool, + need_retriggers: bool, + ) -> OmaAptResult<()> { + if need_reconfigure { + self.run_dpkg_configure()?; + } + + if need_retriggers { + self.run_dpkg_triggers()?; + } + + Ok(()) + } + + pub fn is_needs_fix_dpkg_status(&self) -> Result<(bool, bool), OmaAptError> { let sort = PackageSort::default().installed(); let pkgs = self.cache.packages(&sort); - let mut need_reconfigure = false; let mut need_retriggers = false; - let dpkg_update_path = Path::new(&self.config.get("Dir").unwrap_or_else(|| "/".to_string())) .join("var/lib/dpkg/updates"); @@ -630,15 +644,7 @@ impl OmaApt { need_reconfigure, need_retriggers ); - if need_reconfigure { - self.run_dpkg_configure()?; - } - - if need_retriggers { - self.run_dpkg_triggers()?; - } - - Ok(()) + Ok((need_reconfigure, need_retriggers)) } /// Resolve apt dependencies diff --git a/src/subcommand/upgrade.rs b/src/subcommand/upgrade.rs index d774cb4c..96774e13 100644 --- a/src/subcommand/upgrade.rs +++ b/src/subcommand/upgrade.rs @@ -264,7 +264,13 @@ impl CliExecuter for Upgrade { } if !no_fix_dpkg_status { - apt.fix_dpkg_status()?; + let (needs_reconfigure, needs_retrigger) = apt.is_needs_fix_dpkg_status()?; + if needs_retrigger || needs_reconfigure { + if let Some(ref pb) = pb { + pb.inner.finish_and_clear() + } + apt.fix_dpkg_status(needs_reconfigure, needs_retrigger)?; + } } apt.resolve(no_fixbroken, remove_config)?; @@ -277,7 +283,7 @@ impl CliExecuter for Upgrade { Ok(()) }); - if let Some(pb) = pb { + if let Some(ref pb) = pb { pb.inner.finish_and_clear() } diff --git a/src/subcommand/utils.rs b/src/subcommand/utils.rs index 90bad32c..193fed13 100644 --- a/src/subcommand/utils.rs +++ b/src/subcommand/utils.rs @@ -346,7 +346,13 @@ impl CommitChanges<'_> { } if fix_dpkg_status { - apt.fix_dpkg_status()?; + let (needs_reconfigure, needs_retrigger) = apt.is_needs_fix_dpkg_status()?; + if needs_retrigger || needs_reconfigure { + if let Some(ref pb) = pb { + pb.inner.finish_and_clear() + } + apt.fix_dpkg_status(needs_reconfigure, needs_retrigger)?; + } } apt.resolve(no_fixbroken, remove_config)?; From a63c5663c621c1c55d2e28db74440675f5c9b3d0 Mon Sep 17 00:00:00 2001 From: eatradish Date: Thu, 20 Feb 2025 21:59:00 +0800 Subject: [PATCH 09/12] fix(oma-pm): check `dpkg --configure` and `dpkg --triggers-only` exit status --- oma-pm/src/apt.rs | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/oma-pm/src/apt.rs b/oma-pm/src/apt.rs index 3ea5bb81..51a82257 100644 --- a/oma-pm/src/apt.rs +++ b/oma-pm/src/apt.rs @@ -692,14 +692,7 @@ impl OmaApt { .spawn() .map_err(OmaAptError::DpkgFailedConfigure)?; - if let Err(e) = cmd.wait_with_output() { - return Err(OmaAptError::DpkgFailedConfigure(io::Error::new( - ErrorKind::Other, - format!("dpkg return non-zero code: {:?}", e), - ))); - } - - Ok(()) + dpkg_exit_status(cmd) } pub(crate) fn run_dpkg_triggers(&self) -> OmaAptResult<()> { @@ -713,14 +706,7 @@ impl OmaApt { .spawn() .map_err(OmaAptError::DpkgFailedConfigure)?; - if let Err(e) = cmd.wait_with_output() { - return Err(OmaAptError::DpkgTriggers(io::Error::new( - ErrorKind::Other, - format!("dpkg return non-zero code: {:?}", e), - ))); - } - - Ok(()) + dpkg_exit_status(cmd) } /// Get apt archive dir @@ -1160,6 +1146,26 @@ impl OmaApt { } } +fn dpkg_exit_status(mut cmd: std::process::Child) -> Result<(), OmaAptError> { + match cmd.wait() { + Ok(status) => match status.code() { + Some(0) => Ok(()), + Some(x) => Err(OmaAptError::DpkgFailedConfigure(io::Error::new( + ErrorKind::Other, + format!("dpkg return non-zero code: {}", x), + ))), + None => Err(OmaAptError::DpkgFailedConfigure(io::Error::new( + ErrorKind::Other, + "Could not get dpkg exit status", + ))), + }, + Err(e) => Err(OmaAptError::DpkgFailedConfigure(io::Error::new( + ErrorKind::Other, + e, + ))), + } +} + fn get_package_url(cand: &Version<'_>) -> Vec { let uri = cand .version_files() From e33b1ba9fba05cf580eb67840632f5f04823b3d8 Mon Sep 17 00:00:00 2001 From: eatradish Date: Fri, 21 Feb 2025 13:57:49 +0800 Subject: [PATCH 10/12] fix: fix `oma upgrade` retry prorgress channel not re-open --- src/subcommand/upgrade.rs | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/subcommand/upgrade.rs b/src/subcommand/upgrade.rs index 96774e13..c8e53d7d 100644 --- a/src/subcommand/upgrade.rs +++ b/src/subcommand/upgrade.rs @@ -189,17 +189,6 @@ impl CliExecuter for Upgrade { .map(|x| x.to_owned()) .collect::>(); - let (tx, rx) = unbounded(); - - thread::spawn(move || { - let mut pb: Box = if no_progress { - Box::new(NoProgressBar::default()) - } else { - Box::new(OmaMultiProgressBar::default()) - }; - pb.render_progress(&rx); - }); - let pkgs_unparse = packages.iter().map(|x| x.as_str()).collect::>(); let mut retry_times = 1; @@ -334,6 +323,17 @@ impl CliExecuter for Upgrade { let start_time = Local::now().timestamp(); + let (tx, rx) = unbounded(); + + let progress_worker = thread::spawn(move || { + let mut pb: Box = if no_progress { + Box::new(NoProgressBar::default()) + } else { + Box::new(OmaMultiProgressBar::default()) + }; + pb.render_progress(&rx); + }); + match apt.commit( if no_progress { Box::new(NoInstallProgressManager) @@ -353,6 +353,7 @@ impl CliExecuter for Upgrade { }, ) { Ok(()) => { + progress_worker.join().unwrap(); NOT_ALLOW_CTRLC.store(true, Ordering::Relaxed); write_oma_installed_status()?; @@ -385,6 +386,7 @@ impl CliExecuter for Upgrade { OmaAptError::AptErrors(_) | OmaAptError::AptError(_) | OmaAptError::AptCxxException(_) => { + progress_worker.join().unwrap(); if retry_times == 3 { NOT_ALLOW_CTRLC.store(true, Ordering::Relaxed); From 580fba6245cb6d64846162129677135b265b4a56 Mon Sep 17 00:00:00 2001 From: eatradish Date: Fri, 21 Feb 2025 15:05:33 +0800 Subject: [PATCH 11/12] oma-pm-v0.47.0 --- Cargo.lock | 2 +- oma-pm/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b8e75803..aeb350bf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3149,7 +3149,7 @@ dependencies = [ [[package]] name = "oma-pm" -version = "0.46.0" +version = "0.47.0" dependencies = [ "ahash", "apt-auth-config", diff --git a/oma-pm/Cargo.toml b/oma-pm/Cargo.toml index c57f1a22..c46e15d3 100644 --- a/oma-pm/Cargo.toml +++ b/oma-pm/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "oma-pm" -version = "0.46.0" +version = "0.47.0" edition = "2021" description = "APT package manager API abstraction library" license = "GPL-3.0-or-later" From 2c53f2ef41891d2c240793451f8b049be72baef7 Mon Sep 17 00:00:00 2001 From: eatradish Date: Fri, 21 Feb 2025 15:06:22 +0800 Subject: [PATCH 12/12] v1.14.517 --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index aeb350bf..a0c2aecc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2973,7 +2973,7 @@ dependencies = [ [[package]] name = "oma" -version = "1.14.516" +version = "1.14.517" dependencies = [ "ahash", "ansi-to-tui", diff --git a/Cargo.toml b/Cargo.toml index 3a5c2669..0633eb2b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "oma" -version = "1.14.516" +version = "1.14.517" edition = "2021" description = "User-friendly and performant package manager for APT repositories" license = "GPL-3.0-or-later"