Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package opensuse-migration-tool for
openSUSE:Factory checked in at 2025-07-30 11:45:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/opensuse-migration-tool (Old)
and /work/SRC/openSUSE:Factory/.opensuse-migration-tool.new.13279 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "opensuse-migration-tool"
Wed Jul 30 11:45:19 2025 rev:7 rq:1296382 version:20250729.4ed6ec5
Changes:
--------
---
/work/SRC/openSUSE:Factory/opensuse-migration-tool/opensuse-migration-tool.changes
2025-05-22 16:57:36.159784478 +0200
+++
/work/SRC/openSUSE:Factory/.opensuse-migration-tool.new.13279/opensuse-migration-tool.changes
2025-07-30 11:46:28.649454926 +0200
@@ -1,0 +2,8 @@
+Tue Jul 29 13:04:12 UTC 2025 - [email protected]
+
+- Update to version 20250729.4ed6ec5:
+ * Add a screen to disable 3rd party repos
+ * Add post-migration script support #30
+ * Drop --pre-release flag completely
+
+-------------------------------------------------------------------
Old:
----
opensuse-migration-tool-20250521.ab8700a.obscpio
New:
----
opensuse-migration-tool-20250729.4ed6ec5.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ opensuse-migration-tool.spec ++++++
--- /var/tmp/diff_new_pack.4NOhL5/_old 2025-07-30 11:46:29.325482890 +0200
+++ /var/tmp/diff_new_pack.4NOhL5/_new 2025-07-30 11:46:29.325482890 +0200
@@ -19,7 +19,7 @@
Name: opensuse-migration-tool
-Version: 20250521.ab8700a
+Version: 20250729.4ed6ec5
Release: 0
Summary: Migration and Upgrade tool for openSUSE
License: Apache-2.0
@@ -50,12 +50,19 @@
mkdir -p %{buildroot}/%{_datadir}/%{name}
cp SLES.prod %{buildroot}/%{_datadir}/%{name}/SLES.prod
+# Install scripts directory
+cp -a scripts %{buildroot}/%{_datadir}/%{name}/
+
%check
%files
%defattr(644,root,root,755)
%attr(0755, root, root) %{_sbindir}/%{name}
%{_datadir}/%{name}
+%{_datadir}/%{name}/scripts
+%dir %{_datadir}/%{name}
+%dir %{_datadir}/%{name}/scripts
+%attr(0755, root, root) %{_datadir}/%{name}/scripts/*
%attr(0644, root, root) %{_datadir}/%{name}/SLES.prod
%license LICENSE
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.4NOhL5/_old 2025-07-30 11:46:29.365484545 +0200
+++ /var/tmp/diff_new_pack.4NOhL5/_new 2025-07-30 11:46:29.369484711 +0200
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param
name="url">https://github.com/openSUSE/opensuse-migration-tool.git</param>
- <param
name="changesrevision">ab8700ab2ffe64b80bc21f20ff554b74e91ed8b0</param></service></servicedata>
+ <param
name="changesrevision">4ed6ec561640b43eadfdcf2fb6b0474816a97b65</param></service></servicedata>
(No newline at EOF)
++++++ opensuse-migration-tool-20250521.ab8700a.obscpio ->
opensuse-migration-tool-20250729.4ed6ec5.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/opensuse-migration-tool-20250521.ab8700a/opensuse-migration-tool
new/opensuse-migration-tool-20250729.4ed6ec5/opensuse-migration-tool
--- old/opensuse-migration-tool-20250521.ab8700a/opensuse-migration-tool
2025-05-21 12:29:53.000000000 +0200
+++ new/opensuse-migration-tool-20250729.4ed6ec5/opensuse-migration-tool
2025-07-29 15:01:42.000000000 +0200
@@ -19,6 +19,30 @@
# For accessing files from git checkout
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
+# Script dir for git-based execution
+POST_MIGRATION_DIR="$SCRIPT_DIR/scripts"
+
+# Migration scripts naming convention:
+# Prefix numbers define execution order. Inspired by /etc/grub.d
+# Use multiples of 5 or 10 for flexibility, e.g.:
+# 05_ for very core low-level tasks,
+# 20_ for pulse2pipewire migration,
+# 30_ and above for desktop environment or user session tweaks.
+#
+# Example:
+# 20_pulse2pipewire.sh # Switch PulseAudio to PipeWire early but after core
system tasks.
+
+# Fallback to installed location if not found
+if [[ ! -d "$POST_MIGRATION_DIR" ]]; then
+ POST_MIGRATION_DIR="/usr/share/opensuse-migration-tool/scripts"
+fi
+
+# Warn if not found at all
+if [[ ! -d "$POST_MIGRATION_DIR" ]]; then
+ echo "[ERROR] Post-migration script directory not found:
$POST_MIGRATION_DIR"
+ exit 1
+fi
+
# Set nice green instead of default blue
if [[ $COLORTERM =~ ^(truecolor|24bit)$ ]]; then
@@ -30,7 +54,8 @@
fi
# Ensure required tools are installed
-REQUIRED_TOOLS=("bc" "jq" "curl" "dialog" "sed" "gawk")
+# Double check for zypper in case we're on dnf-based system
+REQUIRED_TOOLS=("bc" "jq" "curl" "dialog" "sed" "gawk" "zypper")
for tool in "${REQUIRED_TOOLS[@]}"; do
if ! command -v "$tool" &>/dev/null; then
echo "$tool is required but not installed."
@@ -61,22 +86,23 @@
exit 3
fi
DRYRUN=""
-PRERELEASE=""
TMP_REPO_NAME="tmp-migration-tool-repo" # tmp repo to get sles-release or
openSUSE-repos-*
# Initialize MIGRATION_OPTIONS as an empty associative array
declare -A MIGRATION_OPTIONS=()
+declare -A AVAILABLE_TASKS=()
+
CURRENT_INDEX=1
# Parse command-line arguments
function print_help() {
- echo "Usage: opensuse-migration-tool [--pre-release] [--dry-run] [--help]"
- echo " --pre-release Include pre-release versions in the migration
options."
+ echo "Usage: opensuse-migration-tool [--dry-run] [--help]"
echo " --dry-run Show commands without executing them."
echo " --help Show this help message and exit."
+ echo
+ echo "Report issues: https://github.com/openSUSE/opensuse-migration-tool"
exit 0
}
while [[ $# -gt 0 ]]; do
case $1 in
- --pre-release) PRERELEASE="YES"; shift ;;
--dry-run) DRYRUN="echo Would execute: "; shift ;;
--help) print_help ;;
*) echo "Unknown option: $1"; exit 1 ;;
@@ -139,11 +165,7 @@
if [[ "$NAME" == "openSUSE Leap Micro" ]]; then
MIGRATION_OPTIONS["$CURRENT_INDEX"]="MicroOS"
((CURRENT_INDEX++))
- if [[ $PRERELEASE ]]; then
- populate_options "LeapMicro" "$VERSION" '.state!="EOL"'
- else
- populate_options "LeapMicro" "$VERSION" '.state=="Stable"'
- fi
+ populate_options "LeapMicro" "$VERSION" '.state!="EOL"'
elif [[ "$NAME" == "openSUSE Leap" ]]; then
MIGRATION_OPTIONS["$CURRENT_INDEX"]="SUSE Linux Enterprise $(sed 's/\./
SP/' <<<"$VERSION")"
((CURRENT_INDEX++))
@@ -151,11 +173,7 @@
((CURRENT_INDEX++))
MIGRATION_OPTIONS["$CURRENT_INDEX"]="openSUSE Tumbleweed-Slowroll"
((CURRENT_INDEX++))
- if [[ $PRERELEASE ]]; then
- populate_options "Leap" "$VERSION" '.state!="EOL"'
- else
- populate_options "Leap" "$VERSION" '.state=="Stable"'
- fi
+ populate_options "Leap" "$VERSION" '.state!="EOL"'
elif [[ "$NAME" == "openSUSE Tumbleweed" ]]; then
MIGRATION_OPTIONS["$CURRENT_INDEX"]="openSUSE Tumbleweed-Slowroll"
((CURRENT_INDEX++))
@@ -178,8 +196,6 @@
--msgbox "\nNo migration options available from $NAME.\n\nPlease report
issue at https://github.com/openSUSE/opensuse-migration-tool." \
10 60
reset; exit 1
- echo "."
-
fi
# Prepare dialog items
DIALOG_ITEMS=()
@@ -227,8 +243,57 @@
fi
done
}
-# Clear the screen and handle the user choice
-clear
+
+# Step: Detect and offer to disable 3rd-party repositories
+# This is the #1 reason for failed migration
+REPO_LIST=()
+
+# Known 3rd party repos with no $releasever or hardcoded version
+exceptions=("google-chrome" )
+
+while IFS="|" read -r num alias name enabled rest; do
+ alias=$(echo "$alias" | xargs) # trim
+ name=$(echo "$name" | xargs)
+ enabled=$(echo "$enabled" | xargs)
+
+ if [[ "$enabled" == "Yes" ]] && \
+ [[ ! "$alias" =~ ^(openSUSE:|NVIDIA:) ]]; then
+ if [[ " ${exceptions[*]} " == *" $alias "* ]]; then
+ REPO_LIST+=("$alias" "$name" "off")
+ else
+ REPO_LIST+=("$alias" "$name" "on")
+ fi
+ fi
+done < <(zypper lr -E -d --uri | tail -n +3 | awk -F '|' '{print $1 "|" $2 "|"
$3 "|" $4}')
+
+if [[ ${#REPO_LIST[@]} -eq 0 ]]; then
+ echo "[INFO] No third-party repositories to disable."
+else
+ checklist_msg=$(
+cat <<EOF
+The following enabled repositories are not recognized.
+It is strongly recommended to disable them before proceeding with the
migration.
+
+Such repositories often have hardcoded URLs or may not yet offer packages
+for the target release. This can cause \`zypper dup\` to fail if a repository
+is unreachable or incompatible.
+
+You can deselect any repositories you prefer to keep enabled:
+EOF
+)
+ SELECTED_REPOS=$(dialog --clear \
+ --title "Disable Third-Party Repositories" \
+ --checklist "$checklist_msg" \
+ 20 80 10 \
+ "${REPO_LIST[@]}" \
+ 2>&1 >/dev/tty)
+
+ for repo in $SELECTED_REPOS; do
+ echo "[INFO] Disabling repository: $repo"
+ $DRYRUN zypper --non-interactive modifyrepo -d "$repo"
+ done
+fi
+
if [[ -n $CHOICE ]]; then
echo "Selected option: ${MIGRATION_OPTIONS[$CHOICE]}"
case "${MIGRATION_OPTIONS[$CHOICE]}" in
@@ -291,9 +356,6 @@
$DRYRUN cp /etc/os-release /etc/os-release.backup
$DRYRUN rpm -e --nodeps openSUSE-release
$DRYRUN rpm -e --nodeps openSUSE-repos
- # Backup the release
- echo "Backing up /etc/os-release as /etc/os-release.backup"
- $DRYRUN cp /etc/os-release /etc/os-release.backup
if [ -z "$DRYRUN" ]; then
cat > /etc/os-release << EOL
NAME="SLES"
@@ -311,11 +373,10 @@
fi
if [ -f "$SCRIPT_DIR/SLES.prod" ]; then
- $DRYRUN cp $SCRIPT_DIR/SLES.prod /etc/products.d
+ $DRYRUN cp "$SCRIPT_DIR/SLES.prod"
/etc/products.d
else
$DRYRUN cp
/usr/share/opensuse-migration-tool/SLES.prod /etc/products.d
fi
- $DRYRUN cp SLES.prod /etc/products.d/
$DRYRUN rm -r /etc/products.d/baseproduct
$DRYRUN ln -s /etc/products.d/SLES.prod /etc/products.d/baseproduct
if [ -z "$DRYRUN" ]; then
@@ -443,6 +504,43 @@
exit 1
fi
+# Migration scripts, keep the desc short
+
+for script in "$POST_MIGRATION_DIR"/*.sh; do
+ name=$(basename "$script" .sh)
+ if "$script" --check; then
+ case "$name" in
+ "20_pulse2pipewire") desc="Switch to PipeWire" ;;
+ *) desc="Run $name" ;;
+ esac
+ AVAILABLE_TASKS["$name"]="$desc"
+ fi
+done
+
+if [[ ${#AVAILABLE_TASKS[@]} -gt 0 ]]; then
+ CHECKLIST_ITEMS=()
+ for key in "${!AVAILABLE_TASKS[@]}"; do
+ CHECKLIST_ITEMS+=("$key" "${AVAILABLE_TASKS[$key]}" "on")
+ done
+ SELECTED_TASKS=$(dialog --clear \
+ --title "Post-Migration Optional Tasks" \
+ --checklist "Select tasks to run after system upgrade:" \
+ 20 70 10 \
+ "${CHECKLIST_ITEMS[@]}" \
+ 2>&1 >/dev/tty)
+else
+ echo "[INFO] No available post-migration tasks."
+fi
+
+# Basic ordering of execution
+# We use prefixes and simple string comparison e.g. scripts/05_script.sh ...
+sorted_selected_tasks=$(echo $SELECTED_TASKS | tr ' ' '\n' | sort)
+for task in $sorted_selected_tasks; do
+ SCRIPT="$POST_MIGRATION_DIR/$task.sh"
+ echo "[INFO] Running post-migration task: $task"
+ $DRYRUN $SCRIPT
+done
+
#dialog --clear \
# --backtitle "[EXPERIMENTAL] Migration tool" \
# --title "Migration process completed" \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/opensuse-migration-tool-20250521.ab8700a/scripts/20_pulse2pipewire.sh
new/opensuse-migration-tool-20250729.4ed6ec5/scripts/20_pulse2pipewire.sh
--- old/opensuse-migration-tool-20250521.ab8700a/scripts/20_pulse2pipewire.sh
1970-01-01 01:00:00.000000000 +0100
+++ new/opensuse-migration-tool-20250729.4ed6ec5/scripts/20_pulse2pipewire.sh
2025-07-29 15:01:42.000000000 +0200
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+# Pipewire is the new default in Leap 16.0+
+# https://code.opensuse.org/leap/features/issue/140
+# https://en.opensuse.org/openSUSE:Pipewire#Installation
+
+set -euo pipefail
+
+log() {
+ echo "[MIGRATION] $1"
+}
+
+error_exit() {
+ echo "[MIGRATION][ERROR] $1" >&2
+ exit 1
+}
+
+# This is used to generate dynamic list of tasks
+if [[ "${1:-}" == "--check" ]]; then
+ if rpm -q pulseaudio &>/dev/null && zypper se -x pipewire-pulseaudio
&>/dev/null; then
+ exit 0
+ else
+ exit 1
+ fi
+fi
+
+log "Starting PulseAudio to PipeWire migration..."
+
+# Check if pipewire-pulseaudio is already installed
+if rpm -q pipewire-pulseaudio >/dev/null 2>&1; then
+ log "Package pipewire-pulseaudio is already installed. Skipping."
+ exit 0
+fi
+
+# Check if pulseaudio was ever installed
+if ! rpm -q pulseaudio >/dev/null 2>&1; then
+ log "Package pulseaudio is not installed. Assuming minimal system.
Skipping."
+ exit 0
+fi
+
+log "Installing packages: pipewire-pulseaudio and ensure
wireplumber-video-only-profile is removed"
+if sudo zypper --non-interactive install --force-resolution
pipewire-pulseaudio -wireplumber-video-only-profile; then
+ log "Migration completed successfully."
+else
+ error_exit "Package installation failed. Please check zypper logs or try
again manually."
+fi
++++++ opensuse-migration-tool.obsinfo ++++++
--- /var/tmp/diff_new_pack.4NOhL5/_old 2025-07-30 11:46:29.485489509 +0200
+++ /var/tmp/diff_new_pack.4NOhL5/_new 2025-07-30 11:46:29.489489675 +0200
@@ -1,5 +1,5 @@
name: opensuse-migration-tool
-version: 20250521.ab8700a
-mtime: 1747823393
-commit: ab8700ab2ffe64b80bc21f20ff554b74e91ed8b0
+version: 20250729.4ed6ec5
+mtime: 1753794102
+commit: 4ed6ec561640b43eadfdcf2fb6b0474816a97b65