From 18d42bafc2bc4e821938d0297040da3084c85b8c Mon Sep 17 00:00:00 2001 From: Ceres Date: Sat, 9 May 2026 15:42:05 +0100 Subject: [PATCH] gui-apps/quickshell: add 0.3.0 patch fixes a -Wstrict-aliasing warning. the patch is needed for LTO, but fixes a number of warnings output even when not using LTO, hence applying it for all users patch taken from https://github.com/noctalia-dev/noctalia-qs/commit/46e60df2d6ebb4d52d5bde8a63a9a6255e556097 Signed-off-by: Ceres --- gui-apps/quickshell/Manifest | 1 + .../quickshell-0.3.0-strict-aliasing.patch | 18 +++ gui-apps/quickshell/quickshell-0.3.0.ebuild | 124 ++++++++++++++++++ 3 files changed, 143 insertions(+) create mode 100644 gui-apps/quickshell/files/quickshell-0.3.0-strict-aliasing.patch create mode 100644 gui-apps/quickshell/quickshell-0.3.0.ebuild diff --git a/gui-apps/quickshell/Manifest b/gui-apps/quickshell/Manifest index c6393e71b1..8619a3c008 100644 --- a/gui-apps/quickshell/Manifest +++ b/gui-apps/quickshell/Manifest @@ -1 +1,2 @@ DIST quickshell-0.2.1.tar.gz 401664 BLAKE2B 14e89a998cde9e841b305339685e98672093a3e52b8d374e7d66017041a9f96b48c0cc5e67568b94107d667082a67cf789aabb54951716fdad3ee61652e1460f SHA512 fc926f917b4c52615ca4c80cd6a8b756a924c3d3f0e385268a6f59726dbe79aa275cf905ba060fa6cfac4b43bedd262e7210c37900c6faa7e2733f8a92a6a2d2 +DIST quickshell-0.3.0.tar.gz 496505 BLAKE2B 6fae034beb6b10c5cd8ac802ac9f2046521921cddf0b86de25eacc420353c77ec8defd5290fec25df390c37788758ba0d9b5936eacda2910829be52df6975d7a SHA512 595840277489487fff6bd58db42717381a92066768f791d818c4f8edb484425416857f5f8627c6334ae0e71d41274e1f5c7674e73e162797d13f41426d604a8a diff --git a/gui-apps/quickshell/files/quickshell-0.3.0-strict-aliasing.patch b/gui-apps/quickshell/files/quickshell-0.3.0-strict-aliasing.patch new file mode 100644 index 0000000000..1d3e149f98 --- /dev/null +++ b/gui-apps/quickshell/files/quickshell-0.3.0-strict-aliasing.patch @@ -0,0 +1,18 @@ +Fixes strict-aliasing error when building with LTO +From: https://github.com/noctalia-dev/noctalia-qs/commit/46e60df2d6ebb4d52d5bde8a63a9a6255e556097 + +--- a/src/core/model.hpp ++++ b/src/core/model.hpp +@@ -170,7 +170,11 @@ + } + + [[nodiscard]] QList values() override { +- return *reinterpret_cast*>(&this->mValuesList); ++ QList result; ++ result.reserve(this->mValuesList.size()); ++ for (auto* item: this->mValuesList) ++ result.append(reinterpret_cast(item)); ++ return result; + } + + private: diff --git a/gui-apps/quickshell/quickshell-0.3.0.ebuild b/gui-apps/quickshell/quickshell-0.3.0.ebuild new file mode 100644 index 0000000000..2d6809058a --- /dev/null +++ b/gui-apps/quickshell/quickshell-0.3.0.ebuild @@ -0,0 +1,124 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit branding cmake + +GIT_REVISION=59e9c47b0eb48a9e4bcf9631fa062ee939bd2e83 + +DESCRIPTION="Toolkit for building desktop widgets using QtQuick" +HOMEPAGE="https://quickshell.org/" + +if [[ "${PV}" = *9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/quickshell-mirror/${PN^}.git" +else + SRC_URI="https://github.com/quickshell-mirror/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64" +fi + +LICENSE="LGPL-3" +SLOT="0" + +# Upstream recommends leaving all build options enabled by default +IUSE=" + +jemalloc +sockets + +wayland +layer-shell +session-lock +toplevel-management + +hyprland +screencopy + +X +i3 + +tray +pipewire +mpris +pam +policykit +greetd +upower +notifications + +bluetooth +networkmanager +crash-handler +" +REQUIRED_USE=" + layer-shell? ( wayland ) + session-lock? ( wayland ) + toplevel-management? ( wayland ) + hyprland? ( wayland ) + screencopy? ( wayland ) +" + +RDEPEND=" + dev-qt/qtbase:6=[dbus,vulkan] + dev-qt/qtsvg:6= + dev-qt/qtdeclarative:6= + x11-libs/libdrm + jemalloc? ( dev-libs/jemalloc ) + wayland? ( + dev-libs/wayland + dev-qt/qtwayland:6= + ) + screencopy? ( media-libs/mesa ) + X? ( x11-libs/libxcb ) + pipewire? ( media-video/pipewire ) + pam? ( sys-libs/pam ) + policykit? ( + sys-auth/polkit + dev-libs/glib + ) + bluetooth? ( net-wireless/bluez ) + networkmanager? ( net-misc/networkmanager ) +" +DEPEND="${RDEPEND}" +BDEPEND=" + virtual/pkgconfig + dev-cpp/cli11 + dev-util/spirv-tools + dev-qt/qtshadertools:6 + screencopy? ( dev-util/vulkan-headers ) + wayland? ( + dev-util/wayland-scanner + dev-libs/wayland-protocols + ) + crash-handler? ( dev-cpp/cpptrace[unwind] ) +" + +DOCS=( README.md changelog/ ) + +PATCHES=( "${FILESDIR}/${P}-strict-aliasing.patch" ) + +src_configure() { + # hyprland controls all Hyprland sub-features as a group. + # i3 controls I3/Sway IPC. + # screencopy controls all screencopy backends (icc, wlr, hyprland-toplevel). + local _hyprland=$(usex hyprland) + local _screencopy=$(usex screencopy) + local _i3=$(usex i3) + + local mycmakeargs=( + -DDISTRIBUTOR="${BRANDING_OS_NAME} GURU" + -DINSTALL_QML_PREFIX="$(get_libdir)/qt6/qml" + -DGIT_REVISION=${GIT_REVISION} + -DCRASH_HANDLER=$(usex crash-handler) + -DUSE_JEMALLOC=$(usex jemalloc) + -DSOCKETS=$(usex sockets) + -DWAYLAND=$(usex wayland) + -DWAYLAND_WLR_LAYERSHELL=$(usex layer-shell) + -DWAYLAND_SESSION_LOCK=$(usex session-lock) + -DWAYLAND_TOPLEVEL_MANAGEMENT=$(usex toplevel-management) + -DHYPRLAND=${_hyprland} + -DHYPRLAND_IPC=${_hyprland} + -DHYPRLAND_GLOBAL_SHORTCUTS=${_hyprland} + -DHYPRLAND_FOCUS_GRAB=${_hyprland} + -DHYPRLAND_SURFACE_EXTENSIONS=${_hyprland} + -DSCREENCOPY=${_screencopy} + -DSCREENCOPY_ICC=${_screencopy} + -DSCREENCOPY_WLR=${_screencopy} + -DSCREENCOPY_HYPRLAND_TOPLEVEL=${_screencopy} + -DX11=$(usex X) + -DI3=${_i3} + -DI3_IPC=${_i3} + -DSERVICE_STATUS_NOTIFIER=$(usex tray) + -DSERVICE_PIPEWIRE=$(usex pipewire) + -DSERVICE_MPRIS=$(usex mpris) + -DSERVICE_PAM=$(usex pam) + -DSERVICE_POLKIT=$(usex policykit) + -DSERVICE_GREETD=$(usex greetd) + -DSERVICE_UPOWER=$(usex upower) + -DSERVICE_NOTIFICATIONS=$(usex notifications) + -DBLUETOOTH=$(usex bluetooth) + -DNETWORK=$(usex networkmanager) + + ) + cmake_src_configure +}