File suse-migration-services.spec of Package suse-migration-services

#
# spec file for package suse-migration-services
#
# 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/
#
%if 0%{?suse_version} >= 1600
%define pythons %{primary_python}
%define pythonpkgname suse-migration-services-common
%else
%define pythons python3
%define pythonpkgname %{pythons}-migration
%endif

Name:             suse-migration-services
Version:          2.1.25
Release:          0
Url:              https://github.com/SUSE/suse-migration-services
Summary:          SUSE Distribution Migration Services
License:          GPL-3.0+
Group:            System/Management
Source0:          suse-migration-services.tar.gz
Source1:          suse-migration-services-rpmlintrc
BuildRoot:        %{_tmppath}/%{name}-%{version}-build
BuildRequires:    fdupes
BuildRequires:    python-rpm-macros
%if 0%{?suse_version} >= 1600
BuildRequires:    %{pythons}-poetry-core
%endif
BuildRequires:    %{pythons}-setuptools
BuildRequires:    %{pythons}-Cerberus
BuildRequires:    %{pythons}-PyYAML
%if 0%{?suse_version} >= 1600
BuildRequires:    %{pythons}-pip
BuildRequires:    %{pythons}-wheel
%endif
BuildRequires:    systemd-rpm-macros
Requires:         %{pythons}-Cerberus
Requires:         %{pythons}-PyYAML
Requires:         %{pythons}-setuptools
Requires:         %{pythonpkgname} = %{version}-%{release}
Requires:         util-linux
Requires:         kexec-tools
Requires:         ca-certificates
Requires:         dialog
Requires:         kbd
Requires:         rsync
Requires:         suseconnect-ng
Requires(preun):  systemd
Requires(postun): systemd
BuildArch:        noarch

%description
Systemd services to prepare and run a distribution migration process.

%package          -n  %{pythonpkgname}
Summary:          The systemd services for the python migration module
Group:            System/Management
%if 0%{?suse_version} >= 1600
Obsoletes:	  python3-migration <= %{version}
Provides:	  python3-migration = %{version}-%{release}
%endif

%description -n  %{pythonpkgname}
Python based implementation for suse major code stream upgrade system

%package          -n suse-migration-pre-checks
Summary:          The pre-checks code used with the python migration module
Group:            System/Management
Requires:         %{pythons}-lxml
Requires:         %{pythons}-requests
Requires:         %{pythonpkgname} = %{version}-%{release}
Requires:         %{pythons}-Cerberus
Requires:         %{pythons}-PyYAML
Requires:         %{pythons}-setuptools
%if 0%{?suse_version} >= 1500
Requires:         wicked2nm
%endif
Conflicts:        suse-migration-sle15-activation < 2.0.33
Conflicts:        suse-migration-sle16-activation < 2.0.33

%description -n suse-migration-pre-checks
Checks to be performed before starting a distribution migration process

%package          -n suse-migration
Summary:          The migrate tool for a container based upgrade
Group:            System/Management
Requires:         podman
Requires:         sysvinit-tools
Requires:         sudo
BuildArch:        noarch

%description -n suse-migration
The migrate tool to start the migration as container based process

%prep
%autosetup -p1 -n suse_migration_services-%{version}

%build
%if 0%{?suse_version} >= 1600
%pyproject_wheel
%else
%python_build
%endif

%install
%if 0%{?suse_version} >= 1600
%pyproject_install
%else
%python_install
%endif
%python_expand %fdupes %{buildroot}%{python_sitelib}/

install -D -m 755 tools/run_migration \
    %{buildroot}%{_sbindir}/run_migration

install -D -m 644 systemd/suse-migration-mount-system.service \
    %{buildroot}%{_unitdir}/suse-migration-mount-system.service

install -D -m 644 systemd/suse-migration-pre-checks.service \
    %{buildroot}%{_unitdir}/suse-migration-pre-checks.service

install -D -m 644 systemd/suse-migration-post-mount-system.service \
    %{buildroot}%{_unitdir}/suse-migration-post-mount-system.service

