pkgsrc-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/trunk]: pkgsrc/mk Next round of install script cleanup -- we now crea...
details: https://anonhg.NetBSD.org/pkgsrc/rev/0c3b41301993
branches: trunk
changeset: 488491:0c3b41301993
user: jlam <jlam%pkgsrc.org@localhost>
date: Wed Feb 02 10:33:01 2005 +0000
description:
Next round of install script cleanup -- we now create +FILES,
+RCD_SCRIPTS, and +PERMS subscripts to handle copying config files
and rc.d scripts, and setting special permissions on files. The +FILES
and +RCD_SCRIPTS are basically identical except for different embedded
packets of data, and they feature reference-counting for the files in
case multiple packages share the same config file.
Garbage-collect unused functions and definitions in the install scripts
now that the subscripts are self-contained.
diffstat:
mk/bsd.pkg.install.mk | 120 +++++++++++++++++++--
mk/install/deinstall | 137 +++++++-----------------
mk/install/files | 276 ++++++++++++++++++++++++++++++++++++++++++++++++++
mk/install/header | 52 +---------
mk/install/install | 219 +++++----------------------------------
mk/install/perms | 78 ++++++++++++++
6 files changed, 533 insertions(+), 349 deletions(-)
diffs (truncated from 1018 to 300 lines):
diff -r 272f5ade9f29 -r 0c3b41301993 mk/bsd.pkg.install.mk
--- a/mk/bsd.pkg.install.mk Wed Feb 02 10:23:44 2005 +0000
+++ b/mk/bsd.pkg.install.mk Wed Feb 02 10:33:01 2005 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.pkg.install.mk,v 1.78 2005/01/28 19:06:07 jlam Exp $
+# $NetBSD: bsd.pkg.install.mk,v 1.79 2005/02/02 10:33:01 jlam Exp $
#
# This Makefile fragment is included by bsd.pkg.mk to use the common
# INSTALL/DEINSTALL scripts. To use this Makefile fragment, simply:
@@ -173,7 +173,37 @@
#
SPECIAL_PERMS?= # empty
SETUID_ROOT_PERMS?= ${ROOT_USER} ${ROOT_GROUP} 4711
-FILES_SUBST+= SPECIAL_PERMS=${SPECIAL_PERMS:Q}
+
+INSTALL_PERMS_FILE= ${WRKDIR}/.install-perms
+INSTALL_UNPACK_TMPL+= ${INSTALL_PERMS_FILE}
+
+${INSTALL_PERMS_FILE}: ../../mk/install/perms
+ ${_PKG_SILENT}${_PKG_DEBUG}{ \
+ ${ECHO} "# start of install-perms"; \
+ ${ECHO} "#"; \
+ ${ECHO} "# Generate a +PERMS script that sets the special"; \
+ ${ECHO} "# permissions on files and directories used by the"; \
+ ${ECHO} "# package."; \
+ ${ECHO} "#"; \
+ ${ECHO} "case \$${STAGE} in"; \
+ ${ECHO} "PRE-INSTALL)"; \
+ ${ECHO} " \$${CAT} > ./+PERMS << 'EOF_PERMS'"; \
+ ${SED} ${FILES_SUBST_SED} ../../mk/install/perms; \
+ ${ECHO} ""; \
+ eval set -- ${SPECIAL_PERMS} ; \
+ while ${TEST} $$# -gt 0; do \
+ file="$$1"; owner="$$2"; group="$$3"; mode="$$4"; \
+ shift; shift; shift; shift; \
+ ${ECHO} "# PERMS: $$file $$mode $$owner $$group"; \
+ done; \
+ ${ECHO} "EOF_PERMS"; \
+ ${ECHO} " \$${CHMOD} +x ./+PERMS"; \
+ ${ECHO} " ;;"; \
+ ${ECHO} "esac"; \
+ ${ECHO} ""; \
+ ${ECHO} "# end of install-perms"; \
+ } > ${.TARGET}.tmp; \
+ ${MV} -f ${.TARGET}.tmp ${.TARGET}
# CONF_FILES are pairs of example and true config files, used much like
# MLINKS in the base system. At post-install time, if the true config
@@ -211,20 +241,86 @@
"bsd.pkg.install.mk: RCD_SCRIPTS_EXAMPLEDIR can't be an absolute path."
.endif
RCD_SCRIPTS_SHELL?= ${SH}
-FILES_SUBST+= CONF_FILES=${CONF_FILES:Q}
-FILES_SUBST+= CONF_FILES_MODE=${CONF_FILES_MODE}
-FILES_SUBST+= CONF_FILES_PERMS=${CONF_FILES_PERMS:Q}
-FILES_SUBST+= SUPPORT_FILES=${SUPPORT_FILES:Q}
-FILES_SUBST+= SUPPORT_FILES_MODE=${SUPPORT_FILES_MODE}
-FILES_SUBST+= SUPPORT_FILES_PERMS=${SUPPORT_FILES_PERMS:Q}
-FILES_SUBST+= RCD_SCRIPTS=${RCD_SCRIPTS:Q}
-FILES_SUBST+= RCD_SCRIPTS_MODE=${RCD_SCRIPTS_MODE}
-FILES_SUBST+= RCD_SCRIPTS_DIR=${RCD_SCRIPTS_DIR}
-FILES_SUBST+= RCD_SCRIPTS_EXAMPLEDIR=${RCD_SCRIPTS_EXAMPLEDIR}
FILES_SUBST+= RCD_SCRIPTS_SHELL=${RCD_SCRIPTS_SHELL}
MESSAGE_SUBST+= RCD_SCRIPTS_DIR=${RCD_SCRIPTS_DIR}
MESSAGE_SUBST+= RCD_SCRIPTS_EXAMPLEDIR=${RCD_SCRIPTS_EXAMPLEDIR}
+INSTALL_FILES_FILE= ${WRKDIR}/.install-files
+INSTALL_UNPACK_TMPL+= ${INSTALL_FILES_FILE}
+
+${INSTALL_FILES_FILE}: ../../mk/install/files
+ ${_PKG_SILENT}${_PKG_DEBUG}{ \
+ ${ECHO} "# start of install-files"; \
+ ${ECHO} "#"; \
+ ${ECHO} "# Generate a +FILES script that reference counts config"; \
+ ${ECHO} "# files that are required for the proper functioning"; \
+ ${ECHO} "# of the package."; \
+ ${ECHO} "#"; \
+ ${ECHO} "case \$${STAGE} in"; \
+ ${ECHO} "PRE-INSTALL)"; \
+ ${ECHO} " \$${CAT} > ./+FILES << 'EOF_FILES'"; \
+ ${SED} ${FILES_SUBST_SED} ../../mk/install/files; \
+ ${ECHO} ""; \
+ eval set -- ${CONF_FILES} ; \
+ while ${TEST} $$# -gt 0; do \
+ egfile="$$1"; file="$$2"; \
+ shift; shift; \
+ ${ECHO} "# FILE: $$file c $$egfile ${CONF_FILES_MODE}"; \
+ done; \
+ eval set -- ${SUPPORT_FILES} ; \
+ while ${TEST} $$# -gt 0; do \
+ egfile="$$1"; file="$$2"; \
+ shift; shift; \
+ ${ECHO} "# FILE: $$file c $$egfile ${SUPPORT_FILES_MODE}"; \
+ done; \
+ eval set -- ${CONF_FILES_PERMS} ${SUPPORT_FILES_PERMS} ; \
+ while ${TEST} $$# -gt 0; do \
+ egfile="$$1"; file="$$2"; \
+ owner="$$3"; group="$$4"; mode="$$5"; \
+ shift; shift; shift; shift; shift; \
+ ${ECHO} "# FILE: $$file c $$egfile $$mode $$owner $$group"; \
+ done; \
+ ${ECHO} "EOF_FILES"; \
+ ${ECHO} " \$${CHMOD} +x ./+FILES"; \
+ ${ECHO} " ;;"; \
+ ${ECHO} "esac"; \
+ ${ECHO} ""; \
+ ${ECHO} "# end of install-files"; \
+ } > ${.TARGET}.tmp; \
+ ${MV} -f ${.TARGET}.tmp ${.TARGET}
+
+INSTALL_RCD_SCRIPTS_FILE= ${WRKDIR}/.install-rcd-scripts
+INSTALL_UNPACK_TMPL+= ${INSTALL_RCD_SCRIPTS_FILE}
+
+${INSTALL_RCD_SCRIPTS_FILE}: ../../mk/install/files
+ ${_PKG_SILENT}${_PKG_DEBUG}{ \
+ ${ECHO} "# start of install-rcd-scripts"; \
+ ${ECHO} "#"; \
+ ${ECHO} "# Generate a +RCD_SCRIPTS script that reference counts config"; \
+ ${ECHO} "# files that are required for the proper functioning"; \
+ ${ECHO} "# of the package."; \
+ ${ECHO} "#"; \
+ ${ECHO} "case \$${STAGE} in"; \
+ ${ECHO} "PRE-INSTALL)"; \
+ ${ECHO} " \$${CAT} > ./+RCD_SCRIPTS << 'EOF_RCD_SCRIPTS'"; \
+ ${SED} ${FILES_SUBST_SED} ../../mk/install/files; \
+ ${ECHO} ""; \
+ eval set -- ${RCD_SCRIPTS} ; \
+ while ${TEST} $$# -gt 0; do \
+ script="$$1"; shift; \
+ file="${RCD_SCRIPTS_DIR}/$$script"; \
+ egfile="${PREFIX}/${RCD_SCRIPTS_EXAMPLEDIR}/$$script"; \
+ ${ECHO} "# FILE: $$file c $$egfile ${RCD_SCRIPTS_MODE}"; \
+ done; \
+ ${ECHO} "EOF_RCD_SCRIPTS"; \
+ ${ECHO} " \$${CHMOD} +x ./+RCD_SCRIPTS"; \
+ ${ECHO} " ;;"; \
+ ${ECHO} "esac"; \
+ ${ECHO} ""; \
+ ${ECHO} "# end of install-rcd-scripts"; \
+ } > ${.TARGET}.tmp; \
+ ${MV} -f ${.TARGET}.tmp ${.TARGET}
+
# OWN_DIRS contains a list of directories for this package that should be
# created and should attempt to be destroyed by the INSTALL/DEINSTALL
# scripts. MAKE_DIRS is used the same way, but the package admin
diff -r 272f5ade9f29 -r 0c3b41301993 mk/install/deinstall
--- a/mk/install/deinstall Wed Feb 02 10:23:44 2005 +0000
+++ b/mk/install/deinstall Wed Feb 02 10:33:01 2005 +0000
@@ -1,50 +1,24 @@
# start of deinstall
#
-# $NetBSD: deinstall,v 1.31 2005/01/28 07:37:55 jlam Exp $
-
-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="${PKG_PREFIX}/${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
+# $NetBSD: deinstall,v 1.32 2005/02/02 10:33:01 jlam Exp $
case ${STAGE} in
VIEW-DEINSTALL)
- if [ "${_PKG_CONFIG}" = "YES" -a -n "${VIEW_FILES}" ]; then
- if [ -n "${PKG_SYSCONFDEPOTBASE}" ]; then
+ case ${_PKG_CONFIG} in
+ YES)
+ case ${PKG_SYSCONFDEPOTBASE} in
+ "")
+ ${TEST} -x ./+FILES &&
+ ./+FILES VIEW-REMOVE ${PREFIX} ${PKG_PREFIX}
+ ;;
+ *)
${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
+ ;;
+ esac
+ ;;
+ esac
if [ -n "${PKG_SHELL}" -a "${PKG_REGISTER_SHELLS}" = "YES" ]; then
${ECHO} "===> Updating /etc/shells"
${CP} /etc/shells /etc/shells.pkgsrc."$$"
@@ -57,34 +31,17 @@
# 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 \
- -f "${file}" -a -f "${samplefile}" ]; then
- if ${CMP} -s "${file}" "${samplefile}"; then
- ${RM} -f "${file}"
- fi
- fi
- done
- fi
+ case ${_PKG_CONFIG} in
+ YES) ${TEST} -x ./+FILES &&
+ ./+FILES REMOVE ${PKG_METADATA_DIR} ;;
+ esac
+ case ${_PKG_CONFIG}${_PKG_RCD_SCRIPTS} in
+ YESYES) ${TEST} -x ./+RCD_SCRIPTS &&
+ ./+RCD_SCRIPTS REMOVE ${PKG_METADATA_DIR} ;;
+ esac
;;
POST-DEINSTALL)
- modified_files=''
- eval set -- ${ALL_FILES}
- while [ $# -gt 0 ]; do
- samplefile="$1"; file="$2"
- shift; shift
-
- if [ -f "${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
@@ -92,44 +49,28 @@
fi
${RMDIR} -p `${DIRNAME} ${PKG_SYSCONFDIR}` 2>/dev/null || ${TRUE}
fi
-
+ #
+ # Remove empty directories and unused users/groups.
+ #
case ${_PKG_CONFIG} in
- YES) ${TEST} -x ./+DIRS && ./+DIRS REMOVE ${PKG_METADATA_DIR} ;;
+ YES) ${TEST} -x ./+DIRS &&
+ ./+DIRS REMOVE ${PKG_METADATA_DIR} ;;
esac
case ${_PKG_CREATE_USERGROUP} in
- YES) ${TEST} -x ./+USERGROUP && ./+USERGROUP REMOVE ${PKG_METADATA_DIR} ;;
+ YES) ${TEST} -x ./+USERGROUP &&
+ ./+USERGROUP REMOVE ${PKG_METADATA_DIR} ;;
esac
-
- if [ -n "${modified_files}" ]; then
- ${CAT} << EOF
-===========================================================================
-If you won't be using ${PKGNAME} any longer, you may want to remove
-EOF
- if [ -n "${modified_files}" ]; then
- ${CAT} << EOF
-
- * the following files:
-
-EOF
- eval set -- ${modified_files}
- for file; do
- ${ECHO} " ${file}"
- done
- fi
- if [ -n "${RCD_SCRIPTS}" ]; then
- ${CAT} << EOF
-
-You may also want to remove any settings in rc.conf that you may have
-made in order to use ${PKGNAME}.
-EOF
- fi
- ${CAT} << EOF
-===========================================================================
-EOF
Home |
Main Index |
Thread Index |
Old Index