WaSh
From HaskellWiki
(Difference between revisions)
| (2 intermediate revisions not shown.) | |||
| Line 1: | Line 1: | ||
| + | [[Category:Tools]] | ||
| + | |||
| + | [http://www.informatik.uni-freiburg.de/~thiemann/haskell/WASH/ Homepage] | ||
| + | |||
== Random Jottings on WASH == | == Random Jottings on WASH == | ||
| + | |||
| + | Remember all programs must be precompiled with wash2hs before compilation with ghc (there may be some tools to automate this; where?). The executable produced by ghc can be moved to cgi-bin and accessed by the browser with http://localhost/cgi-bin/executableName. | ||
| + | |||
=== Hello world programme === | === Hello world programme === | ||
from [http://www.informatik.uni-freiburg.de/~thiemann/WASH/user-manual.pdf draft user manual], tweaked to work with [http://www.informatik.uni-freiburg.de/~thiemann/WASH/WashNGo-2.10.tgz version 2.10 of 20061206] | from [http://www.informatik.uni-freiburg.de/~thiemann/WASH/user-manual.pdf draft user manual], tweaked to work with [http://www.informatik.uni-freiburg.de/~thiemann/WASH/WashNGo-2.10.tgz version 2.10 of 20061206] | ||
Current revision
1 Random Jottings on WASH
Remember all programs must be precompiled with wash2hs before compilation with ghc (there may be some tools to automate this; where?). The executable produced by ghc can be moved to cgi-bin and accessed by the browser with http://localhost/cgi-bin/executableName.
1.1 Hello world programme
from draft user manual, tweaked to work with version 2.10 of 20061206
module Main where import WASH.CGI.CGI hiding (div, head, map, span) main = run mainCGI mainCGI = ask <html> <head><title>Hello World</title></head> <body> <h1>Hello World</h1> </body> </html>
Compile with ghc -pgmF wash2hs -package WashNGo --make Main.
1.2 SELinux
To run ghc-compiled WASH CGI on Fedora (Core 6) you need to build an SELinux policy that allows CGI scripts to execute memory (because ghc runtime system execs mem).
cat <<EOF > local.te
module local 1.0;
require {
class process execmem;
type httpd_sys_script_t;
role system_r;
};
allow httpd_sys_script_t self:process execmem;
EOF
checkmodule -M -m -o local.mod local.te
semodule_package -o local.pp -m local.mod
su -c 'semodule -i local.pp'
