diff --git a/.gitea/workflows/Build.yaml b/.gitea/workflows/Build.yaml deleted file mode 100644 index 9934e34..0000000 --- a/.gitea/workflows/Build.yaml +++ /dev/null @@ -1,269 +0,0 @@ -name: Build - -on: [push] - -jobs: - Build: - runs-on: runner - steps: - - name: checkout code - uses: https://eoelab.org:1027/actions/checkout@v4 - - - name: login gitea_registry - uses: https://eoelab.org:1027/actions/login-action@v3 - with: - registry: eoelab.org:1027 - username: ${{ secrets.USERNAME }} - password: ${{ secrets.PASSWD }} - - - name: py-c build - uses: https://eoelab.org:1027/actions/build-push-action@v6 - with: - push: true - context: python/cpu - tags: eoelab.org:1027/ben0i0d/jupyter:py-c - - - name: scipy-c build - uses: https://eoelab.org:1027/actions/build-push-action@v6 - with: - push: true - context: scipy/cpu - tags: eoelab.org:1027/ben0i0d/jupyter:scipy-c - - - name: pyai-c build - uses: https://eoelab.org:1027/actions/build-push-action@v6 - with: - push: true - context: pyai/cpu - tags: eoelab.org:1027/ben0i0d/jupyter:pyai-c - - - name: scrpy-c build - uses: https://eoelab.org:1027/actions/build-push-action@v6 - with: - push: true - context: scrpy - tags: eoelab.org:1027/ben0i0d/jupyter:scrpy - - - name: pyspark build - uses: https://eoelab.org:1027/actions/build-push-action@v6 - with: - push: true - context: pyspark - tags: eoelab.org:1027/ben0i0d/jupyter:pyspark - - - name: pyflink build - uses: https://eoelab.org:1027/actions/build-push-action@v6 - with: - push: true - context: pyflink - tags: eoelab.org:1027/ben0i0d/jupyter:pyflink - - - name: julia build - uses: https://eoelab.org:1027/actions/build-push-action@v6 - with: - push: true - context: julia - tags: eoelab.org:1027/ben0i0d/jupyter:julia - - - name: r build - uses: https://eoelab.org:1027/actions/build-push-action@v6 - with: - push: true - context: r - tags: eoelab.org:1027/ben0i0d/jupyter:r - - - name: novnc build - uses: https://eoelab.org:1027/actions/build-push-action@v6 - with: - push: true - context: novnc - tags: eoelab.org:1027/ben0i0d/jupyter:novnc - - - name: pyqt6 build - uses: https://eoelab.org:1027/actions/build-push-action@v6 - with: - push: true - context: pyqt6 - tags: eoelab.org:1027/ben0i0d/jupyter:pyqt6 - - - name: octave build - uses: https://eoelab.org:1027/actions/build-push-action@v6 - with: - push: true - context: octave - tags: eoelab.org:1027/ben0i0d/jupyter:octave - - - name: sagemath build - uses: https://eoelab.org:1027/actions/build-push-action@v6 - with: - push: true - context: sagemath - tags: eoelab.org:1027/ben0i0d/jupyter:sage - - - name: scilab build - uses: https://eoelab.org:1027/actions/build-push-action@v6 - with: - push: true - context: scilab - tags: eoelab.org:1027/ben0i0d/jupyter:scilab - - - name: maple build - uses: https://eoelab.org:1027/actions/build-push-action@v6 - with: - push: true - context: maple - tags: eoelab.org:1027/ben0i0d/jupyter:maple - - - name: mma build - uses: https://eoelab.org:1027/actions/build-push-action@v6 - with: - push: true - context: mathematica - tags: eoelab.org:1027/ben0i0d/jupyter:mma - - - name: matlab build - uses: https://eoelab.org:1027/actions/build-push-action@v6 - with: - push: true - context: matlab/minimal - tags: eoelab.org:1027/ben0i0d/jupyter:matlab-minimal - - - name: matlab-mcm build - uses: https://eoelab.org:1027/actions/build-push-action@v6 - with: - push: true - context: matlab/mcm - tags: eoelab.org:1027/ben0i0d/jupyter:matlab-mcm - - # Push: - # runs-on: runner - # needs: Build - # steps: - # - name: checkout code - # uses: https://eoelab.org:1027/actions/checkout@v4 - - # - name: login gitea_registry - # uses: https://eoelab.org:1027/actions/login-action@v3 - # with: - # username: ${{ secrets.USERNAME }} - # password: ${{ secrets.PASSWD }} - - # - name: py-c push - # uses: https://eoelab.org:1027/actions/build-push-action@v6 - # with: - # push: true - # context: python/cpu - # tags: ben0i0d/jupyter:py-c - - # - name: scipy push - # uses: https://eoelab.org:1027/actions/build-push-action@v6 - # with: - # push: true - # context: scipy/cpu - # tags: ben0i0d/jupyter:scipy-c - - # - name: pyai-c push - # uses: https://eoelab.org:1027/actions/build-push-action@v6 - # with: - # push: true - # context: pyai/cpu - # tags: ben0i0d/jupyter:pyai-c - - # - name: scrpy-c push - # uses: https://eoelab.org:1027/actions/build-push-action@v6 - # with: - # push: true - # context: scrpy - # tags: ben0i0d/jupyter:scrpy - - # - name: pyspark push - # uses: https://eoelab.org:1027/actions/build-push-action@v6 - # with: - # push: true - # context: pyspark - # tags: ben0i0d/jupyter:pyspark - - # - name: pyflink push - # uses: https://eoelab.org:1027/actions/build-push-action@v6 - # with: - # push: true - # context: pyflink - # tags: ben0i0d/jupyter:pyflink - - # - name: julia push - # uses: https://eoelab.org:1027/actions/build-push-action@v6 - # with: - # push: true - # context: julia - # tags: ben0i0d/jupyter:julia - - # - name: r push - # uses: https://eoelab.org:1027/actions/build-push-action@v6 - # with: - # push: true - # context: r - # tags: ben0i0d/jupyter:r - - # - name: novnc push - # uses: https://eoelab.org:1027/actions/build-push-action@v6 - # with: - # push: true - # context: novnc - # tags: ben0i0d/jupyter:novnc - - # - name: pyqt6 push - # uses: https://eoelab.org:1027/actions/build-push-action@v6 - # with: - # push: true - # context: pyqt6 - # tags: ben0i0d/jupyter:pyqt6 - - # - name: octave push - # uses: https://eoelab.org:1027/actions/build-push-action@v6 - # with: - # push: true - # context: octave - # tags: ben0i0d/jupyter:octave - - # - name: sagemath push - # uses: https://eoelab.org:1027/actions/build-push-action@v6 - # with: - # push: true - # context: sagemath - # tags: ben0i0d/jupyter:sage - - # - name: scilab push - # uses: https://eoelab.org:1027/actions/build-push-action@v6 - # with: - # push: true - # context: scilab - # tags: ben0i0d/jupyter:scilab - - # - name: maple push - # uses: https://eoelab.org:1027/actions/build-push-action@v6 - # with: - # push: true - # context: maple - # tags: ben0i0d/jupyter:maple - - # - name: mma push - # uses: https://eoelab.org:1027/actions/build-push-action@v6 - # with: - # push: true - # context: mathematica - # tags: ben0i0d/jupyter:mma - - # - name: matlab push - # uses: https://eoelab.org:1027/actions/build-push-action@v6 - # with: - # push: true - # context: matlab/minimal - # tags: ben0i0d/jupyter:matlab-minimal - - # - name: matlab-mcm push - # uses: https://eoelab.org:1027/actions/build-push-action@v6 - # with: - # push: true - # context: matlab/mcm - # tags: ben0i0d/jupyter:matlab-mcm - diff --git a/.gitea/workflows/Flow.yaml b/.gitea/workflows/Flow.yaml new file mode 100644 index 0000000..d8c92cc --- /dev/null +++ b/.gitea/workflows/Flow.yaml @@ -0,0 +1,286 @@ +name: Flow + +on: [push] + +jobs: + Base: + runs-on: runner + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + - name: py-c build + uses: https://eoelab.org:1027/actions/build-push-action@v6 + with: + context: python/cpu + tags: eoelab.org:1027/${{ gitea.repository }}:py-c + + SCIPY_C: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + - name: scipy-c build + uses: https://eoelab.org:1027/actions/build-push-action@v6 + with: + context: ScienceCompute/scipy/cpu + tags: eoelab.org:1027/${{ gitea.repository }}:scipy-c + + PYAI_C: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + - name: pyai-c build + uses: https://eoelab.org:1027/actions/build-push-action@v6 + with: + context: ScienceCompute/pyai/cpu + tags: eoelab.org:1027/${{ gitea.repository }}:pyai-c + + SCRPY_C: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + - name: scrpy-c build + uses: https://eoelab.org:1027/actions/build-push-action@v6 + with: + context: BigData/scrpy + tags: eoelab.org:1027/${{ gitea.repository }}:scrpy + + SQL: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + - name: scrpy-c build + uses: https://eoelab.org:1027/actions/build-push-action@v6 + with: + context: BigData/sql + tags: eoelab.org:1027/${{ gitea.repository }}:sql + + PYSPARK: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + - name: pyspark build + uses: https://eoelab.org:1027/actions/build-push-action@v6 + with: + context: BigData/pyspark + tags: eoelab.org:1027/${{ gitea.repository }}:pyspark + + PYFLINK: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + - name: pyflink build + uses: https://eoelab.org:1027/actions/build-push-action@v6 + with: + context: BigData/pyflink + tags: eoelab.org:1027/${{ gitea.repository }}:pyflink + + AGDA: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + + ANSIBLE: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + - name: ansible build + uses: https://eoelab.org:1027/actions/build-push-action@v6 + with: + context: Program/ansible + tags: eoelab.org:1027/${{ gitea.repository }}:ansible + + C: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + - name: c build + uses: https://eoelab.org:1027/actions/build-push-action@v6 + with: + context: Program/c + tags: eoelab.org:1027/${{ gitea.repository }}:c + + CADABRA: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + + CHAPEL: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + + CPP: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + + JULIA: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + - name: julia build + uses: https://eoelab.org:1027/actions/build-push-action@v6 + with: + context: Program/julia + tags: eoelab.org:1027/${{ gitea.repository }}:julia + + R: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + - name: r build + uses: https://eoelab.org:1027/actions/build-push-action@v6 + with: + context: Program/r + tags: eoelab.org:1027/${{ gitea.repository }}:r + + NOVNC: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + - name: novnc build + uses: https://eoelab.org:1027/actions/build-push-action@v6 + with: + context: Gui/novnc + tags: eoelab.org:1027/${{ gitea.repository }}:novnc + + PYQT6: + runs-on: runner + needs: NOVNC + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + - name: pyqt6 build + uses: https://eoelab.org:1027/actions/build-push-action@v6 + with: + context: Gui/pyqt6 + tags: eoelab.org:1027/${{ gitea.repository }}:pyqt6 + + OCTAVE: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + - name: octave build + uses: https://eoelab.org:1027/actions/build-push-action@v6 + with: + context: Math/octave + tags: eoelab.org:1027/${{ gitea.repository }}:octave + + SAGEMATH: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + - name: sagemath build + uses: https://eoelab.org:1027/actions/build-push-action@v6 + with: + context: Math/sagemath + tags: eoelab.org:1027/${{ gitea.repository }}:sage + + SCILAB: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + - name: scilab build + uses: https://eoelab.org:1027/actions/build-push-action@v6 + with: + context: Math/scilab + tags: eoelab.org:1027/${{ gitea.repository }}:scilab + + MAPLE: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + - name: maple build + uses: https://eoelab.org:1027/actions/build-push-action@v6 + with: + context: Math/maple + tags: eoelab.org:1027/${{ gitea.repository }}:maple + + MMA: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + - name: mma build + uses: https://eoelab.org:1027/actions/build-push-action@v6 + with: + context: Math/mathematica + tags: eoelab.org:1027/${{ gitea.repository }}:mma + + MATLAB_MINIMAL: + runs-on: runner + needs: Base + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + - name: matlab build + uses: https://eoelab.org:1027/actions/build-push-action@v6 + with: + context: Math/matlab/minimal + tags: eoelab.org:1027/${{ gitea.repository }}:matlab-minimal + + MATLAB_MCM: + runs-on: runner + needs: MATLAB_MINIMAL + steps: + - name: checkout code + uses: https://eoelab.org:1027/actions/checkout@v4 + - name: matlab-mcm build + uses: https://eoelab.org:1027/actions/build-push-action@v6 + with: + context: Math/matlab/mcm + tags: eoelab.org:1027/${{ gitea.repository }}:matlab-mcm + + + Push: + runs-on: runner + needs: [ANSIBLE] #MATLAB_MCM, MAPLE, MMA + steps: + - name: login gitea_registry + uses: https://eoelab.org:1027/actions/login-action@v3 + with: + registry: eoelab.org:1027 + username: ${{ secrets.USERNAME }} + password: ${{ secrets.PASSWD }} + - name: push images to gitea_registry + run: docker image push "eoelab.org:1027/${{ gitea.repository }}" --all-tags + diff --git a/pyflink/Dockerfile b/BigData/pyflink/Dockerfile similarity index 100% rename from pyflink/Dockerfile rename to BigData/pyflink/Dockerfile diff --git a/pyspark/Dockerfile b/BigData/pyspark/Dockerfile similarity index 97% rename from pyspark/Dockerfile rename to BigData/pyspark/Dockerfile index 5086a3f..888f182 100644 --- a/pyspark/Dockerfile +++ b/BigData/pyspark/Dockerfile @@ -30,7 +30,7 @@ RUN apt-get update --yes && \ USER ${NB_UID} -# Install pyarrow+findspark +# Install pyarrow+findspark+duckdb RUN pip install 'pyspark' 'findspark' && \ pip cache purge diff --git a/pyspark/ipython_kernel_config.py b/BigData/pyspark/ipython_kernel_config.py similarity index 100% rename from pyspark/ipython_kernel_config.py rename to BigData/pyspark/ipython_kernel_config.py diff --git a/scrpy/Dockerfile b/BigData/scrpy/Dockerfile similarity index 100% rename from scrpy/Dockerfile rename to BigData/scrpy/Dockerfile diff --git a/BigData/sql/Dockerfile b/BigData/sql/Dockerfile new file mode 100644 index 0000000..f8627c7 --- /dev/null +++ b/BigData/sql/Dockerfile @@ -0,0 +1,4 @@ +FROM eoelab.org:1027/ben0i0d/jupyter:py-c + +RUN pip install duckdb duckdb_kernel && \ + pip cache purge \ No newline at end of file diff --git a/novnc/Dockerfile b/Gui/novnc/Dockerfile similarity index 100% rename from novnc/Dockerfile rename to Gui/novnc/Dockerfile diff --git a/pyqt6/Dockerfile b/Gui/pyqt6/Dockerfile similarity index 100% rename from pyqt6/Dockerfile rename to Gui/pyqt6/Dockerfile diff --git a/maple/Dockerfile b/Math/maple/Dockerfile similarity index 100% rename from maple/Dockerfile rename to Math/maple/Dockerfile diff --git a/maple/kernel/kernel.json b/Math/maple/kernel/kernel.json similarity index 100% rename from maple/kernel/kernel.json rename to Math/maple/kernel/kernel.json diff --git a/maple/kernel/logo-32x32.png b/Math/maple/kernel/logo-32x32.png similarity index 100% rename from maple/kernel/logo-32x32.png rename to Math/maple/kernel/logo-32x32.png diff --git a/maple/kernel/logo-64x64.png b/Math/maple/kernel/logo-64x64.png similarity index 100% rename from maple/kernel/logo-64x64.png rename to Math/maple/kernel/logo-64x64.png diff --git a/mathematica/Dockerfile b/Math/mathematica/Dockerfile similarity index 100% rename from mathematica/Dockerfile rename to Math/mathematica/Dockerfile diff --git a/mathematica/kernel/kernel.json b/Math/mathematica/kernel/kernel.json similarity index 100% rename from mathematica/kernel/kernel.json rename to Math/mathematica/kernel/kernel.json diff --git a/matlab/mcm/Dockerfile b/Math/matlab/mcm/Dockerfile similarity index 100% rename from matlab/mcm/Dockerfile rename to Math/matlab/mcm/Dockerfile diff --git a/matlab/mcm/conf/mpm_input_r2023b.txt b/Math/matlab/mcm/conf/mpm_input_r2023b.txt similarity index 100% rename from matlab/mcm/conf/mpm_input_r2023b.txt rename to Math/matlab/mcm/conf/mpm_input_r2023b.txt diff --git a/matlab/minimal/Dockerfile b/Math/matlab/minimal/Dockerfile similarity index 100% rename from matlab/minimal/Dockerfile rename to Math/matlab/minimal/Dockerfile diff --git a/matlab/minimal/conf/dep.txt b/Math/matlab/minimal/conf/dep.txt similarity index 100% rename from matlab/minimal/conf/dep.txt rename to Math/matlab/minimal/conf/dep.txt diff --git a/matlab/minimal/conf/mpm_input_r2023b.txt b/Math/matlab/minimal/conf/mpm_input_r2023b.txt similarity index 100% rename from matlab/minimal/conf/mpm_input_r2023b.txt rename to Math/matlab/minimal/conf/mpm_input_r2023b.txt diff --git a/octave/Dockerfile b/Math/octave/Dockerfile similarity index 100% rename from octave/Dockerfile rename to Math/octave/Dockerfile diff --git a/sagemath/Dockerfile b/Math/sagemath/Dockerfile similarity index 100% rename from sagemath/Dockerfile rename to Math/sagemath/Dockerfile diff --git a/scilab/Dockerfile b/Math/scilab/Dockerfile similarity index 100% rename from scilab/Dockerfile rename to Math/scilab/Dockerfile diff --git a/Program/agda/Dockerfile b/Program/agda/Dockerfile new file mode 100644 index 0000000..4217a2f --- /dev/null +++ b/Program/agda/Dockerfile @@ -0,0 +1,20 @@ +FROM eoelab.org:1027/ben0i0d/jupyter:py-c + +USER root + +WORKDIR /opt + +RUN apt-get update --yes && \ + apt-get install --yes --no-install-recommends make && \ + apt-get clean && rm -rf /var/lib/apt/lists/* && \ + git clone --depth=1 https://eoelab.org:1031/mirrored-sources/agda-kernel.git && cd agda-kernel && \ + pip install --no-cache-dir agda_kernel && \ + python -m agda_kernel.install && \ + make codemirror-install + +USER ${NB_UID} +WORKDIR "${HOME}" + + + + diff --git a/Program/ansible/Dockerfile b/Program/ansible/Dockerfile new file mode 100644 index 0000000..ba0a7fe --- /dev/null +++ b/Program/ansible/Dockerfile @@ -0,0 +1,4 @@ +FROM eoelab.org:1027/ben0i0d/jupyter:py-c + +RUN pip install ansible-kernel && \ + python -m ansible_kernel.install diff --git a/Program/c/Dockerfile b/Program/c/Dockerfile new file mode 100644 index 0000000..afe17c7 --- /dev/null +++ b/Program/c/Dockerfile @@ -0,0 +1,21 @@ +FROM eoelab.org:1027/ben0i0d/jupyter:py-c AS builder + +USER root + +WORKDIR /opt + +RUN apt-get update --yes && apt-get install --yes --no-install-recommends git && apt-get clean && rm -rf /var/lib/apt/lists/* && \ + git clone --depth 1 https://eoelab.org:1027/mirrors/jupyter-c-kernel.git + +FROM eoelab.org:1027/ben0i0d/jupyter:py-c + +COPY --chown="${NB_UID}:${NB_GID}" --from=builder /opt/jupyter-c-kernel/ /opt/jupyter-c-kernel/ + +USER root + +RUN apt-get update --yes && apt-get install --yes gcc && apt-get clean && rm -rf /var/lib/apt/lists/* + +USER ${NB_UID} + +RUN cd /opt/jupyter-c-kernel && pip install -e . && \ + cd jupyter_c_kernel && install_c_kernel --sys-prefix diff --git a/Program/cadabra/Dockerfile b/Program/cadabra/Dockerfile new file mode 100644 index 0000000..f9db573 --- /dev/null +++ b/Program/cadabra/Dockerfile @@ -0,0 +1,17 @@ +FROM eoelab.org:1027/ben0i0d/jupyter:py-c + + + +USER root + +WORKDIR /opt + +RUN apt-get update --yes && \ + apt-get install --yes --no-install-recommends cadabra2 && \ + apt-get clean && rm -rf /var/lib/apt/lists/* + +USER ${NB_UID} +WORKDIR "${HOME}" + + + diff --git a/Program/chapel/Dockerfile b/Program/chapel/Dockerfile new file mode 100644 index 0000000..fa7a6f5 --- /dev/null +++ b/Program/chapel/Dockerfile @@ -0,0 +1,24 @@ +FROM eoelab.org:1027/ben0i0d/jupyter:py-c + + + +WORKDIR /opt + +COPY chapel-1.31.0.tar.gz ./ + +USER root + +ENV PATH="/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:${PATH}" \ + CHPL_LIB_PIC=shared + +RUN apt-get update --yes && \ + apt-get install --yes --no-install-recommends gcc g++ m4 perl make mawk pkg-config cmake \ + llvm-dev llvm clang libclang-dev libclang-cpp-dev libedit-dev && \ + apt-get clean && rm -rf /var/lib/apt/lists/* && \ + tar -xzf chapel-1.31.0.tar.gz && \ + cd chapel-1.31.0 && \ + source util/quickstart/setchplenv.bash && make && \ + pip install --no-cache-dir jupyter-kernel-chapel + +USER ${NB_UID} +WORKDIR "${HOME}" diff --git a/Program/chapel/chapel-1.31.0.tar.gz b/Program/chapel/chapel-1.31.0.tar.gz new file mode 100644 index 0000000..4d5fc1f --- /dev/null +++ b/Program/chapel/chapel-1.31.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b861c9a354f6fcf66081256f7ec703d6dd2cd68ea363b400d10ac00bf308679 +size 87940930 diff --git a/Program/cpp/Dockerfile b/Program/cpp/Dockerfile new file mode 100644 index 0000000..36e7ddc --- /dev/null +++ b/Program/cpp/Dockerfile @@ -0,0 +1,13 @@ +FROM eoelab.org:1027/ben0i0d/jupyter:py-c + +USER root + +RUN apt-get update --yes && \ + apt-get install --yes g++ && \ + apt-get clean && rm -rf /var/lib/apt/lists/* + +USER ${NB_UID} + +# Install Cpp kernel +RUN mamba install --yes -c conda-forge xeus-cling && \ + mamba clean --all -f -y diff --git a/Program/dotnet/Dockerfile b/Program/dotnet/Dockerfile new file mode 100644 index 0000000..3344221 --- /dev/null +++ b/Program/dotnet/Dockerfile @@ -0,0 +1,19 @@ +FROM eoelab.org:1027/ben0i0d/jupyter:py-c + + + +USER root +# Install Dotnet SDK+Runtime + kernel +ENV PATH ${PATH}:/opt/dotnet/tools +RUN mkdir -p /opt/dotnet/tools && \ + wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb && \ + sudo dpkg -i packages-microsoft-prod.deb && rm packages-microsoft-prod.deb && \ + apt-get update && apt-get install -y --no-install-recommends dotnet-sdk-7.0 && \ + apt-get clean && rm -rf /var/lib/apt/lists/* && \ + dotnet tool install Microsoft.dotnet-interactive --tool-path /opt/dotnet/tools && \ + dotnet interactive jupyter install && \ + fix-permissions /opt/dotnet && \ + fix-permissions "${CONDA_DIR}" && \ + fix-permissions "/home/${NB_USER}" + +USER $NB_USER diff --git a/Program/dyalog/Dockerfile b/Program/dyalog/Dockerfile new file mode 100644 index 0000000..c0d8b95 --- /dev/null +++ b/Program/dyalog/Dockerfile @@ -0,0 +1,18 @@ +FROM eoelab.org:1027/ben0i0d/jupyter:py-c + + + +USER root + +WORKDIR /opt + +COPY linux_64_18.2.45405_unicode.x86_64.deb ./ + +RUN dpkg -i linux_64_18.2.45405_unicode.x86_64.deb && \ + rm linux_64_18.2.45405_unicode.x86_64.deb && \ + pip install dyalog-jupyter-kernel + +USER ${NB_UID} +WORKDIR "${HOME}" + + diff --git a/Program/dyalog/linux_64_18.2.45405_unicode.x86_64.deb b/Program/dyalog/linux_64_18.2.45405_unicode.x86_64.deb new file mode 100644 index 0000000..d292ccd --- /dev/null +++ b/Program/dyalog/linux_64_18.2.45405_unicode.x86_64.deb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a40fd619303a62fc06e0c82a6e23c12ca48a3ed2c640cec1ccae819b2cf9a663 +size 190690700 diff --git a/Program/fortran/Dockerfile b/Program/fortran/Dockerfile new file mode 100644 index 0000000..0f6fb23 --- /dev/null +++ b/Program/fortran/Dockerfile @@ -0,0 +1,12 @@ +FROM eoelab.org:1027/ben0i0d/jupyter:py-c + + + +USER root +# Install fortran kernel +RUN mamba install --yes -c conda-forge lfortran && \ + mamba clean --all -f -y && \ + fix-permissions "${CONDA_DIR}" && \ + fix-permissions "/home/${NB_USER}" + +USER ${NB_UID} diff --git a/Program/go/Dockerfile b/Program/go/Dockerfile new file mode 100644 index 0000000..64ccc3e --- /dev/null +++ b/Program/go/Dockerfile @@ -0,0 +1,23 @@ +FROM eoelab.org:1027/ben0i0d/jupyter:py-c + + + +USER root +# Install system dependencies +RUN mkdir -p /opt/go && \ + apt-get update && apt-get install -yq --no-install-recommends golang gcc libc6-dev && \ + apt-get clean && rm -rf /var/lib/apt/lists/* && \ + go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct && \ + go env -w GOPATH=/opt/go && \ + go install github.com/gopherdata/gophernotes@v0.7.5 && \ + mkdir -p /opt/conda/share/jupyter/kernels/gophernotes && \ + cd /opt/conda/share/jupyter/kernels/gophernotes && \ + cp "$(go env GOPATH)"/pkg/mod/github.com/gopherdata/gophernotes@v0.7.5/kernel/* "." && \ + chmod +w ./kernel.json && \ + # in case copied kernel.json has no write permission + sed "s|gophernotes|$(go env GOPATH)/bin/gophernotes|" < kernel.json.in > kernel.json && \ + fix-permissions /opt/go && \ + fix-permissions "${CONDA_DIR}" && \ + fix-permissions "/home/${NB_USER}" + +USER $NB_USER diff --git a/Program/haskell/Dockerfile b/Program/haskell/Dockerfile new file mode 100644 index 0000000..9a32df1 --- /dev/null +++ b/Program/haskell/Dockerfile @@ -0,0 +1,69 @@ +FROM eoelab.org:1027/ben0i0d/jupyter:py-c + +# Extra arguments to `stack build`. Used to build --fast, see Makefile. +ARG STACK_ARGS= +ARG STACK_BINDIST="stack-2.11.1-linux-x86_64" + + + +USER root + +ENV PATH="/opt/bin:/opt/ghc/bin:${PATH}" \ + STACK_ROOT=/opt/stack + +# Stack global non-project-specific config stack.config.yaml +# Stack global project stack.yaml +COPY stack.config.yaml /etc/stack/config.yaml +COPY global-hints.yaml /etc/stack/global-hints-cache.yaml +COPY stack-2.11.1-linux-x86_64.tar.gz /tmp/stack-2.11.1-linux-x86_64.tar.gz +COPY global-project.stack.yaml $STACK_ROOT/global-project/stack.yaml + + +RUN fix-permissions $STACK_ROOT && fix-permissions /etc/stack/ && \ +# Install system dependencies + apt-get update && apt-get install -yq --no-install-recommends python3-pip libtinfo-dev libzmq3-dev libcairo2-dev libpango1.0-dev \ + libmagic-dev libblas-dev liblapack-dev libffi-dev libgmp-dev gnupg netbase graphviz gnuplot-nox \ + g++ gcc libc6-dev libffi-dev libgmp-dev make xz-utils zlib1g-dev less && \ + apt-get clean && rm -rf /var/lib/apt/lists/* && \ +# Stack Linux (generic) Manual download + cd /tmp && tar zxf ${STACK_BINDIST}.tar.gz && cp ${STACK_BINDIST}/stack /usr/bin/stack && \ + rm -rf ${STACK_BINDIST}.tar.gz ${STACK_BINDIST} && \ + chown --recursive $NB_UID:users $STACK_ROOT/global-project && \ + fix-permissions $STACK_ROOT/global-project && \ +# Clone IHaskell and install ghc from the IHaskell resolver + cd /opt && \ + curl -L "https://eoelab.org:1031/mirrored-sources/IHaskell/-/archive/master/IHaskell-master.tar.gz" | tar xzf - && mv *IHaskell* IHaskell && \ + curl -L "https://eoelab.org:1031/mirrored-sources/hvega/-/archive/main/hvega-main.tar.gz" | tar xzf - && mv *hvega* hvega && \ + fix-permissions /opt/IHaskell && \ + fix-permissions $STACK_ROOT && \ + fix-permissions /opt/hvega && \ + mkdir -p $HOME/.cabal && \ + echo "repository mirrors.ustc.edu.cn\n url: https://mirrors.ustc.edu.cn/hackage/\n secure: True" > $HOME/.cabal/config && \ + stack setup && \ + fix-permissions $STACK_ROOT && \ + rm /opt/stack/programs/x86_64-linux/ghc*.tar.xz && \ +# Build IHaskell +# Note that we are NOT in the /opt/IHaskell directory here, we are installing ihaskell via the paths given in /opt/stack/global-project/stack.yaml + stack build $STACK_ARGS ihaskell && \ + fix-permissions /opt/IHaskell && \ + fix-permissions $STACK_ROOT && \ +# Install IHaskell.Display libraries + stack build $STACK_ARGS ihaskell-charts && \ + stack build $STACK_ARGS ihaskell-widgets && \ + stack build $STACK_ARGS hvega && \ + stack build $STACK_ARGS ihaskell-hvega && \ + fix-permissions $STACK_ROOT && \ +# Fix for https://github.com/IHaskell/ihaskell-notebook/issues/14#issuecomment-636334824 + fix-permissions /opt/IHaskell && \ + fix-permissions /opt/hvega && \ +# Install system-level ghc using the ghc which was installed by stack.using the IHaskell resolver. + mkdir -p /opt/ghc && ln -s `stack path --compiler-bin` /opt/ghc/bin && \ + fix-permissions /opt/ghc && \ + fix-permissions "${CONDA_DIR}" && \ + fix-permissions "/home/${NB_USER}" + +# Switch back to jovyan user +USER $NB_UID +RUN stack exec ihaskell -- install --stack --prefix=/opt/conda/ + + diff --git a/Program/haskell/global-hints.yaml b/Program/haskell/global-hints.yaml new file mode 100644 index 0000000..74f884f --- /dev/null +++ b/Program/haskell/global-hints.yaml @@ -0,0 +1,1688 @@ +# Packages found in the global package database for each GHC version. +# Used by post-pantry Stack (merged to master August 2018). +# This file auto-generated by update-global-hints.hs. +# Please ensure this is updated when a new version of GHC is released. + +ghc-8.4.2: + ghc: 8.4.2 + bytestring: 0.10.8.2 + unix: 2.7.2.2 + haskeline: 0.7.4.2 + stm: 2.4.5.0 + Cabal: 2.2.0.1 + base: 4.11.1.0 + time: 1.8.0.2 + xhtml: 3000.2.2.1 + text: 1.2.3.0 + hpc: 0.6.0.3 + filepath: 1.4.2 + process: 1.6.3.0 + parsec: 3.1.13.0 + ghc-compact: 0.1.0.0 + array: 0.5.2.0 + Win32: 2.6.1.0 + integer-gmp: 1.0.2.0 + containers: 0.5.11.0 + ghc-boot: 8.4.2 + binary: 0.8.5.1 + ghc-prim: 0.5.2.0 + mtl: 2.2.2 + ghci: 8.4.2 + rts: '1.0' + terminfo: 0.4.1.1 + transformers: 0.5.5.0 + deepseq: 1.4.3.0 + ghc-boot-th: 8.4.2 + pretty: 1.1.3.6 + template-haskell: 2.13.0.0 + directory: 1.3.1.5 +ghc-8.10.7: + exceptions: 0.10.4 + ghc: 8.10.7 + bytestring: 0.10.12.0 + unix: 2.7.2.2 + haskeline: 0.8.2 + stm: 2.5.0.1 + Cabal: 3.2.1.0 + base: 4.14.3.0 + time: 1.9.3 + xhtml: 3000.2.2.1 + text: 1.2.4.1 + hpc: 0.6.1.0 + filepath: 1.4.2.1 + process: 1.6.13.2 + parsec: 3.1.14.0 + ghc-compact: 0.1.0.0 + array: 0.5.4.0 + Win32: 2.6.2.1 + integer-gmp: 1.0.3.0 + containers: 0.6.5.1 + libiserv: 8.10.7 + ghc-boot: 8.10.7 + binary: 0.8.8.0 + ghc-prim: 0.6.1 + mtl: 2.2.2 + ghc-heap: 8.10.7 + ghci: 8.10.7 + rts: 1.0.1 + terminfo: 0.4.1.4 + transformers: 0.5.6.2 + deepseq: 1.4.4.0 + ghc-boot-th: 8.10.7 + pretty: 1.1.3.6 + template-haskell: 2.16.0.0 + directory: 1.3.6.0 +ghc-8.8.3: + ghc: 8.8.3 + bytestring: 0.10.10.0 + unix: 2.7.2.2 + haskeline: 0.7.5.0 + stm: 2.5.0.0 + Cabal: 3.0.1.0 + base: 4.13.0.0 + time: 1.9.3 + xhtml: 3000.2.2.1 + text: 1.2.4.0 + hpc: 0.6.0.3 + filepath: 1.4.2.1 + process: 1.6.8.0 + parsec: 3.1.14.0 + ghc-compact: 0.1.0.0 + array: 0.5.4.0 + Win32: 2.6.1.0 + integer-gmp: 1.0.2.0 + containers: 0.6.2.1 + libiserv: 8.8.3 + ghc-boot: 8.8.3 + binary: 0.8.7.0 + ghc-prim: 0.5.3 + mtl: 2.2.2 + ghc-heap: 8.8.3 + ghci: 8.8.3 + rts: '1.0' + terminfo: 0.4.1.4 + transformers: 0.5.6.2 + deepseq: 1.4.4.0 + ghc-boot-th: 8.8.3 + pretty: 1.1.3.6 + template-haskell: 2.15.0.0 + directory: 1.3.6.0 +ghc-8.8.4: + ghc: 8.8.4 + bytestring: 0.10.10.1 + unix: 2.7.2.2 + haskeline: 0.7.5.0 + stm: 2.5.0.0 + Cabal: 3.0.1.0 + base: 4.13.0.0 + time: 1.9.3 + xhtml: 3000.2.2.1 + text: 1.2.4.0 + hpc: 0.6.0.3 + filepath: 1.4.2.1 + process: 1.6.9.0 + parsec: 3.1.14.0 + ghc-compact: 0.1.0.0 + array: 0.5.4.0 + Win32: 2.6.1.0 + integer-gmp: 1.0.2.0 + containers: 0.6.2.1 + libiserv: 8.8.4 + ghc-boot: 8.8.4 + binary: 0.8.7.0 + ghc-prim: 0.5.3 + mtl: 2.2.2 + ghc-heap: 8.8.4 + ghci: 8.8.4 + rts: '1.0' + terminfo: 0.4.1.4 + transformers: 0.5.6.2 + deepseq: 1.4.4.0 + ghc-boot-th: 8.8.4 + pretty: 1.1.3.6 + template-haskell: 2.15.0.0 + directory: 1.3.6.0 +ghc-8.0.1: + ghc: 8.0.1 + hoopl: 3.10.2.1 + bytestring: 0.10.8.1 + unix: 2.7.2.0 + haskeline: 0.7.2.3 + Cabal: 1.24.0.0 + base: 4.9.0.0 + time: 1.6.0.1 + xhtml: 3000.2.1 + hpc: 0.6.0.3 + filepath: 1.4.1.0 + process: 1.4.2.0 + array: 0.5.1.1 + Win32: 2.3.1.1 + integer-gmp: 1.0.0.1 + containers: 0.5.7.1 + ghc-boot: 8.0.1 + binary: 0.8.3.0 + ghc-prim: 0.5.0.0 + ghci: 8.0.1 + rts: '1.0' + terminfo: 0.4.0.2 + transformers: 0.5.2.0 + deepseq: 1.4.2.0 + ghc-boot-th: 8.0.1 + pretty: 1.1.3.3 + template-haskell: 2.11.0.0 + directory: 1.2.6.2 +ghc-9.2.2: + exceptions: 0.10.4 + ghc: 9.2.2 + bytestring: 0.11.3.0 + unix: 2.7.2.2 + haskeline: 0.8.2 + stm: 2.5.0.2 + Cabal: 3.6.3.0 + base: 4.16.1.0 + time: 1.11.1.1 + xhtml: 3000.2.2.1 + text: 1.2.5.0 + hpc: 0.6.1.0 + ghc-bignum: '1.2' + filepath: 1.4.2.2 + process: 1.6.13.2 + parsec: 3.1.15.0 + ghc-compact: 0.1.0.0 + array: 0.5.4.0 + Win32: 2.12.0.1 + integer-gmp: '1.1' + containers: 0.6.5.1 + libiserv: 9.2.2 + ghc-boot: 9.2.2 + binary: 0.8.9.0 + ghc-prim: 0.8.0 + mtl: 2.2.2 + ghc-heap: 9.2.2 + ghci: 9.2.2 + rts: 1.0.2 + terminfo: 0.4.1.5 + transformers: 0.5.6.2 + deepseq: 1.4.6.1 + ghc-boot-th: 9.2.2 + pretty: 1.1.3.6 + template-haskell: 2.18.0.0 + directory: 1.3.6.2 +ghc-8.8.2: + ghc: 8.8.2 + bytestring: 0.10.10.0 + unix: 2.7.2.2 + haskeline: 0.7.5.0 + stm: 2.5.0.0 + Cabal: 3.0.1.0 + base: 4.13.0.0 + time: 1.9.3 + xhtml: 3000.2.2.1 + text: 1.2.4.0 + hpc: 0.6.0.3 + filepath: 1.4.2.1 + process: 1.6.7.0 + parsec: 3.1.14.0 + ghc-compact: 0.1.0.0 + array: 0.5.4.0 + Win32: 2.6.1.0 + integer-gmp: 1.0.2.0 + containers: 0.6.2.1 + libiserv: 8.8.2 + ghc-boot: 8.8.2 + binary: 0.8.7.0 + ghc-prim: 0.5.3 + mtl: 2.2.2 + ghc-heap: 8.8.2 + ghci: 8.8.2 + rts: '1.0' + terminfo: 0.4.1.4 + transformers: 0.5.6.2 + deepseq: 1.4.4.0 + ghc-boot-th: 8.8.2 + pretty: 1.1.3.6 + template-haskell: 2.15.0.0 + directory: 1.3.4.0 +ghc-8.2.2: + ghc: 8.2.2 + hoopl: 3.10.2.2 + bytestring: 0.10.8.2 + unix: 2.7.2.2 + haskeline: 0.7.4.0 + Cabal: 2.0.1.0 + base: 4.10.1.0 + time: 1.8.0.2 + xhtml: 3000.2.2 + hpc: 0.6.0.3 + filepath: 1.4.1.2 + process: 1.6.1.0 + ghc-compact: 0.1.0.0 + array: 0.5.2.0 + Win32: 2.5.4.1 + integer-gmp: 1.0.1.0 + containers: 0.5.10.2 + ghc-boot: 8.2.2 + binary: 0.8.5.1 + ghc-prim: 0.5.1.1 + ghci: 8.2.2 + rts: '1.0' + terminfo: 0.4.1.0 + transformers: 0.5.2.0 + deepseq: 1.4.3.0 + ghc-boot-th: 8.2.2 + pretty: 1.1.3.3 + template-haskell: 2.12.0.0 + directory: 1.3.0.2 +ghc-8.4.4: + ghc: 8.4.4 + bytestring: 0.10.8.2 + unix: 2.7.2.2 + haskeline: 0.7.4.2 + stm: 2.4.5.1 + Cabal: 2.2.0.1 + base: 4.11.1.0 + time: 1.8.0.2 + xhtml: 3000.2.2.1 + text: 1.2.3.1 + hpc: 0.6.0.3 + filepath: 1.4.2 + process: 1.6.3.0 + parsec: 3.1.13.0 + ghc-compact: 0.1.0.0 + array: 0.5.2.0 + Win32: 2.6.1.0 + integer-gmp: 1.0.2.0 + containers: 0.5.11.0 + ghc-boot: 8.4.4 + binary: 0.8.5.1 + ghc-prim: 0.5.2.0 + mtl: 2.2.2 + ghci: 8.4.4 + rts: '1.0' + terminfo: 0.4.1.1 + transformers: 0.5.5.0 + deepseq: 1.4.3.0 + ghc-boot-th: 8.4.4 + pretty: 1.1.3.6 + template-haskell: 2.13.0.0 + directory: 1.3.1.5 +ghc-9.0.1: + exceptions: 0.10.4 + ghc: 9.0.1 + bytestring: 0.10.12.1 + unix: 2.7.2.2 + haskeline: 0.8.1.0 + stm: 2.5.0.0 + Cabal: 3.4.0.0 + base: 4.15.0.0 + time: 1.9.3 + xhtml: 3000.2.2.1 + text: 1.2.4.1 + hpc: 0.6.1.0 + ghc-bignum: '1.0' + filepath: 1.4.2.1 + process: 1.6.11.0 + parsec: 3.1.14.0 + ghc-compact: 0.1.0.0 + array: 0.5.4.0 + Win32: 2.10.0.0 + integer-gmp: '1.1' + containers: 0.6.4.1 + libiserv: 9.0.1 + ghc-boot: 9.0.1 + binary: 0.8.8.0 + ghc-prim: 0.7.0 + mtl: 2.2.2 + ghc-heap: 9.0.1 + ghci: 9.0.1 + rts: '1.0' + terminfo: 0.4.1.4 + transformers: 0.5.6.2 + deepseq: 1.4.5.0 + ghc-boot-th: 9.0.1 + pretty: 1.1.3.6 + template-haskell: 2.17.0.0 + directory: 1.3.6.1 +ghc-9.2.3: + exceptions: 0.10.4 + ghc: 9.2.3 + bytestring: 0.11.3.1 + unix: 2.7.2.2 + haskeline: 0.8.2 + stm: 2.5.0.2 + Cabal: 3.6.3.0 + base: 4.16.2.0 + time: 1.11.1.1 + xhtml: 3000.2.2.1 + text: 1.2.5.0 + hpc: 0.6.1.0 + ghc-bignum: '1.2' + filepath: 1.4.2.2 + process: 1.6.13.2 + parsec: 3.1.15.0 + ghc-compact: 0.1.0.0 + array: 0.5.4.0 + Win32: 2.12.0.1 + integer-gmp: '1.1' + containers: 0.6.5.1 + libiserv: 9.2.3 + ghc-boot: 9.2.3 + binary: 0.8.9.0 + ghc-prim: 0.8.0 + mtl: 2.2.2 + ghc-heap: 9.2.3 + ghci: 9.2.3 + rts: 1.0.2 + terminfo: 0.4.1.5 + transformers: 0.5.6.2 + deepseq: 1.4.6.1 + ghc-boot-th: 9.2.3 + pretty: 1.1.3.6 + template-haskell: 2.18.0.0 + directory: 1.3.6.2 +ghc-8.10.1: + exceptions: 0.10.4 + ghc: 8.10.1 + bytestring: 0.10.10.0 + unix: 2.7.2.2 + haskeline: 0.8.0.0 + stm: 2.5.0.0 + Cabal: 3.2.0.0 + base: 4.14.0.0 + time: 1.9.3 + xhtml: 3000.2.2.1 + text: 1.2.3.2 + hpc: 0.6.1.0 + filepath: 1.4.2.1 + process: 1.6.8.2 + parsec: 3.1.14.0 + ghc-compact: 0.1.0.0 + array: 0.5.4.0 + Win32: 2.6.1.0 + integer-gmp: 1.0.3.0 + containers: 0.6.2.1 + libiserv: 8.10.1 + ghc-boot: 8.10.1 + binary: 0.8.8.0 + ghc-prim: 0.6.1 + mtl: 2.2.2 + ghc-heap: 8.10.1 + ghci: 8.10.1 + rts: '1.0' + terminfo: 0.4.1.4 + transformers: 0.5.6.2 + deepseq: 1.4.4.0 + ghc-boot-th: 8.10.1 + pretty: 1.1.3.6 + template-haskell: 2.16.0.0 + directory: 1.3.6.0 +ghc-8.10.4: + exceptions: 0.10.4 + ghc: 8.10.4 + bytestring: 0.10.12.0 + unix: 2.7.2.2 + haskeline: 0.8.0.1 + stm: 2.5.0.0 + Cabal: 3.2.1.0 + base: 4.14.1.0 + time: 1.9.3 + xhtml: 3000.2.2.1 + text: 1.2.4.1 + hpc: 0.6.1.0 + filepath: 1.4.2.1 + process: 1.6.9.0 + parsec: 3.1.14.0 + ghc-compact: 0.1.0.0 + array: 0.5.4.0 + Win32: 2.6.1.0 + integer-gmp: 1.0.3.0 + containers: 0.6.2.1 + libiserv: 8.10.4 + ghc-boot: 8.10.4 + binary: 0.8.8.0 + ghc-prim: 0.6.1 + mtl: 2.2.2 + ghc-heap: 8.10.4 + ghci: 8.10.4 + rts: '1.0' + terminfo: 0.4.1.4 + transformers: 0.5.6.2 + deepseq: 1.4.4.0 + ghc-boot-th: 8.10.4 + pretty: 1.1.3.6 + template-haskell: 2.16.0.0 + directory: 1.3.6.0 +ghc-8.4.1: + ghc: 8.4.1 + bytestring: 0.10.8.2 + unix: 2.7.2.2 + haskeline: 0.7.4.2 + stm: 2.4.5.0 + Cabal: 2.2.0.0 + base: 4.11.0.0 + time: 1.8.0.2 + xhtml: 3000.2.2 + text: 1.2.3.0 + hpc: 0.6.0.3 + filepath: 1.4.2 + process: 1.6.3.0 + parsec: 3.1.13.0 + ghc-compact: 0.1.0.0 + array: 0.5.2.0 + Win32: 2.6.1.0 + integer-gmp: 1.0.1.0 + containers: 0.5.11.0 + ghc-boot: 8.4.1 + binary: 0.8.5.1 + ghc-prim: 0.5.2.0 + mtl: 2.2.2 + ghci: 8.4.1 + rts: '1.0' + terminfo: 0.4.1.1 + transformers: 0.5.5.0 + deepseq: 1.4.3.0 + ghc-boot-th: 8.4.1 + pretty: 1.1.3.6 + template-haskell: 2.13.0.0 + directory: 1.3.1.5 +ghc-7.10.3: + ghc: 7.10.3 + hoopl: 3.10.0.2 + bytestring: 0.10.6.0 + unix: 2.7.1.0 + haskeline: 0.7.2.1 + Cabal: 1.22.5.0 + base: 4.8.2.0 + time: 1.5.0.1 + xhtml: 3000.2.1 + hpc: 0.6.0.2 + filepath: 1.4.0.0 + process: 1.2.3.0 + array: 0.5.1.0 + Win32: 2.3.1.0 + integer-gmp: 1.0.0.0 + bin-package-db: 0.0.0.0 + containers: 0.5.6.2 + binary: 0.7.5.0 + ghc-prim: 0.4.0.0 + rts: '1.0' + terminfo: 0.4.0.1 + transformers: 0.4.2.0 + deepseq: 1.4.1.1 + pretty: 1.1.2.0 + template-haskell: 2.10.0.0 + directory: 1.2.2.0 +ghc-8.6.3: + ghc: 8.6.3 + bytestring: 0.10.8.2 + unix: 2.7.2.2 + haskeline: 0.7.4.3 + stm: 2.5.0.0 + Cabal: 2.4.0.1 + base: 4.12.0.0 + time: 1.8.0.2 + xhtml: 3000.2.2.1 + text: 1.2.3.1 + hpc: 0.6.0.3 + filepath: 1.4.2.1 + process: 1.6.3.0 + parsec: 3.1.13.0 + ghc-compact: 0.1.0.0 + array: 0.5.3.0 + Win32: 2.6.1.0 + integer-gmp: 1.0.2.0 + containers: 0.6.0.1 + libiserv: 8.6.3 + ghc-boot: 8.6.3 + binary: 0.8.6.0 + ghc-prim: 0.5.3 + mtl: 2.2.2 + ghc-heap: 8.6.3 + ghci: 8.6.3 + rts: '1.0' + terminfo: 0.4.1.2 + transformers: 0.5.5.0 + deepseq: 1.4.4.0 + ghc-boot-th: 8.6.3 + pretty: 1.1.3.6 + template-haskell: 2.14.0.0 + directory: 1.3.3.0 +ghc-9.0.2: + exceptions: 0.10.4 + ghc: 9.0.2 + bytestring: 0.10.12.1 + unix: 2.7.2.2 + haskeline: 0.8.2 + stm: 2.5.0.0 + Cabal: 3.4.1.0 + base: 4.15.1.0 + time: 1.9.3 + xhtml: 3000.2.2.1 + text: 1.2.5.0 + hpc: 0.6.1.0 + ghc-bignum: '1.1' + filepath: 1.4.2.1 + process: 1.6.13.2 + parsec: 3.1.14.0 + ghc-compact: 0.1.0.0 + array: 0.5.4.0 + Win32: 2.12.0.1 + integer-gmp: '1.1' + containers: 0.6.4.1 + libiserv: 9.0.2 + ghc-boot: 9.0.2 + binary: 0.8.8.0 + ghc-prim: 0.7.0 + mtl: 2.2.2 + ghc-heap: 9.0.2 + ghci: 9.0.2 + rts: 1.0.2 + terminfo: 0.4.1.5 + transformers: 0.5.6.2 + deepseq: 1.4.5.0 + ghc-boot-th: 9.0.2 + pretty: 1.1.3.6 + template-haskell: 2.17.0.0 + directory: 1.3.6.2 +ghc-8.6.5: + ghc: 8.6.5 + bytestring: 0.10.8.2 + unix: 2.7.2.2 + haskeline: 0.7.4.3 + stm: 2.5.0.0 + Cabal: 2.4.0.1 + base: 4.12.0.0 + time: 1.8.0.2 + xhtml: 3000.2.2.1 + text: 1.2.3.1 + hpc: 0.6.0.3 + filepath: 1.4.2.1 + process: 1.6.5.0 + parsec: 3.1.13.0 + ghc-compact: 0.1.0.0 + array: 0.5.3.0 + Win32: 2.6.1.0 + integer-gmp: 1.0.2.0 + containers: 0.6.0.1 + libiserv: 8.6.3 + ghc-boot: 8.6.5 + binary: 0.8.6.0 + ghc-prim: 0.5.3 + mtl: 2.2.2 + ghc-heap: 8.6.5 + ghci: 8.6.5 + rts: '1.0' + terminfo: 0.4.1.2 + transformers: 0.5.6.2 + deepseq: 1.4.4.0 + ghc-boot-th: 8.6.5 + pretty: 1.1.3.6 + template-haskell: 2.14.0.0 + directory: 1.3.3.0 +ghc-7.8.4: + ghc: 7.8.4 + hoopl: 3.10.0.1 + bytestring: 0.10.4.0 + unix: 2.7.0.1 + haskeline: 0.7.1.2 + Cabal: 1.18.1.5 + base: 4.7.0.2 + time: 1.4.2 + xhtml: 3000.2.1 + haskell98: 2.0.0.3 + hpc: 0.6.0.1 + filepath: 1.3.0.2 + process: 1.2.0.0 + array: 0.5.0.0 + Win32: 2.3.0.1 + integer-gmp: 0.5.1.0 + bin-package-db: 0.0.0.0 + containers: 0.5.5.1 + haskell2010: 1.1.2.0 + binary: 0.7.1.0 + ghc-prim: 0.3.1.0 + old-time: 1.1.0.2 + old-locale: 1.0.0.6 + rts: '1.0' + terminfo: 0.4.0.0 + transformers: 0.3.0.0 + deepseq: 1.3.0.2 + pretty: 1.1.1.1 + template-haskell: 2.9.0.0 + directory: 1.2.1.0 +ghc-8.10.2: + exceptions: 0.10.4 + ghc: 8.10.2 + bytestring: 0.10.10.0 + unix: 2.7.2.2 + haskeline: 0.8.0.1 + stm: 2.5.0.0 + Cabal: 3.2.0.0 + base: 4.14.1.0 + time: 1.9.3 + xhtml: 3000.2.2.1 + text: 1.2.3.2 + hpc: 0.6.1.0 + filepath: 1.4.2.1 + process: 1.6.9.0 + parsec: 3.1.14.0 + ghc-compact: 0.1.0.0 + array: 0.5.4.0 + Win32: 2.6.1.0 + integer-gmp: 1.0.3.0 + containers: 0.6.2.1 + libiserv: 8.10.2 + ghc-boot: 8.10.2 + binary: 0.8.8.0 + ghc-prim: 0.6.1 + mtl: 2.2.2 + ghc-heap: 8.10.2 + ghci: 8.10.2 + rts: '1.0' + terminfo: 0.4.1.4 + transformers: 0.5.6.2 + deepseq: 1.4.4.0 + ghc-boot-th: 8.10.2 + pretty: 1.1.3.6 + template-haskell: 2.16.0.0 + directory: 1.3.6.0 +ghc-8.2.1: + ghc: 8.2.1 + hoopl: 3.10.2.2 + bytestring: 0.10.8.2 + unix: 2.7.2.2 + haskeline: 0.7.4.0 + Cabal: 2.0.0.2 + base: 4.10.0.0 + time: 1.8.0.2 + xhtml: 3000.2.2 + hpc: 0.6.0.3 + filepath: 1.4.1.2 + process: 1.6.1.0 + ghc-compact: 0.1.0.0 + array: 0.5.2.0 + Win32: 2.5.4.1 + integer-gmp: 1.0.1.0 + containers: 0.5.10.2 + ghc-boot: 8.2.1 + binary: 0.8.5.1 + ghc-prim: 0.5.1.0 + ghci: 8.2.1 + rts: '1.0' + terminfo: 0.4.1.0 + transformers: 0.5.2.0 + deepseq: 1.4.3.0 + ghc-boot-th: 8.2.1 + pretty: 1.1.3.3 + template-haskell: 2.12.0.0 + directory: 1.3.0.2 +ghc-7.10.2: + ghc: 7.10.2 + hoopl: 3.10.0.2 + bytestring: 0.10.6.0 + unix: 2.7.1.0 + haskeline: 0.7.2.1 + Cabal: 1.22.4.0 + base: 4.8.1.0 + time: 1.5.0.1 + xhtml: 3000.2.1 + hpc: 0.6.0.2 + filepath: 1.4.0.0 + process: 1.2.3.0 + array: 0.5.1.0 + Win32: 2.3.1.0 + integer-gmp: 1.0.0.0 + bin-package-db: 0.0.0.0 + containers: 0.5.6.2 + binary: 0.7.5.0 + ghc-prim: 0.4.0.0 + rts: '1.0' + terminfo: 0.4.0.1 + transformers: 0.4.2.0 + deepseq: 1.4.1.1 + pretty: 1.1.2.0 + template-haskell: 2.10.0.0 + directory: 1.2.2.0 +ghc-8.6.2: + ghc: 8.6.2 + bytestring: 0.10.8.2 + unix: 2.7.2.2 + haskeline: 0.7.4.3 + stm: 2.5.0.0 + Cabal: 2.4.0.1 + base: 4.12.0.0 + time: 1.8.0.2 + xhtml: 3000.2.2.1 + text: 1.2.3.1 + hpc: 0.6.0.3 + filepath: 1.4.2.1 + process: 1.6.3.0 + parsec: 3.1.13.0 + ghc-compact: 0.1.0.0 + array: 0.5.3.0 + Win32: 2.6.1.0 + integer-gmp: 1.0.2.0 + containers: 0.6.0.1 + libiserv: 8.6.1 + ghc-boot: 8.6.2 + binary: 0.8.6.0 + ghc-prim: 0.5.3 + mtl: 2.2.2 + ghc-heap: 8.6.2 + ghci: 8.6.2 + rts: '1.0' + terminfo: 0.4.1.2 + transformers: 0.5.5.0 + deepseq: 1.4.4.0 + ghc-boot-th: 8.6.2 + pretty: 1.1.3.6 + template-haskell: 2.14.0.0 + directory: 1.3.3.0 +ghc-8.10.5: + exceptions: 0.10.4 + ghc: 8.10.5 + bytestring: 0.10.12.0 + unix: 2.7.2.2 + haskeline: 0.8.0.1 + stm: 2.5.0.1 + Cabal: 3.2.1.0 + base: 4.14.2.0 + time: 1.9.3 + xhtml: 3000.2.2.1 + text: 1.2.4.1 + hpc: 0.6.1.0 + filepath: 1.4.2.1 + process: 1.6.9.0 + parsec: 3.1.14.0 + ghc-compact: 0.1.0.0 + array: 0.5.4.0 + Win32: 2.6.1.0 + integer-gmp: 1.0.3.0 + containers: 0.6.4.1 + libiserv: 8.10.5 + ghc-boot: 8.10.5 + binary: 0.8.8.0 + ghc-prim: 0.6.1 + mtl: 2.2.2 + ghc-heap: 8.10.5 + ghci: 8.10.5 + rts: 1.0.1 + terminfo: 0.4.1.4 + transformers: 0.5.6.2 + deepseq: 1.4.4.0 + ghc-boot-th: 8.10.5 + pretty: 1.1.3.6 + template-haskell: 2.16.0.0 + directory: 1.3.6.0 +ghc-7.8.3: + ghc: 7.8.3 + hoopl: 3.10.0.1 + bytestring: 0.10.4.0 + unix: 2.7.0.1 + haskeline: 0.7.1.2 + Cabal: 1.18.1.3 + base: 4.7.0.1 + time: 1.4.2 + xhtml: 3000.2.1 + haskell98: 2.0.0.3 + hpc: 0.6.0.1 + filepath: 1.3.0.2 + process: 1.2.0.0 + array: 0.5.0.0 + Win32: 2.3.0.1 + integer-gmp: 0.5.1.0 + bin-package-db: 0.0.0.0 + containers: 0.5.5.1 + haskell2010: 1.1.2.0 + binary: 0.7.1.0 + ghc-prim: 0.3.1.0 + old-time: 1.1.0.2 + old-locale: 1.0.0.6 + rts: '1.0' + terminfo: 0.4.0.0 + transformers: 0.3.0.0 + deepseq: 1.3.0.2 + pretty: 1.1.1.1 + template-haskell: 2.9.0.0 + directory: 1.2.1.0 +ghc-8.8.1: + ghc: 8.8.1 + bytestring: 0.10.9.0 + unix: 2.7.2.2 + haskeline: 0.7.5.0 + stm: 2.5.0.0 + Cabal: 3.0.0.0 + base: 4.13.0.0 + time: 1.9.3 + xhtml: 3000.2.2.1 + text: 1.2.4.0 + hpc: 0.6.0.3 + filepath: 1.4.2.1 + process: 1.6.5.1 + parsec: 3.1.14.0 + ghc-compact: 0.1.0.0 + array: 0.5.4.0 + Win32: 2.6.1.0 + integer-gmp: 1.0.2.0 + containers: 0.6.2.1 + libiserv: 8.8.1 + ghc-boot: 8.8.1 + binary: 0.8.7.0 + ghc-prim: 0.5.3 + mtl: 2.2.2 + ghc-heap: 8.8.1 + ghci: 8.8.1 + rts: '1.0' + terminfo: 0.4.1.4 + transformers: 0.5.6.2 + deepseq: 1.4.4.0 + ghc-boot-th: 8.8.1 + pretty: 1.1.3.6 + template-haskell: 2.15.0.0 + directory: 1.3.3.2 +ghc-8.10.3: + exceptions: 0.10.4 + ghc: 8.10.3 + bytestring: 0.10.12.0 + unix: 2.7.2.2 + haskeline: 0.8.0.1 + stm: 2.5.0.0 + Cabal: 3.2.1.0 + base: 4.14.1.0 + time: 1.9.3 + xhtml: 3000.2.2.1 + text: 1.2.4.1 + hpc: 0.6.1.0 + filepath: 1.4.2.1 + process: 1.6.9.0 + parsec: 3.1.14.0 + ghc-compact: 0.1.0.0 + array: 0.5.4.0 + Win32: 2.6.1.0 + integer-gmp: 1.0.3.0 + containers: 0.6.2.1 + libiserv: 8.10.3 + ghc-boot: 8.10.3 + binary: 0.8.8.0 + ghc-prim: 0.6.1 + mtl: 2.2.2 + ghc-heap: 8.10.3 + ghci: 8.10.3 + rts: '1.0' + terminfo: 0.4.1.4 + transformers: 0.5.6.2 + deepseq: 1.4.4.0 + ghc-boot-th: 8.10.3 + pretty: 1.1.3.6 + template-haskell: 2.16.0.0 + directory: 1.3.6.0 +ghc-8.0.2: + ghc: 8.0.2 + hoopl: 3.10.2.1 + bytestring: 0.10.8.1 + unix: 2.7.2.1 + haskeline: 0.7.3.0 + Cabal: 1.24.2.0 + base: 4.9.1.0 + time: 1.6.0.1 + xhtml: 3000.2.1 + hpc: 0.6.0.3 + filepath: 1.4.1.1 + process: 1.4.3.0 + array: 0.5.1.1 + Win32: 2.3.1.1 + integer-gmp: 1.0.0.1 + containers: 0.5.7.1 + ghc-boot: 8.0.2 + binary: 0.8.3.0 + ghc-prim: 0.5.0.0 + ghci: 8.0.2 + rts: '1.0' + terminfo: 0.4.0.2 + transformers: 0.5.2.0 + deepseq: 1.4.2.0 + ghc-boot-th: 8.0.2 + pretty: 1.1.3.3 + template-haskell: 2.11.1.0 + directory: 1.3.0.0 +ghc-8.6.4: + ghc: 8.6.4 + bytestring: 0.10.8.2 + unix: 2.7.2.2 + haskeline: 0.7.4.3 + stm: 2.5.0.0 + Cabal: 2.4.0.1 + base: 4.12.0.0 + time: 1.8.0.2 + xhtml: 3000.2.2.1 + text: 1.2.3.1 + hpc: 0.6.0.3 + filepath: 1.4.2.1 + process: 1.6.5.0 + parsec: 3.1.13.0 + ghc-compact: 0.1.0.0 + array: 0.5.3.0 + Win32: 2.6.1.0 + integer-gmp: 1.0.2.0 + containers: 0.6.0.1 + libiserv: 8.6.3 + ghc-boot: 8.6.4 + binary: 0.8.6.0 + ghc-prim: 0.5.3 + mtl: 2.2.2 + ghc-heap: 8.6.4 + ghci: 8.6.4 + rts: '1.0' + terminfo: 0.4.1.2 + transformers: 0.5.6.2 + deepseq: 1.4.4.0 + ghc-boot-th: 8.6.4 + pretty: 1.1.3.6 + template-haskell: 2.14.0.0 + directory: 1.3.3.0 +ghc-8.6.1: + ghc: 8.6.1 + bytestring: 0.10.8.2 + unix: 2.7.2.2 + haskeline: 0.7.4.3 + stm: 2.5.0.0 + Cabal: 2.4.0.1 + base: 4.12.0.0 + time: 1.8.0.2 + xhtml: 3000.2.2.1 + text: 1.2.3.1 + hpc: 0.6.0.3 + filepath: 1.4.2.1 + process: 1.6.3.0 + parsec: 3.1.13.0 + ghc-compact: 0.1.0.0 + array: 0.5.2.0 + Win32: 2.6.1.0 + integer-gmp: 1.0.2.0 + containers: 0.6.0.1 + libiserv: 8.6.1 + ghc-boot: 8.6.1 + binary: 0.8.6.0 + ghc-prim: 0.5.3 + mtl: 2.2.2 + ghc-heap: 8.6.1 + ghci: 8.6.1 + rts: '1.0' + terminfo: 0.4.1.2 + transformers: 0.5.5.0 + deepseq: 1.4.4.0 + ghc-boot-th: 8.6.1 + pretty: 1.1.3.6 + template-haskell: 2.14.0.0 + directory: 1.3.3.0 +ghc-9.2.4: + exceptions: 0.10.4 + ghc: 9.2.4 + bytestring: 0.11.3.1 + unix: 2.7.2.2 + haskeline: 0.8.2 + stm: 2.5.0.2 + Cabal: 3.6.3.0 + base: 4.16.3.0 + time: 1.11.1.1 + xhtml: 3000.2.2.1 + text: 1.2.5.0 + hpc: 0.6.1.0 + ghc-bignum: '1.2' + filepath: 1.4.2.2 + process: 1.6.13.2 + parsec: 3.1.15.0 + ghc-compact: 0.1.0.0 + array: 0.5.4.0 + Win32: 2.12.0.1 + integer-gmp: '1.1' + containers: 0.6.5.1 + libiserv: 9.2.4 + ghc-boot: 9.2.4 + binary: 0.8.9.0 + ghc-prim: 0.8.0 + mtl: 2.2.2 + ghc-heap: 9.2.4 + ghci: 9.2.4 + rts: 1.0.2 + terminfo: 0.4.1.5 + transformers: 0.5.6.2 + deepseq: 1.4.6.1 + ghc-boot-th: 9.2.4 + pretty: 1.1.3.6 + template-haskell: 2.18.0.0 + directory: 1.3.6.2 +ghc-9.2.5: + Cabal: 3.6.3.0 + Win32: 2.12.0.1 + array: 0.5.4.0 + base: 4.16.4.0 + binary: 0.8.9.0 + bytestring: 0.11.3.1 + containers: 0.6.5.1 + deepseq: 1.4.6.1 + directory: 1.3.6.2 + exceptions: 0.10.4 + filepath: 1.4.2.2 + ghc: 9.2.5 + ghc-bignum: '1.2' + ghc-boot: 9.2.5 + ghc-boot-th: 9.2.5 + ghc-compact: 0.1.0.0 + ghc-heap: 9.2.5 + ghc-prim: 0.8.0 + ghci: 9.2.5 + haskeline: 0.8.2 + hpc: 0.6.1.0 + integer-gmp: '1.1' + libiserv: 9.2.5 + mtl: 2.2.2 + parsec: 3.1.15.0 + pretty: 1.1.3.6 + process: 1.6.16.0 + rts: 1.0.2 + stm: 2.5.0.2 + template-haskell: 2.18.0.0 + terminfo: 0.4.1.5 + text: 1.2.5.0 + time: 1.11.1.1 + transformers: 0.5.6.2 + unix: 2.7.2.2 + xhtml: 3000.2.2.1 +ghc-9.2.6: + Cabal: 3.6.3.0 + Win32: 2.12.0.1 + array: 0.5.4.0 + base: 4.16.4.0 + binary: 0.8.9.0 + bytestring: 0.11.4.0 + containers: 0.6.5.1 + deepseq: 1.4.6.1 + directory: 1.3.6.2 + exceptions: 0.10.4 + filepath: 1.4.2.2 + ghc: 9.2.6 + ghc-bignum: '1.2' + ghc-boot: 9.2.6 + ghc-boot-th: 9.2.6 + ghc-compact: 0.1.0.0 + ghc-heap: 9.2.6 + ghc-prim: 0.8.0 + ghci: 9.2.6 + haskeline: 0.8.2 + hpc: 0.6.1.0 + integer-gmp: '1.1' + libiserv: 9.2.6 + mtl: 2.2.2 + parsec: 3.1.15.0 + pretty: 1.1.3.6 + process: 1.6.16.0 + rts: 1.0.2 + stm: 2.5.0.2 + template-haskell: 2.18.0.0 + terminfo: 0.4.1.5 + text: 1.2.5.0 + time: 1.11.1.1 + transformers: 0.5.6.2 + unix: 2.7.2.2 + xhtml: 3000.2.2.1 +ghc-9.2.7: + Cabal: 3.6.3.0 + Win32: 2.12.0.1 + array: 0.5.4.0 + base: 4.16.4.0 + binary: 0.8.9.0 + bytestring: 0.11.4.0 + containers: 0.6.5.1 + deepseq: 1.4.6.1 + directory: 1.3.6.2 + exceptions: 0.10.4 + filepath: 1.4.2.2 + ghc: 9.2.7 + ghc-bignum: '1.2' + ghc-boot: 9.2.7 + ghc-boot-th: 9.2.7 + ghc-compact: 0.1.0.0 + ghc-heap: 9.2.7 + ghc-prim: 0.8.0 + ghci: 9.2.7 + haskeline: 0.8.2 + hpc: 0.6.1.0 + integer-gmp: '1.1' + libiserv: 9.2.7 + mtl: 2.2.2 + parsec: 3.1.15.0 + pretty: 1.1.3.6 + process: 1.6.16.0 + rts: 1.0.2 + stm: 2.5.0.2 + template-haskell: 2.18.0.0 + terminfo: 0.4.1.5 + text: 1.2.5.0 + time: 1.11.1.1 + transformers: 0.5.6.2 + unix: 2.7.2.2 + xhtml: 3000.2.2.1 +ghc-9.2.8: + Cabal: 3.6.3.0 + Win32: 2.12.0.1 + array: 0.5.4.0 + base: 4.16.4.0 + binary: 0.8.9.0 + bytestring: 0.11.4.0 + containers: 0.6.5.1 + deepseq: 1.4.6.1 + directory: 1.3.6.2 + exceptions: 0.10.4 + filepath: 1.4.2.2 + ghc: 9.2.8 + ghc-bignum: '1.2' + ghc-boot: 9.2.8 + ghc-boot-th: 9.2.8 + ghc-compact: 0.1.0.0 + ghc-heap: 9.2.8 + ghc-prim: 0.8.0 + ghci: 9.2.8 + haskeline: 0.8.2 + hpc: 0.6.1.0 + integer-gmp: '1.1' + libiserv: 9.2.8 + mtl: 2.2.2 + parsec: 3.1.15.0 + pretty: 1.1.3.6 + process: 1.6.16.0 + rts: 1.0.2 + stm: 2.5.0.2 + template-haskell: 2.18.0.0 + terminfo: 0.4.1.5 + text: 1.2.5.0 + time: 1.11.1.1 + transformers: 0.5.6.2 + unix: 2.7.2.2 + xhtml: 3000.2.2.1 +ghc-8.10.6: + exceptions: 0.10.4 + ghc: 8.10.6 + bytestring: 0.10.12.0 + unix: 2.7.2.2 + haskeline: 0.8.2 + stm: 2.5.0.1 + Cabal: 3.2.1.0 + base: 4.14.3.0 + time: 1.9.3 + xhtml: 3000.2.2.1 + text: 1.2.4.1 + hpc: 0.6.1.0 + filepath: 1.4.2.1 + process: 1.6.13.2 + parsec: 3.1.14.0 + ghc-compact: 0.1.0.0 + array: 0.5.4.0 + Win32: 2.6.2.1 + integer-gmp: 1.0.3.0 + containers: 0.6.5.1 + libiserv: 8.10.6 + ghc-boot: 8.10.6 + binary: 0.8.8.0 + ghc-prim: 0.6.1 + mtl: 2.2.2 + ghc-heap: 8.10.6 + ghci: 8.10.6 + rts: 1.0.1 + terminfo: 0.4.1.4 + transformers: 0.5.6.2 + deepseq: 1.4.4.0 + ghc-boot-th: 8.10.6 + pretty: 1.1.3.6 + template-haskell: 2.16.0.0 + directory: 1.3.6.0 +ghc-8.4.3: + ghc: 8.4.3 + bytestring: 0.10.8.2 + unix: 2.7.2.2 + haskeline: 0.7.4.2 + stm: 2.4.5.0 + Cabal: 2.2.0.1 + base: 4.11.1.0 + time: 1.8.0.2 + xhtml: 3000.2.2.1 + text: 1.2.3.0 + hpc: 0.6.0.3 + filepath: 1.4.2 + process: 1.6.3.0 + parsec: 3.1.13.0 + ghc-compact: 0.1.0.0 + array: 0.5.2.0 + Win32: 2.6.1.0 + integer-gmp: 1.0.2.0 + containers: 0.5.11.0 + ghc-boot: 8.4.3 + binary: 0.8.5.1 + ghc-prim: 0.5.2.0 + mtl: 2.2.2 + ghci: 8.4.3 + rts: '1.0' + terminfo: 0.4.1.1 + transformers: 0.5.5.0 + deepseq: 1.4.3.0 + ghc-boot-th: 8.4.3 + pretty: 1.1.3.6 + template-haskell: 2.13.0.0 + directory: 1.3.1.5 +ghc-7.10.1: + ghc: 7.10.1 + hoopl: 3.10.0.2 + bytestring: 0.10.6.0 + unix: 2.7.1.0 + haskeline: 0.7.2.1 + Cabal: 1.22.2.0 + base: 4.8.0.0 + time: 1.5.0.1 + xhtml: 3000.2.1 + hpc: 0.6.0.2 + filepath: 1.4.0.0 + process: 1.2.3.0 + array: 0.5.1.0 + Win32: 2.3.1.0 + integer-gmp: 1.0.0.0 + bin-package-db: 0.0.0.0 + containers: 0.5.6.2 + binary: 0.7.3.0 + ghc-prim: 0.4.0.0 + rts: '1.0' + terminfo: 0.4.0.1 + transformers: 0.4.2.0 + deepseq: 1.4.1.1 + pretty: 1.1.2.0 + template-haskell: 2.10.0.0 + directory: 1.2.2.0 +ghc-9.4.0.20220721: + Cabal-syntax: 3.8.0.20220526 + Cabal: 3.8.0.20220526 + Win32: 2.12.0.0 + array: 0.5.4.0 + base: 4.17.0.0 + binary: 0.8.9.0 + bytestring: 0.11.3.1 + containers: 0.6.5.1 + deepseq: 1.4.8.0 + directory: 1.3.7.1 + exceptions: 0.10.5 + filepath: 1.4.2.2 + ghc-bignum: '1.3' + ghc-boot-th: 9.4.0.20220721 + ghc-boot: 9.4.0.20220721 + ghc-compact: 0.1.0.0 + ghc-heap: 9.4.0.20220721 + ghc-prim: 0.9.0 + ghc: 9.4.0.20220721 + ghci: 9.4.0.20220721 + haskeline: 0.8.2 + hpc: 0.6.1.0 + integer-gmp: '1.1' + libiserv: 9.4.0.20220721 + mtl: 2.2.2 + parsec: 3.1.15.0 + pretty: 1.1.3.6 + process: 1.6.14.0 + rts: 1.0.2 + stm: 2.5.1.0 + system-cxx-std-lib: '1.0' + template-haskell: 2.19.0.0 + terminfo: 0.4.1.5 + text: '2.0' + time: 1.12.2 + transformers: 0.5.6.2 + unix: 2.7.3 + xhtml: 3000.2.2.1 +ghc-9.4.1: + Cabal: 3.8.1.0 + Cabal-syntax: 3.8.1.0 + Win32: 2.12.0.0 + array: 0.5.4.0 + base: 4.17.0.0 + binary: 0.8.9.1 + bytestring: 0.11.3.1 + containers: 0.6.6 + deepseq: 1.4.8.0 + directory: 1.3.7.1 + exceptions: 0.10.5 + filepath: 1.4.2.2 + ghc: 9.4.1 + ghc-bignum: '1.3' + ghc-boot: 9.4.1 + ghc-boot-th: 9.4.1 + ghc-compact: 0.1.0.0 + ghc-heap: 9.4.1 + ghc-prim: 0.9.0 + ghci: 9.4.1 + haskeline: 0.8.2 + hpc: 0.6.1.0 + integer-gmp: '1.1' + libiserv: 9.4.1 + mtl: 2.2.2 + parsec: 3.1.15.0 + pretty: 1.1.3.6 + process: 1.6.15.0 + rts: 1.0.2 + stm: 2.5.1.0 + system-cxx-std-lib: '1.0' + template-haskell: 2.19.0.0 + terminfo: 0.4.1.5 + text: 2.0.1 + time: 1.12.2 + transformers: 0.5.6.2 + unix: 2.7.3 + xhtml: 3000.2.2.1 +ghc-9.4.2: + Cabal: 3.8.1.0 + Cabal-syntax: 3.8.1.0 + Win32: 2.12.0.0 + array: 0.5.4.0 + base: 4.17.0.0 + binary: 0.8.9.1 + bytestring: 0.11.3.1 + containers: 0.6.6 + deepseq: 1.4.8.0 + directory: 1.3.7.1 + exceptions: 0.10.5 + filepath: 1.4.2.2 + ghc: 9.4.2 + ghc-bignum: '1.3' + ghc-boot: 9.4.2 + ghc-boot-th: 9.4.2 + ghc-compact: 0.1.0.0 + ghc-heap: 9.4.2 + ghc-prim: 0.9.0 + ghci: 9.4.2 + haskeline: 0.8.2 + hpc: 0.6.1.0 + integer-gmp: '1.1' + libiserv: 9.4.2 + mtl: 2.2.2 + parsec: 3.1.15.0 + pretty: 1.1.3.6 + process: 1.6.15.0 + rts: 1.0.2 + stm: 2.5.1.0 + system-cxx-std-lib: '1.0' + template-haskell: 2.19.0.0 + terminfo: 0.4.1.5 + text: 2.0.1 + time: 1.12.2 + transformers: 0.5.6.2 + unix: 2.7.3 + xhtml: 3000.2.2.1 +ghc-9.4.3: + Cabal: 3.8.1.0 + Cabal-syntax: 3.8.1.0 + Win32: 2.12.0.0 + array: 0.5.4.0 + base: 4.17.0.0 + binary: 0.8.9.1 + bytestring: 0.11.3.1 + containers: 0.6.6 + deepseq: 1.4.8.0 + directory: 1.3.7.1 + exceptions: 0.10.5 + filepath: 1.4.2.2 + ghc: 9.4.3 + ghc-bignum: '1.3' + ghc-boot: 9.4.3 + ghc-boot-th: 9.4.3 + ghc-compact: 0.1.0.0 + ghc-heap: 9.4.3 + ghc-prim: 0.9.0 + ghci: 9.4.3 + haskeline: 0.8.2 + hpc: 0.6.1.0 + integer-gmp: '1.1' + libiserv: 9.4.3 + mtl: 2.2.2 + parsec: 3.1.15.0 + pretty: 1.1.3.6 + process: 1.6.16.0 + rts: 1.0.2 + stm: 2.5.1.0 + system-cxx-std-lib: '1.0' + template-haskell: 2.19.0.0 + terminfo: 0.4.1.5 + text: 2.0.1 + time: 1.12.2 + transformers: 0.5.6.2 + unix: 2.7.3 + xhtml: 3000.2.2.1 +ghc-9.4.4: + Cabal: 3.8.1.0 + Cabal-syntax: 3.8.1.0 + Win32: 2.12.0.1 + array: 0.5.4.0 + base: 4.17.0.0 + binary: 0.8.9.1 + bytestring: 0.11.3.1 + containers: 0.6.6 + deepseq: 1.4.8.0 + directory: 1.3.7.1 + exceptions: 0.10.5 + filepath: 1.4.2.2 + ghc: 9.4.4 + ghc-bignum: '1.3' + ghc-boot: 9.4.4 + ghc-boot-th: 9.4.4 + ghc-compact: 0.1.0.0 + ghc-heap: 9.4.4 + ghc-prim: 0.9.0 + ghci: 9.4.4 + haskeline: 0.8.2 + hpc: 0.6.1.0 + integer-gmp: '1.1' + libiserv: 9.4.4 + mtl: 2.2.2 + parsec: 3.1.15.0 + pretty: 1.1.3.6 + process: 1.6.16.0 + rts: 1.0.2 + stm: 2.5.1.0 + system-cxx-std-lib: '1.0' + template-haskell: 2.19.0.0 + terminfo: 0.4.1.5 + text: 2.0.1 + time: 1.12.2 + transformers: 0.5.6.2 + unix: 2.7.3 + xhtml: 3000.2.2.1 +ghc-9.4.5: + Cabal: 3.8.1.0 + Cabal-syntax: 3.8.1.0 + Win32: 2.12.0.1 + array: 0.5.4.0 + base: 4.17.1.0 + binary: 0.8.9.1 + bytestring: 0.11.4.0 + containers: 0.6.7 + deepseq: 1.4.8.0 + directory: 1.3.7.1 + exceptions: 0.10.5 + filepath: 1.4.2.2 + ghc: 9.4.5 + ghc-bignum: '1.3' + ghc-boot: 9.4.5 + ghc-boot-th: 9.4.5 + ghc-compact: 0.1.0.0 + ghc-heap: 9.4.5 + ghc-prim: 0.9.0 + ghci: 9.4.5 + haskeline: 0.8.2 + hpc: 0.6.1.0 + integer-gmp: '1.1' + libiserv: 9.4.5 + mtl: 2.2.2 + parsec: 3.1.16.1 + pretty: 1.1.3.6 + process: 1.6.16.0 + rts: 1.0.2 + stm: 2.5.1.0 + system-cxx-std-lib: '1.0' + template-haskell: 2.19.0.0 + terminfo: 0.4.1.5 + text: 2.0.2 + time: 1.12.2 + transformers: 0.5.6.2 + unix: 2.7.3 + xhtml: 3000.2.2.1 +ghc-9.4.6: + Cabal: 3.8.1.0 + Cabal-syntax: 3.8.1.0 + Win32: 2.12.0.1 + array: 0.5.4.0 + base: 4.17.2.0 + binary: 0.8.9.1 + bytestring: 0.11.5.1 + containers: 0.6.7 + deepseq: 1.4.8.0 + directory: 1.3.7.1 + exceptions: 0.10.5 + filepath: 1.4.2.2 + ghc: 9.4.6 + ghc-bignum: '1.3' + ghc-boot: 9.4.6 + ghc-boot-th: 9.4.6 + ghc-compact: 0.1.0.0 + ghc-heap: 9.4.6 + ghc-prim: 0.9.1 + ghci: 9.4.6 + haskeline: 0.8.2 + hpc: 0.6.1.0 + integer-gmp: '1.1' + libiserv: 9.4.6 + mtl: 2.2.2 + parsec: 3.1.16.1 + pretty: 1.1.3.6 + process: 1.6.17.0 + rts: 1.0.2 + stm: 2.5.1.0 + system-cxx-std-lib: '1.0' + template-haskell: 2.19.0.0 + terminfo: 0.4.1.5 + text: 2.0.2 + time: 1.12.2 + transformers: 0.5.6.2 + unix: 2.7.3 + xhtml: 3000.2.2.1 +ghc-9.4.7: + Cabal: 3.8.1.0 + Cabal-syntax: 3.8.1.0 + Win32: 2.12.0.1 + array: 0.5.4.0 + base: 4.17.2.0 + binary: 0.8.9.1 + bytestring: 0.11.5.2 + containers: 0.6.7 + deepseq: 1.4.8.0 + directory: 1.3.7.1 + exceptions: 0.10.5 + filepath: 1.4.2.2 + ghc: 9.4.7 + ghc-bignum: '1.3' + ghc-boot: 9.4.7 + ghc-boot-th: 9.4.7 + ghc-compact: 0.1.0.0 + ghc-heap: 9.4.7 + ghc-prim: 0.9.1 + ghci: 9.4.7 + haskeline: 0.8.2 + hpc: 0.6.1.0 + integer-gmp: '1.1' + libiserv: 9.4.7 + mtl: 2.2.2 + parsec: 3.1.16.1 + pretty: 1.1.3.6 + process: 1.6.17.0 + rts: 1.0.2 + stm: 2.5.1.0 + system-cxx-std-lib: '1.0' + template-haskell: 2.19.0.0 + terminfo: 0.4.1.5 + text: 2.0.2 + time: 1.12.2 + transformers: 0.5.6.2 + unix: 2.7.3 + xhtml: 3000.2.2.1 +ghc-9.6.1: + Cabal: 3.10.1.0 + Cabal-syntax: 3.10.1.0 + Win32: 2.13.3.0 + array: 0.5.5.0 + base: 4.18.0.0 + binary: 0.8.9.1 + bytestring: 0.11.4.0 + containers: 0.6.7 + deepseq: 1.4.8.1 + directory: 1.3.8.1 + exceptions: 0.10.7 + filepath: 1.4.100.1 + ghc: 9.6.1 + ghc-bignum: '1.3' + ghc-boot: 9.6.1 + ghc-boot-th: 9.6.1 + ghc-compact: 0.1.0.0 + ghc-heap: 9.6.1 + ghc-prim: 0.10.0 + ghci: 9.6.1 + haskeline: 0.8.2.1 + hpc: 0.6.2.0 + integer-gmp: '1.1' + libiserv: 9.6.1 + mtl: 2.3.1 + parsec: 3.1.16.1 + pretty: 1.1.3.6 + process: 1.6.17.0 + rts: 1.0.2 + stm: 2.5.1.0 + system-cxx-std-lib: '1.0' + template-haskell: 2.20.0.0 + terminfo: 0.4.1.6 + text: 2.0.2 + time: 1.12.2 + transformers: 0.6.1.0 + unix: 2.8.1.0 + xhtml: 3000.2.2.1 +ghc-9.6.2: + Cabal: 3.10.1.0 + Cabal-syntax: 3.10.1.0 + Win32: 2.13.3.0 + array: 0.5.5.0 + base: 4.18.0.0 + binary: 0.8.9.1 + bytestring: 0.11.4.0 + containers: 0.6.7 + deepseq: 1.4.8.1 + directory: 1.3.8.1 + exceptions: 0.10.7 + filepath: 1.4.100.1 + ghc: 9.6.2 + ghc-bignum: '1.3' + ghc-boot: 9.6.2 + ghc-boot-th: 9.6.2 + ghc-compact: 0.1.0.0 + ghc-heap: 9.6.2 + ghc-prim: 0.10.0 + ghci: 9.6.2 + haskeline: 0.8.2.1 + hpc: 0.6.2.0 + integer-gmp: '1.1' + libiserv: 9.6.2 + mtl: 2.3.1 + parsec: 3.1.16.1 + pretty: 1.1.3.6 + process: 1.6.17.0 + rts: 1.0.2 + stm: 2.5.1.0 + system-cxx-std-lib: '1.0' + template-haskell: 2.20.0.0 + terminfo: 0.4.1.6 + text: 2.0.2 + time: 1.12.2 + transformers: 0.6.1.0 + unix: 2.8.1.0 + xhtml: 3000.2.2.1 diff --git a/Program/haskell/global-project.stack.yaml b/Program/haskell/global-project.stack.yaml new file mode 100644 index 0000000..d9f298a --- /dev/null +++ b/Program/haskell/global-project.stack.yaml @@ -0,0 +1,49 @@ +# Copyright (c) James Brock. +# Distributed under the terms of the Modified MIT License. +resolver: nightly-2023-05-17 +# GHC 9.4.5 + +# Stack global project /opt/stack/global-project/stack.yaml in the Docker image. +# https://docs.haskellstack.org/en/stable/yaml_configuration/#yaml-configuration + +# All the IHaskell packages are listed as extra-deps rather than packages, +# because we never want to build anything automatically, we always want to +# select exactly what we build for the IHaskell notebook environment. +# For example, `stack ghci` tries to load every package listed in `packages`, +# and we don't want that behavior. Several of these packages are unbuildable +# at the time of this writing. See the Dockerfile for the list of packages +# which are pre-built into the Docker image. +# +# To make an notebook project with custom `stack.yaml`, copy this `stack.yaml` +# file into the project directory that has the `.ipynb` notebook file and +# then make changes to the copied `stack.yaml`. + +packages: [] +extra-deps: +- /opt/IHaskell +- /opt/IHaskell/ipython-kernel +- /opt/IHaskell/ghc-parser +- /opt/IHaskell/ihaskell-display/ihaskell-aeson +- /opt/IHaskell/ihaskell-display/ihaskell-blaze +- /opt/IHaskell/ihaskell-display/ihaskell-charts +- /opt/IHaskell/ihaskell-display/ihaskell-diagrams +- /opt/IHaskell/ihaskell-display/ihaskell-gnuplot +- /opt/IHaskell/ihaskell-display/ihaskell-graphviz +- /opt/IHaskell/ihaskell-display/ihaskell-hatex +- /opt/IHaskell/ihaskell-display/ihaskell-juicypixels +- /opt/IHaskell/ihaskell-display/ihaskell-magic +- /opt/IHaskell/ihaskell-display/ihaskell-plot +- /opt/IHaskell/ihaskell-display/ihaskell-rlangqq +- /opt/IHaskell/ihaskell-display/ihaskell-static-canvas +- /opt/IHaskell/ihaskell-display/ihaskell-widgets +- /opt/hvega/hvega +- /opt/hvega/ihaskell-hvega + +- Chart-cairo-1.9.3 +- cairo-0.13.10.0 +- diagrams-cairo-1.4.2 +- pango-0.13.10.0 +- glib-0.13.10.0 +- gtk2hs-buildtools-0.13.10.0 +- plot-0.2.3.11 + diff --git a/Program/haskell/stack-2.11.1-linux-x86_64.tar.gz b/Program/haskell/stack-2.11.1-linux-x86_64.tar.gz new file mode 100644 index 0000000..00040c3 --- /dev/null +++ b/Program/haskell/stack-2.11.1-linux-x86_64.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:408a120e824ed6e6b24c548a2ff6f210fcb0eed246f204a280ed4c75af0517e7 +size 15552491 diff --git a/Program/haskell/stack.config.yaml b/Program/haskell/stack.config.yaml new file mode 100644 index 0000000..725247d --- /dev/null +++ b/Program/haskell/stack.config.yaml @@ -0,0 +1,37 @@ +# Haskell Stack non-project-specific config for IHaskell. +# https://docs.haskellstack.org/en/stable/yaml_configuration/#non-project-specific-config +setup-info-locations: + - http://mirrors.ustc.edu.cn/stackage/stack-setup.yaml +urls: + latest-snapshot: http://mirrors.ustc.edu.cn/stackage/snapshots.json +snapshot-location-base: http://mirrors.ustc.edu.cn/stackage/stackage-snapshots/ + +package-index: + download-prefix: https://mirrors.ustc.edu.cn/hackage/ + hackage-security: + keyids: + - 0a5c7ea47cd1b15f01f5f51a33adda7e655bc0f0b0615baa8e271f4c3351e21d + - 1ea9ba32c526d1cc91ab5e5bd364ec5e9e8cb67179a471872f6e26f0ae773d42 + - 280b10153a522681163658cb49f632cde3f38d768b736ddbc901d99a1a772833 + - 2a96b1889dc221c17296fcc2bb34b908ca9734376f0f361660200935916ef201 + - 2c6c3627bd6c982990239487f1abd02e08a02e6cf16edb105a8012d444d870c3 + - 51f0161b906011b52c6613376b1ae937670da69322113a246a09f807c62f6921 + - 772e9f4c7db33d251d5c6e357199c819e569d130857dc225549b40845ff0890d + - aa315286e6ad281ad61182235533c41e806e5a787e0b6d1e7eef3f09d137d2e9 + - fe331502606802feac15e514d9b9ea83fee8b6ffef71335479a2e68d84adc6b0 + key-threshold: 3 # number of keys required + + # ignore expiration date, see https://github.com/commercialhaskell/stack/pull/4614 + ignore-expiry: true + +# So that all users, not just jovyan, can use the Stack default global project. +allow-different-user: true + +# stack install products will go here, not in /home/$USER/.local/bin +local-bin-path: /opt/bin + +# We're going to be loosey with version bounds. +allow-newer: true + +# Force color +color: always diff --git a/Program/java/Dockerfile b/Program/java/Dockerfile new file mode 100644 index 0000000..690d511 --- /dev/null +++ b/Program/java/Dockerfile @@ -0,0 +1,17 @@ +FROM eoelab.org:1027/ben0i0d/jupyter:py-c + + + +USER root +COPY ijava-1.3.0.zip ./ijava-kernel.zip +# Install dependencies +RUN apt update && apt install --yes --no-install-recommends openjdk-17-jdk && \ + apt-get clean && rm -rf /var/lib/apt/lists/* && \ + # Unpack and install the kernel + unzip ijava-kernel.zip -d ijava-kernel && \ + cd ijava-kernel && \ + python3 install.py --sys-prefix && \ + rm ../ijava-kernel.zip + +# Set user back to unpriviledged user. +USER $NB_USER diff --git a/Program/java/ijava-1.3.0.zip b/Program/java/ijava-1.3.0.zip new file mode 100644 index 0000000..01e0a6a --- /dev/null +++ b/Program/java/ijava-1.3.0.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:484cc62579cb77510b0f0c78283f043794396d8ae9d76a8f2ab5d7368ec246b2 +size 3366077 diff --git a/Program/js/Dockerfile b/Program/js/Dockerfile new file mode 100644 index 0000000..b5300d3 --- /dev/null +++ b/Program/js/Dockerfile @@ -0,0 +1,16 @@ +FROM eoelab.org:1027/ben0i0d/jupyter:py-c + + + +USER root + +RUN apt-get update --yes && \ + apt-get install --yes nodejs npm && \ + apt-get clean && rm -rf /var/lib/apt/lists/* && \ + npm config set registry https://registry.npmmirror.com && \ + npm install -g --unsafe-perm ijavascript && \ + ijsinstall --install=global + +USER ${NB_UID} + + diff --git a/julia/Dockerfile b/Program/julia/Dockerfile similarity index 66% rename from julia/Dockerfile rename to Program/julia/Dockerfile index ab90362..a030291 100644 --- a/julia/Dockerfile +++ b/Program/julia/Dockerfile @@ -5,21 +5,24 @@ USER root # install Julia packages in /opt/julias RUN apt-get update --yes && apt-get install --yes --no-install-recommends gnupg && apt-get clean && rm -rf /var/lib/apt/lists/* && \ pip --no-cache-dir install jill && jill install --confirm - + FROM eoelab.org:1027/ben0i0d/jupyter:py-c COPY --chown="${NB_UID}:${NB_GID}" --from=builder /opt/julias/ /opt/julias/ ENV JULIA_PKG_SERVER=https://mirrors.cernet.edu.cn/julia \ - JULIA_NUM_THREADS=8 - + JULIA_NUM_THREADS=8 \ + JUPYTER_DATA_DIR=/opt/base/share/jupyter \ + JULIA_DEPOT_PATH=/opt/julia \ + JULIA_PKGDIR=/opt/julia + USER root -RUN ln -s "`find /opt/julias -name 'bin'`/julia" /usr/local/bin/julia +RUN ln -s "`find /opt/julias -name 'bin'`/julia" /usr/local/bin/julia && \ + mkdir -p /opt/julia && chown -R ${NB_UID}:${NB_GID} /opt/julia USER ${NB_UID} -# Install IJulia as jovyan and then move the kernelspec out to the system share location. + +# Install IJulia as jovyan RUN julia -e 'import Pkg; Pkg.update()' && \ - julia -e 'using Pkg; pkg"add IJulia"; pkg"precompile"' && \ - mv "${HOME}/.local/share/jupyter/kernels/"* "/opt/base/share/jupyter/kernels/" && \ - rm -rf "${HOME}/.local" \ No newline at end of file + julia -e 'using Pkg; pkg"add IJulia"; pkg"precompile"' \ No newline at end of file diff --git a/Program/kotlin/Dockerfile b/Program/kotlin/Dockerfile new file mode 100644 index 0000000..dfd0b92 --- /dev/null +++ b/Program/kotlin/Dockerfile @@ -0,0 +1,15 @@ +FROM eoelab.org:1027/ben0i0d/jupyter:py-c + + + +USER root + +RUN apt-get update && \ + apt-get install -y --no-install-recommends openjdk-17-jre && \ + apt-get clean && rm -rf /var/lib/apt/lists/* +USER $NB_UID + +ENV JUPYTER_ENABLE_LAB=yes + +RUN mamba install --yes -c jetbrains kotlin-jupyter-kernel && \ + mamba clean --all -f -y diff --git a/Program/lua/Dockerfile b/Program/lua/Dockerfile new file mode 100644 index 0000000..126d47f --- /dev/null +++ b/Program/lua/Dockerfile @@ -0,0 +1,16 @@ +FROM eoelab.org:1027/ben0i0d/jupyter:py-c + + + +USER root + +WORKDIR /opt + +RUN apt-get update --yes && \ + apt-get install --yes --no-install-recommends lua5.4 && \ + apt-get clean && rm -rf /var/lib/apt/lists/* && \ + pip install ilua + +USER ${NB_UID} +WORKDIR "${HOME}" + diff --git a/r/Dockerfile b/Program/r/Dockerfile similarity index 100% rename from r/Dockerfile rename to Program/r/Dockerfile diff --git a/Program/rust/Dockerfile b/Program/rust/Dockerfile new file mode 100644 index 0000000..c3b1039 --- /dev/null +++ b/Program/rust/Dockerfile @@ -0,0 +1,29 @@ +FROM eoelab.org:1027/ben0i0d/jupyter:py-c + + + +USER root +ENV CARGO_HOME=/opt/rust/.cargo \ + RUSTUP_HOME=/opt/rust/.rust \ + PATH=$PATH:/opt/rust/.cargo/bin \ + CARGO_HTTP_MULTIPLEXING=false + +RUN mkdir -p /opt/rust/.cargo /opt/rust/.rust && \ + apt-get update --yes && \ + apt-get install --yes --no-install-recommends build-essential && \ + apt-get clean && rm -rf /var/lib/apt/lists/* + +COPY rustup-init.sh /opt/rust/rustup-init.sh +COPY config /opt/rust/.cargo/config + +RUN bash /opt/rust/rustup-init.sh -y && \ + cargo install evcxr_jupyter && \ + evcxr_jupyter --install && \ + rm /opt/rust/rustup-init.sh && \ + cp -r $HOME/.local/share/jupyter/kernels/rust /opt/conda/share/jupyter/kernels/ && \ + rustup component add rust-src && \ + fix-permissions /opt/rust && \ + fix-permissions "${CONDA_DIR}" && \ + fix-permissions "/home/${NB_USER}" + +USER $NB_USER \ No newline at end of file diff --git a/Program/rust/config b/Program/rust/config new file mode 100644 index 0000000..91ac424 --- /dev/null +++ b/Program/rust/config @@ -0,0 +1,28 @@ +[source.crates-io] +registry = "https://github.com/rust-lang/crates.io-index" + +# 指定镜像 +replace-with = 'ustc' + +# 清华大学 +[source.tuna] +registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git" + +# 中国科学技术大学 +[source.ustc] +registry = "git://mirrors.ustc.edu.cn/crates.io-index" + +# 上海交通大学 +[source.sjtu] +registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index" + +# rustcc社区 +[source.rustcc0] +registry = "https://code.aliyun.com/rustcc/crates.io-index.git" + +[source.rustcc1] +registry="git://crates.rustcc.cn/crates.io-index" + +[source.rustcc2] +registry="git://crates.rustcc.com/crates.io-index" + diff --git a/Program/rust/rustup-init.sh b/Program/rust/rustup-init.sh new file mode 100644 index 0000000..ddc99f2 --- /dev/null +++ b/Program/rust/rustup-init.sh @@ -0,0 +1,731 @@ +#!/bin/sh +# shellcheck shell=dash + +# This is just a little script that can be downloaded from the internet to +# install rustup. It just does platform detection, downloads the installer +# and runs it. + +# It runs on Unix shells like {a,ba,da,k,z}sh. It uses the common `local` +# extension. Note: Most shells limit `local` to 1 var per line, contra bash. + +if [ "$KSH_VERSION" = 'Version JM 93t+ 2010-03-05' ]; then + # The version of ksh93 that ships with many illumos systems does not + # support the "local" extension. Print a message rather than fail in + # subtle ways later on: + echo 'rustup does not work with this ksh93 version; please try bash!' >&2 + exit 1 +fi + + +set -u + +# If RUSTUP_UPDATE_ROOT is unset or empty, default it. +RUSTUP_UPDATE_ROOT="${RUSTUP_UPDATE_ROOT:-https://static.rust-lang.org/rustup}" + +# NOTICE: If you change anything here, please make the same changes in setup_mode.rs +usage() { + cat <<EOF +rustup-init 1.26.0 (577bf51ae 2023-04-05) +The installer for rustup + +USAGE: + rustup-init [OPTIONS] + +OPTIONS: + -v, --verbose + Enable verbose output + + -q, --quiet + Disable progress output + + -y + Disable confirmation prompt. + + --default-host <default-host> + Choose a default host triple + + --default-toolchain <default-toolchain> + Choose a default toolchain to install. Use 'none' to not install any toolchains at all + + --profile <profile> + [default: default] [possible values: minimal, default, complete] + + -c, --component <components>... + Component name to also install + + -t, --target <targets>... + Target name to also install + + --no-update-default-toolchain + Don't update any existing default toolchain after install + + --no-modify-path + Don't configure the PATH environment variable + + -h, --help + Print help information + + -V, --version + Print version information +EOF +} + +main() { + downloader --check + need_cmd uname + need_cmd mktemp + need_cmd chmod + need_cmd mkdir + need_cmd rm + need_cmd rmdir + + get_architecture || return 1 + local _arch="$RETVAL" + assert_nz "$_arch" "arch" + + local _ext="" + case "$_arch" in + *windows*) + _ext=".exe" + ;; + esac + + local _url="${RUSTUP_UPDATE_ROOT}/dist/${_arch}/rustup-init${_ext}" + + local _dir + if ! _dir="$(ensure mktemp -d)"; then + # Because the previous command ran in a subshell, we must manually + # propagate exit status. + exit 1 + fi + local _file="${_dir}/rustup-init${_ext}" + + local _ansi_escapes_are_valid=false + if [ -t 2 ]; then + if [ "${TERM+set}" = 'set' ]; then + case "$TERM" in + xterm*|rxvt*|urxvt*|linux*|vt*) + _ansi_escapes_are_valid=true + ;; + esac + fi + fi + + # check if we have to use /dev/tty to prompt the user + local need_tty=yes + for arg in "$@"; do + case "$arg" in + --help) + usage + exit 0 + ;; + *) + OPTIND=1 + if [ "${arg%%--*}" = "" ]; then + # Long option (other than --help); + # don't attempt to interpret it. + continue + fi + while getopts :hy sub_arg "$arg"; do + case "$sub_arg" in + h) + usage + exit 0 + ;; + y) + # user wants to skip the prompt -- + # we don't need /dev/tty + need_tty=no + ;; + *) + ;; + esac + done + ;; + esac + done + + if $_ansi_escapes_are_valid; then + printf "\33[1minfo:\33[0m downloading installer\n" 1>&2 + else + printf '%s\n' 'info: downloading installer' 1>&2 + fi + + ensure mkdir -p "$_dir" + ensure downloader "$_url" "$_file" "$_arch" + ensure chmod u+x "$_file" + if [ ! -x "$_file" ]; then + printf '%s\n' "Cannot execute $_file (likely because of mounting /tmp as noexec)." 1>&2 + printf '%s\n' "Please copy the file to a location where you can execute binaries and run ./rustup-init${_ext}." 1>&2 + exit 1 + fi + + if [ "$need_tty" = "yes" ] && [ ! -t 0 ]; then + # The installer is going to want to ask for confirmation by + # reading stdin. This script was piped into `sh` though and + # doesn't have stdin to pass to its children. Instead we're going + # to explicitly connect /dev/tty to the installer's stdin. + if [ ! -t 1 ]; then + err "Unable to run interactively. Run with -y to accept defaults, --help for additional options" + fi + + ignore "$_file" "$@" < /dev/tty + else + ignore "$_file" "$@" + fi + + local _retval=$? + + ignore rm "$_file" + ignore rmdir "$_dir" + + return "$_retval" +} + +check_proc() { + # Check for /proc by looking for the /proc/self/exe link + # This is only run on Linux + if ! test -L /proc/self/exe ; then + err "fatal: Unable to find /proc/self/exe. Is /proc mounted? Installation cannot proceed without /proc." + fi +} + +get_bitness() { + need_cmd head + # Architecture detection without dependencies beyond coreutils. + # ELF files start out "\x7fELF", and the following byte is + # 0x01 for 32-bit and + # 0x02 for 64-bit. + # The printf builtin on some shells like dash only supports octal + # escape sequences, so we use those. + local _current_exe_head + _current_exe_head=$(head -c 5 /proc/self/exe ) + if [ "$_current_exe_head" = "$(printf '\177ELF\001')" ]; then + echo 32 + elif [ "$_current_exe_head" = "$(printf '\177ELF\002')" ]; then + echo 64 + else + err "unknown platform bitness" + fi +} + +is_host_amd64_elf() { + need_cmd head + need_cmd tail + # ELF e_machine detection without dependencies beyond coreutils. + # Two-byte field at offset 0x12 indicates the CPU, + # but we're interested in it being 0x3E to indicate amd64, or not that. + local _current_exe_machine + _current_exe_machine=$(head -c 19 /proc/self/exe | tail -c 1) + [ "$_current_exe_machine" = "$(printf '\076')" ] +} + +get_endianness() { + local cputype=$1 + local suffix_eb=$2 + local suffix_el=$3 + + # detect endianness without od/hexdump, like get_bitness() does. + need_cmd head + need_cmd tail + + local _current_exe_endianness + _current_exe_endianness="$(head -c 6 /proc/self/exe | tail -c 1)" + if [ "$_current_exe_endianness" = "$(printf '\001')" ]; then + echo "${cputype}${suffix_el}" + elif [ "$_current_exe_endianness" = "$(printf '\002')" ]; then + echo "${cputype}${suffix_eb}" + else + err "unknown platform endianness" + fi +} + +get_architecture() { + local _ostype _cputype _bitness _arch _clibtype + _ostype="$(uname -s)" + _cputype="$(uname -m)" + _clibtype="gnu" + + if [ "$_ostype" = Linux ]; then + if [ "$(uname -o)" = Android ]; then + _ostype=Android + fi + if ldd --version 2>&1 | grep -q 'musl'; then + _clibtype="musl" + fi + fi + + if [ "$_ostype" = Darwin ] && [ "$_cputype" = i386 ]; then + # Darwin `uname -m` lies + if sysctl hw.optional.x86_64 | grep -q ': 1'; then + _cputype=x86_64 + fi + fi + + if [ "$_ostype" = SunOS ]; then + # Both Solaris and illumos presently announce as "SunOS" in "uname -s" + # so use "uname -o" to disambiguate. We use the full path to the + # system uname in case the user has coreutils uname first in PATH, + # which has historically sometimes printed the wrong value here. + if [ "$(/usr/bin/uname -o)" = illumos ]; then + _ostype=illumos + fi + + # illumos systems have multi-arch userlands, and "uname -m" reports the + # machine hardware name; e.g., "i86pc" on both 32- and 64-bit x86 + # systems. Check for the native (widest) instruction set on the + # running kernel: + if [ "$_cputype" = i86pc ]; then + _cputype="$(isainfo -n)" + fi + fi + + case "$_ostype" in + + Android) + _ostype=linux-android + ;; + + Linux) + check_proc + _ostype=unknown-linux-$_clibtype + _bitness=$(get_bitness) + ;; + + FreeBSD) + _ostype=unknown-freebsd + ;; + + NetBSD) + _ostype=unknown-netbsd + ;; + + DragonFly) + _ostype=unknown-dragonfly + ;; + + Darwin) + _ostype=apple-darwin + ;; + + illumos) + _ostype=unknown-illumos + ;; + + MINGW* | MSYS* | CYGWIN* | Windows_NT) + _ostype=pc-windows-gnu + ;; + + *) + err "unrecognized OS type: $_ostype" + ;; + + esac + + case "$_cputype" in + + i386 | i486 | i686 | i786 | x86) + _cputype=i686 + ;; + + xscale | arm) + _cputype=arm + if [ "$_ostype" = "linux-android" ]; then + _ostype=linux-androideabi + fi + ;; + + armv6l) + _cputype=arm + if [ "$_ostype" = "linux-android" ]; then + _ostype=linux-androideabi + else + _ostype="${_ostype}eabihf" + fi + ;; + + armv7l | armv8l) + _cputype=armv7 + if [ "$_ostype" = "linux-android" ]; then + _ostype=linux-androideabi + else + _ostype="${_ostype}eabihf" + fi + ;; + + aarch64 | arm64) + _cputype=aarch64 + ;; + + x86_64 | x86-64 | x64 | amd64) + _cputype=x86_64 + ;; + + mips) + _cputype=$(get_endianness mips '' el) + ;; + + mips64) + if [ "$_bitness" -eq 64 ]; then + # only n64 ABI is supported for now + _ostype="${_ostype}abi64" + _cputype=$(get_endianness mips64 '' el) + fi + ;; + + ppc) + _cputype=powerpc + ;; + + ppc64) + _cputype=powerpc64 + ;; + + ppc64le) + _cputype=powerpc64le + ;; + + s390x) + _cputype=s390x + ;; + riscv64) + _cputype=riscv64gc + ;; + loongarch64) + _cputype=loongarch64 + ;; + *) + err "unknown CPU type: $_cputype" + + esac + + # Detect 64-bit linux with 32-bit userland + if [ "${_ostype}" = unknown-linux-gnu ] && [ "${_bitness}" -eq 32 ]; then + case $_cputype in + x86_64) + if [ -n "${RUSTUP_CPUTYPE:-}" ]; then + _cputype="$RUSTUP_CPUTYPE" + else { + # 32-bit executable for amd64 = x32 + if is_host_amd64_elf; then { + echo "This host is running an x32 userland; as it stands, x32 support is poor," 1>&2 + echo "and there isn't a native toolchain -- you will have to install" 1>&2 + echo "multiarch compatibility with i686 and/or amd64, then select one" 1>&2 + echo "by re-running this script with the RUSTUP_CPUTYPE environment variable" 1>&2 + echo "set to i686 or x86_64, respectively." 1>&2 + echo 1>&2 + echo "You will be able to add an x32 target after installation by running" 1>&2 + echo " rustup target add x86_64-unknown-linux-gnux32" 1>&2 + exit 1 + }; else + _cputype=i686 + fi + }; fi + ;; + mips64) + _cputype=$(get_endianness mips '' el) + ;; + powerpc64) + _cputype=powerpc + ;; + aarch64) + _cputype=armv7 + if [ "$_ostype" = "linux-android" ]; then + _ostype=linux-androideabi + else + _ostype="${_ostype}eabihf" + fi + ;; + riscv64gc) + err "riscv64 with 32-bit userland unsupported" + ;; + esac + fi + + # Detect armv7 but without the CPU features Rust needs in that build, + # and fall back to arm. + # See https://github.com/rust-lang/rustup.rs/issues/587. + if [ "$_ostype" = "unknown-linux-gnueabihf" ] && [ "$_cputype" = armv7 ]; then + if ensure grep '^Features' /proc/cpuinfo | grep -q -v neon; then + # At least one processor does not have NEON. + _cputype=arm + fi + fi + + _arch="${_cputype}-${_ostype}" + + RETVAL="$_arch" +} + +say() { + printf 'rustup: %s\n' "$1" +} + +err() { + say "$1" >&2 + exit 1 +} + +need_cmd() { + if ! check_cmd "$1"; then + err "need '$1' (command not found)" + fi +} + +check_cmd() { + command -v "$1" > /dev/null 2>&1 +} + +assert_nz() { + if [ -z "$1" ]; then err "assert_nz $2"; fi +} + +# Run a command that should never fail. If the command fails execution +# will immediately terminate with an error showing the failing +# command. +ensure() { + if ! "$@"; then err "command failed: $*"; fi +} + +# This is just for indicating that commands' results are being +# intentionally ignored. Usually, because it's being executed +# as part of error handling. +ignore() { + "$@" +} + +# This wraps curl or wget. Try curl first, if not installed, +# use wget instead. +downloader() { + local _dld + local _ciphersuites + local _err + local _status + local _retry + if check_cmd curl; then + _dld=curl + elif check_cmd wget; then + _dld=wget + else + _dld='curl or wget' # to be used in error message of need_cmd + fi + + if [ "$1" = --check ]; then + need_cmd "$_dld" + elif [ "$_dld" = curl ]; then + check_curl_for_retry_support + _retry="$RETVAL" + get_ciphersuites_for_curl + _ciphersuites="$RETVAL" + if [ -n "$_ciphersuites" ]; then + _err=$(curl $_retry --proto '=https' --tlsv1.2 --ciphers "$_ciphersuites" --silent --show-error --fail --location "$1" --output "$2" 2>&1) + _status=$? + else + echo "Warning: Not enforcing strong cipher suites for TLS, this is potentially less secure" + if ! check_help_for "$3" curl --proto --tlsv1.2; then + echo "Warning: Not enforcing TLS v1.2, this is potentially less secure" + _err=$(curl $_retry --silent --show-error --fail --location "$1" --output "$2" 2>&1) + _status=$? + else + _err=$(curl $_retry --proto '=https' --tlsv1.2 --silent --show-error --fail --location "$1" --output "$2" 2>&1) + _status=$? + fi + fi + if [ -n "$_err" ]; then + echo "$_err" >&2 + if echo "$_err" | grep -q 404$; then + err "installer for platform '$3' not found, this may be unsupported" + fi + fi + return $_status + elif [ "$_dld" = wget ]; then + if [ "$(wget -V 2>&1|head -2|tail -1|cut -f1 -d" ")" = "BusyBox" ]; then + echo "Warning: using the BusyBox version of wget. Not enforcing strong cipher suites for TLS or TLS v1.2, this is potentially less secure" + _err=$(wget "$1" -O "$2" 2>&1) + _status=$? + else + get_ciphersuites_for_wget + _ciphersuites="$RETVAL" + if [ -n "$_ciphersuites" ]; then + _err=$(wget --https-only --secure-protocol=TLSv1_2 --ciphers "$_ciphersuites" "$1" -O "$2" 2>&1) + _status=$? + else + echo "Warning: Not enforcing strong cipher suites for TLS, this is potentially less secure" + if ! check_help_for "$3" wget --https-only --secure-protocol; then + echo "Warning: Not enforcing TLS v1.2, this is potentially less secure" + _err=$(wget "$1" -O "$2" 2>&1) + _status=$? + else + _err=$(wget --https-only --secure-protocol=TLSv1_2 "$1" -O "$2" 2>&1) + _status=$? + fi + fi + fi + if [ -n "$_err" ]; then + echo "$_err" >&2 + if echo "$_err" | grep -q ' 404 Not Found$'; then + err "installer for platform '$3' not found, this may be unsupported" + fi + fi + return $_status + else + err "Unknown downloader" # should not reach here + fi +} + +check_help_for() { + local _arch + local _cmd + local _arg + _arch="$1" + shift + _cmd="$1" + shift + + local _category + if "$_cmd" --help | grep -q 'For all options use the manual or "--help all".'; then + _category="all" + else + _category="" + fi + + case "$_arch" in + + *darwin*) + if check_cmd sw_vers; then + case $(sw_vers -productVersion) in + 10.*) + # If we're running on macOS, older than 10.13, then we always + # fail to find these options to force fallback + if [ "$(sw_vers -productVersion | cut -d. -f2)" -lt 13 ]; then + # Older than 10.13 + echo "Warning: Detected macOS platform older than 10.13" + return 1 + fi + ;; + 11.*) + # We assume Big Sur will be OK for now + ;; + *) + # Unknown product version, warn and continue + echo "Warning: Detected unknown macOS major version: $(sw_vers -productVersion)" + echo "Warning TLS capabilities detection may fail" + ;; + esac + fi + ;; + + esac + + for _arg in "$@"; do + if ! "$_cmd" --help "$_category" | grep -q -- "$_arg"; then + return 1 + fi + done + + true # not strictly needed +} + +# Check if curl supports the --retry flag, then pass it to the curl invocation. +check_curl_for_retry_support() { + local _retry_supported="" + # "unspecified" is for arch, allows for possibility old OS using macports, homebrew, etc. + if check_help_for "notspecified" "curl" "--retry"; then + _retry_supported="--retry 3" + if check_help_for "notspecified" "curl" "--continue-at"; then + # "-C -" tells curl to automatically find where to resume the download when retrying. + _retry_supported="--retry 3 -C -" + fi + fi + + RETVAL="$_retry_supported" +} + +# Return cipher suite string specified by user, otherwise return strong TLS 1.2-1.3 cipher suites +# if support by local tools is detected. Detection currently supports these curl backends: +# GnuTLS and OpenSSL (possibly also LibreSSL and BoringSSL). Return value can be empty. +get_ciphersuites_for_curl() { + if [ -n "${RUSTUP_TLS_CIPHERSUITES-}" ]; then + # user specified custom cipher suites, assume they know what they're doing + RETVAL="$RUSTUP_TLS_CIPHERSUITES" + return + fi + + local _openssl_syntax="no" + local _gnutls_syntax="no" + local _backend_supported="yes" + if curl -V | grep -q ' OpenSSL/'; then + _openssl_syntax="yes" + elif curl -V | grep -iq ' LibreSSL/'; then + _openssl_syntax="yes" + elif curl -V | grep -iq ' BoringSSL/'; then + _openssl_syntax="yes" + elif curl -V | grep -iq ' GnuTLS/'; then + _gnutls_syntax="yes" + else + _backend_supported="no" + fi + + local _args_supported="no" + if [ "$_backend_supported" = "yes" ]; then + # "unspecified" is for arch, allows for possibility old OS using macports, homebrew, etc. + if check_help_for "notspecified" "curl" "--tlsv1.2" "--ciphers" "--proto"; then + _args_supported="yes" + fi + fi + + local _cs="" + if [ "$_args_supported" = "yes" ]; then + if [ "$_openssl_syntax" = "yes" ]; then + _cs=$(get_strong_ciphersuites_for "openssl") + elif [ "$_gnutls_syntax" = "yes" ]; then + _cs=$(get_strong_ciphersuites_for "gnutls") + fi + fi + + RETVAL="$_cs" +} + +# Return cipher suite string specified by user, otherwise return strong TLS 1.2-1.3 cipher suites +# if support by local tools is detected. Detection currently supports these wget backends: +# GnuTLS and OpenSSL (possibly also LibreSSL and BoringSSL). Return value can be empty. +get_ciphersuites_for_wget() { + if [ -n "${RUSTUP_TLS_CIPHERSUITES-}" ]; then + # user specified custom cipher suites, assume they know what they're doing + RETVAL="$RUSTUP_TLS_CIPHERSUITES" + return + fi + + local _cs="" + if wget -V | grep -q '\-DHAVE_LIBSSL'; then + # "unspecified" is for arch, allows for possibility old OS using macports, homebrew, etc. + if check_help_for "notspecified" "wget" "TLSv1_2" "--ciphers" "--https-only" "--secure-protocol"; then + _cs=$(get_strong_ciphersuites_for "openssl") + fi + elif wget -V | grep -q '\-DHAVE_LIBGNUTLS'; then + # "unspecified" is for arch, allows for possibility old OS using macports, homebrew, etc. + if check_help_for "notspecified" "wget" "TLSv1_2" "--ciphers" "--https-only" "--secure-protocol"; then + _cs=$(get_strong_ciphersuites_for "gnutls") + fi + fi + + RETVAL="$_cs" +} + +# Return strong TLS 1.2-1.3 cipher suites in OpenSSL or GnuTLS syntax. TLS 1.2 +# excludes non-ECDHE and non-AEAD cipher suites. DHE is excluded due to bad +# DH params often found on servers (see RFC 7919). Sequence matches or is +# similar to Firefox 68 ESR with weak cipher suites disabled via about:config. +# $1 must be openssl or gnutls. +get_strong_ciphersuites_for() { + if [ "$1" = "openssl" ]; then + # OpenSSL is forgiving of unknown values, no problems with TLS 1.3 values on versions that don't support it yet. + echo "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384" + elif [ "$1" = "gnutls" ]; then + # GnuTLS isn't forgiving of unknown values, so this may require a GnuTLS version that supports TLS 1.3 even if wget doesn't. + # Begin with SECURE128 (and higher) then remove/add to build cipher suites. Produces same 9 cipher suites as OpenSSL but in slightly different order. + echo "SECURE128:-VERS-SSL3.0:-VERS-TLS1.0:-VERS-TLS1.1:-VERS-DTLS-ALL:-CIPHER-ALL:-MAC-ALL:-KX-ALL:+AEAD:+ECDHE-ECDSA:+ECDHE-RSA:+AES-128-GCM:+CHACHA20-POLY1305:+AES-256-GCM" + fi +} + +main "$@" || exit 1 diff --git a/README.md b/README.md index 2a1b7f8..da1553b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # jupyter-image-stacks -## Jupyter For Data-Science +## Universal Jupyterlab Image stacks English | [中文](README_CN.md) @@ -77,19 +77,27 @@ c.DockerSpawner.allowed_images = { ### Image dependencies ```mermaid graph LR -Python-->PROGRAM{PROGRAMLANG} -PROGRAM-->PB(R) -PROGRAM-->PC(Julia) -Python-->PRA(Scipy)-->PRAA(pyai) -Python-->PRB(Scrpy) -Python-->PRC(pyspark) -Python-->PRD(pyflink) -Python-->MATH{MATH-TOOL}-->MA(Octave) -MATH-->MB(Maple) -MATH-->MC(Sagemath) -MATH-->MD(MATLAB)-->MDA(minimal)-->MDAA(mcm) -MATH-->ME(Mathematica) -MATH-->MF(Scilab) +Python-->P{PROGRAMLANG} +P-->PA(R) +P-->PB(Julia) +P-->PC(C) +P-->PD(Cpp) + +Python-->G{GUI}-->GA(Novnc)-->GAA(Pyqt6) + +Python-->S{Science-compute}-->SA(Scipy) +S-->SB(Pyai) + +Python-->B{BigData}-->BA(pyspark) +B-->BB(pyflink) +B-->BC(Scrpy) + +Python-->M{MATH-TOOL}-->MA(Octave) +M-->MB(Maple) +M-->MC(Sagemath) +M-->MD(MATLAB-minimal)-->MDA(Matlab-mcm) +M-->ME(Mathematica) +M-->MF(Scilab) ``` ## Upstream diff --git a/README_CN.md b/README_CN.md index 3a2787c..b211362 100644 --- a/README_CN.md +++ b/README_CN.md @@ -1,6 +1,6 @@ # jupyter-image-stacks -## Jupyter 项目为了数据科学 +## 通用的Jupyterlab镜像组 English | [中文](README_CN.md) @@ -85,19 +85,27 @@ plt.rcParams["font.family"] = zh_font.get_name() ### 镜像依赖关系 ```mermaid graph LR -Python-->PROGRAM{PROGRAMLANG} -PROGRAM-->PB(R) -PROGRAM-->PC(Julia) -Python-->PRA(Scipy)-->PRAA(pyai) -Python-->PRB(Scrpy) -Python-->PRC(pyspark) -Python-->PRD(pyflink) -Python-->MATH{MATH-TOOL}-->MA(Octave) -MATH-->MB(Maple) -MATH-->MC(Sagemath) -MATH-->MD(MATLAB)-->MDA(minimal)-->MDAA(mcm) -MATH-->ME(Mathematica) -MATH-->MF(Scilab) +Python-->P{PROGRAMLANG} +P-->PA(R) +P-->PB(Julia) +P-->PC(C) +P-->PD(Cpp) + +Python-->G{GUI}-->GA(Novnc)-->GAA(Pyqt6) + +Python-->S{Science-compute}-->SA(Scipy) +S-->SB(Pyai) + +Python-->B{BigData}-->BA(pyspark) +B-->BB(pyflink) +B-->BC(Scrpy) + +Python-->M{MATH-TOOL}-->MA(Octave) +M-->MB(Maple) +M-->MC(Sagemath) +M-->MD(MATLAB-minimal)-->MDA(Matlab-mcm) +M-->ME(Mathematica) +M-->MF(Scilab) ``` ## 上游 diff --git a/pyai/cpu/Dockerfile b/ScienceCompute/pyai/cpu/Dockerfile similarity index 75% rename from pyai/cpu/Dockerfile rename to ScienceCompute/pyai/cpu/Dockerfile index bc3584b..18a7815 100644 --- a/pyai/cpu/Dockerfile +++ b/ScienceCompute/pyai/cpu/Dockerfile @@ -1,4 +1,4 @@ -FROM eoelab.org:1027/ben0i0d/jupyter:scipy-c +FROM eoelab.org:1027/ben0i0d/jupyter:py-c # install torch RUN pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu && \ diff --git a/pyai/gpu/Dockerfile b/ScienceCompute/pyai/gpu/Dockerfile similarity index 100% rename from pyai/gpu/Dockerfile rename to ScienceCompute/pyai/gpu/Dockerfile diff --git a/scipy/cpu/Dockerfile b/ScienceCompute/scipy/cpu/Dockerfile similarity index 84% rename from scipy/cpu/Dockerfile rename to ScienceCompute/scipy/cpu/Dockerfile index b4efcd3..1cc8d9e 100644 --- a/scipy/cpu/Dockerfile +++ b/ScienceCompute/scipy/cpu/Dockerfile @@ -4,8 +4,6 @@ FROM eoelab.org:1027/ben0i0d/jupyter:py-c RUN pip install \ # Data analysis and visualization 'matplotlib' \ - # Machine learning and data mining - 'duckdb' \ # Scientific calculations and statistical analysis 'numpy' &&\ pip cache purge && \ diff --git a/scipy/gpu/Dockerfile b/ScienceCompute/scipy/gpu/Dockerfile similarity index 100% rename from scipy/gpu/Dockerfile rename to ScienceCompute/scipy/gpu/Dockerfile