From e44ac5236f55723bf720ee64e941fab373d86a41 Mon Sep 17 00:00:00 2001 From: jlam Date: Thu, 21 Nov 2002 10:11:57 +0000 Subject: Don't blindly assume that directores listed in OWN_DIRS* and MAKE_DIRS* that are outside of ${LOCALBASE} belong to the package that lists them. If the directory already exists before the package is installed, then we don't presume ownership of the directory. This addresses pkg/18383 by Grant Beattie. --- mk/install/deinstall | 10 ++++++++-- mk/install/install | 14 +++++++++----- 2 files changed, 17 insertions(+), 7 deletions(-) (limited to 'mk/install') diff --git a/mk/install/deinstall b/mk/install/deinstall index 854283fa15f..87ff7254e49 100644 --- a/mk/install/deinstall +++ b/mk/install/deinstall @@ -1,6 +1,6 @@ # start of deinstall # -# $NetBSD: deinstall,v 1.15 2002/11/17 08:58:50 salo Exp $ +# $NetBSD: deinstall,v 1.16 2002/11/21 10:11:57 jlam Exp $ eval set -- ${PKG_USERS} for userset; do @@ -112,7 +112,13 @@ POST-DEINSTALL) eval set -- ${ALL_DIRS} for dir; do if [ "${_PKG_CONFIG}" = "YES" ]; then - ${RMDIR} -p "${dir}" 2>/dev/null || ${TRUE} + 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; \ diff --git a/mk/install/install b/mk/install/install index a7f939dac7f..d9db7e555de 100644 --- a/mk/install/install +++ b/mk/install/install @@ -1,6 +1,6 @@ # start of install # -# $NetBSD: install,v 1.17 2002/11/17 08:58:51 salo Exp $ +# $NetBSD: install,v 1.18 2002/11/21 10:11:57 jlam Exp $ case ${STAGE} in PRE-INSTALL) @@ -130,6 +130,7 @@ POST-INSTALL) msgadd "#${dir}" else ${MKDIR} "${dir}" + ${ECHO} "${PKGBASE}" > "${dir}/.pkgsrc" fi done eval set -- ${MAKE_DIRS_PERMS} ${OWN_DIRS_PERMS} @@ -145,10 +146,13 @@ POST-INSTALL) fi msgadd "#${dir} (o=${owner}, g=${group}, m=${mode})" else - ${MKDIR} "${dir}" - ${CHOWN} "${owner}" "${dir}" - ${CHGRP} "${group}" "${dir}" - ${CHMOD} "${mode}" "${dir}" + if [ ! -d "${dir}" ]; then + ${MKDIR} "${dir}" + ${ECHO} "${PKGBASE}" > "${dir}/.pkgsrc" + fi + ${CHOWN} -R "${owner}" "${dir}" + ${CHGRP} -R "${group}" "${dir}" + ${CHMOD} -R "${mode}" "${dir}" fi done fi -- cgit v1.2.3