28 lines
570 B
Text
28 lines
570 B
Text
{ writeTextFile, nsjail }:
|
|
|
|
let
|
|
inner = writeTextFile {
|
|
name = "ocamlStudentModuleInner";
|
|
executable = true;
|
|
text = ''
|
|
INTERFACE_FILE=$1
|
|
STUDENT_FILE=$2
|
|
DRIVER_FILE=$3
|
|
|
|
ocamlc -o student.cmi $INTERFACE_FILE
|
|
ocamlc -o student.cmo $STUDENT_FILE
|
|
ocaml student.cmo $DRIVER_FILE
|
|
'';
|
|
};
|
|
in
|
|
writeTextFile {
|
|
name = "ocamlStudentModule";
|
|
executable = true;
|
|
text = ''
|
|
JAIL=$(mktemp -d)
|
|
${nsjail}/bin/nsjail \
|
|
-Mo \ # launch a single process using clone/execve
|
|
--chroot $JAIL
|
|
${inner}
|
|
'';
|
|
}
|