Update kf6-filesystem.spec

Update kf6-filesystem.spec

Update kf6-filesystem.spec

Update kf6-filesystem.spec

filesystem

Update kf6-filesystem.spec

Update kf6-filesystem.spec
This commit is contained in:
2025-11-25 15:27:30 +08:00
parent a89dd21e78
commit 08669624dc
2 changed files with 291 additions and 0 deletions

View File

@@ -0,0 +1,161 @@
# SPDX-License-Identifier: MulanPSL-2.0
# SPDX-FileCopyrightText: (C) 2025 Institute of Software, Chinese Academy of Sciences (ISCAS)
# SPDX-FileCopyrightText: (C) 2025 openRuyi Project Contributors
Name: kf6-filesystem
Version: 202511125
Release: 1
Summary: RPM macros for KDE packages using Qt6
License: MIT
#!RemoteAsset
Source: macros.kf6
Requires: cmake
Requires: hicolor-icon-theme
Requires: ninja
%description
This package contains macros which are used when building KDE packages.
%define _kf6_prefix %{_prefix}
%define _kf6_sysconfdir %{_sysconfdir}
%define _kf6_libexecdir %{_libexecdir}/kf6
%define _kf6_bindir %{_kf6_prefix}/bin
%define _kf6_includedir %{_kf6_prefix}/include/KF6
%define _kf6_libdir %{_kf6_prefix}/%{_lib}
%define _kf6_sbindir %{_kf6_prefix}/sbin
%define _kf6_sharedir %{_kf6_prefix}/share
%define _kf6_datadir %{_kf6_sharedir}/kf6
%define _kf6_configdir %{_kf6_sysconfdir}/xdg
%define _kf6_cmakedir %{_kf6_libdir}/cmake
%define _kf6_pkgconfigdir %{_kf6_libdir}/pkgconfig
%define _kf6_qchdir %{_kf6_sharedir}/doc/qt6
%define _kf6_importdir %{_kf6_libdir}/qt6/imports
%define _kf6_mkspecsdir %{_kf6_libdir}/qt6/mkspecs/modules
%define _kf6_plugindir %{_kf6_libdir}/qt6/plugins
%define _kf6_qmldir %{_kf6_libdir}/qt6/qml
%define _kf6_appsdir %{_kf6_sharedir}
%define _kf6_applicationsdir %{_kf6_sharedir}/applications
%define _kf6_configkcfgdir %{_kf6_sharedir}/config.kcfg
%define _kf6_dbusinterfacesdir %{_kf6_sharedir}/dbus-1/interfaces
%define _kf6_dbuspolicydir %{_kf6_sharedir}/dbus-1/system.d
%define _kf6_htmldir %{_kf6_sharedir}/doc/HTML
%define _kf6_iconsdir %{_kf6_sharedir}/icons
%define _kf6_notificationsdir %{_kf6_sharedir}/knotifications6
%define _kf6_knsrcfilesdir %{_kf6_sharedir}/knsrcfiles
%define _kf6_kxmlguidir %{_kf6_sharedir}/kxmlgui5
%define _kf6_localedir %{_kf6_sharedir}/locale/kf6
%define _kf6_mandir %{_kf6_sharedir}/man
%define _kf6_appstreamdir %{_kf6_sharedir}/metainfo
%define _kf6_plasmadir %{_kf6_sharedir}/plasma
%define _kf6_debugdir %{_kf6_sharedir}/qlogging-categories6
%define _kf6_wallpapersdir %{_kf6_sharedir}/wallpapers
%prep
%build
%install
install -D -m644 %{SOURCE0} %{buildroot}%{_rpmmacrodir}/macros.kf6
# Let kf6-filesystem 'own' directories not already owned by the filesystem package
mkdir -p %{buildroot}%{_kf6_includedir}
mkdir -p %{buildroot}%{_kf6_libexecdir}
mkdir -p %{buildroot}%{_kf6_datadir}
mkdir -p %{buildroot}%{_kf6_configkcfgdir}
mkdir -p %{buildroot}%{_kf6_htmldir}
mkdir -p %{buildroot}%{_kf6_notificationsdir}
mkdir -p %{buildroot}%{_kf6_knsrcfilesdir}
mkdir -p %{buildroot}%{_kf6_kxmlguidir}
mkdir -p %{buildroot}%{_kf6_localedir}
mkdir -p %{buildroot}%{_kf6_plasmadir}
mkdir -p %{buildroot}%{_kf6_debugdir}
mkdir -p %{buildroot}%{_kf6_wallpapersdir}
# Own the HTML docs directories for all supported languages
pushd /usr/share/locale
for i in *; do
mkdir %{buildroot}%{_kf6_htmldir}/$i
# Work around that filesystem does not own all supported subdirs...
mkdir -p %{buildroot}%{_kf6_mandir}/$i/man1
done
popd
# Additional install directories used by KDE packages
mkdir -p %{buildroot}%{_includedir}/KPim6
mkdir -p %{buildroot}%{_kf6_libdir}/kconf_update_bin
mkdir -p %{buildroot}%{_kf6_libexecdir}/kauth
mkdir -p %{buildroot}%{_kf6_plugindir}/designer
mkdir -p %{buildroot}%{_kf6_plugindir}/kf6
mkdir -p %{buildroot}%{_kf6_plugindir}/kf6/kded
mkdir -p %{buildroot}%{_kf6_plugindir}/kf6/kio
mkdir -p %{buildroot}%{_kf6_plugindir}/kf6/parts
mkdir -p %{buildroot}%{_kf6_plugindir}/pim6
mkdir -p %{buildroot}%{_kf6_plugindir}/pim6/akonadi
mkdir -p %{buildroot}%{_kf6_plugindir}/plasma/applets
mkdir -p %{buildroot}%{_kf6_plugindir}/plasma/kcms/systemsettings
mkdir -p %{buildroot}%{_kf6_plugindir}/plasma/kcms/systemsettings_qwidgets
mkdir -p %{buildroot}%{_kf6_qmldir}/org/kde
mkdir -p %{buildroot}%{_kf6_sharedir}/kconf_update
mkdir -p %{buildroot}%{_kf6_sharedir}/kdevappwizard/templates
mkdir -p %{buildroot}%{_kf6_sharedir}/kglobalaccel
mkdir -p %{buildroot}%{_kf6_sharedir}/krunner/dbusplugins
mkdir -p %{buildroot}%{_kf6_sharedir}/plasma/plasmoids
%files
%{_rpmmacrodir}/macros.kf6
%dir %{_kf6_configkcfgdir}
%dir %{_kf6_datadir}
%dir %{_kf6_debugdir}
%dir %{_kf6_htmldir}
%dir %{_kf6_htmldir}/*
%dir %{_kf6_includedir}
%dir %{_kf6_knsrcfilesdir}
%dir %{_kf6_kxmlguidir}
%dir %{_kf6_libexecdir}
%dir %{_kf6_localedir}
%dir %{_kf6_mandir}/*
%dir %{_kf6_mandir}/*/man1
%dir %{_kf6_notificationsdir}
%dir %{_kf6_plasmadir}
%dir %{_kf6_wallpapersdir}
#
%dir %{_includedir}/KPim6
%dir %{_kf6_libdir}/kconf_update_bin
%dir %{_kf6_libdir}/qt6
%dir %{_kf6_libexecdir}/kauth
%dir %{_kf6_plugindir}
%dir %{_kf6_plugindir}/designer
%dir %{_kf6_plugindir}/kf6
%dir %{_kf6_plugindir}/kf6/kded
%dir %{_kf6_plugindir}/kf6/kio
%dir %{_kf6_plugindir}/kf6/parts
%dir %{_kf6_plugindir}/pim6
%dir %{_kf6_plugindir}/pim6/akonadi
%dir %{_kf6_plugindir}/plasma
%dir %{_kf6_plugindir}/plasma/applets
%dir %{_kf6_plugindir}/plasma/kcms
%dir %{_kf6_plugindir}/plasma/kcms/systemsettings
%dir %{_kf6_plugindir}/plasma/kcms/systemsettings_qwidgets
%dir %{_kf6_qmldir}
%dir %{_kf6_qmldir}/org
%dir %{_kf6_qmldir}/org/kde
%dir %{_kf6_sharedir}/kconf_update
%dir %{_kf6_sharedir}/kdevappwizard
%dir %{_kf6_sharedir}/kdevappwizard/templates
%dir %{_kf6_sharedir}/kglobalaccel
%dir %{_kf6_sharedir}/krunner
%dir %{_kf6_sharedir}/krunner/dbusplugins
%dir %{_kf6_sharedir}/plasma/plasmoids
%changelog

