File deepin-file-manager.spec of Package deepin-file-manager
#
# spec file for package deepin-file-manager
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define _name dde-file-manager
%define sover 1
Name: deepin-file-manager
Version: 6.5.43
Release: 0
Summary: Deepin File Manager
License: GPL-3.0-or-later
Group: Productivity/File utilities
URL: https://github.com/linuxdeepin/dde-file-manager
Source0: https://github.com/linuxdeepin/dde-file-manager/archive/%{version}/%{_name}-%{version}.tar.gz
Source99: deepin-file-manager-rpmlintrc
Patch0: harden_dde-filemanager-daemon.service.patch
# PATCH-FIX-UPSTREAM migrate-to-pcre2.patch hillwood@opensuse.org
# Tumbleweed have dropped pcre1, we should migrate to pcre2
Patch1: migrate-to-pcre2.patch
# PATCH-FIX-UPSTREAM fix-library-links.patch hillwood@opensuse.org - Fix undefined reference errors
Patch2: fix-library-links.patch
# PATCH-FIX-UPSTREAM fix-missing-symbols-in-titlebar-and-workspace.patch hillwood@opensuse.org
# Fix undefined reference errors
Patch3: fix-missing-symbols-in-titlebar-and-workspace.patch
%if 0%{?suse_version} < 1600
# PATCH-FIX-OPENSUSE update-taglib-interface.patch hillwood@opensuse.org - Backport for old taglib
#Patch2: update-taglib-interface.patch
# PATCH-FOR-OPENSUSE link-boost_system-for-Leap-15.patch hillwood@opensuse.org
Patch5: link-boost_system-for-Leap-15.patch
%endif
%ifarch ppc ppc64 ppc64le s390 s390x
BuildRequires: deepin-desktop-base
%else
BuildRequires: deepin-manual
%endif
%ifarch ppc ppc64 ppc64le s390 s390x
BuildRequires: deepin-desktop-base
%else
BuildRequires: deepin-manual
%endif
BuildRequires: boost-devel
BuildRequires: deepin-gettext-tools
BuildRequires: deepin-tray-loader-devel
BuildRequires: fdupes
BuildRequires: file-devel
BuildRequires: qt6-dbus-private-devel
BuildRequires: qt6-core-private-devel
BuildRequires: qt6-gui-private-devel
BuildRequires: qt6-widgets-private-devel
BuildRequires: libboost_system-devel
BuildRequires: libmimetic-devel
BuildRequires: qt6-tools-linguist
BuildRequires: pcre2-devel
BuildRequires: systemd-rpm-macros
BuildRequires: update-desktop-files
BuildRequires: cmake(DDEShell)
BuildRequires: pkgconfig(deepin-pdfium)
BuildRequires: pkgconfig(deepin-qdbus-service)
BuildRequires: pkgconfig(Qt6Concurrent)
BuildRequires: pkgconfig(Qt6Core)
BuildRequires: pkgconfig(Qt6DBus)
BuildRequires: pkgconfig(Qt6Multimedia)
BuildRequires: pkgconfig(Qt6MultimediaWidgets)
BuildRequires: pkgconfig(Qt6Network)
BuildRequires: pkgconfig(Qt6PrintSupport)
BuildRequires: pkgconfig(Qt6Quick)
BuildRequires: pkgconfig(Qt6Sql)
BuildRequires: pkgconfig(Qt6Svg)
BuildRequires: pkgconfig(Qt6Widgets)
BuildRequires: pkgconfig(Qt6Xdg)
BuildRequires: pkgconfig(Qt6Xml)
BuildRequires: pkgconfig(Qt6Linguist)
BuildRequires: pkgconfig(atk)
BuildRequires: pkgconfig(deepin-pdfium)
BuildRequires: pkgconfig(dfm6-burn)
BuildRequires: pkgconfig(dfm6-io)
BuildRequires: pkgconfig(dfm6-mount)
BuildRequires: pkgconfig(dframeworkdbus)
BuildRequires: pkgconfig(disomaster)
BuildRequires: pkgconfig(docparser)
BuildRequires: pkgconfig(dtkbluetooth)
BuildRequires: pkgconfig(dtk6widget)
BuildRequires: pkgconfig(gtk+-2.0)
BuildRequires: pkgconfig(htmlcxx)
BuildRequires: pkgconfig(jemalloc)
BuildRequires: pkgconfig(libcrypto)
BuildRequires: pkgconfig(libcryptsetup)
BuildRequires: pkgconfig(libdmr)
BuildRequires: pkgconfig(libffmpegthumbnailer)
BuildRequires: pkgconfig(libgsf-1)
BuildRequires: pkgconfig(liblucene++)
BuildRequires: pkgconfig(libmediainfo)
BuildRequires: pkgconfig(libsecret-1)
BuildRequires: pkgconfig(polkit-agent-1)
BuildRequires: pkgconfig(poppler-cpp)
BuildRequires: pkgconfig(polkit-qt6-1)
BuildRequires: pkgconfig(taglib)
BuildRequires: pkgconfig(uchardet)
BuildRequires: pkgconfig(udisks2)
BuildRequires: pkgconfig(xcb-ewmh)
BuildRequires: pkgconfig(xcb-util)
BuildRequires: pkgconfig(lcms2)
BuildRequires: pkgconfig(libopenjp2)
%if 0%{?suse_version} < 1600
BuildRequires: gcc13
BuildRequires: gcc13-c++
%endif
Requires: deepin-shortcut-viewer
Requires: deepin-terminal
Requires: file-roller
Requires: glib2-tools
Requires: gstreamer-plugins-good
Requires: gvfs
Requires: libqt5-dxcbplugin
Requires: libqt5-qdbus
Requires: qt5integration
Requires: samba
Requires: socat
Requires: xdg-user-dirs
Recommends: %{name}-lang = %{version}-%{release}
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%{?systemd_ordering}
%description
Deepin File Manager is a file management tool independently developed by Deepin
Technology, featured with searching, copying, trash, compression/decompression,
file property and other file management functions.
%package -n lib%{_name}%{sover}
Summary: Deepin File Manager library
Group: System/Libraries
%description -n lib%{_name}%{sover}
This package contains the library for deepin-file-manager
%package -n libdfm6-base%{sover}
Summary: Deepin File Manager Base library
Group: System/Libraries
%description -n libdfm6-base%{sover}
This package contains the base library for deepin-file-manager
%package -n libdfm-extension%{sover}
Summary: Deepin File Manager Extension library
Group: System/Libraries
%description -n libdfm-extension%{sover}
This package contains the extension library for deepin-file-manager
%package -n libdfm6-framework%{sover}
Summary: Deepin File Manager Framework library
Group: System/Libraries
%description -n libdfm6-framework%{sover}
This package contains the framework library for deepin-file-manager
%package devel
Summary: Development package for Deepin File Manager
Group: Development/Libraries/X11
Requires: libdfm6-base%{sover} = %{version}
Requires: libdfm6-extension%{sover} = %{version}
Requires: libdfm-framework%{sover} = %{version}
%description devel
Header files and libraries for Deepin File Manager.
%lang_package
%prep
%autosetup -p1 -n %{_name}-%{version}
find -type f -perm 775 -exec chmod 644 {} \;
# find -type f -name ".readme" -delete -print
#sed -i "s/lupdate/lupdate-qt5/g" src/lupdate.sh
sed -i "s/lrelease/lrelease-qt5/g" src/translate_generation.sh
sed -i "/install(TARGETS/s|lib|%{_libdir}|g" src/external/dde-dock-plugins/disk-mount/CMakeLists.txt
sed -i "/include/s|dde-shell/||g" src/external/dde-shell-plugins/panel-desktop/main.cpp \
src/plugins/desktop/desktoputils/widgetutil.h
sed -i '/video-preview/ s/^/#/' src/apps/dde-file-manager-preview/pluginpreviews/CMakeLists.txt
sed -i '/include/s/dlayershellwindow.h/dde-shell\/dlayershellwindow.h/' src/plugins/desktop/desktoputils/widgetutil.h
# Fix build on gcc15
sed -i '/#include <memory>/a#include <cstdint>/' include/dfm-extension/emblemicon/dfmextemblemiconlayout.h
%build
%if 0%{?suse_version} < 1600
export CXX=g++-13
%endif
%cmake -DCMAKE_INSTALL_SYSCONFDIR=%{_sysconfdir}\
-DSYSTEMD_USER_UNIT_DIR=%{_userunitdir} \
-DCVERSION=%{version} \
-DAPP_VERSION=%{version} \
-DCMAKE_C_FLAGS="${CMAKE_C_FLAGS} -fPIC"\
-DCMAKE_CXX_FLAGS="${CMAKE_CXX_FLAGS} -fPIC"
%cmake_build
%install
%cmake_install
%if 0%{?suse_version} < 1600
# Leap 15 use old libexecdir
sed -i 's/libexec/lib/' %{buildroot}%{_bindir}/file-manager.sh
%endif
chmod +x %{buildroot}%{_bindir}/*
chmod -x %{buildroot}%{_datadir}/deepin-manual/manual-assets/application/dde-file-manager/file-manager/common/*.svg \
%{buildroot}%{_datadir}/deepin-manual/manual-assets/application/dde-file-manager/file-manager/*/*.md
chmod +x %{buildroot}%{_sysconfdir}/deepin/dde-file-manager/dfm-dlnfs-automount \
%{buildroot}%{_bindir}/dde-file-manager-pkexec \
%{buildroot}%{_bindir}/dde-property-dialog
# Fix values extending the format should start with "X-" rpmlint warnings
sed -i 's/OnlyShowIn=/X-DDE-OnlyShowIn=/g' \
%{buildroot}%{_datadir}/applications/dde-computer.desktop \
%{buildroot}%{_datadir}/applications/dde-trash.desktop \
%{buildroot}%{_datadir}/applications/dde-home.desktop
%if 0%{?suse_version} < 1600
sed -i "s/libexec/lib/" %{buildroot}%{_bindir}/%{_name}
%endif
#install -d %{buildroot}%{_sbindir}
#ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcdde-filemanager-daemon
chmod -x %{buildroot}%{_datadir}/dbus-1/services/*.service
%suse_update_desktop_file -r %{_name} System FileManager
%suse_update_desktop_file -r dde-computer System FileManager
%suse_update_desktop_file -r dde-trash System FileManager
%find_lang %{_name} --with-qt
%find_lang disk-encrypt --with-qt
%fdupes %{buildroot}%{_datadir}
#%pre
#%service_add_pre dde-filemanager-daemon.service
#%post
#%service_add_post dde-filemanager-daemon.service
#%preun
#%service_del_preun dde-filemanager-daemon.service
#%postun
#%service_del_postun dde-filemanager-daemon.service
%post -n lib%{_name}%{sover} -p /sbin/ldconfig
%postun -n lib%{_name}%{sover} -p /sbin/ldconfig
%post -n libdfm6-base%{sover} -p /sbin/ldconfig
%postun -n libdfm6-base%{sover} -p /sbin/ldconfig
%post -n libdfm-extension%{sover} -p /sbin/ldconfig
%postun -n libdfm-extension%{sover} -p /sbin/ldconfig
%post -n libdfm6-framework%{sover} -p /sbin/ldconfig
%postun -n libdfm6-framework%{sover} -p /sbin/ldconfig
%files
%defattr(-,root,root,-)
%doc README.md README.zh_CN.md
%license LICENSE
# %config(noreplace) %{_sysconfdir}/dbus-1/system.d/com.deepin.filemanager.daemon.conf
#%{_sysconfdir}/dbus-1/system.d/org.deepin.filemanager.*.conf
%dir %{_sysconfdir}/X11/Xsession.d/
%config %{_sysconfdir}/X11/Xsession.d/99dfm-dlnfs-automount
%dir %{_sysconfdir}/deepin
%dir %{_sysconfdir}/deepin/dde-file-manager
%config %{_sysconfdir}/deepin/dde-file-manager/dfm-dlnfs-automount
%dir %{_sysconfdir}/polkit-1
%dir %{_sysconfdir}/polkit-1/localauthority
%dir %{_sysconfdir}/polkit-1/localauthority/10-vendor.d
%config %{_sysconfdir}/polkit-1/localauthority/10-vendor.d/99-dde-file-manager-encrypt.pkla
%config %{_sysconfdir}/systemd/system/deepin-service-group@.service.d
%dir %{_sysconfdir}/udev
%dir %{_sysconfdir}/udev/rules.d
%config %{_sysconfdir}/udev/rules.d/99-dfm-encrypt.rules
%{_bindir}/*
%exclude %{_bindir}/dde-desktop
%exclude %{_bindir}/deepin-file-dbus-installer
%exclude %{_bindir}/deepin-file-polkit-installer
#%{_sbindir}/rcdde-filemanager-daemon
%{_libdir}/%{_name}
%dir %{_libdir}/dde-dock
%dir %{_libdir}/dde-dock/plugins
%dir %{_libdir}/dde-dock/plugins/system-trays
%{_libdir}/lib%{_name}.so
%{_libdir}/dde-dock/plugins/system-trays/libdde-disk-mount-plugin.so
%exclude %{_datadir}/%{_name}/*.tar.gz
%{_datadir}/dbus-1/interfaces/*.xml
%dir %{_datadir}/%{_name}
%{_datadir}/%{_name}/mimetypeassociations
%{_datadir}/%{_name}/mimetypes
%{_datadir}/%{_name}/templates
%{_datadir}/deepin-manual/manual-assets/application/%{_name}
#%{_datadir}/icons/hicolor/scalable/apps/*.svg
# %{_datadir}/deepin/dde-file-manager
#%{_datadir}/dbus-1/interfaces/com.deepin.filemanager.filedialog.xml
#%{_datadir}/dbus-1/interfaces/com.deepin.filemanager.filedialogmanager.xml
%{_datadir}/dbus-1/services/*.service
%{_datadir}/dbus-1/system-services/org.deepin.*.service
%{_datadir}/dbus-1/system.d/org.deepin.filemanager.*.conf
%{_datadir}/polkit-1/actions/com.deepin.*.policy
%{_datadir}/polkit-1/actions/org.deepin.*.policy
%{_datadir}/applications/dde-*.desktop
%dir %{_datadir}/applications/context-menus
%{_datadir}/applications/context-menus/.readme
%{_datadir}/glib-2.0/schemas/*.xml
%dir %{_datadir}/dsg
%dir %{_datadir}/dsg/configs
%{_datadir}/dsg/configs/org.deepin.dde.file-manager
%{_datadir}/mime/packages/dtk-dci.xml
%dir %{_datadir}/dde-file-manager/extensions
%dir %{_datadir}/dde-file-manager/extensions/appEntry
%{_datadir}/dde-file-manager/extensions/appEntry/.readme
%dir %{_datadir}/deepin/dde-file-manager
%dir %{_datadir}/deepin/dde-file-manager/oem-menuextensions
%{_datadir}/deepin/dde-file-manager/oem-menuextensions/.readme
%{_datadir}/deepin-log-viewer
%dir %{_datadir}/deepin-debug-config
%dir %{_datadir}/deepin-debug-config/deepin-debug-config.d
%{_datadir}/deepin-debug-config/deepin-debug-config.d/org.deepin.file-manager.json
%{_userunitdir}/dde-session-initialized.target.wants
%{_userunitdir}/%{_name}.service
#%{_unitdir}/dde-filemanager-daemon.service
%{_libexecdir}/%{_name}
%{_datadir}/dde-shell
%{_datadir}/deepin-service-manager
%{_libexecdir}/dde-file-manager-preview
%{_libdir}/dde-shell
%{_libdir}/deepin-service-manager
%files -n lib%{_name}%{sover}
%defattr(-,root,root,-)
%{_libdir}/lib%{_name}.so.*
%files -n libdfm6-base%{sover}
%defattr(-,root,root,-)
%{_libdir}/libdfm6-base.so.*
%files -n libdfm-extension%{sover}
%defattr(-,root,root,-)
%{_libdir}/libdfm-extension.so.*
%files -n libdfm6-framework%{sover}
%defattr(-,root,root,-)
%{_libdir}/libdfm6-framework.so.*
%files devel
%defattr(-,root,root,-)
%{_includedir}/dfm-*
%{_libdir}/pkgconfig/dfm6-*.pc
%{_libdir}/pkgconfig/dfm-extension.pc
%{_libdir}/libdfm6-*.so
%{_libdir}/libdfm-extension.so
%{_libdir}/cmake/dfm6-*
%{_libdir}/cmake/dfm-extension
%files lang -f %{_name}.lang -f disk-encrypt.lang
%defattr(-,root,root,-)
%dir %{_datadir}/%{_name}/translations
%{_datadir}/%{_name}/translations/%{_name}.qm
%{_datadir}/%{_name}/translations/disk-encrypt.qm
%if 0%{?suse_version} < 1600
%lang(ady) %{_datadir}/%{_name}/translations/%{_name}_ady.qm
%lang(ast) %{_datadir}/%{_name}/translations/%{_name}_ast.qm
%lang(bqi) %{_datadir}/%{_name}/translations/%{_name}_bqi.qm
%lang(fil) %{_datadir}/%{_name}/translations/%{_name}_fil.qm
%lang(kab) %{_datadir}/%{_name}/translations/%{_name}_kab.qm
%lang(pam) %{_datadir}/%{_name}/translations/%{_name}_pam.qm
%lang(tzm) %{_datadir}/%{_name}/translations/%{_name}_tzm.qm
%endif
%changelog