diff options
-rw-r--r-- | mk/alternatives.mk | 56 | ||||
-rw-r--r-- | mk/bsd.pkg.mk | 6 |
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". |