install -D -m 644 systemd/suse-migration-setup-host-network.service \
    %{buildroot}%{_unitdir}/suse-migration-setup-host-network.service

install -D -m 644 systemd/suse-migration-setup-name-resolver.service \
    %{buildroot}%{_unitdir}/suse-migration-setup-name-resolver.service

install -D -m 644 systemd/suse-migration-prepare.service \
    %{buildroot}%{_unitdir}/suse-migration-prepare.service

install -D -m 644 systemd/suse-migration.service \
    %{buildroot}%{_unitdir}/suse-migration.service

install -D -m 644 systemd/suse-migration-grub-setup.service \
    %{buildroot}%{_unitdir}/suse-migration-grub-setup.service

install -D -m 644 systemd/suse-migration-update-bootloader.service \
    %{buildroot}%{_unitdir}/suse-migration-update-bootloader.service

install -D -m 644 systemd/suse-migration-product-setup.service \
    %{buildroot}%{_unitdir}/suse-migration-product-setup.service

install -D -m 644 systemd/suse-migration-regenerate-initrd.service \
    %{buildroot}%{_unitdir}/suse-migration-regenerate-initrd.service

install -D -m 644 systemd/suse-migration-kernel-load.service \
    %{buildroot}%{_unitdir}/suse-migration-kernel-load.service

install -D -m 644 systemd/suse-migration-reboot.service \
    %{buildroot}%{_unitdir}/suse-migration-reboot.service

install -D -m 644 systemd/suse-migration-ssh-keys.service \
    %{buildroot}%{_unitdir}/suse-migration-ssh-keys.service

install -D -m 644 systemd/suse-migration-console-log.service \
    %{buildroot}%{_unitdir}/suse-migration-console-log.service

install -D -m 644 systemd/suse-migration-apparmor-selinux.service \
    %{buildroot}%{_unitdir}/suse-migration-apparmor-selinux.service

install -D -m 644 systemd/suse-migration-wicked-networkmanager.service \
    %{buildroot}%{_unitdir}/suse-migration-wicked-networkmanager.service

install -D -m 644 systemd/suse-migration-ha.service \
    %{buildroot}%{_unitdir}/suse-migration-ha.service

install -D -m 644 systemd/suse-migration-btrfs-snapshot-pre-migration.service \
    %{buildroot}%{_unitdir}/suse-migration-btrfs-snapshot-pre-migration.service

install -D -m 644 systemd/suse-migration-container.service \
    %{buildroot}%{_unitdir}/suse-migration-container.service

install -D -m 644 systemd/suse-migration-container-prepare.service \
    %{buildroot}%{_unitdir}/suse-migration-container-prepare.service

install -D -m 644 systemd/suse-migration-container-product-setup.service \
    %{buildroot}%{_unitdir}/suse-migration-container-product-setup.service

install -D -m 644 systemd/suse-migration-container-reboot.service \
    %{buildroot}%{_unitdir}/suse-migration-container-reboot.service

install -D -m 644 systemd/suse-migration-container-emergency.service \
    %{buildroot}%{_unitdir}/suse-migration-container-emergency.service

install -D -m 644 systemd/suse-migration-container-apparmor-selinux.service \
    %{buildroot}%{_unitdir}/suse-migration-container-apparmor-selinux.service

install -D -m 644 systemd/suse-migration-container-btrfs-snapshot-post-migration.service \
    %{buildroot}%{_unitdir}/suse-migration-container-btrfs-snapshot-post-migration.service

install -D -m 644 systemd/suse-migration-container-grub-setup.service \
    %{buildroot}%{_unitdir}/suse-migration-container-grub-setup.service

install -D -m 644 systemd/suse-migration-container-ha.service \
    %{buildroot}%{_unitdir}/suse-migration-container-ha.service

install -D -m 644 systemd/suse-migration-container-regenerate-initrd.service \
    %{buildroot}%{_unitdir}/suse-migration-container-regenerate-initrd.service

install -D -m 644 systemd/suse-migration-container-wicked-networkmanager.service \
    %{buildroot}%{_unitdir}/suse-migration-container-wicked-networkmanager.service

