summaryrefslogtreecommitdiff
path: root/mk/pkginstall
diff options
context:
space:
mode:
authorjaapb <jaapb>2016-04-12 15:52:29 +0000
committerjaapb <jaapb>2016-04-12 15:52:29 +0000
commit0087b31216c8dfb69969da2e644adc0595a34781 (patch)
tree5cfc10ab49e3d83505dce147e5bcde857013aa24 /mk/pkginstall
parent121e137f75bdfd0a3398ab61c1916d619f2cb1fb (diff)
downloadpkgsrc-0087b31216c8dfb69969da2e644adc0595a34781.tar.gz
Added a pkginstall fragment that takes over from ocaml-findlib-register (a
script included in the ocaml-findlib package) and removes the need to call said script explicitly from PLIST. Packages that use findlib will now automatically add directories that are in OCAML_FINDLIB_DIRS (set by default to $(OCAML_SITELIBDIR)/${PKGBASE}) to the file ${PREFIX}/lib/ocaml/ld.conf. This behaviour can be disabled by undefining OCAML_FINDLIB_REGISTER.
Diffstat (limited to 'mk/pkginstall')
-rw-r--r--mk/pkginstall/bsd.pkginstall.mk30
-rw-r--r--mk/pkginstall/deinstall8
-rw-r--r--mk/pkginstall/install8
-rw-r--r--mk/pkginstall/ocaml-findlib-register67
4 files changed, 110 insertions, 3 deletions
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
+