Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
Spack
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
eic_tools
Spack
Commits
3ba88a75
Commit
3ba88a75
authored
8 years ago
by
Sergey Kosukhin
Browse files
Options
Downloads
Patches
Plain Diff
Updated python: pass LDSHARED to dependants' setup scripts.
parent
ec855df0
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
var/spack/repos/builtin/packages/python/package.py
+88
-0
88 additions, 0 deletions
var/spack/repos/builtin/packages/python/package.py
with
88 additions
and
0 deletions
var/spack/repos/builtin/packages/python/package.py
+
88
−
0
View file @
3ba88a75
...
@@ -22,12 +22,14 @@
...
@@ -22,12 +22,14 @@
# License along with this program; if not, write to the Free Software
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
##############################################################################
##############################################################################
import
ast
import
os
import
os
import
re
import
re
from
contextlib
import
closing
from
contextlib
import
closing
import
spack
import
spack
import
llnl.util.tty
as
tty
import
llnl.util.tty
as
tty
import
yaml
from
llnl.util.lang
import
match_predicate
from
llnl.util.lang
import
match_predicate
from
spack
import
*
from
spack
import
*
from
spack.util.environment
import
*
from
spack.util.environment
import
*
...
@@ -132,6 +134,8 @@ def install(self, spec, prefix):
...
@@ -132,6 +134,8 @@ def install(self, spec, prefix):
make
()
make
()
make
(
'
install
'
)
make
(
'
install
'
)
self
.
save_distutils_data
(
prefix
)
self
.
filter_compilers
(
prefix
)
self
.
filter_compilers
(
prefix
)
# TODO:
# TODO:
...
@@ -172,6 +176,84 @@ def install(self, spec, prefix):
...
@@ -172,6 +176,84 @@ def install(self, spec, prefix):
# >>> import Tkinter
# >>> import Tkinter
# >>> Tkinter._test()
# >>> Tkinter._test()
def
save_distutils_data
(
self
,
prefix
):
"""
Run before changing automatically generated contents of the
_sysconfigdata.py, which is used by distutils to figure out what
executables to use while compiling and linking extensions. If we build
extensions with spack those executables should be spack
'
s wrappers.
Spack partially covers this by setting environment variables that
are also accounted for by distutils. Currently there is one more known
variable that must be set, which is LDSHARED, so the method saves its
autogenerated value to pass it to the dependant package
'
s setup script.
"""
input_filename
=
None
for
filename
in
[
join_path
(
lib_dir
,
'
python{0}
'
.
format
(
self
.
version
.
up_to
(
2
)),
'
_sysconfigdata.py
'
)
for
lib_dir
in
[
prefix
.
lib
,
prefix
.
lib64
]]:
if
os
.
path
.
isfile
(
filename
):
input_filename
=
filename
break
if
not
input_filename
:
return
input_dict
=
None
try
:
with
open
(
input_filename
)
as
input_file
:
match
=
re
.
search
(
r
'
build_time_vars\s*=\s*(?P<dict>{.*})
'
,
input_file
.
read
(),
flags
=
re
.
DOTALL
)
if
match
:
input_dict
=
ast
.
literal_eval
(
match
.
group
(
'
dict
'
))
except
(
IOError
,
SyntaxError
):
pass
if
not
input_dict
:
return
vars_to_save
=
[
'
LDSHARED
'
]
saved_vars
=
{}
for
var_name
in
vars_to_save
:
if
var_name
in
input_dict
:
saved_vars
[
var_name
]
=
input_dict
[
var_name
]
if
len
(
saved_vars
)
>
0
:
try
:
output_filename
=
join_path
(
spack
.
store
.
layout
.
metadata_path
(
self
.
spec
),
'
sysconfig.yaml
'
)
with
open
(
output_filename
,
'
w
'
)
as
output_file
:
yaml
.
dump
(
saved_vars
,
stream
=
output_file
,
default_flow_style
=
False
)
except
(
yaml
.
YAMLError
,
IOError
):
pass
setattr
(
self
,
'
_distutils_data_cache
'
,
saved_vars
)
def
load_distutils_data
(
self
):
if
not
hasattr
(
self
,
'
_distutils_data_cache
'
):
input_filename
=
join_path
(
spack
.
store
.
layout
.
metadata_path
(
self
.
spec
),
'
sysconfig.yaml
'
)
if
os
.
path
.
isfile
(
input_filename
):
try
:
with
open
(
input_filename
)
as
input_file
:
setattr
(
self
,
'
_distutils_data_cache
'
,
yaml
.
load
(
input_file
))
except
(
yaml
.
YAMLError
,
IOError
):
pass
if
not
hasattr
(
self
,
'
_distutils_data_cache
'
):
setattr
(
self
,
'
_distutils_data_cache
'
,
None
)
return
self
.
_distutils_data_cache
def
filter_compilers
(
self
,
prefix
):
def
filter_compilers
(
self
,
prefix
):
"""
Run after install to tell the configuration files and Makefiles
"""
Run after install to tell the configuration files and Makefiles
to use the compilers that Spack built the package with.
to use the compilers that Spack built the package with.
...
@@ -268,6 +350,12 @@ def setup_dependent_package(self, module, ext_spec):
...
@@ -268,6 +350,12 @@ def setup_dependent_package(self, module, ext_spec):
module
.
python
=
Executable
(
python_path
)
module
.
python
=
Executable
(
python_path
)
module
.
setup_py
=
Executable
(
python_path
+
'
setup.py --no-user-cfg
'
)
module
.
setup_py
=
Executable
(
python_path
+
'
setup.py --no-user-cfg
'
)
distutils_data
=
self
.
load_distutils_data
()
if
distutils_data
:
for
key
,
value
in
distutils_data
.
iteritems
():
module
.
setup_py
.
add_default_env
(
key
,
value
)
# Add variables for lib/pythonX.Y and lib/pythonX.Y/site-packages dirs.
# Add variables for lib/pythonX.Y and lib/pythonX.Y/site-packages dirs.
module
.
python_lib_dir
=
join_path
(
ext_spec
.
prefix
,
module
.
python_lib_dir
=
join_path
(
ext_spec
.
prefix
,
self
.
python_lib_dir
)
self
.
python_lib_dir
)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment