main/postmarketos-mvcfg: new package (MR 1713)
Add scripts to move configs from legacy packaging, as described at: https://postmarketos.org/mvcfg
This commit is contained in:
parent
c108a5a8d1
commit
4d6a1a2458
4 changed files with 123 additions and 0 deletions
|
@ -36,6 +36,7 @@ sh_files="
|
|||
|
||||
$(find . -name '*.trigger')
|
||||
$(find . -path './main/devicepkg-dev/*.sh')
|
||||
$(find . -path './main/postmarketos-mvcfg/*.sh')
|
||||
|
||||
$(find . -path '.gitlab-ci/*.sh')
|
||||
"
|
||||
|
|
22
main/postmarketos-mvcfg/APKBUILD
Normal file
22
main/postmarketos-mvcfg/APKBUILD
Normal file
|
@ -0,0 +1,22 @@
|
|||
# Maintainer: Oliver Smith <ollieparanoid@postmarketos.org>
|
||||
pkgname=postmarketos-mvcfg
|
||||
pkgver=1
|
||||
pkgrel=0
|
||||
pkgdesc="Move configs from legacy packaging"
|
||||
url="https://postmarketos.org/mvcfg"
|
||||
arch="noarch"
|
||||
license="GPL-3.0-or-later"
|
||||
options="!check !tracedeps pmb:cross-native"
|
||||
source="
|
||||
postmarketos-mvcfg-pre-upgrade.sh
|
||||
postmarketos-mvcfg-package.sh
|
||||
"
|
||||
|
||||
package() {
|
||||
for script in pre-upgrade package; do
|
||||
install -Dm755 "postmarketos-mvcfg-$script.sh" \
|
||||
"$pkgdir/usr/bin/postmarketos-mvcfg-$script"
|
||||
done
|
||||
}
|
||||
sha512sums="58affac657b588a8a1f3370aa649cbc4077206cc237a6180b9533e85108394eedbb10e4b71bb8aecafdbdfc0de820b116b8baa9a6c3fe44272da06a9a5d11d52 postmarketos-mvcfg-pre-upgrade.sh
|
||||
82ae4ccc8de87acf1c40e8c6bfb9bd1d0e7eff11055e231000304000dec87de04dc988125aad8a60a8266a21b90da2e14c9605d29b0748ad3cbf5a92dd00910a postmarketos-mvcfg-package.sh"
|
17
main/postmarketos-mvcfg/postmarketos-mvcfg-package.sh
Normal file
17
main/postmarketos-mvcfg/postmarketos-mvcfg-package.sh
Normal file
|
@ -0,0 +1,17 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
pkgdir="$1"
|
||||
dirname="$2"
|
||||
|
||||
if [ -z "$dirname" ] || ! [ -d "$pkgdir" ]; then
|
||||
echo "usage:"
|
||||
# shellcheck disable=SC2016
|
||||
echo ' postmarketos-mvcfg-package "$pkgname" "$pkgdir"'
|
||||
echo "more information:"
|
||||
echo " https://postmarketos.org/mvcfg"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create "done" file, so postmarketos-mvcfg-pre-upgrade doesn't do anything
|
||||
mkdir -p "$pkgdir/etc/postmarketos-mvcfg/done"
|
||||
touch "$pkgdir/etc/postmarketos-mvcfg/done/$dirname"
|
83
main/postmarketos-mvcfg/postmarketos-mvcfg-pre-upgrade.sh
Normal file
83
main/postmarketos-mvcfg/postmarketos-mvcfg-pre-upgrade.sh
Normal file
|
@ -0,0 +1,83 @@
|
|||
#!/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"
|
Loading…
Reference in a new issue