xbps-triggers: improve dkms and system_accounts triggers. Bump to 0.13.

dkms: check correct version module via 'dkms status'.
system-accounts: it's possible now to create only system groups with 'system_groups'.
This commit is contained in:
Juan RP 2010-12-28 11:22:58 +01:00
parent 51a87084e6
commit 809bb752fa
3 changed files with 58 additions and 24 deletions

View file

@ -22,18 +22,24 @@ DKMS=usr/sbin/dkms
remove_modules() remove_modules()
{ {
local ver
# Remove the specified modules from all kernels. # Remove the specified modules from all kernels.
set -- ${dkms_modules} set -- ${dkms_modules}
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
if $DKMS status -m $1 | egrep -q '(added|built|installed)' > /dev/null; then $DKMS status -m $1 | while read line; do
echo -n "Removing DKMS module '$1-$2'... " if $(echo $line | egrep -vq '(added|built|installed)'); then
$DKMS remove -m $1 -v $2 --all >/dev/null 2>&1 shift; shift; continue
fi
ver=$(echo "$line" | sed "s/$1,\([^,]*\)[,:].*/\1/;t;d")
echo -n "Removing DKMS module '$1-$ver'... "
$DKMS remove -m $1 -v $ver --all >/dev/null 2>&1
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo "done." echo "done."
else else
echo "FAILED!" echo "FAILED!"
fi fi
fi done
shift; shift; shift; shift;
done done
} }

View file

@ -14,28 +14,44 @@ PKGNAME="$3"
VERSION="$4" VERSION="$4"
UPDATE="$5" UPDATE="$5"
useradd_cmd=usr/sbin/useradd USERADD=usr/sbin/useradd
userdel_cmd=usr/sbin/userdel USERDEL=usr/sbin/userdel
groupadd_cmd=usr/sbin/groupadd GROUPADD=usr/sbin/groupadd
passwd_cmd=usr/bin/passwd GROUPDEL=usr/sbin/groupdel
getent_cmd=usr/bin/getent PASSWD=usr/bin/passwd
GETENT=usr/bin/getent
group_add()
{
local grp="$1"
if ! $GETENT group ${grp} >/dev/null; then
$GROUPADD -r ${grp} >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo "Created ${grp} system group."
else
echo "Failed to create ${grp} system group!"
exit 1
fi
fi
}
case "$ACTION" in case "$ACTION" in
targets) targets)
echo "post-install pre-remove" echo "post-install pre-remove"
;; ;;
run) run)
if [ ! -x $useradd_cmd -a ! -x $groupadd_cmd -a ! -x $passwd_cmd \ if [ ! -x $USERADD -a ! -x $GROUPADD -a ! -x $PASSWD -a ! -x $GETENT ]; then
-a ! -x $getent_cmd ]; then
exit 0 exit 0
fi fi
if [ -z "$system_accounts" ]; then if [ -z "$system_accounts" -a -z "$system_groups" ]; then
exit 0 exit 0
fi fi
case "$TARGET" in case "$TARGET" in
post-install) post-install)
# System user/group required by a package.
for acct in ${system_accounts}; do for acct in ${system_accounts}; do
eval homedir="\$${acct}_homedir" eval homedir="\$${acct}_homedir"
eval shell="\$${acct}_shell" eval shell="\$${acct}_shell"
@ -46,20 +62,26 @@ run)
[ -z "$descr" ] && descr="$acct unpriviledged user" [ -z "$descr" ] && descr="$acct unpriviledged user"
[ -n "$groups" ] && groups="-G $groups" [ -n "$groups" ] && groups="-G $groups"
if ! $getent_cmd group ${acct} >/dev/null; then group_add $groups
$groupadd_cmd -r ${acct} \
2>&1 >/dev/null || exit $? if ! $GETENT passwd ${acct} >/dev/null; then
echo "Created ${acct} system group." $USERADD -c "$descr" -d "$homedir" \
fi
if ! $getent_cmd passwd ${acct} >/dev/null; then
$useradd_cmd -c "$descr" -d "$homedir" \
-s "$shell" -g ${acct} $groups \ -s "$shell" -g ${acct} $groups \
-r ${acct} && \ -r ${acct} && \
$passwd_cmd -l ${acct} \ $PASSWD -l ${acct} >/dev/null 2>&1
2>&1 >/dev/null || exit $? if [ $? -eq 0 ]; then
echo "Created ${acct} system user." echo "Created ${acct} system user."
else
echo "Failed to create ${acct} system user!"
exit 1
fi
fi fi
done done
# System groups required by a package.
for grp in ${system_groups}; do
group_add $grp
done
;; ;;
pre-remove) pre-remove)
# #
@ -67,11 +89,17 @@ run)
# #
if [ "$UPDATE" = "no" ]; then if [ "$UPDATE" = "no" ]; then
for acct in ${system_accounts}; do for acct in ${system_accounts}; do
$userdel_cmd ${acct} 2>&1 >/dev/null $USERDEL ${acct} >/dev/null 2>&1
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo "Removed ${acct} system user/group." echo "Removed ${acct} system user/group."
fi fi
done done
for grp in ${system_groups}; do
$GROUPDEL ${grp} >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo "Removed ${grp} system group."
fi
done
fi fi
;; ;;
esac esac

View file

@ -1,6 +1,6 @@
# Template file for 'xbps-triggers' # Template file for 'xbps-triggers'
pkgname=xbps-triggers pkgname=xbps-triggers
version=0.12 version=0.13
build_style=custom-install build_style=custom-install
short_desc="XBPS triggers" short_desc="XBPS triggers"
maintainer="Juan RP <xtraeme@gmail.com>" maintainer="Juan RP <xtraeme@gmail.com>"