File patterns-base.spec of Package patterns-base

#
# spec file for package patterns-base
#
# Copyright (c) 2023 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/
#


%bcond_with betatest

Name:           patterns-base
Version:        6.1
Release:        0
Summary:        Patterns for SUSE Linux Framework One
License:        MIT
Group:          Metapackages
URL:            http://en.opensuse.org/Patterns
Source0:        %name.rpmlintrc
ExclusiveArch:  x86_64 %arm32 aarch64 ppc64le s390x riscv64

%description
This is an internal package that is used to create the patterns as part
of the installation source setup. Installation of this package does
not make sense.

%package base
Summary:        SUSE Linux Framework One
Group:          Metapackages
Provides:       pattern() = base
Provides:       pattern-category() = SLFO
Provides:       pattern-icon() = pattern-kubic
Provides:       pattern-order() = 9010
Provides:       pattern-visible()
Obsoletes:      patterns-microos-basesystem
Provides:       patterns-microos-basesystem
Obsoletes:      patterns-microos-base
Provides:       patterns-microos-base
Requires:       pattern() = bootloader
# FIXME add if needed Requires:       pattern() = minimal_base
%if %{with betatest}
# need to require it as recommends are off
Requires:       pattern() = update_test
%endif
### openSUSE base system
Requires:       /usr/bin/hostname
Requires:       aaa_base
Requires:       bash
Requires:       btrfsprogs
Requires:       ca-certificates
Requires:       ca-certificates-mozilla
Requires:       coreutils
Requires:       coreutils-systemd
Requires:       glibc
# FIXME re-add
# Requires:       (grub2-branding-openSUSE if grub2)
### Packages formerly provided by bootloader
Requires:       (grub2-snapper-plugin if grub2)
###
Suggests:       busybox-hostname
Requires:       NetworkManager
Requires:       NetworkManager-wifi
Requires:       iproute2
Requires:       lastlog2
Requires:       libnss_usrfiles2
%if !0%{?is_opensuse}
Requires:       suse-build-key
%else
Requires:       openSUSE-build-key
%endif
Requires:       pam
Requires:       pam-config
Requires:       procps
Requires:       rebootmgr
Requires:       rpm
Requires:       shadow
Requires:       systemd
Requires:       util-linux
Requires:       user(nobody)
Requires:       group(nobody)
Requires:       system-group-hardware
Requires:       group(wheel)
Requires:       group(kvm)
####
Requires:       btrfsmaintenance
Requires:       busybox
Requires:       chrony
# curl indirectly needed by ignition via dracut's url-lib
Requires:       curl
# probably needed for fsck.fat on efi partitions
Requires:       /usr/bin/gzip
## FIXME find better way to address generic control file
Requires:       distribution-release
Requires:       dosfstools
Requires:       glibc-locale-base
Suggests:       busybox-gzip
Requires:       iputils
Requires:       issue-generator
Requires:       (health-checker if grub2)
Requires:       (health-checker-plugins-MicroOS if health-checker)
Requires:	kbd
Requires:       kdump
Requires:       less
Requires:       microos-tools
Requires:       openssh
Requires:       parted
Requires:       snapper
Requires:	udev
Requires:       vim-small
Requires:       wtmpdb
# people are addicted to sudo
Requires:       sudo
# report from tr-up, jsc#PED-6989
# does not exist, FIXMERequires:	systemd-email
Requires:       systemd-presets-branding-ALP
Requires:       terminfo-base
Requires:       timezone
Conflicts:      gettext-runtime-mini
Conflicts:      krb5-mini
Requires:       yast2-logs
Requires:	(toolbox if transactional-update)
Requires:	pam_pwquality
Requires:	supportutils
Requires:	which
Requires:	xfsprogs
# jsc#SMO-79
Requires:	tpm2.0-tools
Requires:	tpm2.0-abrmd
Requires:	tpm2-0-tss
Requires:	tpm2-tss-engine
# jsc#SMO-50
%ifarch x86_64 aarch64
Requires:	libmbim
Requires:	libmbim-glib4
Requires:	libqmi-tools
Requires:	libqmi-glib5
%endif
# jsc#CSD-121
Requires:	udica
# jsc#SMO-120
Requires:	pam_u2f
%ifarch s390x
Requires:	libica
Requires:	openCryptoki
Requires:	openssl-ibmca
%endif
# bsc#1217991
Requires:	crypto-policies-scripts

%description base
This is the SUSE Linux Framework One runtime system. It contains only a minimal multiuser
booting system.

