feat: more depchecks and packages

This commit is contained in:
Gabriele Musco 2023-10-09 07:59:59 +02:00
parent 96d99f2480
commit ff3e408cf4
No known key found for this signature in database
GPG key ID: 1068D795C80E51DE
3 changed files with 94 additions and 35 deletions

View file

@ -50,21 +50,28 @@ impl Display for DependencyCheckResult {
fn shared_obj_paths() -> Vec<String> {
vec![
"/lib".to_string(),
"/usr/lib".to_string(),
"/usr/lib64".to_string(),
"/usr/local/lib".to_string(),
"/usr/local/lib64".to_string(),
"/usr/lib/x86_64-linux-gnu".to_string(),
"/usr/lib/aarch64-linux-gnu".to_string(),
"/lib/x86_64-linux-gnu".to_string(),
"/lib/aarch64-linux-gnu".to_string(),
"/app/lib".to_string(),
"/lib".into(),
"/usr/lib".into(),
"/usr/lib64".into(),
"/usr/local/lib".into(),
"/usr/local/lib64".into(),
"/usr/lib/x86_64-linux-gnu".into(),
"/usr/lib/aarch64-linux-gnu".into(),
"/lib/x86_64-linux-gnu".into(),
"/lib/aarch64-linux-gnu".into(),
"/app/lib".into(),
]
}
fn include_paths() -> Vec<String> {
vec!["/usr/include".to_string(), "/usr/local/include".to_string()]
vec![
"/usr/include".into(),
"/usr/local/include".into(),
// fedora puts avcodec here
"/usr/include/ffmpeg".into(),
"/usr/include/x86_64-linux-gnu".into(),
"/usr/include/aarch64-linux-gnu".into(),
]
}
pub fn check_dependency(dep: Dependency) -> bool {

View file

@ -19,69 +19,116 @@ fn wivrn_deps() -> Vec<Dependency> {
]),
},
Dependency {
name: "avahi-client-dev".into(),
name: "avahi".into(),
dep_type: DepType::Include,
filename: "avahi-client/client.h".into(),
packages: HashMap::from([]), // TODO
packages: HashMap::from([
(LinuxDistro::Arch, "avahi".into()),
(LinuxDistro::Debian, "libavahi-client-dev".into()),
(LinuxDistro::Fedora, "avahi-devel".into()),
]),
},
Dependency {
name: "libpulse-dev".into(),
dep_type: DepType::Include,
filename: "pulse/context.h".into(),
packages: HashMap::from([]), // TODO
packages: HashMap::from([
(LinuxDistro::Arch, "libpulse".into()),
(LinuxDistro::Debian, "libpulse-dev".into()),
(LinuxDistro::Fedora, "pulseaudio-libs-devel".into()),
]),
},
dep_eigen(),
Dependency {
name: "nlohmann-json".into(),
dep_type: DepType::Include,
filename: "nlohmann/json.hpp".into(),
packages: HashMap::from([]), // TODO
packages: HashMap::from([
(LinuxDistro::Arch, "nlohmann-json".into()),
(LinuxDistro::Debian, "nlohmann-json3-dev".into()),
(LinuxDistro::Fedora, "json-devel".into()),
]),
},
Dependency {
name: "libavcodec-dev".into(),
dep_type: DepType::Include,
filename: "libavcodec/avcodec.h".into(),
packages: HashMap::from([
(LinuxDistro::Arch, "ffmpeg".into()),
(LinuxDistro::Debian, "libavcodec-dev".into()),
(LinuxDistro::Fedora, "libavcodec-devel".into()),
]),
},
Dependency {
name: "libavfilter-dev".into(),
dep_type: DepType::Include,
filename: "libavfilter/avfilter.h".into(),
packages: HashMap::from([
(LinuxDistro::Arch, "ffmpeg".into()),
(LinuxDistro::Debian, "libavfilter-dev".into()),
(LinuxDistro::Fedora, "libavfilter-devel".into()),
]),
},
Dependency {
name: "libswscale-dev".into(),
dep_type: DepType::Include,
filename: "libswscale/swscale.h".into(),
packages: HashMap::from([
(LinuxDistro::Arch, "ffmpeg".into()),
(LinuxDistro::Debian, "libswscale-dev".into()),
(LinuxDistro::Fedora, "libswscale-devel".into()),
]),
},
// Dependency {
// name: "libavcodec-dev".into(),
// dep_type: DepType::Include,
// filename: "libavcodec/avcodec.h".into(),
// },
// Dependency {
// name: "libavfilter-dev".into(),
// dep_type: DepType::Include,
// filename: "libavfilter/avfilter.h".into(),
// },
// Dependency {
// name: "libswscale-dev".into(),
// dep_type: DepType::Include,
// filename: "libswscale/swscale.h".into(),
// },
dep_glslang_validator(),
Dependency {
name: "libudev".into(),
dep_type: DepType::Include,
filename: "libudev.h".into(),
packages: HashMap::from([]), // TODO
packages: HashMap::from([
(LinuxDistro::Arch, "systemd-libs".into()),
(LinuxDistro::Debian, "libudev-dev".into()),
(LinuxDistro::Fedora, "systemd-devel".into()),
]),
},
Dependency {
name: "gstreamer".into(),
dep_type: DepType::SharedObject,
filename: "libgstreamer-1.0.so".into(),
packages: HashMap::from([]), // TODO
packages: HashMap::from([
(LinuxDistro::Arch, "gstreamer".into()),
(LinuxDistro::Debian, "libgstreamer1.0-dev".into()),
(LinuxDistro::Fedora, "gstreamer1-devel".into()),
]),
},
Dependency {
name: "gst-plugins-base-libs".into(),
dep_type: DepType::SharedObject,
filename: "pkgconfig/gstreamer-app-1.0.pc".into(),
packages: HashMap::from([]), // TODO
packages: HashMap::from([
(LinuxDistro::Arch, "gst-plugins-base-libs".into()),
(LinuxDistro::Debian, "libgstreamer1.0-dev".into()),
(LinuxDistro::Fedora, "gstreamer1-devel".into()),
]),
},
Dependency {
name: "systemd-dev".into(),
dep_type: DepType::Include,
filename: "systemd/sd-daemon.h".into(),
packages: HashMap::from([]), // TODO
packages: HashMap::from([
(LinuxDistro::Arch, "systemd-libs".into()),
(LinuxDistro::Debian, "libsystemd-dev".into()),
(LinuxDistro::Fedora, "systemd-devel".into()),
]),
},
Dependency {
name: "libva-dev".into(),
dep_type: DepType::Include,
filename: "va/va.h".into(),
packages: HashMap::from([]), // TODO
packages: HashMap::from([
(LinuxDistro::Arch, "libva".into()),
(LinuxDistro::Debian, "libva-dev".into()),
(LinuxDistro::Fedora, "libva-devel".into()),
]),
},
]
}

View file

@ -8,6 +8,7 @@ pub enum LinuxDistro {
Arch,
Debian,
Fedora,
Gentoo,
}
pub fn get_distro() -> Option<LinuxDistro> {
@ -26,12 +27,16 @@ pub fn get_distro() -> Option<LinuxDistro> {
|| buf.contains("ubuntu")
|| buf.contains("mint")
|| buf.contains("elementary")
|| buf.contains("pop")
{
return Some(LinuxDistro::Debian);
}
if buf.contains("fedora") || buf.contains("nobara") {
return Some(LinuxDistro::Fedora);
}
if buf.contains("gentoo") {
return Some(LinuxDistro::Gentoo);
}
if buf.contains("alpine") || buf.contains("postmarket") {
return Some(LinuxDistro::Alpine);
}