mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-04-12 19:36:48 +02:00
https://www.libelektra.org A universal and secure framework to access configuration parameters
57 lines
1.6 KiB
Bash
57 lines
1.6 KiB
Bash
#!/bin/sh
|
|
#
|
|
# This trigger creates/updates symlinks for default resolver and storage based
|
|
# on installed packages.
|
|
#
|
|
|
|
ELEKTRA_LIBS='/usr/lib/elektra'
|
|
RESOLVER_LINK="$ELEKTRA_LIBS/libelektra-resolver.so"
|
|
STORAGE_LINK="$ELEKTRA_LIBS/libelektra-storage.so"
|
|
|
|
PREFERRED_RESOLVER='elektra-resolver_fm_hpu_b'
|
|
PREFERRED_STORAGE='elektra-dump'
|
|
|
|
|
|
# Prints name of some installed elektra package that *provides* $1
|
|
# (e.g. resolver, storage). If package $2 is installed, then it prints that.
|
|
# Otherwise it prints name of the first found package based on alphabetical
|
|
# order.
|
|
find_installed_provider() {
|
|
local provider="$1"
|
|
local preferred="$2"
|
|
local pkgname
|
|
|
|
if [ -e "$ELEKTRA_LIBS/lib$preferred.so" ]; then
|
|
echo "$preferred"
|
|
else
|
|
# NOTE: `apk info` doesn't work correctly here, probably
|
|
# due to apk DB lock or something like that.
|
|
for pkgname in $(apk search -aqx elektra-$provider | sort | uniq); do
|
|
if [ -e "$ELEKTRA_LIBS/lib$pkgname.so" ]; then
|
|
echo "$pkgname"
|
|
return 0
|
|
fi
|
|
done
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
if ! [ -e "$RESOLVER_LINK" ]; then
|
|
if resolver=$(find_installed_provider resolver $PREFERRED_RESOLVER); then
|
|
echo "elektra: Switching default resolver to ${resolver#elektra-}" >&2
|
|
ln -sf "lib$resolver.so" "$RESOLVER_LINK"
|
|
else
|
|
echo "elektra: No resolver provider found!" >&2
|
|
fi
|
|
fi
|
|
|
|
if ! [ -e "$STORAGE_LINK" ]; then
|
|
if storage=$(find_installed_provider storage $PREFERRED_STORAGE); then
|
|
echo "elektra: Switching default storage to ${storage#elektra-}" >&2
|
|
ln -sf "lib$storage.so" "$STORAGE_LINK"
|
|
else
|
|
echo "elektra: No storage provider found!" >&2
|
|
fi
|
|
fi
|
|
|
|
exit 0
|