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

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

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

Powered by Google App Engine
This is Rietveld 408576698