|
| 1 | +FROM ubuntu:18.04 |
| 2 | + |
| 3 | +# Install "software-properties-common" (for the "add-apt-repository") |
| 4 | +RUN apt-get update && apt-get install -y \ |
| 5 | + software-properties-common |
| 6 | +# Add the "JAVA" ppa |
| 7 | +RUN add-apt-repository -y \ |
| 8 | + ppa:openjdk-r/ppa |
| 9 | + |
| 10 | +# Install OpenJDK-8 |
| 11 | +RUN apt-get update && \ |
| 12 | + apt-get install -y openjdk-8-jdk && \ |
| 13 | + apt-get install -y ant && \ |
| 14 | + apt-get clean; |
| 15 | + |
| 16 | +# Fix certificate issues |
| 17 | +RUN apt-get update && \ |
| 18 | + apt-get install ca-certificates-java && \ |
| 19 | + apt-get clean && \ |
| 20 | + update-ca-certificates -f \ |
| 21 | + rm -rf /var/lib/apt/lists/* && \ |
| 22 | + rm -rf /var/cache/oracle-jdk8-installer |
| 23 | + |
| 24 | +# Setup JAVA_HOME -- useful for docker commandline |
| 25 | +ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/ |
| 26 | +RUN export JAVA_HOME |
| 27 | +# see CA_CERTIFICATES_JAVA_VERSION notes above |
| 28 | +RUN /var/lib/dpkg/info/ca-certificates-java.postinst configure |
| 29 | +ENV SUBMITTY_INSTALL_DIR /usr/local/submitty |
| 30 | +ENV JUNIT_VERSION 4.12 |
| 31 | +ENV HAMCREST_VERSION 1.3 |
| 32 | +ENV JACOCO_VERSION 0.8.0 |
| 33 | + |
| 34 | + |
| 35 | +# Create the necessary directories |
| 36 | +RUN mkdir -p ${SUBMITTY_INSTALL_DIR}/java_tools/JUnit \ |
| 37 | + && mkdir -p ${SUBMITTY_INSTALL_DIR}/java_tools/hamcrest \ |
| 38 | + && mkdir -p ${SUBMITTY_INSTALL_DIR}/java_tools/jacoco |
| 39 | + |
| 40 | +# Get JUnit |
| 41 | +RUN apt-get update \ |
| 42 | + && apt-get install -y --no-install-recommends wget \ |
| 43 | + && rm -rf /var/lib/apt/lists/* \ |
| 44 | + && echo 0 \ |
| 45 | + && cd ${SUBMITTY_INSTALL_DIR}/java_tools/JUnit \ |
| 46 | + && wget https://repo1.maven.org/maven2/junit/junit/${JUNIT_VERSION}/junit-${JUNIT_VERSION}.jar -o /dev/null > /dev/null 2>&1 \ |
| 47 | + && cd / \ |
| 48 | + && apt-get purge -y --auto-remove wget |
| 49 | + |
| 50 | +# Get Hamcrest |
| 51 | +RUN apt-get update \ |
| 52 | + && apt-get install -y --no-install-recommends wget \ |
| 53 | + && rm -rf /var/lib/apt/lists/* \ |
| 54 | + && cd ${SUBMITTY_INSTALL_DIR}/java_tools/hamcrest \ |
| 55 | + && wget https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/${HAMCREST_VERSION}/hamcrest-core-${HAMCREST_VERSION}.jar -o /dev/null > /dev/null 2>&1 \ |
| 56 | + && cd / \ |
| 57 | + && apt-get purge -y --auto-remove wget |
| 58 | + |
| 59 | +# Get Jacoco |
| 60 | +RUN apt-get update \ |
| 61 | + && apt-get install -y --no-install-recommends wget unzip \ |
| 62 | + && rm -rf /var/lib/apt/lists/* \ |
| 63 | + && cd ${SUBMITTY_INSTALL_DIR}/java_tools/jacoco \ |
| 64 | + && wget https://github.com/jacoco/jacoco/releases/download/v${JACOCO_VERSION}/jacoco-${JACOCO_VERSION}.zip -o /dev/null > /dev/null 2>&1 \ |
| 65 | + && mkdir jacoco-${JACOCO_VERSION} \ |
| 66 | + && unzip jacoco-${JACOCO_VERSION}.zip -d jacoco-${JACOCO_VERSION} > /dev/null \ |
| 67 | + && mv jacoco-${JACOCO_VERSION}/lib/jacococli.jar jacococli.jar \ |
| 68 | + && mv jacoco-${JACOCO_VERSION}/lib/jacocoagent.jar jacocoagent.jar \ |
| 69 | + && rm -rf jacoco-${JACOCO_VERSION} \ |
| 70 | + && rm -f jacoco-${JACOCO_VERSION}.zip \ |
| 71 | + && chmod o+r . *.jar \ |
| 72 | + && cd / \ |
| 73 | + && apt-get purge -y --auto-remove wget unzip |
| 74 | + |
| 75 | +# Retrieve the Submitty Testrunner. |
| 76 | +# TODO: replace this with something more sustainable than a wget from master |
| 77 | +RUN apt-get update \ |
| 78 | + && apt-get install -y --no-install-recommends wget \ |
| 79 | + && rm -rf /var/lib/apt/lists/* \ |
| 80 | + && wget https://raw.githubusercontent.com/Submitty/Submitty/master/junit_test_runner/TestRunner.java --output-document=${SUBMITTY_INSTALL_DIR}/java_tools/JUnit/TestRunner.java \ |
| 81 | + && cd ${SUBMITTY_INSTALL_DIR}/java_tools/JUnit/ \ |
| 82 | + && /usr/bin/javac -cp ./junit-4.12.jar TestRunner.java \ |
| 83 | + && cd / \ |
| 84 | + && apt-get purge -y --auto-remove wget |
| 85 | + |
| 86 | + |
| 87 | +# Fix Permissions |
| 88 | +RUN chown -R root:${COURSE_BUILDERS_GROUP} ${SUBMITTY_INSTALL_DIR}/java_tools \ |
| 89 | + && chmod -R 755 ${SUBMITTY_INSTALL_DIR}/java_tools |
| 90 | + |
| 91 | + |
| 92 | +ENV MONO_VERSION 6.8.0.96 |
| 93 | + |
| 94 | +RUN apt-get update && apt-get install -y --no-install-recommends \ |
| 95 | + gnupg \ |
| 96 | + ca-certificates \ |
| 97 | + wget \ |
| 98 | + && rm -rf /var/lib/apt/lists/* |
| 99 | + |
| 100 | +RUN apt-get update && apt-get install -y --no-install-recommends \ |
| 101 | + apt-transport-https \ |
| 102 | + dirmngr \ |
| 103 | + && rm -rf /var/lib/apt/lists/* \ |
| 104 | + && echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic/snapshots/6.12.0 main" | tee /etc/apt/sources.list.d/mono-official.list \ |
| 105 | + && apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF \ |
| 106 | + && apt-get update && apt-get install -y --no-install-recommends \ |
| 107 | + mono-devel \ |
| 108 | + msbuild \ |
| 109 | + && rm -rf /var/lib/apt/lists/* /tmp/* |
| 110 | + |
| 111 | +ENV DAFNY_VER v2.3.0 |
| 112 | +ENV DAFNY_FILE dafny-2.3.0.10506-x64-debian-8.11.zip |
| 113 | +ENV SUBMITTY_INSTALL_DIR /usr/local/submitty |
| 114 | + |
| 115 | +RUN apt-get update \ |
| 116 | + && apt-get install -y --no-install-recommends wget unzip \ |
| 117 | + && rm -rf /var/lib/apt/lists/* \ |
| 118 | + && mkdir -p ${SUBMITTY_INSTALL_DIR}/Dafny \ |
| 119 | + && chown root:${COURSE_BUILDERS_GROUP} ${SUBMITTY_INSTALL_DIR}/Dafny \ |
| 120 | + && chmod -R 755 ${SUBMITTY_INSTALL_DIR}/Dafny \ |
| 121 | + && cd ${SUBMITTY_INSTALL_DIR}/Dafny \ |
| 122 | + && wget https://github.com/Microsoft/dafny/releases/download/${DAFNY_VER}/${DAFNY_FILE} \ |
| 123 | + && unzip $DAFNY_FILE \ |
| 124 | + && rm -f $DAFNY_FILE \ |
| 125 | + && chmod -R 755 ${SUBMITTY_INSTALL_DIR}/Dafny \ |
| 126 | + && cd / \ |
| 127 | + && apt-get purge -y --auto-remove wget unzip |
| 128 | + |
| 129 | +# dafny requires libgomp1 |
| 130 | +RUN apt-get update \ |
| 131 | + && apt-get install -y libgomp1 \ |
| 132 | + && rm -rf /var/lib/apt/lists/* CMD ["/bin/bash"] |
0 commit comments