added experimental sage image
Some checks failed
CI / Build Jupyter Ganymede docker images (push) Successful in 6m40s
CI / Build Jupyter python Docker images (push) Successful in 12s
CI / Build Jupyter Sage docker images (push) Failing after 44s

This commit is contained in:
2024-05-28 05:00:40 +08:00
parent 0ec6c2308f
commit 83c8295c2a
5 changed files with 164 additions and 14 deletions

36
jupyter-sage/Dockerfile Normal file
View File

@@ -0,0 +1,36 @@
FROM debian:latest
RUN apt-get update && apt-get upgrade
RUN apt-get install bc binutils bzip2 ca-certificates cliquer cmake curl \
ecl eclib-tools fflas-ffpack g++ gap gcc gengetopt gfan gfortran \
glpk-utils gmp-ecm lcalc libatomic-ops-dev libboost-dev \
libbraiding-dev libbrial-dev libbrial-groebner-dev libbz2-dev \
libcdd-dev libcdd-tools libcliquer-dev libcurl4-openssl-dev libec-dev \
libecm-dev libffi-dev libflint-dev libfplll-dev libfreetype-dev \
libgap-dev libgc-dev libgd-dev libgf2x-dev libgiac-dev libgivaro-dev \
libglpk-dev libgmp-dev libgsl-dev libhomfly-dev libiml-dev \
liblfunction-dev liblinbox-dev liblrcalc-dev liblzma-dev libm4ri-dev \
libm4rie-dev libmpc-dev libmpfi-dev libmpfr-dev libncurses5-dev \
libntl-dev libopenblas-dev libpari-dev libplanarity-dev libppl-dev \
libprimesieve-dev libpython3-dev libqhull-dev libreadline-dev \
librw-dev libsingular4-dev libsqlite3-dev libssl-dev \
libsuitesparse-dev libsymmetrica2-dev libz-dev libzmq3-dev m4 make \
maxima maxima-sage meson nauty ninja-build openssl palp pari-doc \
pari-elldata pari-galdata pari-galpol pari-gp2c pari-seadata patch \
patchelf perl pkg-config planarity ppl-dev python3 python3-setuptools \
python3-venv singular singular-doc sqlite3 sympow tachyon tar texinfo \
tox xcas xz-utils git
RUN apt-get install default-jdk dvipng ffmpeg fonts-freefont-otf \
imagemagick latexmk libavdevice-dev libjpeg-dev pandoc tex-gyre \
texlive-fonts-recommended texlive-lang-cyrillic texlive-lang-english \
texlive-lang-european texlive-lang-french texlive-lang-german \
texlive-lang-italian texlive-lang-japanese texlive-lang-polish \
texlive-lang-portuguese texlive-lang-spanish texlive-latex-extra \
texlive-luatex texlive-xetex xindy
RUN useradd jovyan -u 1000 -s /bin/bash -m -h /home/jovyan
USER jovyan
WORKDIR /home/jovyan
COPY build.sh build.sh
RUN git clone -c core.symlinks=true --filter blob:none \
--origin upstream --branch master --tags \
https://github.com/sagemath/sage.git
RUN export srcdir=/home/jovyan/sage source build.sh && prepare && build

51
jupyter-sage/build.sh Normal file
View File

@@ -0,0 +1,51 @@
#!/usr/bin/env sh
pkgs=(standard
bliss
coxeter3
mcqd
meataxe
sirocco
tdlib)
prepare(){
cd sage
# use correct latte-count binary name
# patch -p1 -i ../latte-count.patch
# update to tdlib 0.9 (Fedora)
# patch -p1 -i ../sagemath-tdlib-0.9.patch
# Adapt to Singular changes
# patch -p1 -i ../singular-4.4.patch
# Fix build with GCC 14
# git cherry-pick -n e87fd8466d10c21d8f16bd08187c11b4dc116020
# git cherry-pick -n cec595ef953bb9e180aadee8583ad5a2fa5577d3
./bootstrap
}
build() {
export SAGE_NUM_THREADS=$(($(nproc)/2))
export PYTHONPATH="$PWD"/sage/pkgs/sage-setup
for _pkg in ${_pkgs[@]}; do
cd "$srcdir"/sage/pkgs/sagemath-$_pkg
python setup.py build
done
}
package() {
for _pkg in ${_pkgs[@]}; do
cd "$srcdir"/sage/pkgs/sagemath-$_pkg
python setup.py install --root="$pkgdir" --optimize=1
done
# fix symlinks to assets
# _pythonpath=`python -c "from sysconfig import get_path; print(get_path('platlib'))"`
# for _i in $(ls "$srcdir"/sage/src/sage/ext_data/notebook-ipython); do
# rm "$pkgdir"/usr/share/jupyter/kernels/sagemath/$_i
# ln -s $_pythonpath/sage/ext_data/notebook-ipython/$_i "$pkgdir"/usr/share/jupyter/kernels/sagemath/
# done
# adjust threejs version
# rm "$pkgdir"$_pythonpath/sage/ext_data/threejs/threejs-version.txt
# ln -s /usr/share/threejs-sage/version "$pkgdir"$_pythonpath/sage/ext_data/threejs/threejs-version.txt
}