Sun Apr 28 08:55:37 2024 UTC (29d)
mk/haskell/{DE,}INSTALL.in: Be explicit about Haskell package DB to work with
Prior to this change the DEINSTALL hook for Haskell packages left garbage files in ${LOCALBASE}/lib/ghc-X.Y.Z/lib/package.conf.d when the major version of GHC changed.
(pho)
diff -r1.59 -r1.60 pkgsrc/mk/haskell.mk
diff -r1.3 -r1.4 pkgsrc/mk/haskell/DEINSTALL.in
diff -r1.3 -r1.4 pkgsrc/mk/haskell/INSTALL.in
--- pkgsrc/mk/haskell.mk 2024/04/28 08:33:44 1.59
+++ pkgsrc/mk/haskell.mk 2024/04/28 08:55:37 1.60
@@ -1,4 +1,4 @@
-# $NetBSD: haskell.mk,v 1.59 2024/04/28 08:33:44 pho Exp $
+# $NetBSD: haskell.mk,v 1.60 2024/04/28 08:55:37 pho Exp $
#
# This Makefile fragment handles Haskell Cabal packages. Package
# configuration, building, installation, registration and unregistration
@@ -109,6 +109,7 @@
DEINSTALL_TEMPLATES \
UNLIMIT_RESOURCES \
_HASKELL_BIN \
+ _HASKELL_GLOBAL_PKG_DB \
_HASKELL_PKG_BIN \
_HASKELL_PKG_DESCR_FILE_OR_DIR \
_HASKELL_PKG_ID_FILE \
@@ -121,7 +122,9 @@
MASTER_SITE_HASKELL_HACKAGE \
PKGDIR DESTDIR \
PREFIX \
- WRKSRC
+ WRKSRC \
+ _MAKE_JOBS_N \
+ _PATH_ORIG
_SORTED_VARS.haskell= \
HASKELL_UNRESTRICT_DEPENDENCIES
_LISTED_VARS.haskell= \
@@ -167,6 +170,13 @@
.endif
MAKEVARS+= _HASKELL_VERSION
+# Determine the path to the global Haskell package database. We need this
+# in our INSTALL and DEINSTALL hooks.
+.if !defined(_HASKELL_GLOBAL_PKG_DB)
+_HASKELL_GLOBAL_PKG_DB!= ${_HASKELL_BIN:Q} --print-global-package-db
+.endif
+MAKEVARS+= _HASKELL_GLOBAL_PKG_DB
+
# By default GHC uses a per-user default environment file if one is
# available. Cabal has to be visible in order to compile Setup.?hs,
# but per-user default environment files usually don't mark it as
@@ -306,7 +316,7 @@
# description of "base" (which always exists) and extract the platform
# from it.
.if !defined(_HS_PLIST.platform)
-_HS_PLIST.platform.cmd= ${_HASKELL_PKG_BIN} --simple-output field base data-dir
+_HS_PLIST.platform.cmd= ${_HASKELL_PKG_BIN:Q} --simple-output field base data-dir
_HS_PLIST.platform:= ${_HS_PLIST.platform.cmd:sh:H:T}
.endif
MAKEVARS+= _HS_PLIST.platform
@@ -472,9 +482,10 @@
${XARGS} ${RMDIR} -p 2>/dev/null || ${TRUE}
# Substitutions for INSTALL and DEINSTALL.
-FILES_SUBST+= HASKELL_PKG_BIN=${_HASKELL_PKG_BIN}
-FILES_SUBST+= HASKELL_PKG_DESCR_FILE_OR_DIR=${_HASKELL_PKG_DESCR_FILE_OR_DIR}
-FILES_SUBST+= HASKELL_PKG_ID_FILE=${_HASKELL_PKG_ID_FILE}
+FILES_SUBST+= HASKELL_GLOBAL_PKG_DB=${_HASKELL_GLOBAL_PKG_DB:Q}
+FILES_SUBST+= HASKELL_PKG_BIN=${_HASKELL_PKG_BIN:Q}
+FILES_SUBST+= HASKELL_PKG_DESCR_FILE_OR_DIR=${_HASKELL_PKG_DESCR_FILE_OR_DIR:Q}
+FILES_SUBST+= HASKELL_PKG_ID_FILE=${_HASKELL_PKG_ID_FILE:Q}
FILES_SUBST+= AWK=${AWK:Q}
FILES_SUBST+= EXPR=${EXPR:Q}
FILES_SUBST+= TRUE=${TRUE:Q}
--- pkgsrc/mk/haskell/DEINSTALL.in 2022/02/11 01:11:57 1.3
+++ pkgsrc/mk/haskell/DEINSTALL.in 2024/04/28 08:55:37 1.4
@@ -1,6 +1,7 @@
# -*- sh -*-
-# $NetBSD: DEINSTALL.in,v 1.3 2022/02/11 01:11:57 pho Exp $
+# $NetBSD: DEINSTALL.in,v 1.4 2024/04/28 08:55:37 pho Exp $
#
+HASKELL_GLOBAL_PKG_DB="@HASKELL_GLOBAL_PKG_DB@"
HASKELL_PKG_BIN="@HASKELL_PKG_BIN@"
HASKELL_PKG_ID_FILE="@HASKELL_PKG_ID_FILE@"
AWK="@AWK@"
@@ -19,7 +20,11 @@
print lines[j--] }' "${HASKELL_PKG_ID_FILE}" |
while read pkg_id; do
${ECHO} "Unregistering \`$pkg_id'..."
- ${HASKELL_PKG_BIN} unregister --force --ipid "$pkg_id"
+ ${HASKELL_PKG_BIN} \
+ --package-db="${HASKELL_GLOBAL_PKG_DB}" \
+ --force \
+ --ipid \
+ unregister "$pkg_id"
done
fi
;;
--- pkgsrc/mk/haskell/INSTALL.in 2022/02/11 01:11:57 1.3
+++ pkgsrc/mk/haskell/INSTALL.in 2024/04/28 08:55:37 1.4
@@ -1,6 +1,7 @@
# -*- sh -*-
-# $NetBSD: INSTALL.in,v 1.3 2022/02/11 01:11:57 pho Exp $
+# $NetBSD: INSTALL.in,v 1.4 2024/04/28 08:55:37 pho Exp $
#
+HASKELL_GLOBAL_PKG_DB="@HASKELL_GLOBAL_PKG_DB@"
HASKELL_PKG_BIN="@HASKELL_PKG_BIN@"
HASKELL_PKG_DESCR_FILE_OR_DIR="@HASKELL_PKG_DESCR_FILE_OR_DIR@"
EXPR="@EXPR@"
@@ -10,7 +11,9 @@
POST-INSTALL)
if [ -f "${HASKELL_PKG_DESCR_FILE_OR_DIR}" ]; then
# The package contains a single library.
- ${HASKELL_PKG_BIN} register "${HASKELL_PKG_DESCR_FILE_OR_DIR}";
+ ${HASKELL_PKG_BIN} \
+ --package-db="${HASKELL_GLOBAL_PKG_DB}" \
+ register "${HASKELL_PKG_DESCR_FILE_OR_DIR}";
elif [ -d "${HASKELL_PKG_DESCR_FILE_OR_DIR}" ]; then
# The package contains two or more libraries. The order of
@@ -20,6 +23,7 @@
while ${TRUE}; do
if [ -f "${HASKELL_PKG_DESCR_FILE_OR_DIR}/${i}" ]; then
${HASKELL_PKG_BIN} \
+ --package-db="${HASKELL_GLOBAL_PKG_DB}" \
register "${HASKELL_PKG_DESCR_FILE_OR_DIR}/${i}"
i=`${EXPR} $i + 1`
else