lang/ghc: Starting with GHC 9.2.7 switch to the Hadrian build system.

Hadrian is a new build system for GHC which is written in Haskell and requires
bootstrapping process. Ugh. Luckily, we only prepare a source bootstrap
archive as bootstrap GHC has everything needed to build it.

Hadrian also fails to build GHC on i386 so build it the old way for now.
This commit is contained in:
Gleb Popov 2023-04-08 13:57:14 +03:00
parent 809d194919
commit ddc73a4bb4
7 changed files with 5441 additions and 20 deletions

View file

@ -1,5 +1,6 @@
PORTNAME= cabal-install
PORTVERSION= 3.10.1.0
PORTREVISION= 1
CATEGORIES= devel haskell
EXTRACT_ONLY= ${DISTNAME_DEFAULT}${_GITHUB_EXTRACT_SUFX}

View file

@ -1,5 +1,6 @@
PORTNAME= ghc
PORTVERSION= ${GHC_VERSION}
PORTREVISION?= 1
CATEGORIES= lang haskell
MASTER_SITES= https://www.haskell.org/ghc/dist/${PORTVERSION}/:source \
LOCAL/arrowd/:boot
@ -20,6 +21,7 @@ USES= autoreconf compiler:c11 gmake iconv:patch,translit \
GNU_CONFIGURE= yes
CONFIGURE_ARGS+= --docdir=${DOCSDIR}
CONFIGURE_ENV= ALEX=/usr/bin/true HAPPY=/usr/bin/true
INSTALL_TARGET= install-strip
USE_LOCALE= en_US.UTF-8
USE_PERL5= build
@ -43,16 +45,18 @@ PROFILE_DESC= Add support for performance profiling
BOOT_CONFIGURE_ENV= GHC=${LOCALBASE}/bin/ghc
BOOT_CONFIGURE_ENV_OFF= GHC=${BOOT_GHC} LLC=llc${BOOT_LLVM_VERSION} OPT=opt${BOOT_LLVM_VERSION}
DOCS_BUILD_DEPENDS= sphinx-build:textproc/py-sphinx
DOCS_BUILD_DEPENDS= sphinx-build:textproc/py-sphinx \
xelatex:print/tex-xetex \
${LOCALBASE}/share/fonts/dejavu/DejaVuSans.ttf:x11-fonts/dejavu
DOCS_VARS= enable_docs=YES
DOCS_VARS_OFF= enable_docs=NO
DOCS_VARS_OFF= enable_docs=NO hadrian_docs_arg=--docs=none
DYNAMIC_CONFIGURE_WITH= system-libffi \
ffi-includes=${LOCALBASE}/include \
ffi-libraries=${LOCALBASE}/lib
DYNAMIC_LIB_DEPENDS= libffi.so:devel/libffi
DYNAMIC_VARS= enable_dynamic=YES
DYNAMIC_VARS_OFF= enable_dynamic=NO
DYNAMIC_VARS= enable_dynamic=YES hadrian_setting_dynamic=True
DYNAMIC_VARS_OFF= enable_dynamic=NO hadrian_setting_dynamic=False
# do not replace this with GMP_CONFIGURE_WITH
# it adds "--without-gmp-*" when the option is OFF, which results in "no" value
@ -60,15 +64,16 @@ DYNAMIC_VARS_OFF= enable_dynamic=NO
GMP_CONFIGURE_ON= --with-gmp-includes=${LOCALBASE}/include \
--with-gmp-libraries=${LOCALBASE}/lib
GMP_LIB_DEPENDS= libgmp.so:math/gmp
GMP_VARS_OFF= hadrian_gmp_arg=--bignum=native
PROFILE_VARS= enable_profile=YES
PROFILE_VARS_OFF= enable_profile=NO
PROFILE_VARS= enable_profile=YES hadrian_setting_profile=True
PROFILE_VARS_OFF= enable_profile=NO hadrian_setting_profile=False
GHC_VERSION?= 9.2.7
LLVM_VERSION?= 12
BOOT_GHC_VERSION= 8.10.7
BOOT_GHC_VERSION?= 8.10.7
# LLVM version that bootstrap compiler uses
BOOT_LLVM_VERSION= 10
BOOT_LLVM_VERSION?= 10
BASE_PACKAGES?= Cabal-3.6.3.0 array-0.5.4.0 base-4.16.4.0 binary-0.8.9.0 \
bytestring-0.11.4.0 containers-0.6.5.1 deepseq-1.4.6.1 \
@ -99,6 +104,29 @@ BUILD_MK= DYNAMIC_GHC_PROGRAMS=${ENABLE_DYNAMIC} \
.include <bsd.port.pre.mk>
.if ${GHC_VERSION:C/\..*//g} >= 9 && ${ARCH} != i386
# hadrian build on i386 fails due to https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=269570
# relocation R_386_TLS_LE cannot be used with -shared
USE_HADRIAN= yes
.endif
.ifdef USE_HADRIAN
LIB_DEPENDS+= libffi.so:devel/libffi
.undef DYNAMIC_CONFIGURE_WITH
CONFIGURE_ARGS+= --with-system-libffi --with-ffi-includes=${LOCALBASE}/include --with-ffi-libraries=${LOCALBASE}/lib
SHEBANG_FILES+= hadrian/bootstrap/bootstrap.py
HADRIAN_CMD= ${WRKSRC}/hadrian/bootstrap/_build/bin/hadrian ${HADRIAN_DOCS_ARG} ${HADRIAN_GMP_ARG}
DO_MAKE_BUILD= ${SETENV} ${MAKE_ENV} ${HADRIAN_CMD} ${_MAKE_JOBS} --flavour=ports
ALL_TARGET= binary-dist-dir
INSTALL_WRKSRC= ${WRKSRC}/_build/bindist/ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-freebsd
INSTALL_TARGET= install
PLIST= ${.CURDIR}/pkg-plist.hadrian
. if (empty(PORT_OPTIONS:MDYNAMIC) || empty(PORT_OPTIONS:MPROFILE))
IGNORE= Building with Hadrian requires both DYNAMIC and PROFILE for now
. endif
.endif
.if ${SLAVE_PORT} != "yes"
PORTDOCS= *
.endif
@ -115,6 +143,9 @@ BUILD_DEPENDS+= ${LOCALBASE}/lib/compat/libncursesw.so.8:misc/compat12x
.if empty(PORT_OPTIONS:MBOOT)
DISTFILES+= ghc-${BOOT_GHC_VERSION}-boot-${ARCH}-freebsd${EXTRACT_SUFX}:boot
. if !defined(IGNORE_MISSING_HADRIAN) && defined(USE_HADRIAN)
DISTFILES+= hadrian-${GHC_VERSION}-boot.tar.gz:boot
. endif
.endif # MBOOT
.if ${ARCH} == aarch64 || ${ARCH:Marmv*}
@ -138,6 +169,11 @@ post-patch:
.for line in ${BUILD_MK}
${ECHO_CMD} ${line} >> ${WRKSRC}/mk/build.mk
.endfor
.ifdef USE_HADRIAN
${SED} -e 's|%%DYNAMIC%%|${HADRIAN_SETTING_DYNAMIC}|' \
-e 's|%%PROFILE%%|${HADRIAN_SETTING_PROFILE}|' \
${PATCHDIR}/UserSettings.hs > ${WRKSRC}/hadrian/src/UserSettings.hs
.endif
# TODO: remove this after rerolling all bootstraps
post-patch-BOOT-off:
@ -154,11 +190,28 @@ pre-configure:
cd ${BOOT_DIR} && ${CONFIGURE_ENV} ${CONFIGURE_CMD} --prefix=${BOOT_DIR}
cd ${BOOT_DIR} && PACKAGES='' ${MAKE_CMD} install
.endif
.ifdef USE_HADRIAN
# Compile Hadrian
cd ${WRKSRC}/hadrian/bootstrap && \
./bootstrap.py -w ${BOOT_GHC} -s ${DISTDIR}/hadrian-${GHC_VERSION}-boot.tar.gz
.endif
.ifdef USE_HADRIAN
pre-install:
cd ${INSTALL_WRKSRC} && ${CONFIGURE_ENV} ${CONFIGURE_CMD} --prefix=${PREFIX}
.endif
post-install:
${FIND} ${STAGEDIR}${DOCSDIR}/html -name .buildinfo -delete
.ifdef USE_HADRIAN
# Hadrian doesn't have --docdir
${MV} ${STAGEDIR}${DOCSDIR}-${GHC_VERSION} ${STAGEDIR}${DOCSDIR}
# These includes are duplicated in lib/ghc-X.Y.Z/lib/<triple>/rts-X.Y.Z/include
${RM} -r ${STAGEDIR}${PREFIX}/include/*
.endif
${FIND} ${STAGEDIR}${DOCSDIR} -name .buildinfo -delete
# For some reason, INSTALL_TARGET=install-strip doesn't cause libraries to be stripped
# Run strip on them manually
${FIND} ${STAGEDIR}${PREFIX}/lib/ghc-${GHC_VERSION} -type f -perm +111 -exec ${STRIP_CMD} {} +
${FIND} ${STAGEDIR}${PREFIX}/lib/ghc-${GHC_VERSION} -name '*.so' -exec ${STRIP_CMD} {} +
${RM} ${STAGEDIR}${PREFIX}/bin/haddock
.if ${SLAVE_PORT} == "yes"
@ -189,34 +242,78 @@ fixup-plist:
# Set all OPTIONS to OFF when generating bootstraps
.PHONY: create-bootstrap
create-bootstrap:
.ifndef USE_HADRIAN
cd ${WRKSRC} \
&& ${ECHO} "BIN_DIST_NAME=ghc-${GHC_VERSION}-boot" >> mk/build.mk \
&& ${ECHO} "BIN_DIST_TAR=ghc-${GHC_VERSION}-boot.tar" >> mk/build.mk \
&& ${ECHO} "HADDOCK_DOCS=NO" >> mk/build.mk \
&& ${ECHO_CMD} "BIN_DIST_NAME=ghc-${GHC_VERSION}-boot" >> mk/build.mk \
&& ${ECHO_CMD} "BIN_DIST_TAR=ghc-${GHC_VERSION}-boot.tar" >> mk/build.mk \
&& ${ECHO_CMD} "HADDOCK_DOCS=NO" >> mk/build.mk \
&& ${GMAKE} binary-dist TAR_COMP=xz \
&& ${MV} ${WRKSRC}/ghc-${GHC_VERSION}-boot-${GHC_ARCH}-portbld-freebsd.tar.xz /tmp/ghc-${GHC_VERSION}-boot-${ARCH}-freebsd.tar.xz
.else
cd ${WRKSRC} \
&& ${HADRIAN_CMD} binary-dist-xz \
&& ${MV} ${WRKSRC}/_build/bindist/ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-freebsd.tar.xz /tmp/ghc-${GHC_VERSION}-boot-${ARCH}-freebsd.tar.xz
.endif
cd /tmp \
@cd /tmp \
&& sha256 ghc-${GHC_VERSION}-boot-${ARCH}-freebsd.tar.xz \
&& ${ECHO} -n "SIZE (ghc-${GHC_VERSION}-boot-${ARCH}-freebsd.tar.xz) = " \
&& ${ECHO_CMD} -n "SIZE (ghc-${GHC_VERSION}-boot-${ARCH}-freebsd.tar.xz) = " \
&& ${STAT} -f %z ghc-${GHC_VERSION}-boot-${ARCH}-freebsd.tar.xz
# Much like create-bootstrap, just different naming and output format
# Set DYNAMIC, GMP and PROFILE to ON, and DOCS to OFF when generating Stack bindist
.PHONY: create-stack-bindist
create-stack-bindist:
.ifndef USE_HADRIAN
cd ${WRKSRC} \
&& ${GMAKE} binary-dist TAR_COMP=xz \
&& ${MV} ${WRKSRC}/ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-freebsd.tar.xz /tmp/
.else
cd ${WRKSRC} \
&& ${HADRIAN_CMD} binary-dist-xz \
&& ${MV} ${WRKSRC}/_build/bindist/ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-freebsd.tar.xz /tmp/
.endif
cd /tmp \
&& ${ECHO} "${GHC_VERSION}:" \
&& ${ECHO} "url: \"http://distcache.FreeBSD.org/local-distfiles/arrowd/stack-bindists/ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-freebsd.tar.xz\"" \
&& ${ECHO} -n "content-length: " \
&& ${ECHO_CMD} "${GHC_VERSION}:" \
&& ${ECHO_CMD} "url: \"http://distcache.FreeBSD.org/local-distfiles/arrowd/stack-bindists/ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-freebsd.tar.xz\"" \
&& ${ECHO_CMD} -n "content-length: " \
&& ${STAT} -f %z ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-freebsd.tar.xz \
&& ${ECHO} -n "sha1: " \
&& ${ECHO_CMD} -n "sha1: " \
&& sha1 -q ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-freebsd.tar.xz \
&& ${ECHO} -n "sha256: " \
&& ${ECHO_CMD} -n "sha256: " \
&& sha256 -q ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-freebsd.tar.xz
.PHONY: create-hadrian-bootstrap
create-hadrian-bootstrap:
.if !empty(PORT_OPTIONS:MBOOT)
@${ECHO_CMD} "Generating Hadrian bootstrap without bootstrap GHC isn't supported"
${FALSE}
.endif
${MAKE} -C ${.CURDIR} patch build-depends IGNORE_MISSING_HADRIAN=yes
# We always would need to create our own plan.json file and put it into PATCHDIR:
# Predefined plans use integer-gmp, while we build bootstraps with integer-simple
# Predefined plans aren't pretty-printed, so we can't easily patch them
cd ${WRKSRC}/hadrian/bootstrap && \
./bootstrap.py -w ${BOOT_GHC} --deps ${PATCHDIR}/plan-bootstrap-${BOOT_GHC_VERSION:C/\./_/g}.json fetch -o /tmp/hadrian-${GHC_VERSION}-boot
@cd /tmp \
&& sha256 hadrian-${GHC_VERSION}-boot.tar.gz \
&& ${ECHO_CMD} -n "SIZE (hadrian-${GHC_VERSION}-boot.tar.gz) = " \
&& ${STAT} -f %z hadrian-${GHC_VERSION}-boot.tar.gz
@${ECHO_CMD}
@${ECHO_CMD} "Remember to check that hadrian bootstrap builds fine by running \"make check-hadrian-bootstrap\""
.PHONY: check-hadrian-bootstrap
check-hadrian-bootstrap:
.if !empty(PORT_OPTIONS:MBOOT)
@${ECHO_CMD} "Generating Hadrian bootstrap without bootstrap GHC isn't supported"
${FALSE}
.endif
# Install bootstrap GHC
${MAKE} -C ${.CURDIR} pre-configure
# Compile Hadrian
cd ${WRKSRC}/hadrian/bootstrap && \
./bootstrap.py -w ${BOOT_GHC} -s /tmp/hadrian-${GHC_VERSION}-boot.tar.gz
.include <bsd.port.post.mk>

View file

@ -3,6 +3,10 @@ SHA256 (ghc-9.2.7-src.tar.xz) = a253567a17b734a4c0dd0ffa296d33c2a5b5a54a77df9888
SIZE (ghc-9.2.7-src.tar.xz) = 24610432
SHA256 (ghc-8.10.7-src.tar.xz) = e3eef6229ce9908dfe1ea41436befb0455fefb1932559e860ad4c606b0d03c9d
SIZE (ghc-8.10.7-src.tar.xz) = 19932668
SHA256 (hadrian-9.2.7-boot.tar.gz) = e332380ecf69fee189e6d9bc305435954c0b93427ad52bf0da0b9539b6461e54
SIZE (hadrian-9.2.7-boot.tar.gz) = 1472978
SHA256 (ghc-9.2.7-boot-amd64-freebsd.tar.xz) = 97a5e4b9974086db535e36da44d0dec5ddf5557983cf97d1d5ef7acc9e00cfbc
SIZE (ghc-9.2.7-boot-amd64-freebsd.tar.xz) = 118525952
SHA256 (ghc-8.10.7-boot-amd64-freebsd.tar.xz) = 5adfeceee2c3aa1208da174390cbb8e8c1d0a333b7c4a3a676a63f93beaf3126
SIZE (ghc-8.10.7-boot-amd64-freebsd.tar.xz) = 70607916
SHA256 (ghc-8.10.7-boot-i386-freebsd.tar.xz) = d841a6abf2b97e34feb9c71a85520a78dd667bfb6d6a7f401fa8a92b558928dc

View file

@ -0,0 +1,74 @@
-- Ensure we don't expose any unfoldings to guarantee quick rebuilds
{-# OPTIONS_GHC -O0 #-}
-- If you want to customise your build you should copy this file from
-- hadrian/src/UserSettings.hs to hadrian/UserSettings.hs and edit your copy.
-- If you don't copy the file your changes will be tracked by git and you can
-- accidentally commit them.
--
-- See doc/user-settings.md for instructions, and src/Flavour.hs for auxiliary
-- functions for manipulating flavours.
-- Please update doc/user-settings.md when committing changes to this file.
module UserSettings (
userFlavours, userPackages, userDefaultFlavour,
verboseCommand, buildProgressColour, successColour, finalStage
) where
import Flavour
import Expression
import {-# SOURCE #-} Settings.Default
-- See doc/user-settings.md for instructions.
-- Please update doc/user-settings.md when committing changes to this file.
-- | Name of the default flavour, i.e the one used when no --flavour=<name>
-- argument is passed to Hadrian.
userDefaultFlavour :: String
userDefaultFlavour = "default"
-- | User-defined build flavours. See 'userFlavour' as an example.
userFlavours :: [Flavour]
userFlavours = [userFlavour] -- Add more build flavours if need be.
-- | This is an example user-defined build flavour. Feel free to modify it and
-- use by passing @--flavour=user@ from the command line.
userFlavour :: Flavour
userFlavour = defaultFlavour {
name = "ports"
, libraryWays = remove ws defaultLibraryWays
, dynamicGhcPrograms = pure %%DYNAMIC%%
-- , ghcProfiled = %%PROFILE%%
}
where
ws = concat [
if %%DYNAMIC%% then [] else [dynamic]
, if %%PROFILE%% then [] else [profiling]]
-- | Add user-defined packages. Note, this only lets Hadrian know about the
-- existence of a new package; to actually build it you need to create a new
-- build flavour, modifying the list of packages that are built by default.
userPackages :: [Package]
userPackages = []
-- | Set to 'True' to print full command lines during the build process. Note:
-- this is a 'Predicate', hence you can enable verbose output only for certain
-- targets, e.g.: @verboseCommand = package ghcPrim@.
verboseCommand :: Predicate
verboseCommand = do
verbosity <- expr getVerbosity
return $ verbosity >= Loud
-- | Set colour for build progress messages (e.g. executing a build command).
buildProgressColour :: BuildProgressColour
buildProgressColour = mkBuildProgressColour (Dull Magenta)
-- | Set colour for success messages (e.g. a package is built successfully).
successColour :: SuccessColour
successColour = mkSuccessColour (Dull Green)
-- | Stop after building the StageN compiler.
-- For example, setting the 'finalStage' to 'Stage1' will just build the
-- 'Stage1' compiler. Setting it to 'Stage3' will build the 'Stage3'
-- compiler. Setting it to 'Stage0' will mean nothing gets built at all.
finalStage :: Stage
finalStage = Stage2

View file

@ -0,0 +1,255 @@
{
"dependencies": [
{
"source": "hackage",
"cabal_sha256": "fc3aae74c467f4b608050bef53aec17904a618731df9407e655d8f3bf8c32d5c",
"revision": 0,
"src_sha256": "46009f4b000c9e6613377767b8718bf38476469f2a8e2162d98cc246882d5a35",
"flags": [
"-optimised-mixer"
],
"package": "splitmix",
"version": "0.1.0.3"
},
{
"source": "hackage",
"cabal_sha256": "195506fedaa7c31c1fa2a747e9b49b4a5d1f0b09dd8f1291f23a771656faeec3",
"revision": 6,
"src_sha256": "e4519cf7c058bfd5bdbe4acc782284acc9e25e74487208619ca83cbcd63fb9de",
"flags": [],
"package": "random",
"version": "1.2.0"
},
{
"source": "hackage",
"cabal_sha256": "4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa",
"revision": 0,
"src_sha256": "d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3",
"flags": [
"-old-random",
"+templatehaskell"
],
"package": "QuickCheck",
"version": "2.14.2"
},
{
"source": "hackage",
"cabal_sha256": "473ffd59765cc67634bdc55b63c699a85addf3a024089073ec2a862881e83e2a",
"revision": 0,
"src_sha256": "0b5db110c703e68b251d5883253a934b012110b45393fc65df1b095eb9a4e461",
"flags": [
"-llvm"
],
"package": "clock",
"version": "0.8.2"
},
{
"source": "hackage",
"cabal_sha256": "f1dec740f0f2025790c540732bfd52c556ec55bde4f5dfd7cf18e22bd44ff3d0",
"revision": 0,
"src_sha256": "f66e26a63b216f0ca33665a75c08eada0a96af192ace83a18d87839d79afdf9d",
"flags": [],
"package": "extra",
"version": "1.7.9"
},
{
"source": "hackage",
"cabal_sha256": "aec816ff25418d1b03ba75189e568f490eb86efc47f586d43363fa338e422e81",
"revision": 0,
"src_sha256": "d92912ee0db0b8c50d6b2ffdc1ae91ee30e2704b47896aa325b42b58a2fcf65b",
"flags": [],
"package": "filepattern",
"version": "0.1.2"
},
{
"source": "hackage",
"cabal_sha256": "d965e098e06cc585b201da6137dcb31c40f35eb7a937b833903969447985c076",
"revision": 0,
"src_sha256": "8061823a4ac521b53912edcba36b956f3159cb885b07ec119af295a6568ca7c4",
"flags": [
"-integer-gmp"
],
"package": "hashable",
"version": "1.3.1.0"
},
{
"source": "hackage",
"cabal_sha256": "66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8",
"revision": 0,
"src_sha256": "89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd",
"flags": [],
"package": "heaps",
"version": "0.4"
},
{
"source": "hackage",
"cabal_sha256": "f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4",
"revision": 0,
"src_sha256": "e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac",
"flags": [],
"package": "js-dgtable",
"version": "0.5.2"
},
{
"source": "hackage",
"cabal_sha256": "4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d",
"revision": 0,
"src_sha256": "1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a",
"flags": [],
"package": "js-flot",
"version": "0.8.3"
},
{
"source": "hackage",
"cabal_sha256": "59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5",
"revision": 0,
"src_sha256": "e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b",
"flags": [],
"package": "js-jquery",
"version": "3.3.1"
},
{
"source": "hackage",
"cabal_sha256": "29de6bfd0cf8ba023ceb806203dfbec0e51e3524e75ffe41056f70b4229c6f0f",
"revision": 3,
"src_sha256": "6bebecfdf2a57787d9fd5231bfd612b65a92edd7b33a973b2a0f11312b89a3f0",
"flags": [],
"package": "primitive",
"version": "0.7.1.0"
},
{
"source": "hackage",
"cabal_sha256": "6310c636f92ed4908fdd0de582b6be31c2851c7b5f2ec14e9f416eb94df7a078",
"revision": 0,
"src_sha256": "86b01369ab8eb311383a052d389337e2cd71a63088323f02932754df4aa37b55",
"flags": [
"-debug"
],
"package": "unordered-containers",
"version": "0.2.13.0"
},
{
"source": "hackage",
"cabal_sha256": "79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f",
"revision": 0,
"src_sha256": "ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a",
"flags": [],
"package": "utf8-string",
"version": "1.0.2"
},
{
"source": "hackage",
"cabal_sha256": "be81f7c69137e639812380047dfbbdd253ca536cc919504c3bc0f14517e80eb9",
"revision": 0,
"src_sha256": "5bae8873f628113604159f650802edb249dfbe5802c4612751f680ac987d73ee",
"flags": [
"-cloud",
"-embed-files",
"-portable"
],
"package": "shake",
"version": "0.19.4"
},
{
"source": "local",
"cabal_sha256": null,
"revision": null,
"src_sha256": null,
"flags": [
"+threaded"
],
"package": "hadrian",
"version": "0.1.0.0"
}
],
"builtin": [
{
"package": "rts",
"version": "1.0.1"
},
{
"package": "ghc-prim",
"version": "0.6.1"
},
{
"package": "integer-simple",
"version": "0.1.2.0"
},
{
"package": "base",
"version": "4.14.3.0"
},
{
"package": "array",
"version": "0.5.4.0"
},
{
"package": "deepseq",
"version": "1.4.4.0"
},
{
"package": "bytestring",
"version": "0.10.12.0"
},
{
"package": "containers",
"version": "0.6.5.1"
},
{
"package": "binary",
"version": "0.8.8.0"
},
{
"package": "filepath",
"version": "1.4.2.1"
},
{
"package": "time",
"version": "1.9.3"
},
{
"package": "unix",
"version": "2.7.2.2"
},
{
"package": "directory",
"version": "1.3.6.0"
},
{
"package": "transformers",
"version": "0.5.6.2"
},
{
"package": "mtl",
"version": "2.2.2"
},
{
"package": "ghc-boot-th",
"version": "8.10.7"
},
{
"package": "pretty",
"version": "1.1.3.6"
},
{
"package": "template-haskell",
"version": "2.16.0.0"
},
{
"package": "text",
"version": "1.2.4.1"
},
{
"package": "parsec",
"version": "3.1.14.0"
},
{
"package": "process",
"version": "1.6.13.2"
},
{
"package": "Cabal",
"version": "3.2.1.0"
}
]
}

4990
lang/ghc/pkg-plist.hadrian Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,4 +1,4 @@
PORTREVISION= 1
PORTREVISION= 2
PKGNAMESUFFIX= 810
LIB_DEPENDS= ${GMP_LIB_DEPENDS}