pkgsrc/mk/install/install

365 lines
9.6 KiB
Text
Raw Normal View History

# start of install
#
# $NetBSD: install,v 1.20 2003/06/25 08:26:51 jlam Exp $
case ${STAGE} in
PRE-INSTALL)
msginit
_pkg_exit=0
if [ -n "${PKG_GROUPS}" ]; then
_print_group_header=1
eval set -- ${PKG_GROUPS}
for groupset; do
save_IFS="${IFS}"; IFS=":"
set -- ${groupset}
group="$1"; groupid="$2"
IFS="${save_IFS}"
# We need to check that ${PKG_GROUP} exists before
# adding the user. Do it with chgrp to be able to
# use NIS.
#
${TOUCH} /tmp/grouptest.$$
if ${CHGRP} ${group} /tmp/grouptest.$$ >/dev/null 2>&1; then
${ECHO} "Group '${group}' already exists."
elif [ "${_PKG_CREATE_USERGROUP}" = "NO" ]; then
if [ ${_print_group_header} -gt 0 ]; then
_print_group_header=0
msgadd ""
msgadd "The following groups need to be created for ${PKGNAME}:"
msgadd ""
fi
if [ -z "${groupid}" ]; then
groupid_str=
else
groupid_str=" (${groupid})"
fi
msgadd "#${group}${groupid_str}"
_pkg_exit=1
else
groupid_option=
if [ -n "${groupid}" ]; then
groupid_option="-g"
fi
${ECHO} "Creating group: ${group}"
${GROUPADD} ${groupid_option} ${groupid} "${group}"
fi
${RM} -f /tmp/grouptest.$$
done
fi
if [ -n "${PKG_USERS}" ]; then
_print_user_header=1
eval set -- ${PKG_USERS}
for userset; do
save_IFS="${IFS}"; IFS=":"
set -- ${userset}
user="$1"; group="$2"; userid="$3"
descr="${4:-${PKGBASE} ${user} user}"
home="${5:-@PKG_USER_HOME@}"
shell="${6:-@PKG_USER_SHELL@}"
IFS="${save_IFS}"
# Use `id' to be able to use NIS.
if ${ID} "${user}" >/dev/null 2>&1; then
${ECHO} "User '${user}' already exists."
elif [ "${_PKG_CREATE_USERGROUP}" = "NO" ]; then
if [ ${_print_user_header} -gt 0 ]; then
_print_user_header=0
msgadd ""
msgadd "The following users need to be created for ${PKGNAME}:"
msgadd ""
fi
if [ -z "${userid}" ]; then
userid_str=
else
userid_str=" (${userid})"
fi
msgadd "#${user}${userid_str}: ${group}, ${home}, ${shell}"
_pkg_exit=1
else
userid_option=
if [ -n "${userid}" ]; then
userid_option="-u"
fi
${ECHO} "Creating user: ${user}"
${USERADD} -c "${descr}" \
${userid_option} ${userid} \
-g "${group}" \
-d "${home}" \
-s "${shell}" \
"${user}"
fi
done
fi
# Create package directories at pre-install time.
#
if [ -n "${MAKE_DIRS}" -o -n "${OWN_DIRS}" -o \
-n "${MAKE_DIRS_PERMS}" -o -n "${OWN_DIRS_PERMS}" ]; then
if [ -z "${RCD_SCRIPTS}" -o "${_PKG_RCD_SCRIPTS}" = "NO" ]; then
_RCD_SCRIPTS_DIR=
else
_RCD_SCRIPTS_DIR="${RCD_SCRIPTS_DIR}"
fi
eval set -- ${_RCD_SCRIPTS_DIR} ${MAKE_DIRS} ${OWN_DIRS}
for dir; do
if [ -d "${dir}" ]; then
continue
fi
if [ "${_PKG_CONFIG}" = "YES" ]; then
${MKDIR} "${dir}"
${ECHO} "${PKGBASE}" > "${dir}/.pkgsrc"
fi
done
eval set -- ${MAKE_DIRS_PERMS} ${OWN_DIRS_PERMS}
while [ $# -gt 0 ]; do
dir="$1"; owner="$2"; group="$3"; mode="$4"
shift; shift; shift; shift
if [ "${_PKG_CONFIG}" = "YES" ]; then
if [ ! -d "${dir}" ]; then
${MKDIR} "${dir}"
${ECHO} "${PKGBASE}" > "${dir}/.pkgsrc"
${CHOWN} -R "${owner}" "${dir}"
${CHGRP} -R "${group}" "${dir}"
${CHMOD} -R "${mode}" "${dir}"
fi
fi
done
fi
if ! msgempty; then
${ECHO} "==========================================================================="
msgprint
${ECHO} ""
${ECHO} "==========================================================================="
fi
if [ ${_pkg_exit} -gt 0 ]; then
exit ${_pkg_exit}
fi
;;
POST-INSTALL)
#
# Note any missing package directories.
#
msginit
if [ -n "${MAKE_DIRS}" -o -n "${OWN_DIRS}" -o \
-n "${MAKE_DIRS_PERMS}" -o -n "${OWN_DIRS_PERMS}" ]; then
_print_dir_header=1
if [ -z "${RCD_SCRIPTS}" -o "${_PKG_RCD_SCRIPTS}" = "NO" ]; then
_RCD_SCRIPTS_DIR=
else
_RCD_SCRIPTS_DIR="${RCD_SCRIPTS_DIR}"
fi
eval set -- ${_RCD_SCRIPTS_DIR} ${MAKE_DIRS} ${OWN_DIRS}
for dir; do
if [ -d "${dir}" ]; then
continue
fi
if [ "${_PKG_CONFIG}" = "NO" ]; then
if [ ${_print_dir_header} -gt 0 ]; then
_print_dir_header=0
msgadd ""
msgadd "The following directories should be created for ${PKGNAME}:"
msgadd ""
fi
msgadd "#${dir}"
fi
done
eval set -- ${MAKE_DIRS_PERMS} ${OWN_DIRS_PERMS}
while [ $# -gt 0 ]; do
dir="$1"; owner="$2"; group="$3"; mode="$4"
shift; shift; shift; shift
if [ "${_PKG_CONFIG}" = "NO" ]; then
if [ ${_print_dir_header} -gt 0 ]; then
_print_dir_header=0
msgadd ""
msgadd "The following directories should be created for ${PKGNAME}:"
msgadd ""
fi
msgadd "#${dir} (o=${owner}, g=${group}, m=${mode})"
fi
done
fi
if [ "${_PKG_CONFIG}" = "YES" ]; then
if [ -n "${CONF_FILES}" -o \
-n "${CONF_FILES_PERMS}" -o \
-n "${SUPPORT_FILES}" -o \
-n "${SUPPORT_FILES_PERMS}" ] || \
[ "${_PKG_RCD_SCRIPTS}" = "YES" -a \
-n "${RCD_SCRIPTS}" ]; then
${CAT} << EOF
Installing configuration files for ${PKGNAME}:
EOF
fi
fi
_print_file_header=1
eval set -- ${CONF_FILES}
while [ $# -gt 0 ]; do
samplefile="$1"; file="$2"
shift; shift
if [ "${_PKG_CONFIG}" = "NO" ]; then
if [ ${_print_file_header} -gt 0 ]; then
_print_file_header=0
msgadd ""
msgadd "The following files should be created for ${PKGNAME}:"
msgadd ""
fi
msgadd "#${file} (m=@CONF_FILES_MODE@)"
elif [ -e "${file}" ]; then
${ECHO} " ${file} already exists, example file is"
${ECHO} " ${samplefile}"
else
if [ -e "${samplefile}" ]; then
${ECHO} " ${file}"
${CP} "${samplefile}" "${file}"
${CHMOD} @CONF_FILES_MODE@ "${file}"
fi
fi
done
eval set -- ${SUPPORT_FILES}
while [ $# -gt 0 ]; do
samplefile="$1"; file="$2"
shift; shift
if [ "${_PKG_CONFIG}" = "NO" ]; then
if [ ${_print_file_header} -gt 0 ]; then
_print_file_header=0
msgadd ""
msgadd "The following files should be created for ${PKGNAME}:"
msgadd ""
fi
msgadd "#${file} (m=@SUPPORT_FILES_MODE@)"
elif [ -e "${file}" ]; then
${ECHO} " ${file} already exists, example file is"
${ECHO} " ${samplefile}"
else
if [ -e "${samplefile}" ]; then
${ECHO} " ${file}"
${CP} "${samplefile}" "${file}"
${CHMOD} @SUPPORT_FILES_MODE@ "${file}"
fi
fi
done
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
if [ "${_PKG_CONFIG}" = "NO" ]; then
if [ ${_print_file_header} -gt 0 ]; then
_print_file_header=0
msgadd ""
msgadd "The following files should be created for ${PKGNAME}:"
msgadd ""
fi
msgadd "#${file} (o=${owner}, g=${group}, m=${mode})"
elif [ -e ${file} ]; then
${ECHO} " ${file} already exists, example file is"
${ECHO} " ${samplefile}"
else
if [ -e "${samplefile}" ]; then
${ECHO} " ${file}"
${CP} "${samplefile}" "${file}"
${CHOWN} "${owner}" "${file}"
${CHGRP} "${group}" "${file}"
${CHMOD} ${mode} "${file}"
fi
fi
done
eval set -- ${RCD_SCRIPTS}
for script; do
samplefile="${RCD_SCRIPTS_EXAMPLEDIR}/${script}"
file="${RCD_SCRIPTS_DIR}/${script}"
if [ "${_PKG_CONFIG}" = "NO" -o \
"${_PKG_RCD_SCRIPTS}" = "NO" ]; then
if [ ${_print_file_header} -gt 0 ]; then
_print_file_header=0
msgadd ""
msgadd "The following files should be created for ${PKGNAME}:"
msgadd ""
fi
msgadd "#${file} (m=@RCD_SCRIPTS_MODE@)"
elif [ -e "${file}" ]; then
${ECHO} " ${file} already exists, example file is"
${ECHO} " ${samplefile}"
else
if [ -e "${samplefile}" ]; then
${ECHO} " ${file}"
${CP} "${samplefile}" "${file}"
${CHMOD} @RCD_SCRIPTS_MODE@ "${file}"
fi
fi
done
_print_special_header=1
eval set -- ${SPECIAL_PERMS}
while [ $# -gt 0 ]; do
file="$1"; owner="$2"; group="$3"; mode="$4"
shift; shift; shift; shift
if [ ${_print_special_header} -gt 0 ]; then
_print_special_header=0
msgadd ""
msgadd "The following files and directories have special permissions:"
msgadd ""
fi
msgadd "#${file} (o=${owner}, g=${group}, m=${mode})"
${CHOWN} "${owner}" "${file}"
${CHGRP} "${group}" "${file}"
${CHMOD} ${mode} "${file}"
done
if ! msgempty; then
${ECHO} "==========================================================================="
msgprint
${ECHO} ""
${ECHO} "==========================================================================="
fi
if [ "${_PKG_CONFIG}" = "YES" ]; then
if [ -n "${CONF_FILES}" -o -n "${CONF_FILES_PERMS}" ]; then
${CAT} << EOF
===========================================================================
You may wish to customize the following files for ${PKGNAME}:
EOF
eval set -- ${CONF_FILES}
while [ $# -gt 0 ]; do
samplefile="$1"; file="$2"
shift; shift
${ECHO} " ${file}"
done
eval set -- ${CONF_FILES_PERMS}
while [ $# -gt 0 ]; do
samplefile="$1"; file="$2"
owner="$3"; group="$4"; mode="$5"
shift; shift; shift; shift; shift
${ECHO} " ${file}"
done
${CAT} << EOF
===========================================================================
EOF
fi
fi
if [ -n "${PKG_SHELL}" -a "${PKG_REGISTER_SHELLS}" = "YES" ]; then
${ECHO} "===> Updating /etc/shells"
${TOUCH} /etc/shells
${CP} /etc/shells /etc/shells.pkgsrc."$$"
(${GREP} -v ${PKG_SHELL} /etc/shells.pkgsrc."$$" || ${TRUE}; ${ECHO} ${PKG_SHELL}) > /etc/shells
${RM} /etc/shells.pkgsrc."$$"
fi
;;
*)
${ECHO} "Unexpected argument: ${STAGE}"
exit 1
;;
esac
# end of install