Skip to content

Commit

Permalink
Don't hardcode usr/share/rpm
Browse files Browse the repository at this point in the history
We don't need this on modern Fedora anymore for example.
If we detect the sysimage path, then just use it.
  • Loading branch information
cgwalters committed Nov 6, 2024
1 parent 0aedf55 commit a99b6ad
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 8 deletions.
18 changes: 11 additions & 7 deletions src/ostreeutil.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,24 @@

use std::path::Path;

use anyhow::Result;

/// https://github.com/coreos/rpm-ostree/pull/969/commits/dc0e8db5bd92e1f478a0763d1a02b48e57022b59
#[cfg(any(target_arch = "x86_64", target_arch = "aarch64"))]
pub(crate) const BOOT_PREFIX: &str = "usr/lib/ostree-boot";
const LEGACY_RPMOSTREE_DBPATH: &str = "usr/share/rpm";
const SYSIMAGE_RPM_DBPATH: &str = "usr/lib/sysimage/rpm";

pub(crate) fn rpm_cmd<P: AsRef<Path>>(sysroot: P) -> std::process::Command {
pub(crate) fn rpm_cmd<P: AsRef<Path>>(sysroot: P) -> Result<std::process::Command> {
let mut c = std::process::Command::new("rpm");
let sysroot = sysroot.as_ref();
let dbpath = sysroot.join("usr/share/rpm");
let dbpath_arg = {
let modern_dbpath = sysroot.join(SYSIMAGE_RPM_DBPATH);
if !modern_dbpath.try_exists()? {
let dbpath = sysroot.join(LEGACY_RPMOSTREE_DBPATH);
let mut s = std::ffi::OsString::new();
s.push("--dbpath=");
s.push(dbpath.as_os_str());
s
c.arg(s);
};
let mut c = std::process::Command::new("rpm");
c.arg(&dbpath_arg);
c
Ok(c)
}
2 changes: 1 addition & 1 deletion src/packagesystem.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ pub(crate) fn query_files<T>(
where
T: AsRef<Path>,
{
let mut c = ostreeutil::rpm_cmd(sysroot_path);
let mut c = ostreeutil::rpm_cmd(sysroot_path)?;
c.args(["-q", "--queryformat", "%{nevra},%{buildtime} ", "-f"]);
for arg in paths {
c.arg(arg.as_ref());
Expand Down

0 comments on commit a99b6ad

Please sign in to comment.