2 MAINTAINER Joel Martin <github@martintribe.org>
4 ##########################################################
5 # General requirements for testing or common across many
7 ##########################################################
11 # Required for running tests
12 RUN apt-get -y install make python
14 # Some typical implementation and test requirements
15 RUN apt-get -y install curl libreadline-dev libedit-dev
20 ##########################################################
21 # Specific implementation requirements
22 ##########################################################
24 # Install g++ for any C/C++ based implementations
25 RUN apt-get -y install g++
27 # Install UCBLogo 6.0:
28 # * Fix the makefile to build correctly
29 # * Tweat GC settings to improve performance (it's still very slow)
30 # * Add the timems function implemented in C
31 RUN apt-get -y install libx11-dev \
33 && curl -O -J -L http://www.cs.berkeley.edu/~bh/downloads/ucblogo.tar.gz \
34 && tar xf ucblogo.tar.gz \
35 && cd /tmp/ucblogo-6.0 \
38 && sed -i -e 's/svnversion/echo 206/' -e 's/^\s*(cd docs/#\0/' makefile \
39 && echo "all: everything" >> makefile \
40 && sed -i -e 's/^#define *SEG_SIZE *16000 /#define SEG_SIZE 6400000 /' logo.h \
41 && sed -i -e 's/^#define GCMAX 16000$/#define GCMAX 16000000/' mem.c \
42 && echo "extern NODE *ltimems(NODE *);" >> globals.h \
43 && echo "NODE *ltimems(NODE *args) { struct timeval tv; gettimeofday(&tv, NULL); return(make_floatnode(((FLONUM)tv.tv_sec) * 1000.0 + (tv.tv_usec / 1000))); }" >> coms.c \
44 && sed -i -e 's/^\(.*lthrow.*\)$/\1 {"timems", 0, 0, 0, PREFIX_PRIORITY, ltimems},/' init.c \
47 && rm -rf /tmp/ucblogo.tar.gz /tmp/ucblogo-6.0