File linglong.yaml of Package linyaps

%global debug_package %{nil}
Name:           linglong
Version:        1.9.13
Release:        2
Summary:        Linglong is a Package Manager on Linux.
License:        LGPL v3
URL:            https://gitee.com/LFRon/linyaps-generic-linux
Source0:        https://github.com/LFRon/linyaps-generic-linux/archive/refs/tags/1.9.13-2.zip

# ========== BuildRequires ==========
BuildRequires:  cmake gcc-c++ gettext intltool systemd-devel sudo
# Qt on SUSE 与其他发行版命名不同,做条件适配
%if 0%{?suse_version}
BuildRequires:  libqt5-qtbase-devel
# qdbusxml2cpp 在 openSUSE 路径通常为 /usr/lib64/qt5/bin/qdbusxml2cpp
%else
BuildRequires:  qt5-qtbase-devel qt5-qtbase-private-devel
%endif

BuildRequires:  glib2-devel nlohmann-json-devel ostree-devel yaml-cpp-devel libcap-devel
BuildRequires:  gtest-devel libseccomp-devel elfutils-libelf-devel
# SUSE 通常不提供 glibc-static/libstdc++-static,SUSE 下移除
%if !0%{?suse_version}
BuildRequires:  glibc-static libstdc++-static
%endif
BuildRequires:  libcurl-devel openssl-devel libcap-devel
BuildRequires:  gtest-devel gmock-devel

# ========== Runtime Requires ==========
Requires:       linglong-bin = %{version}-%{release}
Requires:       desktop-file-utils linglong-box fuse-overlayfs
# shadow 在 SUSE,shadow-utils 在其他
%if 0%{?suse_version}
Requires:       shadow
%else
Requires:       shadow-utils
%endif
Requires:       glib2 shared-mime-info systemd
Requires:       google-noto-sans-mono-fonts wqy-zenhei-fonts
Recommends:     erofs-fuse erofs-utils

%description
Linyaps is a secondary package manager on Linux.It could run apps with stable and fast container powered by Linyaps-box on Linux.

%package        -n linglong-bin
Summary:        Linglong package manager
%if 0%{?suse_version}
Requires:       linglong-box google-noto-sans-mono-fonts wqy-zenhei-fonts shadow
%else
Requires:       linglong-box google-noto-sans-mono-fonts wqy-zenhei-fonts shadow-utils
%endif
%description    -n linglong-bin
Linyaps package management command line tool.

%package        -n linglong-builder
Summary:        Linglong build tools
Requires:       linglong-box linglong-bin = %{version}-%{release} git
%description    -n linglong-builder
This Linyaps sub-package is a tool that makes it easy to build applications and dependencies.

%prep
%autosetup -p1 -n linyaps-generic-linux-%{version}-1

%define _debugsource_template %{nil}

%build
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX:PATH=%{_prefix} \
      -DCMAKE_POSITION_INDEPENDENT_CODE=ON  \
      -DINCLUDE_INSTALL_DIR:PATH=%{_includedir} \
      -DLIB_INSTALL_DIR:PATH=%{_libdir} \
      -DSYSCONF_INSTALL_DIR:PATH=%{_sysconfdir} \
      -DSHARE_INSTALL_PREFIX:PATH=%{_datadir} \
      -DBUILD_SHARED_LIBS=OFF \
      -DCPM_LOCAL_PACKAGES_ONLY=ON \
      -DENABLE_LINGLONG_INSTALLER=ON \
      -DLINGLONG_EXPORT_PATH=apps/share \
      -DQT_VERSION_MAJOR=5 \
      -DQt5DBus_QDBUSXML2CPP_EXECUTABLE=/usr/lib64/qt5/bin/qdbusxml2cpp ..
%make_build

%install
cd build
%make_install INSTALL_ROOT=%{buildroot}

# ========== systemd 脚本宏适配 ==========
%if 0%{?suse_version}
%post -n linglong-bin
%service_add_post org.deepin.linglong.PackageManager.service

%preun -n linglong-bin
%service_del_preun org.deepin.linglong.PackageManager.service

%postun -n linglong-bin
%service_del_postun org.deepin.linglong.PackageManager.service
%else
%post -n linglong-bin
%systemd_post org.deepin.linglong.PackageManager.service

%preun -n linglong-bin
%systemd_preun org.deepin.linglong.PackageManager.service

%postun -n linglong-bin
%systemd_postun_with_restart org.deepin.linglong.PackageManager.service
%endif

%files
%doc README.md
%license LICENSE
%exclude %{_libdir}/cmake/linglong-*/*.cmake

%files -n linglong-bin
%{_sysconfdir}/profile.d/*
%{_sysconfdir}/X11/Xsession.d/*
%{_bindir}/ll-cli
%{_bindir}/llpkg
# 使用通用宏避免硬编码路径
%{_libexecdir}/%{name}/ll-package-manager
%{_libexecdir}/%{name}/ll-session-helper
%{_libexecdir}/%{name}/ld-cache-generator
%{_libexecdir}/%{name}/font-cache-generator
%{_libexecdir}/%{name}/ll-dialog
%{_libexecdir}/%{name}/ll-init
%{_libexecdir}/%{name}/dialog/99-linglong-permission

%{_datadir}/bash-completion/completions/ll-cli
%{_datadir}/dbus-1/system-services/*.service
%{_datadir}/dbus-1/system.d/*.conf
%{_datadir}/polkit-1/actions/org.deepin.linglong.PackageManager1.policy
%{_datadir}/%{name}/config.yaml
%{_datadir}/%{name}/export-dirs.json
%{_datadir}/mime/packages/*
%{_datadir}/zsh/*
%{_datadir}/icons/*
%{_datadir}/applications/*
%{_datadir}/locale/*

# systemd/unit、preset、generators 使用宏
%{_unitdir}/*.service
%{_userunitdir}/*
%{_presetdir}/*.preset
%{_systemdgeneratordir}/*
%{_userunitdir}/../system-environment-generators/*
%{_userunitdir}/../user-generators/*

# sysusers/tmpfiles 使用宏
%{_sysusersdir}/*.conf
%{_tmpfilesdir}/*.conf

# 容器/脚本
%{_prefix}/lib/%{name}/container/*
%{_prefix}/lib/%{name}/generate-xdg-data-dirs.sh

%files -n linglong-builder
%{_bindir}/ll-builder
%{_libexecdir}/%{name}/fetch-dsc-source
%{_libexecdir}/%{name}/fetch-git-source
%{_libexecdir}/%{name}/fetch-file-source
%{_libexecdir}/%{name}/fetch-archive-source
%{_libexecdir}/%{name}/app-conf-generator
%{_libexecdir}/%{name}/builder/helper/*.sh
%{_datadir}/bash-completion/completions/ll-builder
%{_datadir}/%{name}/builder/templates/*.yaml
%{_datadir}/%{name}/builder/uab/*

%changelog
* Sat Nov 08 2025 Packager <you@example.com> - 1.9.13-2
- Adapt spec for openSUSE Leap 15.6:
  - switch shadow-utils -> shadow on SUSE
  - drop glibc-static/libstdc++-static on SUSE
  - use libqt5-qtbase-devel and systemd service macros on SUSE
  - replace hard-coded systemd paths with macros

openSUSE Build Service is sponsored by