Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(673)

Unified Diff: services/service_manager/public/service_manifest.gni

Issue 2475543003: Introduce the image_decoder service (Closed)
Patch Set: . Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: services/service_manager/public/service_manifest.gni
diff --git a/services/service_manager/public/service_manifest.gni b/services/service_manager/public/service_manifest.gni
index 58e38d48eac29a9961d840f6839d36b6b3d53ccd..22fc38eaa50a343bba9d2c2abbc608742cf23157 100644
--- a/services/service_manager/public/service_manifest.gni
+++ b/services/service_manager/public/service_manifest.gni
@@ -2,6 +2,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+import("//build/config/dcheck_always_on.gni")
import("//services/service_manager/public/constants.gni")
# Used to produce a Service Manifest for a Service.
@@ -104,6 +105,10 @@ template("service_manifest") {
"--output=$rebase_output",
]
+ if (is_debug || dcheck_always_on) {
+ args += [ "--pretty" ]
+ }
+
if (defined(invoker.overlays)) {
args += [ "--overlays" ]
foreach(overlay_path, invoker.overlays) {
@@ -112,6 +117,7 @@ template("service_manifest") {
}
if (defined(invoker.packaged_services)) {
+ args += [ "--packaged-services" ]
foreach(name, invoker.packaged_services) {
input = "$root_out_dir/$packages_directory/$name/manifest.json"
inputs += [ input ]
@@ -131,17 +137,134 @@ template("service_manifest") {
all_deps += invoker.deps
}
- group("${target_name}__is_service_manifest") {
+ group("${target_name}__is_service_manifest_or_overlay") {
+ }
+
+ # Explicitly ensure that all dependencies are service_manifest
+ # or service_manifest_overlay targets themselves.
+ group("${target_name}__check_deps_are_all_service_manifest") {
+ deps = []
+ foreach(d, all_deps) {
+ name = get_label_info(d, "label_no_toolchain")
+ toolchain = get_label_info(d, "toolchain")
+ deps += [ "${name}__is_service_manifest_or_overlay(${toolchain})" ]
+ }
+ }
+}
+
+# A simple derivative of the service_manifest template above. This allows for
+# embedding of packaged services into a manifest overlay.
+#
+# Parameters:
+#
+# source
+# The manifest overlay file to procss.
+#
+# 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.
+#
+# output_name (optional)
+# The output name of the manifest. Defaults to the target name.
+#
+# deps (optional)
+# An array of the service_manifest targets this overlay depends on.
+#
+# packaged_services (optional)
+# An array of names of the services packaged into this overlay.
+#
+# Outputs:
+#
+# An instantiation of this template produces in
+# ${root_gen_dir}/${output_name}.json
+#
+template("service_manifest_overlay") {
+ assert(defined(invoker.source),
+ "\"source\" must be defined for the $target_name template")
+ if (defined(invoker.deps)) {
+ 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),
+ "\"deps\" building the dependent packaged services must be " +
+ "provided.")
+ }
+ if (defined(invoker.type)) {
+ assert(invoker.type == "mojo" || invoker.type == "exe",
+ "\"type\" must be one of \"mojo\" or \"exe\".")
+ }
+
+ action(target_name) {
+ script =
+ "//services/service_manager/public/tools/manifest/manifest_collator.py"
+
+ inputs = [
+ invoker.source,
+ ]
+ if (defined(invoker.overlays)) {
+ inputs += invoker.overlays
+ }
+
+ output_name = target_name
+ if (defined(invoker.output_name)) {
+ output_name = invoker.output_name
+ }
+ output = "${root_gen_dir}/${output_name}.json"
+
+ outputs = [
+ output,
+ ]
+
+ rebase_parent = rebase_path(invoker.source, root_build_dir)
+ rebase_output = rebase_path(output, root_build_dir)
+
+ args = [
+ "--parent=$rebase_parent",
+ "--output=$rebase_output",
+ ]
+
+ if (is_debug || dcheck_always_on) {
+ args += [ "--pretty" ]
+ }
+
+ if (defined(invoker.overlays)) {
+ args += [ "--overlays" ]
+ foreach(overlay_path, invoker.overlays) {
+ args += [ rebase_path(overlay_path, root_build_dir) ]
+ }
+ }
+
+ if (defined(invoker.packaged_services)) {
+ args += [ "--packaged-services" ]
+ foreach(name, invoker.packaged_services) {
+ input = "$root_out_dir/$packages_directory/$name/manifest.json"
+ inputs += [ input ]
+ args += [ rebase_path(input, root_build_dir) ]
+ }
+ }
+
+ deps = []
+ data_deps = []
+ if (defined(invoker.deps)) {
+ deps += invoker.deps
+ data_deps += invoker.deps
+ }
+ }
+
+ group("${target_name}__is_service_manifest_or_overlay") {
}
# Explicitly ensure that all dependencies are service_manifest
- # targets themselves.
+ # or service_manifest_overlay targets themselves.
group("${target_name}__check_deps_are_all_service_manifest") {
deps = []
foreach(d, all_deps) {
name = get_label_info(d, "label_no_toolchain")
toolchain = get_label_info(d, "toolchain")
- deps += [ "${name}__is_service_manifest(${toolchain})" ]
+ deps += [ "${name}__is_service_manifest_or_overlay(${toolchain})" ]
}
}
}

Powered by Google App Engine
This is Rietveld 408576698