%package transactional
Summary:        SUSE Linux Framework One using Zypper for transactional systems
Group:          Metapackages
Provides:       pattern() = base_transactional
Provides:       pattern-category() = SLFO
Provides:       pattern-icon() = pattern-kubic
Provides:       pattern-order() = 9011
Provides:       pattern-visible()
Requires:       transactional-update
Requires:       transactional-update-zypp-config
Requires:       pattern() = base
# zypper ps is useless in transactional mode. It also checks for
# /run/reboot-needed though which is created by transactional-update
Requires:       zypper-needs-restarting
# jsc#PED-6478 (2 packages)
Requires:	mailx
Requires:	systemd-status-mail
Requires:       systemd-presets-branding-ALP-transactional

%description transactional
This is the SUSE Linux Framework One runtime system using the Zypper package manager
and the transactional update tooling
It contains only a minimal multiuser booting system.

%package traditional
Summary:        SUSE Linux Framework One using Zypper
Group:          Metapackages
Provides:       pattern() = base_traditional
Provides:       pattern-category() = SLFO
Provides:       pattern-icon() = pattern-kubic
Provides:       pattern-order() = 9011
Provides:       pattern-visible()
Requires:       zypper
Requires:       pattern() = base
# zypper ps is useless in transactional mode. It also checks for
# /run/reboot-needed though which is created by transactional-update
Requires:       zypper-needs-restarting

%description traditional
This is the SUSE Linux Framework One runtime system using the Zypper package manager.
It contains only a minimal multiuser booting system.

%package hardware
Summary:        Hardware Support
Group:          Metapackages
Provides:       pattern() = hardware
Provides:       pattern-category() = SLFO
Provides:       pattern-icon() = pattern-kubic
Provides:       pattern-order() = 9030
Provides:       pattern-visible()
Obsoletes:      patterns-microos-hardware
Provides:       patterns-microos-hardware
Requires:       ethtool
%ifnarch s390x
Requires:       irqbalance
%endif
%ifarch %ix86 x86_64
Requires:       ucode-amd
Requires:       ucode-intel
%endif
Requires:       fcoe-utils
Requires:       hwinfo
Requires:	kernel-firmware-all

%description hardware
Packages required to install SUSE Linux Framework One on real hardware.

%package selinux
Summary:        SELinux Support
Group:          Metapackages
Provides:       pattern() = selinux
Provides:       pattern-category() = SLFO
Provides:       pattern-icon() = pattern-generic
Provides:       pattern-order() = 9055
Provides:       pattern-visible()
Obsoletes:      patterns-microos-selinux
Provides:       patterns-microos-selinux
Requires:       container-selinux
Requires:       policycoreutils
Requires:       selinux-policy-targeted
Requires:       selinux-tools

%description selinux
This are packages which are required to enable SELinux on SUSE Linux Framework One

%package fips
Summary:        FIPS 140-3 Support
Group:          Metapackages
Provides:       pattern() = fips
Provides:       pattern-category() = SLFO
Provides:       pattern-icon() = pattern-generic
Provides:       pattern-order() = 9055
Provides:       pattern-visible()
Obsoletes:      patterns-microos-fips
Provides:       patterns-microos-fips
Requires:       (dracut-fips if dracut)
Requires:       (openssh-fips if openssh-clients)
Requires:       (openssh-fips if openssh-servers)
Requires:	(strongswan-hmac if strongswan)
# needed for fips-mode-setup
Requires:	(crypto-policies-scripts if crypto-policies)
Requires:	(libopenssl-3-fips-provider if libopenssl3)
# the library hmac files are no longer seperated, but were merged

%description fips
This are packages which are required to enable FIPS 140-3 on SUSE Linux Framework One

%package salt_minion
Summary:        Salt Minion
Group:          Metapackages
Provides:       pattern() = salt_minion
Provides:       pattern-category() = SLFO
Provides:       pattern-icon() = pattern-generic
Provides:       pattern-order() = 9901
Provides:       pattern-visible()
Obsoletes:      patterns-microos-salt_minion
Provides:       patterns-microos-salt_minion
Requires:       salt-minion

%description salt_minion
Packages to manage the host using Salt or management solutions which utilize Salt, e.g. SUSE Manager

%package cockpit
Summary:        Web based remote system managemet
Group:          Metapackages
Provides:       pattern() = cockpit
Provides:       pattern-category() = SLFO
Provides:       pattern-icon() = pattern-generic
Provides:       pattern-order() = 9060
Provides:       pattern-visible()
Obsoletes:      patterns-microos-cockpit
Provides:       patterns-microos-cockpit
Requires:	cockpit
Requires:       cockpit-system
Requires:       cockpit-ws
Requires:       (cockpit-podman if podman)
Requires:       (cockpit-machines if libvirt-daemon-qemu)
Requires:       cockpit-networkmanager
Requires:       (cockpit-tukit if transactional-update)
Requires:       cockpit-storaged
Requires:       libudisks2-0_btrfs
Requires:       libudisks2-0_lvm2
Requires:       cockpit-selinux
# If PackageKit pattern is installed, pull in Cockpit's PackageKit module
Requires:       (cockpit-packagekit if patterns-base-packagekit)

