Including passagemath-standard to cross platform Docker container

I am very excited about the passagemath project; it seems to be allowing me to install the parts of Sage needed for generating sageplots in PreTeXt much easier and lighter (my docker container for PreTeXt shrunk from 5.8GB to 1.8GB!)

My only difficulty so far is that I have been unable to create a cross platform container (linux/arm64 is the issue). I tried adding the commands recommended in the README for ARM builds, but still run into this when my docker build runs:

#6 327.3   configure: error:
#6 327.4 
#6 327.4       Given --with-system-python3=force, but no system package could be used.
#6 327.4       That's an error.  Please install the indicated package to continue.
#6 327.4       (To override this error, use ./configure --without-system-python3)
#6 327.4 
#6 331.2   configure failed; this may be caused by missing build prerequisites.
#6 331.8   You can install the required build prerequisites using the following shell command
#6 331.8 
#6 331.9   sudo apt-get install binutils make m4 perl flex bison python3 tar bc gcc g++ ca-certificates libbz2-dev bzip2 xz-utils libffi-dev
#6 331.9 
#6 331.9   error: configure failed
#6 332.1   error: subprocess-exited-with-error

(this comes from the part of the build where pip install passagemath-conf is executed)

This is being done in a virtual environment. Python3 is definitely installed.

It’s difficult for me to test since I am not on an arm system, so I’m relying on a github action to build the docker image. That is all in this repo (it is the “full” version that has passage math): GitHub - oscarlevin/pretext-docker

Any suggestions would be much appreciated.

The complete output from configure will say exactly why system python3 was rejected. I’ll be happy to look at it if you post it

Actually I found it in your GH Actions logs.

 Checking whether SageMath should install SPKG python3...
 checking whether any of bzip2 liblzma libffi zlib is installed as or will be installed as SPKG... yes; install python3 as well

So you’ll need to install some of these packages as system packages.
It also gives you this hint:

#7 326.2         $ sudo apt-get install libboost-dev libboost-regex-dev libbrial-dev libbrial-groebner-dev libbz2-dev bzip2 libcdd-dev libcdd-tools cliquer libcliquer-dev cmake curl libcurl4-openssl-dev ecl libec-dev eclib-tools gmp-ecm libecm-dev fflas-ffpack libflint-dev libfplll-dev libfreetype-dev gap libgap-dev libgc-dev gengetopt libgf2x-dev libgiac-dev xcas libgivaro-dev glpk-utils libglpk-dev libgsl-dev libiml-dev texinfo lcalc liblfunction-dev libatomic-ops-dev libbraiding-dev libffi-dev libgd-dev libhomfly-dev xz-utils liblzma-dev liblinbox-dev liblrcalc-dev libm4ri-dev libm4rie-dev maxima-sage maxima meson libmpc-dev libmpfi-dev nauty libncurses5-dev ninja-build libntl-dev libopenblas-dev palp pari-gp2c libpari-dev pari-doc pari-elldata pari-galdata pari-galpol pari-seadata patchelf pkg-config libplanarity-dev planarity libppl-dev ppl-dev libprimecount-dev libprimesieve-dev python3 libpython3-dev python3-setuptools python3-venv qhull-bin libqhull-dev libreadline-dev librw-dev singular singular-doc libsingular4-dev libsqlite3-dev sqlite3 libsuitesparse-dev libsymmetrica2-dev sympow tachyon tox libzmq3-dev libz-dev

(You’ll only need those packages that were previously mentioned when it rejected python3, not all of those listed.)

Aha! I was looking at a different hint that did not include those. I’ll try that and follow up. I appreciate your help.

I’ve also opened Document the DEPCHECKs of python3 for the wheelhouse procedure, or remove them · Issue #1013 · passagemath/passagemath · GitHub for streamlining this in code and/or documentation.

Happy to report I’m making progress and got past that particular issue. Now I’ve been running into erros downloading .whl files as part of the install. It seems as though 10.5.41’s release contains only three assets, while earlier releases contain a bunch of .whl files.

I can try using 10.5.40 on the pip install passagemath-conf.

It should attempt to download from the earlier releases too, see passagemath/.upstream.d/15-github.com-passagemath-passagemath-releases at main · passagemath/passagemath · GitHub

If you have the details (log), please send them

Here is the part result of the make reconfigure command:

