summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjmmv <jmmv@pkgsrc.org>2005-01-25 13:13:35 +0000
committerjmmv <jmmv@pkgsrc.org>2005-01-25 13:13:35 +0000
commitf70b9a4716db6bb15aedf97fbfae7f9a9c3d134c (patch)
tree4b3a8f6f36960e456b5c778322adfebcc0bf7858
parent4aff0ffd5556d704143558c5b3b87c4a073eb07e (diff)
downloadpkgsrc-f70b9a4716db6bb15aedf97fbfae7f9a9c3d134c.tar.gz
Add alternatives.mk, a file used to manipulate the alternatives system.
A package can optionally provide an ALTERNATIVES file which contains pairs of wrapper/alternative, one per line. The file is then used by the install and deinstall scripts to register the alternatives and to create the appropriate wrappers. Make bsd.pkg.mk include this new file. This happens unconditionally to keep all the alternatives logic in an independent file. Otherwise, some of the stuff could have to be moved to bsd.pkg.mk, breaking consistency.
-rw-r--r--mk/alternatives.mk56
-rw-r--r--mk/bsd.pkg.mk6
2 files changed, 61 insertions, 1 deletions
diff --git a/mk/alternatives.mk b/mk/alternatives.mk
new file mode 100644
index 00000000000..1d6770ba5dd
--- /dev/null
+++ b/mk/alternatives.mk
@@ -0,0 +1,56 @@
+# $NetBSD: alternatives.mk,v 1.1 2005/01/25 13:13:35 jmmv 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} '${PKG_ALTERNATIVES} -s register ./+ALTERNATIVES'; \
+ ${ECHO} 'fi'; \
+ } >${WRKDIR}/.altinstall
+
+${WRKDIR}/.altdeinstall: ${ALTERNATIVES_SRC}
+ @{ ${ECHO} 'if ${TEST} $${STAGE} = "DEINSTALL"; then'; \
+ ${ECHO} '${PKG_ALTERNATIVES} -s unregister ./+ALTERNATIVES'; \
+ ${ECHO} '${RM} -f ./+ALTERNATIVES'; \
+ ${ECHO} 'fi'; \
+ } >${WRKDIR}/.altdeinstall
+
+PRINT_PLIST_AWK+= /^libdata\/alternatives\// { next; }
+PRINT_PLIST_AWK+= /^@dirrm libdata\/alternatives/ { next; }
+
+DEPENDS+= pkg_alternatives>=1.0:../../pkgtools/pkg_alternatives
+
+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.mk b/mk/bsd.pkg.mk
index 87a0e0b4398..d3ad9cd1898 100644
--- a/mk/bsd.pkg.mk
+++ b/mk/bsd.pkg.mk
@@ -1,4 +1,4 @@
-# $NetBSD: bsd.pkg.mk,v 1.1572 2005/01/24 19:57:42 tv Exp $
+# $NetBSD: bsd.pkg.mk,v 1.1573 2005/01/25 13:13:35 jmmv Exp $
#
# This file is in the public domain.
#
@@ -749,6 +749,10 @@ USE_MAKEINFO?= no # default to not using makeinfo
. include "../../mk/texinfo.mk"
.endif
+# Handle alternatives
+#
+.include "../../mk/alternatives.mk"
+
# CONF_DEPENDS notes a dependency where the config directory for the
# package matches the dependency's config directory. CONF_DEPENDS is
# only meaningful if ${PKG_INSTALLATION_TYPE} == "pkgviews".