# 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 runtimea console script

`sage-config`

, for querying the variables of`sage_conf`

from the shella 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#

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)