# start of install # # $NetBSD: install,v 1.30 2004/01/08 14:19:29 grant Exp $ if [ -z "${CONF_FILES}" -a -z "${CONF_FILES_PERMS}" -a \ -z "${SUPPORT_FILES}" -a -z "${SUPPORT_FILES_PERMS}" -o \ "${_PKG_CONFIG}" = "NO" ]; then : else MAKE_DIRS="${MAKE_DIRS} \"${PKG_SYSCONFDIR}\"" fi if [ -z "${RCD_SCRIPTS}" -o "${_PKG_RCD_SCRIPTS}" = "NO" ]; then : else MAKE_DIRS="${MAKE_DIRS} \"${RCD_SCRIPTS_DIR}\"" fi 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 [ "${PKG_INSTALLATION_TYPE}" = "pkgviews" -a \ "${_PKG_CONFIG}" = "YES" -a -n "${CONF_DEPENDS}" ]; then pkg=`${PKG_ADMIN} -b -d ${DEPOTBASE} -s "" lsbest "${CONF_DEPENDS}"` sysconfdir=`${PKG_INFO} -B -K ${DEPOTBASE} $pkg | \ ${AWK} '/^PKG_SYSCONFDIR=/ { \ gsub("^PKG_SYSCONFDIR=[ ]*", ""); \ print; \ }' \ ` if [ -d $sysconfdir -a ! -e ${PKG_SYSCONFDIR} ]; then ${MKDIR} -p `${DIRNAME} ${PKG_SYSCONFDIR}` ${LN} -sf $sysconfdir ${PKG_SYSCONFDIR} fi fi 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}" = "YES" ]; then ${MKDIR} "${dir}" if [ "${PKG_INSTALLATION_TYPE}" = "pkgviews" ]; then case "${dir}" in ${PKG_PREFIX}|${PKG_PREFIX}/*) ;; *) ${ECHO} "${PKGBASE}" > "${dir}/.pkgsrc" ;; esac else ${ECHO} "${PKGBASE}" > "${dir}/.pkgsrc" fi 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}" if [ "${PKG_INSTALLATION_TYPE}" = "pkgviews" ]; then case "${dir}" in ${PKG_PREFIX}|${PKG_PREFIX}/*) ;; *) ${ECHO} "${PKGBASE}" > "${dir}/.pkgsrc" ;; esac else ${ECHO} "${PKGBASE}" > "${dir}/.pkgsrc" fi ${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 eval set -- ${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/support 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 if [ ! "${file}" -ef "${samplefile}" ]; then ${ECHO} " ${file} already exists, example file is" ${ECHO} " ${samplefile}" fi 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 if [ ! "${file}" -ef "${samplefile}" ]; then ${ECHO} " ${file} already exists, example file is" ${ECHO} " ${samplefile}" fi 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 if [ ! "${file}" -ef "${samplefile}" ]; then ${ECHO} " ${file} already exists, example file is" ${ECHO} " ${samplefile}" fi 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 if [ ! "${file}" -ef "${samplefile}" ]; then ${ECHO} " ${file} already exists, example file is" ${ECHO} " ${samplefile}" fi 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 ;; VIEW-INSTALL) 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 # # If ${PKG_SYSCONFBASE} points outside of ${PREFIX}, then add the # package config files to the proper view. # if [ "${_PKG_CONFIG}" = "YES" -a -n "${PKG_SYSCONFDEPOTBASE}" ]; then if [ -n "${CONF_FILES}" -o \ -n "${CONF_FILES_PERMS}" -o \ -n "${SUPPORT_FILES}" -o \ -n "${SUPPORT_FILES_PERMS}" ]; then ${SETENV} PLIST_IGNORE_FILES="${CONF_IGNORE_FILES}" \ ${LINKFARM} -t ${PKG_SYSCONFVIEWBASE} -d ${PKG_SYSCONFDEPOTBASE} ${PKGNAME} fi fi ;; esac # end of install