130
kf6-filesystem/macros.kf6 Normal file
View File

@@ -0,0 +1,130 @@
#
# Macros for KDE Packages using Qt6
#
# SPDX-License-Identifier: MIT
#
#########################################################################
#
# Note: The kf6-extra-cmake-modules package has a dependency on kf6-filesystem,
# you don't need to add kf6-filesystem to your package's 'BuildRequires'
#
#########################################################################
# The following macros are provided:
#
# %%cmake_kf6
# Run CMake with the default parameters for KDE packages
#
# %%kf6_build
# Builds the project with the selected build tool (default: ninja)
#
# %%kf6_install
# Install the project once built
#
# %%kf6_use_make
# Use 'make' instead of 'ninja' for building
#
# Alternatively, you can add the following line in your spec file:
# %%global %%__kf6_build_tool make
#
#########################################################################
#
# Note about the compiler used for Leap 15 builds:
# The compiler version required is the same as the one used for building
# Qt6 packages
#
#########################################################################
# Default paths
%__kf6_sourcedir .
%__kf6_builddir build
# Use the Ninja generator by default
%__kf6_build_tool %__ninja
# Default build type
%__kf6_build_type RelWithDebInfo
# _kf6_variables to use in %%files sections
%_kf6_prefix %{_prefix}
%_kf6_sysconfdir %{_sysconfdir}
%_kf6_libexecdir %{_libexecdir}/kf6
%_kf6_bindir %{_kf6_prefix}/bin
%_kf6_includedir %{_kf6_prefix}/include/KF6
%_kf6_libdir %{_kf6_prefix}/%{_lib}
%_kf6_sbindir %{_prefix}/sbin
%_kf6_sharedir %{_prefix}/share
%_kf6_datadir %{_kf6_sharedir}/kf6
%_kf6_configdir %{_kf6_sysconfdir}/xdg
%_kf6_cmakedir %{_kf6_libdir}/cmake
%_kf6_pkgconfigdir %{_kf6_libdir}/pkgconfig
%_kf6_qchdir %{_kf6_sharedir}/doc/qt6
%_kf6_importdir %{_kf6_libdir}/qt6/imports
%_kf6_mkspecsdir %{_kf6_libdir}/qt6/mkspecs/modules
%_kf6_pluginsdir %{_kf6_libdir}/qt6/plugins
# For backward compatibility
%_kf6_plugindir %{_kf6_libdir}/qt6/plugins
%_kf6_qmldir %{_kf6_libdir}/qt6/qml
%_kf6_appsdir %{_kf6_sharedir}
%_kf6_applicationsdir %{_kf6_sharedir}/applications
%_kf6_configkcfgdir %{_kf6_sharedir}/config.kcfg
%_kf6_dbusinterfacesdir %{_kf6_sharedir}/dbus-1/interfaces
%_kf6_dbuspolicydir %{_kf6_sharedir}/dbus-1/system.d
%_kf6_htmldir %{_kf6_sharedir}/doc/HTML
%_kf6_iconsdir %{_kf6_sharedir}/icons
%_kf6_notificationsdir %{_kf6_sharedir}/knotifications6
%_kf6_knsrcfilesdir %{_kf6_sharedir}/knsrcfiles
%_kf6_kxmlguidir %{_kf6_sharedir}/kxmlgui5
%_kf6_localedir %{_kf6_sharedir}/locale/kf6
%_kf6_mandir %{_kf6_sharedir}/man
%_kf6_appstreamdir %{_kf6_sharedir}/metainfo
%_kf6_plasmadir %{_kf6_sharedir}/plasma
%_kf6_debugdir %{_kf6_sharedir}/qlogging-categories6
%_kf6_wallpapersdir %{_kf6_sharedir}/wallpapers
# Macro to use 'make' instead of 'ninja'
%kf6_use_make %global __kf6_build_tool %__make
# Run CMake
%cmake_kf6 \
cmake -DCMAKE_BUILD_TYPE:STRING=%{__kf6_build_type} \\\
-DCMAKE_INSTALL_PREFIX:STRING=%{_kf6_prefix} \\\
-S %__kf6_sourcedir \\\
-B %__kf6_builddir \\\
%if "%__kf6_build_tool" == "%__ninja" \
-GNinja \\\
%else \
-G"Unix Makefiles" \\\
%endif \
%if 0%{?suse_version} == 1500 \
-DCMAKE_C_COMPILER:STRING=gcc-14 \\\
-DCMAKE_CXX_COMPILER:STRING=g++-14 \\\
-DCMAKE_CXX_LINK_PIE_SUPPORTED:BOOL=TRUE \\\
%endif \
%if 0%{?suse_version} == 1600 \
-DCMAKE_C_COMPILER:STRING=gcc-15 \\\
-DCMAKE_CXX_COMPILER:STRING=g++-15 \\\
-DCMAKE_CXX_LINK_PIE_SUPPORTED:BOOL=TRUE \\\
%endif \
-DCMAKE_C_FLAGS:STRING="%{optflags}" \\\
-DCMAKE_CXX_FLAGS:STRING="%{optflags}" \\\
-DCMAKE_EXE_LINKER_FLAGS:STRING="-Wl,--as-needed -Wl,--no-undefined" \\\
-DCMAKE_MODULE_LINKER_FLAGS:STRING="-Wl,--as-needed -Wl,--no-undefined" \\\
-DCMAKE_SHARED_LINKER_FLAGS:STRING="-Wl,--as-needed -Wl,--no-undefined" \\\
-DKDE_INSTALL_LIBEXECDIR=%{_libexecdir} \\\
-DBUILD_TESTING:BOOL=FALSE
# Build the package
%kf6_build \
cmake --build %__kf6_builddir %{?_smp_mflags} -v
# Install package
%kf6_install \
DESTDIR=%{buildroot} cmake --install %__kf6_builddir -v