Thu Jan 2 16:34:47 2020 UTC ()
Pass -v to ./Setup when PKG_VERBOSE is defined


(pho)
diff -r1.8 -r1.9 pkgsrc/mk/haskell.mk

cvs diff -r1.8 -r1.9 pkgsrc/mk/haskell.mk (switch to unified diff)

--- pkgsrc/mk/haskell.mk 2020/01/01 04:54:10 1.8
+++ pkgsrc/mk/haskell.mk 2020/01/02 16:34:47 1.9
@@ -1,263 +1,263 @@ @@ -1,263 +1,263 @@
1# $NetBSD: haskell.mk,v 1.8 2020/01/01 04:54:10 pho Exp $ 1# $NetBSD: haskell.mk,v 1.9 2020/01/02 16:34:47 pho Exp $
2# 2#
3# This Makefile fragment handles Haskell Cabal packages. 3# This Makefile fragment handles Haskell Cabal packages.
4# See: http://www.haskell.org/cabal/ 4# See: http://www.haskell.org/cabal/
5# 5#
6# Note to users: 6# Note to users:
7# 7#
8# * Users choose one favourite Haskell compiler. Though the only 8# * Users choose one favourite Haskell compiler. Though the only
9# compiler currently supported is GHC. 9# compiler currently supported is GHC.
10# 10#
11# * You can't install a cabal package for more than one compilers 11# * You can't install a cabal package for more than one compilers
12# simultaneously. In the future, this limitation can possibly be 12# simultaneously. In the future, this limitation can possibly be
13# eliminated using the method used by 13# eliminated using the method used by
14# "../../lang/python/pyversion.mk". 14# "../../lang/python/pyversion.mk".
15# 15#
16# Note to package developers: 16# Note to package developers:
17# 17#
18# * This file must be included *before* "../../mk/bsd.pkg.mk", or 18# * This file must be included *before* "../../mk/bsd.pkg.mk", or
19# you'll get target-redefinition errors. 19# you'll get target-redefinition errors.
20# 20#
21# * PKGNAME will automatically be "hs-${DISTNAME}" unless you 21# * PKGNAME will automatically be "hs-${DISTNAME}" unless you
22# explicitly declare it. 22# explicitly declare it.
23# 23#
24# * If your package is on the HackageDB, MASTER_SITES and HOMEPAGE 24# * If your package is on the HackageDB, MASTER_SITES and HOMEPAGE
25# can be omitted. 25# can be omitted.
26# 26#
27# * Package configuration, building, installation, registration and 27# * Package configuration, building, installation, registration and
28# unregistration are fully automated. You usually don't need to do 28# unregistration are fully automated. You usually don't need to do
29# anything special. 29# anything special.
30# 30#
31# * When Haskell libraries depend on other Haskell libraries, they 31# * When Haskell libraries depend on other Haskell libraries, they
32# MUST depend on, not build-depend on, such libraries. So if your 32# MUST depend on, not build-depend on, such libraries. So if your
33# package installs a library, you MUST NOT set 33# package installs a library, you MUST NOT set
34# BUILDLINK_DEPMETHOD.${PKG} to "build" in your buildlink3.mk 34# BUILDLINK_DEPMETHOD.${PKG} to "build" in your buildlink3.mk
35# file. Reason: 35# file. Reason:
36# 1. Assume we have two libraries A and B, and B build-depends 36# 1. Assume we have two libraries A and B, and B build-depends
37# on A. 37# on A.
38# 2. We install package A. 38# 2. We install package A.
39# 3. We then install package B, which build-depends on A. 39# 3. We then install package B, which build-depends on A.
40# 4. After that, a new upstream version of package A is 40# 4. After that, a new upstream version of package A is
41# released. We therefore update package A to the new version. 41# released. We therefore update package A to the new version.
42# 5. Package B had a build-dependency on A, so pkgsrc assumes 42# 5. Package B had a build-dependency on A, so pkgsrc assumes
43# that it's still safe to use package B without 43# that it's still safe to use package B without
44# recompilation of B. But in fact package B requires the 44# recompilation of B. But in fact package B requires the
45# very version of package A which was available when 45# very version of package A which was available when
46# package B was compiled. So the installed package B is 46# package B was compiled. So the installed package B is
47# completely broken at this time. 47# completely broken at this time.
48# 48#
49# User-settable variables: 49# User-settable variables:
50# 50#
51# HASKELL_COMPILER 51# HASKELL_COMPILER
52# Description: 52# Description:
53# The user's favourite Haskell compiler. 53# The user's favourite Haskell compiler.
54# Possible values: 54# Possible values:
55# ghc 55# ghc
56# Default value: 56# Default value:
57# ghc 57# ghc
58# 58#
59# HASKELL_ENABLE_SHARED_LIBRARY 59# HASKELL_ENABLE_SHARED_LIBRARY
60# Description: 60# Description:
61# Whether shared library should be built or not. 61# Whether shared library should be built or not.
62# Possible values: 62# Possible values:
63# yes, no 63# yes, no
64# Default value: 64# Default value:
65# yes 65# yes
66# 66#
67# HASKELL_ENABLE_LIBRARY_PROFILING 67# HASKELL_ENABLE_LIBRARY_PROFILING
68# Description: 68# Description:
69# Whether profiling library should be built or not. 69# Whether profiling library should be built or not.
70# Possible values: 70# Possible values:
71# yes, no 71# yes, no
72# Default value: 72# Default value:
73# yes 73# yes
74# 74#
75# HASKELL_ENABLE_HADDOCK_DOCUMENTATION 75# HASKELL_ENABLE_HADDOCK_DOCUMENTATION
76# Description: 76# Description:
77# Whether haddock documentation should be built or not. 77# Whether haddock documentation should be built or not.
78# Possible values: 78# Possible values:
79# yes, no 79# yes, no
80# Default value: 80# Default value:
81# yes 81# yes
82 82
83.if !defined(HASKELL_MK) 83.if !defined(HASKELL_MK)
84HASKELL_MK= # defined 84HASKELL_MK= # defined
85 85
86.include "../../mk/bsd.fast.prefs.mk" 86.include "../../mk/bsd.fast.prefs.mk"
87 87
88 88
89# Declare HASKELL_COMPILER as one of BUILD_DEFS variables. See 89# Declare HASKELL_COMPILER as one of BUILD_DEFS variables. See
90# ../../mk/misc/show.mk 90# ../../mk/misc/show.mk
91BUILD_DEFS+= HASKELL_COMPILER 91BUILD_DEFS+= HASKELL_COMPILER
92BUILD_DEFS+= HASKELL_ENABLE_SHARED_LIBRARY 92BUILD_DEFS+= HASKELL_ENABLE_SHARED_LIBRARY
93BUILD_DEFS+= HASKELL_ENABLE_LIBRARY_PROFILING 93BUILD_DEFS+= HASKELL_ENABLE_LIBRARY_PROFILING
94BUILD_DEFS+= HASKELL_ENABLE_HADDOCK_DOCUMENTATION 94BUILD_DEFS+= HASKELL_ENABLE_HADDOCK_DOCUMENTATION
95 95
96 96
97# Declarations for ../../mk/misc/show.mk 97# Declarations for ../../mk/misc/show.mk
98_VARGROUPS+= haskell 98_VARGROUPS+= haskell
99_DEF_VARS.haskell= \ 99_DEF_VARS.haskell= \
100 _DISTBASE \ 100 _DISTBASE \
101 _DISTVERSION \ 101 _DISTVERSION \
102 _GHC_BIN \ 102 _GHC_BIN \
103 _GHC_PKG_BIN \ 103 _GHC_PKG_BIN \
104 _GHC_VERSION \ 104 _GHC_VERSION \
105 _GHC_VERSION_CMD \ 105 _GHC_VERSION_CMD \
106 _GHC_VERSION_FULL \ 106 _GHC_VERSION_FULL \
107 _HASKELL_BIN \ 107 _HASKELL_BIN \
108 _HASKELL_PKG_BIN \ 108 _HASKELL_PKG_BIN \
109 _HASKELL_PKG_DESCR_FILE \ 109 _HASKELL_PKG_DESCR_FILE \
110 _HASKELL_VERSION 110 _HASKELL_VERSION
111_USER_VARS.haskell= \ 111_USER_VARS.haskell= \
112 HASKELL_ENABLE_SHARED_LIBRARY \ 112 HASKELL_ENABLE_SHARED_LIBRARY \
113 HASKELL_ENABLE_LIBRARY_PROFILING \ 113 HASKELL_ENABLE_LIBRARY_PROFILING \
114 HASKELL_ENABLE_HADDOCK_DOCUMENTATION 114 HASKELL_ENABLE_HADDOCK_DOCUMENTATION
115 115
116# PKGNAME is usually named after DISTNAME. 116# PKGNAME is usually named after DISTNAME.
117PKGNAME?= hs-${DISTNAME} 117PKGNAME?= hs-${DISTNAME}
118 118
119# Default value of MASTER_SITES. 119# Default value of MASTER_SITES.
120_DISTBASE?= ${DISTNAME:C/-[^-]*$//} 120_DISTBASE?= ${DISTNAME:C/-[^-]*$//}
121_DISTVERSION?= ${DISTNAME:C/^.*-//} 121_DISTVERSION?= ${DISTNAME:C/^.*-//}
122MASTER_SITES?= ${MASTER_SITE_HASKELL_HACKAGE:=${DISTNAME}/} 122MASTER_SITES?= ${MASTER_SITE_HASKELL_HACKAGE:=${DISTNAME}/}
123 123
124# Default value of HOMEPAGE. 124# Default value of HOMEPAGE.
125HOMEPAGE?= http://hackage.haskell.org/package/${_DISTBASE} 125HOMEPAGE?= http://hackage.haskell.org/package/${_DISTBASE}
126 126
127# Cabal packages may use pkg-config, but url2pkg can't detect 127# Cabal packages may use pkg-config, but url2pkg can't detect
128# that. (PHO: I think that should be handled by url2pkg (2009-05-20)) 128# that. (PHO: I think that should be handled by url2pkg (2009-05-20))
129USE_TOOLS+= pkg-config 129USE_TOOLS+= pkg-config
130 130
131# Default value of HASKELL_ENABLE_SHARED_LIBRARY 131# Default value of HASKELL_ENABLE_SHARED_LIBRARY
132HASKELL_ENABLE_SHARED_LIBRARY?= yes 132HASKELL_ENABLE_SHARED_LIBRARY?= yes
133 133
134# Default value of HASKELL_ENABLE_LIBRARY_PROFILING 134# Default value of HASKELL_ENABLE_LIBRARY_PROFILING
135HASKELL_ENABLE_LIBRARY_PROFILING?= yes 135HASKELL_ENABLE_LIBRARY_PROFILING?= yes
136 136
137# Default value of HASKELL_ENABLE_HADDOCK_DOCUMENTATION 137# Default value of HASKELL_ENABLE_HADDOCK_DOCUMENTATION
138HASKELL_ENABLE_HADDOCK_DOCUMENTATION?= yes 138HASKELL_ENABLE_HADDOCK_DOCUMENTATION?= yes
139 139
140# Compiler specific variables and targets. 140# Compiler specific variables and targets.
141.if ${HASKELL_COMPILER} == "ghc" 141.if ${HASKELL_COMPILER} == "ghc"
142 142
143# Add dependency to the GHC. 143# Add dependency to the GHC.
144.include "../../lang/ghc7/buildlink3.mk" 144.include "../../lang/ghc7/buildlink3.mk"
145 145
146# Tools 146# Tools
147_GHC_BIN= ${BUILDLINK_PREFIX.ghc}/bin/ghc 147_GHC_BIN= ${BUILDLINK_PREFIX.ghc}/bin/ghc
148_GHC_PKG_BIN= ${BUILDLINK_PREFIX.ghc}/bin/ghc-pkg 148_GHC_PKG_BIN= ${BUILDLINK_PREFIX.ghc}/bin/ghc-pkg
149_HASKELL_BIN= ${_GHC_BIN} # Expose to the outer scope. 149_HASKELL_BIN= ${_GHC_BIN} # Expose to the outer scope.
150_HASKELL_PKG_BIN= ${_GHC_PKG_BIN} # Expose to the outer scope. 150_HASKELL_PKG_BIN= ${_GHC_PKG_BIN} # Expose to the outer scope.
151 151
152# Determine GHC version. 152# Determine GHC version.
153_GHC_VERSION_CMD= ${_GHC_BIN} -V 2>/dev/null | ${CUT} -d ' ' -f 8 153_GHC_VERSION_CMD= ${_GHC_BIN} -V 2>/dev/null | ${CUT} -d ' ' -f 8
154_GHC_VERSION= ${_GHC_VERSION_CMD:sh} 154_GHC_VERSION= ${_GHC_VERSION_CMD:sh}
155_GHC_VERSION_FULL= ghc-${_GHC_VERSION} 155_GHC_VERSION_FULL= ghc-${_GHC_VERSION}
156_HASKELL_VERSION= ${_GHC_VERSION_FULL} # Expose to the outer scope. 156_HASKELL_VERSION= ${_GHC_VERSION_FULL} # Expose to the outer scope.
157 157
158# Determine GHC shlib suffix 158# Determine GHC shlib suffix
159_GHC_SHLIB_SUFFIX.dylib= dylib 159_GHC_SHLIB_SUFFIX.dylib= dylib
160_GHC_SHLIB_SUFFIX= ${_GHC_SHLIB_SUFFIX.${SHLIB_TYPE}:Uso} 160_GHC_SHLIB_SUFFIX= ${_GHC_SHLIB_SUFFIX.${SHLIB_TYPE}:Uso}
161_HASKELL_SHLIB_SUFFIX= ${_GHC_SHLIB_SUFFIX} 161_HASKELL_SHLIB_SUFFIX= ${_GHC_SHLIB_SUFFIX}
162 162
163# GHC requires C compiler. 163# GHC requires C compiler.
164USE_LANGUAGES+= c 164USE_LANGUAGES+= c
165 165
166# Declarations for ../../mk/configure/configure.mk 166# Declarations for ../../mk/configure/configure.mk
167CONFIGURE_ARGS+= --ghc 167CONFIGURE_ARGS+= --ghc
168CONFIGURE_ARGS+= --with-compiler=${_GHC_BIN:Q} 168CONFIGURE_ARGS+= --with-compiler=${_GHC_BIN:Q}
169CONFIGURE_ARGS+= --with-hc-pkg=${_GHC_PKG_BIN:Q} 169CONFIGURE_ARGS+= --with-hc-pkg=${_GHC_PKG_BIN:Q}
170CONFIGURE_ARGS+= --prefix=${PREFIX:Q} 170CONFIGURE_ARGS+= --prefix=${PREFIX:Q}
171.endif # ${HASKELL_COMPILER} 171.endif # ${HASKELL_COMPILER}
172 172
173# Shared libraries 173# Shared libraries
174.if ${HASKELL_ENABLE_SHARED_LIBRARY} == "yes" 174.if ${HASKELL_ENABLE_SHARED_LIBRARY} == "yes"
175CONFIGURE_ARGS+= --enable-shared --enable-executable-dynamic 175CONFIGURE_ARGS+= --enable-shared --enable-executable-dynamic
176.endif 176.endif
177 177
178# Library profiling 178# Library profiling
179.if ${HASKELL_ENABLE_LIBRARY_PROFILING} == "yes" 179.if ${HASKELL_ENABLE_LIBRARY_PROFILING} == "yes"
180CONFIGURE_ARGS+= -p 180CONFIGURE_ARGS+= -p
181.endif 181.endif
182 182
183 183
184# Haddock documentations 184# Haddock documentations
185.if ${HASKELL_ENABLE_HADDOCK_DOCUMENTATION} == "yes" 185.if ${HASKELL_ENABLE_HADDOCK_DOCUMENTATION} == "yes"
186CONFIGURE_ARGS+= --with-haddock=${BUILDLINK_PREFIX.ghc:Q}/bin/haddock 186CONFIGURE_ARGS+= --with-haddock=${BUILDLINK_PREFIX.ghc:Q}/bin/haddock
187.endif 187.endif
188 188
189# Optimization 189# Optimization
190CONFIGURE_ARGS+= -O2 190CONFIGURE_ARGS+= -O2
191 191
192# Starting from GHC 7.10 (or 7.8?), packages are installed in 192# Starting from GHC 7.10 (or 7.8?), packages are installed in
193# directories with a hashed name so we can no longer predict the 193# directories with a hashed name so we can no longer predict the
194# contents of PLIST. 194# contents of PLIST.
195GENERATE_PLIST+= \ 195GENERATE_PLIST+= \
196 cd ${DESTDIR:Q}${PREFIX:Q} && \ 196 cd ${DESTDIR:Q}${PREFIX:Q} && \
197 ${FIND} * \( -type f -o -type l \) | ${SORT}; 197 ${FIND} * \( -type f -o -type l \) | ${SORT};
198# But since our packages may still have PLIST files, it is necessary 198# But since our packages may still have PLIST files, it is necessary
199# to ignore them until we get rid of them all. Or they all will be 199# to ignore them until we get rid of them all. Or they all will be
200# broken. 200# broken.
201PLIST_SRC= # none 201PLIST_SRC= # none
202.if ${PKG_DEVELOPER:Uno:tl} != "no" 202.if ${PKG_DEVELOPER:Uno:tl} != "no"
203.PHONY: _check-ignored-plist 203.PHONY: _check-ignored-plist
204privileged-install-hook: _check-ignored-plist 204privileged-install-hook: _check-ignored-plist
205_check-ignored-plist: error-check 205_check-ignored-plist: error-check
206 ${RUN}if ${TEST} -f PLIST; then \ 206 ${RUN}if ${TEST} -f PLIST; then \
207 ${DELAYED_WARNING_MSG} "[haskell.mk] The PLIST file is no longer used. Please remove it."; \ 207 ${DELAYED_WARNING_MSG} "[haskell.mk] The PLIST file is no longer used. Please remove it."; \
208 fi 208 fi
209.endif 209.endif
210 210
211# We might not have any working Haskell interpreter so compile 211# We might not have any working Haskell interpreter so compile
212# Setup.?hs to a binary. Since dynamic linkage is much faster, we try 212# Setup.?hs to a binary. Since dynamic linkage is much faster, we try
213# it and then fall back to static linkage if that didn't work. 213# it and then fall back to static linkage if that didn't work.
214pre-configure: ${WRKSRC}/Setup 214pre-configure: ${WRKSRC}/Setup
215 215
216${WRKSRC}/Setup: 216${WRKSRC}/Setup:
217 ${RUN}cd ${WRKSRC} && \ 217 ${RUN}cd ${WRKSRC} && \
218 ( ${_HASKELL_BIN:Q} --make Setup -dynamic || \ 218 ( ${_HASKELL_BIN:Q} --make Setup -dynamic || \
219 ${_HASKELL_BIN:Q} --make Setup -static ) 219 ${_HASKELL_BIN:Q} --make Setup -static )
220 220
221# Define configure target. 221# Define configure target.
222do-configure: 222do-configure:
223 ${RUN}cd ${WRKSRC:Q} && \ 223 ${RUN}cd ${WRKSRC:Q} && \
224 ${SETENV} ${CONFIGURE_ENV} \ 224 ${SETENV} ${CONFIGURE_ENV} \
225 ./Setup configure ${CONFIGURE_ARGS} 225 ./Setup configure ${PKG_VERBOSE:D-v} ${CONFIGURE_ARGS}
226 226
227# Define build target. 227# Define build target.
228do-build: 228do-build:
229 ${RUN}cd ${WRKSRC:Q} && \ 229 ${RUN}cd ${WRKSRC:Q} && \
230 ./Setup build 230 ./Setup build ${PKG_VERBOSE:D-v}
231.if ${HASKELL_ENABLE_HADDOCK_DOCUMENTATION} == "yes" 231.if ${HASKELL_ENABLE_HADDOCK_DOCUMENTATION} == "yes"
232 ${RUN}cd ${WRKSRC:Q} && \ 232 ${RUN}cd ${WRKSRC:Q} && \
233 ./Setup haddock 233 ./Setup haddock ${PKG_VERBOSE:D-v}
234.endif 234.endif
235 235
236# Define install target. We need installed-pkg-config to be installed 236# Define install target. We need installed-pkg-config to be installed
237# for package registration (if any). 237# for package registration (if any).
238_HASKELL_PKG_DESCR_DIR= ${PREFIX}/lib/${DISTNAME}/${_HASKELL_VERSION} 238_HASKELL_PKG_DESCR_DIR= ${PREFIX}/lib/${DISTNAME}/${_HASKELL_VERSION}
239_HASKELL_PKG_DESCR_FILE= ${_HASKELL_PKG_DESCR_DIR}/package-description 239_HASKELL_PKG_DESCR_FILE= ${_HASKELL_PKG_DESCR_DIR}/package-description
240 240
241INSTALLATION_DIRS+= ${_HASKELL_PKG_DESCR_DIR} 241INSTALLATION_DIRS+= ${_HASKELL_PKG_DESCR_DIR}
242do-install: 242do-install:
243 ${RUN}cd ${WRKSRC} && \ 243 ${RUN}cd ${WRKSRC} && \
244 ./Setup register --gen-pkg-config=dist/package-description && \ 244 ./Setup register ${PKG_VERBOSE:D-v} --gen-pkg-config=dist/package-description && \
245 ./Setup copy --destdir=${DESTDIR:Q} && \ 245 ./Setup copy ${PKG_VERBOSE:D-v} --destdir=${DESTDIR:Q} && \
246 if [ -f dist/package-description ]; then \ 246 if [ -f dist/package-description ]; then \
247 ${INSTALL_DATA} dist/package-description ${DESTDIR:Q}${_HASKELL_PKG_DESCR_FILE:Q}; \ 247 ${INSTALL_DATA} dist/package-description ${DESTDIR:Q}${_HASKELL_PKG_DESCR_FILE:Q}; \
248 fi \ 248 fi \
249 249
250# Define test target. 250# Define test target.
251do-test: 251do-test:
252 ${RUN}cd ${WRKSRC} && \ 252 ${RUN}cd ${WRKSRC} && \
253 ./Setup test 253 ./Setup test ${PKG_VERBOSE:D-v}
254 254
255# Substitutions for INSTALL and DEINSTALL. 255# Substitutions for INSTALL and DEINSTALL.
256FILES_SUBST+= DISTNAME=${DISTNAME} 256FILES_SUBST+= DISTNAME=${DISTNAME}
257FILES_SUBST+= HASKELL_PKG_BIN=${_HASKELL_PKG_BIN} 257FILES_SUBST+= HASKELL_PKG_BIN=${_HASKELL_PKG_BIN}
258FILES_SUBST+= HASKELL_PKG_DESCR_FILE=${_HASKELL_PKG_DESCR_FILE} 258FILES_SUBST+= HASKELL_PKG_DESCR_FILE=${_HASKELL_PKG_DESCR_FILE}
259 259
260INSTALL_TEMPLATES+= ../../mk/haskell/INSTALL.in 260INSTALL_TEMPLATES+= ../../mk/haskell/INSTALL.in
261DEINSTALL_TEMPLATES+= ../../mk/haskell/DEINSTALL.in 261DEINSTALL_TEMPLATES+= ../../mk/haskell/DEINSTALL.in
262 262
263.endif # HASKELL_MK 263.endif # HASKELL_MK