Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemath
GitHub Repository: sagemath/sage
Path: blob/develop/src/sage_setup/setenv.py
4052 views
1
# Set some environment variables in the running process
2
3
import os
4
import platform
5
from pathlib import Path
6
7
8
def _environ_prepend(var, value, separator=':'):
9
if value:
10
if var in os.environ:
11
os.environ[var] = value + separator + os.environ[var]
12
else:
13
os.environ[var] = value
14
15
16
def setenv():
17
from sage.env import SAGE_LOCAL, SAGE_VENV, SAGE_ARCHFLAGS, SAGE_PKG_CONFIG_PATH
18
19
##
20
## from sage-env:
21
##
22
23
# not done: CC, CXX, FC, OBJC, OBJCXX, F77, F90, F95
24
if 'ARCHFLAGS' not in os.environ and SAGE_ARCHFLAGS != "unset":
25
os.environ['ARCHFLAGS'] = SAGE_ARCHFLAGS
26
_environ_prepend('PKG_CONFIG_PATH', SAGE_PKG_CONFIG_PATH)
27
# Issue #32057: As sage.env gives SAGE_LOCAL a fallback value from SAGE_VENV,
28
# SAGE_LOCAL is never unset. So we only set it if it differs from SAGE_VENV.
29
# We assume that compiling/linking against libraries installed in SAGE_VENV
30
# works -- that's the responsibility of the venv activation, not ours.
31
if SAGE_LOCAL and Path(SAGE_VENV).resolve() != Path(SAGE_LOCAL).resolve():
32
_environ_prepend('PATH', f'{SAGE_LOCAL}/bin')
33
_environ_prepend('LIBRARY_PATH', f'{SAGE_LOCAL}/lib')
34
_environ_prepend('CPATH', f'{SAGE_LOCAL}/include')
35
_environ_prepend('LDFLAGS', f'-L{SAGE_LOCAL}/lib -Wl,-rpath,{SAGE_LOCAL}/lib',
36
separator=' ')
37
if platform.system() == 'Linux':
38
_environ_prepend('LDFLAGS', f'-Wl,-rpath-link,{SAGE_LOCAL}/lib',
39
separator=' ')
40
if Path(SAGE_VENV).resolve() != Path(SAGE_LOCAL).resolve():
41
# This condition is always true, but we are keeping it for clarity.
42
_environ_prepend('PATH', f'{SAGE_VENV}/bin')
43
# the following two are not done by sage-env
44
#_environ_prepend('LIBRARY_PATH', f'{SAGE_VENV}/lib')
45
#_environ_prepend('CPATH', f'{SAGE_VENV}/include')
46
47
# not done: PATH prepend of SAGE_SRC/bin, SAGE_ROOT/build/bin
48
# not done: MACOSX_DEPLOYMENT_TARGET
49
# not done: PATH prepend for ccache & CCACHE_BASEDIR
50
# not done: OPENBLAS_NUM_THREADS
51
52