.. _spkg_sage_conf:
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
:trac:`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 :trac:`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 and
on Cygwin. 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 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
Version Information
-------------------
package-version.txt::
9.6
install-requires.txt::
sage-conf ~= 9.5.b6
Equivalent System Packages
--------------------------
However, these system packages will not be used for building Sage
because using Python site-packages is not supported by the Sage distribution;
see :trac:`29023`