fix package modification
All checks were successful
PikaOS Package Build & Release (amd64-v3) / build (push) Successful in 1m56s

This commit is contained in:
Ward from fusion-voyager-3 2024-08-31 09:45:15 +03:00
parent 58717a3a56
commit 8aada8758e
4 changed files with 23 additions and 11 deletions

View File

@ -1 +1 @@
2
3

View File

@ -2,11 +2,11 @@
set -e
if dpkg -s "$1"
if [[ "$1" == "install" ]]
then
apt remove -y "$1"
apt autremove -y
apt install -y "${@:2}"
else
apt install -y "$1"
apt remove -y "${@:2}"
apt autoremove -y
fi
exit 0

2
debian/changelog vendored
View File

@ -1,4 +1,4 @@
pika-kernel-manager (0.1.3-101pika1) pika; urgency=low
pika-kernel-manager (0.1.3-101pika2) pika; urgency=low
* Initial Release

View File

@ -403,7 +403,7 @@ fn add_package_rows(
let log_loop_sender_clone= log_loop_sender.clone();
let kernel_packages_clone = kernel_packages.clone();
std::thread::spawn(move || {
let command = kernel_modify(log_loop_sender_clone, &kernel_packages_clone);
let command = kernel_modify(log_loop_sender_clone, &kernel_packages_clone, true);
match command {
Ok(_) => {
println!("{}", t!("log_status_kernel_modify_successful"));
@ -433,7 +433,7 @@ fn add_package_rows(
let log_loop_sender_clone= log_loop_sender.clone();
let kernel_packages_clone = kernel_packages.clone();
std::thread::spawn(move || {
let command = kernel_modify(log_loop_sender_clone, &kernel_packages_clone);
let command = kernel_modify(log_loop_sender_clone, &kernel_packages_clone, false);
match command {
Ok(_) => {
println!("{}", t!("log_status_kernel_modify_successful"));
@ -479,17 +479,29 @@ fn add_package_rows(
}));
}
const KERNEL_MODIFY_PROG: &str = r###"
const KERNEL_INSTALL_PROG: &str = r###"
#! /bin/bash
PACKAGE="$0"
pkexec /usr/lib/pika/kernel-manager/scripts/modify_package.sh "${PACKAGE}"
pkexec /usr/lib/pika/kernel-manager/scripts/modify_package.sh install "${PACKAGE}"
"###;
const KERNEL_REMOVE_PROG: &str = r###"
#! /bin/bash
PACKAGE="$0"
pkexec /usr/lib/pika/kernel-manager/scripts/modify_package.sh remove "${PACKAGE}"
"###;
fn kernel_modify(
log_loop_sender: async_channel::Sender<String>,
kernel_pkg: &str,
install: bool
) -> Result<(), std::boxed::Box<dyn Error + Send + Sync>> {
let kernel_modify_prog = if install {
KERNEL_INSTALL_PROG
} else {
KERNEL_REMOVE_PROG
};
let (pipe_reader, pipe_writer) = os_pipe::pipe()?;
let child = cmd!("bash", "-c", KERNEL_MODIFY_PROG, kernel_pkg)
let child = cmd!("bash", "-c", kernel_modify_prog, kernel_pkg)
.stderr_to_stdout()
.stdout_file(pipe_writer)
.start()?;