# start of install # # $NetBSD: install,v 1.12 2002/08/22 08:21:32 jlam Exp $ case ${STAGE} in PRE-INSTALL) _pkg_exit=0 _print_line=1 _print_group=1 if [ -n "${PKG_GROUPS}" ]; then 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_line} -gt 0 ]; then _print_line=0 ${CAT} << EOF =========================================================================== EOF if [ ${_print_group} -gt 0 ]; then _print_group=0 ${CAT} << EOF The following groups need to be created for ${PKGNAME}: EOF fi fi if [ -z "${groupid}" ]; then groupid_str= else groupid_str=" (${groupid})" fi ${ECHO} " ${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 _print_user=1 if [ -n "${PKG_USERS}" ]; then 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_line} -gt 0 ]; then _print_line=0 ${CAT} << EOF =========================================================================== EOF elif [ ${_print_group} -eq 0 ]; then _print_group=1 ${ECHO} ""; fi if [ ${_print_user} -gt 0 ]; then _print_user=0 ${CAT} << EOF The following users need to be created for ${PKGNAME}: EOF fi if [ -z "${userid}" ]; then userid_str= else userid_str=" (${userid})" fi ${ECHO} " ${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 if [ ${_print_line} -eq 0 ]; then ${CAT} << EOF =========================================================================== EOF fi if [ ${_pkg_exit} -gt 0 ]; then exit ${_pkg_exit} fi ;; POST-INSTALL) # Create package directories. _print_line=1 _print_dirs=1 if [ -n "${MAKE_DIRS}" -o -n "${OWN_DIRS}" -o \ -n "${MAKE_DIRS_PERMS}" -o -n "${OWN_DIRS_PERMS}" ]; then eval set -- ${MAKE_DIRS} ${OWN_DIRS} for dir; do if [ -d "${dir}" ]; then continue fi if [ "${_PKG_CONFIG}" = "NO" ]; then if [ ${_print_line} -gt 0 ]; then _print_line=0 ${CAT} << EOF =========================================================================== EOF if [ ${_print_dirs} -gt 0 ]; then _print_dirs=0 ${CAT} << EOF The following directories should be created for ${PKGNAME}: EOF fi fi ${ECHO} " ${dir}" else ${MKDIR} "${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_line} -gt 0 ]; then _print_line=0 ${CAT} << EOF =========================================================================== EOF if [ ${_print_dirs} -gt 0 ]; then _print_dirs=0 ${CAT} << EOF The following directories should be created for ${PKGNAME}: EOF fi fi ${ECHO} " ${dir} (o=${owner}, g=${group}, m=${mode})" else ${MKDIR} "${dir}" ${CHOWN} "${owner}" "${dir}" ${CHGRP} "${group}" "${dir}" ${CHMOD} "${mode}" "${dir}" fi done fi _print_files=1 if [ "${_PKG_CONFIG}" = "YES" ]; then if [ -n "${CONF_FILES}" -o \ -n "${CONF_FILES_PERMS}" -o \ -n "${SUPPORT_FILES}" -o \ -n "${SUPPORT_FILES_PERMS}" -o \ -n "${RCD_SCRIPTS}" ]; then ${CAT} << EOF Installing configuration files for ${PKGNAME}: EOF fi fi eval set -- ${CONF_FILES} while [ $# -gt 0 ]; do samplefile="$1"; file="$2" shift; shift if [ "${_PKG_CONFIG}" = "NO" ]; then if [ ${_print_line} -gt 0 ]; then _print_line=0 ${CAT} << EOF =========================================================================== EOF elif [ ${_print_dirs} -eq 0 ]; then _print_dirs=1 ${ECHO} ""; fi if [ ${_print_files} -gt 0 ]; then _print_files=0 ${CAT} << EOF The following files should be created for ${PKGNAME}: EOF fi ${ECHO} " ${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_line} -gt 0 ]; then _print_line=0 ${CAT} << EOF =========================================================================== EOF elif [ ${_print_dirs} -eq 0 ]; then _print_dirs=1 ${ECHO} ""; fi if [ ${_print_files} -gt 0 ]; then _print_files=0 ${CAT} << EOF The following files should be created for ${PKGNAME}: EOF fi ${ECHO} " ${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_line} -gt 0 ]; then _print_line=0 ${CAT} << EOF =========================================================================== EOF elif [ ${_print_dirs} -eq 0 ]; then _print_dirs=1 ${ECHO} ""; fi if [ ${_print_files} -gt 0 ]; then _print_files=0 ${CAT} << EOF The following files should be created for ${PKGNAME}: EOF fi ${ECHO} " ${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" ]; then if [ ${_print_line} -gt 0 ]; then _print_line=0 ${CAT} << EOF =========================================================================== EOF elif [ ${_print_dirs} -eq 0 ]; then _print_dirs=1 ${ECHO} ""; fi if [ ${_print_files} -gt 0 ]; then _print_files=0 ${CAT} << EOF The following files should be created for ${PKGNAME}: EOF fi ${ECHO} " ${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 if [ ${_print_line} -eq 0 ]; then ${CAT} << EOF =========================================================================== EOF 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 ;; *) ${ECHO} "Unexpected argument: ${STAGE}" exit 1 ;; esac # end of install