diff --git a/Revert-layer-shell-error-on-0-dimension-without-anch.patch b/Revert-layer-shell-error-on-0-dimension-without-anch.patch new file mode 100644 index 0000000..a9112d9 --- /dev/null +++ b/Revert-layer-shell-error-on-0-dimension-without-anch.patch @@ -0,0 +1,33 @@ +From e021326f7de0505fcae85f5732885848b21edf9c Mon Sep 17 00:00:00 2001 +From: Aleksei Bavshin +Date: Sat, 25 Jun 2022 21:22:08 -0700 +Subject: [PATCH] Revert "layer-shell: error on 0 dimension without anchors" + +This reverts commit 8dec751a6d84335fb04288b8efab6dd5c90288d3. +--- + types/wlr_layer_shell_v1.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/types/wlr_layer_shell_v1.c b/types/wlr_layer_shell_v1.c +index 2d838498..c3c50d78 100644 +--- a/types/wlr_layer_shell_v1.c ++++ b/types/wlr_layer_shell_v1.c +@@ -358,6 +358,7 @@ static void layer_surface_role_client_commit(struct wlr_surface *wlr_surface) { + + uint32_t anchor = surface->pending.anchor; + ++#if 0 + const uint32_t horiz = ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT | + ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT; + if (surface->pending.desired_width == 0 && (anchor & horiz) != horiz) { +@@ -375,6 +376,7 @@ static void layer_surface_role_client_commit(struct wlr_surface *wlr_surface) { + "height 0 requested without setting top and bottom anchors"); + return; + } ++#endif + + if ((anchor & surface->pending.exclusive_edge) != surface->pending.exclusive_edge) { + wlr_surface_reject_pending(wlr_surface, surface->resource, +-- +2.49.0 + diff --git a/examples.meson.build b/examples.meson.build index 41782c5..b738157 100644 --- a/examples.meson.build +++ b/examples.meson.build @@ -1,82 +1,139 @@ +# Client examples are now available from a separate repository, +# https://gitlab.freedesktop.org/wlroots/wlr-clients project( - 'wlroots-examples', - 'c', - meson_version: '>=0.51.2', - default_options: [ - 'c_std=c11', - 'warning_level=2', - 'werror=false', - ], + 'wlroots-examples', + 'c', + meson_version: '>=0.58.0', + default_options: [ + 'c_std=c11', + 'warning_level=2', + 'werror=false', + ], ) -cc = meson.get_compiler('c') -add_global_arguments('-DWLR_USE_UNSTABLE', language : 'c') +add_project_arguments([ + '-D_POSIX_C_SOURCE=200809L', + '-DWLR_USE_UNSTABLE', +], language: 'c') -wlroots = dependency('wlroots') -wayland_client = dependency('wayland-client') -wayland_server = dependency('wayland-server') +cc = meson.get_compiler('c') + +add_project_arguments(cc.get_supported_arguments([ + '-Wno-missing-braces', + '-Wno-missing-field-initializers', + '-Wno-unused-parameter' +]), language: 'c') + +cairo = dependency('cairo') +drm = dependency('libdrm') +egl = dependency('egl') glesv2 = dependency('glesv2') +# Only needed for drm_fourcc.h +libdrm = dependency('libdrm').partial_dependency(compile_args: true, includes: true) +wayland_client = dependency('wayland-client') +wayland_egl = dependency('wayland-egl') +wayland_protos = dependency('wayland-protocols', version: '>=1.27') +wayland_scanner_dep = dependency('wayland-scanner', native: true) +wayland_scanner = find_program( + wayland_scanner_dep.get_variable('wayland_scanner'), + native: true, +) +wayland_server = dependency('wayland-server') +wlroots = dependency('wlroots-0.20') xkbcommon = dependency('xkbcommon') -wlr_protos = dependency('wlroots') -rt = cc.find_library('rt') +wl_protocol_dir = wayland_protos.get_variable('pkgdatadir') -# epoll is a separate library in FreeBSD -if host_machine.system() == 'freebsd' - libepoll = [dependency('epoll-shim')] -else - libepoll = [] -endif +protocols = { + # Stable upstream protocols + 'xdg-shell': wl_protocol_dir / 'stable/xdg-shell/xdg-shell.xml', +} -libpng = dependency('libpng', required: false, disabler: true) +protocols_code = {} +protocols_server_header = {} +protocols_client_header = {} -examples = { +foreach name, path : protocols + code = custom_target( + name.underscorify() + '_c', + input: path, + output: '@BASENAME@-protocol.c', + command: [wayland_scanner, 'private-code', '@INPUT@', '@OUTPUT@'], + ) + + server_header = custom_target( + name.underscorify() + '_server_h', + input: path, + output: '@BASENAME@-protocol.h', + command: [wayland_scanner, 'server-header', '@INPUT@', '@OUTPUT@'], + ) + + client_header = custom_target( + name.underscorify() + '_client_h', + input: path, + output: '@BASENAME@-client-protocol.h', + command: [wayland_scanner, 'client-header', '@INPUT@', '@OUTPUT@'], + build_by_default: false, + ) + + protocols_code += { name: code } + protocols_server_header += { name: server_header } + protocols_client_header += { name: client_header } +endforeach + + +compositors = { 'simple': { 'src': 'simple.c', - 'dep': [wlroots, wayland_server, glesv2, xkbcommon], }, 'pointer': { 'src': 'pointer.c', - 'dep': [wlroots, wayland_server, xkbcommon], }, 'touch': { 'src': ['touch.c', 'cat.c'], - 'dep': [wlroots, wayland_server, xkbcommon], }, 'tablet': { 'src': 'tablet.c', - 'dep': [wlroots, wayland_server, xkbcommon], }, 'rotation': { 'src': ['rotation.c', 'cat.c'], - 'dep': [wlroots, wayland_server, xkbcommon], - }, - 'multi-pointer': { - 'src': 'multi-pointer.c', - 'dep': [wlroots, wayland_server, glesv2, xkbcommon], }, 'output-layout': { 'src': ['output-layout.c', 'cat.c'], - 'dep': [wlroots, wayland_server, xkbcommon], }, - 'screencopy': { - 'src': 'screencopy.c', - 'dep': [libpng, wayland_client, wlr_protos, rt], + 'scene-graph': { + 'src': 'scene-graph.c', + 'proto': ['xdg-shell'], + }, + 'output-layers': { + 'src': 'output-layers.c', + 'proto': [ + 'xdg-shell', + ], + }, + 'cairo-buffer': { + 'src': 'cairo-buffer.c', + 'dep': cairo, + }, + 'embedded': { + 'src': [ + 'embedded.c', + protocols_code['xdg-shell'], + protocols_client_header['xdg-shell'], + ], + 'dep': [wayland_client, wayland_egl, egl, glesv2], }, } -foreach name, info : examples - all_dep_found = true - foreach d : info.get('dep') - all_dep_found = all_dep_found and d.found() +foreach name, info : compositors + extra_src = [] + foreach p : info.get('proto', []) + extra_src += protocols_server_header[p] endforeach - if all_dep_found - executable( - name, - info.get('src'), - dependencies: info.get('dep'), - ) - else - warning('Dependencies not satisfied for ' + name) - endif + + executable( + name, + [info.get('src'), extra_src], + dependencies: [libdrm, wlroots, wayland_server, xkbcommon, info.get('dep', [])], + ) endforeach diff --git a/gpgkey-0FDE7BE0E88F5E48.gpg b/gpgkey-0FDE7BE0E88F5E48.gpg index c8c4240..3530f32 100644 Binary files a/gpgkey-0FDE7BE0E88F5E48.gpg and b/gpgkey-0FDE7BE0E88F5E48.gpg differ diff --git a/sources b/sources index 749c526..c7cac09 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (wlroots-0.13.0.tar.gz) = 1c942a6b8a628383e2b68cd9096d3525021347c5c363a8239a3b4fb0d5736ffcd3e2c1333fdd7d95ecf214dd04bf01062b4f1b4fbbcd88d1d086a55261ca0c82 -SHA512 (wlroots-0.13.0.tar.gz.sig) = 85cb0ac339ea00d328171b6a7266797a662020815ffff150d593ed997b5e256d7f3839bcaedc37c0fc098f101671fc863fe15ad1054537799456fc7878a5ef38 +SHA512 (wlroots-0.20.2.tar.gz) = 634345e23d0b6c28cb501c0dd0ef9c50d529a92ae5c8455e99e876f3f37ee244ac19dd097f76416b2ae4fd7c3f02e39a92a9322cf5a0caf8da21c31cd900e508 +SHA512 (wlroots-0.20.2.tar.gz.sig) = e74dc0abfabed7f40ba4f0e5edfc30ef92b95ebcf4a6aca3b2a605b04b5f2345a6a842cdf56819ce1f050c6181b646eae19dbef835354df7b09562cebbdaa474 diff --git a/wlroots.spec b/wlroots.spec index de19b93..0ce3b16 100644 --- a/wlroots.spec +++ b/wlroots.spec @@ -1,23 +1,34 @@ # Version of the .so library -%global abi_ver 8 +%global abi_ver 0.20 +# libliftoff does not bump soname on API changes +%global liftoff_ver 0.5.0 Name: wlroots -Version: 0.13.0 -Release: 1%{?dist} +Version: 0.20.2 +Release: 2%{?dist} Summary: A modular Wayland compositor library +%global tag %{gsub %{version} ~ -} + # Source files/overall project licensed as MIT, but -# - LGPLv2.1+ -# * protocol/idle.xml +# - HPND-sell-variant +# * protocol/drm.xml +# * protocol/wlr-data-control-unstable-v1.xml +# * protocol/wlr-foreign-toplevel-management-unstable-v1.xml +# * protocol/wlr-gamma-control-unstable-v1.xml +# * protocol/wlr-input-inhibitor-unstable-v1.xml +# * protocol/wlr-layer-shell-unstable-v1.xml +# * protocol/wlr-output-management-unstable-v1.xml +# - LGPL-2.1-or-later # * protocol/server-decoration.xml # Those files are processed to C-compilable files by the # `wayland-scanner` binary during build and don't alter # the main license of the binaries linking with them by # the underlying licenses. License: MIT -URL: https://github.com/swaywm/%{name} -Source0: %{url}/releases/download/%{version}/%{name}-%{version}.tar.gz -Source1: %{url}/releases/download/%{version}/%{name}-%{version}.tar.gz.sig +URL: https://gitlab.freedesktop.org/wlroots/wlroots +Source0: %{url}/-/releases/%{tag}/downloads/%{name}-%{tag}.tar.gz +Source1: %{url}/-/releases/%{tag}/downloads/%{name}-%{tag}.tar.gz.sig # 0FDE7BE0E88F5E48: emersion Source2: https://emersion.fr/.well-known/openpgpkey/hu/dj3498u4hyyarh35rkjfnghbjxug6b19#/gpgkey-0FDE7BE0E88F5E48.gpg @@ -26,33 +37,52 @@ Source2: https://emersion.fr/.well-known/openpgpkey/hu/dj3498u4hyyarh35rk # - only has targets for examples known to compile well (cf. "examples) global) Source3: examples.meson.build +# Upstream patches + +# Fedora patches +# Following patch is required for phoc. +Patch: Revert-layer-shell-error-on-0-dimension-without-anch.patch + BuildRequires: gcc +BuildRequires: glslang BuildRequires: gnupg2 -BuildRequires: meson >= 0.56.0 +BuildRequires: meson >= 1.3 + +BuildRequires: (pkgconfig(libliftoff) >= %{liftoff_ver} with pkgconfig(libliftoff) < 0.6) BuildRequires: pkgconfig(egl) -BuildRequires: pkgconfig(gbm) >= 17.1.0 +BuildRequires: pkgconfig(gbm) >= 21.1 BuildRequires: pkgconfig(glesv2) -BuildRequires: pkgconfig(libdrm) >= 2.4.95 -BuildRequires: pkgconfig(libinput) >= 1.14.0 -BuildRequires: pkgconfig(libsystemd) >= 237 +BuildRequires: pkgconfig(hwdata) +BuildRequires: pkgconfig(lcms2) +BuildRequires: pkgconfig(libdisplay-info) >= 0.2.0 +BuildRequires: pkgconfig(libdrm) >= 2.4.129 +BuildRequires: pkgconfig(libinput) >= 1.21.0 +BuildRequires: pkgconfig(libseat) BuildRequires: pkgconfig(libudev) -BuildRequires: pkgconfig(pixman-1) -BuildRequires: pkgconfig(uuid) +BuildRequires: pkgconfig(pixman-1) >= 0.46.0 +BuildRequires: pkgconfig(vulkan) >= 1.2.182 BuildRequires: pkgconfig(wayland-client) -BuildRequires: pkgconfig(wayland-egl) -BuildRequires: pkgconfig(wayland-protocols) >= 1.17 +BuildRequires: pkgconfig(wayland-protocols) >= 1.47 BuildRequires: pkgconfig(wayland-scanner) -BuildRequires: pkgconfig(wayland-server) >= 1.19 +BuildRequires: pkgconfig(wayland-server) >= 1.24.0 BuildRequires: pkgconfig(x11-xcb) BuildRequires: pkgconfig(xcb) +BuildRequires: pkgconfig(xcb-composite) +BuildRequires: pkgconfig(xcb-dri3) +BuildRequires: pkgconfig(xcb-errors) +BuildRequires: pkgconfig(xcb-ewmh) BuildRequires: pkgconfig(xcb-icccm) +BuildRequires: pkgconfig(xcb-present) +BuildRequires: pkgconfig(xcb-render) BuildRequires: pkgconfig(xcb-renderutil) -BuildRequires: pkgconfig(xkbcommon) +BuildRequires: pkgconfig(xcb-res) +BuildRequires: pkgconfig(xcb-shm) +BuildRequires: pkgconfig(xcb-xfixes) >= 1.15 +BuildRequires: pkgconfig(xcb-xinput) +BuildRequires: pkgconfig(xkbcommon) >= 1.8.0 BuildRequires: pkgconfig(xwayland) - -# only select examples are supported for being readily compilable (see SOURCE3) -%global examples \ - cat multi-pointer output-layout pointer rotation screencopy simple tablet touch +# libliftoff does not bump soname on API changes +Requires: libliftoff%{?_isa} >= %{liftoff_ver} %description %{summary}. @@ -65,8 +95,8 @@ Requires: %{name}%{?_isa} == %{version}-%{release} Recommends: pkgconfig(xcb-icccm) # for examples Suggests: gcc -Suggests: meson >= 0.51.2 -Suggests: pkgconfig(libpng) +Suggests: meson >= 0.58.0 +Suggests: pkgconfig(wayland-egl) %description devel Development files for %{name}. @@ -74,22 +104,16 @@ Development files for %{name}. %prep %{gpgverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}' -%autosetup -p1 +%autosetup -N -n %{name}-%{tag} +# apply unconditional patches (0..99) +%autopatch -p1 -M99 +# apply conditional patches (100..) %build MESON_OPTIONS=( # Disable options requiring extra/unpackaged dependencies -Dexamples=false - -Dxcb-errors=disabled - -Dlibseat=disabled - # select systemd logind provider - -Dlogind-provider=systemd - -%ifarch s390x - # Disable -Werror on s390x: https://github.com/swaywm/wlroots/issues/2018 - -Dwerror=false -%endif ) %{meson} "${MESON_OPTIONS[@]}" @@ -98,11 +122,7 @@ MESON_OPTIONS=( %install %{meson_install} - -EXAMPLES=( %{examples} ) # Normalize whitespace by creating an array -for example in "${EXAMPLES[@]}"; do - install -pm0644 -Dt '%{buildroot}/%{_pkgdocdir}/examples' examples/"${example}".[ch] -done +install -pm0644 -Dt '%{buildroot}/%{_pkgdocdir}/examples' examples/*.[ch] install -pm0644 -D '%{SOURCE3}' '%{buildroot}/%{_pkgdocdir}/examples/meson.build' @@ -113,18 +133,165 @@ install -pm0644 -D '%{SOURCE3}' '%{buildroot}/%{_pkgdocdir}/examples/meson.build %files %license LICENSE %doc README.md -%doc %dir %{_pkgdocdir} -%{_libdir}/lib%{name}.so.%{abi_ver}* +%{_libdir}/libwlroots-%{abi_ver}.so %files devel %doc %{_pkgdocdir}/examples -%{_includedir}/wlr -%{_libdir}/lib%{name}.so -%{_libdir}/pkgconfig/%{name}.pc +%{_includedir}/wlroots-%{abi_ver}/wlr +%{_libdir}/pkgconfig/wlroots-%{abi_ver}.pc %changelog +* Fri Jul 17 2026 Fedora Release Engineering - 0.20.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + +* Tue Jul 07 2026 Aleksei Bavshin - 0.20.2-1 +- Update to 0.20.2 (#2497891) + +* Tue May 19 2026 Aleksei Bavshin - 0.20.1-1 +- Update to 0.20.1 (#2480014) + +* Thu Mar 26 2026 Aleksei Bavshin - 0.20.0-1 +- Update to 0.20.0 (#2435845) + +* Thu Mar 19 2026 Aleksei Bavshin - 0.20.0~rc5-1 +- Update to 0.20.0-rc5 + +* Sat Feb 14 2026 Aleksei Bavshin - 0.20.0~rc2-1 +- Update to 0.20.0-rc2 + +* Thu Feb 12 2026 Aleksei Bavshin - 0.19.2-4 +- Apply upstream patch for libinput 1.31 compatibility + +* Sat Jan 24 2026 Aleksei Bavshin - 0.19.2-3 +- Rebuild for libdisplay-info 0.3.0 + +* Sat Jan 17 2026 Fedora Release Engineering - 0.19.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Tue Oct 21 2025 Aleksei Bavshin - 0.19.2-1 +- Update to 0.19.2 (#2405567) + +* Sun Sep 28 2025 Aleksei Bavshin - 0.19.1-2 +- Apply upstream patch for crash on disabling outputs + +* Sun Sep 21 2025 Aleksei Bavshin - 0.19.1-1 +- Update to 0.19.1 (#2397203) + +* Fri Jul 25 2025 Fedora Release Engineering - 0.19.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Fri May 16 2025 Aleksei Bavshin - 0.19.0-1 +- Update to 0.19.0 (#2359256) + +* Sat Feb 15 2025 Sam Day - 0.18.2-4 +- Add wlroots!4985 patch needed by phoc 0.45.0 + +* Mon Feb 10 2025 Neal Gompa - 0.18.2-3 +- Rebuild for libdisplay-info 0.2.0 + +* Sun Jan 19 2025 Fedora Release Engineering - 0.18.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Wed Dec 11 2024 Aleksei Bavshin - 0.18.2-1 +- Update to 0.18.2 (#2331871) + +* Fri Sep 20 2024 Aleksei Bavshin - 0.18.1-1 +- Update to 0.18.1 (#2313753) + +* Thu Aug 08 2024 Aleksei Bavshin - 0.18.0-1 +- Update to 0.18.0 (#2297921) + +* Sat Jul 20 2024 Fedora Release Engineering - 0.17.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Sat Jun 29 2024 Aleksei Bavshin - 0.17.4-1 +- Update to 0.17.4 (#2294793) + +* Fri Apr 26 2024 Aleksei Bavshin - 0.17.3-1 +- Update to 0.17.3 + +* Mon Mar 11 2024 Aleksei Bavshin - 0.17.2-1 +- Update to 0.17.2 (#2269046) + +* Sat Jan 27 2024 Fedora Release Engineering - 0.17.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Dec 21 2023 Aleksei Bavshin - 0.17.1-1 +- Update to 0.17.1 (#2255547) + +* Tue Nov 21 2023 Aleksei Bavshin - 0.17.0-1 +- Update to 0.17.0 (#2250885) +- Use xcb-errors util library +- Apply patches from 0.17.x bugfix branch + +* Sat Jul 22 2023 Fedora Release Engineering - 0.16.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Sun Apr 16 2023 Aleksei Bavshin - 0.16.2-2 +- Apply upstream patch to remove hardcoded Vulkan validation layers + +* Fri Feb 10 2023 Aleksei Bavshin - 0.16.2-1 +- Update to 0.16.2 (#2168992) + +* Sat Jan 21 2023 Fedora Release Engineering - 0.16.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Sun Dec 25 2022 Aleksei Bavshin - 0.16.1-1 +- Update to 0.16.1 + +* Fri Dec 02 2022 Aleksei Bavshin - 0.16.0-1 +- Update to 0.16.0 (#2142159) +- Add patch for compatibility with older libdrm +- Sync examples.meson.build with upstream, include all available examples + +* Mon Nov 14 2022 Aleksei Bavshin - 0.15.1-5 +- Backport upstream crash fix (#2142447) +- Convert license to SPDX + +* Sat Jul 23 2022 Fedora Release Engineering - 0.15.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Sun Jun 26 2022 Aleksei Bavshin - 0.15.1-3 +- Add patches required for phoc 0.20 + +* Wed Jun 01 2022 Aleksei Bavshin - 0.15.1-2 +- Drop patches for wayland 1.19 compatibility + +* Sat Feb 05 2022 Aleksei Bavshin - 0.15.1-1 +- Update to 0.15.1 (#2050408) + +* Tue Jan 25 2022 Aleksei Bavshin - 0.15.0-3 +- Backport fix for permission popups in Firefox + +* Sat Jan 22 2022 Fedora Release Engineering - 0.15.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Sun Jan 16 2022 Aleksei Bavshin - 0.15.0-1 +- Update to 0.15.0 (#2033651) +- Update upstream URL to gitlab.freedesktop.org +- Backport some patches from 0.15.1 milestone + +* Mon Dec 13 2021 Aleksei Bavshin - 0.14.1-3 +- Add patch for disappearing cursor issue (#2027431) + +* Fri Jul 23 2021 Fedora Release Engineering - 0.14.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Thu Jul 08 2021 Aleksei Bavshin - 0.14.1-1 +- Update to wlroots 0.14.1 + +* Wed Jul 07 2021 Aleksei Bavshin - 0.14.0-2 +- Add patch for a few more issues with cursors, multi-GPUs and nouveau + +* Wed Jun 23 2021 Aleksei Bavshin - 0.14.0-1 +- Update to 0.14.0 +- Add upstream patch for cursor issues on scaled outputs + +* Tue Jun 01 2021 Aleksei Bavshin - 0.13.0-2 +- Enable libseat session backend + * Wed Apr 07 2021 Aleksei Bavshin - 0.13.0-1 - Update to 0.13.0 (#1947218)