Bug 1245701 - Allow absolute paths with wildcards in FINAL_TARGET_FILES; r?glandium
MozReview-Commit-ID: AnD0NeQrIpD
--- a/python/mozbuild/mozbuild/backend/recursivemake.py
+++ b/python/mozbuild/mozbuild/backend/recursivemake.py
@@ -18,16 +18,17 @@ from itertools import chain
from reftest import ReftestManifest
from mozpack.manifests import (
InstallManifest,
)
import mozpack.path as mozpath
from mozbuild.frontend.context import (
+ AbsolutePath,
Path,
RenamedSourcePath,
SourcePath,
ObjDirPath,
)
from .common import CommonBackend
from ..frontend.data import (
AndroidAssetsDirs,
@@ -1248,24 +1249,23 @@ class RecursiveMakeBackend(CommonBackend
target_var = (mozpath.join(target, path)
if path else target).replace('/', '_')
have_objdir_files = False
for f in files:
assert not isinstance(f, RenamedSourcePath)
dest = mozpath.join(reltarget, path, f.target_basename)
if not isinstance(f, ObjDirPath):
if '*' in f:
- if not isinstance(f, SourcePath):
- raise Exception("Wildcards are only supported in "
- "SourcePath objects in %s. Path is: %s" % (
- type(obj), f
- ))
- if f.startswith('/'):
- basepath = f.full_path.rstrip('*')
- install_manifest.add_pattern_symlink(basepath, '*', path)
+ if f.startswith('/') or isinstance(f, AbsolutePath):
+ basepath, wild = os.path.split(f.full_path)
+ if '*' in basepath:
+ raise Exception("Wildcards are only supported in the filename part of "
+ "srcdir-relative or absolute paths.")
+
+ install_manifest.add_pattern_symlink(basepath, wild, path)
else:
install_manifest.add_pattern_symlink(f.srcdir, f, path)
else:
install_manifest.add_symlink(f.full_path, dest)
else:
install_manifest.add_optional_exists(dest)
backend_file.write('%s_FILES += %s\n' % (
target_var, self._pretty_path(f, backend_file)))