File plasma6-login-manager.spec of Package plasma6-login-manager
#
# spec file for package plasma6-login-manager
#
# Copyright (c) 2025 SUSE LLC and contributors
# Copyright (c) 2026 Shawn W Dunn <sfalken@opensuse.org>
#
# 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/
#
%global kf6_version 6.22.0
%global qt6_version 6.10
%global rname plasma-login-manager
# Full Plasma6 version (e.g. 6.0.0)
%{!?_plasma6_bugfix: %global _plasma6_bugfix %{version}}
# Latest ABI-stable Plasma (e.g. 6.0 in KF6, but 6.80.0 in KUF)
%{!?_plasma6_version: %define _plasma6_version %(echo %{_plasma6_bugfix} | awk -F. '{print $1"."$2}')}
%bcond_without released
%bcond_without x11
Name: plasma6-login-manager
Version: 6.6.2
Release: 0
Summary: QML based login manager for the Plasma Desktop
License: GPL-2.0-or-later AND GPL-3.0-or-later
URL: https://invent.kde.org/plasma/plasma-login-manager
Source: https://download.kde.org/stable/plasma/%{version}/%{rname}-%{version}.tar.xz
%if %{with released}
Source1: https://download.kde.org/stable/plasma/%{version}/%{rname}-%{version}.tar.xz.sig
Source2: plasma.keyring
%endif
Source3: noqmlcache.conf
BuildRequires: cmake >= 3.22
BuildRequires: desktop-file-utils
BuildRequires: fdupes
BuildRequires: kf6-extra-cmake-modules
BuildRequires: pam-devel
BuildRequires: shadow
BuildRequires: systemd-rpm-macros
BuildRequires: sysuser-tools
BuildRequires: cmake(KF6Config) >= %{kf6_version}
BuildRequires: cmake(KF6Package) >= %{kf6_version}
BuildRequires: cmake(KF6WindowSystem) >= %{kf6_version}
BuildRequires: cmake(KF6I18n) >= %{kf6_version}
BuildRequires: cmake(KF6DBusAddons) >= %{kf6_version}
BuildRequires: cmake(KF6KCMUtils) >= %{kf6_version}
BuildRequires: cmake(KF6Auth) >= %{kf6_version}
BuildRequires: cmake(KF6KIO) >= %{kf6_version}
BuildRequires: cmake(KF6Screen) >= %{_plasma6_bugfix}
BuildRequires: cmake(LayerShellQt)
BuildRequires: cmake(LibKWorkspace) >= %{_plasma6_bugfix}
BuildRequires: cmake(PlasmaQuick)
BuildRequires: cmake(Qt6Core) >= %{qt6_version}
BuildRequires: cmake(Qt6DBus) >= %{qt6_version}
BuildRequires: cmake(Qt6Gui) >= %{qt6_version}
BuildREquires: cmake(Qt6LinguistTools) >= %{qt6_version}
BuildRequires: cmake(Qt6Qml) >= %{qt6_version}
BuildRequires: cmake(Qt6Quick) >= %{qt6_version}
BuildRequires: cmake(Qt6ShaderTools) >= %{qt6_version}
BuildRequires: cmake(Qt6Test) >= %{qt6_version}
BuildRequires: cmake(Qt6QuickTest) >= %{qt6_version}
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(systemd)
BuildRequires: pkgconfig(xcb)
BuildRequires: pkgconfig(xcb-xkb)
%systemd_requires
%sysusers_requires
Requires: kf6-filesystem
Requires: kf6-kauth
Requires: kf6-kimageformats
Requires: kwin6
Requires: (%{name}-kcm if systemsettings6)
%if %{with x11}
Requires: xdm
%endif
%description
Plasma Login provides a display manager for KDE Plasma
and with an new frontend providing a greeter,
wallpaper plugin integration and a System Settings module (KCM).
%package kcm
Summary: KDE KCM for %{name}
Requires: %{name} = %{version}-%{release}
%description kcm
KCM for plasmalogin, for systemsettings integration
%prep
%autosetup -p1 -n %{rname}-%{version}
%build
LOGIN_DEFS_PATH="%{_sysconfdir}/login.defs"
[ -e "$LOGIN_DEFS_PATH" ] || LOGIN_DEFS_PATH="%{_distconfdir}/login.defs"
%cmake_kf6 \
-DPAM_OS_CONFIGURATION:STRING="suse" \
-DLOGIN_DEFS_PATH:PATH="${LOGIN_DEFS_PATH}" \
-DSESSION_COMMAND:PATH="%{?_distconfdir}%{!?_distconfdir:%{_sysconfdir}}/X11/xdm/Xsession"
%kf6_build
%install
%kf6_install
%sysusers_generate_pre %{buildroot}%{_sysusersdir}/plasmalogin.conf plasmalogin plasmalogin.conf
#%%fdupes %{buildroot}
%find_lang plasma_login
%find_lang kcm_plasmalogin
install -Dpm 644 %{SOURCE3} %{buildroot}%{_unitdir}/plasmalogin.service.d/noqmlcache.conf
# De-conflict the dbus file
mv %{buildroot}%{_datadir}/dbus-1/system.d/org.freedesktop.DisplayManager{,-plasmalogin}.conf
# Make PAM services compatible with older systems
%if 0%{?suse_version} < 1550
mkdir -p %{buildroot}%{_sysconfdir}
mv %{buildroot}%{_prefix}/lib/pam.d %{buildroot}%{_sysconfdir}/pam.d
sed -i'' '/postlogin-/d' %{buildroot}%{_sysconfdir}/pam.d/*
%endif
%check
desktop-file-validate %{buildroot}/%{_datadir}/applications/kcm_plasmalogin.desktop
%pre -f plasmalogin.pre
%systemd_pre plasmalogin.service
%post
%systemd_post plasmalogin.service
%systemd_user_post plasma-login.service plasma-login-kwin_wayland.service plasma-login-wayland.target plasma-wallpaper.service
%tmpfiles_create %{_tmpfilesdir}/plasmalogin.conf
%preun
%systemd_preun plasmalogin.service
%systemd_user_preun plasma-login.service plasma-login-kwin_wayland.service plasma-login-wayland.target plasma-wallpaper.service
%postun
%systemd_postun plasmalogin.service
%systemd_user_postun plasma-login.service plasma-login-kwin_wayland.service plasma-login-wayland.target plasma-wallpaper.service
%files -f plasma_login.lang
%license LICENSES/*
%doc README.md
%dir %{_datadir}/plasmalogin
%{?_pam_vendordir}%{!?_pam_vendordir:%{_sysconfdir}/pam.d}/plasmalogin*
%{_kf6_dbuspolicydir}/org.freedesktop.DisplayManager-plasmalogin.conf
%{_kf6_bindir}/plasmalogin
%{_kf6_bindir}/startplasma-login-wayland
%{_kf6_bindir}/plasma-login-wallpaper
%{_libexecdir}/plasmalogin-helper
%{_libexecdir}/plasmalogin-helper-start-x11user
%{_libexecdir}/plasma-login-greeter
%{_sysusersdir}/plasmalogin.conf
%{_tmpfilesdir}/plasmalogin.conf
%{_unitdir}/plasmalogin.service
%{_unitdir}/plasmalogin.service.d/
%{_userunitdir}/plasma-login.service
%{_userunitdir}/plasma-login-kwin_wayland.service
%{_userunitdir}/plasma-login-wayland.target
%{_userunitdir}/plasma-wallpaper.service
%{_datadir}/plasmalogin/scripts/
%files kcm -f kcm_plasmalogin.lang
%{_kf6_libexecdir}/kauth/kcmplasmalogin_authhelper
%{_kf6_pluginsdir}/plasma/kcms/systemsettings/kcm_plasmalogin.so
%{_kf6_applicationsdir}/kcm_plasmalogin.desktop
%{_kf6_sharedir}/dbus-1/system-services/org.kde.kcontrol.kcmplasmalogin.service
%{_kf6_dbuspolicydir}/org.kde.kcontrol.kcmplasmalogin.conf
%{_datadir}/polkit-1/actions/org.kde.kcontrol.kcmplasmalogin.policy
%changelog