summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mk/haskell.mk18
-rw-r--r--regress/infra-unittests/haskell.sh35
2 files changed, 27 insertions, 26 deletions
diff --git a/mk/haskell.mk b/mk/haskell.mk
index e2133410fb2..385e61cc47a 100644
--- a/mk/haskell.mk
+++ b/mk/haskell.mk
@@ -1,4 +1,4 @@
-# $NetBSD: haskell.mk,v 1.24 2020/06/29 20:51:24 rillig Exp $
+# $NetBSD: haskell.mk,v 1.25 2020/06/29 22:00:58 rillig Exp $
#
# This Makefile fragment handles Haskell Cabal packages.
# See: http://www.haskell.org/cabal/
@@ -234,7 +234,6 @@ _HS_PLIST_STATUS= outdated
# the PLIST.
#
.if ${_HS_PLIST_STATUS} == lib-ok || ${_HS_PLIST_STATUS} == missing
-
_HASKELL_PL_INTF= ${_HASKELL_PKG_ID_FILE:H:S,^${PREFIX}/,,}
_HASKELL_PL_IMPL_AWK= prev == "import-dirs:" { dir = $$1; exit }
_HASKELL_PL_IMPL_AWK+= { prev = $$0 }
@@ -254,6 +253,7 @@ _HS_PLIST_SUBST+= HS_PLATFORM=${_HASKELL_PL_PLATFORM}
_HS_PLIST_SUBST+= HS_PKGID=${_HASKELL_PL_PKGID}
_HS_PLIST_SUBST+= HS_VER=${_HASKELL_PL_VER}
PLIST_SUBST+= ${exists(${DESTDIR}${_HASKELL_PKG_DESCR_FILE}):?${_HS_PLIST_SUBST}:}
+
_HS_PRINT_PLIST_AWK+= { sub("^${_HASKELL_PL_INTF}", "$${HS_INTF}") }
_HS_PRINT_PLIST_AWK+= { sub("^${_HASKELL_PL_IMPL}", "$${HS_IMPL}") }
_HS_PRINT_PLIST_AWK+= { sub("^${_HASKELL_PL_DOCS}", "$${HS_DOCS}") }
@@ -261,21 +261,21 @@ _HS_PRINT_PLIST_AWK+= { sub("/${_HASKELL_PL_PLATFORM}/", "/$${HS_PLATFORM}/") }
_HS_PRINT_PLIST_AWK+= { sub( "${_HASKELL_PL_PKGID}", "$${HS_PKGID}") }
_HS_PRINT_PLIST_AWK+= { sub( "${_HASKELL_PL_VER}", "$${HS_VER}") }
PRINT_PLIST_AWK+= ${exists(${DESTDIR}${_HASKELL_PKG_DESCR_FILE}):?${_HS_PRINT_PLIST_AWK}:}
-
-. if ${HS_UPDATE_PLIST} != no && ${_HS_PLIST_STATUS} == missing
-GENERATE_PLIST+= ${MAKE} print-PLIST > ${PKGDIR}/PLIST;
-. endif
.endif
.if ${_HS_PLIST_STATUS} == missing || ${_HS_PLIST_STATUS} == outdated
+. if ${HS_UPDATE_PLIST} == yes
+GENERATE_PLIST+= ${MAKE} print-PLIST > ${PKGDIR}/PLIST;
+. endif
GENERATE_PLIST+= \
cd ${DESTDIR:Q}${PREFIX:Q} && \
${FIND} * \( -type f -o -type l \) | ${SORT};
-PLIST_SRC= # none, because the PLIST file is outdated or missing
-. if ${_HS_PLIST_STATUS} == outdated && ${HS_UPDATE_PLIST} == no
+PLIST_SRC= # none
+.endif
+
+.if ${_HS_PLIST_STATUS} == outdated && ${HS_UPDATE_PLIST} == no
WARNINGS+= "[haskell.mk] The PLIST format is outdated."
WARNINGS+= "[haskell.mk] Set HS_UPDATE_PLIST=yes to update it automatically."
-. endif
.endif
# Define configure target. We might not have any working Haskell
diff --git a/regress/infra-unittests/haskell.sh b/regress/infra-unittests/haskell.sh
index 9e796dd9546..0265810454a 100644
--- a/regress/infra-unittests/haskell.sh
+++ b/regress/infra-unittests/haskell.sh
@@ -1,5 +1,5 @@
#! /bin/sh
-# $NetBSD: haskell.sh,v 1.5 2020/06/29 21:24:39 rillig Exp $
+# $NetBSD: haskell.sh,v 1.6 2020/06/29 22:00:58 rillig Exp $
#
# Tests for mk/haskell.mk.
#
@@ -71,8 +71,16 @@ ALL_ENV= ALL_ENV_VAR=value
.include "mk/plist/bsd.plist.mk"
.include "mk/misc/show.mk"
+# from bsd.pkg.mk
+PKGNAME_NOREV?= \${PKGNAME}
+PKGVERSION?= \${PKGNAME:C/^.*-//}
+PKGBASE?= \${PKGNAME:C/-[^-]*$//}
+
show-plist-status: .PHONY
@echo "PLIST status: "\${_HS_PLIST_STATUS:Q}
+
+show-var: .PHONY
+ @echo \${\${VARNAME}:Q}
EOF
link_from_pkgsrc 'mk/haskell.mk'
@@ -206,19 +214,12 @@ if test_case_begin 'missing, update=yes'; then
# Based on devel/hs-asn1-parse from 2020-06-22.
- create_file_lines 'Makefile' \
- 'DISTNAME= asn1-parse-0.9.5' \
- 'PKGVERSION= 0.9.5' \
- 'PKGNAME_NOREV= ${DISTNAME}' \
- '' \
- 'HS_UPDATE_PLIST= yes' \
- "PKGDIR= $PWD" \
- '' \
- '.include "../../main.mk"' \
- '.include "../../mk/haskell.mk"' \
- '' \
- 'show-haskell-plist-status: .PHONY' \
- ' @echo "PLIST status: "${_HS_PLIST_STATUS:Q}'
+ create_file 'Makefile' <<-EOF
+ DISTNAME= asn1-parse-0.9.5
+ HS_UPDATE_PLIST= yes
+
+ .include "../../main.mk"
+ EOF
create_file "$destdir$prefix/lib/asn1-parse-0.9.5/ghc-8.8.1/package-id" <<-EOF
asn1-parse-0.9.5-2HryHNyN1grJJzKM4AV1Gr
EOF
@@ -392,10 +393,10 @@ if test_case_begin 'neither package-id nor package-description'; then
'PLIST_SUBST LOWER_VENDOR=' \
'PLIST_SUBST LOWER_OPSYS=' \
'PLIST_SUBST LOWER_OS_VERSION=' \
- 'PLIST_SUBST PKGBASE=' \
- 'PLIST_SUBST PKGNAME=' \
+ 'PLIST_SUBST PKGBASE=hs-package' \
+ 'PLIST_SUBST PKGNAME=hs-package-1.0' \
'PLIST_SUBST PKGLOCALEDIR=' \
- 'PLIST_SUBST PKGVERSION=' \
+ 'PLIST_SUBST PKGVERSION=1.0' \
'PLIST_SUBST LOCALBASE=' \
'PLIST_SUBST VIEWBASE=' \
'PLIST_SUBST X11BASE=' \