From 27211c71e92e1bacf111d8a815e958f80969ce6e Mon Sep 17 00:00:00 2001 From: Mihai Fufezan Date: Sun, 22 Sep 2024 21:20:35 +0300 Subject: [PATCH] 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. --- meson.build | 4 ---- nix/default.nix | 8 ++------ nix/overlays.nix | 17 +++++++++++++++++ src/meson.build | 6 +++++- subprojects/udis86.wrap | 5 +++++ 5 files changed, 29 insertions(+), 11 deletions(-) create mode 100644 subprojects/udis86.wrap diff --git a/meson.build b/meson.build index 9449c241..42ed519d 100644 --- a/meson.build +++ b/meson.build @@ -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 diff --git a/nix/default.nix b/nix/default.nix index 85a3105d..df270f28 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -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 diff --git a/nix/overlays.nix b/nix/overlays.nix index 71b5f59f..2b2788e7 100644 --- a/nix/overlays.nix +++ b/nix/overlays.nix @@ -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 = []; + }); + }; } diff --git a/src/meson.build b/src/meson.build index da46c38c..7c71a735 100644 --- a/src/meson.build +++ b/src/meson.build @@ -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'), diff --git a/subprojects/udis86.wrap b/subprojects/udis86.wrap new file mode 100644 index 00000000..dfb63984 --- /dev/null +++ b/subprojects/udis86.wrap @@ -0,0 +1,5 @@ +[wrap-file] +method = cmake + +[provide] +udis86 = libudis86_dep