opensc/MacOSX/scripts/postinstall

64 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
# copy libs to /usr/local/lib
cp /Library/OpenSC/lib/opensc-pkcs11.so \
/Library/OpenSC/lib/onepin-opensc-pkcs11.so \
/usr/local/lib/
# install opensc.conf if it hasn't been locally modified
# shellcheck disable=SC2043
for f in /Library/OpenSC/etc/opensc.conf; do
if [ -e "${f}.md5" ]; then
read -r cs_fromfile _ < "${f}.md5"
cs_calculated="$(md5 -q "${f}")"
if [ "$cs_fromfile" != "$cs_calculated" ]; then
echo "config ${f} was locally modified since last install, skipping" 2>&1
continue
fi
fi
cp "${f}.orig" "$f"
md5 -r "$f" >"${f}.md5"
done
# symlink other files to /usr/local
for f in \
/Library/OpenSC/bin/* \
/Library/OpenSC/etc/bash_completion.d/* \
/Library/OpenSC/share/doc/*
do
[ -e "$f" ] || continue # keep this or set "shopt -s nullglob"
a=/Library/OpenSC
b=/usr/local
l="${f/$a/$b}" # parameter expansion, returns $f where $a is replaced by $b
mkdir -p "$(dirname "$l")"
ln -sf "$f" "$l"
done
# correct past issue where a literal shell glob character was symlinked
# e.g. /usr/local/share/man/man1/* -> /Library/OpenSC/share/man/man1/*
# maybe remove this step post 2022?
for f in \
'/usr/local/share/man/man1/*' \
'/usr/local/share/man/man5/*'
do
[ -L "$f" ] || continue # skip unless $f is a symlink
t="$(readlink "$f")"
[ -e "$t" ] && continue # skip if the symlink target actually exists
a=/usr/local
b=/Library/OpenSC
[ "$t" = "${f/$a/$b}" ] || continue # skip unless the target is in the corresponding /Library/OpenSC subdirectory
# we can now assume that we originally made $f and can safely remove it
unlink "$f"
done
# register the launch agents
for f in \
/Library/LaunchAgents/org.opensc-project.mac.pkcs11-register.plist \
/Library/LaunchAgents/org.opensc-project.mac.opensc-notify.plist
do
[ -e "$f" ] || continue
/bin/launchctl asuser "$(id -u "$USER")" /bin/launchctl load "$f" || true
done
exit 0