84 lines
2.2 KiB
Bash
84 lines
2.2 KiB
Bash
|
#!/bin/sh
|
||
|
# Move all configs that were created/modified with legacy methods in
|
||
|
# post-install scripts.
|
||
|
|
||
|
if [ "$#" -lt 2 ]; then
|
||
|
echo "usage:"
|
||
|
echo " postmarketos-mvcfg-pre-upgrade dirname cfg [cfg ...]"
|
||
|
echo "example:"
|
||
|
echo " postmarketos-mvcfg-pre-upgrade \\"
|
||
|
echo " postmarketos-base \\"
|
||
|
echo " /etc/issue \\"
|
||
|
echo " /etc/fstab"
|
||
|
echo "more information:"
|
||
|
echo " https://postmarketos.org/mvcfg"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# Skip if "done" file exists. This is created in package() with
|
||
|
# postmarketos-mvcfg-package, so this script doesn't do anything if the package
|
||
|
# installed at pre-upgrade time is already using properly packaged configs.
|
||
|
dirname="$1"
|
||
|
if [ -e "/etc/postmarketos-mvcfg/done/$dirname" ]; then
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
# Only act on existing files
|
||
|
shift
|
||
|
cfgs_found=""
|
||
|
for i in "$@"; do
|
||
|
if [ -e "$i" ]; then
|
||
|
cfgs_found="$cfgs_found $i"
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
if [ -n "$cfgs_found" ]; then
|
||
|
# Create non-existing backupdir
|
||
|
backupdir="/etc/postmarketos-mvcfg/backup/$dirname"
|
||
|
while [ -d "$backupdir" ]; do
|
||
|
backupdir="${backupdir}_"
|
||
|
done
|
||
|
mkdir -p "$backupdir"
|
||
|
|
||
|
# Copy all configs first
|
||
|
for i in $cfgs_found; do
|
||
|
# Generate non-existing target path
|
||
|
# flatpath: /etc/issue -> etc-issue
|
||
|
flatpath="$(echo "$i" | sed s./.-.g | cut -d- -f2-)"
|
||
|
target="$backupdir/$flatpath"
|
||
|
while [ -e "$target" ]; do
|
||
|
target="${target}_"
|
||
|
done
|
||
|
|
||
|
cp -a "$i" "$target"
|
||
|
done
|
||
|
|
||
|
# Remove configs
|
||
|
for i in $cfgs_found; do
|
||
|
rm "$i"
|
||
|
done
|
||
|
|
||
|
# List moved configs
|
||
|
echo " *"
|
||
|
echo " * These configs were created with legacy packaging methods:"
|
||
|
for i in $cfgs_found; do
|
||
|
echo " * $i"
|
||
|
done
|
||
|
echo " *"
|
||
|
echo " * In order to replace them with properly packaged configs,"
|
||
|
echo " * the old versions (which you might have adjusted manually)"
|
||
|
echo " * were moved to:"
|
||
|
echo " * $backupdir"
|
||
|
echo " *"
|
||
|
echo " * If you did not manually adjust these configs, you can ignore"
|
||
|
echo " * this message."
|
||
|
echo " *"
|
||
|
echo " * More information: https://postmarketos.org/mvcfg"
|
||
|
echo " *"
|
||
|
fi
|
||
|
|
||
|
# Make sure that the "done" file exists, even if the packager forgot to call
|
||
|
# 'postmarketos-mvcfg-package' in package() of the APKBUILD.
|
||
|
mkdir -p "/etc/postmarketos-mvcfg/done"
|
||
|
touch "/etc/postmarketos-mvcfg/done/$dirname"
|