git: 1ad4dbd771c1 - main - lang/mlton: Fix BUILD
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 20 Mar 2023 16:35:09 UTC
The branch main has been updated by bofh: URL: https://cgit.FreeBSD.org/ports/commit/?id=1ad4dbd771c18f9a599411d3a9f08f375523db96 commit 1ad4dbd771c18f9a599411d3a9f08f375523db96 Author: Timothy Beyer <beyert@cs.ucr.edu> AuthorDate: 2023-03-20 16:31:06 +0000 Commit: Muhammad Moinur Rahman <bofh@FreeBSD.org> CommitDate: 2023-03-20 16:34:41 +0000 lang/mlton: Fix BUILD - Memory usage has been so extreme that building on i386 build servers often fails due to slightly imperfect conditions. This is like because the zone pass was intended to be disabled on modern versions, but was unintentionally? hardcoded to a specific older version (corrected). - Simple fix where bootstrap images for FreeBSD versions >= 13 were unavailable (if compat13x is needed, then I will add it to dependencies, but it shouldn't be necessary), so it should build on FreeBSD 14.x with this change - While I(bofh) am here pet portclippy/portfmt - Utilize OPTIONSNG as best as possible PR: 261820 Approved by: MAINTAINER --- lang/mlton/Makefile | 184 ++++++++++++++++------------------ lang/mlton/files/patch-mlton_Makefile | 11 ++ 2 files changed, 95 insertions(+), 100 deletions(-) diff --git a/lang/mlton/Makefile b/lang/mlton/Makefile index 57a1c21cb16e..72932f0a4b96 100644 --- a/lang/mlton/Makefile +++ b/lang/mlton/Makefile @@ -8,14 +8,15 @@ # already-built version of MLton, BOOT_DIST, to use for bootstrapping. PORTNAME= mlton PORTVERSION= 20210816 +PORTREVISION= 1 CATEGORIES= lang MASTER_SITES+= https://github.com/beyert/mlton-freebsd_bootstrap/raw/c7371c1/:bootstrap -DISTFILES+= ${BOOTNAME}.i386-${OPSYS:tl}-13.txz:bootstrap \ - ${BOOTNAME}.amd64-${OPSYS:tl}-13.txz:bootstrap \ - ${BOOTNAME}.i386-${OPSYS:tl}-12.txz:bootstrap \ - ${BOOTNAME}.amd64-${OPSYS:tl}-12.txz:bootstrap \ - ${BOOTNAME}.i386-${OPSYS:tl}-11.txz:bootstrap \ - ${BOOTNAME}.amd64-${OPSYS:tl}-11.txz:bootstrap +DISTFILES+= ${BOOTNAME}.i386-${OPSYS:tl}-13.txz:bootstrap \ + ${BOOTNAME}.amd64-${OPSYS:tl}-13.txz:bootstrap \ + ${BOOTNAME}.i386-${OPSYS:tl}-12.txz:bootstrap \ + ${BOOTNAME}.amd64-${OPSYS:tl}-12.txz:bootstrap \ + ${BOOTNAME}.i386-${OPSYS:tl}-11.txz:bootstrap \ + ${BOOTNAME}.amd64-${OPSYS:tl}-11.txz:bootstrap MAINTAINER= beyert@cs.ucr.edu COMMENT= Optimizing Standard ML compiler @@ -33,103 +34,83 @@ BUILD_DEPENDS= bash:shells/bash LIB_DEPENDS= libgmp.so:math/gmp RUN_DEPENDS= bash:shells/bash -USES= compiler:c11 gmake +USES= compiler:c11 gmake BOOTNAME= ${BOOTNAMEPREFIX}${PORTNAME}${BOOTNAMESUFFIX}-${BOOTVERSIONPREFIX}${BOOTVERSION}${BOOTVERSIONSUFFIX} BOOTVERSIONSUFFIX= BOOTVERSION= ${PORTVERSION} BOOTOSMAJ= ${OSREL:R} -OPTIONS_DEFINE= DOCS EXAMPLES +OPTIONS_DEFINE= DOCS EXAMPLES +OPTIONS_DEFAULT= MLTON NATIVE +OPTIONS_SINGLE= BOOTSTRAP TARGET +OPTIONS_SINGLE_BOOTSTRAP= MLTON POLYML SMLNJ WINE +OPTIONS_SINGLE_TARGET= MINGW32 NATIVE -OPTIONS_SINGLE= TARGET BOOTSTRAP -OPTIONS_SINGLE_TARGET= NATIVE MINGW32 -OPTIONS_SINGLE_BOOTSTRAP= MLTON SMLNJ POLYML WINE - -OPTIONS_DEFAULT= NATIVE MLTON - -MLTON_DESC= Bootstrap with MLton (ideal if supported) -SMLNJ_DESC= Bootstrap with SML/NJ (can take many hours) -POLYML_DESC= Bootstrap with PolyML -WINE_DESC= Bootstrap MINGW32 with wine - -NATIVE_DESC= Use default target for given architecture MINGW32_DESC= Add mingw32 Windows target (requires wine) +MLTON_DESC= Bootstrap with MLton (ideal if supported) +NATIVE_DESC= Use default target for given architecture +POLYML_DESC= Bootstrap with PolyML +SMLNJ_DESC= Bootstrap with SML/NJ (can take many hours) +WINE_DESC= Bootstrap MINGW32 with wine + +DOCS_BUILD_DEPENDS= htmldoc:textproc/htmldoc +DOCS_USES= tex +DOCS_USE= TEX=latex:build +DOCS_MAKE_ARGS= MLTON_BINARY_RELEASE_WITH_DOCS=true +DOCS_MAKE_ARGS_OFF= MLTON_BINARY_RELEASE_WITH_DOCS=false +DOCS_ALL_TARGET= install-docs all +DOCS_ALL_TARGET_OFF= all +DOCS_INSTALL_TARGET= install-docs install +DOCS_INSTALL_TARGET_OFF= install +MINGW32_BROKEN= not yet implemented MINGW32 option in modern versions of ${PORTNAME} +MLTON_MAKE_ARGS= DESTDIR='' \ + LIB=${BOOT_WRKSRC}/lib \ + MLTON_VERSION=${PORTVERSION} \ + PATH=${WRKSRC}/build/bin:${BOOT_WRKSRC}/bin:${PATH} \ + PREFIX=${PREFIX} \ + SML_LIB=${BOOT_WRKSRC}/lib/sml \ + TDOC=${STAGEDIR}${DOCSDIR} \ + TEXM=${STAGEDIR}${EXAMPLESDIR} \ + WITH_GMP_DIR=${PREFIX} +MLTON_MAKE_ARGS_OFF= DESTDIR='' \ + MLTON_VERSION=${PORTVERSION} \ + PATH=${WRKSRC}/build/bin:${WRKDIR}/bin:${PATH} \ + PREFIX=${PREFIX} \ + WITH_GMP_DIR=${PREFIX} +NATIVE_VARS= BOOT_DIST=${BOOTNAME}.${ARCH}-${OPSYS:tl}-${BOOTOSMAJ}.txz +NATIVE_VARS_OFF= BOOT_DIST= +POLYML_BUILD_DEPENDS= polyc:lang/polyml +#POLYML_CPPFLAGS= -L/usr/local/lib -lpolyml -lpolymain +#POLYML_LDFLAGS= -L/usr/local/lib -lpolyml -lpolymain +POLYML_ALL_TARGET= polyml-mlton +POLYML_VARS= BOOT_DIST= \ + MAKE_JOBS_UNSAFE= \ + yes +SMLNJ_BUILD_DEPENDS= smlnj>=110.65:lang/smlnj +SMLNJ_MAKE_ENV= SMLNJ_DEVEL=yes +SMLNJ_ALL_TARGET= smlnj-mlton +SMLNJ_VARS= BOOT_DIST= \ + MAKE_JOBS_UNSAFE=yes .include <bsd.port.options.mk> -.if ${PORT_OPTIONS:MMINGW32} -BROKEN+= not yet implemented MINGW32 option in modern versions of ${PORTNAME} -.endif - BOOT_WRKSRC= ${WRKSRC}/build BOOT_WRKTMP= ${WRKDIR}/mlton-bootstrap -.if ! ${PORT_OPTIONS:MMLTON} -MAKE_ARGS= DESTDIR='' MLTON_VERSION=${PORTVERSION} \ - PATH=${WRKSRC}/build/bin:${WRKDIR}/bin:${PATH} \ - PREFIX=${PREFIX} \ - WITH_GMP_DIR=${PREFIX} -.else -MAKE_ARGS= DESTDIR='' MLTON_VERSION=${PORTVERSION} \ - PATH=${WRKSRC}/build/bin:${BOOT_WRKSRC}/bin:${PATH} \ - PREFIX=${PREFIX} \ - SML_LIB=${BOOT_WRKSRC}/lib/sml WITH_GMP_DIR=${PREFIX} \ - PREFIX=${PREFIX} LIB=${BOOT_WRKSRC}/lib \ - TDOC=${STAGEDIR}${DOCSDIR} \ - TEXM=${STAGEDIR}${EXAMPLESDIR} -.endif - -.if ${PORT_OPTIONS:MDOCS} -BUILD_DEPENDS+= htmldoc:textproc/htmldoc -MAKE_ARGS+= MLTON_BINARY_RELEASE_WITH_DOCS=true -USES+= tex -USE_TEX= latex:build -#USE_TEX= latex:formats -INSTALL_TARGET= install-docs install -ALL_TARGET= install-docs all -.else -MAKE_ARGS+= MLTON_BINARY_RELEASE_WITH_DOCS=false -INSTALL_TARGET= install -ALL_TARGET= all -.endif - -.if ${PORT_OPTIONS:MSMLNJ} -BUILD_DEPENDS+= smlnj>=110.65:lang/smlnj -BOOT_DIST= -MAKE_JOBS_UNSAFE= yes -MAKE_ENV+= SMLNJ_DEVEL=yes -.if ! ${PORT_OPTIONS:MDOCS} -ALL_TARGET= smlnj-mlton all -.else -ALL_TARGET= smlnj-mlton install-docs all -.endif -.elif ${PORT_OPTIONS:MPOLYML} -BUILD_DEPENDS+= polyc:lang/polyml -BOOT_DIST= -MAKE_JOBS_UNSAFE= yes -#CPPFLAGS+= -L/usr/local/lib -lpolyml -lpolymain -#LDFLAGS+= -L/usr/local/lib -lpolyml -lpolymain -.if ! ${PORT_OPTIONS:MDOCS} -ALL_TARGET= polyml-mlton all -.else -ALL_TARGET= polyml-mlton install-docs all -.endif -.elif ${PORT_OPTIONS:MNATIVE} -BOOT_DIST= ${BOOTNAME}.${ARCH}-${OPSYS:tl}-${BOOTOSMAJ}.txz -.else -BOOT_DIST= +.if ${PORT_OPTIONS:MNATIVE} && ${OSREL:R} >= 13 +BOOTOSMAJ= 13 .endif BOOT_DIST_NEW= ${PKGNAME}${DISTVERSIONSUFFIX}.${ARCH}-${OPSYS:tl}-${OSREL:R}-${HOST}${BOOT_SUFX} .if ${PORT_OPTIONS:MMINGW32} && ${PORT_OPTIONS:MWINE} -BUILD_DEPENDS+= wine:emulators/wine \ +BUILD_DEPENDS+= ${LOCALBASE}/mingw32/lib/libgmp.a:math/mingw32-libgmp \ mingw32-gcc:devel/mingw32-gcc \ - ${LOCALBASE}/mingw32/lib/libgmp.a:math/mingw32-libgmp -RUN_DEPENDS+= mingw32-gcc:devel/mingw32-gcc \ - ${LOCALBASE}/mingw32/lib/libgmp.a:math/mingw32-libgmp -SSP_CFLAGS?= -fstack-protector # XXX -strong isn't supported by GCC < 4.9 + wine:emulators/wine +RUN_DEPENDS+= ${LOCALBASE}/mingw32/lib/libgmp.a:math/mingw32-libgmp \ + mingw32-gcc:devel/mingw32-gcc +SSP_CFLAGS?= -fstack-protector # XXX -strong isn't supported by GCC < 4.9 PLIST_SUB+= MINGW32CROSS="" .else @@ -144,35 +125,28 @@ GH_TAGNAME= b2fca3d BOOT_CMD= --xz BOOT_SUFX= .txz +RAM_SLOP_32= $$(${SYSCTL} "hw.physmem" | ${AWK} '{ values = values" "$$2 } END { print values; }' | ${AWK} '{ "freebsd-version -r" | getline ver; split(ver, xs, "\."); kernelOSMAJ = xs[1]; osj = ${BOOTOSMAJ}; physmem = $$1 / 1024 / 1024 / 1024; os = kernelOSMAJ; maxphysmem = physmem; if (physmem > 3.2) { maxphysmem = 3.2; }; ospcent = 0.70; if (osj < 13 && os != osj) { ospcent = 0.65; } else if (os >= 13) { if (physmem < 3.1) { ospcent = 0.83; } else { ospcent = 0.80; } }; targetmem = maxphysmem * ospcent; targetpcent = targetmem / physmem; print int((targetpcent + 0.005) * 100) / 100; }') + post-extract: @${MKDIR} ${BOOT_WRKSRC} -.if ${PORT_OPTIONS:MMLTON} - @${TAR} xf ${DISTDIR}/${BOOT_DIST} ${BOOT_CMD} -C ${BOOT_WRKSRC} - @${REINPLACE_CMD} \ - 's|/usr/local/lib/mlton|${BOOT_WRKSRC}/lib/mlton|g' \ - ${BOOT_WRKSRC}/bin/mlton - @${REINPLACE_CMD} 's|$$gcc|$$CC|g' ${BOOT_WRKSRC}/bin/mlton -.endif @${REINPLACE_CMD} 's/CC := cc/CC := ${CC}/g' ${WRKSRC}/Makefile.config @${REINPLACE_CMD} 's|gcc|${CC}|g' ${WRKSRC}/doc/examples/ffi/Makefile @${REINPLACE_CMD} \ 's|-lpolymain -lpolyml|-L ${PREFIX}/lib -lpolymain -lpolyml|g' \ ${WRKSRC}/mlton/Makefile -.if ${PORT_OPTIONS:MDOCS} - @${MKDIR} ${STAGEDIR}${EXAMPLESDIR} -.endif .if ${ARCH} == "i386" -.if ${OSREL:R} == 13 - @${REINPLACE_CMD} -e 's/ram-slop 0\.7/ram-slop 0.8/' \ + @${REINPLACE_CMD} -e "s/ram-slop 0\.7/ram-slop ${RAM_SLOP_32}/" \ -e 's|COMPILE_XARGS :=|COMPILE_XARGS := -polyvariance false|' \ ${WRKSRC}/mlton/Makefile + @${REINPLACE_CMD} -e "s/ram-slop 0\.7/ram-slop ${RAM_SLOP_32}/" \ + -e "s|^OLD_MLTON_RUNTIME_ARGS :=|OLD_MLTON_RUNTIME_ARGS := ram-slop ${RAM_SLOP_32}|" \ + -e 's|^OLD_MLTON_COMPILE_ARGS :=|OLD_MLTON_COMPILE_ARGS := -polyvariance false|' \ + ${WRKSRC}/Makefile.config .else - @${REINPLACE_CMD} -e 's/ram-slop 0\.7/ram-slop 0.7/' \ + @${REINPLACE_CMD} \ -e 's|COMPILE_XARGS :=|COMPILE_XARGS := -polyvariance false|' \ ${WRKSRC}/mlton/Makefile -.endif - @${REINPLACE_CMD} -e 's/ram-slop 0\.7/ram-slop 0.8/' \ - -e 's|^OLD_MLTON_RUNTIME_ARGS :=|OLD_MLTON_RUNTIME_ARGS := ram-slop 0.8|' \ + @${REINPLACE_CMD} \ -e 's|^OLD_MLTON_COMPILE_ARGS :=|OLD_MLTON_COMPILE_ARGS := -polyvariance false|' \ ${WRKSRC}/Makefile.config .endif @@ -180,6 +154,16 @@ post-extract: @${REINPLACE_CMD} 's|"cc"|"${CC}"|g' ${WRKSRC}/bin/mlton-script @${FIND} ${WRKDIR} | ${GREP} '\.bak$$' | ${AWK} '{ system("${RM} "$$0); }' +post-extract-DOCS-on: + @${MKDIR} ${STAGEDIR}${EXAMPLESDIR} + +post-extract-MLTON-on: + @${TAR} xf ${DISTDIR}/${BOOT_DIST} ${BOOT_CMD} -C ${BOOT_WRKSRC} + @${REINPLACE_CMD} \ + 's|/usr/local/lib/mlton|${BOOT_WRKSRC}/lib/mlton|g' \ + ${BOOT_WRKSRC}/bin/mlton + @${REINPLACE_CMD} 's|$$gcc|$$CC|g' ${BOOT_WRKSRC}/bin/mlton + post-install: .if ${PORT_OPTIONS:MDOCS} && ${PORT_OPTIONS:MEXAMPLES} ${MV} ${STAGEDIR}${DOCSDIR}/examples/* ${STAGEDIR}${EXAMPLESDIR}/ @@ -193,7 +177,7 @@ post-install: .endif @${FIND} ${WRKDIR} | ${GREP} '\.bak$$' | ${AWK} '{ system("${RM} "$$0); }' -makebootstrap: all +makebootstrap: all @${ECHO_MSG} "====> Making new bootstrap image (${BOOT_DIST_NEW})" # @${FIND} ${WRKDIR} | ${GREP} '\.bak$$' | ${AWK} '{ system("${RM} "$$0); }' @${MKDIR} ${BOOT_WRKTMP} diff --git a/lang/mlton/files/patch-mlton_Makefile b/lang/mlton/files/patch-mlton_Makefile new file mode 100644 index 000000000000..2a41a1800d07 --- /dev/null +++ b/lang/mlton/files/patch-mlton_Makefile @@ -0,0 +1,11 @@ +--- mlton/Makefile.orig 2022-01-17 22:42:43 UTC ++++ mlton/Makefile +@@ -39,6 +39,8 @@ ifeq ($(RUN_MLTON_VERSION), $(firstword $(sort $(RUN_M + RUN_MLTON_COMPILE_XARGS += -drop-pass zone + else ifeq ($(RUN_MLTON_VERSION), $(firstword $(sort $(RUN_MLTON_VERSION) 20191003))) + RUN_MLTON_COMPILE_XARGS += -disable-pass zone ++else ++RUN_MLTON_COMPILE_XARGS += -disable-pass zone + endif + + FRONT_END_SOURCES := \