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

cvs diff -r1.59 -r1.60 pkgsrc/mk/haskell.mk (expand / switch to context diff)
--- 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}

cvs diff -r1.3 -r1.4 pkgsrc/mk/haskell/DEINSTALL.in (expand / switch to context diff)
--- 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
         ;;

cvs diff -r1.3 -r1.4 pkgsrc/mk/haskell/INSTALL.in (expand / switch to context diff)
--- 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