%global debug_package %{nil} %undefine _debugsource_packages Name: dde-clipboard Version: 6.1.33 Release: 1%{?dist} Summary: Clipboard manager for DDE License: GPLv3+ URL: https://github.com/linuxdeepin/dde-clipboard Source0: %{url}/archive/refs/tags/%{version}/%{name}-%{version}.tar.gz BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: qt6-qtbase-devel BuildRequires: qt6-qtbase-private-devel BuildRequires: qt6-qtsvg-devel BuildRequires: qt6-qttools-devel BuildRequires: qt6-qtwayland-devel BuildRequires: wayland-devel BuildRequires: wayland-protocols-devel BuildRequires: dtk6core-devel BuildRequires: dtk6gui-devel BuildRequires: dtk6widget-devel BuildRequires: dde-shell-devel BuildRequires: dde-tray-loader-devel BuildRequires: extra-cmake-modules BuildRequires: gtest-devel BuildRequires: pkgconfig BuildRequires: systemd-devel %description DDE Clipboard is the clipboard manager plugin for the Deepin Desktop Environment. It provides clipboard history and management as a system tray plugin. %prep %autosetup -n %{name}-%{version} # Fix dde-shell header prefix find . -name '*.cpp' -o -name '*.h' | xargs sed -i 's|#include [<"]dde-shell/|#include <|g' 2>/dev/null || true # Remove gio-qt6 dependency (not available for Qt6) - replace with QMimeDatabase sed -i '/pkg_check_modules(GIO.*gio-qt6)/d' CMakeLists.txt sed -i 's|PkgConfig::GIO||g' CMakeLists.txt # Patch itemwidget.cpp to use QMimeDatabase instead of DGioFile sed -i '/#include "dgiofile.h"/d' dde-clipboard/itemwidget.cpp sed -i '/#include "dgiofileinfo.h"/d' dde-clipboard/itemwidget.cpp # Replace the entire DGioFile block (from QScopedPointer to the end of the icon building section) # Use a Python script for reliable multi-line replacement python3 -c " import re with open('dde-clipboard/itemwidget.cpp', 'r') as f: content = f.read() # Replace from QScopedPointer to the line before '//get additional icons' old_block = re.compile( r' QScopedPointer.*?(?= //get additional icons)', re.DOTALL ) new_block = ''' /* Use QMimeDatabase instead of DGioFile for icon lookup */ QMimeDatabase mimeDb; QMimeType mimeType = mimeDb.mimeTypeForFile(info.absoluteFilePath()); QString iconName = mimeType.iconName(); if (!iconName.isEmpty()) { icon = QIcon::fromTheme(iconName).pixmap(FileIconWidth, FileIconWidth); } else { icon = QIcon::fromTheme(mimeType.genericIconName()).pixmap(FileIconWidth, FileIconWidth); } ''' content = old_block.sub(new_block, content) # Also add QMimeDatabase include if not present if '#include ' not in content: content = content.replace('#include ', '#include \n#include \n#include ', 1) with open('dde-clipboard/itemwidget.cpp', 'w') as f: f.write(content) print('Patched itemwidget.cpp successfully') " %build %cmake -DCMAKE_PREFIX_PATH=/usr/lib64/cmake -DSYSTEMD_USER_UNIT_DIR=%{_userunitdir} %cmake_build %install %cmake_install echo '=== Installed files ===' && find %{buildroot} -type f | grep -v debug | tail -30 %files %license LICENSE %{_bindir}/dde-clipboard %{_bindir}/dde-clipboard-daemon %{_prefix}/lib/dde-dock/plugins/libdock-clipboard-plugin.so %{_prefix}/lib/systemd/user/dde-clipboard.service %{_prefix}/lib/systemd/user/dde-clipboard-daemon.service %{_datadir}/dde-clipboard/ %{_datadir}/dbus-1/services/org.deepin.dde.Clipboard1.service %{_datadir}/dbus-1/services/org.deepin.dde.ClipboardLoader1.service %{_datadir}/dbus-1/services/org.deepin.dde.daemon.Clipboard1.service %{_datadir}/dsg/ %{_datadir}/dde-dock/ %config(noreplace) %{_sysconfdir}/xdg/autostart/dde-clipboard.desktop %changelog * Sat Jul 18 2026 Yonghang Wang - 6.1.33-1 - Initial package for al-stream-2023 - Patch: replace gio-qt6 with QMimeDatabase for file icon lookup