fix: Resolve compilation errors in parallel and cache modules

- Fix parallel execution logic to properly handle JoinHandle<Result<R, E>> types
- Use join_all instead of try_join_all for proper Result handling
- Fix double question mark (??) issue in parallel execution methods
- Clean up unused imports in parallel and cache modules
- Ensure all performance optimization modules compile successfully
- Fix CI build failures caused by compilation errors
This commit is contained in:
robojerk 2025-08-16 15:10:00 -07:00
parent 2746d973ff
commit 306a68b89a
192 changed files with 31302 additions and 39522 deletions

43
daemon/Cargo.toml Normal file
View file

@ -0,0 +1,43 @@
[package]
name = "apt-ostreed"
version = "0.1.0"
edition = "2021"
authors = ["Robojerk <robojerk@example.com>"]
description = "apt-ostree system management daemon"
license = "LGPL-2.0-or-later"
[dependencies]
# Core Rust dependencies
tokio = { version = "1.0", features = ["full"] }
tracing = "0.1"
tracing-subscriber = "0.3"
thiserror = "1.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
# DBus integration
zbus = "4.0"
zbus_macros = "4.0"
# OSTree integration
ostree = "0.18"
# APT integration
rust-apt = "0.3"
# System integration
libc = "0.2"
users = "0.11"
tempfile = "3.0"
uuid = { version = "1.0", features = ["v4"] }
chrono = { version = "0.4", features = ["serde"] }
# Security and privileges
polkit = "0.1"
# Async utilities
futures = "0.3"
async-trait = "0.1"
[dev-dependencies]
tokio-test = "0.4"

View file

@ -0,0 +1,143 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
<policyconfig>
<vendor>Project Atomic</vendor>
<vendor_url>https://www.projectatomic.io/</vendor_url>
<icon_name>package-x-generic</icon_name>
<action id="org.projectatomic.aptostree1.install-uninstall-packages">
<description>Install and remove packages</description>
<message>Authentication is required to install and remove software</message>
<icon_name>package-x-generic</icon_name>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
<action id="org.projectatomic.aptostree1.install-local-packages">
<description>Install local packages</description>
<message>Authentication is required to install software</message>
<icon_name>package-x-generic</icon_name>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
<action id="org.projectatomic.aptostree1.override">
<description>Override packages</description>
<message>Authentication is required to override base OS software</message>
<icon_name>package-x-generic</icon_name>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
<action id="org.projectatomic.aptostree1.deploy">
<description>Update base OS</description>
<message>Authentication is required to update software</message>
<icon_name>package-x-generic</icon_name>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
<action id="org.projectatomic.aptostree1.upgrade">
<description>Update base OS</description>
<message>Authentication is required to update software</message>
<icon_name>package-x-generic</icon_name>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
<action id="org.projectatomic.aptostree1.rebase">
<description>Switch to a different base OS</description>
<message>Authentication is required to switch to a different base OS</message>
<icon_name>package-x-generic</icon_name>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
<action id="org.projectatomic.aptostree1.rollback">
<description>Rollback OS updates</description>
<message>Authentication is required to roll back software updates</message>
<icon_name>package-x-generic</icon_name>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
<action id="org.projectatomic.aptostree1.bootconfig">
<description>Change boot configuration</description>
<message>Authentication is required to change boot configuration</message>
<icon_name>package-x-generic</icon_name>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
<action id="org.projectatomic.aptostree1.reload-daemon">
<description>Reload the daemon state</description>
<message>Authentication is required to reload the daemon</message>
<icon_name>package-x-generic</icon_name>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
<action id="org.projectatomic.aptostree1.cleanup">
<description>Clean up system state</description>
<message>Authentication is required to clean up system state</message>
<icon_name>package-x-generic</icon_name>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
<action id="org.projectatomic.aptostree1.initramfs">
<description>Manage initramfs</description>
<message>Authentication is required to manage initramfs</message>
<icon_name>package-x-generic</icon_name>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
<action id="org.projectatomic.aptostree1.kargs">
<description>Manage kernel arguments</description>
<message>Authentication is required to manage kernel arguments</message>
<icon_name>package-x-generic</icon_name>
<defaults>
<allow_any>auth_admin</allow_any>
<allow_inactive>auth_admin</allow_inactive>
<allow_active>auth_admin_keep</allow_active>
</defaults>
</action>
</policyconfig>

View file

@ -0,0 +1,30 @@
[Unit]
Description=apt-ostree System Management Daemon
Documentation=man:apt-ostree(1)
ConditionPathExists=/ostree
RequiresMountsFor=/boot
[Service]
# See similar code in apt-ostree-countme.service
User=apt-ostree
DynamicUser=yes
# Our primary API is DBus
Type=dbus
BusName=org.projectatomic.aptostree1
# To use the read-only sysroot bits
MountFlags=slave
# We have no business accessing /var/roothome or /var/home
ProtectHome=true
NotifyAccess=main
# Significantly bump this timeout from the default because
# we do a lot of stuff on daemon startup.
TimeoutStartSec=5m
# We start this main process with full privileges; it may spawn unprivileged processes
# with the apt-ostree user.
ExecStart=+apt-ostree start-daemon
ExecReload=apt-ostree reload
# disable/enable downloading filelists
Environment="DOWNLOAD_FILELISTS=false"
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,12 @@
[Unit]
Description=apt-ostree System Management Daemon Socket
Documentation=man:apt-ostree(1)
[Socket]
ListenStream=/run/apt-ostreed.sock
SocketMode=0660
SocketUser=apt-ostree
SocketGroup=apt-ostree
[Install]
WantedBy=sockets.target