diff options
author | Norbert Morawski | 2024-05-01 17:29:33 +0200 |
---|---|---|
committer | Norbert Morawski | 2024-05-01 17:29:33 +0200 |
commit | 828ff1769b59798185ac27561716b7607714bd4c (patch) | |
tree | 19984fd5d9c6e3ddd0973eb520c9b01133d9eb2f | |
parent | 247705d1c7d98242d78600236459b49aa49b5b0a (diff) | |
download | aur-828ff1769b59798185ac27561716b7607714bd4c.tar.gz |
Update to v38.1
-rw-r--r-- | .SRCINFO | 58 | ||||
-rw-r--r-- | .gitignore | 2 | ||||
-rwxr-xr-x | PKGBUILD | 150 | ||||
-rw-r--r-- | displaylink.patch | 104 |
4 files changed, 165 insertions, 149 deletions
@@ -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 @@ -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); |