%description cockpit
Packages required to run the Cockpit system management service.
For the web service the cockpit-ws container is required.

%package kvm_host
Summary:        KVM Virtualization Host
Group:          Metapackages
Provides:       pattern() = kvm_host
Provides:       pattern-category() = SLFO
Provides:       pattern-icon() = pattern-generic
Provides:       pattern-order() = 9050
Provides:       pattern-visible()
Obsoletes:      patterns-microos-kvm_host
Provides:       patterns-microos-kvm_host
Requires:       guestfs-tools
Requires:       python3-libvirt-python
Requires:       qemu-tools

# fix issue because qemu-kvm is not present on all arch and
# we would like to deprecate it for the futur (will be only
# updated if already installed on the system)
%ifarch %ix86 x86_64
Requires:       qemu-x86
%endif
%ifarch ppc ppc64 ppc64le
Requires:       qemu-ppc
%endif
%ifarch s390x
Requires:       qemu-s390
%endif
%ifarch %arm aarch64 armv7hl
Requires:       qemu-arm
Requires:       qemu-ipxe
%endif
# needed for usb passthrough from the host
Requires:       qemu-hw-usb-host
# the virtio gpu pci device for QEMU
Requires:       qemu-hw-display-virtio-gpu-pci
# There is some missing qemu-block compared to the libvirt driver you provide:
Requires:       qemu-block-iscsi
Requires:       qemu-block-rbd
Requires:       qemu-block-ssh
Requires:       qemu-lang
%ifarch %ix86 x86_64 s390x
Requires:       qemu-kvm
%endif
Requires:       qemu-ksm

Requires:       tftp
Requires:       libvirt-daemon-qemu
Recommends:     tigervnc
Recommends:     virt-install
Requires:       netcat-openbsd
Requires:       gnutls
Requires:       libvirt-client
Requires:       libvirt-daemon-config-network
Requires:       libvirt-daemon-hooks
Requires:       libvirt-nss
Requires:       virt-top
# avoid conflict with busybox
Requires:	lzop 

# You don't have any option for Audio, but this is not mandatory:
#Requires:       qemu-audio-pipewire
#Requires:       qemu-audio-pa
#Requires:       qemu-audio-dbus
#Requires:       qemu-audio-alsa



%description kvm_host
Packages to run virtual machines using the KVM hypervisor

%package sssd-ldap
Summary:        LDAP client
Group:          Metapackages
Provides:       pattern() = sssd_ldap
Provides:       pattern-category() = SLFO
Provides:       pattern-icon() = pattern-generic
Provides:       pattern-order() = 9070
Provides:       pattern-visible()
Obsoletes:      patterns-microos-sssd_ldap
Provides:       patterns-microos-sssd_ldap
Requires:       sssd
Requires:       sssd-ldap
Requires:       sssd-ad
Requires:       sssd-krb5
Requires:       adcli

%description sssd-ldap
Packages required to enable LDAP client support via sssd on SUSE Linux Framework One.

%package ima-evm
Summary:        IMA/EVM Support
Group:          Metapackages
Provides:       pattern() = ima_evm
Provides:       pattern-category() = SLFO
Provides:       pattern-icon() = pattern-basis-addon
Provides:       pattern-order() = 9080
Provides:       pattern-visible()
Requires:       attr
Requires:       dracut-ima
Requires:       ima-evm-utils
Requires:       keyutils

%description ima-evm
Packages required to enable IMA/EVM on SUSE Linux Framework One.

%package ra-agent
Summary:        Remote Attestation (Agent) Support
Group:          Metapackages
Provides:       pattern() = ra_agent
Provides:       pattern-category() = SLFO
Provides:       pattern-icon() = pattern-basis-addon
Provides:       pattern-order() = 9085
Provides:       pattern-visible()
%ifarch %{ix86} ia64 x86_64 %{arm} aarch64
Requires:       dmidecode
%endif
Requires:       rust-keylime
Requires:       pattern() = ima_evm

%description ra-agent
Packages required to enable remote attestation via the Rust Keylime
agent on SUSE Linux Framework One.

%package ra-verifier
Summary:        Remote Attestation (Verifier) Support
Group:          Metapackages
Provides:       pattern() = ra_verifier
Provides:       pattern-category() = SLFO
Provides:       pattern-icon() = pattern-basis-addon
Provides:       pattern-order() = 9086
Provides:       pattern-visible()
Requires:       keylime-firewalld
Requires:       keylime-registrar
Requires:       keylime-tenant
Requires:       keylime-verifier

