Meson: try to find udis86 through pkgconfig, fallback to subproject

Only the fork provides a .pc file, so there's no risk of linking the wrong
lib version. If pkg-config can't find it (most cases), fall back to using
the subproject through the wrap file.
This commit is contained in:
Mihai Fufezan 2024-09-22 21:20:35 +03:00
parent 14942bca60
commit 27211c71e9
5 changed files with 29 additions and 11 deletions

View file

@ -43,10 +43,6 @@ xcb_xfixes_dep = dependency('xcb-xfixes', required: get_option('xwayland'))
gio_dep = dependency('gio-2.0', required: true)
cmake = import('cmake')
udis = cmake.subproject('udis86')
udis86 = udis.dependency('libudis86')
if not xcb_dep.found()
add_project_arguments('-DNO_XWAYLAND', language: 'cpp')
endif

View file

@ -6,7 +6,6 @@
pkgconf,
makeWrapper,
meson,
cmake,
ninja,
aquamarine,
binutils,
@ -17,7 +16,6 @@
hyprlang,
hyprutils,
hyprwayland-scanner,
jq,
libGL,
libdrm,
libexecinfo,
@ -27,9 +25,9 @@
mesa,
pango,
pciutils,
python3,
systemd,
tomlplusplus,
udis86-hyprland,
wayland,
wayland-protocols,
wayland-scanner,
@ -96,13 +94,10 @@ in
nativeBuildInputs = [
hyprwayland-scanner
jq
makeWrapper
meson
cmake
ninja
pkg-config
python3 # for udis86
];
outputs = [
@ -129,6 +124,7 @@ in
pango
pciutils
tomlplusplus
udis86-hyprland
wayland
wayland-protocols
wayland-scanner

View file

@ -26,6 +26,7 @@ in {
inputs.hyprlang.overlays.default
inputs.hyprutils.overlays.default
inputs.hyprwayland-scanner.overlays.default
self.overlays.udis86
# Hyprland packages themselves
(final: prev: let
@ -64,4 +65,20 @@ in {
hyprland-extras = lib.composeManyExtensions [
inputs.xdph.overlays.xdg-desktop-portal-hyprland
];
# udis86 from nixpkgs is too old, and also does not provide a .pc file
# this version is the one used in the git submodule, and allows us to
# fetch the source without '?submodules=1'
udis86 = final: prev: {
udis86-hyprland = prev.udis86.overrideAttrs (self: super: {
src = final.fetchFromGitHub {
owner = "canihavesomecoffee";
repo = "udis86";
rev = "5336633af70f3917760a6d441ff02d93477b0c86";
hash = "sha256-HifdUQPGsKQKQprByeIznvRLONdOXeolOsU5nkwIv3g=";
};
patches = [];
});
};
}

View file

@ -31,7 +31,11 @@ executable(
backtrace_dep,
epoll_dep,
gio_dep,
udis86,
# Try to find canihavesomecoffee's udis86 using pkgconfig
# vmt/udis86 does not provide a .pc file and won't be detected this way
# Falls back to using the subproject through udis86.wrap
dependency('udis86'),
dependency('pixman-1'),
dependency('gl', 'opengl'),

5
subprojects/udis86.wrap Normal file
View file

@ -0,0 +1,5 @@
[wrap-file]
method = cmake
[provide]
udis86 = libudis86_dep