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