summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrillig <rillig@pkgsrc.org>2020-07-01 14:58:43 +0000
committerrillig <rillig@pkgsrc.org>2020-07-01 14:58:43 +0000
commit8fb3a466e37b94d2097027d2f5bff528e12caf76 (patch)
treefb7097df2251f2bd8516dc938382ef2b704c31b8
parent53d00af234df97ea902427c2e655faf1f96ab7a8 (diff)
downloadpkgsrc-8fb3a466e37b94d2097027d2f5bff528e12caf76.tar.gz
mk/haskell.mk: remove variable HASKELL_COMPILER, clean up documentation
There was only a single valid value for HASKELL_COMPILER, therefore the variable was useless. It only made the implementation more complicated than necessary.
-rw-r--r--mk/defaults/mk.conf8
-rw-r--r--mk/haskell.mk163
2 files changed, 38 insertions, 133 deletions
diff --git a/mk/defaults/mk.conf b/mk/defaults/mk.conf
index e98e0aa21ac..ec196a8f3e3 100644
--- a/mk/defaults/mk.conf
+++ b/mk/defaults/mk.conf
@@ -1,4 +1,4 @@
-# $NetBSD: mk.conf,v 1.311 2020/05/28 16:22:58 maya Exp $
+# $NetBSD: mk.conf,v 1.312 2020/07/01 14:58:43 rillig Exp $
#
# This file provides default values for variables that may be overridden
@@ -1070,12 +1070,6 @@ GAMEOWN?= ${GAMES_USER}
# card at I/O offset 0x300.
# Default: not defined
-HASKELL_COMPILER?= ghc
-# Used by haskell.mk to determine which Haskell compiler should be
-# used for building Haskell packages.
-# Possible: ghc
-# Default: ghc
-
HOWL_GROUP?= howl
# System group to run howl's mDNS responder as.
# Possible: any group name
diff --git a/mk/haskell.mk b/mk/haskell.mk
index 385e61cc47a..12bf54e40b5 100644
--- a/mk/haskell.mk
+++ b/mk/haskell.mk
@@ -1,94 +1,44 @@
-# $NetBSD: haskell.mk,v 1.25 2020/06/29 22:00:58 rillig Exp $
+# $NetBSD: haskell.mk,v 1.26 2020/07/01 14:58:43 rillig Exp $
#
# This Makefile fragment handles Haskell Cabal packages.
-# See: http://www.haskell.org/cabal/
+# Package configuration, building, installation, registration and
+# unregistration are fully automated.
+# See https://www.haskell.org/cabal/.
#
-# Note to users:
-#
-# * Users choose one favourite Haskell compiler. Though the only
-# compiler currently supported is GHC.
-#
-# * You can't install a cabal package for more than one compilers
-# simultaneously. In the future, this limitation can possibly be
-# eliminated using the method used by
-# "../../lang/python/pyversion.mk".
-#
-# Note to package developers:
-#
-# * This file must be included *before* "../../mk/bsd.pkg.mk", or
-# you'll get target-redefinition errors.
+# Package-settable variables:
#
-# * PKGNAME will automatically be "hs-${DISTNAME}" unless you
-# explicitly declare it.
+# PKGNAME
+# Defaults to hs-${DISTNAME}.
#
-# * If your package is on the HackageDB, MASTER_SITES and HOMEPAGE
-# can be omitted.
+# HOMEPAGE
+# MASTER_SITES
+# Default to HackageDB URLs.
#
-# * Package configuration, building, installation, registration and
-# unregistration are fully automated. You usually don't need to do
-# anything special.
+# HASKELL_OPTIMIZATION_LEVEL
+# Optimization level for compilation.
#
-# * When Haskell libraries depend on other Haskell libraries, they
-# MUST depend on, not build-depend on, such libraries. So if your
-# package installs a library, you MUST NOT set
-# BUILDLINK_DEPMETHOD.${PKG} to "build" in your buildlink3.mk
-# file. Reason:
-# 1. Assume we have two libraries A and B, and B build-depends
-# on A.
-# 2. We install package A.
-# 3. We then install package B, which build-depends on A.
-# 4. After that, a new upstream version of package A is
-# released. We therefore update package A to the new version.
-# 5. Package B had a build-dependency on A, so pkgsrc assumes
-# that it's still safe to use package B without
-# recompilation of B. But in fact package B requires the
-# very version of package A which was available when
-# package B was compiled. So the installed package B is
-# completely broken at this time.
+# Possible values: 0 1 2
+# Default value: 2
#
-# Package-settable variables:
+# User-settable variables:
#
-# HASKELL_OPTIMIZATION_LEVEL
-# Description:
-# Optimization level for compilation.
-# Possible values:
-# 0 1 2
-# Default value:
-# 2
+# HASKELL_ENABLE_SHARED_LIBRARY
+# Whether shared library should be built or not.
#
-# User-settable variables:
+# Possible values: yes, no
+# Default value: yes
#
-# HASKELL_COMPILER
-# Description:
-# The user's favourite Haskell compiler.
-# Possible values:
-# ghc
-# Default value:
-# ghc
+# HASKELL_ENABLE_LIBRARY_PROFILING
+# Whether profiling library should be built or not.
#
-# HASKELL_ENABLE_SHARED_LIBRARY
-# Description:
-# Whether shared library should be built or not.
-# Possible values:
-# yes, no
-# Default value:
-# yes
+# Possible values: yes, no
+# Default value: yes
#
-# HASKELL_ENABLE_LIBRARY_PROFILING
-# Description:
-# Whether profiling library should be built or not.
-# Possible values:
-# yes, no
-# Default value:
-# yes
+# HASKELL_ENABLE_HADDOCK_DOCUMENTATION
+# Whether haddock documentation should be built or not.
#
-# HASKELL_ENABLE_HADDOCK_DOCUMENTATION
-# Description:
-# Whether haddock documentation should be built or not.
-# Possible values:
-# yes, no
-# Default value:
-# yes
+# Possible values: yes, no
+# Default value: yes
.if !defined(HASKELL_MK)
HASKELL_MK= # defined
@@ -97,14 +47,10 @@ HASKELL_MK= # defined
HS_UPDATE_PLIST?= no
-# Declare HASKELL_COMPILER as one of BUILD_DEFS variables. See
-# ../../mk/misc/show.mk
-BUILD_DEFS+= HASKELL_COMPILER
BUILD_DEFS+= HASKELL_ENABLE_SHARED_LIBRARY
BUILD_DEFS+= HASKELL_ENABLE_LIBRARY_PROFILING
BUILD_DEFS+= HASKELL_ENABLE_HADDOCK_DOCUMENTATION
-
# Declarations for ../../mk/misc/show.mk
_VARGROUPS+= haskell
_USER_VARS.haskell= \
@@ -117,13 +63,7 @@ _SYS_VARS.haskell= \
_DEF_VARS.haskell= \
HASKELL_OPTIMIZATION_LEVEL \
HASKELL_PKG_NAME \
- _DISTBASE \
- _DISTVERSION \
- _GHC_BIN \
- _GHC_PKG_BIN \
- _GHC_VERSION \
- _GHC_VERSION_CMD \
- _GHC_VERSION_FULL \
+ _HASKELL_VERSION_CMD \
_HASKELL_BIN \
_HASKELL_PKG_BIN \
_HASKELL_PKG_DESCR_FILE \
@@ -132,16 +72,9 @@ _DEF_VARS.haskell= \
_IGN_VARS.haskell= \
USE_TOOLS _*
-# PKGNAME is usually named after DISTNAME.
PKGNAME?= hs-${DISTNAME}
-
-# Default value of MASTER_SITES.
-_DISTBASE?= ${DISTNAME:C/-[^-]*$//}
-_DISTVERSION?= ${DISTNAME:C/^.*-//}
MASTER_SITES?= ${MASTER_SITE_HASKELL_HACKAGE:=${DISTNAME}/}
-
-# Default value of HOMEPAGE.
-HOMEPAGE?= http://hackage.haskell.org/package/${_DISTBASE}
+HOMEPAGE?= http://hackage.haskell.org/package/${DISTNAME:C/-[^-]*$//}
# Cabal packages may use pkg-config, but url2pkg can't detect
# that. (PHO: I think that should be handled by url2pkg (2009-05-20))
@@ -150,71 +83,49 @@ USE_TOOLS+= pkg-config
# GHC can be a memory hog, so don't apply regular limits.
UNLIMIT_RESOURCES+= datasize virtualsize
-# Default value of HASKELL_OPTIMIZATION_LEVEL
HASKELL_OPTIMIZATION_LEVEL?= 2
-
-# Default value of HASKELL_ENABLE_SHARED_LIBRARY
HASKELL_ENABLE_SHARED_LIBRARY?= yes
-
-# Default value of HASKELL_ENABLE_LIBRARY_PROFILING
HASKELL_ENABLE_LIBRARY_PROFILING?= yes
-
-# Default value of HASKELL_ENABLE_HADDOCK_DOCUMENTATION
HASKELL_ENABLE_HADDOCK_DOCUMENTATION?= yes
-# Compiler specific variables and targets.
-.if ${HASKELL_COMPILER} == "ghc"
-
-# Add dependency on GHC.
.include "../../lang/ghc88/buildlink3.mk"
# Tools
-_GHC_BIN= ${BUILDLINK_PREFIX.ghc:U${PREFIX}}/bin/ghc
-_GHC_PKG_BIN= ${BUILDLINK_PREFIX.ghc:U${PREFIX}}/bin/ghc-pkg
-_HASKELL_BIN= ${_GHC_BIN} # Expose to the outer scope.
-_HASKELL_PKG_BIN= ${_GHC_PKG_BIN} # Expose to the outer scope.
+_HASKELL_BIN= ${BUILDLINK_PREFIX.ghc:U${PREFIX}}/bin/ghc
+_HASKELL_PKG_BIN= ${BUILDLINK_PREFIX.ghc:U${PREFIX}}/bin/ghc-pkg
-# Determine GHC version.
-_GHC_VERSION_CMD= ${_GHC_BIN} -V 2>/dev/null | ${CUT} -d ' ' -f 8
-_GHC_VERSION= ${_GHC_VERSION_CMD:sh}
-_GHC_VERSION_FULL= ghc-${_GHC_VERSION}
-_HASKELL_VERSION= ${_GHC_VERSION_FULL} # Expose to the outer scope.
+_HASKELL_VERSION_CMD= ${_HASKELL_BIN} -V 2>/dev/null | ${CUT} -d ' ' -f 8
+_HASKELL_VERSION= ghc-${_HASKELL_VERSION_CMD:sh}
# Determine GHC shlib suffix
-_GHC_SHLIB_SUFFIX.dylib= dylib
-_GHC_SHLIB_SUFFIX= ${_GHC_SHLIB_SUFFIX.${SHLIB_TYPE}:Uso}
-_HASKELL_SHLIB_SUFFIX= ${_GHC_SHLIB_SUFFIX}
+_HASKELL_SHLIB_SUFFIX.dylib= dylib
+_HASKELL_SHLIB_SUFFIX= ${_HASKELL_SHLIB_SUFFIX.${SHLIB_TYPE}:Uso}
# GHC requires C compiler.
USE_LANGUAGES+= c
# Declarations for ../../mk/configure/configure.mk
CONFIGURE_ARGS+= --ghc
-CONFIGURE_ARGS+= --with-compiler=${_GHC_BIN:Q}
-CONFIGURE_ARGS+= --with-hc-pkg=${_GHC_PKG_BIN:Q}
+CONFIGURE_ARGS+= --with-compiler=${_HASKELL_BIN:Q}
+CONFIGURE_ARGS+= --with-hc-pkg=${_HASKELL_PKG_BIN:Q}
CONFIGURE_ARGS+= --prefix=${PREFIX:Q}
-.endif # ${HASKELL_COMPILER}
-# Shared libraries
.if ${HASKELL_ENABLE_SHARED_LIBRARY} == "yes"
CONFIGURE_ARGS+= --enable-shared --enable-executable-dynamic
.else
CONFIGURE_ARGS+= --disable-shared --disable-executable-dynamic
.endif
-# Library profiling
.if ${HASKELL_ENABLE_LIBRARY_PROFILING} == "yes"
CONFIGURE_ARGS+= --enable-library-profiling
.else
CONFIGURE_ARGS+= --disable-library-profiling
.endif
-# Haddock documentations
.if ${HASKELL_ENABLE_HADDOCK_DOCUMENTATION} == "yes"
CONFIGURE_ARGS+= --with-haddock=${BUILDLINK_PREFIX.ghc:Q}/bin/haddock
.endif
-# Optimization
CONFIGURE_ARGS+= -O${HASKELL_OPTIMIZATION_LEVEL}
.if !exists(${PKGDIR}/PLIST)