aboutsummaryrefslogtreecommitdiff
path: root/devel/hs-mueval
diff options
context:
space:
mode:
authorGabor Pali <pgj@FreeBSD.org>2010-01-04 08:54:14 +0000
committerGabor Pali <pgj@FreeBSD.org>2010-01-04 08:54:14 +0000
commit8c6db534155e6f577a6bb9382f8116a8e4c4c922 (patch)
tree6b9f5d35e3e719501045fbf39acb43af582f7dc1 /devel/hs-mueval
parent67657f142886a09e3bafd4be383da7c71b1eb30a (diff)
downloadports-8c6db534155e6f577a6bb9382f8116a8e4c4c922.tar.gz
ports-8c6db534155e6f577a6bb9382f8116a8e4c4c922.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>
Notes
Notes: svn path=/head/; revision=247116
Diffstat (limited to 'devel/hs-mueval')
-rw-r--r--devel/hs-mueval/Makefile93
-rw-r--r--devel/hs-mueval/distinfo3
-rw-r--r--devel/hs-mueval/files/patch-Mueval_Interpreter.hs15
-rw-r--r--devel/hs-mueval/pkg-descr15
-rw-r--r--devel/hs-mueval/pkg-message8
-rw-r--r--devel/hs-mueval/pkg-plist20
6 files changed, 154 insertions, 0 deletions
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