%description ra-verifier
Packages required to enable remote attestation via Keylime verifier on
SUSE Linux Framework One.

%package cloud
Summary:        Support for Cloud
Group:          Metapackages
Provides:       pattern() = cloud
Provides:       pattern-category() = SLFO
Provides:       pattern-icon() = pattern-generic
Provides:       pattern-order() = 9090
Provides:       pattern-visible()
Requires:       cloud-init
Requires:       cloud-init-config-suse

%description cloud
Packages required to enable SUSE Linux Framework One in the Cloud.

%package bootloader
#%pattern_basetechnologies
Summary:        Bootloader
Group:          Metapackages
Provides:       pattern() = bootloader
Provides:       pattern-category() = SLFO
Obsoletes:      patterns-microos-bootloader
Provides:       patterns-microos-bootloader
Requires:       (grub2-snapper-plugin if snapper)
#
Requires:       grub2
%ifarch x86_64
# XXX: not sure this really belongs here. More like a kernel
# rather than bootloader related thing?
Requires:       biosdevname
%endif
%ifnarch s390x ppc64 ppc64le
%if 0%{?is_opensuse}
Requires:       (grub2-branding-openSUSE if branding-openSUSE)
%else
%if 0%{?sle_version}
Requires:       (grub2-branding-SLE if branding-SLE)
%endif
%endif
%endif
%ifarch x86_64
Requires:       grub2-x86_64-efi
%endif
%ifarch aarch64
Requires:       grub2-arm64-efi
%endif
%ifarch armv7l armv7hl
Requires:       grub2-arm-efi
Requires:       grub2-arm-uboot
%endif
%ifarch aarch64 x86_64
Requires:       mokutil
Requires:       shim
%endif

%description bootloader
This pattern holds files required for booting the system

%package minimal_base
#%pattern_basetechnologies
Summary:        Minimal Appliance Base
Group:          Metapackages
Provides:       pattern() = minimal_base
Provides:       pattern-category() = SLFO
Provides:       pattern-icon() = pattern-basis
Provides:       pattern-order() = 5190
Provides:       pattern-visible()
Requires:       branding
# those packages are actually useless as they don't use
# %_keyringpath but we need them eg for kiwi
Requires:       build-key
Requires:       distribution-release
Requires:       filesystem

%description minimal_base
This is the minimal runtime system. It is really a minimal system. It is intended as base for Appliances.





%prep
# empty on purpose

%build
# empty on purpose

%install
mkdir -p %{buildroot}%{_docdir}/patterns-base/
PATTERNS='
    base base_transactional base_traditional hardware kvm_host
    sssd_ldap ima_evm ra_agent ra_verifier selinux fips salt_minion cockpit cloud
    bootloader minimal_base
'
for i in $PATTERNS; do
    echo "This file marks the pattern $i to be installed." \
        > %{buildroot}%{_docdir}/patterns-base/${i}.txt
done

%files base
%dir %{_docdir}/patterns-base
%{_docdir}/patterns-base/base.txt

%files transactional
%dir %{_docdir}/patterns-base
%{_docdir}/patterns-base/base_transactional.txt

%files traditional
%dir %{_docdir}/patterns-base
%{_docdir}/patterns-base/base_traditional.txt

%files hardware
%dir %{_docdir}/patterns-base
%{_docdir}/patterns-base/hardware.txt

%files kvm_host
%dir %{_docdir}/patterns-base
%{_docdir}/patterns-base/kvm_host.txt

%files sssd-ldap
%dir %{_docdir}/patterns-base
%{_docdir}/patterns-base/sssd_ldap.txt

%files ima-evm
%dir %{_docdir}/patterns-base
%{_docdir}/patterns-base/ima_evm.txt

%files ra-agent
%dir %{_docdir}/patterns-base
%{_docdir}/patterns-base/ra_agent.txt

%files ra-verifier
%dir %{_docdir}/patterns-base
%{_docdir}/patterns-base/ra_verifier.txt

%files selinux
%dir %{_docdir}/patterns-base
%{_docdir}/patterns-base/selinux.txt

%files fips
%dir %{_docdir}/patterns-base
%{_docdir}/patterns-base/fips.txt

%files salt_minion
%dir %{_docdir}/patterns-base
%{_docdir}/patterns-base/salt_minion.txt

%files cockpit
%dir %{_docdir}/patterns-base
%{_docdir}/patterns-base/cockpit.txt

%files cloud
%dir %{_docdir}/patterns-base
%{_docdir}/patterns-base/cloud.txt

%files bootloader
%dir %{_docdir}/patterns-base
%{_docdir}/patterns-base/bootloader.txt

%files minimal_base
%dir %{_docdir}/patterns-base
%{_docdir}/patterns-base/minimal_base.txt


%changelog
openSUSE Build Service is sponsored by