aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMihai Fufezan <[email protected]>2024-09-22 21:20:35 +0300
committerMihai Fufezan <[email protected]>2024-09-27 00:07:52 +0300
commit27211c71e92e1bacf111d8a815e958f80969ce6e (patch)
treeeb3600df8383225540304fbb35e1ba8fa90fc5e7
parent14942bca60cc7d85e8238a151bd444112601ebe6 (diff)
downloadHyprland-27211c71e92e1bacf111d8a815e958f80969ce6e.tar.gz
Hyprland-27211c71e92e1bacf111d8a815e958f80969ce6e.zip
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.
-rw-r--r--meson.build4
-rw-r--r--nix/default.nix8
-rw-r--r--nix/overlays.nix17
-rw-r--r--src/meson.build6
-rw-r--r--subprojects/udis86.wrap5
5 files changed, 29 insertions, 11 deletions
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