sage_conf: Configuration module for the SageMath library (distributable version)#

Description#

This distribution package provides:

  • a single Python module, sage_conf, providing configuration information to the SageMath library at the time of its installation and at its runtime

  • a console script sage-config, for querying the variables of sage_conf from the shell

  • a sourcable shell script sage-env-config, providing additional configuration information in the form of environment variables

The sage_conf distribution package is polymorphic: It has several implementations.

sage_conf sdist on PyPI#

This implementation of the sage_conf distribution package comes from github issue #29039, which added the directory pkgs/sage-conf_pypi.

To install, use pip install -v sage_conf. Using -v ensures that diagnostic messages are displayed.

On installation (or building a wheel), it invokes sage_bootstrap to establish a build tree (SAGE_ROOT) and installation tree (SAGE_LOCAL) for the SageMath distribution. By default, it uses a subdirectory of $HOME/.sage that is specific to the version of the distribution and the version of Python in use. If several virtual environments over the same version of Python install sage_conf, they will share these trees.

After installation of sage_conf, a wheelhouse containing wheels of various libraries is available; type ls $(sage-config SAGE_SPKG_WHEELS) to list them and pip install $(sage-config SAGE_SPKG_WHEELS)/*.whl to install them. After this, you can install the Sage library, for example, using pip install sagemath-standard.

sage_conf wheels#

Prebuilt binary wheels of the sage_conf distribution package are available at https://github.com/sagemath/sage-wheels/releases/

This implementation of sage_conf comes from github issue #31396, which adds the directory pkgs/sage-conf_relocatable/.

On building a wheel, it invokes sage_bootstrap to establish a build and installation tree (SAGE_ROOT, SAGE_LOCAL) in a subdirectory of the directory /var/tmp/, whose name is specific to the version of the distribution and the version of Python in use.

The wheel distributes a copy of the prebuilt SAGE_ROOT and SAGE_LOCAL. Importing sage_conf (or using the installed sage-config script), makes sure that a symlink from the /var/tmp location to the actual persistent installation location is created. As the relocated libraries and programs contain the hardcoded path SAGE_LOCAL in various ways (including as rpaths), this symlink is necessary for the prebuilt libraries and programs to work.

/var/tmp is a sticky directory on all Linux distributions following the Filesystem Hierarchy Standard, as well as on macOS. On multi-user systems, only one user can use a given version of the distribution; other installation schemes are recommended for systems with multiple Sage users.

sage_conf in the SageMath distribution#

The original version of the distribution package sage_conf is used internally in the SageMath distribution. It is provided in the directory pkgs/sage-conf. This version of the package is generated by the Sage distribution’s ./configure script.

sage_conf for conda#

The version of the distribution package in the directory pkgs/sage-conf_conda is used in an experimental installation method of SageMath, where all packages are provided by conda. This method is described in https://doc.sagemath.org/html/en/installation/conda.html#using-conda-to-provide-all-dependencies-for-the-sage-library-experimental

sage_conf in downstream distributions#

Downstream packagers and advanced developers and users may want to provide their own implementation of the distribution package to support the intended deployment of the SageMath library.

License#

GNU General Public License (GPL) v3 or later

Upstream Contact#

https://www.sagemath.org

This package is included in the source code of the Sage distribution, in pkgs/sage-conf*.

Type#

standard

Dependencies#

  • $(PYTHON)

  • $(PYTHON_TOOLCHAIN)

Version Information#

package-version.txt:

10.3

install-requires.txt:

# This file is updated on every release by the sage-update-version script
sage-conf ~= 10.3

Equivalent System Packages#

(none known)