New interface for passing build information among specs (#1875)
- Added a new interface for Specs to pass build information - Calls forwarded from Spec to Package are now explicit - Added descriptor within Spec to manage forwarding - Added state in Spec to maintain query information - Modified a few packages (the one involved in spack install pexsi) to showcase changes - This uses an object wrapper to `spec` to implement the `libs` sub-calls. - wrapper is returned from `__getitem__` only if spec is concrete - allows packagers to access build information easily
This commit is contained in:

committed by
Todd Gamblin

parent
5ce926d2d1
commit
ed582cef68
@@ -374,3 +374,17 @@ def duplicate_stream(original):
|
||||
:rtype: file like object
|
||||
"""
|
||||
return os.fdopen(os.dup(original.fileno()))
|
||||
|
||||
|
||||
class ObjectWrapper(object):
|
||||
"""Base class that wraps an object. Derived classes can add new behavior
|
||||
while staying undercover.
|
||||
|
||||
This class is modeled after the stackoverflow answer:
|
||||
- http://stackoverflow.com/a/1445289/771663
|
||||
"""
|
||||
def __init__(self, wrapped_object):
|
||||
wrapped_cls = type(wrapped_object)
|
||||
wrapped_name = wrapped_cls.__name__
|
||||
self.__class__ = type(wrapped_name, (type(self), wrapped_cls), {})
|
||||
self.__dict__ = wrapped_object.__dict__
|
||||
|
Reference in New Issue
Block a user