aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpgj <pgj@FreeBSD.org>2010-01-04 16:54:14 +0800
committerpgj <pgj@FreeBSD.org>2010-01-04 16:54:14 +0800
commit36d4a484270bc842b6f6e3d64accfe0c294bd60a (patch)
tree61932423b2158f460624d09f337f57a124782671
parentc95fa5678d95a3b3e1cef1b84dd81715dd0f2f7d (diff)
downloadfreebsd-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/Makefile1
-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
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