File suse-migration-sle16-activation.spec of Package suse-migration-sle16-activation

#
# spec file for package suse-migration-activation
#
# Copyright (c) 2022 SUSE LINUX GmbH, Nuernberg, Germany.
#
# 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 http://bugs.opensuse.org/
#
Name:             suse-migration-sle16-activation
Version:          2.1.27
Release:          0
Url:              https://github.com/SUSE/suse-migration-services
Summary:          SUSE Distribution SLE16 Migration Activation
License:          GPL-3.0+
Group:            System/Management
Source:           suse-migration-sle16-activation.tar.gz
BuildRoot:        %{_tmppath}/%{name}-%{version}-build
Conflicts:        suse-migration-services
BuildRequires:    grub2
Requires:         Migration >= 2.1.2
Requires:         grub2
Requires(post):   util-linux-systemd
Requires(postun): util-linux-systemd
Requires(pre):	  sed
Requires(pre):	  zypper
ExclusiveArch:    aarch64 ppc64le x86_64

%description -n suse-migration-sle16-activation
Script code to activate the SLE16 migration image to be booted at
next reboot of the machine.

%prep
%setup -q -n suse_migration_services-%{version}

%install
install -D -m 755 grub.d/99_migration \
    %{buildroot}/etc/grub.d/99_migration

%pre
# Prevent installation for CPUs that are too old
# SLE16 image panics on CPUs older than x86_64_v2 (i.e. x86_64) (bsc#1249593), so we need to block migration before getting into the image.
# We need the ZYPP_READONLY_HACK here since we are running inside a zypper transaction; without this the invocation of zypper will fail due to locking issues.
if [ "$(ZYPP_READONLY_HACK=1 zypper system-architecture)" == "x86_64" ]; then
    echo "CPU Architecture too old. Aborting installation."
    exit 1
fi

# store snapper pre snapshot if available
if [ -x /usr/bin/snapper ]; then
    PRE_SNAPSHOT=$(snapper -c root --machine-readable csv list --disable-used-space --columns subvolume,number,type 2>/dev/null| grep '^/,[^,]*,pre' |sed -e '$!d' -e 's|/,\([^,]*\),pre|\1|g')
    if [ "x$PRE_SNAPSHOT" != x ]; then
        echo $PRE_SNAPSHOT > /var/cache/suse_migration_snapper_btrfs_pre_snapshot_number
    fi
fi
# Setup wicked to NetworkManager migration files
if [ -x "$(command -v wicked)" ]; then
    mkdir -p /var/cache/wicked_config
    wicked show-config > /var/cache/wicked_config/config.xml
fi

# Create systemd.link file for VMWARE or Hyper-V virtual interfaces
for netdev in /sys/class/net/*; do
    dev=$(basename "$netdev")
    link_file=/etc/systemd/network/70-persistent-net-"$dev".link
    test -e "$link_file" && continue

    ! grep -E '^(00:0c:29:|00:50:56:|00:15:5d:)' \
        /sys/class/net/"$dev"/address >/dev/null && continue
    ID_PATH=$(
        udevadm info -q property --property=ID_PATH \
        /sys/class/net/"$dev"
    )
    ID_PATH=${ID_PATH#ID_PATH=}
    ID_NET_DRIVER=$(
        udevadm info -q property --property=ID_NET_DRIVER \
        /sys/class/net/"$dev"
    )
    ID_NET_DRIVER=${ID_NET_DRIVER#ID_NET_DRIVER=}
    if [ -z "$ID_PATH" ] || [ -z "$ID_NET_DRIVER" ]; then
        echo "[ERROR] failed to create systemd.link file for $dev"
        exit 1
    fi
    grep -sE '^Name="?'"$dev"'"?$' \
        /etc/systemd/network/*.link && continue
    grep -sE '^\s*[^#].*[ \t,]NAME="'"$dev"'"$' \
        /etc/udev/rules.d/*.rules && continue

    echo "Create $link_file with Path=$ID_PATH Driver=$ID_NET_DRIVER"
    cat > "$link_file" <<EOT
# This file was created from suse-migration-sle16-activation
[Match]
Path=$ID_PATH
Driver=$ID_NET_DRIVER

[Link]
NamePolicy=
Name=$dev
EOT

done

%post
/usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg

%postun
/usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg

%files
%defattr(-,root,root,-)
%dir /etc/grub.d
/etc/grub.d/*
%ghost /var/cache/suse_migration_snapper_btrfs_pre_snapshot_number

%changelog
openSUSE Build Service is sponsored by