summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortv <tv@pkgsrc.org>2005-02-11 15:27:56 +0000
committertv <tv@pkgsrc.org>2005-02-11 15:27:56 +0000
commitba4cc7a17c704aacc6fa6083a419774ec4e8b288 (patch)
treec309b5b25a2e33690bc9b174f267ccfee8d0cda2
parente735e000a051de4edd2af66a2b604aaef0135bec (diff)
downloadpkgsrc-ba4cc7a17c704aacc6fa6083a419774ec4e8b288.tar.gz
sync with HEAD
-rw-r--r--mk/AIX.pkg.dist6
-rw-r--r--mk/BSDOS.pkg.dist6
-rw-r--r--mk/Darwin.pkg.dist6
-rw-r--r--mk/DragonFly.pkg.dist6
-rw-r--r--mk/FreeBSD.pkg.dist6
-rw-r--r--mk/IRIX.pkg.dist6
-rw-r--r--mk/Interix.pkg.dist6
-rw-r--r--mk/Linux.pkg.dist6
-rw-r--r--mk/NetBSD.pkg.dist6
-rw-r--r--mk/OSF1.pkg.dist6
-rw-r--r--mk/OpenBSD.pkg.dist6
-rw-r--r--mk/SunOS.pkg.dist6
-rw-r--r--mk/UnixWare.pkg.dist6
-rw-r--r--mk/alternatives.mk58
-rw-r--r--mk/bsd.pkg.install.mk231
-rw-r--r--mk/bsd.pkg.mk33
-rw-r--r--mk/bsd.pkg.use.mk5
-rw-r--r--mk/bsd.prefs.mk12
-rw-r--r--mk/bulk/bsd.bulk-pkg.mk4
-rw-r--r--mk/bulk/do-sandbox-build4
-rwxr-xr-xmk/bulk/mksandbox4
-rw-r--r--mk/defaults/mk.conf18
-rw-r--r--mk/defaults/obsolete.mk5
-rw-r--r--mk/ghostscript.mk16
-rw-r--r--mk/install/deinstall262
-rw-r--r--mk/install/dirs209
-rw-r--r--mk/install/files276
-rw-r--r--mk/install/header71
-rw-r--r--mk/install/install420
-rw-r--r--mk/install/perms78
-rw-r--r--mk/install/usergroup384
-rw-r--r--mk/java-env.mk9
-rw-r--r--mk/pgsql.buildlink3.mk13
-rw-r--r--mk/platform/AIX.mk7
-rw-r--r--mk/platform/BSDOS.mk7
-rw-r--r--mk/platform/Darwin.mk7
-rw-r--r--mk/platform/DragonFly.mk7
-rw-r--r--mk/platform/FreeBSD.mk7
-rw-r--r--mk/platform/IRIX.mk7
-rw-r--r--mk/platform/Interix.mk8
-rw-r--r--mk/platform/Linux.mk7
-rw-r--r--mk/platform/NetBSD.mk7
-rw-r--r--mk/platform/OSF1.mk3
-rw-r--r--mk/platform/OpenBSD.mk7
-rw-r--r--mk/platform/SunOS.mk7
-rw-r--r--mk/platform/UnixWare.mk7
-rw-r--r--mk/tools.mk27
-rw-r--r--mk/wrapper/arg-pp-main41
-rw-r--r--mk/wrapper/cmd-sink-interix-gcc4
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
;;