Authentication-Results: name.execsw.org; dkim=pass (1024-bit key) header.d=netbsd.org header.i=@netbsd.org header.b=QHpK9npa; dkim=pass (1024-bit key) header.d=netbsd.org header.i=@netbsd.org header.b=hXD6av0k Received: by mail.netbsd.org (Postfix, from userid 605) id 7146E84E54; Mon, 29 Apr 2024 07:58:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netbsd.org; s=20240131; t=1714377520; bh=8i7rZjkr9tTb5+BSI4DxxReYEhNBWr07uA6rDoEE03k=; h=Date:From:Subject:To:Reply-To:List-Id:List-Unsubscribe; b=QHpK9npaIn/iX+HlWYGOcq/CT2HyG+Hv7Co/w0D2ys7ReVVSCBO+WMNv+HhmB4PBR lrsWR+U31qGIujXpysy6AmdrjDwMnP5DAvWfp01ssF75JcS2H0C68YlDRIIXRZiOnI VvyttqqsYCfdavqMT+l+L61Lo16sGx3jEXExjwbI= Received: from localhost (localhost [127.0.0.1]) by mail.netbsd.org (Postfix) with ESMTP id 6011584E64 for ; Mon, 29 Apr 2024 07:58:39 +0000 (UTC) X-Virus-Scanned: amavisd-new at netbsd.org Authentication-Results: mail.netbsd.org (amavisd-new); dkim=pass (1024-bit key) header.d=netbsd.org Received: from mail.netbsd.org ([127.0.0.1]) by localhost (mail.netbsd.org [127.0.0.1]) (amavisd-new, port 10025) with ESMTP id IugM0Fuo06HH for ; Mon, 29 Apr 2024 07:58:38 +0000 (UTC) Received: from cvs.NetBSD.org (ivanova.NetBSD.org [IPv6:2001:470:a085:999:28c:faff:fe03:5984]) by mail.netbsd.org (Postfix) with ESMTP id B34B984D0E for ; Mon, 29 Apr 2024 07:58:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netbsd.org; s=20240131; t=1714377518; bh=8i7rZjkr9tTb5+BSI4DxxReYEhNBWr07uA6rDoEE03k=; h=Date:From:Subject:To:Reply-To; b=hXD6av0kiwasgmtSQERho9ZUX9Ol1nQtKl7MwaFSP6Xj3OXY8ctmS/u0C7MzdJtpj MUFuR3Lxg0/WAFDdXEDom80+7kWP3Hx+5MY3/Sn5o20bqtoiiWMS5Reipp4+fLYjeB kExB3xBt7G/4Mi/6HXkhZeNkP/iIaMG8iy1nA+Dw= Received: by cvs.NetBSD.org (Postfix, from userid 500) id AF327FA2C; Mon, 29 Apr 2024 07:58:38 +0000 (UTC) Content-Transfer-Encoding: 7bit Content-Type: multipart/mixed; boundary="_----------=_171437751834000" MIME-Version: 1.0 Date: Mon, 29 Apr 2024 07:58:38 +0000 From: "Masatake Daimon" Subject: CVS commit: pkgsrc/mk To: pkgsrc-changes@NetBSD.org Reply-To: pho@netbsd.org X-Mailer: log_accum Message-Id: <20240429075838.AF327FA2C@cvs.NetBSD.org> Sender: pkgsrc-changes-owner@NetBSD.org List-Id: Precedence: bulk List-Unsubscribe: This is a multi-part message in MIME format. --_----------=_171437751834000 Content-Disposition: inline Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII" Module Name: pkgsrc Committed By: pho Date: Mon Apr 29 07:58:38 UTC 2024 Modified Files: pkgsrc/mk: haskell.mk Log Message: mk/haskell.mk: Optimization: Try runghc first Compile ./Setup if runghc fails. It's significantly faster this way. To generate a diff of this commit: cvs rdiff -u -r1.66 -r1.67 pkgsrc/mk/haskell.mk Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. --_----------=_171437751834000 Content-Disposition: inline Content-Length: 3571 Content-Transfer-Encoding: binary Content-Type: text/x-diff; charset=us-ascii Modified files: Index: pkgsrc/mk/haskell.mk diff -u pkgsrc/mk/haskell.mk:1.66 pkgsrc/mk/haskell.mk:1.67 --- pkgsrc/mk/haskell.mk:1.66 Sun Apr 28 20:02:21 2024 +++ pkgsrc/mk/haskell.mk Mon Apr 29 07:58:38 2024 @@ -1,4 +1,4 @@ -# $NetBSD: haskell.mk,v 1.66 2024/04/28 20:02:21 pho Exp $ +# $NetBSD: haskell.mk,v 1.67 2024/04/29 07:58:38 pho Exp $ # # This Makefile fragment handles Haskell Cabal packages. Package # configuration, building, installation, registration and unregistration @@ -118,6 +118,7 @@ _DEF_VARS.haskell= \ UNLIMIT_RESOURCES \ _HASKELL_VERSION_CMD \ _HASKELL_BIN \ + _HASKELL_INTERP_BIN \ _HASKELL_GLOBAL_PKG_DB \ _HASKELL_PKG_BIN \ _HASKELL_PKG_DESCR_FILE_OR_DIR \ @@ -175,6 +176,7 @@ HASKELL_UNRESTRICT_DEPENDENCIES?= # empt # Tools _HASKELL_BIN= ${BUILDLINK_PREFIX.ghc:U${PREFIX}}/bin/ghc +_HASKELL_INTERP_BIN= ${BUILDLINK_PREFIX.ghc:U${PREFIX}}/bin/runghc _HASKELL_PKG_BIN= ${BUILDLINK_PREFIX.ghc:U${PREFIX}}/bin/ghc-pkg _HASKELL_VERSION_CMD= ${_HASKELL_BIN} -V 2>/dev/null | ${CUT} -d ' ' -f 8 @@ -186,8 +188,8 @@ _HASKELL_GLOBAL_PKG_DB_CMD= ${_HASKELL_B _HASKELL_GLOBAL_PKG_DB= ${_HASKELL_GLOBAL_PKG_DB_CMD:sh} # 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 +# available. Cabal has to be visible in order to compile (or interpret) +# Setup.hs, but per-user default environment files usually don't mark it as # visible. Tell GHC not to read any environment files. _HASKELL_BUILD_SETUP_OPTS= -package-env - @@ -401,10 +403,10 @@ WARNINGS+= "[haskell.mk] Set HS_UPDATE_P . endif .endif -# Define configure target. We might not have any working Haskell -# interpreter so compile Setup.?hs to a binary. Since dynamic linkage -# is much faster, we try it and then fall back to static linkage if -# that didn't work. +# Define configure target. There are 3 ways to run Setup.hs: [1] interpret +# it with runghc, [2] compile it dynamically, and [3] compile it +# statically. [1] is fastest but is least reliable. [3] is slowest but is +# most reliable. So we try all these 3 ways in this order. do-configure: # Cabal packages are expected to have either Setup.hs or Setup.lhs, # but its existence is not mandatory these days because the standard @@ -422,12 +424,27 @@ do-configure: exit $$ret; \ fi; \ fi - ${RUN} ${_ULIMIT_CMD} cd ${WRKSRC} && \ - ( ${_HASKELL_BIN:Q} ${_HASKELL_BUILD_SETUP_OPTS} --make Setup -dynamic || \ - ${_HASKELL_BIN:Q} ${_HASKELL_BUILD_SETUP_OPTS} --make Setup -static ) - ${RUN} ${_ULIMIT_CMD} cd ${WRKSRC:Q} && \ + ${RUN} set -eu; \ + cd ${WRKSRC:Q}; \ + if ${TEST} -f Setup.hs; then \ + setup_src=Setup.hs; \ + else \ + setup_src=Setup.lhs; \ + fi; \ + if ${SETENV} ${CONFIGURE_ENV} \ + ${_HASKELL_INTERP_BIN} ${_HASKELL_BUILD_SETUP_OPTS:%=--ghc-arg=%} \ + $$setup_src configure ${PKG_VERBOSE:D-v} ${CONFIGURE_ARGS}; then \ + ${ECHO} '#!/bin/sh' > Setup; \ + ${ECHO} 'exec' ${_HASKELL_INTERP_BIN} \ + ${_HASKELL_BUILD_SETUP_OPTS:%=--ghc-arg=%} \ + $$setup_src '"$$@"' >> Setup; \ + ${CHMOD} +x Setup; \ + else \ + ${_HASKELL_BIN:Q} ${_HASKELL_BUILD_SETUP_OPTS} --make Setup -dynamic || \ + ${_HASKELL_BIN:Q} ${_HASKELL_BUILD_SETUP_OPTS} --make Setup -static; \ ${SETENV} ${CONFIGURE_ENV} \ - ./Setup configure ${PKG_VERBOSE:D-v} ${CONFIGURE_ARGS} + ./Setup configure ${PKG_VERBOSE:D-v} ${CONFIGURE_ARGS}; \ + fi # Define build target. _MAKE_JOBS_N is defined in build/build.mk do-build: --_----------=_171437751834000--