diff --git a/lang/ghc/Makefile b/lang/ghc/Makefile index 37b610987ff7..229b48d08b2e 100644 --- a/lang/ghc/Makefile +++ b/lang/ghc/Makefile @@ -1,275 +1,267 @@ # Created by: Simon Marlow PORTNAME= ghc PORTVERSION= ${GHC_VERSION} CATEGORIES= lang haskell MASTER_SITES= https://www.haskell.org/ghc/dist/${PORTVERSION}/:source \ LOCAL/arrowd/:boot \ https://hackage.haskell.org/package/hscolour-${HSCOLOUR_VERSION}/:docs DISTFILES= ghc-${PORTVERSION}-src${EXTRACT_SUFX}:source \ hscolour-${HSCOLOUR_VERSION}.tar.gz:docs EXTRACT_ONLY= ${_DISTFILES:C/hscolour.*$//g} MAINTAINER= haskell@FreeBSD.org COMMENT= Compiler for the functional language Haskell LICENSE= BSD3CLAUSE LICENSE_FILE= ${WRKSRC}/LICENSE ONLY_FOR_ARCHS= amd64 i386 aarch64 armv6 armv7 powerpc64 USES= autoreconf compiler:c11 gmake iconv:patch,translit \ localbase:ldflags ncurses perl5 tar:xz USE_LOCALE= en_US.UTF-8 USE_PERL5= build GNU_CONFIGURE= yes CONFIGURE_ENV= PATH=${SLAVES_PREFIX}/bin:${PATH} MAKE_ENV= PATH=${SLAVES_PREFIX}/bin:${PATH} SUB_FILES= build.mk SUB_LIST= GHC_VERSION=${GHC_VERSION} \ NCURSESINC="${NCURSESBASE}/include" NCURSESLIB="${NCURSESLIB}" \ CFLAGS="${CFLAGS}" OPTIONS_GROUP= BOOTSTRAP BOOTSTRAP_DESC= Bootsrap using installed ghc OPTIONS_GROUP_BOOTSTRAP=BOOT OPTIONS_DEFINE= DYNAMIC GMP PROFILE DOCS OPTIONS_SUB= yes OPTIONS_DEFAULT= DYNAMIC PROFILE GMP BOOT_DESC= Use installed GHC for bootstrapping DOCS_DESC= Install HTML documentation DYNAMIC_DESC= Add support for dynamic linking GMP_DESC= Use GNU Multi-precision Library for big integers support PROFILE_DESC= Add support for performance profiling DOCS_BUILD_DEPENDS= sphinx-build:textproc/py-sphinx DYNAMIC_CONFIGURE_WITH= system-libffi \ ffi-includes=${LOCALBASE}/include \ ffi-libraries=${LOCALBASE}/lib DYNAMIC_LIB_DEPENDS= libffi.so:devel/libffi DYNAMIC_SUB_LIST= WITH_DYNAMIC="YES" DYNAMIC_SUB_LIST_OFF= WITH_DYNAMIC="NO" DYNAMIC_PLIST_SUB= NODYNAMIC="@comment " DYNAMIC_PLIST_SUB_OFF= NODYNAMIC="" GMP_CONFIGURE_WITH= gmp-includes=${LOCALBASE}/include \ gmp-libraries=${LOCALBASE}/lib GMP_LIB_DEPENDS= libgmp.so:math/gmp GMP_SUB_LIST= INTEGER_LIBRARY="integer-gmp" GMP_SUB_LIST_OFF= INTEGER_LIBRARY="integer-simple" GMP_PLIST_SUB= GMP="" SIMPLE="@comment " GMP_PLIST_SUB_OFF= GMP="@comment " SIMPLE="" # Append substitutions for build.mk BOOT_SUB_LIST= HSC2HS=${LOCALBASE}/bin/hsc2hs BOOT_SUB_LIST_OFF= HSC2HS=${BOOT_HSC2HS} PROFILE_SUB_LIST= WITH_PROFILE="YES" PROFILE_SUB_LIST_OFF= WITH_PROFILE="NO" GHC_VERSION= 8.10.7 CABAL_VERSION= 3.2.1.0 HSCOLOUR_VERSION= 1.24.4 LLVM_VERSION= 10 # LLVM version that bootstrap compiler uses -BOOT_LLVM_VERSION= 90 +BOOT_LLVM_VERSION= 10 PLIST_SUB= GHC_VERSION=${GHC_VERSION} CABAL_VERSION=${CABAL_VERSION} PORTDOCS= * .include CONFIGURE_TARGET= ${GHC_ARCH}-portbld-${OPSYS:tl} # This version of ncurses is needed by bootstrap compiler .if ${OSVERSION} > 1300078 && empty(PORT_OPTIONS:MBOOT) && ${ARCH} != powerpc64 BUILD_DEPENDS+= ${LOCALBASE}/lib/compat/libncursesw.so.8:misc/compat12x .endif .if ${ARCH} == powerpc64 || ${OSVERSION} >= 1400018 CONFIGURE_ARGS+= --enable-dtrace=0 .endif .if defined(PPC_ABI) && ${PPC_ABI} == ELFv1 BOOT_GHC_VERSION= 8.6.3 .elif ${ARCH} == aarch64 || ${ARCH:Marmv*} -BOOT_GHC_VERSION= 8.10.4 +BOOT_GHC_VERSION= 8.10.7 .else BOOT_GHC_VERSION= 8.6.5 .endif NO_CCACHE= ccache: error: Failed to create directory /nonexistent/.ccache/tmp: Permission denied DOCSDIR= ${PREFIX}/share/doc/${DISTNAME} DATADIR= ${PREFIX}/share/ghc-${GHC_VERSION} EXAMPLESDIR= ${PREFIX}/share/examples/ghc-${GHC_VERSION} GHC_ARCH= ${ARCH:S/amd64/x86_64/:C/armv.*/arm/} GHC_LIBDIR= ${STAGEDIR}${PREFIX}/lib/ghc-${GHC_VERSION} GHC_LIBDIR_REL= lib/ghc-${GHC_VERSION} _EXECUTABLES= ${GHC_LIBDIR}/bin/unlit \ ${GHC_LIBDIR}/bin/hpc \ ${GHC_LIBDIR}/bin/ghc-iserv \ ${GHC_LIBDIR}/bin/ghc-pkg \ ${GHC_LIBDIR}/bin/hsc2hs \ ${GHC_LIBDIR}/bin/runghc \ ${GHC_LIBDIR}/bin/ghc \ ${GHC_LIBDIR}/bin/haddock \ ${GHC_LIBDIR}/bin/hp2ps .if ${PORT_OPTIONS:MPROFILE} _EXECUTABLES+= ${GHC_LIBDIR}/bin/ghc-iserv-prof .endif .if ${PORT_OPTIONS:MDYNAMIC} _EXECUTABLES+= ${GHC_LIBDIR}/bin/ghc-iserv-dyn .endif .if empty(PORT_OPTIONS:MBOOT) BOOTSTRAPS_SUFFIX?= ${BOOTSTRAPS_SUFFIX_${ARCH}} BOOTSTRAPS_SUFFIX_powerpc64?= -${PPC_ABI:tl} DISTFILES+= ghc-${BOOT_GHC_VERSION}-boot-${ARCH}-freebsd${BOOTSTRAPS_SUFFIX}${EXTRACT_SUFX}:boot .endif # MBOOT .if ${ARCH} == aarch64 || ${ARCH:Marmv*} # ghc-8.10.x on arm requires devel/llvm10 # CONFIGURE_TARGET must to be the same as the llvm triple CONFIGURE_TARGET= ${ARCH}-unknown-freebsd${"${ARCH:Maarch64}" != "":?:-gnueabihf} -EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-aclocal.m4 +CONFIGURE_ARGS+= --host=${CONFIGURE_TARGET} BUILD_DEPENDS+= llc${LLVM_VERSION}:devel/llvm${LLVM_VERSION} RUN_DEPENDS+= llc${LLVM_VERSION}:devel/llvm${LLVM_VERSION} -CONFIGURE_ENV+= LLC=llc${LLVM_VERSION} \ - OPT=opt${LLVM_VERSION} \ - CLANG=clang${LLVM_VERSION} \ - CC=clang${LLVM_VERSION} # When GHC being compiled and GHC used for bootstrapping support different # LLVM versions, we have to pull in both. Luckily, this is relatively rare. . if ${BOOT_LLVM_VERSION} != ${LLVM_VERSION} BUILD_DEPENDS+= llc${BOOT_LLVM_VERSION}:devel/llvm${BOOT_LLVM_VERSION} -CONFIGURE_ENV_BOOTSTRAP=LLC=llc${BOOT_LLVM_VERSION} \ - OPT=opt${BOOT_LLVM_VERSION} \ - CLANG=clang${BOOT_LLVM_VERSION} \ - CC=clang${BOOT_LLVM_VERSION} . endif .endif .if ${ARCH} == aarch64 || ${ARCH:Marmv*} || ${ARCH} == powerpc64 . ifdef QEMU_EMULATING IGNORE= qemu-user-static isn't able to build lang/ghc, but it builds fine on a real hardware . endif .endif .if empty(PORT_OPTIONS:MBOOT) BOOT_DIR= ${WRKDIR}/ghc-${BOOT_GHC_VERSION}-boot BOOT_GHC= ${BOOT_DIR}/bin/ghc-${BOOT_GHC_VERSION} BOOT_GHC-PKG= ${BOOT_DIR}/bin/ghc-pkg-${BOOT_GHC_VERSION} BOOT_HSC2HS= ${BOOT_DIR}/bin/hsc2hs SLAVE_ENV= ${SETENV} PATH=${BOOT_DIR}/bin:${PATH} CONFIGURE_ARGS+= GHC=${BOOT_GHC} .else # MBOOT SLAVE_ENV= # empty CONFIGURE_ARGS+= GHC=${LOCALBASE}/bin/ghc .endif # MBOOT SLAVES_PREFIX= ${WRKDIR}/slaves_prefix SLAVES_WRKDIRPREFIX= ${WRKDIR}/slaves_wrkdirprefix post-patch: .if empty(PORT_OPTIONS:MBOOT) @${REINPLACE_CMD} -e '/^mandir/d' ${BOOT_DIR}/mk/build.mk @${REINPLACE_CMD} -e '/^infodir/d' ${BOOT_DIR}/mk/build.mk @${REINPLACE_CMD} -e '/^docdir/d' ${BOOT_DIR}/mk/build.mk @${REINPLACE_CMD} -e '/^htmldir/d' ${BOOT_DIR}/mk/build.mk .endif .if ${ARCH} == powerpc64 && ${PPC_ABI} == ELFv2 @${REINPLACE_CMD} -e 's/ELF_V1/ELF_V2/' \ ${WRKSRC}/configure ${WRKSRC}/aclocal.m4 .endif pre-configure: # Copy the subbed build.mk to the proper position ${CP} ${WRKDIR}/build.mk ${WRKSRC}/mk/build.mk # If we are using bootstrap compiler, configure and install it into ${BOOT_DIR} .if empty(PORT_OPTIONS:MBOOT) cd ${BOOT_DIR} && ${CONFIGURE_ENV} ${CONFIGURE_ENV_BOOTSTRAP} ${CONFIGURE_CMD} --prefix=${BOOT_DIR} cd ${BOOT_DIR} && PACKAGES='' ${MAKE_CMD} install .else # otherwise, make sure we have "ghc" in PATH if ! ${WHICH} -s ghc ; then \ echo "No 'ghc' executable is found in your PATH! Turn off BOOT option." ; false ; \ fi .endif # If DOCS are set, install HsColour in-place .if ${PORT_OPTIONS:MDOCS} ${MKDIR} ${SLAVES_PREFIX} ${MKDIR} ${SLAVES_WRKDIRPREFIX} cd ${SLAVES_WRKDIRPREFIX} && \ ${TAR} xvf ${DISTDIR}/hscolour-${HSCOLOUR_VERSION}.tar.gz && \ cd hscolour-${HSCOLOUR_VERSION} && \ ${SLAVE_ENV} ghc --make -o Setup Setup.hs -package Cabal && \ ${SLAVE_ENV} ./Setup configure --ghc --prefix=${SLAVES_PREFIX} --with-gcc=${CC} --with-ld=${LD} && \ ${SLAVE_ENV} ./Setup build && \ ${SLAVE_ENV} ./Setup install .endif post-install: (for f in ${_EXECUTABLES} $$(${FIND} ${GHC_LIBDIR} -name '*.so*'); do \ ${STRIP_CMD} $$f; done) ${RM} -r ${STAGEDIR}${DOCSDIR}/html/haddock/.build-html ${RM} ${STAGEDIR}${PREFIX}/bin/haddock .PHONY: fixup-plist fixup-plist: ${BOOT_DIR}/bin/runhaskell ${PATCHDIR}/fixup-plist.hs ${.CURDIR}/pkg-plist # Create a bootstrap compiler tar ball: run this in an interactive poudriere jail # Set all OPTIONS to OFF when generating bootstraps .PHONY: create-bootstrap create-bootstrap: 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 \ && ${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 cd /tmp \ && sha256 ghc-${GHC_VERSION}-boot-${ARCH}-freebsd.tar.xz \ && ${ECHO} -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: ${REINPLACE_CMD} -e '/^mandir/d' \ -e '/^infodir/d' \ -e '/^docdir/d' \ -e '/^htmldir/d' \ ${WRKSRC}/mk/build.mk cd ${WRKSRC} \ && ${GMAKE} binary-dist TAR_COMP=xz \ && ${MV} ${WRKSRC}/ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-freebsd.tar.xz /tmp/ 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: " \ && ${STAT} -f %z ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-freebsd.tar.xz \ && ${ECHO} -n "sha1: " \ && sha1 -q ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-freebsd.tar.xz \ && ${ECHO} -n "sha256: " \ && sha256 -q ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-freebsd.tar.xz .include diff --git a/lang/ghc/distinfo b/lang/ghc/distinfo index c13c0dc5c125..fb17ff9cd026 100644 --- a/lang/ghc/distinfo +++ b/lang/ghc/distinfo @@ -1,23 +1,27 @@ TIMESTAMP = 1630228369 SHA256 (ghc-8.10.7-src.tar.xz) = e3eef6229ce9908dfe1ea41436befb0455fefb1932559e860ad4c606b0d03c9d SIZE (ghc-8.10.7-src.tar.xz) = 19932668 SHA256 (ghc-8.6.5-boot-amd64-freebsd.tar.xz) = aeaf8c0fee0d83de5088aa7ab92e92ee6999b4830e01e33bf3dd450b115c0208 SIZE (ghc-8.6.5-boot-amd64-freebsd.tar.xz) = 70213260 SHA256 (ghc-8.6.5-boot-i386-freebsd.tar.xz) = 47cc24cdcfa19601bb81a7f5660d1d72fec1110119e8ffe1daa0cddc7959206f SIZE (ghc-8.6.5-boot-i386-freebsd.tar.xz) = 67522080 SHA256 (ghc-8.6.5-boot-amd64-freebsd11.tar.xz) = 07d4c54a70900128e24b5dd9b22d929ddcf530d911a8be93e694cd9a721f458a SIZE (ghc-8.6.5-boot-amd64-freebsd11.tar.xz) = 68965716 SHA256 (ghc-8.6.5-boot-i386-freebsd11.tar.xz) = cd208fbb6b2a158ff8c5d6227e0babd8c224867ea301abf970dc446f04c9e95f SIZE (ghc-8.6.5-boot-i386-freebsd11.tar.xz) = 67439136 -SHA256 (ghc-8.10.4-boot-aarch64-freebsd.tar.xz) = f5739647d97c0f2b217bd8cb01a40a38b5659e1743cf97d1f55c8c8536d4e6e9 -SIZE (ghc-8.10.4-boot-aarch64-freebsd.tar.xz) = 121587472 SHA256 (ghc-8.10.4-boot-armv6-freebsd.tar.xz) = 04b207b787bdff71028b8d4c311a47105d7b098809e8fd21b788b1ab0dccdf22 SIZE (ghc-8.10.4-boot-armv6-freebsd.tar.xz) = 148679080 SHA256 (ghc-8.10.4-boot-armv7-freebsd.tar.xz) = db94e69b83a93fba9c136e890ccb0bf76b6d163ac3979dadb1568e81c3267744 SIZE (ghc-8.10.4-boot-armv7-freebsd.tar.xz) = 149265452 SHA256 (ghc-8.6.5-boot-powerpc64-freebsd-elfv2.tar.xz) = 89dfbfab84aef489ca9d0ff6fdf97152cff2412f6a8b9b1e57025b2019908318 SIZE (ghc-8.6.5-boot-powerpc64-freebsd-elfv2.tar.xz) = 113782560 SHA256 (ghc-8.6.3-boot-powerpc64-freebsd-elfv1.tar.xz) = fb9bd4bad3a54722b7012c0a531cbdfe71b3b20a0b92cbd52195a526dc5ccde4 SIZE (ghc-8.6.3-boot-powerpc64-freebsd-elfv1.tar.xz) = 112652192 +SHA256 (ghc-8.10.7-boot-aarch64-freebsd.tar.xz) = 9bbae471c65a04a9787208d421ac1f3cf251f4e18dc974238172721148da6f49 +SIZE (ghc-8.10.7-boot-aarch64-freebsd.tar.xz) = 125236788 +SHA256 (ghc-8.10.7-boot-armv7-freebsd.tar.xz) = 15708f4f4324d7e87ddbd6548a6ca72dc8587de5a24c2498453603fa73b5ccfb +SIZE (ghc-8.10.7-boot-armv7-freebsd.tar.xz) = 127945844 +SHA256 (ghc-8.10.7-boot-armv6-freebsd.tar.xz) = 84010e11f92e0a9fe106b80cbaf027ba342da055c3ad6d89eab0a389c0523e1b +SIZE (ghc-8.10.7-boot-armv6-freebsd.tar.xz) = 129190568 SHA256 (hscolour-1.24.4.tar.gz) = 243332b082294117f37b2c2c68079fa61af68b36223b3fc07594f245e0e5321d SIZE (hscolour-1.24.4.tar.gz) = 28729 diff --git a/lang/ghc/files/extra-patch-aclocal.m4 b/lang/ghc/files/extra-patch-aclocal.m4 deleted file mode 100644 index 891cb6f28aad..000000000000 --- a/lang/ghc/files/extra-patch-aclocal.m4 +++ /dev/null @@ -1,15 +0,0 @@ ---- aclocal.m4.orig 2020-08-07 16:52:59 UTC -+++ aclocal.m4 -@@ -2461,12 +2461,6 @@ AC_DEFUN([FIND_LD],[ - [enable_ld_override=yes]) - - find_ld() { -- # Make sure the user didn't specify LD manually. -- if test "z$LD" != "z"; then -- AC_CHECK_TARGET_TOOL([LD], [ld]) -- return -- fi -- - # Manually iterate over possible names since we want to ensure that, e.g., - # if ld.lld is installed but gcc doesn't support -fuse-ld=lld, that we - # then still try ld.gold and -fuse-ld=gold. diff --git a/lang/ghc/files/patch-aclocal.m4 b/lang/ghc/files/patch-aclocal.m4 new file mode 100644 index 000000000000..2eb04c157343 --- /dev/null +++ b/lang/ghc/files/patch-aclocal.m4 @@ -0,0 +1,20 @@ +--- aclocal.m4.orig 2020-08-07 16:52:59 UTC ++++ aclocal.m4 +@@ -2221,7 +2221,7 @@ AC_DEFUN([XCODE_VERSION],[ + # FIND_LLVM_PROG() + # -------------------------------- + # Find where the llvm tools are. We have a special function to handle when they +-# are installed with a version suffix (e.g., llc-7, llc-7.0) and without (e.g. ++# are installed with a version suffix (e.g., llc-7, llc-7.0, llc70) and without (e.g. + # llc). + # + # $1 = the variable to set +@@ -2231,7 +2231,7 @@ AC_DEFUN([XCODE_VERSION],[ + # + AC_DEFUN([FIND_LLVM_PROG],[ + # Test for program with and without version name. +- PROG_VERSION_CANDIDATES=$(for llvmVersion in `seq $4 -1 $3`; do echo "$2-$llvmVersion $2-$llvmVersion.0"; done) ++ PROG_VERSION_CANDIDATES=$(for llvmVersion in `seq $4 -1 $3`; do echo "$2-$llvmVersion $2-$llvmVersion.0 $2$llvmVersion $2$llvmVersion0"; done) + AC_CHECK_TOOLS([$1], [$PROG_VERSION_CANDIDATES $2], []) + AS_IF([test x"$$1" != x],[ + PROG_VERSION=`$$1 --version | awk '/.*version [[0-9\.]]+/{for(i=1;i<=NF;i++){ if(\$i ~ /^[[0-9\.]]+$/){print \$i}}}'`