diff --git a/src/depcheck.rs b/src/depcheck.rs index 925e834..62524b7 100644 --- a/src/depcheck.rs +++ b/src/depcheck.rs @@ -50,21 +50,28 @@ impl Display for DependencyCheckResult { fn shared_obj_paths() -> Vec { 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 { - 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 { diff --git a/src/dependencies/wivrn_deps.rs b/src/dependencies/wivrn_deps.rs index 2a10e9c..1909878 100644 --- a/src/dependencies/wivrn_deps.rs +++ b/src/dependencies/wivrn_deps.rs @@ -19,69 +19,116 @@ fn wivrn_deps() -> Vec { ]), }, 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()), + ]), }, ] } diff --git a/src/linux_distro.rs b/src/linux_distro.rs index 8ef709b..d866289 100644 --- a/src/linux_distro.rs +++ b/src/linux_distro.rs @@ -8,6 +8,7 @@ pub enum LinuxDistro { Arch, Debian, Fedora, + Gentoo, } pub fn get_distro() -> Option { @@ -26,12 +27,16 @@ pub fn get_distro() -> Option { || 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); }