[MLton] Re: MLton problems on FreeBSD

Stephen Weeks MLton@mlton.org
Thu, 23 Dec 2004 15:33:01 -0800


> It seems that <http://www.mlton.org/download/> is redirected towards
> <http://mlton.org/download/>.

Yep.

> Perhaps MASTER_SITES should be updated?

Yes, I have done so in our FreeBSD Makefile.

> It would be better that you submit a PR (send-pr) with the diff. 

OK.  Should we first figure out a Makefile that works, or should I
send-pr my first attempt, and then we'll work from there?  As I
recall, last time it took 5 or so iterations before we had a working
one.  Here's my starting point.

----------------------------------------------------------------------

# New ports collection makefile for:   mlton
# Date created:                1 Oct 2002
# Whom:                        Stephen Weeks <sweeks@sweeks.com>
#
# $FreeBSD$
#

# Because MLton is written in SML, it needs an SML compiler to build.
# It is easiest to use another (earlier) binary version of MLton as
# the SML compiler.  So, this Makefile fetches and installs an
# alread-built version of MLton, BOOT_DIST, to use for bootstrapping.

PORTNAME=	mlton
PORTVERSION=	20041109
CATEGORIES=	lang
MASTER_SITES=	http://mlton.org/pages/Download/attachments/ \
		http://mlton.org/pages/Experimental/attachments/
DISTFILES=	${BOOT_DIST} ${SRC_DIST}
EXTRACT_ONLY=	${SRC_DIST}

MAINTAINER=	MLton@mlton.org
COMMENT=	An optimizing Standard ML compiler

BUILD_DEPENDS=	bash:${PORTSDIR}/shells/bash2		\
		hevea:${PORTSDIR}/textproc/hevea 	\
		latex:${PORTSDIR}/print/teTeX
LIB_DEPENDS=	gmp.6:${PORTSDIR}/math/libgmp4
RUN_DEPENDS=	bash:${PORTSDIR}/shells/bash2

SRC_DIST=	${DISTNAME}-1.freebsd.src.tgz
BOOT_DIST=	${PORTNAME}-${BOOT_VER}-1.${MACHINE_ARCH}-freebsd.${BOOT_SUF}

ONLY_FOR_ARCHS=	i386

MAN1=		mllex.1 mlprof.1 mlton.1 mlyacc.1
MANCOMPRESSED=	yes

BOOT_WRKSRC=	${WRKDIR}/mlton-bootstrap

USE_GETTEXT=	yes
USE_REINPLACE=	yes
ALL_TARGET=	all
USE_GMAKE=	yes
MAKE_ARGS=	DESTDIR='' \
		PATH=${WRKSRC}/build/bin:${BOOT_WRKSRC}/bin:${PATH} \
		PREFIX=${PREFIX}

PORTDIR=	usr/ports/lang/mlton

.include <bsd.port.pre.mk>

BOOT_EXTRACT=	--gzip
BOOT_SUF=	tgz
BOOT_VER=	20040429
.if ${OSVERSION} >= 500000
LIB_DEPENDS+=	c.4:${PORTSDIR}/misc/compat4x
.endif

post-extract:
	@${MKDIR} ${BOOT_WRKSRC}
	@${TAR} xf ${DISTDIR}/${BOOT_DIST} ${BOOT_EXTRACT} -C ${BOOT_WRKSRC}
	@${REINPLACE_CMD} -e \
		"s|lib=\'${LOCALBASE}/|lib=\'${BOOT_WRKSRC}/|" \
	${BOOT_WRKSRC}/bin/mlton

post-install:
.for f in mllex mlprof mlton mlyacc
	${CHOWN} ${SHAREOWN}:${SHAREGRP}	\
		${PREFIX}/bin/${f}		\
		${MAN1PREFIX}/${f}.1.gz
.endfor

# Stuff below this line is for maintainer use only.

.if defined(MAINTAINER_MODE)
.PHONY: build-package
build-package:
	${MAKE} makesum build
	${MAKE} pkg-plist
	portlint .
	${MAKE} deinstall
	${MAKE} install
	${MAKE} package
	${MAKE} deinstall
	pkg_add ${PORTNAME}-${PORTVERSION}.tbz
	${MAKE} deinstall
	${MAKE} reinstall
	${MAKE} package
	${CP} ${PORTNAME}-${PORTVERSION}.tbz	\
		${DISTDIR}/${PORTNAME}-${PORTVERSION}-1.i386-freebsd.tbz
	${TAR} -cpf - Makefile distinfo pkg-descr pkg-plist | \
		( ${MKDIR} ${PORTDIR} && cd ${PORTDIR} && ${TAR} -xpf - )
	shar `find ${PORTDIR}` >/tmp/mlton-${PORTVERSION}-portdir.shar

TMP_PLIST=	tmp-pkg-plist
PLIST=		${.CURDIR}/pkg-plist

pkg-plist:
	cd ${WRKSRC} && ${GMAKE} install
	cd ${WRKSRC}/install/usr && \
		${FIND} -d * \! -type d | ${GREP} -v man/man | \
		sort >${PLIST}  # do not use ${SORT}
	cd ${WRKSRC}/install/usr && \
		${FIND} -d * -type d | ${GREP} mlton | \
			${SED} -e 's/^/@dirrm /' >>${PLIST}
	${SED} -e 's;@dirrm share/doc/mlton;%%PORTDOCS%%@dirrm %%DOCSDIR%%;' \
		<${PLIST} >${TMP_PLIST}
	${SED} -e 's;share/doc/mlton;%%PORTDOCS%%%%DOCSDIR%%;'	\
		<${TMP_PLIST} >${PLIST}
	${RM} ${TMP_PLIST}

.endif # MAINTAINER_MODE

.include <bsd.port.post.mk>