install -D -m 644 systemd/suse-migration-container-btrfs-snapshot-pre-migration.service \
    %{buildroot}%{_unitdir}/suse-migration-container-btrfs-snapshot-pre-migration.service

install -D -m 644 systemd/suse-migration-btrfs-snapshot-post-migration.service \
    %{buildroot}%{_unitdir}/suse-migration-btrfs-snapshot-post-migration.service

install -D -m 755 tools/migrate \
    %{buildroot}%{_sbindir}/migrate

# preun / postun
# While the package provides services all services are one-shot.
# Additionally this services runs as part of a live ISO migration
# system which is used and booted only once. It's contents are
# packed into a readonly squashfs layer. Therefore there is no
# need for use of the "standard" systemd service handling macros.

%files
%{_sbindir}/run_migration
%{_bindir}/suse-migration-apparmor-selinux
%{_bindir}/suse-migration-ssh-keys
%{_bindir}/suse-migration-btrfs-snapshot-pre-migration
%{_bindir}/suse-migration-btrfs-snapshot-post-migration
%{_bindir}/suse-migration-mount-system
%{_bindir}/suse-migration-post-mount-system
%{_bindir}/suse-migration-setup-host-network
%{_bindir}/suse-migration-setup-name-resolver
%{_bindir}/suse-migration-prepare
%{_bindir}/suse-migration
%{_bindir}/suse-migration-grub-setup
%{_bindir}/suse-migration-update-bootloader
%{_bindir}/suse-migration-product-setup
%{_bindir}/suse-migration-regenerate-initrd
%{_bindir}/suse-migration-kernel-load
%{_bindir}/suse-migration-reboot
%{_bindir}/suse-migration-wicked-networkmanager
%{_bindir}/suse-migration-ha
%{_unitdir}/suse-migration-ssh-keys.service
%{_unitdir}/suse-migration-btrfs-snapshot-pre-migration.service
%{_unitdir}/suse-migration-mount-system.service
%{_unitdir}/suse-migration-post-mount-system.service
%{_unitdir}/suse-migration-setup-host-network.service
%{_unitdir}/suse-migration-setup-name-resolver.service
%{_unitdir}/suse-migration-prepare.service
%{_unitdir}/suse-migration.service
%{_unitdir}/suse-migration-container.service
%{_unitdir}/suse-migration-container-prepare.service
%{_unitdir}/suse-migration-container-product-setup.service
%{_unitdir}/suse-migration-container-reboot.service
%{_unitdir}/suse-migration-container-emergency.service
%{_unitdir}/suse-migration-container-btrfs-snapshot-pre-migration.service
%{_unitdir}/suse-migration-container-apparmor-selinux.service
%{_unitdir}/suse-migration-container-btrfs-snapshot-post-migration.service
%{_unitdir}/suse-migration-container-grub-setup.service
%{_unitdir}/suse-migration-container-ha.service
%{_unitdir}/suse-migration-container-regenerate-initrd.service
%{_unitdir}/suse-migration-container-wicked-networkmanager.service
%{_unitdir}/suse-migration-console-log.service
%{_unitdir}/suse-migration-apparmor-selinux.service
%{_unitdir}/suse-migration-grub-setup.service
%{_unitdir}/suse-migration-update-bootloader.service
%{_unitdir}/suse-migration-product-setup.service
%{_unitdir}/suse-migration-regenerate-initrd.service
%{_unitdir}/suse-migration-btrfs-snapshot-post-migration.service
%{_unitdir}/suse-migration-kernel-load.service
%{_unitdir}/suse-migration-reboot.service
%{_unitdir}/suse-migration-wicked-networkmanager.service
%{_unitdir}/suse-migration-ha.service

%files -n %{pythonpkgname}
%{python_sitelib}/suse_migration_services
%{python_sitelib}/suse_migration_services-%{version}*-info

%files -n suse-migration-pre-checks
%{_bindir}/suse-migration-pre-checks
%{_unitdir}/suse-migration-pre-checks.service

%files -n suse-migration
%{_sbindir}/migrate

%changelog
openSUSE Build Service is sponsored by