summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorNorbert Morawski2024-05-01 17:29:33 +0200
committerNorbert Morawski2024-05-01 17:29:33 +0200
commit828ff1769b59798185ac27561716b7607714bd4c (patch)
tree19984fd5d9c6e3ddd0973eb520c9b01133d9eb2f
parent247705d1c7d98242d78600236459b49aa49b5b0a (diff)
downloadaur-828ff1769b59798185ac27561716b7607714bd4c.tar.gz
Update to v38.1
-rw-r--r--.SRCINFO58
-rw-r--r--.gitignore2
-rwxr-xr-xPKGBUILD150
-rw-r--r--displaylink.patch104
4 files changed, 165 insertions, 149 deletions
diff --git a/.SRCINFO b/.SRCINFO
index bbba6f78370a..f934b1ccd31b 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,56 +1,62 @@
pkgbase = hyprland-displaylink-git
pkgdesc = A dynamic tiling Wayland compositor based on wlroots that doesn't sacrifice on its looks. (DisplayLink patch)
- pkgver = 0.30.0
+ pkgver = 0.38.1
pkgrel = 1
url = https://github.com/hyprwm/Hyprland
arch = any
license = BSD
- makedepends = git
makedepends = cmake
- makedepends = ninja
- makedepends = gcc
makedepends = gdb
+ makedepends = git
+ makedepends = jq
makedepends = meson
- makedepends = vulkan-headers
+ makedepends = ninja
+ makedepends = pkgconf
makedepends = xorgproto
- depends = libxcb
- depends = xcb-proto
- depends = xcb-util
- depends = xcb-util-keysyms
- depends = libxfixes
- depends = libx11
- depends = libxcomposite
- depends = xorg-xinput
- depends = libxrender
- depends = pixman
- depends = wayland-protocols
depends = cairo
- depends = pango
- depends = polkit
+ depends = gcc-libs
+ depends = glib2
+ depends = glibc
depends = glslang
+ depends = hyprlang
+ depends = hyprcursor
+ depends = libdisplay-info
+ depends = libdrm
+ depends = libglvnd
depends = libinput
+ depends = libliftoff
+ depends = libx11
depends = libxcb
+ depends = libxcomposite
+ depends = libxfixes
depends = libxkbcommon
+ depends = libxrender
depends = opengl-driver
+ depends = pango
depends = pixman
+ depends = polkit
+ depends = seatd
+ depends = systemd-libs
+ depends = tomlplusplus
depends = wayland
+ depends = wayland-protocols
+ depends = xcb-proto
+ depends = xcb-util
depends = xcb-util-errors
+ depends = xcb-util-keysyms
depends = xcb-util-renderutil
depends = xcb-util-wm
- depends = seatd
- depends = vulkan-icd-loader
- depends = vulkan-validation-layers
+ depends = xorg-xinput
depends = xorg-xwayland
- depends = libliftoff
- depends = libdisplay-info
+ depends = libdisplay-info.so
provides = hyprland
conflicts = hyprland
options = !makeflags
options = !buildflags
options = !strip
- source = hyprland-displaylink-git-0.30.0.tar.gz::https://github.com/hyprwm/Hyprland/releases/download/v0.30.0/source-v0.30.0.tar.gz
+ source = hyprland-displaylink-git-0.38.1.tar.gz::https://github.com/hyprwm/Hyprland/releases/download/v0.38.1/source-v0.38.1.tar.gz
source = displaylink.patch
- sha256sums = 68a79b2c1ae1a56c046e6ecf07f0b3a8135461d387f6ad0d8f0623a7f300ca80
- sha256sums = 444bcd0f95ea7955a02da1a99481f33da6f7a4c4d0e6b06d3c3bda8133671484
+ sha256sums = 1a86365cc006fca4bc96c6c41347d0bde048b6463c516e09b9c54cff58fb73ab
+ sha256sums = 8547270650479714b91dccb98aa8e4bf5095eff6acd6855a60a1929ccccc1eba
pkgname = hyprland-displaylink-git
diff --git a/.gitignore b/.gitignore
index 601a9cae3fb0..79b4154c4da5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,4 +2,4 @@
!.gitignore
!.SRCINFO
!PKGBUILD
-!displaylink.patch \ No newline at end of file
+!displaylink.patch
diff --git a/PKGBUILD b/PKGBUILD
index d305c686b3d0..e4bc3df57cfa 100755
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,86 +1,112 @@
-# Maintainer: Julian Poidevin <poidevin dot julian at gmail dot com>
+# Maintainer: sandwich <sandwich at archworks dot co>
+# Contributor: Clément POIRET <poiret dot clement at outlook dot fr>
+# Contributor: Julian Poidevin <poidevin dot julian at gmail dot com>
_pkgname="hyprland"
pkgname="${_pkgname}-displaylink-git"
-pkgver="0.30.0"
+pkgver="0.38.1"
pkgrel=1
pkgdesc="A dynamic tiling Wayland compositor based on wlroots that doesn't sacrifice on its looks. (DisplayLink patch)"
arch=(any)
url="https://github.com/hyprwm/Hyprland"
license=('BSD')
depends=(
- libxcb
- xcb-proto
- xcb-util
- xcb-util-keysyms
- libxfixes
- libx11
- libxcomposite
- xorg-xinput
- libxrender
- pixman
- wayland-protocols
- cairo
- pango
- polkit
- glslang
- libinput
- libxcb
- libxkbcommon
- opengl-driver
- pixman
- wayland
- xcb-util-errors
- xcb-util-renderutil
- xcb-util-wm
- seatd
- vulkan-icd-loader
- vulkan-validation-layers
- xorg-xwayland
- libliftoff
- libdisplay-info)
+ cairo
+ gcc-libs
+ glib2
+ glibc
+ glslang
+ hyprlang
+ hyprcursor
+ libdisplay-info
+ libdrm
+ libglvnd
+ libinput
+ libliftoff
+ libx11
+ libxcb
+ libxcomposite
+ libxfixes
+ libxkbcommon
+ libxrender
+ opengl-driver
+ pango
+ pixman
+ polkit
+ seatd
+ systemd-libs
+ tomlplusplus
+ wayland
+ wayland-protocols
+ xcb-proto
+ xcb-util
+ xcb-util-errors
+ xcb-util-keysyms
+ xcb-util-renderutil
+ xcb-util-wm
+ xorg-xinput
+ xorg-xwayland
+)
+depends+=(libdisplay-info.so)
makedepends=(
- git
- cmake
- ninja
- gcc
- gdb
- meson
- vulkan-headers
- xorgproto)
-source=("${pkgname}-${pkgver}.tar.gz::https://github.com/hyprwm/Hyprland/releases/download/v${pkgver}/source-v${pkgver}.tar.gz"
- "displaylink.patch")
+ cmake
+ gdb
+ git
+ jq
+ meson
+ ninja
+ pkgconf
+ xorgproto
+)
+source=(
+ "${pkgname}-${pkgver}.tar.gz::https://github.com/hyprwm/Hyprland/releases/download/v${pkgver}/source-v${pkgver}.tar.gz"
+ "displaylink.patch"
+ )
conflicts=("${_pkgname}")
provides=(hyprland)
-sha256sums=('68a79b2c1ae1a56c046e6ecf07f0b3a8135461d387f6ad0d8f0623a7f300ca80'
- '444bcd0f95ea7955a02da1a99481f33da6f7a4c4d0e6b06d3c3bda8133671484')
+sha256sums=('1a86365cc006fca4bc96c6c41347d0bde048b6463c516e09b9c54cff58fb73ab'
+ '8547270650479714b91dccb98aa8e4bf5095eff6acd6855a60a1929ccccc1eba')
options=(!makeflags !buildflags !strip)
prepare() {
cd "$srcdir/hyprland-source"
- patch --directory="$srcdir/hyprland-source/subprojects/wlroots/" --forward --strip=0 \
- --input="${srcdir}/displaylink.patch"
+ patch --directory="$srcdir/hyprland-source/subprojects/wlroots/" --forward --strip=1 \
+ --input="$srcdir/displaylink.patch"
}
build() {
cd "$srcdir/hyprland-source"
- make fixwlr
- cd "./subprojects/wlroots/" && meson build/ --prefix="${srcdir}/tmpwlr" --buildtype=release && ninja -C build/ && mkdir -p "${srcdir}/tmpwlr" && ninja -C build/ install && cd ../
- cd udis86 && cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -H./ -B./build -G Ninja && cmake --build ./build --config Release --target all -j$(shell nproc) && cd ../..
- make protocols
- make release
- cd ./hyprctl && make all && cd ..
+
+ meson setup build \
+ --prefix /usr \
+ --libexecdir lib \
+ --sbindir bin \
+ --buildtype release \
+ --wrap-mode nodownload \
+ -D b_lto=true \
+ -D b_pie=true \
+ -D default_library=shared \
+ -D xwayland=enabled \
+ -D systemd=enabled
+
+ meson compile -C build
}
package() {
- cd "$srcdir"
- mkdir -p "${pkgdir}/usr/share/wayland-sessions"
- mkdir -p "${pkgdir}/usr/share/hyprland"
- install -Dm755 hyprland-source/build/Hyprland -t "${pkgdir}/usr/bin"
- install -Dm755 hyprland-source/hyprctl/hyprctl -t "${pkgdir}/usr/bin"
- install -Dm644 hyprland-source/assets/*.png -t "${pkgdir}/usr/share/hyprland"
- install -Dm644 hyprland-source/example/hyprland.desktop -t "${pkgdir}/usr/share/wayland-sessions"
- install -Dm644 hyprland-source/example/hyprland.conf -t "${pkgdir}/usr/share/hyprland"
- install -Dm644 hyprland-source/LICENSE -t "${pkgdir}/usr/share/licenses/${_pkgname}"
- install -Dm755 "${srcdir}/tmpwlr/lib/libwlroots.so.12032" -t "${pkgdir}/usr/lib"
+ cd "$srcdir/hyprland-source"
+
+ meson install -C build \
+ --destdir "$pkgdir" \
+ --skip-subprojects hyprland-protocols
+
+ mkdir "$pkgdir/usr/include/hyprland/wlroots"
+ mv "$pkgdir/usr/include/wlr" "$pkgdir/usr/include/hyprland/wlroots"
+
+ # resolve conflicts with system wlr
+ rm -f "$pkgdir/usr/lib/libwlroots.so"
+ rm -rf "$pkgdir/usr/lib/pkgconfig"
+ rm -rf "$pkgdir/usr/share/xdg-desktop-portal"
+
+ # license
+ install -Dm0644 -t "$pkgdir/usr/share/licenses/${pkgname}" LICENSE
}
diff --git a/displaylink.patch b/displaylink.patch
index e0327cb7f477..dcdef7a129c9 100644
--- a/displaylink.patch
+++ b/displaylink.patch
@@ -1,64 +1,48 @@
-diff --unified --recursive --text hyprland-test/src/hyprland-source/subprojects/wlroots/render/egl.c hyprland-git/src/hyprland-source/subprojects/wlroots/render/egl.c
---- render/egl.c 2023-05-14 11:18:56.598893482 +1000
-+++ render/egl.c 2022-10-23 11:16:25.923036282 +1000
-@@ -492,25 +492,41 @@
- }
-
- static int open_render_node(int drm_fd) {
-- char *render_name = drmGetRenderDeviceNameFromFd(drm_fd);
-- if (render_name == NULL) {
-- // This can happen on split render/display platforms, fallback to
-- // primary node
-- render_name = drmGetPrimaryDeviceNameFromFd(drm_fd);
-- if (render_name == NULL) {
-- wlr_log_errno(WLR_ERROR, "drmGetPrimaryDeviceNameFromFd failed");
-- return -1;
-- }
-- wlr_log(WLR_DEBUG, "DRM device '%s' has no render node, "
-- "falling back to primary node", render_name);
-- }
--
-- int render_fd = open(render_name, O_RDWR | O_CLOEXEC);
-- if (render_fd < 0) {
-- wlr_log_errno(WLR_ERROR, "Failed to open DRM node '%s'", render_name);
-- }
-- free(render_name);
-- return render_fd;
-+ char* render_name = drmGetRenderDeviceNameFromFd(drm_fd);
-+ if (render_name == NULL) {
-+ // This can happen on split render/display platforms, fallback to
-+ // primary node
-+ render_name = drmGetPrimaryDeviceNameFromFd(drm_fd);
-+ if (render_name == NULL) {
-+ wlr_log_errno(WLR_ERROR, "drmGetPrimaryDeviceNameFromFd failed");
-+ return -1;
-+ }
-+ wlr_log(WLR_DEBUG,
-+ "DRM device '%s' has no render node, "
-+ "falling back to primary node",
-+ render_name);
+diff --git a/render/egl.c b/render/egl.c
+index 8a1e6dae..d0e6adb6 100644
+--- a/render/egl.c
++++ b/render/egl.c
+@@ -508,8 +508,43 @@ static int open_render_node(int drm_fd) {
+ }
+ wlr_log(WLR_DEBUG, "DRM device '%s' has no render node, "
+ "falling back to primary node", render_name);
+
-+ drmVersion* render_version = drmGetVersion(drm_fd);
-+ if (render_version != NULL && render_version->name != NULL) {
-+ wlr_log(WLR_DEBUG, "DRM device version.name '%s'", render_version->name);
-+ if (strcmp(render_version->name, "evdi") == 0) {
-+ free(render_name);
-+ render_name = malloc(sizeof(char) * 15);
-+ strcpy(render_name, "/dev/dri/card0");
-+ }
++ drmVersion *render_version = drmGetVersion(drm_fd);
++ if (render_version != NULL && render_version->name != NULL) {
++ wlr_log(WLR_DEBUG, "DRM device version.name '%s'", render_version->name);
++ if (strcmp(render_version->name, "evdi") == 0) {
++ free(render_name);
+
-+ drmFreeVersion(render_version);
-+ }
-+ }
++ uint32_t flags = 0;
++ const int devices_len = drmGetDevices2(flags, NULL, 0);
++ if (devices_len < 0) {
++ wlr_log(WLR_ERROR, "drmGetDevices2 failed: %s", strerror(-devices_len));
++ return -1;
++ }
+
-+ wlr_log(WLR_DEBUG, "open_render_node() DRM device '%s'", render_name);
++ const char *render_devices[] = {
++ "/dev/dri/card0",
++ "/dev/dri/card1",
++ "/dev/dri/card2",
++ "/dev/dri/card3",
++ "/dev/dri/card4",
++ "/dev/dri/card5",
++ "/dev/dri/card6",
++ "/dev/dri/card7",
++ "/dev/dri/card8",
++ "/dev/dri/card9",
++ NULL
++ };
+
-+ int render_fd = open(render_name, O_RDWR | O_CLOEXEC);
-+ if (render_fd < 0) {
-+ wlr_log_errno(WLR_ERROR, "Failed to open DRM node '%s'", render_name);
-+ }
-+ free(render_name);
-+ return render_fd;
- }
-
- struct wlr_egl *wlr_egl_create_with_drm_fd(int drm_fd) {
++ render_name = malloc(sizeof(char)*15);
++ render_name = strcpy(render_name, render_devices[env_parse_switch("WLR_EVDI_RENDER_DEVICE", render_devices)]);
++ }
++ drmFreeVersion(render_version);
++ }
+ }
+
++ wlr_log(WLR_DEBUG, "open_render_node() DRM device '%s'", render_name);
++
+ int render_fd = open(render_name, O_RDWR | O_CLOEXEC);
+ if (render_fd < 0) {
+ wlr_log_errno(WLR_ERROR, "Failed to open DRM node '%s'", render_name);