mirror of https://github.com/python/cpython.git
Fred's sysconfig module.
This commit is contained in:
parent
a37e244536
commit
1190ee3d03
|
@ -0,0 +1,106 @@
|
||||||
|
"""Prototype sysconfig module that loads information when run as a script,
|
||||||
|
but only defines constants when imported.
|
||||||
|
|
||||||
|
This should be run as a script as one of the last steps of the Python
|
||||||
|
installation process.
|
||||||
|
|
||||||
|
Written by: Fred L. Drake, Jr.
|
||||||
|
Email: <fdrake@acm.org>
|
||||||
|
Initial date: 17-Dec-1998
|
||||||
|
"""
|
||||||
|
|
||||||
|
__version__ = "$Revision$"
|
||||||
|
|
||||||
|
|
||||||
|
def _init_posix():
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
|
g = globals()
|
||||||
|
|
||||||
|
version = sys.version[:3]
|
||||||
|
config_dir = os.path.join(
|
||||||
|
sys.exec_prefix, "lib", "python" + version, "config")
|
||||||
|
|
||||||
|
# load the installed config.h:
|
||||||
|
define_rx = re.compile("#define ([A-Z][A-Z0-9_]+) (.*)\n")
|
||||||
|
undef_rx = re.compile("/[*] #undef ([A-Z][A-Z0-9_]+) [*]/\n")
|
||||||
|
fp = open(os.path.join(config_dir, "config.h"))
|
||||||
|
|
||||||
|
while 1:
|
||||||
|
line = fp.readline()
|
||||||
|
if not line:
|
||||||
|
break
|
||||||
|
m = define_rx.match(line)
|
||||||
|
if m:
|
||||||
|
n, v = m.group(1, 2)
|
||||||
|
if v == "1":
|
||||||
|
g[n] = 1
|
||||||
|
else:
|
||||||
|
g[n] = v
|
||||||
|
else:
|
||||||
|
m = undef_rx.match(line)
|
||||||
|
if m:
|
||||||
|
g[m.group(1)] = 0
|
||||||
|
|
||||||
|
# load the installed Makefile.pre.in:
|
||||||
|
variable_rx = re.compile("([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)\n")
|
||||||
|
done = {}
|
||||||
|
notdone = {}
|
||||||
|
fp = open(os.path.join(config_dir, "Makefile"))
|
||||||
|
|
||||||
|
while 1:
|
||||||
|
line = fp.readline()
|
||||||
|
if not line:
|
||||||
|
break
|
||||||
|
m = variable_rx.match(line)
|
||||||
|
if m:
|
||||||
|
n, v = m.group(1, 2)
|
||||||
|
if "$" in v:
|
||||||
|
notdone[n] = v
|
||||||
|
else:
|
||||||
|
done[n] = v
|
||||||
|
|
||||||
|
# do variable interpolation here
|
||||||
|
findvar1_rx = re.compile(r"\$\(([A-Za-z][A-Za-z0-9_]*)\)")
|
||||||
|
findvar2_rx = re.compile(r"\${([A-Za-z][A-Za-z0-9_]*)}")
|
||||||
|
while notdone:
|
||||||
|
for name in notdone.keys():
|
||||||
|
value = notdone[name]
|
||||||
|
m = findvar1_rx.search(value)
|
||||||
|
if not m:
|
||||||
|
m = findvar2_rx.search(value)
|
||||||
|
if m:
|
||||||
|
n = m.group(1)
|
||||||
|
if done.has_key(n):
|
||||||
|
after = value[m.end():]
|
||||||
|
value = value[:m.start()] + done[n] + after
|
||||||
|
if "$" in after:
|
||||||
|
notdone[name] = value
|
||||||
|
else:
|
||||||
|
done[name] = value
|
||||||
|
del notdone[name]
|
||||||
|
elif notdone.has_key(n):
|
||||||
|
# get it on a subsequent round
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
done[n] = ""
|
||||||
|
after = value[m.end():]
|
||||||
|
value = value[:m.start()] + after
|
||||||
|
if "$" in after:
|
||||||
|
notdone[name] = value
|
||||||
|
else:
|
||||||
|
done[name] = value
|
||||||
|
del notdone[name]
|
||||||
|
else:
|
||||||
|
del notdone[name]
|
||||||
|
|
||||||
|
# save the results in the global dictionary
|
||||||
|
g.update(done)
|
||||||
|
|
||||||
|
|
||||||
|
import os
|
||||||
|
exec "_init_%s()" % os.name
|
||||||
|
del os
|
||||||
|
del _init_posix
|
Loading…
Reference in New Issue