diff --git a/doc_data_html.pcl b/doc_data_html.pcl new file mode 100644 index 00000000..4b249cfe Binary files /dev/null and b/doc_data_html.pcl differ diff --git a/docker/Dockerfile-dev b/docker/Dockerfile-dev index e7a9f1dd..3cfdd31e 100644 --- a/docker/Dockerfile-dev +++ b/docker/Dockerfile-dev @@ -1,5 +1,5 @@ # -*- Dockerfile -*- -FROM ubuntu:25.04 +FROM ubuntu:26.04 ENV MATHICS3_HOME=/home/ubuntu ENV MATHICS3_MODULE_OPTION="--load-module pymathics.graph,pymathics.natlang,pymathics.trepan" @@ -26,6 +26,7 @@ RUN apt-get install -y -qq \ asymptote \ cargo \ evince \ + enchant-2 \ gfortran \ git \ gyp \ @@ -38,8 +39,8 @@ RUN apt-get install -y -qq \ libxcb-cursor-dev \ libxml2-dev \ libxslt1-dev \ - llvm-15 \ - llvm-15-dev \ + llvm-18 \ + llvm-18-dev \ lmodern texlive-latex-extra \ maria \ mesa-utils \ @@ -48,7 +49,7 @@ RUN apt-get install -y -qq \ pkg-config \ pyqt5-dev-tools \ python3-pip \ - python3.13-venv \ + python3.14-venv \ remake \ rustc \ sqlite3 \ @@ -61,26 +62,24 @@ RUN apt-get install -y -qq \ # # defer deletion until close to the end # # RUN rm -fr /tmp*_amd64.deb -RUN /usr/bin/python3.13 -m venv /opt/python3.13 -ENV PATH=.:/opt/python3.13/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin -ENV PYTHON=/opt/python3.13/bin/python3.13 -ENV PIP=/opt/python3.13/bin/pip +RUN /usr/bin/python3.14 -m venv /opt/python3.14 +ENV PATH=.:/opt/python3.14/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +ENV PYTHON=/opt/python3.14/bin/python3.14 +ENV PIP=/opt/python3.14/bin/pip RUN $PYTHON -m pip install --upgrade pip ######################### # Development libraries ######################### -RUN $PIP install --local -e git+https://github.com/rocky/python-xdis.git#egg=xdis +RUN $PYTHON -m pip install setuptools RUN $PIP install --local --no-build-isolation -e git+https://github.com/rocky/python-filecache.git#egg=pyficache RUN $PIP install --local -e git+https://github.com/rocky/python-uncompyle6.git#egg=uncompyle6 RUN $PIP install --local -e git+https://github.com/rocky/python-decompile3.git#egg=decompyle3 RUN $PIP install git+https://github.com/rocky/python-filecache#egg=pyficache RUN $PIP install -e git+https://github.com/Trepan-Debuggers/python3-trepan#egg=trepan3k -RUN $PIP install -e git+https://github.com/Trepan-Debuggers/python3-trepan#egg=trepan3k RUN git clone --depth 1 https://github.com/Mathics3/Mathics3-scanner.git RUN (cd Mathics3-scanner && $PIP install -e .[full] && bash -x ./admin-tools/make-JSON-tables.sh) -RUN $PIP install git+https://github.com/rocky/python-xdis.git RUN $PIP install git+https://github.com/Trepan-Debuggers/python3-trepan.git # ################# @@ -92,14 +91,15 @@ RUN git clone --depth 1 https://github.com/Mathics3/mathics-core.git # We need to add the second repository Rubi, explicitly RUN (cd mathics-core && git submodule update --init --recursive && \ git submodule add https://github.com/Mathics3/Mathics3-Rubi.git mathics/Packages/Rubi) -RUN (cd mathics-core && git submodule && $PIP install -e .[full]) +RUN (cd mathics-core && git submodule && $PIP install -e .[full] --no-build-isolation) RUN (cd mathics-core && bash ./admin-tools/make-JSON-tables.sh) ############################################## # Mathics Modules: Trepan, Graph, and Natlang ############################################## -RUN pip install Mathics3-Module-Base -RUN pip install mathics-pygments +RUN $PIP install Mathics3-Module-Base +RUN git clone --depth 1 https://github.com/Mathics3/Mathics3-pygments.git +RUN (cd Mathics3-pygments && $PIP install -e . --no-build-isolation) RUN git clone --depth 1 https://github.com/Mathics3/Mathics3-trepan.git RUN (cd Mathics3-trepan && $PIP install --no-build-isolation -e .) @@ -108,6 +108,7 @@ RUN (cd trepan3k-mathics-debugger && $PIP install -e .) RUN $PIP install --no-build-isolation -e "git+https://github.com/Mathics3/Mathics3-Module-networkx#egg=Mathics3-Module-networkx" RUN $PIP install --no-build-isolation -e "git+https://github.com/Mathics3/Mathics3-Module-nltk#egg=Mathics3-Module-nltk" +# RUN $PIP install --no-build-isolation -e "git+https://github.com/Mathics3/Mathics3-Module-PyICU#egg=Mathics3-Module-PyICU" RUN $PIP install spacy wordcloud RUN $PYTHON -m spacy download en_core_web_md @@ -130,7 +131,7 @@ RUN $PIP install nltk # # COPY src/documentation.tex mathics-core/mathics/doc/latex/documentation.tex # # COPY src/version-info.tex mathics-core/mathics/doc/latex/ -COPY src/mathics.pdf mathics-core/mathics/doc/latex/mathics.pdf +COPY src/mathics3.pdf mathics-core/mathics/doc/latex/mathics3.pdf ################## # Mathics Django # @@ -145,7 +146,9 @@ RUN (cd Mathics3-django && make build) # # RUN (cd src/Mathics3-django && PIP=$PIP make) # RUN (cd Mathics3-django && $PYTHON Mathics3_django/docpipeline.py -ok) || true COPY src/doc_html_data.pcl doc_html_data.pcl -RUN mv -v doc_html_data.pcl /home/ubuntu/Mathics3-django/mathics_django/doc/doc_data_html.pcl +RUN mkdir -p ${MATHICS3_HOME}/.local/var/Mathics3/ +RUN mv -v doc_html_data.pcl /home/ubuntu/.local/var/Mathics3/doc_data_html.pcl +RUN (cd Mathics3-django && $PYTHON -m pip install --no-build-isolation -e .) ################## # Mathicsscript # @@ -154,7 +157,7 @@ RUN mv -v doc_html_data.pcl /home/ubuntu/Mathics3-django/mathics_django/doc/doc_ RUN git clone --depth 1 https://github.com/Mathics3/mathicsscript.git RUN (cd mathicsscript && PYTHON=$PYTHON make install) -RUN ${PYTHON} -m pip install mathicsscript[full] +RUN (cd mathicsscript && $PYTHON -m pip install -e .[full]) # RUN ${PYTHON} -m pip install -e git+https://github.com/Mathics3/mathicsscript#egg=mathicsscript[full] # RUN (cd src/mathicsscript && make) @@ -181,7 +184,7 @@ RUN mkdir -p ${MATHICS3_HOME}/.local RUN mkdir -p ${MATHICS3_HOME}/.config RUN mkdir -p ${MATHICS3_HOME}/data RUN mkdir -p ${MATHICS3_HOME}/.local/var/Mathics3/Packages -COPY django-db/mathics.sqlite ${MATHICS3_HOME}/.local/var/Mathics3/mathics.sqlite +COPY django-db/mathics3.sqlite ${MATHICS3_HOME}/.local/var/Mathics3/mathics3.sqlite RUN chown -R ubuntu:ubuntu $MATHICS3_HOME ${MATHICS3_HOME}/.local RUN chown -R ubuntu:ubuntu ${MATHICS3_HOME}/data USER ubuntu diff --git a/docker/django-db/mathics.sqlite b/docker/django-db/mathics3.sqlite similarity index 96% rename from docker/django-db/mathics.sqlite rename to docker/django-db/mathics3.sqlite index cd220c7c..8f860caa 100644 Binary files a/docker/django-db/mathics.sqlite and b/docker/django-db/mathics3.sqlite differ diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 8093fa15..0eb63dfd 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -2,9 +2,9 @@ # This is the docker entry point and gets installed as /usr/local/bin/mathics.sh USER_HOME="/home/ubuntu" -MATHICS_DJANGO_SYSTEM_DB_PATH="${USER_HOME}/.local/var/Mathics3/mathics.sqlite" +MATHICS_DJANGO_SYSTEM_DB_PATH="${USER_HOME}/.local/var/Mathics3/mathics3.sqlite" -export PATH="/opt/python3.13/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:${USER_HOME}/.local/bin" +export PATH="/opt/python3.14/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:${USER_HOME}/.local/bin" export PYTHONBREAKPOINT=trepan.api.debug script_cmd="${ENTRYPOINT_COMMAND:-$(basename $0)}" @@ -57,17 +57,19 @@ done case $mathics_mode in cli) mathicsscript $@ ;; - mathics3-tokens) mathics3-tokens $@ + mathics3-code-tokenize) mathics3-code-tokenize $@ + ;; + mathics3-code-parse) mathics3-code-parse $@ ;; minimal|mathics|mathics3) - mathics $@ + mathics3 $@ ;; document|pdf) - evince ${USER_HOME}/mathics-core/mathics/doc/latex/mathics.pdf + evince ${USER_HOME}/mathics-core/mathics/doc/latex/mathics3.pdf ;; copy) echo "Copying mathics.pdf to host-attached filesystem ${TEMPDIR}." - cp ${USER_HOME}/mathics-core/mathics/doc/latex/mathics.pdf /usr/src/app/data/mathics.pdf + cp ${USER_HOME}/mathics-core/mathics/doc/latex/mathics3.pdf /usr/src/app/data/mathics3.pdf ;; django|ui|gui) echo @@ -79,11 +81,11 @@ case $mathics_mode in cp -vp $MATHICS_DJANGO_SYSTEM_DB_PATH $MATHICS_DJANGO_DB_PATH fi else - echo "~~~~ SQLite data (worksheets, user info) will be stored in $MATHICS_HOME/data/mathics.sqlite" + echo "~~~~ SQLite data (worksheets, user info) will be stored in $MATHICS_HOME/data/mathics3.sqlite" fi echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" echo - mathicsserver -e $@ ;; + Mathics3server runserver $@ ;; shell) /bin/bash ;; *) echo "unknown mathics_mode=$mathics_mode. See '$script_cmd --help'" ; exit 2 ;; esac diff --git a/docker/src/doc_data_html.pcl b/docker/src/doc_data_html.pcl new file mode 100644 index 00000000..4b249cfe Binary files /dev/null and b/docker/src/doc_data_html.pcl differ diff --git a/docker/src/mathics3.pdf b/docker/src/mathics3.pdf index 609c92af..485ef32f 100644 Binary files a/docker/src/mathics3.pdf and b/docker/src/mathics3.pdf differ diff --git a/pyproject.toml b/pyproject.toml index 06b1c31d..c2fa419f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,9 +45,11 @@ include = ["script/dmathics3"] [tool.poetry.scripts] dmathics3 = { reference = "script/dmathics3", type = "file" } -dmathics3-tokens = { reference = "script/dmathics3-tokens", type = "file" } +dmathics3-parser = { reference = "script/dmathics3-parse", type = "file" } +dmathics3-tokenize = { reference = "script/dmathics3-tokenize", type = "file" } dmathics3copy = { reference = "script/dmathics3copy", type = "file" } dmathics3doc = { reference = "script/dmathics3doc", type = "file" } +dmathics3Server = { reference = "script/dmathics3server", type = "file" } [tool.setuptools.packages.find] include = ["mathics3_omnibus*"] diff --git a/script/dmathics3-code-parse b/script/dmathics3-code-parse new file mode 100755 index 00000000..219c003e --- /dev/null +++ b/script/dmathics3-code-parse @@ -0,0 +1,26 @@ +#!/bin/bash +set -e +if [ -n "$DEBUG" ]; then + set -x +fi + +# The release name we are configured to run under. +typeset dmathics_version='1.0.0' + +# Allow customization using POSIX environment variables: +DOCKER=${DOCKER:-docker} + +TAG=${TAG:-latest} +MATHICS3_IMAGE=${MATHICS3_IMAGE:-mathicsorg/mathics:${TAG}} + +# Show environment variables +for env_setting in MATHICS3_IMAGE; do + echo $env_setting = ${!env_setting} +done + + +$DOCKER run --rm -it \ + --name mathics3-code-parse \ + --volume /tmp:/usr/src/app/data \ + $MATHICS3_IMAGE \ + --mode mathics3-code-parse -- $@ diff --git a/script/dmathics3-tokens b/script/dmathics3-code-tokenize similarity index 93% rename from script/dmathics3-tokens rename to script/dmathics3-code-tokenize index 67bd5ffa..222a4811 100755 --- a/script/dmathics3-tokens +++ b/script/dmathics3-code-tokenize @@ -23,4 +23,4 @@ $DOCKER run --rm -it \ --name mathics-cli \ --volume /tmp:/usr/src/app/data \ $MATHICS3_IMAGE \ - --mode mathics3-tokens -- $@ + --mode mathics3-code-tokenize -- $@ diff --git a/script/dmathicsscript b/script/dmathics3script similarity index 100% rename from script/dmathicsscript rename to script/dmathics3script diff --git a/script/dmathicsscript.cmd b/script/dmathics3script.cmd similarity index 100% rename from script/dmathicsscript.cmd rename to script/dmathics3script.cmd diff --git a/script/dmathicsserver b/script/dmathics3server similarity index 64% rename from script/dmathicsserver rename to script/dmathics3server index 147f2a42..d9df7891 100755 --- a/script/dmathicsserver +++ b/script/dmathics3server @@ -5,15 +5,15 @@ if [ -n "$DEBUG" ]; then fi # The release name we are configured to run under. -typeset dmathicsserver_version='2.0.0' +typeset dmathicsserver_version='10.0.0' # Allow customization using POSIX environment variables: APP_DATADIR=${APP_DATADIR:-/tmp} DOCKER=${DOCKER:-docker} ASYMPTOTE_PDFVIEWER=${ASYMPTOTE_PDFVIWER:-/usr/bin/evince} USER_HOME="/home/ubuntu" -MATHICS_DJANGO_DB=${MATHICS_DJANGO_DB:-"mathics.sqlite"} -MATHICS_DJANGO_DB_PATH=${MATHICS_DJANGO_DB_PATH:-${USER_HOME}/.local/var/Mathics3/${MATHICS_DJANGO_DB}} +MATHICS3_DJANGO_DB=${MATHICS_DJANGO_DB:-"mathics3.sqlite"} +MATHICS3_DJANGO_DB_PATH=${MATHICS_DJANGO_DB_PATH:-${USER_HOME}/.local/var/Mathics3/${MATHICS3_DJANGO_DB}} TAG=${TAG:-latest} MATHICS3_IMAGE=${MATHICS3_IMAGE:-mathicsorg/mathics:${TAG}} @@ -26,9 +26,9 @@ for arg in "$@" ; do -h | --help | help ) cat <<_EOH usage: - dmathicsserver [options] + dmathics3server [options] -runs the Mathics command-line interface from a docker container. +runs the Mathics3 command-line interface from a docker container. Options specfic to dmathicsserver: @@ -39,7 +39,7 @@ Options specfic to dmathicsserver: show this help -V| --version - show the dmathicserver version and exit + show the dmathics3server version and exit We will now pass help along to the docker image. Just a sec... @@ -50,7 +50,7 @@ _EOH $DOCKER pull $MATHICS3_IMAGE ;; -v | -V | --version) - echo "dmathicsserver version ${dmathicsserver_version}" + echo "dmathics3server version ${dmathicsserver_version}" exit 100 ;; default) @@ -59,24 +59,23 @@ _EOH done # Show environment variables -for env_setting in MATHICS_DJANGO_DB_PATH APP_DATADIR MATHICS3_IMAGE DISPLAY; do +for env_setting in MATHICS3_DJANGO_DB_PATH APP_DATADIR MATHICS3_IMAGE DISPLAY; do echo $env_setting = ${!env_setting} done $DOCKER run \ -it \ - --name mathics-django \ + --name Mathics3-django \ --rm \ --env "COLORFGBG=$COLORFGBG" \ --env="DISPLAY" \ --env="ASYMPTOTE_PDFVIEWER=/usr/bin/evince" \ - --env "MATHICS_DJANGO_DB_PATH=$MATHICS_DJANGO_DB_PATH" \ - --env "PYTHON=/opt/python3.12/bin/python3.12" \ + --env "PYTHON=/opt/python3.14/bin/python3.14" \ --user=$(id -u) \ --workdir=/app \ --volume="$PWD":/app \ --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \ - --volume="${APP_DATADIR}:/home/ubuntu/.local/var/Mathics3" \ - -p 8000:8000 \ + --network=host \ $MATHICS3_IMAGE \ - --mode ui -- $stripped_args + --mode ui -- $stripped_args \ + # --volume="${APP_DATADIR}:/home/ubuntu/.local/var/Mathics3" \