feat: add LACT_PCI_DB_PATH env variable, use pci db from runtime in flatpak service (#558)

This commit is contained in:
Ilya Zlobintsev
2025-04-27 15:33:51 +03:00
committed by GitHub
parent 44d631ac3d
commit 03b5283d92
3 changed files with 19 additions and 6 deletions
+10 -2
View File
@@ -1021,8 +1021,16 @@ async fn apply_config_to_controllers(
Ok(())
}
fn read_pci_db() -> Database {
Database::read().unwrap_or_else(|err| {
pub(crate) fn read_pci_db() -> Database {
let result = if let Some(db_path) = env::var("LACT_PCI_DB_PATH")
.ok()
.filter(|value| !value.is_empty())
{
Database::read_from_file(db_path)
} else {
Database::read()
};
result.unwrap_or_else(|err| {
warn!("could not read PCI ID database: {err}, device information will be limited");
Database {
vendors: HashMap::new(),
+6 -3
View File
@@ -1,6 +1,9 @@
mod mock_fs;
use crate::{config::Config, server::handler::Handler};
use crate::{
config::Config,
server::handler::{read_pci_db, Handler},
};
use insta::{assert_debug_snapshot, assert_json_snapshot};
use lact_schema::config::GpuConfig;
use mock_fs::MockSysfs;
@@ -20,7 +23,7 @@ async fn snapshot_everything() {
init_tracing();
let test_data_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("src/tests/data");
let pci_db = pciid_parser::Database::read().unwrap();
let pci_db = read_pci_db();
for vendor_dir in fs::read_dir(test_data_dir).unwrap().flatten() {
for device_dir in fs::read_dir(vendor_dir.path()).unwrap().flatten() {
@@ -52,7 +55,7 @@ async fn apply_settings() {
let local_set = LocalSet::new();
local_set.spawn_local(async move {
let test_data_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("src/tests/data");
let pci_db = pciid_parser::Database::read().unwrap();
let pci_db = read_pci_db();
for vendor_dir in fs::read_dir(test_data_dir).unwrap().flatten() {
for device_dir in fs::read_dir(vendor_dir.path()).unwrap().flatten() {
+3 -1
View File
@@ -38,7 +38,9 @@ fn generate_daemon_cmd(info: &Ini) -> anyhow::Result<()> {
let app_bin_path = format!("{app_path}/bin");
let library_paths = format!("{app_path}/lib:{app_path}/drm/lib:{runtime_lib_path}");
println!("{ld_path} --library-path {library_paths} {app_bin_path}/lact daemon");
let pci_db_path = format!("{runtime_path}/share/hwdata/pci.ids");
println!("env LACT_PCI_DB_PATH={pci_db_path} {ld_path} --library-path {library_paths} {app_bin_path}/lact daemon");
Ok(())
}