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

Side by Side Diff: services/shell/public/service_manifest.gni

Issue 2419723002: Move services/shell to services/service_manager (Closed)
Patch Set: rebase Created 4 years, 2 months 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 unified diff | Download patch
OLDNEW
(Empty)
1 # Copyright 2016 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import("//services/shell/public/constants.gni")
6
7 # Used to produce a Service Manifest for a Service.
8 #
9 # Parameters:
10 #
11 # source
12 # The manifest file template for this service, must be valid JSON with
13 # a valid 'url' key matching name.
14 #
15 # overlays (optional)
16 # A list of partial manifests to overlay onto the source manifest before
17 # emitting the final output. Overlays are applied as the last step, after
18 # any packaged manifests are embedded.
19 #
20 # name
21 # The host portion of the mojo: URL of the service. A script validates
22 # that the value of this parameter matches the host name portion of the
23 # 'url' property set in the manifest and throws a ValueError if they do
24 # not.
25 #
26 # output_name (optional)
27 # The name of the package to output. The default value is copied from
28 # |name|. Note that this has no effect on the contents of the manifest,
29 # but only determines the output subdirectory within ${out}/Packages.
30 #
31 # deps (optional)
32 # An array of dependent instances of this template. This template enforces
33 # that dependencies can only be instances of this template.
34 #
35 # packaged_services (optional)
36 # An array of names of the dependent services.
37 #
38 # type (default is mojo)
39 # Possible values are 'mojo' and 'exe'. Default is 'mojo'.
40 #
41 # Outputs:
42 #
43 # An instantiation of this template produces in
44 # $outdir/<name>/manifest.json
45 # a meta manifest from the source template and the output manifest of all
46 # dependent children.
47 #
48 template("service_manifest") {
49 assert(defined(invoker.source),
50 "\"source\" must be defined for the $target_name template")
51 assert(defined(invoker.name),
52 "\"name\" must be defined for the $target_name template")
53 if (defined(invoker.deps)) {
54 assert(defined(invoker.packaged_services) || defined(invoker.overlays),
55 "\"deps\" implies that you also want \"packaged_services\" and/or" +
56 "\"overlays\", but you have neither.")
57 }
58 if (defined(invoker.packaged_services)) {
59 assert(defined(invoker.deps),
60 "\"deps\" building the dependent packaged services must be " +
61 "provided.")
62 }
63 if (defined(invoker.type)) {
64 assert(invoker.type == "mojo" || invoker.type == "exe",
65 "\"type\" must be one of \"mojo\" or \"exe\".")
66 }
67
68 action(target_name) {
69 script = "//services/shell/public/tools/manifest/manifest_collator.py"
70
71 type = "mojo"
72 if (defined(invoker.type)) {
73 type = invoker.type
74 }
75
76 name = invoker.name
77 inputs = [
78 invoker.source,
79 ]
80 if (defined(invoker.overlays)) {
81 inputs += invoker.overlays
82 }
83
84 if (type == "mojo") {
85 if (defined(invoker.output_name)) {
86 output = "$root_out_dir/$packages_directory/${invoker.output_name}/manif est.json"
87 } else {
88 output = "$root_out_dir/$packages_directory/$name/manifest.json"
89 }
90 } else {
91 output = "$root_out_dir/${name}_manifest.json"
92 }
93 outputs = [
94 output,
95 ]
96
97 rebase_parent = rebase_path(invoker.source, root_build_dir)
98 rebase_output = rebase_path(output, root_build_dir)
99
100 args = [
101 "--name=$name",
102 "--parent=$rebase_parent",
103 "--output=$rebase_output",
104 ]
105
106 if (defined(invoker.overlays)) {
107 args += [ "--overlays" ]
108 foreach(overlay_path, invoker.overlays) {
109 args += [ rebase_path(overlay_path, root_build_dir) ]
110 }
111 }
112
113 if (defined(invoker.packaged_services)) {
114 foreach(name, invoker.packaged_services) {
115 input = "$root_out_dir/$packages_directory/$name/manifest.json"
116 inputs += [ input ]
117 args += [ rebase_path(input, root_build_dir) ]
118 }
119 }
120 deps = []
121 data_deps = []
122 if (defined(invoker.deps)) {
123 deps += invoker.deps
124 data_deps += invoker.deps
125 }
126 }
127
128 all_deps = []
129 if (defined(invoker.deps)) {
130 all_deps += invoker.deps
131 }
132
133 group("${target_name}__is_service_manifest") {
134 }
135
136 # Explicitly ensure that all dependencies are service_manifest
137 # targets themselves.
138 group("${target_name}__check_deps_are_all_service_manifest") {
139 deps = []
140 foreach(d, all_deps) {
141 name = get_label_info(d, "label_no_toolchain")
142 toolchain = get_label_info(d, "toolchain")
143 deps += [ "${name}__is_service_manifest(${toolchain})" ]
144 }
145 }
146 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698