$ make reconfigure
Running cd /root/.sage/sage-10.5.41-Linux-aarch64 && (. ./.homebrew-build-env 2> /dev/null; if [ -z "$MAKE" ]; then export MAKE="make -j$(PATH=build/bin:$PATH build/bin/sage-build-num-threads | cut -d" " -f 2)"; fi && make V=0 ${SAGE_CONF_TARGETS-base})
make -j8 build/make/Makefile --stop
make[1]: Entering directory '/root/.sage/sage-10.5.41-Linux-aarch64'
make[1]: 'build/make/Makefile' is up to date.
make[1]: Leaving directory '/root/.sage/sage-10.5.41-Linux-aarch64'
build/bin/sage-logger \
"cd build/make && ./install fpylll" logs/install.log
make[1]: Entering directory '/root/.sage/sage-10.5.41-Linux-aarch64/build/make'
make[1]: Leaving directory '/root/.sage/sage-10.5.41-Linux-aarch64/build/make'
make[1]: Entering directory '/root/.sage/sage-10.5.41-Linux-aarch64/build/make'
mkdir -p "/root/.sage/sage-10.5.41-Linux-aarch64/local/var/lib/sage/venv-python3.11/var/lib/sage/installed"
touch /root/.sage/sage-10.5.41-Linux-aarch64/local/var/lib/sage/installed/.dummy
/opt/venv/bin/python3 /root/.sage/sage-10.5.41-Linux-aarch64/build/bin/sage-venv "/root/.sage/sage-10.5.41-Linux-aarch64/local/var/lib/sage/venv-python3.11"
make --no-print-directory fplll-SAGE_LOCAL-no-deps
rm -f "/root/.sage/sage-10.5.41-Linux-aarch64/local/var/lib/sage/venv-python3.11/var/lib/sage/installed"/python3_venv-*
touch "/root/.sage/sage-10.5.41-Linux-aarch64/local/var/lib/sage/venv-python3.11/var/lib/sage/installed/python3_venv-3.11--opt-venv-bin-python3"
make --no-print-directory pip-SAGE_VENV-no-deps
[fplll-5.5.0] installing. Log file: /root/.sage/sage-10.5.41-Linux-aarch64/logs/pkgs/fplll-5.5.0.log
[pip-25.0.1] installing. Log file: /root/.sage/sage-10.5.41-Linux-aarch64/logs/pkgs/pip-25.0.1.log
[pip-25.0.1] successfully installed (real 1m4.908s user 0m47.889s sys 0m2.218s).
make --no-print-directory setuptools-SAGE_VENV-no-deps
make --no-print-directory packaging-SAGE_VENV-no-deps
make --no-print-directory tomli-SAGE_VENV-no-deps
make --no-print-directory typing_extensions-SAGE_VENV-no-deps
make --no-print-directory wheel-SAGE_VENV-no-deps
make --no-print-directory flit_core-SAGE_VENV-no-deps
make --no-print-directory editables-SAGE_VENV-no-deps
[flit_core-3.9.0] installing. Log file: /root/.sage/sage-10.5.41-Linux-aarch64/logs/pkgs/flit_core-3.9.0.log
[tomli-2.2.1] installing. Log file: /root/.sage/sage-10.5.41-Linux-aarch64/logs/pkgs/tomli-2.2.1.log
[typing_extensions-4.13.2] installing. Log file: /root/.sage/sage-10.5.41-Linux-aarch64/logs/pkgs/typing_extensions-4.13.2.log
[editables-0.5] installing. Log file: /root/.sage/sage-10.5.41-Linux-aarch64/logs/pkgs/editables-0.5.log
[packaging-24.2] installing. Log file: /root/.sage/sage-10.5.41-Linux-aarch64/logs/pkgs/packaging-24.2.log
[wheel-0.44.0] installing. Log file: /root/.sage/sage-10.5.41-Linux-aarch64/logs/pkgs/wheel-0.44.0.log
[setuptools-78.1.0] installing. Log file: /root/.sage/sage-10.5.41-Linux-aarch64/logs/pkgs/setuptools-78.1.0.log
[tomli-2.2.1] error installing, exit status 1. End of log file:
[tomli-2.2.1] Attempting to download package tomli-2.2.1-py3-none-any.whl from mirrors
[tomli-2.2.1] https://github.com/passagemath/passagemath/releases/download/passagemath-10.5.41/tomli-2.2.1-py3-none-any.whl
[tomli-2.2.1] [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
[tomli-2.2.1] ERROR [transfer|run:135]: [Errno socket error] [Errno 404] Not Found: '//github.com/passagemath/passagemath/releases/download/passagemath-10.5.41/tomli-2.2.1-py3-none-any.whl'
[tomli-2.2.1] https://github.com/passagemath/passagemath/releases/download/passagemath-10.5.40/tomli-2.2.1-py3-none-any.whl
[tomli-2.2.1] [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
[tomli-2.2.1] ERROR [transfer|run:135]: [Errno socket error] [Errno socket error] [Errno -3] Temporary failure in name resolution
[tomli-2.2.1] https://github.com/passagemath/passagemath/releases/download/passagemath-10.5.39/tomli-2.2.1-py3-none-any.whl
[tomli-2.2.1] [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
[tomli-2.2.1] ERROR [transfer|run:135]: [Errno socket error] [Errno -3] Temporary failure in name resolution
[tomli-2.2.1] https://github.com/sagemath/sage/releases/download/10.6/tomli-2.2.1-py3-none-any.whl
[tomli-2.2.1] [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
[tomli-2.2.1] ERROR [transfer|run:135]: [Errno socket error] [Errno 404] Not Found: '//github.com/sagemath/sage/releases/download/10.6/tomli-2.2.1-py3-none-any.whl'
[tomli-2.2.1] Attempting to download from https://files.pythonhosted.org/packages/py3/t/tomli/tomli-2.2.1-py3-none-any.whl
[tomli-2.2.1] [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
[tomli-2.2.1] ERROR [transfer|run:135]: [Errno socket error] [Errno -3] Temporary failure in name resolution
[tomli-2.2.1] Traceback (most recent call last):
[tomli-2.2.1] File "/usr/lib/python3.11/urllib/request.py", line 1787, in open
[tomli-2.2.1] return getattr(self, name)(url)
[tomli-2.2.1] ^^^^^^^^^^^^^^^^^^^^^^^^
[tomli-2.2.1] File "/usr/lib/python3.11/urllib/request.py", line 1996, in open_https
[tomli-2.2.1] return self._open_generic_http(self._https_connection, url, data)
[tomli-2.2.1] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[tomli-2.2.1] File "/usr/lib/python3.11/urllib/request.py", line 1945, in _open_generic_http
[tomli-2.2.1] http_conn.request("GET", selector, headers=headers)
[tomli-2.2.1] File "/usr/lib/python3.11/http/client.py", line 1282, in request
[tomli-2.2.1] self._send_request(method, url, body, headers, encode_chunked)
[tomli-2.2.1] File "/usr/lib/python3.11/http/client.py", line 1328, in _send_request
[tomli-2.2.1] self.endheaders(body, encode_chunked=encode_chunked)
[tomli-2.2.1] File "/usr/lib/python3.11/http/client.py", line 1277, in endheaders
[tomli-2.2.1] self._send_output(message_body, encode_chunked=encode_chunked)
[tomli-2.2.1] File "/usr/lib/python3.11/http/client.py", line 1037, in _send_output
[tomli-2.2.1] self.send(msg)
[tomli-2.2.1] File "/usr/lib/python3.11/http/client.py", line 975, in send
[tomli-2.2.1] self.connect()
[tomli-2.2.1] File "/usr/lib/python3.11/http/client.py", line 1447, in connect
[tomli-2.2.1] super().connect()
[tomli-2.2.1] File "/usr/lib/python3.11/http/client.py", line 941, in connect
[tomli-2.2.1] self.sock = self._create_connection(
[tomli-2.2.1] ^^^^^^^^^^^^^^^^^^^^^^^^
[tomli-2.2.1] File "/usr/lib/python3.11/socket.py", line 827, in create_connection
[tomli-2.2.1] for res in getaddrinfo(host, port, 0, SOCK_STREAM):
[tomli-2.2.1] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[tomli-2.2.1] File "/usr/lib/python3.11/socket.py", line 962, in getaddrinfo
[tomli-2.2.1] for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
[tomli-2.2.1] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[tomli-2.2.1] socket.gaierror: [Errno -3] Temporary failure in name resolution
[tomli-2.2.1]
[tomli-2.2.1] The above exception was the direct cause of the following exception:
[tomli-2.2.1]
[tomli-2.2.1] Traceback (most recent call last):
[tomli-2.2.1] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/tarball.py", line 223, in download
[tomli-2.2.1] Download(url, destination).run()
[tomli-2.2.1] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/download/transfer.py", line 137, in run
[tomli-2.2.1] raise error
[tomli-2.2.1] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/download/transfer.py", line 128, in run
[tomli-2.2.1] filename, info = opener.retrieve(
[tomli-2.2.1] ^^^^^^^^^^^^^^^^
[tomli-2.2.1] File "/usr/lib/python3.11/urllib/request.py", line 1821, in retrieve
[tomli-2.2.1] fp = self.open(url, data)
[tomli-2.2.1] ^^^^^^^^^^^^^^^^^^^^
[tomli-2.2.1] File "/usr/lib/python3.11/urllib/request.py", line 1793, in open
[tomli-2.2.1] raise OSError('socket error', msg) from msg
[tomli-2.2.1] OSError: [Errno socket error] [Errno -3] Temporary failure in name resolution
[tomli-2.2.1]
[tomli-2.2.1] During handling of the above exception, another exception occurred:
[tomli-2.2.1]
[tomli-2.2.1] Traceback (most recent call last):
[tomli-2.2.1] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/sage-package", line 40, in <module>
[tomli-2.2.1] run()
[tomli-2.2.1] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/cmdline.py", line 546, in run
[tomli-2.2.1] app.download_cls(*args.package_class,
[tomli-2.2.1] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/app.py", line 351, in download_cls
[tomli-2.2.1] pc.apply(download_with_args)
[tomli-2.2.1] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/expand_class.py", line 126, in apply
[tomli-2.2.1] function(package_name, *args, **kwds)
[tomli-2.2.1] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/app.py", line 343, in download_with_args
[tomli-2.2.1] self.download(package, allow_upstream=allow_upstream, tags=tags)
[tomli-2.2.1] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/app.py", line 328, in download
[tomli-2.2.1] tarball.download(allow_upstream=allow_upstream)
[tomli-2.2.1] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/tarball.py", line 225, in download
[tomli-2.2.1] raise FileNotMirroredError('tarball does not exist on mirror network and neither at the upstream URL')
[tomli-2.2.1] sage_bootstrap.tarball.FileNotMirroredError: tarball does not exist on mirror network and neither at the upstream URL
[tomli-2.2.1] ************************************************************************
[tomli-2.2.1] Error downloading tarball of tomli
[tomli-2.2.1] ************************************************************************
[tomli-2.2.1] Full log file: /root/.sage/sage-10.5.41-Linux-aarch64/logs/pkgs/tomli-2.2.1.log
make[2]: *** [Makefile:4724: tomli-SAGE_VENV-no-deps] Error 1
make[1]: *** [Makefile:4724: /root/.sage/sage-10.5.41-Linux-aarch64/local/var/lib/sage/venv-python3.11/var/lib/sage/installed/tomli-2.2.1] Error 2
make[1]: *** Waiting for unfinished jobs....
[wheel-0.44.0] error installing, exit status 1. End of log file:
[wheel-0.44.0] Attempting to download package wheel-0.44.0-py3-none-any.whl from mirrors
[wheel-0.44.0] https://github.com/passagemath/passagemath/releases/download/passagemath-10.5.41/wheel-0.44.0-py3-none-any.whl
[wheel-0.44.0] [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
[wheel-0.44.0] ERROR [transfer|run:135]: [Errno socket error] [Errno 404] Not Found: '//github.com/passagemath/passagemath/releases/download/passagemath-10.5.41/wheel-0.44.0-py3-none-any.whl'
[wheel-0.44.0] https://github.com/passagemath/passagemath/releases/download/passagemath-10.5.40/wheel-0.44.0-py3-none-any.whl
[wheel-0.44.0] [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
[wheel-0.44.0] ERROR [transfer|run:135]: [Errno socket error] [Errno socket error] [Errno -3] Temporary failure in name resolution
[wheel-0.44.0] https://github.com/passagemath/passagemath/releases/download/passagemath-10.5.39/wheel-0.44.0-py3-none-any.whl
[wheel-0.44.0] [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
[wheel-0.44.0] ERROR [transfer|run:135]: [Errno socket error] [Errno -3] Temporary failure in name resolution
[wheel-0.44.0] https://github.com/sagemath/sage/releases/download/10.6/wheel-0.44.0-py3-none-any.whl
[wheel-0.44.0] [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
[wheel-0.44.0] ERROR [transfer|run:135]: [Errno socket error] [Errno socket error] [Errno -3] Temporary failure in name resolution
[wheel-0.44.0] Attempting to download from https://files.pythonhosted.org/packages/py3/w/wheel/wheel-0.44.0-py3-none-any.whl
[wheel-0.44.0] [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
[wheel-0.44.0] ERROR [transfer|run:135]: [Errno socket error] [Errno -3] Temporary failure in name resolution
[wheel-0.44.0] Traceback (most recent call last):
[wheel-0.44.0] File "/usr/lib/python3.11/urllib/request.py", line 1787, in open
[wheel-0.44.0] return getattr(self, name)(url)
[wheel-0.44.0] ^^^^^^^^^^^^^^^^^^^^^^^^
[wheel-0.44.0] File "/usr/lib/python3.11/urllib/request.py", line 1996, in open_https
[wheel-0.44.0] return self._open_generic_http(self._https_connection, url, data)
[wheel-0.44.0] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[wheel-0.44.0] File "/usr/lib/python3.11/urllib/request.py", line 1945, in _open_generic_http
[wheel-0.44.0] http_conn.request("GET", selector, headers=headers)
[wheel-0.44.0] File "/usr/lib/python3.11/http/client.py", line 1282, in request
[wheel-0.44.0] self._send_request(method, url, body, headers, encode_chunked)
[wheel-0.44.0] File "/usr/lib/python3.11/http/client.py", line 1328, in _send_request
[wheel-0.44.0] self.endheaders(body, encode_chunked=encode_chunked)
[wheel-0.44.0] File "/usr/lib/python3.11/http/client.py", line 1277, in endheaders
[wheel-0.44.0] self._send_output(message_body, encode_chunked=encode_chunked)
[wheel-0.44.0] File "/usr/lib/python3.11/http/client.py", line 1037, in _send_output
[wheel-0.44.0] self.send(msg)
[wheel-0.44.0] File "/usr/lib/python3.11/http/client.py", line 975, in send
[wheel-0.44.0] self.connect()
[wheel-0.44.0] File "/usr/lib/python3.11/http/client.py", line 1447, in connect
[wheel-0.44.0] super().connect()
[wheel-0.44.0] File "/usr/lib/python3.11/http/client.py", line 941, in connect
[wheel-0.44.0] self.sock = self._create_connection(
[wheel-0.44.0] ^^^^^^^^^^^^^^^^^^^^^^^^
[wheel-0.44.0] File "/usr/lib/python3.11/socket.py", line 827, in create_connection
[wheel-0.44.0] for res in getaddrinfo(host, port, 0, SOCK_STREAM):
[wheel-0.44.0] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[wheel-0.44.0] File "/usr/lib/python3.11/socket.py", line 962, in getaddrinfo
[wheel-0.44.0] for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
[wheel-0.44.0] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[wheel-0.44.0] socket.gaierror: [Errno -3] Temporary failure in name resolution
[wheel-0.44.0]
[wheel-0.44.0] The above exception was the direct cause of the following exception:
[wheel-0.44.0]
[wheel-0.44.0] Traceback (most recent call last):
[wheel-0.44.0] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/tarball.py", line 223, in download
[wheel-0.44.0] Download(url, destination).run()
[wheel-0.44.0] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/download/transfer.py", line 137, in run
[wheel-0.44.0] raise error
[wheel-0.44.0] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/download/transfer.py", line 128, in run
[wheel-0.44.0] filename, info = opener.retrieve(
[wheel-0.44.0] ^^^^^^^^^^^^^^^^
[wheel-0.44.0] File "/usr/lib/python3.11/urllib/request.py", line 1821, in retrieve
[wheel-0.44.0] fp = self.open(url, data)
[wheel-0.44.0] ^^^^^^^^^^^^^^^^^^^^
[wheel-0.44.0] File "/usr/lib/python3.11/urllib/request.py", line 1793, in open
[wheel-0.44.0] raise OSError('socket error', msg) from msg
[wheel-0.44.0] OSError: [Errno socket error] [Errno -3] Temporary failure in name resolution
[wheel-0.44.0]
[wheel-0.44.0] During handling of the above exception, another exception occurred:
[wheel-0.44.0]
[wheel-0.44.0] Traceback (most recent call last):
[wheel-0.44.0] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/sage-package", line 40, in <module>
[wheel-0.44.0] run()
[wheel-0.44.0] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/cmdline.py", line 546, in run
[wheel-0.44.0] app.download_cls(*args.package_class,
[wheel-0.44.0] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/app.py", line 351, in download_cls
[wheel-0.44.0] pc.apply(download_with_args)
[wheel-0.44.0] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/expand_class.py", line 126, in apply
[wheel-0.44.0] function(package_name, *args, **kwds)
[wheel-0.44.0] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/app.py", line 343, in download_with_args
[wheel-0.44.0] self.download(package, allow_upstream=allow_upstream, tags=tags)
[wheel-0.44.0] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/app.py", line 328, in download
[wheel-0.44.0] tarball.download(allow_upstream=allow_upstream)
[wheel-0.44.0] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/tarball.py", line 225, in download
[wheel-0.44.0] raise FileNotMirroredError('tarball does not exist on mirror network and neither at the upstream URL')
[wheel-0.44.0] sage_bootstrap.tarball.FileNotMirroredError: tarball does not exist on mirror network and neither at the upstream URL
[wheel-0.44.0] ************************************************************************
[wheel-0.44.0] Error downloading tarball of wheel
[wheel-0.44.0] ************************************************************************
[wheel-0.44.0] Full log file: /root/.sage/sage-10.5.41-Linux-aarch64/logs/pkgs/wheel-0.44.0.log
make[2]: *** [Makefile:4724: wheel-SAGE_VENV-no-deps] Error 1
make[1]: *** [Makefile:4724: /root/.sage/sage-10.5.41-Linux-aarch64/local/var/lib/sage/venv-python3.11/var/lib/sage/installed/wheel-0.44.0] Error 2
[flit_core-3.9.0] error installing, exit status 1. End of log file:
[flit_core-3.9.0] Attempting to download package flit_core-3.9.0-py3-none-any.whl from mirrors
[flit_core-3.9.0] https://github.com/passagemath/passagemath/releases/download/passagemath-10.5.41/flit_core-3.9.0-py3-none-any.whl
[flit_core-3.9.0] [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
[flit_core-3.9.0] ERROR [transfer|run:135]: [Errno socket error] [Errno 404] Not Found: '//github.com/passagemath/passagemath/releases/download/passagemath-10.5.41/flit_core-3.9.0-py3-none-any.whl'
[flit_core-3.9.0] https://github.com/passagemath/passagemath/releases/download/passagemath-10.5.40/flit_core-3.9.0-py3-none-any.whl
[flit_core-3.9.0] [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
[flit_core-3.9.0] ERROR [transfer|run:135]: [Errno socket error] [Errno socket error] [Errno -3] Temporary failure in name resolution
[flit_core-3.9.0] https://github.com/passagemath/passagemath/releases/download/passagemath-10.5.39/flit_core-3.9.0-py3-none-any.whl
[flit_core-3.9.0] [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
[flit_core-3.9.0] ERROR [transfer|run:135]: [Errno socket error] [Errno -3] Temporary failure in name resolution
[flit_core-3.9.0] https://github.com/sagemath/sage/releases/download/10.6/flit_core-3.9.0-py3-none-any.whl
[flit_core-3.9.0] [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
[flit_core-3.9.0] ERROR [transfer|run:135]: [Errno socket error] [Errno socket error] [Errno -3] Temporary failure in name resolution
[flit_core-3.9.0] Attempting to download from https://files.pythonhosted.org/packages/py3/f/flit_core/flit_core-3.9.0-py3-none-any.whl
[flit_core-3.9.0] [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
[flit_core-3.9.0] ERROR [transfer|run:135]: [Errno socket error] [Errno -3] Temporary failure in name resolution
[flit_core-3.9.0] Traceback (most recent call last):
[flit_core-3.9.0] File "/usr/lib/python3.11/urllib/request.py", line 1787, in open
[flit_core-3.9.0] return getattr(self, name)(url)
[flit_core-3.9.0] ^^^^^^^^^^^^^^^^^^^^^^^^
[flit_core-3.9.0] File "/usr/lib/python3.11/urllib/request.py", line 1996, in open_https
[flit_core-3.9.0] return self._open_generic_http(self._https_connection, url, data)
[flit_core-3.9.0] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[flit_core-3.9.0] File "/usr/lib/python3.11/urllib/request.py", line 1945, in _open_generic_http
[flit_core-3.9.0] http_conn.request("GET", selector, headers=headers)
[flit_core-3.9.0] File "/usr/lib/python3.11/http/client.py", line 1282, in request
[flit_core-3.9.0] self._send_request(method, url, body, headers, encode_chunked)
[flit_core-3.9.0] File "/usr/lib/python3.11/http/client.py", line 1328, in _send_request
[flit_core-3.9.0] self.endheaders(body, encode_chunked=encode_chunked)
[flit_core-3.9.0] File "/usr/lib/python3.11/http/client.py", line 1277, in endheaders
[flit_core-3.9.0] self._send_output(message_body, encode_chunked=encode_chunked)
[flit_core-3.9.0] File "/usr/lib/python3.11/http/client.py", line 1037, in _send_output
[flit_core-3.9.0] self.send(msg)
[flit_core-3.9.0] File "/usr/lib/python3.11/http/client.py", line 975, in send
[flit_core-3.9.0] self.connect()
[flit_core-3.9.0] File "/usr/lib/python3.11/http/client.py", line 1447, in connect
[flit_core-3.9.0] super().connect()
[flit_core-3.9.0] File "/usr/lib/python3.11/http/client.py", line 941, in connect
[flit_core-3.9.0] self.sock = self._create_connection(
[flit_core-3.9.0] ^^^^^^^^^^^^^^^^^^^^^^^^
[flit_core-3.9.0] File "/usr/lib/python3.11/socket.py", line 827, in create_connection
[flit_core-3.9.0] for res in getaddrinfo(host, port, 0, SOCK_STREAM):
[flit_core-3.9.0] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[flit_core-3.9.0] File "/usr/lib/python3.11/socket.py", line 962, in getaddrinfo
[flit_core-3.9.0] for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
[flit_core-3.9.0] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[flit_core-3.9.0] socket.gaierror: [Errno -3] Temporary failure in name resolution
[flit_core-3.9.0]
[flit_core-3.9.0] The above exception was the direct cause of the following exception:
[flit_core-3.9.0]
[flit_core-3.9.0] Traceback (most recent call last):
[flit_core-3.9.0] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/tarball.py", line 223, in download
[flit_core-3.9.0] Download(url, destination).run()
[flit_core-3.9.0] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/download/transfer.py", line 137, in run
[flit_core-3.9.0] raise error
[flit_core-3.9.0] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/download/transfer.py", line 128, in run
[flit_core-3.9.0] filename, info = opener.retrieve(
[flit_core-3.9.0] ^^^^^^^^^^^^^^^^
[flit_core-3.9.0] File "/usr/lib/python3.11/urllib/request.py", line 1821, in retrieve
[flit_core-3.9.0] fp = self.open(url, data)
[flit_core-3.9.0] ^^^^^^^^^^^^^^^^^^^^
[flit_core-3.9.0] File "/usr/lib/python3.11/urllib/request.py", line 1793, in open
[flit_core-3.9.0] raise OSError('socket error', msg) from msg
[flit_core-3.9.0] OSError: [Errno socket error] [Errno -3] Temporary failure in name resolution
[flit_core-3.9.0]
[flit_core-3.9.0] During handling of the above exception, another exception occurred:
[flit_core-3.9.0]
[flit_core-3.9.0] Traceback (most recent call last):
[flit_core-3.9.0] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/sage-package", line 40, in <module>
[flit_core-3.9.0] run()
[flit_core-3.9.0] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/cmdline.py", line 546, in run
[flit_core-3.9.0] app.download_cls(*args.package_class,
[flit_core-3.9.0] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/app.py", line 351, in download_cls
[flit_core-3.9.0] pc.apply(download_with_args)
[flit_core-3.9.0] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/expand_class.py", line 126, in apply
[flit_core-3.9.0] function(package_name, *args, **kwds)
[flit_core-3.9.0] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/app.py", line 343, in download_with_args
[flit_core-3.9.0] self.download(package, allow_upstream=allow_upstream, tags=tags)
[flit_core-3.9.0] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/app.py", line 328, in download
[flit_core-3.9.0] tarball.download(allow_upstream=allow_upstream)
[flit_core-3.9.0] File "/root/.sage/sage-10.5.41-Linux-aarch64/build/bin/../sage_bootstrap/tarball.py", line 225, in download
[flit_core-3.9.0] raise FileNotMirroredError('tarball does not exist on mirror network and neither at the upstream URL')
[flit_core-3.9.0] sage_bootstrap.tarball.FileNotMirroredError: tarball does not exist on mirror network and neither at the upstream URL
[flit_core-3.9.0] ************************************************************************
[flit_core-3.9.0] Error downloading tarball of flit_core
[flit_core-3.9.0] ************************************************************************
[flit_core-3.9.0] Full log file: /root/.sage/sage-10.5.41-Linux-aarch64/logs/pkgs/flit_core-3.9.0.log
make[2]: *** [Makefile:4724: flit_core-SAGE_VENV-no-deps] Error 1
make[1]: *** [Makefile:4724: /root/.sage/sage-10.5.41-Linux-aarch64/local/var/lib/sage/venv-python3.11/var/lib/sage/installed/flit_core-3.9.0] Error 2

I see what you mean; it is trying to get the earlier versions. So maybe this isn’t the issue after all. I’ve been trying to apt install the packages it doesn’t download. The try with earlier version is still running but hasn’t gotten to this spot yet.

sounds like you just hit some arbitrary rate limit on GitHub Actions. There’s no need to try installing an older version.

Try if it helps to download the files serially, using make -j1 download

I’m not sure where/how to add the make -j1 download; this is all being done through the pip install passagemath-conf command.

The error appears to happen both when working in a GitHub action or using docker locally. I’ll keep tinkering.

Same place where you typed make reconfigure in the above snippet

That was done automatically as part of the passagemath-conf install.

OK, thanks for the clarification.

Try export SAGE_NUM_THREADS=1 before installing passagemath-conf. This will limit parallelism during the build. If the rate-limit errors still persist, there’s something fundamentally wrong.
If you have a link to a GH Actions run where you see this, please post it

In local Docker builds in limited connectivity situations, I have found it valuable to use squid as a local caching proxy. See passagemath/tox.ini at main · passagemath/passagemath · GitHub

An update, although I think at this point I will try another way of installing sage for the ARM builds (passagemath is working great for the AMD64 builds though).

I tried setting export SAGE_NUM_THREADS=1 and in my local docker build I still get the same errors when trying to download. Here is the end of the log from my most recent build:

	Running cd /root/.sage/sage-10.5.42-Linux-aarch64 && (. ./.homebrew-build-env 2> /dev/null; if [ -z "$MAKE" ]; then export MAKE="make -j$(PATH=build/bin:$PATH build/bin/sage-build-num-threads | cut -d" " -f 2)"; fi && make V=0 ${SAGE_CONF_TARGETS-base})
	make -j1 build/make/Makefile --stop
	make[1]: Entering directory '/root/.sage/sage-10.5.42-Linux-aarch64'
	make[1]: 'build/make/Makefile' is up to date.
	make[1]: Leaving directory '/root/.sage/sage-10.5.42-Linux-aarch64'
	build/bin/sage-logger \
	"cd build/make && ./install fpylll" logs/install.log
	make[1]: Entering directory '/root/.sage/sage-10.5.42-Linux-aarch64/build/make'
	make[1]: Leaving directory '/root/.sage/sage-10.5.42-Linux-aarch64/build/make'
	make[1]: Entering directory '/root/.sage/sage-10.5.42-Linux-aarch64/build/make'
	mkdir -p "/root/.sage/sage-10.5.42-Linux-aarch64/local/var/lib/sage/venv-python3.11/var/lib/sage/installed"
	/opt/venv/bin/python3 /root/.sage/sage-10.5.42-Linux-aarch64/build/bin/sage-venv  "/root/.sage/sage-10.5.42-Linux-aarch64/local/var/lib/sage/venv-python3.11"
	rm -f "/root/.sage/sage-10.5.42-Linux-aarch64/local/var/lib/sage/venv-python3.11/var/lib/sage/installed"/python3_venv-*
	touch "/root/.sage/sage-10.5.42-Linux-aarch64/local/var/lib/sage/venv-python3.11/var/lib/sage/installed/python3_venv-3.11--opt-venv-bin-python3"
	make --no-print-directory pip-SAGE_VENV-no-deps
	[pip-25.0.1] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/pip-25.0.1.log
	[pip-25.0.1] successfully installed (real 1m25.651s user 0m48.181s sys 0m2.355s).
	make --no-print-directory setuptools-SAGE_VENV-no-deps
	[setuptools-78.1.0] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/setuptools-78.1.0.log
	[setuptools-78.1.0] successfully installed (real 1m14.516s user 0m32.179s sys 0m2.357s).
	make --no-print-directory packaging-SAGE_VENV-no-deps
	[packaging-24.2] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/packaging-24.2.log
	[packaging-24.2] successfully installed (real 0m58.760s user 0m26.710s sys 0m2.015s).
	make --no-print-directory tomli-SAGE_VENV-no-deps
	[tomli-2.2.1] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/tomli-2.2.1.log
	[tomli-2.2.1] successfully installed (real 0m43.014s user 0m25.793s sys 0m2.023s).
	make --no-print-directory typing_extensions-SAGE_VENV-no-deps
	[typing_extensions-4.13.2] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/typing_extensions-4.13.2.log
	[typing_extensions-4.13.2] successfully installed (real 1m5.516s user 0m27.413s sys 0m2.004s).
	make --no-print-directory setuptools_scm-SAGE_VENV-no-deps
	[setuptools_scm-8.2.0] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/setuptools_scm-8.2.0.log
	[setuptools_scm-8.2.0] successfully installed (real 1m3.930s user 0m27.703s sys 0m2.101s).
	make --no-print-directory wheel-SAGE_VENV-no-deps
	[wheel-0.44.0] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/wheel-0.44.0.log
	[wheel-0.44.0] successfully installed (real 1m8.028s user 0m26.471s sys 0m2.033s).
	make --no-print-directory flit_core-SAGE_VENV-no-deps
	[flit_core-3.9.0] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/flit_core-3.9.0.log
	[flit_core-3.9.0] successfully installed (real 1m8.336s user 0m26.860s sys 0m2.085s).
	make --no-print-directory editables-SAGE_VENV-no-deps
	[editables-0.5] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/editables-0.5.log
	[editables-0.5] successfully installed (real 1m4.564s user 0m27.625s sys 0m1.935s).
	make --no-print-directory pathspec-SAGE_VENV-no-deps
	[pathspec-0.12.1] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/pathspec-0.12.1.log
	[pathspec-0.12.1] successfully installed (real 1m0.470s user 0m27.771s sys 0m1.979s).
	make --no-print-directory pluggy-SAGE_VENV-no-deps
	[pluggy-1.5.0] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/pluggy-1.5.0.log
	[pluggy-1.5.0] successfully installed (real 0m52.622s user 0m26.079s sys 0m2.021s).
	make --no-print-directory calver-SAGE_VENV-no-deps
	[calver-2022.6.26] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/calver-2022.6.26.log
	[calver-2022.6.26] successfully installed (real 1m27.061s user 0m29.561s sys 0m2.014s).
	make --no-print-directory trove_classifiers-SAGE_VENV-no-deps
	[trove_classifiers-2025.3.19.19] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/trove_classifiers-2025.3.19.19.log
	[trove_classifiers-2025.3.19.19] successfully installed (real 0m42.823s user 0m25.676s sys 0m2.021s).
	make --no-print-directory hatchling-SAGE_VENV-no-deps
	[hatchling-1.25.0] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/hatchling-1.25.0.log
	[hatchling-1.25.0] successfully installed (real 1m20.779s user 0m29.159s sys 0m2.059s).
	make --no-print-directory zipp-SAGE_VENV-no-deps
	[zipp-3.21.0] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/zipp-3.21.0.log
	[zipp-3.21.0] successfully installed (real 1m1.788s user 0m25.454s sys 0m2.009s).
	make --no-print-directory importlib_metadata-SAGE_VENV-no-deps
	[importlib_metadata-8.7.0] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/importlib_metadata-8.7.0.log
	[importlib_metadata-8.7.0] successfully installed (real 1m1.347s user 0m25.020s sys 0m2.059s).
	make --no-print-directory pyproject_hooks-SAGE_VENV-no-deps
	[pyproject_hooks-1.2.0] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/pyproject_hooks-1.2.0.log
	[pyproject_hooks-1.2.0] successfully installed (real 0m42.892s user 0m25.099s sys 0m2.023s).
	make --no-print-directory python_build-SAGE_VENV-no-deps
	[python_build-1.2.1] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/python_build-1.2.1.log
	[python_build-1.2.1] successfully installed (real 1m13.810s user 0m27.085s sys 0m2.023s).
	make --no-print-directory gast-SAGE_VENV-no-deps
	[gast-0.5.4] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/gast-0.5.4.log
	[gast-0.5.4] successfully installed (real 1m28.878s user 0m41.296s sys 0m2.766s).
	make --no-print-directory beniget-SAGE_VENV-no-deps
	[beniget-0.4.1] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/beniget-0.4.1.log
	[beniget-0.4.1] successfully installed (real 1m29.744s user 0m42.191s sys 0m2.678s).
	make --no-print-directory ply-SAGE_VENV-no-deps
	[ply-3.11] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/ply-3.11.log
	[ply-3.11] successfully installed (real 0m44.800s user 0m41.261s sys 0m2.761s).
	make --no-print-directory pythran-SAGE_VENV-no-deps
	[pythran-0.16.1] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/pythran-0.16.1.log
	[pythran-0.16.1] successfully installed (real 1m59.103s user 1m26.717s sys 0m9.142s).
	make --no-print-directory cython-SAGE_VENV-no-deps
	[cython-3.0.11] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/cython-3.0.11.log
	[cython-3.0.11] successfully installed (real 46m32.891s user 45m37.455s sys 0m14.310s).
	make --no-print-directory meson-SAGE_VENV-no-deps
	[meson-1.7.0] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/meson-1.7.0.log
	[meson-1.7.0] successfully installed (real 1m10.362s user 0m32.374s sys 0m2.116s).
	touch /root/.sage/sage-10.5.42-Linux-aarch64/local/var/lib/sage/installed/.dummy
	make --no-print-directory pyproject_metadata-SAGE_VENV-no-deps
	[pyproject_metadata-0.9.1] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/pyproject_metadata-0.9.1.log
	[pyproject_metadata-0.9.1] successfully installed (real 1m6.962s user 0m25.676s sys 0m1.969s).
	make --no-print-directory meson_python-SAGE_VENV-no-deps
	[meson_python-0.18.0] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/meson_python-0.18.0.log
	[meson_python-0.18.0] successfully installed (real 1m1.737s user 0m25.728s sys 0m2.048s).
	make --no-print-directory cysignals-SAGE_VENV-no-deps
	[cysignals-1.12.3] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/cysignals-1.12.3.log
	[cysignals-1.12.3] successfully installed (real 3m54.950s user 5m10.397s sys 0m7.950s).
	make --no-print-directory fplll-SAGE_LOCAL-no-deps
	[fplll-5.5.0] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/fplll-5.5.0.log
	[fplll-5.5.0] successfully installed (real 112m22.077s user 110m46.317s sys 1m4.450s).
	make --no-print-directory pkgconfig-SAGE_VENV-no-deps
	[pkgconfig-1.5.5] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/pkgconfig-1.5.5.log
	[pkgconfig-1.5.5] successfully installed (real 1m2.279s user 0m25.381s sys 0m1.964s).
	make --no-print-directory numpy-SAGE_VENV-no-deps
	[numpy-2.0.2] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/numpy-2.0.2.log
	[numpy-2.0.2] successfully installed (real 19m29.590s user 126m44.031s sys 1m37.691s).
	make --no-print-directory fpylll-SAGE_VENV-no-deps
	[fpylll-0.6.3] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/fpylll-0.6.3.log
	[fpylll-0.6.3] successfully installed (real 16m7.679s user 15m20.958s sys 0m11.660s).
	make[1]: Leaving directory '/root/.sage/sage-10.5.42-Linux-aarch64/build/make'
	real 238m55.866s user 327m36.313s sys 5m34.639s
	make -j1 build/make/Makefile --stop
	make[1]: Entering directory '/root/.sage/sage-10.5.42-Linux-aarch64'
	make[1]: 'build/make/Makefile' is up to date.
	make[1]: Leaving directory '/root/.sage/sage-10.5.42-Linux-aarch64'
	build/bin/sage-logger \
	"cd build/make && ./install gmpy2" logs/install.log
	make[1]: Entering directory '/root/.sage/sage-10.5.42-Linux-aarch64/build/make'
	make[1]: Leaving directory '/root/.sage/sage-10.5.42-Linux-aarch64/build/make'
	make[1]: Entering directory '/root/.sage/sage-10.5.42-Linux-aarch64/build/make'
	make --no-print-directory gmpy2-SAGE_VENV-no-deps
	[gmpy2-2.2.0a1] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/gmpy2-2.2.0a1.log
	[gmpy2-2.2.0a1] successfully installed (real 3m12.685s user 2m39.575s sys 0m3.670s).
	make[1]: Leaving directory '/root/.sage/sage-10.5.42-Linux-aarch64/build/make'
	real 4m47.611s user 4m5.824s sys 0m14.364s
	make -j1 build/make/Makefile --stop
	make[1]: Entering directory '/root/.sage/sage-10.5.42-Linux-aarch64'
	make[1]: 'build/make/Makefile' is up to date.
	make[1]: Leaving directory '/root/.sage/sage-10.5.42-Linux-aarch64'
	build/bin/sage-logger \
	"cd build/make && ./install lrcalc_python" logs/install.log
	make[1]: Entering directory '/root/.sage/sage-10.5.42-Linux-aarch64/build/make'
	make[1]: Leaving directory '/root/.sage/sage-10.5.42-Linux-aarch64/build/make'
	make[1]: Entering directory '/root/.sage/sage-10.5.42-Linux-aarch64/build/make'
	make --no-print-directory lrcalc-SAGE_LOCAL-no-deps
	[lrcalc-2.1] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/lrcalc-2.1.log
	[lrcalc-2.1] successfully installed (real 3m43.588s user 2m50.258s sys 0m21.553s).
	make --no-print-directory lrcalc_python-SAGE_VENV-no-deps
	[lrcalc_python-2.1] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/lrcalc_python-2.1.log
	[lrcalc_python-2.1] successfully installed (real 2m5.847s user 1m27.577s sys 0m3.254s).
	make[1]: Leaving directory '/root/.sage/sage-10.5.42-Linux-aarch64/build/make'
	real 7m43.572s user 6m1.318s sys 0m37.888s
	make -j1 build/make/Makefile --stop
	make[1]: Entering directory '/root/.sage/sage-10.5.42-Linux-aarch64'
	make[1]: 'build/make/Makefile' is up to date.
	make[1]: Leaving directory '/root/.sage/sage-10.5.42-Linux-aarch64'
	build/bin/sage-logger \
	"cd build/make && ./install memory_allocator" logs/install.log
	make[1]: Entering directory '/root/.sage/sage-10.5.42-Linux-aarch64/build/make'
	make[1]: Leaving directory '/root/.sage/sage-10.5.42-Linux-aarch64/build/make'
	make[1]: Entering directory '/root/.sage/sage-10.5.42-Linux-aarch64/build/make'
	make --no-print-directory memory_allocator-SAGE_VENV-no-deps
	[memory_allocator-0.1.4] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/memory_allocator-0.1.4.log
	[memory_allocator-0.1.4] successfully installed (real 2m25.836s user 1m32.460s sys 0m3.464s).
	make[1]: Leaving directory '/root/.sage/sage-10.5.42-Linux-aarch64/build/make'
	real 4m0.487s user 2m58.422s sys 0m14.148s
	make -j1 build/make/Makefile --stop
	make[1]: Entering directory '/root/.sage/sage-10.5.42-Linux-aarch64'
	make[1]: 'build/make/Makefile' is up to date.
	make[1]: Leaving directory '/root/.sage/sage-10.5.42-Linux-aarch64'
	build/bin/sage-logger \
	"cd build/make && ./install pplpy" logs/install.log
	make[1]: Entering directory '/root/.sage/sage-10.5.42-Linux-aarch64/build/make'
	make[1]: Leaving directory '/root/.sage/sage-10.5.42-Linux-aarch64/build/make'
	make[1]: Entering directory '/root/.sage/sage-10.5.42-Linux-aarch64/build/make'
	make --no-print-directory glpk-SAGE_LOCAL-no-deps
	[glpk-5.0.p1] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/glpk-5.0.p1.log
	[glpk-5.0.p1] successfully installed (real 13m58.219s user 11m48.128s sys 0m46.767s).
	make --no-print-directory ppl-SAGE_LOCAL-no-deps
	[ppl-1.2.p1] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/ppl-1.2.p1.log
	[ppl-1.2.p1] error installing, exit status 1. End of log file:
	[ppl-1.2.p1]   Attempting to download package ppl-1.2.tar.bz2 from mirrors
	[ppl-1.2.p1]   https://github.com/passagemath/passagemath/releases/download/passagemath-10.5.42/ppl-1.2.tar.bz2
	[ppl-1.2.p1]   [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
	[ppl-1.2.p1]   ERROR [transfer|run:135]: [Errno socket error] [Errno -3] Temporary failure in name resolution
	[ppl-1.2.p1]   https://github.com/passagemath/passagemath/releases/download/passagemath-10.5.41/ppl-1.2.tar.bz2
	[ppl-1.2.p1]   [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
	[ppl-1.2.p1]   ERROR [transfer|run:135]: [Errno socket error] [Errno 404] Not Found: '//github.com/passagemath/passagemath/releases/download/passagemath-10.5.41/ppl-1.2.tar.bz2'
	[ppl-1.2.p1]   https://github.com/passagemath/passagemath/releases/download/passagemath-10.5.40/ppl-1.2.tar.bz2
	[ppl-1.2.p1]   [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
	[ppl-1.2.p1]   ERROR [transfer|run:135]: [Errno socket error] [Errno socket error] [Errno -3] Temporary failure in name resolution
	[ppl-1.2.p1]   https://github.com/sagemath/sage/releases/download/10.6/ppl-1.2.tar.bz2
	[ppl-1.2.p1]   [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx]
	[ppl-1.2.p1]   ERROR [transfer|run:135]: [Errno socket error] [Errno -3] Temporary failure in name resolution
	[ppl-1.2.p1]   Traceback (most recent call last):
	[ppl-1.2.p1]     File "/root/.sage/sage-10.5.42-Linux-aarch64/build/bin/sage-package", line 40, in <module>
	[ppl-1.2.p1]       run()
	[ppl-1.2.p1]     File "/root/.sage/sage-10.5.42-Linux-aarch64/build/bin/../sage_bootstrap/cmdline.py", line 546, in run
	[ppl-1.2.p1]       app.download_cls(*args.package_class,
	[ppl-1.2.p1]     File "/root/.sage/sage-10.5.42-Linux-aarch64/build/bin/../sage_bootstrap/app.py", line 351, in download_cls
	[ppl-1.2.p1]       pc.apply(download_with_args)
	[ppl-1.2.p1]     File "/root/.sage/sage-10.5.42-Linux-aarch64/build/bin/../sage_bootstrap/expand_class.py", line 126, in apply
	[ppl-1.2.p1]       function(package_name, *args, **kwds)
	[ppl-1.2.p1]     File "/root/.sage/sage-10.5.42-Linux-aarch64/build/bin/../sage_bootstrap/app.py", line 343, in download_with_args
	[ppl-1.2.p1]       self.download(package, allow_upstream=allow_upstream, tags=tags)
	[ppl-1.2.p1]     File "/root/.sage/sage-10.5.42-Linux-aarch64/build/bin/../sage_bootstrap/app.py", line 328, in download
	[ppl-1.2.p1]       tarball.download(allow_upstream=allow_upstream)
	[ppl-1.2.p1]     File "/root/.sage/sage-10.5.42-Linux-aarch64/build/bin/../sage_bootstrap/tarball.py", line 227, in download
	[ppl-1.2.p1]       raise FileNotMirroredError('tarball does not exist on mirror network')
	[ppl-1.2.p1]   sage_bootstrap.tarball.FileNotMirroredError: tarball does not exist on mirror network
	[ppl-1.2.p1]   ************************************************************************
	[ppl-1.2.p1]   Error downloading tarball of ppl
	[ppl-1.2.p1]   ************************************************************************
	[ppl-1.2.p1] Full log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/ppl-1.2.p1.log
	make[2]: *** [Makefile:4740: ppl-SAGE_LOCAL-no-deps] Error 1
	make[1]: *** [Makefile:4740: /root/.sage/sage-10.5.42-Linux-aarch64/local/var/lib/sage/installed/ppl-1.2.p1] Error 2
	make[1]: Leaving directory '/root/.sage/sage-10.5.42-Linux-aarch64/build/make'
	***************************************************************
	Error building Sage.
	
	The following package(s) may have failed to build (not necessarily
	during this run of 'make pplpy'):
	
	* package:         ppl-1.2.p1
	last build time: Jun 16 22:51
	log file:        /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/ppl-1.2.p1.log
	
	It is safe to delete any log files and build directories, but they
	contain information that is helpful for debugging build problems.
	WARNING: If you now run 'make' again, the build directory of the
	same version of the package will, by default, be deleted. Set the
	environment variable SAGE_KEEP_BUILT_SPKGS=yes to prevent this.
	
	real 16m47.170s user 13m42.489s sys 1m1.015s
	make: *** [Makefile:42: pplpy] Error 1
	error: make ${SAGE_CONF_TARGETS-base} failed
	error: subprocess-exited-with-error
	
	× Building wheel for passagemath-conf (pyproject.toml) did not run successfully.
	│ exit code: 1
	╰─> See above for output.
	
	note: This error originates from a subprocess, and is likely not a problem with pip.
	full command: /opt/venv/bin/python3 /opt/venv/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py build_wheel /tmp_317xkbs
	cwd: /pip-install-czwptmcz/passagemath-conf_03b5bab72ce74790afcd884c7c58bc84
	Building wheel for passagemath-conf (pyproject.toml): finished with status 'error'
	ERROR: Failed building wheel for passagemath-conf
	Failed to build passagemath-conf
	ERROR: Failed to build installable wheels for some pyproject.toml based projects (passagemath-conf)

The dockerfile is this:

FROM oscarlevin/pretext:small

ARG TARGETPLATFORM

RUN apt-get update \
&& apt-get install -y --no-install-recommends \
                    python3-dev \
                    bzip2 \
                    gcc \
                    build-essential \
                    tox \
                    libboost-dev \
                    libboost-regex-dev \
                    pkg-config \
                    m4 \
                    flex \
                    bison \
                    bc \
                    libbz2-dev \
                    libffi-dev \
                    libbrial-dev \
                    libbrial-groebner-dev \
                    libcdd-dev \
                    libcdd-tools \
                    cliquer \
                    libcliquer-dev \
                    cmake \
                    curl \
                    4ti2 \
                    libcurl4-openssl-dev \
                    ecl \
                    libec-dev \
                    ninja-build \
                    patchelf \
                    libmpfr-dev \
                    ppl-dev && \
if [ "$TARGETPLATFORM" = "linux/arm64" ]; then \
    echo "Installing additional dependencies for ARM64 architecture" && \
    export SAGE_CONF_TARGETS="fpylll gmpy2 lrcalc_python memory_allocator pplpy primecountpy" && \
    export SAGE_NUM_THREADS=1 && \
    pip install -v passagemath-conf && \
    export PIP_FIND_LINKS="$(sage-config SAGE_SPKG_WHEELS)" && \
    export PIP_PREFER_BINARY=1; \
fi && \
pip install --prefer-binary passagemath-standard --no-cache-dir && \
apt-get remove -y \
        python3-dev \
        bzip2 \
        gcc \
        build-essential \
        tox \
        libboost-dev \
        libboost-regex-dev \
        pkg-config \
        m4 \
        flex \
        bison \
        bc \
        libbz2-dev \
        libffi-dev \
        libbrial-dev \
        libbrial-groebner-dev \
        libcdd-dev \
        libcdd-tools \
        cliquer \
        libcliquer-dev \
        cmake \
        curl \
        4ti2 \
        libcurl4-openssl-dev \
        ecl \
        libec-dev \
        ninja-build \
        patchelf \
        libmpfr-dev && \
apt-get autoremove -y && apt-get clean && \
rm -rf /var/lib/apt/lists/* && rm -rf /tmp/* /var/tmp/*

Note that this was after removing some of the apt install packages, which is why ppl had to be downloaded. I can get most of the downloads to not be needed, but cannot seem to get rid of the need for fplll even if I install fplll-tools, libfplll-dev, and python3-fpylll.

When trying to build using the github action, I run into a different issue when building with all the extra apt installs: When the build gets to the line

[cython-3.0.11] installing. Log file: /root/.sage/sage-10.5.42-Linux-aarch64/logs/pkgs/cython-3.0.11.log

it just hangs (left it running for 6 hours with no progress). See: docker-publish · oscarlevin/pretext-docker@62f401f · GitHub

One final thought. With all the standard library packages (apt installs) I was able to get an install of passagemath-standard to complete without the extra steps suggested for arm64 builds. I asked a friend to test it out and he ran into some errors, so I don’t know if this is a viable option.

Anyway, maybe the above report will be helpful, but no rush since I will wait for more of the wheels to be available for arm64 before trying again.

Is this reproducible? I’ve certainly seen such hangs with GH Actions, but some are sporadic

Yes, this is another way to do this. The documented method using passagemath-conf is merely intended to be a super-robust way of building these packages on users’ systems. If you prepare your build environment manually by installing all non-Python prerequisites of these packages for which we do not have binary wheels, then the installation from the sdists of these packages will just go through.
General caution when building packages from source for a redistributable Docker container applies though – compiler flags need to be set to avoid using specific CPU intrinsics that may not be available on the users’ target systems.

I think you can remove fpylll from the list of packages without wheels entirely. Since a recent update, the wheels are available: fpylll·PyPI