--- Makefile.orig 2024-03-30 15:30:41 UTC +++ Makefile @@ -3,7 +3,8 @@ PORTVERSION= ${GHC_VERSION} PORTREVISION?= 0 CATEGORIES= lang haskell MASTER_SITES= https://www.haskell.org/ghc/dist/${PORTVERSION}/:source \ - LOCAL/arrowd/:boot + LOCAL/arrowd/:boot \ + http://leaf.dragonflybsd.org/~marino/dports-src/:dflyboot DISTFILES= ghc-${PORTVERSION}-src${EXTRACT_SUFX}:source MAINTAINER= haskell@FreeBSD.org @@ -119,6 +120,7 @@ IGNORE_i386= requires Hadrian build whic BOOT_SCRIPT= ./boot .endif + .if ${SLAVE_PORT} != "yes" PORTDOCS= * HADRIAN_PLAN= ${PATCHDIR}/plan-bootstrap-${BOOT_GHC_VERSION:C/\./_/g}.json @@ -168,11 +170,13 @@ PLIST= ${.CURDIR}/../ghc92/pkg-plist .endif # This version of ncurses is needed by bootstrap compiler -.if empty(PORT_OPTIONS:MBOOT) +.if ${OPSYS} == FreeBSD +. if empty(PORT_OPTIONS:MBOOT) BUILD_DEPENDS+= ${LOCALBASE}/lib/compat/libncursesw.so.8:misc/compat12x +. endif .endif -.if empty(PORT_OPTIONS:MBOOT) +.if empty(PORT_OPTIONS:MBOOT) && ${OPSYS} == "FreeBSD" 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 @@ -194,6 +198,40 @@ BUILD_DEPENDS+= llc${BOOT_LLVM_VERSION} . endif .endif +.if empty(PORT_OPTIONS:MBOOT) && ${OPSYS} == "DragonFly" +BUILD_DEPENDS+= libtinfow-compat>0:misc/libtinfow-compat +.if ${SLAVE_PORT} != "yes" +BOOT_GHC_VERSION= 9.2.8 +.endif +DISTFILES+= ghc-${BOOT_GHC_VERSION}-boot-${ARCH}-dragonfly.tar.xz:dflyboot +CONFIGURE_TARGET= ${ARCH}-portbld-dragonfly +CONFIGURE_ENV+= BOOTDIR=${BOOT_DIR} LBASE=${LOCALBASE} + +. if !defined(IGNORE_MISSING_HADRIAN) && defined(USE_HADRIAN) +DISTFILES+= hadrian-${GHC_VERSION}-${OPSYS:tl}-boot.tar.gz:boot +. endif + +CONFIGURE_ARGS+= --target=${CONFIGURE_TARGET} +LLVM_VERSION:= ${LLVM_DEFAULT} +# for bootstrap only disable all OPTIONS_DEFAULT except for GMP, previous boots used devel/libffi321 +.if 0 +CONFIGURE_ARGS+= --with-intree-gmp +DOCS_BUILD_DEPENDS:= +PORT_OPTIONS:= +.endif + +# avoid "sed: RE error: Illegal byte sequence" in bootstrap configure script, smth fishy +# upstream configure does not support target x86_64-unknown-dragonfly5.9, resed solaris2 +BUILD_DEPENDS+= gsed:textproc/gsed +dfly-patch: + ${REINPLACE_CMD} -e 's@solaris2\*@dragonfly*@g' -e 's@"solaris2"@"dragonfly"@g' \ + ${WRKSRC}/configure # this is fragile, but avoid patch-configure diffs... + ${REINPLACE_CMD} -e 's@solaris2\*@dragonfly*@g' -e 's@"solaris2"@"dragonfly"@g' \ + ${BOOT_DIR}/configure + ${REINPLACE_CMD} -e 's@[[:<:]]sed[[:>:]]@gsed@g' \ + ${BOOT_DIR}/configure +.endif + post-patch: # Generate the build.mk file ${RM} -f ${WRKSRC}/mk/build.mk @@ -204,6 +242,20 @@ post-patch: ${SED} -e 's|%%DYNAMIC%%|${HADRIAN_SETTING_DYNAMIC}|' \ -e 's|%%PROFILE%%|${HADRIAN_SETTING_PROFILE}|' \ ${PATCHDIR}/UserSettings.hs > ${WRKSRC}/hadrian/src/UserSettings.hs + ${MKDIR} ${WRKSRC}/_build +# WARNING: Most of the OPTS in BUILD_MK should be translated to +# hadrian.settings key/value options +# +# https://gitlab.haskell.org/ghc/ghc/blob/master/hadrian/doc/user-settings.md + ${ECHO_CMD} "*.*.ghc.hs.opts += -I${NCURSESINC} -L${NCURSESLIB} -I${LOCALBASE}/include -L${LOCALBASE}/lib" >> \ + ${WRKSRC}/_build/hadrian.settings + ${ECHO_CMD} "*.*.cc.c.opts += ${CFLAGS}" >> \ + ${WRKSRC}/_build/hadrian.settings +# This one is not valid for 9.2.8 +# ${ECHO_CMD} "*.*.hsc2hs.run.opts += -I${LOCALBASE}/include --lflag=-L${LOCALBASE}/lib" >> \ +# ${WRKSRC}/_build/hadrian.settings + ${ECHO_CMD} "*.terminfo.cabal.configure.opts += --configure-option=--with-curses-libraries=${NCURSESLIB}" >> \ + ${WRKSRC}/_build/hadrian.settings .endif pre-configure: @@ -217,7 +269,7 @@ pre-configure: .ifdef USE_HADRIAN # Compile Hadrian cd ${WRKSRC}/hadrian/bootstrap && \ - ./bootstrap.py -w ${BOOT_GHC} -s ${DISTDIR}/hadrian-${GHC_VERSION}-boot.tar.gz + ./bootstrap.py -w ${BOOT_GHC} -s ${DISTDIR}/hadrian-${GHC_VERSION}-${OPSYS:tl}-boot.tar.gz .endif .ifdef USE_HADRIAN @@ -274,17 +326,17 @@ create-bootstrap: && ${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 + && ${MV} ${WRKSRC}/ghc-${GHC_VERSION}-boot-${GHC_ARCH}-portbld-${OPSYS:tl}.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}-${CONFIGURE_TARGET}.tar.xz /tmp/ghc-${GHC_VERSION}-boot-${ARCH}-freebsd.tar.xz + && ${MV} ${WRKSRC}/_build/bindist/ghc-${GHC_VERSION}-${CONFIGURE_TARGET}.tar.xz /tmp/ghc-${GHC_VERSION}-boot-${ARCH}-${OPSYS:tl}.tar.xz .endif @cd /tmp \ - && sha256 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 + && sha256 ghc-${GHC_VERSION}-boot-${ARCH}-${OPSYS:tl}.tar.xz \ + && ${ECHO_CMD} -n "SIZE (ghc-${GHC_VERSION}-boot-${ARCH}-${OPSYS:tl}.tar.xz) = " \ + && ${STAT} -f %z ghc-${GHC_VERSION}-boot-${ARCH}-${OPSYS:tl}.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 @@ -293,22 +345,22 @@ 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/ + && ${MV} ${WRKSRC}/ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-${OPSYS:tl}.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/ + && ${MV} ${WRKSRC}/_build/bindist/ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-${OPSYS:tl}.tar.xz /tmp/ .endif cd /tmp \ && ${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} "url: \"http://distcache.FreeBSD.org/local-distfiles/arrowd/stack-bindists/ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-${OPSYS:tl}.tar.xz\"" \ && ${ECHO_CMD} -n "content-length: " \ - && ${STAT} -f %z ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-freebsd.tar.xz \ + && ${STAT} -f %z ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-${OPSYS:tl}.tar.xz \ && ${ECHO_CMD} -n "sha1: " \ - && sha1 -q ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-freebsd.tar.xz \ + && sha1 -q ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-${OPSYS:tl}.tar.xz \ && ${ECHO_CMD} -n "sha256: " \ - && sha256 -q ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-freebsd.tar.xz + && sha256 -q ghc-${GHC_VERSION}-${GHC_ARCH}-portbld-${OPSYS:tl}.tar.xz .PHONY: create-hadrian-bootstrap create-hadrian-bootstrap: @@ -321,12 +373,12 @@ create-hadrian-bootstrap: # 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 ${HADRIAN_PLAN} fetch -o /tmp/hadrian-${GHC_VERSION}-boot + ./bootstrap.py -w ${BOOT_GHC} --deps ${HADRIAN_PLAN} fetch -o /tmp/hadrian-${GHC_VERSION}-${OPSYS:tl}-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 + && sha256 hadrian-${GHC_VERSION}-${OPSYS:tl}-boot.tar.gz \ + && ${ECHO_CMD} -n "SIZE (hadrian-${GHC_VERSION}-${OPSYS:tl}-boot.tar.gz) = " \ + && ${STAT} -f %z hadrian-${GHC_VERSION}-${OPSYS:tl}-boot.tar.gz @${ECHO_CMD} @${ECHO_CMD} "Remember to check that hadrian bootstrap builds fine by running \"make check-hadrian-bootstrap\"" @@ -340,6 +392,6 @@ check-hadrian-bootstrap: ${MAKE} -C ${.CURDIR} pre-configure # Compile Hadrian cd ${WRKSRC}/hadrian/bootstrap && \ - ./bootstrap.py -w ${BOOT_GHC} -s /tmp/hadrian-${GHC_VERSION}-boot.tar.gz + ./bootstrap.py -w ${BOOT_GHC} -s /tmp/hadrian-${GHC_VERSION}-${OPSYS:tl}-boot.tar.gz .include