_bootstrap: Represents system packages required for running the top-level bootstrap script

Description

This optional script package represents the requirements (system packages) that are needed in addition to those represented by the _prereq package in order to run the top-level bootstrap script.

Namely, the following standard tools must be installed on your computer:

  • liblzma/xz: XZ Utils, the free general-purpose data compression software with a high compression ratio.

  • python: Python 3.12 or later from your system package manager or another external installation. Sage no longer builds its own Python interpreter; it uses this interpreter to create SAGE_VENV. It needs to have the development headers and the following standard modules available: sqlite3, ctypes, math, hashlib, socket, ssl, ensurepip, zlib, setuptools

XZ Utils (liblzma) is available with most supported distributions (package names such as xz-devel on Fedora, liblzma-dev on Debian/Ubuntu). It can also be built from source from https://github.com/tukaani-project/xz. After downloading and untarring the release archive, and changing to the directory with the sources:

$ ./configure --prefix=/usr/local && make && make install

will install XZ Utils in /usr/local. Instead of /usr/local one may choose another location, say /opt/foo. A modern xz/liblzma installs a liblzma.pc file, and Sage’s ./configure checks for it using a pkg-config macro. To detect xz/liblzma at a non-standard location, add it to PKG_CONFIG_PATH:

$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/foo/lib/pkgconfig

Python 3.12 (or later) with development headers is available with most supported distributions (package names such as python3-devel on Fedora, python3-dev on Debian/Ubuntu). It can also be built from source from https://www.python.org/downloads/. After downloading and untarring the release archive, and changing to the directory with the sources:

$ ./configure --prefix=/usr/local --enable-optimizations --with-ensurepip=install && make && make install

will install Python in /usr/local; this takes a few minutes on a moderately fast machine. Instead of /usr/local one may choose another location, say /opt/foo, which then should be passed to Sage’s ./configure with --with-python=/opt/foo/bin/python3. The --enable-optimizations flag is optional but recommended for performance. Make sure that the prerequisites for the required standard modules (sqlite3, ctypes, zlib, ssl, etc.) are installed before building Python; otherwise these modules will be missing.

It is also possible to use a Python installed by uv and pass it to ./configure with --with-python=....

Type

optional

Dependencies

Version Information

Equivalent System Packages

$ apk add bash gettext-dev autoconf automake libtool python3 \
      python3-dev py3-setuptools xz xz-dev
$ sudo pacman -S autoconf automake libtool python python-setuptools xz
$ conda install autoconf automake libtool python setuptools xz xz
$ sudo apt-get install autoconf automake libtool python3 libpython3-dev \
      python3-setuptools python3-venv xz-utils liblzma-dev
$ sudo dnf install autoconf automake libtool python3 python3-devel \
      python3-setuptools xz xz-devel xz
$ sudo pkg install autoconf automake libtool lang/python \
      devel/py-setuptools archivers/lzma
$ sudo emerge dev-build/autoconf dev-build/automake dev-build/libtool \
      dev-lang/python dev-python/setuptools app-arch/xz-utils
$ brew install autoconf automake libtool python3 python-setuptools xz
$ sudo port install gettext autoconf automake libtool python313 \
      py-setuptools xz
$ nix-env --install autoconf automake libtool python3 \
      python3Packages.setuptools xz
$ sudo zypper install autoconf automake libtool python3 python3-devel \
      python3-setuptools pkgconfig\(liblzma\) xz
$ sudo slackpkg install autoconf automake libtool python3 xz
$ sudo xbps-install autoconf automake libtool xtools mk-configure \
      python3 python3-devel python3-setuptools liblzma-devel xz