Index: services/shell/public/service_manifest.gni |
diff --git a/services/shell/public/service_manifest.gni b/services/shell/public/service_manifest.gni |
index 3557e8a1a6a16647c40561bc61b1ae18cc92ca82..fab0dafec7ceee4a6b9504eb64949dd1b46b4268 100644 |
--- a/services/shell/public/service_manifest.gni |
+++ b/services/shell/public/service_manifest.gni |
@@ -12,10 +12,10 @@ import("//services/shell/public/constants.gni") |
# The manifest file template for this service, must be valid JSON with |
# a valid 'url' key matching name. |
# |
-# base_manifest (optional) |
-# A manifest file template to use as a base for |source|. Any properties |
-# defined in |source| will overwrite or be merged with properties defined |
-# in |base_manifest|. |
+# overlays (optional) |
+# A list of partial manifests to overlay onto the source manifest before |
+# emitting the final output. Overlays are applied as the last step, after |
+# any packaged manifests are embedded. |
# |
# name |
# The host portion of the mojo: URL of the service. A script validates |
@@ -23,8 +23,10 @@ import("//services/shell/public/constants.gni") |
# 'url' property set in the manifest and throws a ValueError if they do |
# not. |
# |
-# base_deps (optional) |
-# Dependencies required to generate |base_manifest| if applicable. |
+# output_name (optional) |
+# The name of the package to output. The default value is copied from |
+# |name|. Note that this has no effect on the contents of the manifest, |
+# but only determines the output subdirectory within ${out}/Packages. |
# |
# deps (optional) |
# An array of dependent instances of this template. This template enforces |
@@ -49,9 +51,9 @@ template("service_manifest") { |
assert(defined(invoker.name), |
"\"name\" must be defined for the $target_name template") |
if (defined(invoker.deps)) { |
- assert(defined(invoker.packaged_services), |
- "\"packaged_services\" listing the directory containing the " + |
- "manifest.json of dependent services must be provided.") |
+ assert(defined(invoker.packaged_services) || defined(invoker.overlays), |
+ "\"deps\" implies that you also want \"packaged_services\" and/or" + |
+ "\"overlays\", but you have neither.") |
} |
if (defined(invoker.packaged_services)) { |
assert(defined(invoker.deps), |
@@ -75,9 +77,16 @@ template("service_manifest") { |
inputs = [ |
invoker.source, |
] |
+ if (defined(invoker.overlays)) { |
+ inputs += invoker.overlays |
+ } |
if (type == "mojo") { |
- output = "$root_out_dir/$packages_directory/$name/manifest.json" |
+ if (defined(invoker.output_name)) { |
+ output = "$root_out_dir/$packages_directory/${invoker.output_name}/manifest.json" |
+ } else { |
+ output = "$root_out_dir/$packages_directory/$name/manifest.json" |
+ } |
} else { |
output = "$root_out_dir/${name}_manifest.json" |
} |
@@ -94,9 +103,11 @@ template("service_manifest") { |
"--output=$rebase_output", |
] |
- if (defined(invoker.base_manifest)) { |
- rebase_base = rebase_path(invoker.base_manifest, root_build_dir) |
- args += [ "--base-manifest=$rebase_base" ] |
+ if (defined(invoker.overlays)) { |
+ args += [ "--overlays" ] |
+ foreach(overlay_path, invoker.overlays) { |
+ args += [ rebase_path(overlay_path, root_build_dir) ] |
+ } |
} |
if (defined(invoker.packaged_services)) { |
@@ -112,10 +123,6 @@ template("service_manifest") { |
deps += invoker.deps |
data_deps += invoker.deps |
} |
- if (defined(invoker.base_deps)) { |
- deps += invoker.base_deps |
- data_deps += invoker.base_deps |
- } |
} |
all_deps = [] |