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

openSUSE Build Service is sponsored by