# start of deinstall # # $NetBSD: deinstall,v 1.25 2003/11/23 07:14:43 jlam Exp $ eval set -- ${PKG_USERS} for userset; do user=` IFS=":" set -- ${userset} ${ECHO} "$1" ` ALL_USERS="${ALL_USERS} \"${user}\"" done eval set -- ${PKG_GROUPS} for groupset; do group=` IFS=":" set -- ${groupset} ${ECHO} "$1" ` ALL_GROUPS="${ALL_GROUPS} \"${group}\"" done eval set -- ${CONF_FILES} ${SUPPORT_FILES} while [ $# -gt 0 ]; do samplefile="$1"; file="$2" shift; shift ALL_FILES="${ALL_FILES} \"${samplefile}\" \"${file}\"" VIEW_FILES="${VIEW_FILES} \"${file}\"" done if [ "${_PKG_RCD_SCRIPTS}" = "YES" ]; then eval set -- ${RCD_SCRIPTS} for script; do samplefile="${RCD_SCRIPTS_EXAMPLEDIR}/${script}" file="${RCD_SCRIPTS_DIR}/${script}" shift ALL_FILES="${ALL_FILES} \"${samplefile}\" \"${file}\"" done fi eval set -- ${CONF_FILES_PERMS} ${SUPPORT_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}\"" VIEW_FILES="${VIEW_FILES} \"${file}\"" done eval set -- ${PKG_SYSCONFDIR} ${RCD_SCRIPTS_DIR} ${MAKE_DIRS} for dir; do ALL_MAKE_DIRS="${ALL_MAKE_DIRS} \"${dir}\"" done eval 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 eval set -- ${ALL_MAKE_DIRS} ${OWN_DIRS} for dir; do ALL_DIRS="${ALL_DIRS} \"${dir}\"" done eval 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=` ( eval set -- ${ALL_DIRS} for dir; do ${ECHO} "\"${dir}\"" done ) | ${SORT} -r ` case ${STAGE} in VIEW-DEINSTALL) if [ "${_PKG_CONFIG}" = "YES" -a -n "${VIEW_FILES}" ]; then if [ -n "${PKG_SYSCONFDEPOTBASE}" ]; then ${SETENV} PLIST_IGNORE_FILES="${CONF_IGNORE_FILES}" \ ${LINKFARM} -D -t ${PKG_SYSCONFVIEWBASE} -d ${PKG_SYSCONFDEPOTBASE} ${PKGNAME} ${RMDIR} -p ${PKG_SYSCONFVIEWBASE} 2>/dev/null || ${TRUE} else eval set -- ${VIEW_FILES} for file; do link=`${ECHO} ${file} | ${SED} "s,^${PREFIX}/,${PKG_PREFIX}/,"` dir=`${DIRNAME} ${link}` if [ -h "${link}" ]; then ${RM} -f ${link} ${RMDIR} -p ${dir} 2>/dev/null || ${TRUE} fi done fi fi if [ -n "${PKG_SHELL}" -a "${PKG_REGISTER_SHELLS}" = "YES" ]; then ${ECHO} "===> Updating /etc/shells" ${CP} /etc/shells /etc/shells.pkgsrc."$$" (${GREP} -v "^${PKG_SHELL}" /etc/shells.pkgsrc."$$" || ${TRUE}) > /etc/shells ${RM} /etc/shells.pkgsrc."$$" fi ;; DEINSTALL) # Remove configuration files if they don't differ from the default # config file. # if [ "${_PKG_CONFIG}" = "YES" ]; then eval set -- ${ALL_FILES} while [ $# -gt 0 ]; do samplefile="$1"; file="$2" shift; shift if [ ! "${file}" -ef "${samplefile}" -a \ -e "${file}" -a -e "${samplefile}" ]; then if ${CMP} -s "${file}" "${samplefile}"; then ${RM} -f "${file}" fi fi done fi ;; POST-DEINSTALL) modified_files='' eval set -- ${ALL_FILES} while [ $# -gt 0 ]; do samplefile="$1"; file="$2" shift; shift if [ -e "${file}" ]; then modified_files="${modified_files} \"${file}\"" fi done if [ "${PKG_INSTALLATION_TYPE}" = "pkgviews" -a \ "${_PKG_CONFIG}" = "YES" -a -n "${CONF_DEPENDS}" ]; then if [ -h ${PKG_SYSCONFDIR} ]; then ${RM} -f ${PKG_SYSCONFDIR} fi ${RMDIR} -p `${DIRNAME} ${PKG_SYSCONFDIR}` 2>/dev/null || ${TRUE} fi existing_dirs='' eval set -- ${ALL_DIRS} for dir; do if [ "${_PKG_CONFIG}" = "YES" ]; then if [ -f "${dir}/.pkgsrc" ]; then dirowner=`${HEAD} -1 "${dir}/.pkgsrc"` if [ "${dirowner}" = "${PKGBASE}" ]; then ${RM} -f "${dir}/.pkgsrc" ${RMDIR} -p "${dir}" 2>/dev/null || ${TRUE} fi fi is_make_dir=` \ eval set -- ${ALL_MAKE_DIRS}; \ is_make_dir=0; \ for make_dir; do \ case "${make_dir}" in \ ${dir}) is_make_dir=1; break ;; \ esac; \ done; \ ${ECHO} ${is_make_dir} \ ` if [ ${is_make_dir} -eq 0 -a -d "${dir}" ]; then existing_dirs="${existing_dirs} \"${dir}\"" fi else case "${dir}" in ${PKG_PREFIX}/*) ${RMDIR} -p "${dir}" 2>/dev/null || ${TRUE} ;; esac case "${dir}" in # # Don't bother the admin about the following dirs # if they still exist. # ${PKG_SYSCONFBASE}|${RCD_SCRIPTS_DIR}) ;; *) if [ -d "${dir}" ]; then existing_dirs="${existing_dirs} \"${dir}\"" fi ;; esac fi done if [ -n "${ALL_USERS}" -o -n "${ALL_GROUPS}" -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 "${ALL_USERS}" ]; then ${ECHO} "" ${ECHO} -n " * the following users" sep=": " eval set -- ${ALL_USERS} for user; do ${ECHO} -n "${sep}${user}" sep=", " done ${ECHO} "" fi if [ -n "${ALL_GROUPS}" ]; then ${ECHO} "" ${ECHO} -n " * the following groups" sep=": " eval set -- ${ALL_GROUPS} for group; do ${ECHO} -n "${sep}${group}" sep=", " done ${ECHO} "" fi if [ -n "${modified_files}" ]; then ${CAT} << EOF * the following files: EOF eval set -- ${modified_files} for file; do ${ECHO} " ${file}" done fi if [ -n "${existing_dirs}" ]; then ${CAT} << EOF * the following directories: EOF eval set -- ${existing_dirs} for dir; do ${ECHO} " ${dir}" done fi if [ -n "${RCD_SCRIPTS}" ]; then ${CAT} << EOF You many also want to remove any settings in rc.conf that you may have made in order to use ${PKGNAME}. EOF fi ${CAT} << EOF =========================================================================== EOF fi ;; esac # end of deinstall