diff options
author | pgj <pgj@FreeBSD.org> | 2010-01-04 16:54:14 +0800 |
---|---|---|
committer | pgj <pgj@FreeBSD.org> | 2010-01-04 16:54:14 +0800 |
commit | 36d4a484270bc842b6f6e3d64accfe0c294bd60a (patch) | |
tree | 61932423b2158f460624d09f337f57a124782671 | |
parent | c95fa5678d95a3b3e1cef1b84dd81715dd0f2f7d (diff) | |
download | freebsd-ports-gnome-36d4a484270bc842b6f6e3d64accfe0c294bd60a.tar.gz freebsd-ports-gnome-36d4a484270bc842b6f6e3d64accfe0c294bd60a.tar.zst freebsd-ports-gnome-36d4a484270bc842b6f6e3d64accfe0c294bd60a.zip |
Mueval is a Haskell interpreter. It uses the GHC API to evaluate
arbitrary Haskell expressions.
Importantly, mueval takes many precautions to defang and avoid
"evil" code. It uses resource limits, whitelisted modules, special
Show instances for IO, threads, processes, changes of directory, and
so on to sandbox the Haskell code.
It is, in short, intended to be a standalone version of Lambdabot's
famous evaluation functionality. For examples and explanations, please
see the README file.
Mueval is POSIX-only.
WWW: http://code.haskell.org/mubot/
PR: ports/142291
Submitted by: Jacula Modyun <jacula(at)gmail.com>
-rw-r--r-- | devel/Makefile | 1 | ||||
-rw-r--r-- | devel/hs-mueval/Makefile | 93 | ||||
-rw-r--r-- | devel/hs-mueval/distinfo | 3 | ||||
-rw-r--r-- | devel/hs-mueval/files/patch-Mueval_Interpreter.hs | 15 | ||||
-rw-r--r-- | devel/hs-mueval/pkg-descr | 15 | ||||
-rw-r--r-- | devel/hs-mueval/pkg-message | 8 | ||||
-rw-r--r-- | devel/hs-mueval/pkg-plist | 20 |
7 files changed, 155 insertions, 0 deletions
diff --git a/devel/Makefile b/devel/Makefile index 41e1012479a4..81d41a3e1f2f 100644 --- a/devel/Makefile +++ b/devel/Makefile @@ -554,6 +554,7 @@ SUBDIR += hs-language-c-ghc SUBDIR += hs-lazysmallcheck-ghc SUBDIR += hs-mmap + SUBDIR += hs-mueval SUBDIR += hs-pcre-light-ghc SUBDIR += hs-readline SUBDIR += hs-safe diff --git a/devel/hs-mueval/Makefile b/devel/hs-mueval/Makefile new file mode 100644 index 000000000000..52f807368759 --- /dev/null +++ b/devel/hs-mueval/Makefile @@ -0,0 +1,93 @@ +# New ports collection makefile for: hs-mueval +# Date created: December 20 2009 +# Whom: Giuseppe Pilichi aka Jacula Modyun <jacula@gmail.com> +# +# $FreeBSD$ +# + +PORTNAME= mueval +PORTVERSION= 0.7.1 +CATEGORIES= devel haskell +MASTER_SITES= http://hackage.haskell.org/packages/archive/${PORTNAME}/${PORTVERSION}/ +PKGNAMEPREFIX= hs- + +MAINTAINER= jacula@gmail.com +COMMENT= Safely evaluate Haskell expressions + +BUILD_DEPENDS+= ghc:${PORTSDIR}/lang/ghc \ + hs-utf8-string-ghc>=0.3:${PORTSDIR}/devel/hs-utf8-string-ghc \ + hs-show>=0.3:${PORTSDIR}/devel/hs-show \ + hs-hint>=0.3.1:${PORTSDIR}/devel/hs-hint +RUN_DEPENDS+= ghc:${PORTSDIR}/lang/ghc \ + hs-utf8-string-ghc>=0.3:${PORTSDIR}/devel/hs-utf8-string-ghc \ + hs-show>=0.3:${PORTSDIR}/devel/hs-show \ + hs-hint>=0.3.1:${PORTSDIR}/devel/hs-hint +LIB_DEPENDS= gmp.8:${PORTSDIR}/math/libgmp4 + +GHC_VERSION= 6.10.4 +MUEVAL_VERSION= ${PORTVERSION} + +GHC_CMD= ${LOCALBASE}/bin/ghc +SETUP_CMD= ./setup + +DATADIR= ${PREFIX}/share/${DISTNAME} +PORTDATA= * + +DOCSDIR= ${PREFIX}/share/doc/${DISTNAME} +MUEVAL_LIBDIR_REL= lib/${DISTNAME} + +PLIST_SUB= GHC_VERSION=${GHC_VERSION} \ + MUEVAL_VERSION=${MUEVAL_VERSION} \ + MUEVAL_LIBDIR_REL=${MUEVAL_LIBDIR_REL} + +.if defined(NOPORTDOCS) +PLIST_SUB+= NOPORTDOCS="" +.else +PLIST_SUB+= NOPORTDOCS="@comment " +.endif + +.if !defined(NOPORTDOCS) + +PORT_HADDOCK!= (cd ${.CURDIR}/../../lang/ghc && ${MAKE} -V PORT_HADDOCK) +.if !empty(PORT_HADDOCK:M?0) +BUILD_DEPENDS+= haddock:${PORTSDIR}/devel/hs-haddock +.endif +BUILD_DEPENDS+= HsColour:${PORTSDIR}/print/hs-hscolour + +HSCOLOUR_VERSION= 1.15 +HSCOLOUR_DATADIR= ${PREFIX}/share/hscolour-${HSCOLOUR_VERSION} + +PORTDOCS= * +.endif + +.SILENT: + +do-configure: + cd ${WRKSRC} && ${GHC_CMD} --make Setup.hs -o setup -package Cabal +.if !defined(NOPORTDATA) + cd ${WRKSRC} && ${SETUP_CMD} configure --haddock-options=-w --prefix=${PREFIX} +.else + cd ${WRKSRC} && ${SETUP_CMD} configure --haddock-options=-w --prefix=${PREFIX} \ + --datadir='' --datasubdir='' --docdir='${DOCSDIR}' +.endif + +do-build: + cd ${WRKSRC} && ${SETUP_CMD} build \ + && ${SETUP_CMD} register --gen-script + +.if !defined(NOPORTDOCS) + cd ${WRKSRC} && ${SETUP_CMD} haddock --executables --hyperlink-source \ + --hscolour-css=${HSCOLOUR_DATADIR}/hscolour.css +.endif + +do-install: + cd ${WRKSRC} && ${SETUP_CMD} install \ + && ${INSTALL_SCRIPT} register.sh ${PREFIX}/${MUEVAL_LIBDIR_REL}/register.sh + +post-install: + ${RM} -f ${PREFIX}/lib/ghc-${GHC_VERSION}/package.conf.old + ${ECHO_MSG} -e "\a" + ${CAT} "${PKGMESSAGE}" + ${ECHO_MSG} "" + +.include <bsd.port.mk> diff --git a/devel/hs-mueval/distinfo b/devel/hs-mueval/distinfo new file mode 100644 index 000000000000..71d37836f038 --- /dev/null +++ b/devel/hs-mueval/distinfo @@ -0,0 +1,3 @@ +MD5 (mueval-0.7.1.tar.gz) = 3e655a1d63468b961532c164a9b31227 +SHA256 (mueval-0.7.1.tar.gz) = 8e721e207cea5fdf58ac768d03a9a038845ca48a527da0f9538c370c2aac9f25 +SIZE (mueval-0.7.1.tar.gz) = 13597 diff --git a/devel/hs-mueval/files/patch-Mueval_Interpreter.hs b/devel/hs-mueval/files/patch-Mueval_Interpreter.hs new file mode 100644 index 000000000000..8e72073cc670 --- /dev/null +++ b/devel/hs-mueval/files/patch-Mueval_Interpreter.hs @@ -0,0 +1,15 @@ +--- Mueval/Interpreter.hs.orig 2009-12-26 10:51:26.000000000 +0000 ++++ Mueval/Interpreter.hs 2009-12-26 10:52:08.000000000 +0000 +@@ -120,9 +120,9 @@ + + -- | Renders the input String including its exceptions using @exceptionMsg@ + render :: (Control.Monad.Trans.MonadIO m) => +- Int -> -- ^ max number of characters to include +- String -> -- ^ input +- m (String, Bool) -- ^ ( output, @True@ if we found an exception ) ++ Int -- ^ max number of characters to include ++ -> String -- ^ input ++ -> m (String, Bool) -- ^ ( output, @True@ if we found an exception ) + render i xs = + do (out,Any b) <- runWriterT $ render' i (toStream xs) + return (out,b) diff --git a/devel/hs-mueval/pkg-descr b/devel/hs-mueval/pkg-descr new file mode 100644 index 000000000000..0733f6109464 --- /dev/null +++ b/devel/hs-mueval/pkg-descr @@ -0,0 +1,15 @@ +Mueval is a Haskell interpreter. It uses the GHC API to evaluate +arbitrary Haskell expressions. + +Importantly, mueval takes many precautions to defang and avoid +"evil" code. It uses resource limits, whitelisted modules, special +Show instances for IO, threads, processes, changes of directory, and +so on to sandbox the Haskell code. + +It is, in short, intended to be a standalone version of Lambdabot's +famous evaluation functionality. For examples and explanations, please +see the README file. + +Mueval is POSIX-only. + +WWW: http://code.haskell.org/mubot/ diff --git a/devel/hs-mueval/pkg-message b/devel/hs-mueval/pkg-message new file mode 100644 index 000000000000..6fbb11db5505 --- /dev/null +++ b/devel/hs-mueval/pkg-message @@ -0,0 +1,8 @@ +======================================================================= + WARNING: If you installed devel/hs-transformers, then before starting + "mueval" you have to: + + - hide it with the command: 'ghc-pkg hide transformers' + or + - pass to "mueval" the option: '-n transformers'. +======================================================================= diff --git a/devel/hs-mueval/pkg-plist b/devel/hs-mueval/pkg-plist new file mode 100644 index 000000000000..3aaf55a1a25a --- /dev/null +++ b/devel/hs-mueval/pkg-plist @@ -0,0 +1,20 @@ +@comment $FreeBSD$ +bin/mueval +bin/mueval-core +%%MUEVAL_LIBDIR_REL%%/ghc-6.10.4/HSmueval-%%MUEVAL_VERSION%%.o +%%MUEVAL_LIBDIR_REL%%/ghc-6.10.4/Mueval/ArgsParse.hi +%%MUEVAL_LIBDIR_REL%%/ghc-6.10.4/Mueval/Context.hi +%%MUEVAL_LIBDIR_REL%%/ghc-6.10.4/Mueval/Interpreter.hi +%%MUEVAL_LIBDIR_REL%%/ghc-6.10.4/Mueval/Parallel.hi +%%MUEVAL_LIBDIR_REL%%/ghc-6.10.4/Mueval/Resources.hi +%%MUEVAL_LIBDIR_REL%%/ghc-6.10.4/libHSmueval-%%MUEVAL_VERSION%%.a +%%MUEVAL_LIBDIR_REL%%/register.sh +%%NOPORTDOCS%%%%DOCSDIR%%/LICENSE +%%NOPORTDOCS%%@dirrmtry %%DOCSDIR%% +@dirrm %%MUEVAL_LIBDIR_REL%%/ghc-6.10.4/Mueval +@dirrm %%MUEVAL_LIBDIR_REL%%/ghc-6.10.4 +@dirrm %%MUEVAL_LIBDIR_REL%% +@exec /bin/sh %D/%%MUEVAL_LIBDIR_REL%%/register.sh +@exec /bin/rm -f %D/lib/ghc-%%GHC_VERSION%%/package.conf.old +@unexec %D/bin/ghc-pkg unregister mueval +@unexec /bin/rm -f %D/lib/ghc-%%GHC_VERSION%%/package.conf.old |