fix: Change quickshell-git and hyprland-qt-support to local builds. (#2412)

This commit is contained in:
Celestial.y
2025-11-09 13:31:21 +08:00
committed by GitHub
4 changed files with 152 additions and 23 deletions
@@ -0,0 +1,46 @@
# Original-Spec: https://copr-dist-git.fedorainfracloud.org/packages/solopasha/hyprland/hyprland-qt-support.git/plain/hyprland-qt-support.spec?h=master
Name: hyprland-qt-support
Version: 0.1.0
Release: %autorelease -b9
Summary: A Qt6 Qml style provider for hypr* apps
License: BSD-3-Clause
URL: https://github.com/hyprwm/hyprland-qt-support
Source: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz
# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
ExcludeArch: %{ix86}
BuildRequires: cmake
BuildRequires: gcc-c++
BuildRequires: qt6-rpm-macros
BuildRequires: cmake(Qt6Quick)
BuildRequires: cmake(Qt6QuickControls2)
BuildRequires: cmake(Qt6Qml)
BuildRequires: pkgconfig(hyprlang)
%description
%{summary}.
%prep
wget --content-disposition -q -N -P %{_sourcedir} %{url}/archive/v%{version}/%{name}-%{version}.tar.gz
%autosetup -p1
%build
%cmake -DINSTALL_QMLDIR=%{_qt6_qmldir}
%cmake_build
%install
%cmake_install
%files
%license LICENSE
%doc README.md
%{_prefix}/lib/libhyprland-quick-style-impl.so
%{_prefix}/lib/libhyprland-quick-style.so
%{_qt6_qmldir}/org/hyprland/
%changelog
%autochangelog
@@ -0,0 +1,89 @@
# Original-Spec: https://copr-dist-git.fedorainfracloud.org/packages/errornointernet/quickshell/quickshell-git.git/plain/quickshell-git.spec?h=master
%bcond_with asan
%global commit db1777c20b936a86528c1095cbcb1ebd92801402
%global commits 699
%global snapdate 20251030
%global tag 0.2.1
Name: quickshell-git
Version: %{tag}^%{commits}.git%(c=%{commit}; echo ${c:0:7})
Release: 0%{?dist}
Summary: Flexible QtQuick based desktop shell toolkit
License: LGPL-3.0-only AND GPL-3.0-only
URL: https://github.com/quickshell-mirror/quickshell
Source0: %{url}/archive/%{commit}/quickshell-%{commit}.tar.gz
Conflicts: quickshell <= %{tag}
%if 0%{fedora} >= 43
BuildRequires: breakpad-static
%endif
BuildRequires: cmake
BuildRequires: cmake(Qt6Core)
BuildRequires: cmake(Qt6Qml)
BuildRequires: cmake(Qt6ShaderTools)
BuildRequires: cmake(Qt6WaylandClient)
BuildRequires: gcc-c++
BuildRequires: ninja-build
BuildRequires: pkgconfig(breakpad)
BuildRequires: pkgconfig(CLI11)
BuildRequires: pkgconfig(gbm)
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(jemalloc)
BuildRequires: pkgconfig(libdrm)
BuildRequires: pkgconfig(libpipewire-0.3)
BuildRequires: pkgconfig(pam)
BuildRequires: pkgconfig(polkit-agent-1)
BuildRequires: pkgconfig(wayland-client)
BuildRequires: pkgconfig(wayland-protocols)
BuildRequires: qt6-qtbase-private-devel
BuildRequires: spirv-tools
%if %{with asan}
BuildRequires: libasan
%endif
Provides: desktop-notification-daemon
%description
Flexible toolkit for making desktop shells with QtQuick, targeting
Wayland and X11.
%prep
wget --content-disposition -q -N -P %{_sourcedir} %{url}/archive/%{commit}/quickshell-%{commit}.tar.gz
%autosetup -n quickshell-%{commit} -p1
%build
%cmake -GNinja \
%if %{with asan}
-DASAN=ON \
%endif
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DDISTRIBUTOR="Fedora COPR (errornointernet/quickshell)" \
-DDISTRIBUTOR_DEBUGINFO_AVAILABLE=YES \
-DGIT_REVISION=%{commit} \
-DINSTALL_QML_PREFIX=%{_lib}/qt6/qml
%cmake_build
%install
%cmake_install
%files
%license LICENSE
%license LICENSE-GPL
%doc BUILD.md
%doc CONTRIBUTING.md
%doc README.md
%doc changelog/v%{tag}.md
%{_bindir}/qs
%{_bindir}/quickshell
%{_datadir}/applications/org.quickshell.desktop
%{_datadir}/icons/hicolor/scalable/apps/org.quickshell.svg
%{_libdir}/qt6/qml/Quickshell
%changelog
%autochangelog
+16 -20
View File
@@ -13,7 +13,7 @@ case $SKIP_SYSUPDATE in
esac esac
# Development-tools installation # Development-tools installation
v sudo dnf install @development-tools fedora-packager rpmdevtools fonts-rpm-macros -y v sudo dnf install @development-tools fedora-packager rpmdevtools fonts-rpm-macros qt6-rpm-macros -y
# COPR repositories # COPR repositories
v sudo dnf copr enable solopasha/hyprland -y v sudo dnf copr enable solopasha/hyprland -y
@@ -42,17 +42,12 @@ v sudo dnf install ${themes_deps[@]} -y
# Hyprland # Hyprland
hyprland_deps=( hyprland_deps=(
hypridle hyprland hyprlock hyprpicker hypridle hyprland hyprlock hyprpicker hyprsunset
hyprsunset xdg-desktop-portal-hyprland wl-clipboard xdg-desktop-portal-hyprland wl-clipboard
) )
v sudo dnf install --setopt="install_weak_deps=False" "${hyprland_deps[@]}" -y v sudo dnf install --setopt="install_weak_deps=False" "${hyprland_deps[@]}" -y
# hyprland-qt-support's build deps
## About `hyprland-qtutils` and `hyprland-qt-support` v sudo dnf install hyprlang-devel -y
# The hyprland-qt-support's GitHub repository requires Qt 6.6 or higher, which I think makes DNF's requirement of Qt 6.9 too strict; it should also support Qt 6.10.
# On distro like Arch Linux, `hyprland-qtutils` and `hyprland-qt-support` are in dependency chain already so no need to add them as deps explicitly;
# However on Fedora, if this package is not installed, a yellow warning⚠️ will appear every time you log in to Hyprland.
v dnf download hyprland-qt-support && v sudo rpm -ivh --nodeps hyprland-qt-support-*.fc$(rpm -E %fedora).$(uname -m).rpm
v sudo dnf install hyprland-qtutils -y
# KDE # KDE
v sudo dnf install bluedevil gnome-keyring NetworkManager plasma-nm polkit-kde dolphin plasma-systemsettings -y v sudo dnf install bluedevil gnome-keyring NetworkManager plasma-nm polkit-kde dolphin plasma-systemsettings -y
@@ -79,17 +74,15 @@ quickshell_custom_deps=(
qt6-qtquicktimeline qt6-qtsensors qt6-qttools qt6-qttranslations qt6-qtquicktimeline qt6-qtsensors qt6-qttools qt6-qttranslations
qt6-qtvirtualkeyboard qt6-qtwayland kdialog kf6-syntax-highlighting qt6-qtvirtualkeyboard qt6-qtwayland kdialog kf6-syntax-highlighting
) )
quickshell_build_deps=(
breakpad-static breakpad-devel gcc-c++ ninja-build mesa-libgbm-devel cli11-devel glib2-devel
jemalloc-devel libdrm-devel pipewire-devel pam-devel polkit-devel wayland-devel wayland-protocols-devel
qt6-qtdeclarative-devel qt6-qtshadertools-devel qt6-qtbase-private-devel spirv-tools
libasan
)
v sudo dnf install "${quickshell_deps[@]}" -y v sudo dnf install "${quickshell_deps[@]}" -y
v sudo dnf install "${quickshell_custom_deps[@]}" -y v sudo dnf install "${quickshell_custom_deps[@]}" -y
# Dynamically control the version of quickshell v sudo dnf install "${quickshell_build_deps[@]}" -y
qs_version=$(dnf list --showduplicates quickshell-git 2>/dev/null |
grep -E "\.git${_qs_shortcommit}(-|$)" |
awk '{print $2}' |
sort -V |
tail -n1)
v sudo dnf versionlock delete quickshell-git 2>/dev/null
v sudo dnf install quickshell-git-${qs_version}
v sudo dnf versionlock add quickshell-git
# Screencapture # Screencapture
v sudo dnf install hyprshot slurp swappy tesseract tesseract-langpack-eng tesseract-langpack-chi_sim wf-recorder -y v sudo dnf install hyprshot slurp swappy tesseract tesseract-langpack-eng tesseract-langpack-chi_sim wf-recorder -y
@@ -114,10 +107,13 @@ install_RPMS() {
x rpmbuild -bb --define "_topdir $rpmbuildroot" $spec_file x rpmbuild -bb --define "_topdir $rpmbuildroot" $spec_file
done done
mapfile -t -d '' local_rpms < <(find "$rpmbuildroot/RPMS" -maxdepth 2 -type f -name '*.rpm' -not -name '*debug*' -print0) mapfile -t -d '' local_rpms < <(find "$rpmbuildroot/RPMS" -maxdepth 2 -type f -name '*.rpm' -not -name '*debug*' -print0)
echo "${STY_BLUE}Next command:${STY_RST} sudo dnf install ${local_rpms[@]} -y" echo -e "${STY_BLUE}Next command:${STY_RST} sudo dnf install ${local_rpms[@]} -y"
x sudo dnf install "${local_rpms[@]}" -y x sudo dnf install "${local_rpms[@]}" -y
x cd ${REPO_ROOT} x cd ${REPO_ROOT}
} }
showfun install_RPMS showfun install_RPMS
v install_RPMS v install_RPMS
# hyprland-qtutils depends on hyprland-qt-support
v sudo dnf install hyprland-qtutils -y
+1 -3
View File
@@ -26,6 +26,4 @@ STY_RST='\e[00m'
# Used by register_temp_file() # Used by register_temp_file()
declare -a TEMP_FILES_TO_CLEANUP=() declare -a TEMP_FILES_TO_CLEANUP=()
# Pinned commit for quickshell
_qs_commit='db1777c20b936a86528c1095cbcb1ebd92801402'
_qs_shortcommit=$(echo ${_qs_commit} | cut -c1-7)