diff options
author | tv <tv@pkgsrc.org> | 2005-02-11 15:27:56 +0000 |
---|---|---|
committer | tv <tv@pkgsrc.org> | 2005-02-11 15:27:56 +0000 |
commit | ba4cc7a17c704aacc6fa6083a419774ec4e8b288 (patch) | |
tree | c309b5b25a2e33690bc9b174f267ccfee8d0cda2 | |
parent | e735e000a051de4edd2af66a2b604aaef0135bec (diff) | |
download | pkgsrc-ba4cc7a17c704aacc6fa6083a419774ec4e8b288.tar.gz |
sync with HEAD
49 files changed, 1503 insertions, 847 deletions
diff --git a/mk/AIX.pkg.dist b/mk/AIX.pkg.dist index 46bb8edc142..f8c42d5adc5 100644 --- a/mk/AIX.pkg.dist +++ b/mk/AIX.pkg.dist @@ -1,5 +1,5 @@ # Id: BSD.local.dist,v 1.30 1997/08/01 13:16:39 phk Exp -# $NetBSD: AIX.pkg.dist,v 1.25.2.3 2005/01/24 18:40:01 tv Exp $ +# $NetBSD: AIX.pkg.dist,v 1.25.2.4 2005/02/11 15:27:56 tv Exp $ # /set type=dir uname=root gname=system mode=0755 @@ -836,6 +836,10 @@ LC_MESSAGES .. .. + tl + LC_MESSAGES + .. + .. tr LC_MESSAGES .. diff --git a/mk/BSDOS.pkg.dist b/mk/BSDOS.pkg.dist index 403b6eec645..3180fa032af 100644 --- a/mk/BSDOS.pkg.dist +++ b/mk/BSDOS.pkg.dist @@ -1,5 +1,5 @@ # Id: BSD.local.dist,v 1.30 1997/08/01 13:16:39 phk Exp -# $NetBSD: BSDOS.pkg.dist,v 1.25.2.3 2005/01/24 18:40:01 tv Exp $ +# $NetBSD: BSDOS.pkg.dist,v 1.25.2.4 2005/02/11 15:27:56 tv Exp $ # /set type=dir uname=root gname=wheel mode=0755 @@ -836,6 +836,10 @@ LC_MESSAGES .. .. + tl + LC_MESSAGES + .. + .. tr LC_MESSAGES .. diff --git a/mk/Darwin.pkg.dist b/mk/Darwin.pkg.dist index d5df5fc8aaa..832958056f3 100644 --- a/mk/Darwin.pkg.dist +++ b/mk/Darwin.pkg.dist @@ -1,5 +1,5 @@ # Id: BSD.local.dist,v 1.30 1997/08/01 13:16:39 phk Exp -# $NetBSD: Darwin.pkg.dist,v 1.60.2.3 2005/01/24 18:40:01 tv Exp $ +# $NetBSD: Darwin.pkg.dist,v 1.60.2.4 2005/02/11 15:27:56 tv Exp $ # /set type=dir uname=root gname=wheel mode=0755 @@ -886,6 +886,10 @@ LC_MESSAGES .. .. + tl + LC_MESSAGES + .. + .. tr LC_MESSAGES .. diff --git a/mk/DragonFly.pkg.dist b/mk/DragonFly.pkg.dist index cbf8449f2fb..fd47ba3c82d 100644 --- a/mk/DragonFly.pkg.dist +++ b/mk/DragonFly.pkg.dist @@ -1,4 +1,4 @@ -# $NetBSD: DragonFly.pkg.dist,v 1.1.2.3 2005/01/24 18:40:01 tv Exp $ +# $NetBSD: DragonFly.pkg.dist,v 1.1.2.4 2005/02/11 15:27:56 tv Exp $ # /set type=dir uname=root gname=wheel mode=0755 @@ -885,6 +885,10 @@ LC_MESSAGES .. .. + tl + LC_MESSAGES + .. + .. tr LC_MESSAGES .. diff --git a/mk/FreeBSD.pkg.dist b/mk/FreeBSD.pkg.dist index 3ade7e90382..fd3d1680713 100644 --- a/mk/FreeBSD.pkg.dist +++ b/mk/FreeBSD.pkg.dist @@ -1,4 +1,4 @@ -# $NetBSD: FreeBSD.pkg.dist,v 1.51.2.3 2005/01/24 18:40:01 tv Exp $ +# $NetBSD: FreeBSD.pkg.dist,v 1.51.2.4 2005/02/11 15:27:56 tv Exp $ # /set type=dir uname=root gname=wheel mode=0755 @@ -885,6 +885,10 @@ LC_MESSAGES .. .. + tl + LC_MESSAGES + .. + .. tr LC_MESSAGES .. diff --git a/mk/IRIX.pkg.dist b/mk/IRIX.pkg.dist index fd4758c9e4d..067c7bfffe9 100644 --- a/mk/IRIX.pkg.dist +++ b/mk/IRIX.pkg.dist @@ -1,4 +1,4 @@ -# $NetBSD: IRIX.pkg.dist,v 1.50.2.3 2005/01/24 18:40:01 tv Exp $ +# $NetBSD: IRIX.pkg.dist,v 1.50.2.4 2005/02/11 15:27:56 tv Exp $ # /set type=dir uname=root gname=sys mode=0755 @@ -885,6 +885,10 @@ LC_MESSAGES .. .. + tl + LC_MESSAGES + .. + .. tr LC_MESSAGES .. diff --git a/mk/Interix.pkg.dist b/mk/Interix.pkg.dist index 59b95d639c1..30e6cd0ec8b 100644 --- a/mk/Interix.pkg.dist +++ b/mk/Interix.pkg.dist @@ -1,5 +1,5 @@ # Id: BSD.local.dist,v 1.30 1997/08/01 13:16:39 phk Exp -# $NetBSD: Interix.pkg.dist,v 1.15.2.3 2005/01/24 18:40:01 tv Exp $ +# $NetBSD: Interix.pkg.dist,v 1.15.2.4 2005/02/11 15:27:56 tv Exp $ # /set type=dir uid=197108 gid=131616 mode=0775 @@ -882,6 +882,10 @@ LC_MESSAGES .. .. + tl + LC_MESSAGES + .. + .. tr LC_MESSAGES .. diff --git a/mk/Linux.pkg.dist b/mk/Linux.pkg.dist index 5e63db3fee9..59b465f0df9 100644 --- a/mk/Linux.pkg.dist +++ b/mk/Linux.pkg.dist @@ -1,5 +1,5 @@ # Id: BSD.local.dist,v 1.30 1997/08/01 13:16:39 phk Exp -# $NetBSD: Linux.pkg.dist,v 1.67.2.3 2005/01/24 18:40:01 tv Exp $ +# $NetBSD: Linux.pkg.dist,v 1.67.2.4 2005/02/11 15:27:56 tv Exp $ # /set type=dir uname=root gname=sys mode=0755 @@ -886,6 +886,10 @@ LC_MESSAGES .. .. + tl + LC_MESSAGES + .. + .. tr LC_MESSAGES .. diff --git a/mk/NetBSD.pkg.dist b/mk/NetBSD.pkg.dist index c5875b9e449..476c08baf6d 100644 --- a/mk/NetBSD.pkg.dist +++ b/mk/NetBSD.pkg.dist @@ -1,5 +1,5 @@ # Id: BSD.local.dist,v 1.30 1997/08/01 13:16:39 phk Exp -# $NetBSD: NetBSD.pkg.dist,v 1.78.2.3 2005/01/24 18:40:01 tv Exp $ +# $NetBSD: NetBSD.pkg.dist,v 1.78.2.4 2005/02/11 15:27:56 tv Exp $ # /set type=dir uname=root gname=wheel mode=0755 @@ -882,6 +882,10 @@ LC_MESSAGES .. .. + tl + LC_MESSAGES + .. + .. tr LC_MESSAGES .. diff --git a/mk/OSF1.pkg.dist b/mk/OSF1.pkg.dist index c93060875c5..2789687ae83 100644 --- a/mk/OSF1.pkg.dist +++ b/mk/OSF1.pkg.dist @@ -1,4 +1,4 @@ -# $NetBSD: OSF1.pkg.dist,v 1.1.2.3 2005/01/24 18:40:01 tv Exp $ +# $NetBSD: OSF1.pkg.dist,v 1.1.2.4 2005/02/11 15:27:56 tv Exp $ # /set type=dir uname=root gname=system mode=0755 @@ -885,6 +885,10 @@ LC_MESSAGES .. .. + tl + LC_MESSAGES + .. + .. tr LC_MESSAGES .. diff --git a/mk/OpenBSD.pkg.dist b/mk/OpenBSD.pkg.dist index 697da7078f8..dfbcf667d80 100644 --- a/mk/OpenBSD.pkg.dist +++ b/mk/OpenBSD.pkg.dist @@ -1,4 +1,4 @@ -# $NetBSD: OpenBSD.pkg.dist,v 1.50.2.3 2005/01/24 18:40:01 tv Exp $ +# $NetBSD: OpenBSD.pkg.dist,v 1.50.2.4 2005/02/11 15:27:56 tv Exp $ # /set type=dir uname=root gname=wheel mode=0755 @@ -885,6 +885,10 @@ LC_MESSAGES .. .. + tl + LC_MESSAGES + .. + .. tr LC_MESSAGES .. diff --git a/mk/SunOS.pkg.dist b/mk/SunOS.pkg.dist index 76b476055af..09c8dbf5c72 100644 --- a/mk/SunOS.pkg.dist +++ b/mk/SunOS.pkg.dist @@ -1,5 +1,5 @@ # Id: BSD.local.dist,v 1.30 1997/08/01 13:16:39 phk Exp -# $NetBSD: SunOS.pkg.dist,v 1.72.2.3 2005/01/24 18:40:01 tv Exp $ +# $NetBSD: SunOS.pkg.dist,v 1.72.2.4 2005/02/11 15:27:56 tv Exp $ # /set type=dir uname=root gname=sys mode=0755 @@ -446,6 +446,10 @@ LC_MESSAGES .. .. + tl + LC_MESSAGES + .. + .. tr LC_MESSAGES .. diff --git a/mk/UnixWare.pkg.dist b/mk/UnixWare.pkg.dist index 75b3a9fffe0..ea646090cce 100644 --- a/mk/UnixWare.pkg.dist +++ b/mk/UnixWare.pkg.dist @@ -1,6 +1,6 @@ # Id: BSD.local.dist,v 1.30 1997/08/01 13:16:39 phk Exp # NetBSD: SunOS.pkg.dist,v 1.64 2004/04/01 12:19:09 jmmv Exp -# $NetBSD: UnixWare.pkg.dist,v 1.9.2.3 2005/01/24 18:40:01 tv Exp $ +# $NetBSD: UnixWare.pkg.dist,v 1.9.2.4 2005/02/11 15:27:56 tv Exp $ # /set type=dir uname=root gname=sys mode=0755 @@ -447,6 +447,10 @@ LC_MESSAGES .. .. + tl + LC_MESSAGES + .. + .. tr LC_MESSAGES .. diff --git a/mk/alternatives.mk b/mk/alternatives.mk new file mode 100644 index 00000000000..331322a20ef --- /dev/null +++ b/mk/alternatives.mk @@ -0,0 +1,58 @@ +# $NetBSD: alternatives.mk,v 1.4.2.2 2005/02/11 15:27:57 tv Exp $ +# +# This Makefile fragment handles the alternatives system, registering a +# package in the database. +# +# The ALTERNATIVES_SRC variable contains the path to a file listing the +# alternatives provided by the package. It defaults to the ALTERNATIVES +# file in the current directory if found. If this variable is empty, no +# actions are taken by this file. +# + +.if !defined(ALTERNATIVES_MK) +ALTERNATIVES_MK= # defined + +.if !defined(ALTERNATIVES_SRC) +. if exists(${.CURDIR}/ALTERNATIVES) +ALTERNATIVES_SRC?= ${.CURDIR}/ALTERNATIVES +. else +ALTERNATIVES_SRC?= +. endif +.endif + +.if !empty(ALTERNATIVES_SRC) + +${WRKDIR}/.altinstall: ${ALTERNATIVES_SRC} + @{ ${ECHO} 'if ${TEST} $${STAGE} = "POST-INSTALL"; then'; \ + ${ECHO} '${CAT} >./+ALTERNATIVES <<EOF'; \ + ${SED} ${FILES_SUBST_SED} <${ALTERNATIVES_SRC}; \ + ${ECHO} 'EOF'; \ + ${ECHO} 'if ${TEST} -x ${PKG_ALTERNATIVES}; then'; \ + ${ECHO} '${PKG_ALTERNATIVES} -gs register ./+ALTERNATIVES'; \ + ${ECHO} 'fi'; \ + ${ECHO} 'fi'; \ + } >${WRKDIR}/.altinstall + +${WRKDIR}/.altdeinstall: ${ALTERNATIVES_SRC} + @{ ${ECHO} 'if ${TEST} $${STAGE} = "DEINSTALL"; then'; \ + ${ECHO} 'if ${TEST} -x ${PKG_ALTERNATIVES}; then'; \ + ${ECHO} '${PKG_ALTERNATIVES} -gs unregister ./+ALTERNATIVES'; \ + ${ECHO} 'fi'; \ + ${ECHO} '${RM} -f ./+ALTERNATIVES'; \ + ${ECHO} 'fi'; \ + } >${WRKDIR}/.altdeinstall + +PRINT_PLIST_AWK+= /^libdata\/alternatives\// { next; } +PRINT_PLIST_AWK+= /^@dirrm libdata\/alternatives/ { next; } + +EVAL_PREFIX+= PREFIX.pkg_alternatives=pkg_alternatives +PREFIX.alternatives_DEFAULT= ${LOCALBASE} +PKG_ALTERNATIVES= ${PREFIX.pkg_alternatives}/sbin/pkg_alternatives + +INSTALL_EXTRA_TMPL+= ${WRKDIR}/.altinstall +DEINSTALL_EXTRA_TMPL+= ${WRKDIR}/.altdeinstall +USE_PKGINSTALL= YES + +.endif + +.endif # ALTERNATIVES_MK diff --git a/mk/bsd.pkg.install.mk b/mk/bsd.pkg.install.mk index 9f135dec69f..130b22464b1 100644 --- a/mk/bsd.pkg.install.mk +++ b/mk/bsd.pkg.install.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.pkg.install.mk,v 1.65.2.2 2005/01/24 18:40:01 tv Exp $ +# $NetBSD: bsd.pkg.install.mk,v 1.65.2.3 2005/02/11 15:27:57 tv Exp $ # # This Makefile fragment is included by bsd.pkg.mk to use the common # INSTALL/DEINSTALL scripts. To use this Makefile fragment, simply: @@ -33,6 +33,7 @@ HEADER_EXTRA_TMPL?= # empty DEINSTALL_PRE_TMPL?= ${.CURDIR}/../../mk/install/deinstall-pre DEINSTALL_EXTRA_TMPL?= # empty DEINSTALL_TMPL?= ${.CURDIR}/../../mk/install/deinstall +INSTALL_UNPACK_TMPL?= # empty INSTALL_TMPL?= ${.CURDIR}/../../mk/install/install INSTALL_EXTRA_TMPL?= # empty INSTALL_POST_TMPL?= ${.CURDIR}/../../mk/install/install-post @@ -49,6 +50,7 @@ DEINSTALL_TEMPLATES+= ${DEINSTALL_TMPL} DEINSTALL_TEMPLATES+= ${_FOOTER_TMPL} INSTALL_TEMPLATES= ${_HEADER_TMPL} INSTALL_TEMPLATES+= ${HEADER_EXTRA_TMPL} +INSTALL_TEMPLATES+= ${INSTALL_UNPACK_TMPL} INSTALL_TEMPLATES+= ${INSTALL_TMPL} INSTALL_TEMPLATES+= ${INSTALL_EXTRA_TMPL} INSTALL_TEMPLATES+= ${INSTALL_POST_TMPL} @@ -95,14 +97,12 @@ FILES_SUBST+= PKG_INSTALLATION_TYPE=${PKG_INSTALLATION_TYPE} # # Only the group is required; the groupid is optional. # +PKG_GROUPS?= # empty PKG_USERS?= # empty _PKG_USER_HOME?= /nonexistent _PKG_USER_SHELL?= ${NOLOGIN} -PKG_GROUPS?= # empty -FILES_SUBST+= PKG_USERS=${PKG_USERS:Q} FILES_SUBST+= PKG_USER_HOME=${_PKG_USER_HOME} FILES_SUBST+= PKG_USER_SHELL=${_PKG_USER_SHELL} -FILES_SUBST+= PKG_GROUPS=${PKG_GROUPS:Q} # Interix is very Special in that users are groups cannot have the # same name. Interix.mk tries to work around this by overriding @@ -111,9 +111,9 @@ FILES_SUBST+= PKG_GROUPS=${PKG_GROUPS:Q} # compile without changing something. # .if !empty(OPSYS:MInterix) -. for user in ${PKG_USERS} -. if !defined(BROKEN) && !empty(PKG_GROUPS:M${user:C/:.*//}) -BROKEN:= "User and group '${user:C/:.*//}' cannot have the same name on Interix" +. for user in ${PKG_USERS:C/\\\\//g:C/:.*//} +. if !empty(PKG_GROUPS:M${user}) +PKG_FAIL_REASON+= "User and group '${user}' cannot have the same name on Interix" . endif . endfor .endif @@ -122,6 +122,41 @@ BROKEN:= "User and group '${user:C/:.*//}' cannot have the same name on Interix DEPENDS+= ${_USER_DEPENDS} .endif +INSTALL_USERGROUP_FILE= ${WRKDIR}/.install-usergroup +INSTALL_UNPACK_TMPL+= ${INSTALL_USERGROUP_FILE} + +${INSTALL_USERGROUP_FILE}: ../../mk/install/usergroup + ${_PKG_SILENT}${_PKG_DEBUG}{ \ + ${ECHO} "# start of install-usergroup"; \ + ${ECHO} "#"; \ + ${ECHO} "# Generate a +USERGROUP script that reference counts users"; \ + ${ECHO} "# and groups that are required for the proper functioning"; \ + ${ECHO} "# of the package."; \ + ${ECHO} "#"; \ + ${ECHO} "case \$${STAGE} in"; \ + ${ECHO} "PRE-INSTALL|UNPACK)"; \ + ${ECHO} " \$${CAT} > ./+USERGROUP << 'EOF_USERGROUP'"; \ + ${SED} ${FILES_SUBST_SED} ../../mk/install/usergroup; \ + ${ECHO} ""; \ + eval set -- ${PKG_GROUPS} ; \ + while ${TEST} $$# -gt 0; do \ + i="$$1"; shift; \ + ${ECHO} "# GROUP: $$i"; \ + done; \ + eval set -- ${PKG_USERS} ; \ + while ${TEST} $$# -gt 0; do \ + i="$$1"; shift; \ + ${ECHO} "# USER: $$i"; \ + done; \ + ${ECHO} "EOF_USERGROUP"; \ + ${ECHO} " \$${CHMOD} +x ./+USERGROUP"; \ + ${ECHO} " ;;"; \ + ${ECHO} "esac"; \ + ${ECHO} ""; \ + ${ECHO} "# end of install-usergroup"; \ + } > ${.TARGET}.tmp; \ + ${MV} -f ${.TARGET}.tmp ${.TARGET} + # SPECIAL_PERMS are lists that look like: # file user group mode # At post-install time, file (it may be a directory) is changed to be @@ -138,7 +173,37 @@ DEPENDS+= ${_USER_DEPENDS} # 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|UNPACK)"; \ + ${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 @@ -176,20 +241,86 @@ PKG_FAIL_REASON+= \ "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|UNPACK)"; \ + ${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|UNPACK)"; \ + ${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 @@ -206,10 +337,61 @@ MAKE_DIRS?= # empty MAKE_DIRS_PERMS?= # empty OWN_DIRS?= # empty OWN_DIRS_PERMS?= # empty -FILES_SUBST+= MAKE_DIRS=${MAKE_DIRS:Q} -FILES_SUBST+= MAKE_DIRS_PERMS=${MAKE_DIRS_PERMS:Q} -FILES_SUBST+= OWN_DIRS=${OWN_DIRS:Q} -FILES_SUBST+= OWN_DIRS_PERMS=${OWN_DIRS_PERMS:Q} + +INSTALL_DIRS_FILE= ${WRKDIR}/.install-dirs +INSTALL_UNPACK_TMPL+= ${INSTALL_DIRS_FILE} + +${INSTALL_DIRS_FILE}: ../../mk/install/dirs + ${_PKG_SILENT}${_PKG_DEBUG}{ \ + ${ECHO} "# start of install-dirs"; \ + ${ECHO} "#"; \ + ${ECHO} "# Generate a +DIRS script that reference counts directories"; \ + ${ECHO} "# that are required for the proper functioning of the"; \ + ${ECHO} "# package."; \ + ${ECHO} "#"; \ + ${ECHO} "case \$${STAGE} in"; \ + ${ECHO} "PRE-INSTALL|UNPACK)"; \ + ${ECHO} " \$${CAT} > ./+DIRS << 'EOF_DIRS'"; \ + ${SED} ${FILES_SUBST_SED} ../../mk/install/dirs; \ + ${ECHO} ""; \ + case "${PKG_SYSCONFSUBDIR}${CONF_FILES}${CONF_FILES_PERMS}${SUPPORT_FILES}${SUPPORT_FILES_PERMS}" in \ + "") ;; \ + *) ${ECHO} "# DIR: ${PKG_SYSCONFDIR} m" ;; \ + esac; \ + case "${RCD_SCRIPTS}" in \ + "") ;; \ + *) ${ECHO} "# DIR: ${RCD_SCRIPTS_DIR} m" ;; \ + esac; \ + eval set -- ${MAKE_DIRS} ; \ + while ${TEST} $$# -gt 0; do \ + dir="$$1"; shift; \ + ${ECHO} "# DIR: $$dir m"; \ + done; \ + eval set -- ${OWN_DIRS} ; \ + while ${TEST} $$# -gt 0; do \ + dir="$$1"; shift; \ + ${ECHO} "# DIR: $$dir mo"; \ + done; \ + eval set -- ${MAKE_DIRS_PERMS} ; \ + while ${TEST} $$# -gt 0; do \ + dir="$$1"; owner="$$2"; group="$$3"; mode="$$4"; \ + shift; shift; shift; shift; \ + ${ECHO} "# DIR: $$dir m $$owner $$group $$mode"; \ + done; \ + eval set -- ${OWN_DIRS_PERMS} ; \ + while ${TEST} $$# -gt 0; do \ + dir="$$1"; owner="$$2"; group="$$3"; mode="$$4"; \ + shift; shift; shift; shift; \ + ${ECHO} "# DIR: $$dir mo $$owner $$group $$mode"; \ + done; \ + ${ECHO} "EOF_DIRS"; \ + ${ECHO} " \$${CHMOD} +x ./+DIRS"; \ + ${ECHO} " ;;"; \ + ${ECHO} "esac"; \ + ${ECHO} ""; \ + ${ECHO} "# end of install-dirs"; \ + } > ${.TARGET}.tmp; \ + ${MV} -f ${.TARGET}.tmp ${.TARGET} # PKG_CREATE_USERGROUP indicates whether the INSTALL script should # automatically add any needed users/groups to the system using @@ -278,6 +460,7 @@ FILES_SUBST+= MV=${MV:Q} FILES_SUBST+= PERL5=${PERL5:Q} FILES_SUBST+= PKG_ADMIN=${PKG_ADMIN_CMD:Q} FILES_SUBST+= PKG_INFO=${PKG_INFO_CMD:Q} +FILES_SUBST+= PWD_CMD=${PWD_CMD:Q} FILES_SUBST+= RM=${RM:Q} FILES_SUBST+= RMDIR=${RMDIR:Q} FILES_SUBST+= SED=${SED:Q} @@ -294,7 +477,11 @@ FILES_SUBST+= XARGS=${XARGS:Q} FILES_SUBST_SED= ${FILES_SUBST:S/=/@!/:S/$/!g/:S/^/ -e s!@/} +PKG_REFCOUNT_DBDIR?= ${PKG_DBDIR}.refcount + INSTALL_SCRIPTS_ENV= PKG_PREFIX=${PREFIX} +INSTALL_SCRIPTS_ENV+= PKG_METADATA_DIR=${_PKG_DBDIR}/${PKGNAME} +INSTALL_SCRIPTS_ENV+= PKG_REFCOUNT_DBDIR=${PKG_REFCOUNT_DBDIR} .PHONY: pre-install-script post-install-script diff --git a/mk/bsd.pkg.mk b/mk/bsd.pkg.mk index fce947aa9af..a41bf187bfe 100644 --- a/mk/bsd.pkg.mk +++ b/mk/bsd.pkg.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.pkg.mk,v 1.1540.2.18 2005/01/24 19:49:23 tv Exp $ +# $NetBSD: bsd.pkg.mk,v 1.1540.2.19 2005/02/11 15:27:57 tv Exp $ # # This file is in the public domain. # @@ -132,7 +132,7 @@ BUILD_DEFS_FIXED+= ${OSVERSION_SPECIFIC:DOSVERSION_SPECIFIC} # Latest versions of tools required for correct pkgsrc operation. DIGEST_REQD= 20010302 -PKGTOOLS_REQD= ${_OPSYS_PKGTOOLS_REQD:U20030918} +PKGTOOLS_REQD= ${_OPSYS_PKGTOOLS_REQD:U20050204} PKG_DB_TMPDIR= ${WRKDIR}/.pkgdb DDIR= ${WRKDIR}/.DDIR @@ -1110,7 +1110,7 @@ CONFIG_SHELL?= ${SH} CONFIGURE_ENV+= CONFIG_SHELL=${CONFIG_SHELL} CONFIGURE_ENV+= install_sh=${INSTALL:Q} CONFIGURE_ENV+= LIBS=${LIBS:Q} -CONFIGURE_ENV+= ${USE_LIBTOOL:Dlt_cv_sys_max_cmd_len=${_OPSYS_MAX_CMDLEN}} +CONFIGURE_ENV+= ${USE_LIBTOOL:Dlt_cv_sys_max_cmd_len=${_OPSYS_MAX_CMDLEN_CMD:D${_OPSYS_MAX_CMDLEN_CMD:sh}}} # # GNU_CONFIGURE_PREFIX is the argument to the --prefix option passed to the # GNU configure script. @@ -1181,6 +1181,10 @@ _REAL_TARGETS.test+= test-message pre-test do-test post-test . include "../../mk/plist.mk" +##### Handle alternatives + +. include "../../mk/alternatives.mk" + ##### Make subtargets for non-su portion of "install". #===> "install-check-pkgname" @@ -1199,13 +1203,6 @@ install-check-pkgname: ${MAKE} clean && ${MAKE} build ;; \ esac -#===> "install-make-pkgdbdir" - -_REAL_TARGETS.install+= install-make-pkgdbdir -.PHONY: install-make-pkgdbdir -install-make-pkgdbdir: - ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${PKG_DB_TMPDIR} - #===> "do-su-install" # su to root, then run real-su-install @@ -1582,7 +1579,9 @@ ${def:C/=.*$//}= ${_${def:C/=.*$//}_CMD:sh} .if !defined(_PATH_ORIG) _PATH_ORIG:= ${PATH} MAKEFLAGS+= _PATH_ORIG=${_PATH_ORIG:Q} +.endif +.if !empty(PREPEND_PATH) # This is very Special. Because PREPEND_PATH is set with += in reverse order, # the awk expression reverses the order again (since bootstrap bmake doesn't # yet support the :[-1..1] construct). @@ -2125,6 +2124,7 @@ ${WRKDIR}: . endif .endif ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${WRKDIR} + ${_PKG_SILENT}${_PKG_DEBUG}${MKDIR} ${PKG_DB_TMPDIR} .ifdef WRKOBJDIR . if ${PKGSRC_LOCKTYPE} == "sleep" || ${PKGSRC_LOCKTYPE} == "once" . if !exists(${LOCKFILE}) @@ -3364,10 +3364,7 @@ print-pkg-size-this: | ${SORT} -u \ | ${SED} -e "s/'/'\\\\''/g" -e "s/.*/'&'/" \ | ${XARGS} -n 256 ${LS} -ld \ - | ${AWK} 'BEGIN { print("0 "); } \ - { print($$5, " + "); } \ - END { print("p"); }' \ - | ${DC} + | ${AWK} '{ s += $$5; } END { print s; }' \ # Sizes of required pkgs (only) # @@ -3381,10 +3378,7 @@ print-pkg-size-depends: | ${XARGS} -n 1 ${SETENV} ${PKG_BEST_EXISTS} \ | ${SORT} -u \ | ${XARGS} -n 256 ${SETENV} ${PKG_INFO} -qs \ - | ${AWK} -- 'BEGIN { print("0 "); } \ - /^[0-9]+$$/ { print($$1, " + "); } \ - END { print("p"); }' \ - | ${DC}; \ + | ${AWK} '/^[0-9]+$$/ { s += $$1; } END { print s; }'; \ else \ ${ECHO} "0"; \ fi @@ -3548,7 +3542,8 @@ post-install-fake-pkg: ${PLIST} ${DESCR} ${MESSAGE} size_this=`${MAKE} ${MAKEFLAGS} print-pkg-size-this`; \ size_depends=`${MAKE} ${MAKEFLAGS} print-pkg-size-depends`; \ ${ECHO} $$size_this >${SIZE_PKG_FILE}; \ - ${ECHO} $$size_this $$size_depends + p | ${DC} >${SIZE_ALL_FILE} + ${ECHO} $$size_this $$size_depends \ + | ${AWK} '{ print $$1 + $$2; }' >${SIZE_ALL_FILE} # Fake installation of package so that user can pkg_delete it later. # Also, make sure that an installed package is recognized correctly in diff --git a/mk/bsd.pkg.use.mk b/mk/bsd.pkg.use.mk index 8bfcbe25ac6..67de9673ecc 100644 --- a/mk/bsd.pkg.use.mk +++ b/mk/bsd.pkg.use.mk @@ -1,17 +1,14 @@ -# $NetBSD: bsd.pkg.use.mk,v 1.1.2.7 2005/01/13 20:20:35 tv Exp $ +# $NetBSD: bsd.pkg.use.mk,v 1.1.2.8 2005/02/11 15:27:57 tv Exp $ # # Turn USE_* macros into proper depedency logic. Included near the top of # bsd.pkg.mk, after bsd.prefs.mk. -PREPEND_PATH+= ${LOCALBASE}/bin - ############################################################################ # ${PREFIX} selection ############################################################################ .if defined(USE_IMAKE) INSTALL_TARGET+= ${NO_INSTALL_MANPAGES:D:Uinstall.man} -PREPEND_PATH+= ${X11BASE}/bin USE_X11BASE?= implied PLIST_SUBST+= IMAKE_MAN_SOURCE_PATH=${IMAKE_MAN_SOURCE_PATH} PLIST_SUBST+= IMAKE_MAN_DIR=${IMAKE_MAN_DIR} diff --git a/mk/bsd.prefs.mk b/mk/bsd.prefs.mk index 188c5ef88b2..e18702208cd 100644 --- a/mk/bsd.prefs.mk +++ b/mk/bsd.prefs.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.prefs.mk,v 1.177.2.4 2004/11/23 20:39:19 tv Exp $ +# $NetBSD: bsd.prefs.mk,v 1.177.2.5 2005/02/11 15:27:57 tv Exp $ # # Make file, included to get the site preferences, if any. Should # only be included by package Makefiles before any .if defined() @@ -280,8 +280,9 @@ SHAREMODE?= ${DOCMODE} # the NetBSD ones if an OS-specific file doesn't exist. .if exists(${_PKGSRC_TOPDIR}/mk/platform/${OPSYS}.mk) . include "${_PKGSRC_TOPDIR}/mk/platform/${OPSYS}.mk" -.elif exists(${_PKGSRC_TOPDIR}/mk/platform/NetBSD.mk) +.else . include "${_PKGSRC_TOPDIR}/mk/platform/NetBSD.mk" +PKG_FAIL_REASON+= "missing mk/platform/${OPSYS}.mk" .endif PKGDIRMODE?= 755 @@ -553,10 +554,11 @@ WRKLOG?= ${WRKDIR}/.work.log PKG_DEFAULT_OPTIONS?= # empty PKG_OPTIONS?= # empty +# we want this *before* compiler.mk, so that compiler.mk paths override them +PREPEND_PATH+= ${LOCALBASE}/bin ${USE_IMAKE:D${X11BASE}/bin} + # Wrapper framework definitions -.if exists(${PKGSRCDIR}/mk/wrapper/wrapper-defs.mk) -. include "${PKGSRCDIR}/mk/wrapper/wrapper-defs.mk" -.endif +.include "${PKGSRCDIR}/mk/wrapper/wrapper-defs.mk" .if !defined(DEPENDS_TARGET) . if make(package) diff --git a/mk/bulk/bsd.bulk-pkg.mk b/mk/bulk/bsd.bulk-pkg.mk index 91bd8a7cc1f..1aa4710db24 100644 --- a/mk/bulk/bsd.bulk-pkg.mk +++ b/mk/bulk/bsd.bulk-pkg.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.bulk-pkg.mk,v 1.65.2.3 2005/01/24 18:40:01 tv Exp $ +# $NetBSD: bsd.bulk-pkg.mk,v 1.65.2.4 2005/02/11 15:27:57 tv Exp $ # # Copyright (c) 1999, 2000 Hubert Feyrer <hubertf@NetBSD.org> @@ -166,7 +166,7 @@ bulk-cache: @${ECHO_MSG} "BULK> Extracting database for SPECIFIC_PKGS subset of pkgsrc" @${ECHO_MSG} " along with their dependencies" .for __tmp__ in ${SUBDIR} ${BULK_PREREQ} ${PERL5_PKGSRCDIR:C|.*/([^/]*/[^/]*)$|\1|} pkgtools/pkglint - cd ${PKGSRCDIR}/${__tmp__} && ../../mk/scripts/mkdatabase -a -f ${BULK_DBFILE} + cd ${PKGSRCDIR}/${__tmp__} && ${SETENV} BMAKE=${MAKE} AWK=${AWK} EXPR=${EXPR} ${SH} ../../mk/scripts/mkdatabase -a -f ${BULK_DBFILE} .endfor @${ECHO_MSG} "BULK> Extracting dependency tree file" ${AWK} '/^(build_)?depends/ {pkgs[$$2] = 1; cat=$$2; sub(/\/.*/, "", cat); \ diff --git a/mk/bulk/do-sandbox-build b/mk/bulk/do-sandbox-build index 7950b5efb64..d0749481e4c 100644 --- a/mk/bulk/do-sandbox-build +++ b/mk/bulk/do-sandbox-build @@ -1,5 +1,5 @@ #!/bin/sh -# $NetBSD: do-sandbox-build,v 1.7.8.1 2005/01/13 20:11:55 tv Exp $ +# $NetBSD: do-sandbox-build,v 1.7.8.2 2005/02/11 15:27:57 tv Exp $ # # Script to start a sandbox build @@ -8,4 +8,4 @@ # sh=`which sh` -chroot /usr/sandbox $sh -c "cd /usr/pkgsrc/ ; $sh mk/bulk/build $@" +chroot /usr/sandbox $sh -c "cd /usr/pkgsrc && $sh mk/bulk/build $@" diff --git a/mk/bulk/mksandbox b/mk/bulk/mksandbox index f79ab772e60..0586f955867 100755 --- a/mk/bulk/mksandbox +++ b/mk/bulk/mksandbox @@ -1,6 +1,6 @@ #! /bin/sh -# $NetBSD: mksandbox,v 1.38 2004/10/24 22:54:25 agc Exp $ +# $NetBSD: mksandbox,v 1.38.2.1 2005/02/11 15:27:57 tv Exp $ # # # Copyright (c) 2002 Alistair G. Crooks. All rights reserved. @@ -87,7 +87,7 @@ Linux) mountprog=/sbin/mount paxprog="" sedprog=/bin/sed - sandboxMountDirs="/proc" + sandboxMountDirs="$sandboxMountDirs /proc" ;; NetBSD) bmakeprog=make diff --git a/mk/defaults/mk.conf b/mk/defaults/mk.conf index fd4852a0ef4..2eb10f754a2 100644 --- a/mk/defaults/mk.conf +++ b/mk/defaults/mk.conf @@ -1,4 +1,4 @@ -# $NetBSD: mk.conf,v 1.14.2.6 2005/01/13 20:11:55 tv Exp $ +# $NetBSD: mk.conf,v 1.14.2.7 2005/02/11 15:27:57 tv Exp $ # # A file providing defaults for pkgsrc and the packages collection. @@ -1973,11 +1973,15 @@ SUN_JRE15_USE_JCE?= NO # Possible: YES or NO. # Default: NO +.if empty(MACHINE_PLATFORM:MNetBSD-1*-*) +SUSE_PREFER?= 9.1 +.else SUSE_PREFER?= 7.3 +.endif # Which version of the suse packages to prefer. -# Decides if you want to use 7.3 (default) or 9.1 by default. +# Decides if you want to use 9.1 (default) or 7.3 (pre NetBSD-2) by default. # Possible: 7.3, 9.1 -# Default: 7.3 +# Default: 9.1 in 2.0 and later, 7.3 otherwise TIN_USE_INN_SPOOL?= NO # Used to enable reading directly in an inn spool. @@ -2153,11 +2157,6 @@ W3M_USE_UNICODE?= NO # Possible: YES, NO # Default: NO -WGET_USE_SSL?= YES -# Enable SSL in wget (for https connections) -# Possible: YES, NO -# Default: YES - #WDM_MANAGERS?= # Is a space-separated list of window managers for x11/wdm to support. # Possible: any space-separated list of window managers @@ -2241,7 +2240,8 @@ XEN12_USE_COM2?= NO #MASTER_SITE_GNOME= http://public.planetmirror.com.au/pub/gnome/ #MASTER_SITE_GNU= http://public.planetmirror.com.au/pub/gnu/ #MASTER_SITE_MOZILLA= http://public.planetmirror.com.au/pub/mozilla/releases/ -#MASTER_SITE_PERL_CPAN= ftp://mirror.aarnet.edu.au/pub/cpan/modules/by-module/ +#MASTER_SITE_PERL_CPAN= ftp://mirror.aarnet.edu.au/pub/cpan/modules/by-module/ \ +# http://public.planetmirror.com.au/pub/perl/cpan/modules/by-module/ #MASTER_SITE_OPENOFFICE=http://openoffice.mirrors.ilisys.com.au/ \ # http://mirror.pacific.net.au/openoffice/ \ # http://planetmirror.com/pub/openoffice/ diff --git a/mk/defaults/obsolete.mk b/mk/defaults/obsolete.mk index bda76ba6655..d5705114cf1 100644 --- a/mk/defaults/obsolete.mk +++ b/mk/defaults/obsolete.mk @@ -1,4 +1,4 @@ -# $NetBSD: obsolete.mk,v 1.2 2004/11/17 23:28:12 jlam Exp $ +# $NetBSD: obsolete.mk,v 1.2.2.1 2005/02/11 15:27:57 tv Exp $ # # This file holds make(1) logic to allow obsolete or deprecated variables # still to be used. These may eventually disappear over time as the contents @@ -54,9 +54,6 @@ PKG_DEFAULT_OPTIONS+= ldap .if defined(USE_OSS) PKG_DEFAULT_OPTIONS+= oss .endif -.if defined(USE_PAM) -PKG_DEFAULT_OPTIONS+= PAM -.endif .if defined(USE_RSAREF2) && !empty(USE_RSAREF2:M[yY][eE][sS]) PKG_DEFAULT_OPTIONS+= rsaref .endif diff --git a/mk/ghostscript.mk b/mk/ghostscript.mk index 8575479271b..bfe0b412b9f 100644 --- a/mk/ghostscript.mk +++ b/mk/ghostscript.mk @@ -1,4 +1,4 @@ -# $NetBSD: ghostscript.mk,v 1.12 2004/03/10 16:53:50 jmmv Exp $ +# $NetBSD: ghostscript.mk,v 1.12.8.1 2005/02/11 15:27:57 tv Exp $ # # This Makefile fragment is included by packages that require a run-time # dependency on a ghostscript Postscript interpreter. @@ -32,11 +32,9 @@ _GS_PKGSRCDIR?= ../../print/ghostscript-gnu _VALID_GS= # empty -# ghostscript-esp{,-x11,-nox11} satisfies ${GHOSTSCRIPT_REQD}<=7.05.5 +# ghostscript-esp{,-x11,-nox11} satisfies ${GHOSTSCRIPT_REQD}<=7.07.1 # -.for _gs_pattern_ in \ - [0-6].* 7.0 7.0nb* 7.0[0-4] 7.0[0-4]nb* 7.05 7.05nb1 \ - 7.05.[1-4] 7.05.[1-4]nb* 7.05.5 +.for _gs_pattern_ in [0-6].* 7.0 7.0[1-6]* 7.07 7.07.1 . if !empty(GHOSTSCRIPT_REQD:M${_gs_pattern_}) . if defined(USE_X11) _VALID_GS+= ghostscript-esp>=${GHOSTSCRIPT_REQD} @@ -47,9 +45,9 @@ _VALID_GS+= ghostscript-esp-nox11>=${GHOSTSCRIPT_REQD} . endif .endfor -# ghostscript-gnu{,-x11,-nox11} satisfies ${GHOSTSCRIPT_REQD}<=7.05nb1 +# ghostscript-gnu{,-x11,-nox11} satisfies ${GHOSTSCRIPT_REQD}<=7.07 # -.for _gs_pattern_ in [0-6].* 7.0 7.0nb* 7.0[0-4] 7.0[0-4]nb* 7.05 7.05nb1 +.for _gs_pattern_ in [0-6].* 7.0 7.0[1-6]* 7.07 . if !empty(GHOSTSCRIPT_REQD:M${_gs_pattern_}) . if defined(USE_X11) _VALID_GS+= ghostscript-gnu>=${GHOSTSCRIPT_REQD} @@ -62,9 +60,9 @@ _VALID_GS+= ghostscript-gnu-nox11>=${GHOSTSCRIPT_REQD} . endif .endfor -# ghostscript{,-nox11} satisfies ${GHOSTSCRIPT_REQD}<=6.01nb4. +# ghostscript{,-nox11} satisfies ${GHOSTSCRIPT_REQD}<=6.01 # -.for _gs_pattern_ in [0-5].* 6.0 6.0nb* 6.01 6.01nb[1-4] +.for _gs_pattern_ in [0-5].* 6.0 6.01 . if !empty(GHOSTSCRIPT_REQD:M${_gs_pattern_}) . if defined(USE_X11) _VALID_GS+= ghostscript>=${GHOSTSCRIPT_REQD} diff --git a/mk/install/deinstall b/mk/install/deinstall index 2cb733b8f8a..f869d194df1 100644 --- a/mk/install/deinstall +++ b/mk/install/deinstall @@ -1,97 +1,24 @@ # start of deinstall # -# $NetBSD: deinstall,v 1.29 2004/10/11 22:04:19 reed Exp $ - -eval set -- ${PKG_USERS} -for userset; do - user=` - IFS=":" - set -- ${userset} - ${ECHO} "$1" - ` - ALL_USERS="${ALL_USERS} \"${user}\"" -done -eval set -- ${PKG_GROUPS} -for groupset; do - group=` - IFS=":" - set -- ${groupset} - ${ECHO} "$1" - ` - ALL_GROUPS="${ALL_GROUPS} \"${group}\"" -done - -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 - -eval set -- ${PKG_SYSCONFDIR} ${RCD_SCRIPTS_DIR} ${MAKE_DIRS} -for dir; do - ALL_MAKE_DIRS="${ALL_MAKE_DIRS} \"${dir}\"" -done -eval set -- ${MAKE_DIRS_PERMS} -while [ $# -gt 0 ]; do - dir="$1"; owner="$2"; group="$3"; mode="$4" - shift; shift; shift; shift - ALL_MAKE_DIRS="${ALL_MAKE_DIRS} \"${dir}\"" -done -eval set -- ${ALL_MAKE_DIRS} ${OWN_DIRS} -for dir; do - ALL_DIRS="${ALL_DIRS} \"${dir}\"" -done -eval set -- ${OWN_DIRS_PERMS} -while [ $# -gt 0 ]; do - dir="$1"; owner="$2"; group="$3"; mode="$4" - shift; shift; shift; shift - ALL_DIRS="${ALL_DIRS} \"${dir}\"" -done -ALL_DIRS=` - ( eval set -- ${ALL_DIRS} - for dir; do - ${ECHO} "\"${dir}\"" - done - ) | ${SORT} -r -` +# $NetBSD: deinstall,v 1.29.2.1 2005/02/11 15:27:57 tv 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."$$" @@ -104,34 +31,17 @@ DEINSTALL) # 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 @@ -139,114 +49,28 @@ POST-DEINSTALL) fi ${RMDIR} -p `${DIRNAME} ${PKG_SYSCONFDIR}` 2>/dev/null || ${TRUE} fi - - existing_dirs='' - eval set -- ${ALL_DIRS} - for dir; do - if [ "${_PKG_CONFIG}" = "YES" ]; then - 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; \ - for make_dir; do \ - case "${make_dir}" in \ - ${dir}) is_make_dir=1; break ;; \ - esac; \ - done; \ - ${ECHO} ${is_make_dir} \ - ` - if [ ${is_make_dir} -eq 0 -a -d "${dir}" ]; then - existing_dirs="${existing_dirs} \"${dir}\"" - fi - else - case "${dir}" in - ${PKG_PREFIX}/*) - ${RMDIR} -p "${dir}" 2>/dev/null || ${TRUE} - ;; - esac - case "${dir}" in - # - # Don't bother the admin about the following dirs - # if they still exist. - # - ${PKG_SYSCONFBASE}|${RCD_SCRIPTS_DIR}) - ;; - *) - if [ -d "${dir}" ]; then - existing_dirs="${existing_dirs} \"${dir}\"" - fi - ;; - esac - fi - done - - if [ -n "${ALL_USERS}" -o -n "${ALL_GROUPS}" -o \ - -n "${modified_files}" -o -n "${existing_dirs}" ]; then - ${CAT} << EOF -=========================================================================== -If you won't be using ${PKGNAME} any longer, you may want to remove -EOF - if [ -n "${ALL_USERS}" ]; then - ${ECHO} "" - allusersmsg=" * the following users" - sep=": " - eval set -- ${ALL_USERS} - for user; do - allusersmsg="${allusersmsg}${sep}${user}" - sep=", " - done - ${ECHO} "${allusersmsg}" - fi - if [ -n "${ALL_GROUPS}" ]; then - ${ECHO} "" - allgroupsmsg=" * the following groups" - sep=": " - eval set -- ${ALL_GROUPS} - for group; do - allgroupsmsg="${allgroupsmsg}${sep}${group}" - sep=", " - done - ${ECHO} "${allgroupsmsg}" - fi - if [ -n "${modified_files}" ]; then - ${CAT} << EOF - - * the following files: - -EOF - eval set -- ${modified_files} - for file; do - ${ECHO} " ${file}" - done - fi - if [ -n "${existing_dirs}" ]; then - ${CAT} << EOF - - * the following directories: - -EOF - eval set -- ${existing_dirs} - for dir; do - ${ECHO} " ${dir}" - 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 - fi + # + # Remove empty directories and unused users/groups. + # + case ${_PKG_CONFIG} in + YES) ${TEST} -x ./+DIRS && + ./+DIRS REMOVE ${PKG_METADATA_DIR} ;; + esac + case ${_PKG_CREATE_USERGROUP} in + YES) ${TEST} -x ./+USERGROUP && + ./+USERGROUP REMOVE ${PKG_METADATA_DIR} ;; + esac + # + # Check for any existing bits after we're finished de-installing. + # + ${TEST} -x ./+USERGROUP && + ./+USERGROUP CHECK-REMOVE ${PKG_METADATA_DIR} + ${TEST} -x ./+FILES && + ./+FILES CHECK-REMOVE ${PKG_METADATA_DIR} + ${TEST} -x ./+RCD_SCRIPTS && + ./+RCD_SCRIPTS CHECK-REMOVE ${PKG_METADATA_DIR} + ${TEST} -x ./+DIRS && + ./+DIRS CHECK-REMOVE ${PKG_METADATA_DIR} ;; esac diff --git a/mk/install/dirs b/mk/install/dirs new file mode 100644 index 00000000000..caedb17ecf4 --- /dev/null +++ b/mk/install/dirs @@ -0,0 +1,209 @@ +#!@SH@ +# +# $NetBSD: dirs,v 1.5.2.2 2005/02/11 15:27:57 tv Exp $ +# +# +DIRS - reference-counted directory management script +# +# Usage: ./+DIRS ADD|REMOVE [metadatadir] +# ./+DIRS CHECK-ADD|CHECK-REMOVE [metadatadir] +# +# This script supports two actions, ADD and REMOVE, that will add or +# remove the directories needed by the package associated with +# <metadatadir>. The CHECK-ADD action will check whether any directories +# needed by the package are missing, and print an informative message +# noting those directories. The CHECK-REMOVE action will check whether +# any directories needed by the package still exist, and print an +# informative message noting those directories. The CHECK-ADD and +# CHECK-REMOVE actions return non-zero if they detect either missing +# or existing directories, respectively. +# +# Lines starting with "# DIR: " are data read by this script that +# name the directories that this package requires to exist to function +# correctly, e.g. +# +# # DIR: /etc/foo m +# # DIR: /var/log/foo/tmp mo foo-user foo-group 0700 +# +# The second field in each DIRS entry is a set of flags with the following +# meaning: +# +# m create (make) the directory when ADDing +# o directory is owned by the package +# +CAT="@CAT@" +CHGRP="@CHGRP@" +CHMOD="@CHMOD@" +CHOWN="@CHOWN@" +ECHO="@ECHO@" +GREP="@GREP@" +MKDIR="@MKDIR@" +MV="@MV@" +PWD_CMD="@PWD_CMD@" +RM="@RM@" +RMDIR="@RMDIR@" +SED="@SED@" +SORT="@SORT@" +TEST="@TEST@" +TRUE="@TRUE@" + +SELF=$0 +ACTION=$1 +PKG_METADATA_DIR="${2-`${PWD_CMD}`}" +: ${PKGNAME=${PKG_METADATA_DIR##*/}} +: ${PKG_DBDIR=${PKG_METADATA_DIR%/*}} +: ${PKG_REFCOUNT_DBDIR=${PKG_DBDIR}.refcount} + +PKG_REFCOUNT_DIRS_DBDIR="${PKG_REFCOUNT_DBDIR}/dirs" + +exitcode=0 +case $ACTION in +ADD) + ${SED} -n "/^\# DIR: /{s/^\# DIR: //;p;}" ${SELF} | ${SORT} -u | + while read dir d_flags d_user d_group d_mode; do + case $dir in + ""|[!/]*) continue ;; + esac + case $d_flags in + *m*) ;; + *) continue ;; + esac + shadow_dir="${PKG_REFCOUNT_DIRS_DBDIR}$dir" + perms="$shadow_dir/+PERMISSIONS" + preexist="$shadow_dir/+PREEXISTING" + token="$shadow_dir/${PKGNAME}" + if ${TEST} ! -d "$shadow_dir"; then + ${MKDIR} $shadow_dir + ${TEST} -d "$dir" && + ${ECHO} "${PKGNAME}" > $preexist + fi + ${MKDIR} $dir + if ${TEST} -f "$token" && \ + ${GREP} "^${PKG_METADATA_DIR}$" $token >/dev/null; then + : + else + ${ECHO} "${PKG_METADATA_DIR}" >> $token + fi + case $d_user/$d_group/$d_mode in + [!/]*/[!/]*/[!/]*) + ${ECHO} "$d_user $d_group $d_mode" > $perms + ;; + esac + case $d_user/$d_group/$d_mode in + [!/]*/[!/]*/[!/]*) + ${CHOWN} $d_user $dir + ${CHGRP} $d_group $dir + ${CHMOD} $d_mode $dir + ;; + esac + done + ;; + +REMOVE) + ${SED} -n "/^\# DIR: /{s/^\# DIR: //;p;}" ${SELF} | ${SORT} -ru | + while read dir d_flags d_user d_group d_mode; do + case $dir in + ""|[!/]*) continue ;; + esac + case $d_flags in + *m*) ;; + *) continue ;; + esac + shadow_dir="${PKG_REFCOUNT_DIRS_DBDIR}$dir" + perms="$shadow_dir/+PERMISSIONS" + preexist="$shadow_dir/+PREEXISTING" + token="$shadow_dir/${PKGNAME}" + tokentmp="$token.tmp.$$" + if ${TEST} -f "$token" && \ + ${GREP} "^${PKG_METADATA_DIR}$" $token >/dev/null; then + ${CAT} "$token" | ${GREP} -v "^${PKG_METADATA_DIR}$" > $tokentmp + case `${CAT} $tokentmp | ${SED} -n "$="` in + "") + ${TEST} -f "$preexist" || + { ${RMDIR} -p $dir 2>/dev/null || ${TRUE}; } + ${RM} -f $perms $preexist $token $token.tmp.* + ${RMDIR} -p $shadow_dir 2>/dev/null || ${TRUE} + ;; + *) + ${MV} -f $tokentmp $token + ;; + esac + fi + done + ;; + +CHECK-ADD) + ${SED} -n "/^\# DIR: /{s/^\# DIR: //;p;}" ${SELF} | ${SORT} -u | + { while read dir d_flags d_user d_group d_mode; do + case $dir in + ""|[!/]*) continue ;; + *) ${TEST} -d "$dir" && continue ;; + esac + case $d_flags in + *m*) ;; + *) continue ;; + esac + case "$printed_header" in + yes) ;; + *) printed_header=yes + ${ECHO} "===========================================================================" + ${ECHO} "The following directories should be created for ${PKGNAME}:" + ${ECHO} "" + ;; + esac + case $d_user/$d_group/$d_mode in + [!/]*/[!/]*/[!/]*) + ${ECHO} " $dir (o=$d_user, g=$d_group, m=$d_mode)" + ;; + *) + ${ECHO} " $dir" + ;; + esac + done + case "$printed_header" in + yes) ${ECHO} "" + ${ECHO} "===========================================================================" + exit 1 + ;; + esac; } + ${TEST} $? -eq 0 || exitcode=1 + ;; + +CHECK-REMOVE) + ${SED} -n "/^\# DIR: /{s/^\# DIR: //;p;}" ${SELF} | ${SORT} -ru | + { while read dir d_flags d_user d_group d_mode; do + case $dir in + ""|[!/]*) continue ;; + *) ${TEST} -d "$dir" || continue ;; + esac + case $d_flags in + *o*) ;; + *) continue ;; + esac + shadow_dir="${PKG_REFCOUNT_DIRS_DBDIR}$dir" + ${TEST} -d "$shadow_dir" && continue # refcount isn't zero + case "$printed_header" in + yes) ;; + *) printed_header=yes + ${ECHO} "===========================================================================" + ${ECHO} "The following directories are no longer being used by ${PKGNAME}," + ${ECHO} "and they can be removed if no other packages are using them:" + ${ECHO} "" + ;; + esac + ${ECHO} " $dir" + done + case "$printed_header" in + yes) ${ECHO} "" + ${ECHO} "===========================================================================" + exit 1 + ;; + esac; } + ${TEST} $? -eq 0 || exitcode=1 + ;; + +*) + ${ECHO} "Usage: ./+DIRS ADD|REMOVE [metadatadir]" + ${ECHO} " ./+DIRS CHECK-ADD|CHECK-REMOVE [metadatadir]" + ;; +esac +exit $exitcode diff --git a/mk/install/files b/mk/install/files new file mode 100644 index 00000000000..60cfc91b654 --- /dev/null +++ b/mk/install/files @@ -0,0 +1,276 @@ +#!@SH@ +# +# $NetBSD: files,v 1.1.2.2 2005/02/11 15:27:57 tv Exp $ +# +# +FILES - reference-counted configuration file management script +# +# Usage: ./+FILES ADD|REMOVE [metadatadir] +# ./+FILES VIEW-REMOVE depotdir viewdir +# ./+FILES CHECK-ADD|CHECK-REMOVE [metadatadir] +# +# This script supports two actions, ADD and REMOVE, that will add or +# remove the configuration files needed by the package associated with +# <metadatadir>. The CHECK-ADD action will check whether any files +# needed by the package are missing, and print an informative message +# noting those files. The CHECK-REMOVE action will check whether +# any files needed by the package still exist, and print an informative +# message noting those files. The CHECK-ADD and CHECK-REMOVE actions +# return non-zero if they detect either missing or existing files, +# respectively. The VIEW-REMOVE action will remove from <viewdir> the +# links to the configuration files in <depotdir>. +# +# Lines starting with "# FILE: " are data read by this script that +# name the files that this package requires to exist to function +# correctly, along with the locations of the example files, e.g. +# +# # FILE: /etc/bar.conf c /example/bar.conf +# # FILE: /etc/baz/conf c /example/baz.conf 0600 foo-user foo-group +# +# The second field in each FILE entry is a set of flags with the following +# meaning: +# +# c file is copied into place +# +CAT="@CAT@" +CP="@CP@" +CHGRP="@CHGRP@" +CHMOD="@CHMOD@" +CHOWN="@CHOWN@" +CMP="@CMP@" +ECHO="@ECHO@" +GREP="@GREP@" +MKDIR="@MKDIR@" +MV="@MV@" +PWD_CMD="@PWD_CMD@" +RM="@RM@" +RMDIR="@RMDIR@" +SED="@SED@" +SORT="@SORT@" +TEST="@TEST@" +TRUE="@TRUE@" + +SELF=$0 +ACTION=$1 + +case ${ACTION} in +VIEW-REMOVE) + DEPOTDIR="$2" + VIEWDIR="$3" + ${TEST} -n "${DEPOTDIR}" -a -n "${VIEWDIR}" || exit 0 + ;; +*) + PKG_METADATA_DIR="${2-`${PWD_CMD}`}" + : ${PKGNAME=${PKG_METADATA_DIR##*/}} + : ${PKG_DBDIR=${PKG_METADATA_DIR%/*}} + : ${PKG_REFCOUNT_DBDIR=${PKG_DBDIR}.refcount} + PKG_REFCOUNT_FILES_DBDIR="${PKG_REFCOUNT_DBDIR}/files" + ;; +esac + +exitcode=0 +case $ACTION in +ADD) + ${SED} -n "/^\# FILE: /{s/^\# FILE: //;p;}" ${SELF} | ${SORT} -u | + { while read file f_flags f_eg f_mode f_user f_group; do + case $file in + ""|[!/]*) continue ;; + esac + case $f_flags in + *c*) ;; + *) continue ;; + esac + + shadow_dir="${PKG_REFCOUNT_FILES_DBDIR}$file" + perms="$shadow_dir/+PERMISSIONS" + preexist="$shadow_dir/+PREEXISTING" + token="$shadow_dir/${PKGNAME}" + if ${TEST} ! -d "$shadow_dir"; then + ${MKDIR} $shadow_dir + ${TEST} -f "$file" && + ${ECHO} "${PKGNAME}" > $preexist + fi + if ${TEST} -f "$token" && \ + ${GREP} "^${PKG_METADATA_DIR}$" $token >/dev/null; then + : + else + ${ECHO} "${PKG_METADATA_DIR}" >> $token + fi + + case $f_mode$f_user$f_group in + "") ;; + *) ${ECHO} "$f_mode $f_user $f_group" > $perms ;; + esac + if ${TEST} ! -f "$file" -a ! -f "$f_eg"; then + : + else + case "$printed_header" in + yes) ;; + *) printed_header=yes + ${ECHO} "===========================================================================" + ${ECHO} "Installing files needed by ${PKGNAME}:" + ;; + esac + if ${TEST} -f "$file"; then + ${ECHO} "" + ${ECHO} " $file already exists." + elif ${TEST} -f "$f_eg"; then + ${ECHO} "" + ${ECHO} " $file" + ${ECHO} " [$f_eg]" + ${CP} $f_eg $file + case $f_mode in + "") ;; + *) ${CHMOD} $f_mode $file ;; + esac + case $f_user in + "") ;; + *) ${CHOWN} $f_user $file ;; + esac + case $f_group in + "") ;; + *) ${CHGRP} $f_group $file ;; + esac + fi + fi + done + case "$printed_header" in + yes) ${ECHO} "" + ${ECHO} "===========================================================================" + ;; + esac; } + ;; + +REMOVE) + ${SED} -n "/^\# FILE: /{s/^\# FILE: //;p;}" ${SELF} | ${SORT} -ru | + while read file f_flags f_eg f_mode f_user f_group; do + case $file in + ""|[!/]*) continue ;; + esac + case $f_flags in + *c*) ;; + *) continue ;; + esac + shadow_dir="${PKG_REFCOUNT_FILES_DBDIR}$file" + perms="$shadow_dir/+PERMISSIONS" + preexist="$shadow_dir/+PREEXISTING" + token="$shadow_dir/${PKGNAME}" + tokentmp="$token.tmp.$$" + if ${TEST} -f "$token" && \ + ${GREP} "^${PKG_METADATA_DIR}$" $token >/dev/null; then + ${CAT} "$token" | ${GREP} -v "^${PKG_METADATA_DIR}$" > $tokentmp + case `${CAT} $tokentmp | ${SED} -n "$="` in + "") + if ${TEST} -f "$preexist"; then + : + elif ${TEST} -f "$file" -a -f "$f_eg" -a \ + ! "$file" -ef "$f_eg" && \ + ${CMP} -s "$file" "$f_eg"; then + ${RM} -f "$file" + fi + ${RM} -f $perms $preexist $token $token.tmp.* + ${RMDIR} -p $shadow_dir 2>/dev/null || ${TRUE} + ;; + *) + ${MV} -f $tokentmp $token + ;; + esac + fi + done + ;; + +VIEW-REMOVE) + ${SED} -n "/^\# FILE: /{s/^\# FILE: //;p;}" ${SELF} | ${SORT} -ru | + while read file f_flags f_eg f_mode f_user f_group; do + case $file in + ${DEPOTDIR}/*) ;; + *) continue ;; + esac + link="${VIEWDIR}/${file#${DEPOTDIR}/}" + dir="${link%[^/]*}" + if ${TEST} -h "$link"; then + ${RM} -f $link + ${RMDIR} -p $dir 2>/dev/null || ${TRUE} + fi + done + ;; + +CHECK-ADD) + ${SED} -n "/^\# FILE: /{s/^\# FILE: //;p;}" ${SELF} | ${SORT} -ru | + { while read file f_flags f_eg f_mode f_user f_group; do + case $file in + ""|[!/]*) continue ;; + *) ${TEST} -f "$file" && continue ;; + esac + case $f_flags in + *c*) ;; + *) continue ;; + esac + case "$printed_header" in + yes) ;; + *) printed_header=yes + ${ECHO} "===========================================================================" + ${ECHO} "The following files should be created for ${PKGNAME}:" + ;; + esac + ${ECHO} "" + case $f_mode/$f_user/$f_group in + //) + ${ECHO} " $file" + ;; + [!/]*//) + ${ECHO} " $file (m=$f_mode)" + ;; + [!/]*/[!/]*/) + ${ECHO} " $file (o=$f_user, m=$f_mode)" + ;; + [!/]*/[!/]*/[!/]*) + ${ECHO} " $file (o=$f_user, g=$f_group, m=$f_mode)" + ;; + esac + ${TEST} -f "$f_eg" && ${ECHO} " [$f_eg]" + done + case "$printed_header" in + yes) ${ECHO} "" + ${ECHO} "===========================================================================" + exit 1 + ;; + esac; } + ${TEST} $? -eq 0 || exitcode=1 + ;; + +CHECK-REMOVE) + ${SED} -n "/^\# FILE: /{s/^\# FILE: //;p;}" ${SELF} | ${SORT} -ru | + { while read file f_flags f_eg f_mode f_user f_group; do + case $file in + ""|[!/]*) continue ;; + *) ${TEST} -f "$file" || continue ;; + esac + shadow_dir="${PKG_REFCOUNT_FILES_DBDIR}$file" + ${TEST} -d "$shadow_dir" && continue # refcount isn't zero + case "$printed_header" in + yes) ;; + *) printed_header=yes + ${ECHO} "===========================================================================" + ${ECHO} "The following file are no longer being used by ${PKGNAME}," + ${ECHO} "and they can be removed if no other packages are using them:" + ${ECHO} "" + ;; + esac + ${ECHO} " $file" + done + case "$printed_header" in + yes) ${ECHO} "" + ${ECHO} "===========================================================================" + exit 1 + ;; + esac; } + ${TEST} $? -eq 0 || exitcode=1 + ;; + +*) + ${ECHO} "Usage: ./+FILES ADD|REMOVE [metadatadir]" + ${ECHO} " ./+FILES VIEW-REMOVE depotdir viewdir" + ${ECHO} " ./+FILES CHECK-ADD|CHECK-REMOVE [metadatadir]" + ;; +esac +exit $exitcode diff --git a/mk/install/header b/mk/install/header index 58d0b6fc9d1..ff8135f7866 100644 --- a/mk/install/header +++ b/mk/install/header @@ -2,7 +2,7 @@ # # start of header # -# $NetBSD: header,v 1.26.6.1 2004/12/31 20:25:30 tv Exp $ +# $NetBSD: header,v 1.26.6.2 2005/02/11 15:27:57 tv Exp $ PKGNAME=$1 STAGE=$2 @@ -23,7 +23,6 @@ EXPR="@EXPR@" FALSE="@FALSE@" FIND="@FIND@" GREP="@GREP@" -GROUPADD="@GROUPADD@" GTAR="@GTAR@" HEAD="@HEAD@" ID="@ID@" @@ -35,6 +34,7 @@ MV="@MV@" PERL5="@PERL5@" PKG_ADMIN="@PKG_ADMIN@" PKG_INFO="@PKG_INFO@" +PWD_CMD="@PWD_CMD@" RM="@RM@" RMDIR="@RMDIR@" SED="@SED@" @@ -46,9 +46,9 @@ TEST="@TEST@" TOUCH="@TOUCH@" TR="@TR@" TRUE="@TRUE@" -USERADD="@USERADD@" XARGS="@XARGS@" +: ${PKG_METADATA_DIR=`${PWD_CMD}`} PKGBASE="@PKGBASE@" LOCALBASE="@LOCALBASE@" @@ -60,25 +60,6 @@ ${LOCALBASE}/*) VIEW="${PKG_PREFIX#${LOCALBASE}/}" ;; *) VIEW="" ;; esac -PKG_USERS="@PKG_USERS@" -PKG_GROUPS="@PKG_GROUPS@" - -SPECIAL_PERMS="@SPECIAL_PERMS@" - -CONF_FILES="@CONF_FILES@" -CONF_FILES_MODE="@CONF_FILES_MODE@" -CONF_FILES_PERMS="@CONF_FILES_PERMS@" -SUPPORT_FILES="@SUPPORT_FILES@" -SUPPORT_FILES_PERMS="@SUPPORT_FILES_PERMS@" -RCD_SCRIPTS="@RCD_SCRIPTS@" -RCD_SCRIPTS_DIR="@RCD_SCRIPTS_DIR@" -RCD_SCRIPTS_EXAMPLEDIR="@RCD_SCRIPTS_EXAMPLEDIR@" - -MAKE_DIRS="@MAKE_DIRS@" -MAKE_DIRS_PERMS="@MAKE_DIRS_PERMS@" -OWN_DIRS="@OWN_DIRS@" -OWN_DIRS_PERMS="@OWN_DIRS_PERMS@" - PKG_SYSCONFBASE="@PKG_SYSCONFBASE@" PKG_SYSCONFDEPOTBASE="@PKG_SYSCONFDEPOTBASE@" PKG_SYSCONFBASEDIR="@PKG_SYSCONFBASEDIR@" @@ -93,13 +74,6 @@ esac PKG_REGISTER_SHELLS="@PKG_REGISTER_SHELLS@" PKG_SHELL="@PKG_SHELL@" -ALL_USERS= -ALL_GROUPS= -ALL_FILES= -ALL_MAKE_DIRS= -ALL_DIRS= -VIEW_FILES= - CONF_IGNORE_FILES="*[~#] *.OLD *.orig *,v .pkgsrc */.pkgsrc" PKG_INSTALLATION_TYPE="@PKG_INSTALLATION_TYPE@" @@ -112,9 +86,6 @@ case "${PKG_CREATE_USERGROUP:-@PKG_CREATE_USERGROUP@}" in _PKG_CREATE_USERGROUP=NO ;; esac -if [ -z "${USERADD}" -o -z "${GROUPADD}" ]; then - _PKG_CREATE_USERGROUP=NO -fi case "${PKG_CONFIG:-@PKG_CONFIG@}" in [Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1) @@ -134,40 +105,4 @@ case "${PKG_RCD_SCRIPTS:-@PKG_RCD_SCRIPTS@}" in ;; esac -msginit() -{ - _msgn=0 - _msgempty=1 - -} - -msgempty() -{ - if [ $_msgempty -gt 0 ]; then - ${TRUE} - else - ${FALSE} - fi -} - -msgadd() -{ - eval _msg$_msgn=\"$1\" - _msgn=`${EXPR} $_msgn + 1` - _msgempty=0 -} - -msgprint() -{ - i=0 - while [ $i -lt $_msgn ]; do - eval _msg=_msg$i - eval ${ECHO} "\$$_msg" | ${SED} \ - -e "s,^###, ," \ - -e "s,^##, ," \ - -e "s,^#, ," - i=`${EXPR} $i + 1` - done -} - # end of header diff --git a/mk/install/install b/mk/install/install index 39781a08694..6e861496e7c 100644 --- a/mk/install/install +++ b/mk/install/install @@ -1,120 +1,24 @@ # start of install # -# $NetBSD: install,v 1.32.2.1 2005/01/10 16:15:25 tv 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 +# $NetBSD: install,v 1.32.2.2 2005/02/11 15:27:57 tv 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 - if ! msgempty; then - ${ECHO} "===========================================================================" - msgprint - ${ECHO} "" - ${ECHO} "===========================================================================" - fi - if [ ${_pkg_exit} -gt 0 ]; then - exit ${_pkg_exit} + # + # Require that necessary users and groups exist or else fail the + # installation of the package. + # + case ${_PKG_CREATE_USERGROUP} in + YES) ${TEST} -x ./+USERGROUP && + ./+USERGROUP ADD ${PKG_METADATA_DIR} ;; + esac + if ${TEST} -x ./+USERGROUP && + ./+USERGROUP CHECK-ADD ${PKG_METADATA_DIR}; then + : + else + exit 1 fi - + # # Create package directories at pre-install time. # if [ "${PKG_INSTALLATION_TYPE}" = "pkgviews" -a \ @@ -131,271 +35,38 @@ PRE-INSTALL) ${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 + case ${_PKG_CONFIG} in + YES) ${TEST} -x ./+DIRS && + ./+DIRS ADD ${PKG_METADATA_DIR} ;; + esac ;; POST-INSTALL) # - # Note any missing package directories. + # Copy configuration/support files into place. # - 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 [ -f "${file}" ]; then - if [ ! "${file}" -ef "${samplefile}" ]; then - ${ECHO} " ${file} already exists, example file is" - ${ECHO} " ${samplefile}" - fi - else - if [ -f "${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 [ -f "${file}" ]; then - if [ ! "${file}" -ef "${samplefile}" ]; then - ${ECHO} " ${file} already exists, example file is" - ${ECHO} " ${samplefile}" - fi - else - if [ -f "${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 [ -f ${file} ]; then - if [ ! "${file}" -ef "${samplefile}" ]; then - ${ECHO} " ${file} already exists, example file is" - ${ECHO} " ${samplefile}" - fi - else - if [ -f "${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="${PKG_PREFIX}/${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 [ -f "${file}" ]; then - if [ ! "${file}" -ef "${samplefile}" ]; then - ${ECHO} " ${file} already exists, example file is" - ${ECHO} " ${samplefile}" - fi - else - if [ -f "${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 + case ${_PKG_CONFIG} in + YES) ${TEST} -x ./+FILES && + ./+FILES ADD ${PKG_METADATA_DIR} ;; + esac + case ${_PKG_CONFIG}${_PKG_RCD_SCRIPTS} in + YESYES) ${TEST} -x ./+RCD_SCRIPTS && + ./+RCD_SCRIPTS ADD ${PKG_METADATA_DIR} ;; + esac + # + # Set special permissions on any files/directories that need them. + # + ${TEST} -x ./+PERMS && + ./+PERMS ${PKG_METADATA_DIR} - ${ECHO} " ${file}" - done - ${CAT} << EOF -=========================================================================== -EOF - fi - fi + # Check for any missing bits after we're finished installing. + # + ${TEST} -x ./+DIRS && + ./+DIRS CHECK-ADD ${PKG_METADATA_DIR} + ${TEST} -x ./+FILES && + ./+FILES CHECK-ADD ${PKG_METADATA_DIR} + ${TEST} -x ./+RCD_SCRIPTS && + ./+RCD_SCRIPTS CHECK-ADD ${PKG_METADATA_DIR} ;; VIEW-INSTALL) @@ -411,13 +82,8 @@ VIEW-INSTALL) # 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 + ${SETENV} PLIST_IGNORE_FILES="${CONF_IGNORE_FILES}" \ + ${LINKFARM} -t ${PKG_SYSCONFVIEWBASE} -d ${PKG_SYSCONFDEPOTBASE} ${PKGNAME} fi ;; esac diff --git a/mk/install/perms b/mk/install/perms new file mode 100644 index 00000000000..3292728b1ca --- /dev/null +++ b/mk/install/perms @@ -0,0 +1,78 @@ +#!@SH@ +# +# $NetBSD: perms,v 1.1.2.2 2005/02/11 15:27:57 tv Exp $ +# +# +PERMS - special file and directory permissions management script +# +# Usage: ./+PERMS [metadatadir] +# +# This script sets special permissions on files and directories needed +# by the package associated with <metadatadir>. +# +# Lines starting with "# PERMS: " are data read by this script that +# name the files and directories required to have special permissions +# in order for this package to function correctly. +# +# # PERMS: /usr/pkg/bin/lppasswd 4711 lp sys +# # PERMS: /usr/pkg/etc/pwd.db 0600 +# +CHGRP="@CHGRP@" +CHMOD="@CHMOD@" +CHOWN="@CHOWN@" +ECHO="@ECHO@" +PWD_CMD="@PWD_CMD@" +SED="@SED@" +SORT="@SORT@" +TEST="@TEST@" + +SELF=$0 +PKG_METADATA_DIR="${1-`${PWD_CMD}`}" +: ${PKGNAME=${PKG_METADATA_DIR##*/}} + +${SED} -n "/^\# PERMS: /{s/^\# PERMS: //;p;}" ${SELF} | ${SORT} -u | +{ while read file f_mode f_user f_group; do + case $file in + ""|[!/]*) continue ;; + *) ${TEST} -f "$file" || continue ;; + esac + case "$printed_header" in + yes) ;; + *) printed_header=yes + ${ECHO} "===========================================================================" + ${ECHO} "The following files and directories needed by ${PKGNAME}" + ${ECHO} "have special permissions:" + ${ECHO} "" + ;; + esac + case $f_mode/$f_user/$f_group in + //) + ${ECHO} " $file" + ;; + [!/]*//) + ${ECHO} " $file (m=$f_mode)" + ;; + [!/]*/[!/]*/) + ${ECHO} " $file (o=$f_user, m=$f_mode)" + ;; + [!/]*/[!/]*/[!/]*) + ${ECHO} " $file (o=$f_user, g=$f_group, m=$f_mode)" + ;; + esac + case $f_mode in + "") ;; + *) ${CHMOD} $f_mode $file ;; + esac + case $f_user in + "") ;; + *) ${CHOWN} $f_user $file ;; + esac + case $f_group in + "") ;; + *) ${CHGRP} $f_group $file ;; + esac +done +case "$printed_header" in +yes) ${ECHO} "" + ${ECHO} "===========================================================================" + ;; +esac; } diff --git a/mk/install/usergroup b/mk/install/usergroup new file mode 100644 index 00000000000..c3e1ea9cab8 --- /dev/null +++ b/mk/install/usergroup @@ -0,0 +1,384 @@ +#!@SH@ +# +# $NetBSD: usergroup,v 1.7.2.2 2005/02/11 15:27:57 tv Exp $ +# +# +USERGROUP - users and groups management script +# +# Usage: ./+USERGROUP ADD|REMOVE [metadatadir] +# ./+USERGROUP CHECK-ADD|CHECK-REMOVE [metadatadir] +# +# This script supports two actions, ADD and REMOVE, that will add or +# remove the users and groups needed by the package associated with +# <metadatadir>. The CHECK-ADD action will check whether any users or +# groups needed by the package are missing, and print an informative +# message noting those users and groups. The CHECK-REMOVE action will +# check whether any users and groups needed by the package still exist, +# and print an informative message noting those users and groups. The +# CHECK-ADD and CHECK-REMOVE actions return non-zero if they detect +# either missing or existing users/groups, respectively. +# +# Lines starting with "# USER: " or "# GROUP: " are data read by this +# script that name the users and groups that this package requires to +# exist to function correctly, e.g. +# +# # USER: foo:foogrp::The Foomister +# # GROUP: foogrp +# +# The USER lines are of the form: +# +# user:group[:[userid][:[descr][:[home][:shell]]]] +# +# Only the user and group are required; everything else is optional, +# but the colons must be in the right places when specifying optional +# bits. +# +# The GROUP lines are of the form: +# +# group[:groupid] +# +# Only the group is required; the groupid is optional. +# +CAT="@CAT@" +CHGRP="@CHGRP@" +ECHO="@ECHO@" +GREP="@GREP@" +GROUPADD="@GROUPADD@" +ID="@ID@" +MKDIR="@MKDIR@" +PWD_CMD="@PWD_CMD@" +RM="@RM@" +RMDIR="@RMDIR@" +SED="@SED@" +SORT="@SORT@" +TEST="@TEST@" +USERADD="@USERADD@" + +SELF=$0 +ACTION=$1 +PKG_METADATA_DIR="${2-`${PWD_CMD}`}" +: ${PKGNAME=${PKG_METADATA_DIR##*/}} +: ${PKG_DBDIR=${PKG_METADATA_DIR%/*}} +: ${PKG_REFCOUNT_DBDIR=${PKG_DBDIR}.refcount} + +PKG_REFCOUNT_USERS_DBDIR="${PKG_REFCOUNT_DBDIR}/users" +PKG_REFCOUNT_GROUPS_DBDIR="${PKG_REFCOUNT_DBDIR}/groups" + +PKG_USER_HOME="@PKG_USER_HOME@" +PKG_USER_SHELL="@PKG_USER_SHELL@" + +group_exists() +{ + case $group in + "") return 2 ;; + esac + # Check using chgrp to work properly in an NIS environment. + testfile="./grouptest.tmp.$$" + ${ECHO} > $testfile + if ${CHGRP} $group $testfile >/dev/null 2>&1; then + ${RM} -f $testfile + return 0 + fi + ${RM} -f $testfile + return 1 +} + +user_exists() +{ + case $user in + "") return 2 ;; + esac + # Check using id to work properly in an NIS environment. + if ${ID} $user >/dev/null 2>&1; then + return 0 + fi + return 1 +} + +listwrap() +{ + length=$1 + buffer= + while read line; do + set -- $line + for word; do + case $buffer in + "") buffer="$word" ;; + *) buffer="$buffer $word" ;; + esac + if ${TEST} ${#buffer} -gt $length; then + ${ECHO} " $buffer" + buffer= + fi + done + done + case $buffer in + "") ;; + *) ${ECHO} " $buffer" ;; + esac +} + +exitcode=0 +case $ACTION in +ADD) + ${SED} -n "/^\# GROUP: /{s/^\# GROUP: //;p;}" ${SELF} | ${SORT} -u | + { while read line; do + SAVEIFS="$IFS"; IFS=":" + set -- $line + group="$1"; groupid="$2" + IFS="$SAVEIFS" + case $group in + "") continue ;; + esac + shadow_dir="${PKG_REFCOUNT_GROUPS_DBDIR}/$group" + preexist="$shadow_dir/+PREEXISTING" + token="$shadow_dir/${PKGNAME}" + if ${TEST} ! -d "$shadow_dir"; then + ${MKDIR} $shadow_dir + group_exists $group && + ${ECHO} "${PKGNAME}" > $preexist + fi + if group_exists $group; then + : + elif ${TEST} -n "${GROUPADD}" -a -x "${GROUPADD}"; then + ${ECHO} "Creating group: $group"; + case $groupid in + "") ${GROUPADD} $group ;; + *) ${GROUPADD} -g $groupid $group ;; + esac + fi + if ${TEST} -f "$token" && \ + ${GREP} "^${PKG_METADATA_DIR}$" $token >/dev/null; then + : + else + ${ECHO} "${PKG_METADATA_DIR}" >> $token + fi + done; } + ${SED} -n "/^\# USER: /{s/^\# USER: //;p;}" ${SELF} | ${SORT} -u | + { while read line; do + SAVEIFS="$IFS"; IFS=":" + set -- $line + user="$1"; group="$2"; userid="$3" + descr="$4"; home="$5" shell="$6" + IFS="$SAVEIFS" + case $user in + "") continue ;; + esac + : ${descr:="${PKGNAME%-[0-9]*} $user user"} + : ${home:="${PKG_USER_HOME}"} + : ${shell:="${PKG_USER_SHELL}"} + shadow_dir="${PKG_REFCOUNT_USERS_DBDIR}/$user" + preexist="$shadow_dir/+PREEXISTING" + token="$shadow_dir/${PKGNAME}" + if ${TEST} ! -d "$shadow_dir"; then + ${MKDIR} $shadow_dir + user_exists $user && + ${ECHO} "${PKGNAME}" > $preexist + fi + if user_exists $user && group_exists $group; then + : + elif ${TEST} -n "${USERADD}" -a -x "${USERADD}"; then + ${ECHO} "Creating user: $user"; + case $userid in + "") ${USERADD} -c "$descr" -d "$home" -s "$shell" \ + -g $group $user ;; + *) ${USERADD} -c "$descr" -d "$home" -s "$shell" \ + -g $group -u $userid $user ;; + esac + fi + if ${TEST} -f "$token" && \ + ${GREP} "^${PKG_METADATA_DIR}$" $token >/dev/null; then + : + else + ${ECHO} "${PKG_METADATA_DIR}" >> $token + fi + done; } + ;; + +REMOVE) + ${SED} -n "/^\# USER: /{s/^\# USER: //;p;}" ${SELF} | ${SORT} -u | + { while read line; do + SAVEIFS="$IFS"; IFS=":" + set -- $line + user="$1"; group="$2"; userid="$3" + descr="$4"; home="$5" shell="$6" + IFS="$SAVEIFS" + case $user in + "") continue ;; + esac + shadow_dir="${PKG_REFCOUNT_USERS_DBDIR}/$user" + preexist="$shadow_dir/+PREEXISTING" + token="$shadow_dir/${PKGNAME}" + tokentmp="$token.tmp.$$" + if ${TEST} -f "$token" && \ + ${GREP} "^${PKG_METADATA_DIR}$" $token >/dev/null; then + ${CAT} "$token" | ${GREP} -v "^${PKG_METADATA_DIR}$" > $tokentmp + case `${CAT} $tokentmp | ${SED} -n "$="` in + "") + ${RM} -f $preexist $token $token.tmp.* + ${RMDIR} -p $shadow_dir 2>/dev/null || ${TRUE} + ;; + *) + ${MV} -f $tokentmp $token + ;; + esac + fi + done; } + ${SED} -n "/^\# GROUP: /{s/^\# GROUP: //;p;}" ${SELF} | ${SORT} -u | + { while read line; do + SAVEIFS="$IFS"; IFS=":" + set -- $line + group="$1"; groupid="$2" + IFS="$SAVEIFS" + case $group in + "") continue ;; + esac + shadow_dir="${PKG_REFCOUNT_GROUPS_DBDIR}/$group" + preexist="$shadow_dir/+PREEXISTING" + token="$shadow_dir/${PKGNAME}" + tokentmp="$token.tmp.$$" + if ${TEST} -f "$token" && \ + ${GREP} "^${PKG_METADATA_DIR}$" $token >/dev/null; then + ${CAT} "$token" | ${GREP} -v "^${PKG_METADATA_DIR}$" > $tokentmp + case `${CAT} $tokentmp | ${SED} -n "$="` in + "") + ${RM} -f $preexist $token $token.tmp.* + ${RMDIR} -p $shadow_dir 2>/dev/null || ${TRUE} + ;; + *) + ${MV} -f $tokentmp $token + ;; + esac + fi + done; } + ;; + +CHECK-ADD) + ${SED} -n "/^\# GROUP: /{s/^\# GROUP: //;p;}" ${SELF} | ${SORT} -u | + { while read line; do + SAVEIFS="$IFS"; IFS=":" + set -- $line + group="$1"; groupid="$2" + IFS="$SAVEIFS" + case $group in + "") continue ;; + *) group_exists $group && continue ;; + esac + case "$printed_header" in + yes) ;; + *) printed_header=yes + ${ECHO} "===========================================================================" + ${ECHO} "The following groups need to be created for ${PKGNAME}:" + ${ECHO} "" + ;; + esac + case $groupid in + "") ${ECHO} " $group" ;; + *) ${ECHO} " $group ($groupid)" ;; + esac + done + case "$printed_header" in + yes) ${ECHO} "" + ${ECHO} "===========================================================================" + exit 1 + ;; + esac; } + ${TEST} $? -eq 0 || exitcode=1 + ${SED} -n "/^\# USER: /{s/^\# USER: //;p;}" ${SELF} | ${SORT} -u | + { while read line; do + SAVEIFS="$IFS"; IFS=":" + set -- $line + user="$1"; group="$2"; userid="$3" + descr="$4"; home="$5" shell="$6" + IFS="$SAVEIFS" + case $user in + "") continue ;; + *) user_exists $user && continue ;; + esac + case "$printed_header" in + yes) ;; + *) printed_header=yes + ${ECHO} "===========================================================================" + ${ECHO} "The following users need to be created for ${PKGNAME}:" + ${ECHO} "" + ;; + esac + : ${home:="${PKG_USER_HOME}"} + : ${shell:="${PKG_USER_SHELL}"} + case $userid in + "") ${ECHO} " $user: $group, $home, $shell" ;; + *) ${ECHO} " $user ($userid): $group, $home, $shell" ;; + esac + done + case "$printed_header" in + yes) ${ECHO} "" + ${ECHO} "===========================================================================" + exit 1 + ;; + esac; } + ${TEST} $? -eq 0 || exitcode=1 + ;; + +CHECK-REMOVE) + ${SED} -n "/^\# USER: /{s/^\# USER: //;p;}" ${SELF} | ${SORT} -u | + { while read line; do + SAVEIFS="$IFS"; IFS=":" + set -- $line + user="$1"; group="$2"; userid="$3" + descr="$4"; home="$5" shell="$6" + IFS="$SAVEIFS" + case $user in + "") continue ;; + *) user_exists $user || continue ;; + esac + shadow_dir="${PKG_REFCOUNT_USERS_DBDIR}/$user" + ${TEST} -d "$shadow_dir" && continue # refcount isn't zero + existing_users="$existing_users $user" + done + case $existing_users in + "") ;; + *) ${ECHO} "===========================================================================" + ${ECHO} "The following users are no longer being used by ${PKGNAME}," + ${ECHO} "and they can be removed if no other packages are using them:" + ${ECHO} "" + ${ECHO} "$existing_users" | listwrap 40 + ${ECHO} "" + ${ECHO} "===========================================================================" + exit 1 + ;; + esac; } + ${TEST} $? -eq 0 || exitcode=1 + ${SED} -n "/^\# GROUP: /{s/^\# GROUP: //;p;}" ${SELF} | ${SORT} -u | + { while read line; do + SAVEIFS="$IFS"; IFS=":" + set -- $line + group="$1"; groupid="$2" + IFS="$SAVEIFS" + case $group in + "") continue ;; + *) group_exists $group || continue ;; + esac + shadow_dir="${PKG_REFCOUNT_GROUPS_DBDIR}/$group" + ${TEST} -d "$shadow_dir" && continue # refcount isn't zero + existing_groups="$existing_groups $group" + done + case $existing_groups in + "") ;; + *) ${ECHO} "===========================================================================" + ${ECHO} "The following groups are no longer being used by ${PKGNAME}," + ${ECHO} "and they can be removed if no other packages are using them:" + ${ECHO} "" + ${ECHO} "$existing_groups" | listwrap 40 + ${ECHO} "" + ${ECHO} "===========================================================================" + exit 1 + ;; + esac; } + ${TEST} $? -eq 0 || exitcode=1 + ;; + +*) + ${ECHO} "Usage: ./+USERGROUP ADD|REMOVE [metadatadir]" + ${ECHO} " ./+USERGROUP CHECK-ADD|CHECK-REMOVE [metadatadir]" + ;; +esac +exit $exitcode diff --git a/mk/java-env.mk b/mk/java-env.mk index 144acc765ce..19f29c27a82 100644 --- a/mk/java-env.mk +++ b/mk/java-env.mk @@ -1,4 +1,4 @@ -# $NetBSD: java-env.mk,v 1.3 2004/05/23 10:29:43 jmmv Exp $ +# $NetBSD: java-env.mk,v 1.3.6.1 2005/02/11 15:27:57 tv Exp $ # # This Makefile fragment handles Java wrappers and is meant to be included # by packages that provide a Java build-time and/or run-time environment. @@ -39,6 +39,13 @@ JAVA_WRAPPERS?= # empty INSTALLATION_DIRS+= bin .endif +ALTERNATIVES_SRC= ${WRKDIR}/.ALTERNATIVES +${WRKDIR}/.ALTERNATIVES: +.for w in ${JAVA_WRAPPERS} + @${ECHO} 'bin/${w} ${PREFIX}/bin/${JAVA_NAME}-${w}' \ + >>${WRKDIR}/.ALTERNATIVES +.endfor + .for w in ${JAVA_WRAPPERS} JAVA_WRAPPER_BIN.${w}?= ${JAVA_HOME}/bin/${w} diff --git a/mk/pgsql.buildlink3.mk b/mk/pgsql.buildlink3.mk index 2ec2318b5b7..526d3290ba3 100644 --- a/mk/pgsql.buildlink3.mk +++ b/mk/pgsql.buildlink3.mk @@ -1,4 +1,4 @@ -# $NetBSD: pgsql.buildlink3.mk,v 1.3 2004/10/26 21:39:33 xtraeme Exp $ +# $NetBSD: pgsql.buildlink3.mk,v 1.3.2.1 2005/02/11 15:27:57 tv Exp $ .if !defined(PGVERSION_MK) PGVERSION_MK= defined @@ -6,7 +6,7 @@ PGVERSION_MK= defined .include "../../mk/bsd.prefs.mk" PGSQL_VERSION_DEFAULT?= 74 -PGSQL_VERSIONS_ACCEPTED?= 74 73 +PGSQL_VERSIONS_ACCEPTED?= 80 74 73 # transform the list into individual variables .for pv in ${PGSQL_VERSIONS_ACCEPTED} @@ -14,7 +14,10 @@ _PGSQL_VERSION_${pv}_OK= yes .endfor # check what is installed -.if exists(${LOCALBASE}/lib/libecpg.so.4) +.if exists(${LOCALBASE}/lib/libecpg.so.4.2) +_PGSQL_VERSION_80_INSTALLED= yes +.endif +.if exists(${LOCALBASE}/lib/libecpg.so.4.1) _PGSQL_VERSION_74_INSTALLED= yes .endif .if exists(${LOCALBASE}/lib/libecpg.so.3) @@ -58,7 +61,9 @@ _PGSQL_VERSION= ${_PGSQL_VERSION_FIRSTACCEPTED} # # set variables for the version we decided to use: # -.if ${_PGSQL_VERSION} == "74" +.if ${_PGSQL_VERSION} == "80" +PGPKGSRCDIR= ../../databases/postgresql80-lib +.elif ${_PGSQL_VERSION} == "74" PGPKGSRCDIR= ../../databases/postgresql74-lib .elif ${_PGSQL_VERSION} == "73" PGPKGSRCDIR= ../../databases/postgresql73-lib diff --git a/mk/platform/AIX.mk b/mk/platform/AIX.mk index 114ea36a87d..a0146a98490 100644 --- a/mk/platform/AIX.mk +++ b/mk/platform/AIX.mk @@ -1,4 +1,4 @@ -# $NetBSD: AIX.mk,v 1.4.2.1 2004/12/31 20:25:30 tv Exp $ +# $NetBSD: AIX.mk,v 1.4.2.2 2005/02/11 15:27:57 tv Exp $ # # Variable definitions for the AIX operating system. @@ -13,7 +13,6 @@ CP?= /bin/cp CPP?= ${LOCALBASE}/bin/cpp CUT?= /usr/bin/cut DATE?= /bin/date -DC?= /usr/bin/dc DIRNAME?= /usr/bin/dirname ECHO?= echo # Shell builtin ECHO_N?= ${ECHO} -n @@ -174,9 +173,7 @@ SERIAL_DEVICES?= /dev/tty0 \ # check for maximum command line length and set it in configure's environment, # to avoid a test required by the libtool script that takes forever. # FIXME: Adjust to work on this system and enable the lines below. -#.if defined(GNU_CONFIGURE) && defined(USE_LIBTOOL) -#_OPSYS_MAX_CMDLEN!= /sbin/sysctl -n kern.argmax -#.endif +#_OPSYS_MAX_CMDLEN_CMD= /sbin/sysctl -n kern.argmax # If games are to be installed setgid, then SETGIDGAME is set to 'yes' # (it defaults to 'no' as per bsd.pkg.defaults.mk). diff --git a/mk/platform/BSDOS.mk b/mk/platform/BSDOS.mk index 6cb5009c273..418a334e462 100644 --- a/mk/platform/BSDOS.mk +++ b/mk/platform/BSDOS.mk @@ -1,4 +1,4 @@ -# $NetBSD: BSDOS.mk,v 1.4.2.1 2004/12/31 20:25:30 tv Exp $ +# $NetBSD: BSDOS.mk,v 1.4.2.2 2005/02/11 15:27:57 tv Exp $ # # Variable definitions for the BSD/OS operating system. @@ -17,7 +17,6 @@ CXX= /usr/bin/g++ .endif CUT?= /usr/bin/cut DATE?= /bin/date -DC?= /usr/bin/dc DIRNAME?= /usr/bin/dirname ECHO?= echo # Shell builtin ECHO_N?= ${ECHO} -n @@ -162,9 +161,7 @@ PKG_CREATE_USERGROUP= NO # until it works # check for maximum command line length and set it in configure's environment, # to avoid a test required by the libtool script that takes forever. # FIXME: Adjust to work on this system and enable the lines below. -#.if defined(GNU_CONFIGURE) && defined(USE_LIBTOOL) -#_OPSYS_MAX_CMDLEN!= /sbin/sysctl -n kern.argmax -#.endif +#_OPSYS_MAX_CMDLEN_CMD= /sbin/sysctl -n kern.argmax # If games are to be installed setgid, then SETGIDGAME is set to 'yes' # (it defaults to 'no' as per bsd.pkg.defaults.mk). diff --git a/mk/platform/Darwin.mk b/mk/platform/Darwin.mk index d092d03fc1a..d5bd6a46dfd 100644 --- a/mk/platform/Darwin.mk +++ b/mk/platform/Darwin.mk @@ -1,4 +1,4 @@ -# $NetBSD: Darwin.mk,v 1.4.2.1 2004/12/20 20:46:00 tv Exp $ +# $NetBSD: Darwin.mk,v 1.4.2.2 2005/02/11 15:27:57 tv Exp $ # # Variable definitions for the Darwin operating system. @@ -15,7 +15,6 @@ CPP= ${CC} -E ${CPP_PRECOMP_FLAGS} .endif CUT?= /usr/bin/cut DATE?= /bin/date -DC?= /usr/bin/dc DIRNAME?= /usr/bin/dirname ECHO?= echo # Shell builtin ECHO_N?= ${ECHO} -n @@ -153,9 +152,7 @@ LOCALBASE?= ${DESTDIR}/usr/pkg # check for maximum command line length and set it in configure's environment, # to avoid a test required by the libtool script that takes forever. -.if defined(GNU_CONFIGURE) && defined(USE_LIBTOOL) -_OPSYS_MAX_CMDLEN!= /usr/sbin/sysctl -n kern.argmax -.endif +_OPSYS_MAX_CMDLEN_CMD= /usr/sbin/sysctl -n kern.argmax # Darwin 7.7.x has poll() in libc, but no poll.h. Try to help GNU # configure packages that break because of this by pretending that diff --git a/mk/platform/DragonFly.mk b/mk/platform/DragonFly.mk index 9439819a9ac..238082cfaae 100644 --- a/mk/platform/DragonFly.mk +++ b/mk/platform/DragonFly.mk @@ -1,4 +1,4 @@ -# $NetBSD: DragonFly.mk,v 1.4.2.2 2005/01/13 20:11:55 tv Exp $ +# $NetBSD: DragonFly.mk,v 1.4.2.3 2005/02/11 15:27:57 tv Exp $ # # Variable definitions for the DragonFly operating system. @@ -13,7 +13,6 @@ CMP?= /usr/bin/cmp CP?= /bin/cp CUT?= /usr/bin/cut DATE?= /bin/date -DC?= /usr/bin/dc DIRNAME?= /usr/bin/dirname ECHO?= echo # Shell builtin ECHO_N?= ${ECHO} -n @@ -158,9 +157,7 @@ PKG_HAVE_KQUEUE= # defined # check for maximum command line length and set it in configure's environment, # to avoid a test required by the libtool script that takes forever. -.if defined(GNU_CONFIGURE) && defined(USE_LIBTOOL) -_OPSYS_MAX_CMDLEN!= /sbin/sysctl -n kern.argmax -.endif +_OPSYS_MAX_CMDLEN_CMD= /sbin/sysctl -n kern.argmax # If games are to be installed setgid, then SETGIDGAME is set to 'yes' # (it defaults to 'no' as per bsd.pkg.defaults.mk). diff --git a/mk/platform/FreeBSD.mk b/mk/platform/FreeBSD.mk index d8c034fcc98..b1937e2987b 100644 --- a/mk/platform/FreeBSD.mk +++ b/mk/platform/FreeBSD.mk @@ -1,4 +1,4 @@ -# $NetBSD: FreeBSD.mk,v 1.4.2.1 2004/12/31 20:25:30 tv Exp $ +# $NetBSD: FreeBSD.mk,v 1.4.2.2 2005/02/11 15:27:57 tv Exp $ # # Variable definitions for the FreeBSD operating system. @@ -13,7 +13,6 @@ CMP?= /usr/bin/cmp CP?= /bin/cp CUT?= /usr/bin/cut DATE?= /bin/date -DC?= /usr/bin/dc DIRNAME?= /usr/bin/dirname ECHO?= echo # Shell builtin ECHO_N?= ${ECHO} -n @@ -157,9 +156,7 @@ PKG_HAVE_KQUEUE= # defined # check for maximum command line length and set it in configure's environment, # to avoid a test required by the libtool script that takes forever. -.if defined(GNU_CONFIGURE) && defined(USE_LIBTOOL) -_OPSYS_MAX_CMDLEN!= /sbin/sysctl -n kern.argmax -.endif +_OPSYS_MAX_CMDLEN_CMD= /sbin/sysctl -n kern.argmax # If games are to be installed setgid, then SETGIDGAME is set to 'yes' # (it defaults to 'no' as per bsd.pkg.defaults.mk). diff --git a/mk/platform/IRIX.mk b/mk/platform/IRIX.mk index a0d0c925576..9e527e3f124 100644 --- a/mk/platform/IRIX.mk +++ b/mk/platform/IRIX.mk @@ -1,4 +1,4 @@ -# $NetBSD: IRIX.mk,v 1.6.2.1 2004/12/31 20:25:30 tv Exp $ +# $NetBSD: IRIX.mk,v 1.6.2.2 2005/02/11 15:27:57 tv Exp $ # # Variable definitions for the IRIX operating system. @@ -12,7 +12,6 @@ CMP?= /usr/bin/cmp CP?= /sbin/cp CUT?= /usr/bin/cut DATE?= /sbin/date -DC?= /usr/bin/dc DIRNAME?= /usr/bin/dirname ECHO?= echo # Shell builtin ECHO_N?= ${ECHO} -n @@ -167,9 +166,7 @@ LIBABISUFFIX= ${ABI} # check for maximum command line length and set it in configure's environment, # to avoid a test required by the libtool script that takes forever. -.if defined(GNU_CONFIGURE) && defined(USE_LIBTOOL) -_OPSYS_MAX_CMDLEN!= /usr/sbin/sysconf ARG_MAX -.endif +_OPSYS_MAX_CMDLEN_CMD= /usr/sbin/sysconf ARG_MAX # If games are to be installed setgid, then SETGIDGAME is set to 'yes' # (it defaults to 'no' as per bsd.pkg.defaults.mk). diff --git a/mk/platform/Interix.mk b/mk/platform/Interix.mk index 77af9347cfa..ab3d330b5cc 100644 --- a/mk/platform/Interix.mk +++ b/mk/platform/Interix.mk @@ -1,4 +1,4 @@ -# $NetBSD: Interix.mk,v 1.13.2.1 2005/01/24 18:40:01 tv Exp $ +# $NetBSD: Interix.mk,v 1.13.2.2 2005/02/11 15:27:57 tv Exp $ # # Variable definitions for the Interix operating system. @@ -24,7 +24,9 @@ # netpbm 0x6b000000 0x6cffffff 0x00100000 32 # openssl 0x5e000000 0x5fffffff 0x00100000 32 # perl58 * +# python22 * # python23 * +# python24 * # ruby16 0x50000000 0x6fffffff 0x00040000 2048 # (main lib) 0x48000000 # ruby18 0x50000000 0x6fffffff 0x00040000 2048 @@ -45,7 +47,6 @@ CMP?= /bin/cmp CP?= /bin/cp CUT?= /bin/cut DATE?= /bin/date -DC?= /bin/dc DIRNAME?= /bin/dirname ECHO?= echo # Shell builtin ECHO_N?= /bin/printf %s # does not support "echo -n" @@ -160,7 +161,6 @@ _OPSYS_HAS_MANZ= yes # MANZ controls gzipping of man pages _OPSYS_HAS_OSSAUDIO= no # libossaudio is available _OPSYS_LIBTOOL_REQD= 1.5.10nb4 _OPSYS_PERL_REQD= 5.8.3nb1 # base version of perl required -_OPSYS_PKGTOOLS_REQD= 20040330 _OPSYS_PTHREAD_AUTO= no # -lpthread needed for pthreads _OPSYS_SHLIB_TYPE= ELF # shared lib type - not exactly true, but near enough _PATCH_CAN_BACKUP= yes # native patch(1) can make backups @@ -193,7 +193,7 @@ CONFIGURE_ENV+= ${GNU_CONFIGURE:Dac_cv_header_poll_h=no ac_cv_func_poll=no} # check for maximum command line length and set it in configure's environment, # to avoid a test required by the libtool script that takes forever. -_OPSYS_MAX_CMDLEN= 262144 +_OPSYS_MAX_CMDLEN_CMD= ${ECHO} 262144 # If games are to be installed setgid, then SETGIDGAME is set to 'yes' # (it defaults to 'no' as per bsd.pkg.defaults.mk). diff --git a/mk/platform/Linux.mk b/mk/platform/Linux.mk index c950c89d756..38864133f48 100644 --- a/mk/platform/Linux.mk +++ b/mk/platform/Linux.mk @@ -1,4 +1,4 @@ -# $NetBSD: Linux.mk,v 1.5.2.1 2004/12/31 20:25:30 tv Exp $ +# $NetBSD: Linux.mk,v 1.5.2.2 2005/02/11 15:27:57 tv Exp $ # # Variable definitions for the Linux operating system. @@ -20,7 +20,6 @@ CUT?= /bin/cut CUT?= /usr/bin/cut .endif DATE?= /bin/date -DC?= /usr/bin/dc DIRNAME?= /usr/bin/dirname ECHO?= echo # Shell builtin ECHO_N?= ${ECHO} -n @@ -195,9 +194,7 @@ LOCALBASE?= ${DESTDIR}/usr/pkg # check for maximum command line length and set it in configure's environment, # to avoid a test required by the libtool script that takes forever. # FIXME: Adjust to work on this system and enable the lines below. -#.if defined(GNU_CONFIGURE) && defined(USE_LIBTOOL) -#_OPSYS_MAX_CMDLEN!= /sbin/sysctl -n kern.argmax -#.endif +#_OPSYS_MAX_CMDLEN_CMD= /sbin/sysctl -n kern.argmax # If games are to be installed setgid, then SETGIDGAME is set to 'yes' # (it defaults to 'no' as per bsd.pkg.defaults.mk). diff --git a/mk/platform/NetBSD.mk b/mk/platform/NetBSD.mk index 50cd35d98c9..f868a98cc34 100644 --- a/mk/platform/NetBSD.mk +++ b/mk/platform/NetBSD.mk @@ -1,4 +1,4 @@ -# $NetBSD: NetBSD.mk,v 1.5 2004/11/16 18:04:00 tv Exp $ +# $NetBSD: NetBSD.mk,v 1.5.2.1 2005/02/11 15:27:57 tv Exp $ # # Variable definitions for the NetBSD operating system. @@ -16,7 +16,6 @@ CPP= /usr/bin/cpp .endif CUT?= /usr/bin/cut DATE?= /bin/date -DC?= /usr/bin/dc DIRNAME?= /usr/bin/dirname ECHO?= echo # Shell builtin ECHO_N?= ${ECHO} -n @@ -201,9 +200,7 @@ PKG_HAVE_KQUEUE= # defined # check for maximum command line length and set it in configure's environment, # to avoid a test required by the libtool script that takes forever. -.if defined(GNU_CONFIGURE) && defined(USE_LIBTOOL) -_OPSYS_MAX_CMDLEN!= /sbin/sysctl -n kern.argmax -.endif +_OPSYS_MAX_CMDLEN_CMD= /sbin/sysctl -n kern.argmax # If games are to be installed setgid, then SETGIDGAME is set to 'yes' # (it defaults to 'no' as per bsd.pkg.defaults.mk). diff --git a/mk/platform/OSF1.mk b/mk/platform/OSF1.mk index 3e94e532ccf..4e879b60102 100644 --- a/mk/platform/OSF1.mk +++ b/mk/platform/OSF1.mk @@ -1,4 +1,4 @@ -# $NetBSD: OSF1.mk,v 1.1 2004/11/20 04:37:08 grant Exp $ +# $NetBSD: OSF1.mk,v 1.1.2.1 2005/02/11 15:27:57 tv Exp $ # # Variable definitions for the OSF1 operating system. @@ -20,7 +20,6 @@ CP?= /bin/cp CPP?= /usr/bin/cpp CUT?= /usr/bin/cut DATE?= /bin/date -DC?= /usr/bin/dc DIRNAME?= /usr/bin/dirname ECHO?= /usr/bin/echo ECHO_N?= ${SETENV} CMD_ENV=bsd /usr/bin/echo -n diff --git a/mk/platform/OpenBSD.mk b/mk/platform/OpenBSD.mk index e1d941af9ca..a9aee229656 100644 --- a/mk/platform/OpenBSD.mk +++ b/mk/platform/OpenBSD.mk @@ -1,4 +1,4 @@ -# $NetBSD: OpenBSD.mk,v 1.7.2.1 2004/12/31 20:25:30 tv Exp $ +# $NetBSD: OpenBSD.mk,v 1.7.2.2 2005/02/11 15:27:57 tv Exp $ # # Variable definitions for the OpenBSD operating system. @@ -12,7 +12,6 @@ CMP?= /usr/bin/cmp CP?= /bin/cp CUT?= /usr/bin/cut DATE?= /bin/date -DC?= /usr/bin/dc DIRNAME?= /usr/bin/dirname ECHO?= echo # Shell builtin ECHO_N?= ${ECHO} -n @@ -167,9 +166,7 @@ SERIAL_DEVICES?= /dev/null # check for maximum command line length and set it in configure's environment, # to avoid a test required by the libtool script that takes forever. -.if defined(GNU_CONFIGURE) && defined(USE_LIBTOOL) -_OPSYS_MAX_CMDLEN!= /sbin/sysctl -n kern.argmax -.endif +_OPSYS_MAX_CMDLEN_CMD= /sbin/sysctl -n kern.argmax # If games are to be installed setgid, then SETGIDGAME is set to 'yes' # (it defaults to 'no' as per bsd.pkg.defaults.mk). diff --git a/mk/platform/SunOS.mk b/mk/platform/SunOS.mk index 24b0c08ba17..342837b9b30 100644 --- a/mk/platform/SunOS.mk +++ b/mk/platform/SunOS.mk @@ -1,4 +1,4 @@ -# $NetBSD: SunOS.mk,v 1.7 2004/11/16 18:04:00 tv Exp $ +# $NetBSD: SunOS.mk,v 1.7.2.1 2005/02/11 15:27:57 tv Exp $ # # Variable definitions for the SunOS/Solaris operating system. @@ -12,7 +12,6 @@ CMP?= cmp CP?= /usr/bin/cp CUT?= /usr/bin/cut DATE?= /usr/xpg4/bin/date -DC?= /usr/bin/dc DIRNAME?= /usr/bin/dirname ECHO?= /usr/ucb/echo ECHO_N?= ${ECHO} -n @@ -191,9 +190,7 @@ PKG_TOOLS_BIN?= ${LOCALBASE}/bin # check for maximum command line length and set it in configure's environment, # to avoid a test required by the libtool script that takes forever. # FIXME: Adjust to work on this system and enable the lines below. -#.if defined(GNU_CONFIGURE) && defined(USE_LIBTOOL) -#_OPSYS_MAX_CMDLEN!= /sbin/sysctl -n kern.argmax -#.endif +#_OPSYS_MAX_CMDLEN_CMD= /sbin/sysctl -n kern.argmax # If games are to be installed setgid, then SETGIDGAME is set to 'yes' # (it defaults to 'no' as per bsd.pkg.defaults.mk). diff --git a/mk/platform/UnixWare.mk b/mk/platform/UnixWare.mk index 477aeb5ff4b..80e77162e20 100644 --- a/mk/platform/UnixWare.mk +++ b/mk/platform/UnixWare.mk @@ -1,4 +1,4 @@ -# $NetBSD: UnixWare.mk,v 1.4.2.1 2004/12/03 19:15:00 tv Exp $ +# $NetBSD: UnixWare.mk,v 1.4.2.2 2005/02/11 15:27:57 tv Exp $ # # Variable definitions for the UnixWare 7 operating system. @@ -12,7 +12,6 @@ CMP?= /usr/bin/cmp CP?= /usr/bin/cp CUT?= /usr/bin/cut DATE?= /usr/bin/date -DC?= /usr/bin/dc DIRNAME?= /usr/bin/dirname ECHO?= /usr/ucb/echo ECHO_N?= ${ECHO} -n @@ -160,9 +159,7 @@ PKG_TOOLS_BIN?= ${LOCALBASE}/sbin # check for maximum command line length and set it in configure's environment, # to avoid a test required by the libtool script that takes forever. # FIXME: Adjust to work on this system and enable the lines below. -#.if defined(GNU_CONFIGURE) && defined(USE_LIBTOOL) -#_OPSYS_MAX_CMDLEN!= /sbin/sysctl -n kern.argmax -#.endif +#_OPSYS_MAX_CMDLEN_CMD= /sbin/sysctl -n kern.argmax # If games are to be installed setgid, then SETGIDGAME is set to 'yes' # (it defaults to 'no' as per bsd.pkg.defaults.mk). diff --git a/mk/tools.mk b/mk/tools.mk index 75424a5bcd6..1e7f2c340ce 100644 --- a/mk/tools.mk +++ b/mk/tools.mk @@ -1,4 +1,4 @@ -# $NetBSD: tools.mk,v 1.46.2.4 2005/01/24 18:40:01 tv Exp $ +# $NetBSD: tools.mk,v 1.46.2.5 2005/02/11 15:27:57 tv Exp $ # # This Makefile creates a ${TOOLS_DIR} directory and populates the bin # subdir with tools that hide the ones outside of ${TOOLS_DIR}. @@ -119,8 +119,13 @@ ${TOOLS_DIR}/bin/makeinfo: ${_GNU_MISSING} _TOOLS= awk grep lex m4 make patch sed yacc -.if defined(_IGNORE_USE_GNU_TOOLS) -USE_GNU_TOOLS:= # empty +.if defined(_IGNORE_GNU_TOOL) && defined(USE_GNU_TOOLS) +. for _tool_ in ${USE_GNU_TOOLS} +. if !defined(_IGNORE_GNU_TOOL.${_tool_}) +_tools+= ${_tool_} +. endif +. endfor +USE_GNU_TOOLS= ${_tools} .endif # These platforms already have GNU versions of the tools in the base @@ -220,7 +225,7 @@ AWK:= ${_TOOLS_PROGNAME.awk} .endif .if !empty(PKGPATH:Mlang/gawk) _TOOLS_OVERRIDE.awk= NO -MAKEFLAGS+= _IGNORE_USE_GNU_TOOLS= +MAKEFLAGS+= _IGNORE_GNU_TOOL.awk= .endif .if ${_TOOLS_REPLACE.grep} == "YES" @@ -237,7 +242,7 @@ GREP:= ${_TOOLS_PROGNAME.grep} .endif .if !empty(PKGPATH:Mtextproc/grep) _TOOLS_OVERRIDE.grep= NO -MAKEFLAGS+= _IGNORE_USE_GNU_TOOLS= +MAKEFLAGS+= _IGNORE_GNU_TOOL.grep= .endif .if ${_TOOLS_REPLACE.lex} == "YES" @@ -258,7 +263,7 @@ LEX:= ${_TOOLS_PROGNAME.lex} .endif .if !empty(PKGPATH:Mdevel/flex) _TOOLS_OVERRIDE.lex= NO -MAKEFLAGS+= _IGNORE_USE_GNU_TOOLS= +MAKEFLAGS+= _IGNORE_GNU_TOOL.lex= .endif .if ${_TOOLS_REPLACE.m4} == "YES" @@ -275,7 +280,7 @@ M4:= ${_TOOLS_PROGNAME.m4} .endif .if !empty(PKGPATH:Mdevel/m4) _TOOLS_OVERRIDE.m4= NO -MAKEFLAGS+= _IGNORE_USE_GNU_TOOLS= +MAKEFLAGS+= _IGNORE_GNU_TOOLS.m4= .endif .if ${_TOOLS_REPLACE.make} == "YES" @@ -292,7 +297,7 @@ GMAKE:= ${_TOOLS_PROGNAME.make} .endif .if !empty(PKGPATH:Mdevel/gmake) _TOOLS_OVERRIDE.make= NO -MAKEFLAGS+= _IGNORE_USE_GNU_TOOLS= +MAKEFLAGS+= _IGNORE_GNU_TOOL.make= .endif .if ${_TOOLS_REPLACE.patch} == "YES" @@ -309,7 +314,7 @@ PATCH:= ${_TOOLS_PROGNAME.patch} .endif .if !empty(PKGPATH:Mdevel/patch) _TOOLS_OVERRIDE.patch= NO -MAKEFLAGS+= _IGNORE_USE_GNU_TOOLS= +MAKEFLAGS+= _IGNORE_GNU_TOOL.patch= .endif .if ${_TOOLS_REPLACE.sed} == "YES" @@ -326,7 +331,7 @@ SED:= ${_TOOLS_PROGNAME.sed} .endif .if !empty(PKGPATH:Mtextproc/gsed) _TOOLS_OVERRIDE.sed= NO -MAKEFLAGS+= _IGNORE_USE_GNU_TOOLS= +MAKEFLAGS+= _IGNORE_GNU_TOOL.sed= .endif .if ${_TOOLS_HAS_GNU.yacc} == "YES" @@ -346,7 +351,7 @@ YACC:= ${_TOOLS_PROGNAME.yacc} -y .endif .if !empty(PKGPATH:Mdevel/bison) _TOOLS_OVERRIDE.yacc= NO -MAKEFLAGS+= _IGNORE_USE_GNU_TOOLS= +MAKEFLAGS+= _IGNORE_GNU_TOOL.yacc= .endif # If _TOOLS_OVERRIDE.<tool> is actually set to "YES", then we override diff --git a/mk/wrapper/arg-pp-main b/mk/wrapper/arg-pp-main index 36625172854..41680e4db66 100644 --- a/mk/wrapper/arg-pp-main +++ b/mk/wrapper/arg-pp-main @@ -1,4 +1,4 @@ -# $NetBSD: arg-pp-main,v 1.1.2.2 2005/01/24 18:40:01 tv Exp $ +# $NetBSD: arg-pp-main,v 1.1.2.3 2005/02/11 15:27:57 tv Exp $ # # Copyright (c) 2005 The NetBSD Foundation, Inc. # All rights reserved. @@ -47,10 +47,15 @@ case $arg in *.so) lib="${lib%.so}" ;; *.so.[0-9]*) lib="${lib%.so.[0-9]*}" ;; esac - prepend_queue argbuf "-l$lib" - $debug_log $wrapperlog " (arg-pp-main) pre: -l$lib" - prepend_queue argbuf "-L$dir" - $debug_log $wrapperlog " (arg-pp-main) pre: -L$dir" + case $argmatch in + yes) ;; + *) prepend_queue argbuf "-l$lib" + $debug_log $wrapperlog " (arg-pp-main) pre: -l$lib" + prepend_queue argbuf "-L$dir" + $debug_log $wrapperlog " (arg-pp-main) pre: -L$dir" + argmatch=yes + ;; + esac ;; /*/lib*.sl|/*/lib*.sl.[0-9]*) # HP-UX dir="${arg%/lib*}" @@ -60,10 +65,15 @@ case $arg in *.sl) lib="${lib%.sl}" ;; *.sl.[0-9]*) lib="${lib%.sl.[0-9]*}" ;; esac - prepend_queue argbuf "-l$lib" - $debug_log $wrapperlog " (arg-pp-main) pre: -l$lib" - prepend_queue argbuf "-L$dir" - $debug_log $wrapperlog " (arg-pp-main) pre: -L$dir" + case $argmatch in + yes) ;; + *) prepend_queue argbuf "-l$lib" + $debug_log $wrapperlog " (arg-pp-main) pre: -l$lib" + prepend_queue argbuf "-L$dir" + $debug_log $wrapperlog " (arg-pp-main) pre: -L$dir" + argmatch=yes + ;; + esac ;; /*/lib*.dylib) # Darwin dir="${arg%/lib*.dylib}" @@ -72,10 +82,15 @@ case $arg in */*) argok=yes; argmatch=yes ;; *.dylib) lib="${lib%.dylib}" ;; esac - prepend_queue argbuf "-l$lib" - $debug_log $wrapperlog " (arg-pp-main) pre: -l$lib" - prepend_queue argbuf "-L$dir" - $debug_log $wrapperlog " (arg-pp-main) pre: -L$dir" + case $argmatch in + yes) ;; + *) prepend_queue argbuf "-l$lib" + $debug_log $wrapperlog " (arg-pp-main) pre: -l$lib" + prepend_queue argbuf "-L$dir" + $debug_log $wrapperlog " (arg-pp-main) pre: -L$dir" + argmatch=yes + ;; + esac ;; ###################################################################### # Remove extraneous comma in "-Wl,-R,/dir" and in "-Wl,-L,/dir". diff --git a/mk/wrapper/cmd-sink-interix-gcc b/mk/wrapper/cmd-sink-interix-gcc index feb302ae40b..384a45da52c 100644 --- a/mk/wrapper/cmd-sink-interix-gcc +++ b/mk/wrapper/cmd-sink-interix-gcc @@ -1,4 +1,4 @@ -# $NetBSD: cmd-sink-interix-gcc,v 1.3 2004/11/11 00:49:01 tv Exp $ +# $NetBSD: cmd-sink-interix-gcc,v 1.3.2.1 2005/02/11 15:27:57 tv Exp $ # # Copyright (c) 2004 The NetBSD Foundation, Inc. # All rights reserved. @@ -39,7 +39,7 @@ while ! queue_is_empty cmdbuf; do pop_queue cmdbuf arg $debug_log $wrapperlog " (cmd-sink-interix-gcc) pop: $arg" case $arg in - -fpic|-fPIC|-pthread) + -fpic|-fPIC|-pthread|-rdynamic) $echo "$0: Interix GNU cc doesn't support \`$arg'." 1>&2 exit 1 ;; |