diff options
Diffstat (limited to 'mk')
-rw-r--r-- | mk/ocaml.mk | 8 | ||||
-rw-r--r-- | mk/pkginstall/bsd.pkginstall.mk | 30 | ||||
-rw-r--r-- | mk/pkginstall/deinstall | 8 | ||||
-rw-r--r-- | mk/pkginstall/install | 8 | ||||
-rw-r--r-- | mk/pkginstall/ocaml-findlib-register | 67 |
5 files changed, 117 insertions, 4 deletions
diff --git a/mk/ocaml.mk b/mk/ocaml.mk index e173616a1de..dee77ee2290 100644 --- a/mk/ocaml.mk +++ b/mk/ocaml.mk @@ -1,4 +1,4 @@ -# $NetBSD: ocaml.mk,v 1.6 2016/03/04 15:19:42 jaapb Exp $ +# $NetBSD: ocaml.mk,v 1.7 2016/04/12 15:52:29 jaapb Exp $ # # This Makefile fragment handles the common variables used by OCaml packages. # @@ -14,6 +14,10 @@ # Package-settable variables: # OCAML_USE_FINDLIB # package uses findlib infrastructure +# OCAML_FINDLIB_DIRS +# directories under OCAML_SITELIBDIR that this package installs into +# OCAML_FINDLIB_REGISTER +# register findlib directories into OCaml ld.conf # OCAML_USE_OASIS [implies OCAML_USE_FINDLIB] # package uses oasis infrastructure # OCAML_USE_OASIS_DYNRUN [implies OCAML_USE_OASIS] @@ -104,6 +108,8 @@ PRINT_PLIST_AWK+= { gsub(/${OCAML_SITELIBDIR:S|/|\\/|g}/, \ .if ${OCAML_USE_FINDLIB} == "yes" .include "../../devel/ocaml-findlib/buildlink3.mk" INSTALLATION_DIRS+= ${OCAML_SITELIBDIR} +OCAML_FINDLIB_DIRS?= ${OCAML_SITELIBDIR}/${PKGBASE} +OCAML_FINDLIB_REGISTER?= yes .endif # diff --git a/mk/pkginstall/bsd.pkginstall.mk b/mk/pkginstall/bsd.pkginstall.mk index 7bc12c87b43..76ef14f0fa4 100644 --- a/mk/pkginstall/bsd.pkginstall.mk +++ b/mk/pkginstall/bsd.pkginstall.mk @@ -1,4 +1,4 @@ -# $NetBSD: bsd.pkginstall.mk,v 1.66 2016/04/10 15:58:03 joerg Exp $ +# $NetBSD: bsd.pkginstall.mk,v 1.67 2016/04/12 15:52:29 jaapb Exp $ # # This Makefile fragment is included by bsd.pkg.mk and implements the # common INSTALL/DEINSTALL scripts framework. To use the pkginstall @@ -19,6 +19,7 @@ _VARGROUPS+= pkginstall _USER_VARS.pkginstall= \ FONTS_VERBOSE \ INFO_FILES_VERBOSE \ + OCAML_FINDLIB_REGISTER_VERBOSE \ PKG_CREATE_USERGROUP \ PKG_CONFIG PKG_CONFIG_PERMS \ PKG_RCD_SCRIPTS \ @@ -785,6 +786,29 @@ install-script-data-info-files: fi .endif +# OCAML_FINDLIB_REGISTER +_INSTALL_OFR_FILE= ${_PKGINSTALL_DIR}/ocaml-findlib-register +_INSTALL_UNPACK_TMPL+= ${_INSTALL_OFR_FILE} + +${_INSTALL_OFR_FILE}: ../../mk/pkginstall/ocaml-findlib-register + ${RUN}${MKDIR} ${.TARGET:H} +.if defined(OCAML_FINDLIB_REGISTER) + ${RUN}${SED} ${FILES_SUBST_SED} \ + ../../mk/pkginstall/ocaml-findlib-register > ${.TARGET} +.else + ${RUN} ${RM} -f ${.TARGET}; \ + ${TOUCH} ${TOUCH_ARGS} ${.TARGET} +.endif + +.PHONY: install-script-data-ocaml-findlib-register +install-script-data: install-script-data-ocaml-findlib-register +install-script-data-ocaml-findlib-register: +.if defined(OCAML_FINDLIB_REGISTER) + cd ${PKG_DB_TMPDIR} && ${PKGSRC_SETENV} ${INSTALL_SCRIPTS_ENV} \ + ${_PKG_DEBUG_SCRIPT} ${INSTALL_FILE} ${PKGNAME} \ + UNPACK +OCAML_FINDLIB_REGISTER +.endif + # PKG_SHELL contains the pathname of the shell that should be added or # removed from the shell database, /etc/shells. If a pathname # is relative, then it is taken to be relative to ${PREFIX}. @@ -983,9 +1007,11 @@ ${_INSTALL_FONTS_FILE}: ../../mk/pkginstall/fonts .if ${PKG_DEVELOPER:Uno} != "no" FONTS_VERBOSE?= YES INFO_FILES_VERBOSE?= YES +OCAML_FINDLIB_REGISTER_VERBOSE?= YES .else FONTS_VERBOSE?= NO INFO_FILES_VERBOSE?= NO +OCAML_FINDLIB_REGISTER_VERBOSE?= NO .endif PKG_CREATE_USERGROUP?= YES PKG_CONFIG?= YES @@ -1001,6 +1027,7 @@ FILES_SUBST+= PKG_REGISTER_SHELLS=${PKG_REGISTER_SHELLS:Q} FILES_SUBST+= PKG_UPDATE_FONTS_DB=${PKG_UPDATE_FONTS_DB:Q} FILES_SUBST+= FONTS_VERBOSE=${FONTS_VERBOSE:Q} FILES_SUBST+= INFO_FILES_VERBOSE=${INFO_FILES_VERBOSE:Q} +FILES_SUBST+= OCAML_FINDLIB_REGISTER_VERBOSE=${OCAML_FINDLIB_REGISTER_VERBOSE:Q} # Substitute for various programs used in the DEINSTALL/INSTALL scripts and # in the rc.d scripts. @@ -1031,6 +1058,7 @@ FILES_SUBST+= LN=${LN:Q} FILES_SUBST+= LS=${LS:Q} FILES_SUBST+= MKDIR=${MKDIR:Q} FILES_SUBST+= MV=${MV:Q} +FILES_SUBST+= OCAML_FINDLIB_DIRS=${OCAML_FINDLIB_DIRS:Q} FILES_SUBST+= PERL5=${PERL5:Q} FILES_SUBST+= PKG_ADMIN=${PKG_ADMIN_CMD:Q} FILES_SUBST+= PKG_INFO=${PKG_INFO_CMD:Q} diff --git a/mk/pkginstall/deinstall b/mk/pkginstall/deinstall index 6fd7f05693f..cdfb00be2c7 100644 --- a/mk/pkginstall/deinstall +++ b/mk/pkginstall/deinstall @@ -1,7 +1,13 @@ -# $NetBSD: deinstall,v 1.3 2014/12/30 15:13:20 wiz Exp $ +# $NetBSD: deinstall,v 1.4 2016/04/12 15:52:29 jaapb Exp $ case ${STAGE} in DEINSTALL) + # + # Unregister package from ocaml-findlib. + # + ${TEST} ! -x ./+OCAML_FINDLIB_REGISTER || + ./+OCAML_FINDLIB_REGISTER REMOVE ${OCAML_FINDLIB_DIR} + # # Unregister info files. # diff --git a/mk/pkginstall/install b/mk/pkginstall/install index 598cec620c3..0304b4ebc17 100644 --- a/mk/pkginstall/install +++ b/mk/pkginstall/install @@ -1,4 +1,4 @@ -# $NetBSD: install,v 1.3 2014/12/30 15:13:20 wiz Exp $ +# $NetBSD: install,v 1.4 2016/04/12 15:52:29 jaapb Exp $ case ${STAGE} in PRE-INSTALL) @@ -70,6 +70,12 @@ POST-INSTALL) # ${TEST} ! -x ./+INFO_FILES || ./+INFO_FILES ADD ${PKG_METADATA_DIR} + + # + # Register package into ocaml-findlib. + # + ${TEST} ! -x ./+OCAML_FINDLIB_REGISTER || + ./+OCAML_FINDLIB_REGISTER ADD ${PKG_METADATA_DIR} ;; esac diff --git a/mk/pkginstall/ocaml-findlib-register b/mk/pkginstall/ocaml-findlib-register new file mode 100644 index 00000000000..8a709bb6188 --- /dev/null +++ b/mk/pkginstall/ocaml-findlib-register @@ -0,0 +1,67 @@ +# $NetBSD: ocaml-findlib-register,v 1.1 2016/04/12 15:52:29 jaapb Exp $ +# +# Generate an +OCAML_FINDLIB_REGISTER script that handles registration for +# findlib after a binary installation +# +case "${STAGE},$1" in +UNPACK,|UNPACK,+OCAML_FINDLIB_REGISTER) + ${CAT} > ./+OCAML_FINDLIB_REGISTER << 'EOF' +#!@SH@ +# +# +OCAML_FINDLIB_REGISTER - ocaml-findlib registration script +# +# Usage: ./+OCAML_FINDLIB_REGISTER ADD|REMOVE [findlib_pkg_dir] +# +# This script supports two actions, ADD and REMOVE, that will +# add or remove directories from the ocaml ld.conf file (standard location +# is in LOCALBASE/lib/ocaml/ld.conf) +# +ECHO="@ECHO@" +GREP="@GREP@" +MV="@MV@" +OCAML_FINDLIB_DIRS="@OCAML_FINDLIB_DIRS@" +PWD_CMD="@PWD_CMD@" +RM="@RM@" +TOUCH="@TOUCH@" + +SELF=$0 +ACTION=$1 + +LDCONF="@PREFIX@/lib/ocaml/ld.conf" + +CURDIR=`${PWD_CMD}` +PKG_METADATA_DIR="${2-${CURDIR}}" +: ${PKGNAME=${PKG_METADATA_DIR##*/}} +: ${PKG_PREFIX=@PREFIX@} + +case "${OCAML_FINDLIB_REGISTER_VERBOSE:-@OCAML_FINDLIB_REGISTER_VERBOSE@}" in +[Yy][Ee][Ss]|[Tt][Rr][Uu][Ee]|[Oo][Nn]|1) + echo="${ECHO}" + ;; +[Nn][Oo]|[Ff][Aa][Ll][Ss][Ee]|[Oo][Ff][Ff]|0) + echo=":" + ;; +esac + +${TOUCH} ${LDCONF}.tmp +for i in ${OCAML_FINDLIB_DIRS} +do + ${GREP} -F -v -- "$i" < "${LDCONF}" >> "${LDCONF}.tmp" + case $ACTION in + ADD) + $echo "${PKGNAME}: adding $i to ${LDCONF}" + ${ECHO} "@PREFIX@/$i" >> "${LDCONF}.tmp" + ;; + + REMOVE) + $echo "${PKGNAME}: removing $i from ${LDCONF}" + ;; + esac +done +${MV} -f "${LDCONF}.tmp" "${LDCONF}" + +EOF + ${CHMOD} +x ./+OCAML_FINDLIB_REGISTER + ;; +esac + |