reource directive accepts 'basename' keyword
llvm : libc++ variant
This commit is contained in:
@@ -276,10 +276,12 @@ def resource(pkg, **kwargs):
|
||||
* 'when' : represents the condition upon which the resource is needed (optional)
|
||||
* 'destination' : path where to extract / checkout the resource (optional). This path must be a relative path,
|
||||
and it must fall inside the stage area of the main package.
|
||||
* 'basename' : basename of the resource source folder within destination (optional).
|
||||
|
||||
"""
|
||||
when = kwargs.get('when', pkg.name)
|
||||
destination = kwargs.get('destination', "")
|
||||
basename = kwargs.get('basename', None)
|
||||
# Check if the path is relative
|
||||
if os.path.isabs(destination):
|
||||
message = "The destination keyword of a resource directive can't be an absolute path.\n"
|
||||
@@ -296,7 +298,8 @@ def resource(pkg, **kwargs):
|
||||
resources = pkg.resources.setdefault(when_spec, [])
|
||||
fetcher = from_kwargs(**kwargs)
|
||||
name = kwargs.get('name')
|
||||
resources.append(Resource(name, fetcher, destination))
|
||||
resources.append(Resource(name, fetcher, destination, basename))
|
||||
|
||||
|
||||
class DirectiveError(spack.error.SpackError):
|
||||
"""This is raised when something is wrong with a package directive."""
|
||||
|
@@ -681,7 +681,8 @@ def _expand_archive(stage, name=self.name):
|
||||
for resource in resources:
|
||||
stage = resource.fetcher.stage
|
||||
_expand_archive(stage, resource.name)
|
||||
link_path = join_path(self.stage.source_path, resource.destination, os.path.basename(stage.source_path))
|
||||
basename = os.path.basename(stage.source_path) if resource.basename is None else resource.basename
|
||||
link_path = join_path(self.stage.source_path, resource.destination, basename)
|
||||
if not os.path.exists(link_path):
|
||||
# Create a symlink
|
||||
os.symlink(stage.source_path, link_path)
|
||||
|
@@ -27,11 +27,13 @@
|
||||
package to enable optional features.
|
||||
"""
|
||||
|
||||
|
||||
class Resource(object):
|
||||
"""
|
||||
Represents an optional resource. Aggregates a name, a fetcher and a destination.
|
||||
"""
|
||||
def __init__(self, name, fetcher, destination):
|
||||
def __init__(self, name, fetcher, destination, basename):
|
||||
self.name = name
|
||||
self.fetcher = fetcher
|
||||
self.destination = destination
|
||||
self.basename = basename
|
||||
|
Reference in New Issue
Block a user