pkgsrc/mk/install/deinstall
jlam c850f81b61 Common INSTALL/DEINSTALL scripts and Makefile magic to automatically perform
many of the tasks that need to be done when package is installed or
deinstalled:

	* creating user/group for the package,

	* creating and removing directories with special permissions and
	  ownership,

	* copying config files to their final locations, and removing them
	  at deinstall time if they don't differ from the example ones,

	* reminding the package admin of files he may want to customize or
	  of files/directories he may want to remove.
2001-11-19 16:18:44 +00:00

153 lines
2.8 KiB
Text

# start of deinstall
#
# $NetBSD: deinstall,v 1.1 2001/11/19 16:18:44 jlam Exp $
ALL_FILES="${CONF_FILES} ${SUPPORT_FILES} ${RCD_SCRIPTS}"
set -- ${CONF_FILES_PERMS}
while [ $# -gt 0 ]
do
samplefile="$1"; file="$2"; owner="$3"; group="$4"; mode="$5"
shift; shift; shift; shift; shift
ALL_FILES="${ALL_FILES} ${samplefile} ${file}"
done
ALL_MAKE_DIRS="${MAKE_DIRS}"
set -- ${MAKE_DIRS_PERMS}
while [ $# -gt 0 ]
do
dir="$1"; owner="$2"; group="$3"; mode="$4"
shift; shift; shift; shift
ALL_MAKE_DIRS="${ALL_MAKE_DIRS} ${dir}"
done
ALL_DIRS="${ALL_MAKE_DIRS} ${OWN_DIRS}"
set -- ${OWN_DIRS_PERMS}
while [ $# -gt 0 ]
do
dir="$1"; owner="$2"; group="$3"; mode="$4"
shift; shift; shift; shift
ALL_DIRS="${ALL_DIRS} ${dir}"
done
ALL_DIRS=` \
${ECHO} ${ALL_DIRS} | \
${SED} "s,[ ][ ]*, ,g" | \
${TR} ' ' "\012" | \
${SORT} -r \
`
case ${STAGE} in
DEINSTALL)
# Remove configuration files if they don't differ from the default
# config file.
#
set -- ${ALL_FILES}
while [ $# -gt 0 ]
do
samplefile="$1"; file="$2"
shift; shift
if [ "${file}" != "${samplefile}" -a \
-f ${file} -a -f ${samplefile} ]
then
if ${CMP} -s ${file} ${samplefile}
then
${RM} -f ${file}
fi
fi
done
;;
POST-DEINSTALL)
modified_files=''
set -- ${ALL_FILES}
while [ $# -gt 0 ]
do
samplefile="$1"; file="$2"
shift; shift
if [ -f ${file} ]
then
modified_files="${modified_files} ${file}"
fi
done
existing_dirs=''
set -- ${ALL_DIRS}
while [ $# -gt 0 ]
do
dir=$1; shift
is_make_dir=0
for make_dir in __dummy ${ALL_MAKE_DIRS}
do
if [ "${make_dir}" != "__dummy" -a \
"${dir}" = "${make_dir}" ]
then
is_make_dir=1
break
fi
done
${RMDIR} -p ${dir} 2>/dev/null || ${TRUE}
if [ ${is_make_dir} -eq 0 -a -d ${dir} ]
then
existing_dirs="${existing_dirs} ${dir}"
fi
done
if [ -n "${PKG_USER}" -o -n "${PKG_GROUP}" -o \
-n "${modified_files}" -o -n "${existing_dirs}" ]
then
${CAT} << EOF
===========================================================================
If you won't be using ${PKGNAME} any longer, you may want to remove
EOF
if [ -n "${PKG_USER}" ]
then
${CAT} << EOF
* the \`${PKG_USER}' user
EOF
fi
if [ -n "${PKG_GROUP}" ]
then
${CAT} << EOF
* the \`${PKG_GROUP}' group
EOF
fi
if [ -n "${modified_files}" ]
then
${CAT} << EOF
* the following files:
EOF
for file in ${modified_files}
do
${ECHO} " ${file}"
done
fi
if [ -n "${existing_dirs}" ]
then
${CAT} << EOF
* the following directories:
EOF
for dir in ${existing_dirs}
do
${ECHO} " ${dir}"
done
fi
${CAT} << EOF
===========================================================================
EOF
fi
;;
*)
${ECHO} "Unexpected argument: ${STAGE}"
exit 1
;;
esac
# end of deinstall