summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbrettw <brettw@chromium.org>2015-08-28 16:59:18 -0700
committerCommit bot <commit-bot@chromium.org>2015-08-28 23:59:50 +0000
commita874dccb5c0b7ccfe803a798a585351ce5efccc7 (patch)
treed4021257eec625ccc2080a582ac27b49ec3f17b1
parentb145264927faea3c86c667597e332dde39e37796 (diff)
downloadchromium_src-a874dccb5c0b7ccfe803a798a585351ce5efccc7.zip
chromium_src-a874dccb5c0b7ccfe803a798a585351ce5efccc7.tar.gz
chromium_src-a874dccb5c0b7ccfe803a798a585351ce5efccc7.tar.bz2
Add Linux build packaging targets to GN
Changes the version processing templates to not implicitly include the chrome version .rc file. This was something I've been meaning to do for a while which was forced by this patch, because it wants to call version.py with no sources or template file. I also had to remove some checks that either a template file or sources were defined (I wasn't aware this was valid to do when I wrote these checks). The above-mentioned change necessitated referencing the version template file from a number of existing calls. The version script now explicitly sets the output file with -o. Previously this was the implicit second argument, but this didn't work if there was no template file. -o is the same and it's better to be more explicit anyway. Added copy rules for xdg-mime related scripts which are required by the installer. Added a meta "installer" target which links to the Linux installers. This will also be a good place to hook up the Windows installer when we write it. BUG=525839 TBR=thestig@chromium.org (linux installer), ddorwin@chromium.org (widevine) Review URL: https://codereview.chromium.org/1311543003 Cr-Commit-Position: refs/heads/master@{#346279}
-rw-r--r--BUILD.gn3
-rw-r--r--build/config/chrome_build.gni8
-rw-r--r--chrome/BUILD.gn36
-rw-r--r--chrome/chrome_installer.gypi19
-rw-r--r--chrome/chrome_watcher/BUILD.gn1
-rw-r--r--chrome/installer/BUILD.gn14
-rw-r--r--chrome/installer/linux/BUILD.gn319
-rw-r--r--chrome/installer/linux/flock_make_package.py21
-rw-r--r--chrome/version.gni26
-rw-r--r--chrome_elf/BUILD.gn1
-rw-r--r--media/cdm/ppapi/BUILD.gn1
-rw-r--r--sandbox/BUILD.gn6
-rw-r--r--third_party/widevine/cdm/BUILD.gn1
13 files changed, 432 insertions, 24 deletions
diff --git a/BUILD.gn b/BUILD.gn
index a3834a0..a0a2cdd 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -66,9 +66,10 @@ group("both_gn_and_gyp") {
testonly = true
deps = [
"//base:base_unittests",
- "//sql:sql_unittests",
+ "//chrome/installer",
"//net:net_unittests",
"//skia:skia_unittests",
+ "//sql:sql_unittests",
"//ui/base:ui_base_unittests",
"//url:url_unittests",
]
diff --git a/build/config/chrome_build.gni b/build/config/chrome_build.gni
index c2132c4..de6c2c5 100644
--- a/build/config/chrome_build.gni
+++ b/build/config/chrome_build.gni
@@ -17,3 +17,11 @@ declare_args() {
# on Windows.
is_multi_dll_chrome = is_win && !is_component_build
}
+
+# Refers to the subdirectory for branding in various places including
+# chrome/app/theme.
+if (is_chrome_branded) {
+ branding_path_component = "google_chrome"
+} else {
+ branding_path_component = "chromium"
+}
diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn
index 5d3ec52..f306bbef 100644
--- a/chrome/BUILD.gn
+++ b/chrome/BUILD.gn
@@ -26,6 +26,7 @@ if (!is_android) {
"app/chrome_exe_resource.h",
]
defines = []
+ public_deps = []
deps = []
data = [
@@ -143,6 +144,9 @@ if (!is_android) {
"//chrome/installer/util",
"//content/public/app:both",
]
+ public_deps = [
+ ":xdg_mime", # Needs to be public for installer to consume files.
+ ]
# Needed for chrome_main.cc initialization of libraries.
configs += [ "//build/config/linux:pangocairo" ]
@@ -164,7 +168,7 @@ if (!is_android) {
# TODO(GYP) lots more stuff in the is_mac block.
} else { # Non-Mac.
# These files are used by the installer so we need a public dep.
- public_deps = [
+ public_deps += [
":packed_extra_resources",
":packed_resources",
]
@@ -388,6 +392,7 @@ if (is_win) {
}
process_version("chrome_exe_version") {
+ template_file = chrome_version_rc_template
sources = [
"app/chrome_exe.ver",
]
@@ -395,6 +400,7 @@ if (is_win) {
}
process_version("chrome_dll_version") {
+ template_file = chrome_version_rc_template
sources = [
"app/chrome_dll.ver",
]
@@ -411,6 +417,7 @@ if (is_win) {
}
process_version("nacl64_exe_version") {
+ template_file = chrome_version_rc_template
sources = [
"app/nacl64_exe.ver",
]
@@ -418,6 +425,7 @@ if (is_win) {
}
process_version("other_version") {
+ template_file = chrome_version_rc_template
sources = [
"app/other.ver",
]
@@ -496,29 +504,32 @@ if (is_chrome_branded) {
outputs = [
"$root_out_dir/default_apps/{{source_file_part}}",
]
+
+ # Force anybody that depends on this to get the default apps as data files.
+ data = process_file_template(sources, outputs)
}
}
group("packed_resources") {
- deps = [
+ public_deps = [
":repack_locales_pack",
":repack_pseudo_locales_pack",
":repack_chrome_100_percent",
]
if (is_chrome_branded) {
- deps += [ ":default_apps" ]
+ public_deps += [ ":default_apps" ]
}
if (enable_hidpi) {
- deps += [ ":repack_chrome_200_percent" ]
+ public_deps += [ ":repack_chrome_200_percent" ]
}
if (enable_topchrome_md) {
- deps += [ ":repack_chrome_material_100_percent" ]
+ public_deps += [ ":repack_chrome_material_100_percent" ]
if (enable_hidpi) {
- deps += [ ":repack_chrome_material_200_percent" ]
+ public_deps += [ ":repack_chrome_material_200_percent" ]
}
}
}
@@ -949,4 +960,17 @@ if (is_linux) {
dump_syms_label,
]
}
+
+ # Copies some scripts and resources that are used for desktop integration.
+ copy("xdg_mime") {
+ sources = [
+ "//chrome/app/theme/$branding_path_component/product_logo_48.png",
+ "//chrome/tools/build/linux/chrome-wrapper",
+ "//third_party/xdg-utils/scripts/xdg-mime",
+ "//third_party/xdg-utils/scripts/xdg-settings",
+ ]
+ outputs = [
+ "$root_out_dir/{{source_file_part}}",
+ ]
+ }
}
diff --git a/chrome/chrome_installer.gypi b/chrome/chrome_installer.gypi
index 6ed6062..ece79678 100644
--- a/chrome/chrome_installer.gypi
+++ b/chrome/chrome_installer.gypi
@@ -512,18 +512,21 @@
# we only create packages for official builds.
'copies': [
{
+ # GN version: //chrome/installer/linux:deb_packaging_files
'destination': '<(PRODUCT_DIR)/installer/debian/',
'files': [
'<@(packaging_files_deb)',
]
},
{
+ # GN version: //chrome/installer/linux:rpm_packaging_files
'destination': '<(PRODUCT_DIR)/installer/rpm/',
'files': [
'<@(packaging_files_rpm)',
]
},
{
+ # GN version: //chrome/installer/linux:common_packaging_files
'destination': '<(PRODUCT_DIR)/installer/common/',
'files': [
'<@(packaging_files_common)',
@@ -531,6 +534,7 @@
},
# Additional theme resources needed for package building.
{
+ # GN version: //chrome/installer/linux:theme_files
'destination': '<(PRODUCT_DIR)/installer/theme/',
'files': [
'<(branding_dir)/linux/product_logo_32.xpm',
@@ -548,6 +552,7 @@
],
'actions': [
{
+ # GN version: //chrome/installer/linux:save_build_info
'action_name': 'save_build_info',
'inputs': [
'<(branding_dir)/BRANDING',
@@ -569,6 +574,7 @@
],
},
{
+ # GN version: //chrome/installer/linux
'target_name': 'linux_packages_all',
'suppress_wildcard': 1,
'type': 'none',
@@ -615,6 +621,7 @@
],
},
{
+ # GN version: //chrome/installer/linux:unstable
'target_name': 'linux_packages_unstable',
'suppress_wildcard': 1,
'type': 'none',
@@ -631,6 +638,7 @@
],
},
{
+ # GN version: //chrome/installer/linux:beta
'target_name': 'linux_packages_beta',
'suppress_wildcard': 1,
'type': 'none',
@@ -647,6 +655,7 @@
],
},
{
+ # GN version: //chrome/installer/linux:stable
'target_name': 'linux_packages_stable',
'suppress_wildcard': 1,
'type': 'none',
@@ -665,6 +674,7 @@
# TODO(mmoss) gyp looping construct would be handy here ...
# These package actions are the same except for the 'channel' variable.
{
+ # GN version: //chrome/installer/linux:asan
'target_name': 'linux_packages_asan_deb',
'suppress_wildcard': 1,
'type': 'none',
@@ -693,6 +703,7 @@
],
},
{
+ # GN version: //chrome/installer/linux:trunk
'target_name': 'linux_packages_trunk_deb',
'suppress_wildcard': 1,
'type': 'none',
@@ -721,6 +732,7 @@
],
},
{
+ # GN version: //chrome/installer/linux:unstable
'target_name': 'linux_packages_unstable_deb',
'suppress_wildcard': 1,
'type': 'none',
@@ -749,6 +761,7 @@
],
},
{
+ # GN version: //chrome/installer/linux:beta
'target_name': 'linux_packages_beta_deb',
'suppress_wildcard': 1,
'type': 'none',
@@ -777,6 +790,7 @@
],
},
{
+ # GN version: //chrome/installer/linux:stable
'target_name': 'linux_packages_stable_deb',
'suppress_wildcard': 1,
'type': 'none',
@@ -805,6 +819,7 @@
],
},
{
+ # GN version: //chrome/installer/linux:asan
'target_name': 'linux_packages_asan_rpm',
'suppress_wildcard': 1,
'type': 'none',
@@ -834,6 +849,7 @@
],
},
{
+ # GN version: //chrome/installer/linux:trunk
'target_name': 'linux_packages_trunk_rpm',
'suppress_wildcard': 1,
'type': 'none',
@@ -863,6 +879,7 @@
],
},
{
+ # GN version: //chrome/installer/linux:unstable
'target_name': 'linux_packages_unstable_rpm',
'suppress_wildcard': 1,
'type': 'none',
@@ -892,6 +909,7 @@
],
},
{
+ # GN version: //chrome/installer/linux:beta
'target_name': 'linux_packages_beta_rpm',
'suppress_wildcard': 1,
'type': 'none',
@@ -921,6 +939,7 @@
],
},
{
+ # GN version: //chrome/installer/linux:stable
'target_name': 'linux_packages_stable_rpm',
'suppress_wildcard': 1,
'type': 'none',
diff --git a/chrome/chrome_watcher/BUILD.gn b/chrome/chrome_watcher/BUILD.gn
index ada2808..ac00808 100644
--- a/chrome/chrome_watcher/BUILD.gn
+++ b/chrome/chrome_watcher/BUILD.gn
@@ -15,6 +15,7 @@ source_set("client") {
}
process_version("chrome_watcher_resources") {
+ template_file = chrome_version_rc_template
sources = [
"chrome_watcher.ver",
]
diff --git a/chrome/installer/BUILD.gn b/chrome/installer/BUILD.gn
new file mode 100644
index 0000000..5b0b9f4
--- /dev/null
+++ b/chrome/installer/BUILD.gn
@@ -0,0 +1,14 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/config/chrome_build.gni")
+
+# Meta-target that forwards to the installer of the correct type (if any).
+group("installer") {
+ if (is_linux && is_chrome_branded) {
+ deps = [
+ "//chrome/installer/linux",
+ ]
+ }
+}
diff --git a/chrome/installer/linux/BUILD.gn b/chrome/installer/linux/BUILD.gn
new file mode 100644
index 0000000..1605dea
--- /dev/null
+++ b/chrome/installer/linux/BUILD.gn
@@ -0,0 +1,319 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/config/chrome_build.gni")
+import("//build/util/version.gni")
+import("//chrome/version.gni")
+
+assert(is_linux && is_chrome_branded)
+
+# This target builds all "normal" Linux installers.
+# GYP version: chrome/chrome_installer.gypi:linux_packages_all
+#
+# The bot setup is to build stable, unstable, and beta packages for the current
+# build. Then a later step picks up the package corresponding to what the
+# current build is supposed to be. This is wasteful since one build will only
+# be one of these. This build file also has targets for trunk and possibly asan
+# installers.
+#
+# TODO it would be much nicer to have a build variable so the bot can tell us
+# what the current build should be, so we only have to make one .deb/.rpm pair.
+#
+#
+# TO BUILD LINUX INSTALLER PACKAGES
+#
+# The packages list the exact versions of each library used. The versions used
+# on the bots are likely different than those on your workstation, so you'll
+# get a stream of errors like:
+# < libasound2 (>= 1.0.23)
+# ---
+# > libasound2 (>= 1.0.16)
+#
+# To avoid these warnings for testing purposes, do:
+#
+# export IGNORE_DEPS_CHANGES=1
+#
+# before you build.
+group("linux") {
+ deps = [
+ ":beta",
+ ":stable",
+ ":unstable",
+ ]
+}
+
+branding_dir = "//chrome/app/theme/$branding_path_component"
+branding_dir_100 =
+ "//chrome/app/theme/default_100_percent/$branding_path_component"
+
+copy("common_packaging_files") {
+ visibility = [ ":*" ]
+ sources = [
+ "common/apt.include",
+ "common/default-app-block.template",
+ "common/default-app.template",
+ "common/desktop.template",
+ "common/google-chrome/google-chrome.info",
+ "common/installer.include",
+ "common/postinst.include",
+ "common/prerm.include",
+ "common/repo.cron",
+ "common/rpm.include",
+ "common/rpmrepo.cron",
+ "common/symlinks.include",
+ "common/variables.include",
+ "common/wrapper",
+ ]
+
+ if (current_cpu == "x86") {
+ sources += [ "//build/linux/bin/eu-strip" ]
+ } else if (current_cpu == "x64") {
+ sources += [ "/usr/bin/eu-strip" ]
+ }
+
+ outputs = [
+ "$root_out_dir/installer/common/{{source_file_part}}",
+ ]
+}
+
+copy("deb_packaging_files") {
+ visibility = [ ":*" ]
+ sources = [
+ "debian/build.sh",
+ "debian/changelog.template",
+ "debian/control.template",
+ "debian/debian.menu",
+ "debian/expected_deps_ia32",
+ "debian/expected_deps_x64",
+ "debian/postinst",
+ "debian/postrm",
+ "debian/prerm",
+ ]
+ outputs = [
+ "$root_out_dir/installer/debian/{{source_file_part}}",
+ ]
+}
+
+copy("theme_files") {
+ visibility = [ ":*" ]
+ sources = [
+ "$branding_dir/BRANDING",
+ "$branding_dir/linux/product_logo_32.xpm",
+ "$branding_dir/product_logo_128.png",
+ "$branding_dir/product_logo_22.png",
+ "$branding_dir/product_logo_24.png",
+ "$branding_dir/product_logo_256.png",
+ "$branding_dir/product_logo_48.png",
+ "$branding_dir/product_logo_64.png",
+ "$branding_dir_100/product_logo_16.png",
+ "$branding_dir_100/product_logo_32.png",
+ ]
+ outputs = [
+ "$root_out_dir/installer/theme/{{source_file_part}}",
+ ]
+}
+
+if (!is_chromeos) {
+ copy("rpm_packaging_files") {
+ visibility = [ ":*" ]
+ sources = [
+ "rpm/build.sh",
+ "rpm/chrome.spec.template",
+ "rpm/expected_deps_i386",
+ "rpm/expected_deps_x86_64",
+ ]
+ outputs = [
+ "$root_out_dir/installer/rpm/{{source_file_part}}",
+ ]
+ }
+}
+
+process_version("save_build_info") {
+ # Just output the default version info variables (no template).
+ process_only = true
+ output = "$root_out_dir/installer/version.txt"
+}
+
+# Dependencies for all Linux installer targets.
+group("installer_deps") {
+ public_deps = [
+ ":common_packaging_files",
+ ":deb_packaging_files",
+ ":save_build_info",
+ ":theme_files",
+ "//chrome",
+ "//chrome:packed_resources",
+ "//components/nacl:nacl_helper",
+ "//sandbox/linux:chrome_sandbox",
+ "//third_party/adobe/flash:flapper_binaries",
+ ]
+ if (current_cpu == "x86" || current_cpu == "x64") {
+ public_deps += [
+ "//third_party/widevine/cdm:widevinecdm",
+ "//third_party/widevine/cdm:widevinecdmadapter",
+ ]
+ }
+ if (!is_chromeos) {
+ public_deps += [ ":rpm_packaging_files" ]
+ }
+}
+
+# Creates .deb and .rpm (RPM for non-ChromeOS only) installer packages.
+#
+# channel:
+# Name of the channel.
+template("linux_package") {
+ assert(defined(invoker.channel))
+ channel = invoker.channel
+
+ if (current_cpu == "x86") {
+ # The shell scruipts use "ia32" instead of "x86".
+ build_script_arch = "ia32"
+ } else {
+ build_script_arch = current_cpu
+ }
+
+ packaging_files_binaries = [
+ # TODO(mmoss) Any convenient way to get all the relevant build
+ # files? (e.g. all locales, resources, etc.)
+ "$root_out_dir/chrome",
+ "$root_out_dir/chrome_sandbox",
+ "$root_out_dir/xdg-mime",
+ "$root_out_dir/xdg-settings",
+ "$root_out_dir/locales/en-US.pak",
+
+ #"$root_out_dir/nacl_helper", TODO(GYP) NaCl support.
+ #"$root_out_dir/nacl_helper_bootstrap", TODO(GYP) NaCl support.
+ "$root_out_dir/PepperFlash/libpepflashplayer.so",
+ "$root_out_dir/PepperFlash/manifest.json",
+ ]
+
+ if (current_cpu == "x86") {
+ packaging_files_binaries += [
+ #"$root_out_dir/nacl_irt_x86_32.nexe", TODO(GYP) NaCl support.
+ "$root_out_dir/libwidevinecdmadapter.so",
+ "$root_out_dir/libwidevinecdm.so",
+ ]
+ } else if (current_cpu == "x64") {
+ packaging_files_binaries += [
+ #"$root_out_dir/nacl_irt_x86_64.nexe", TODO(GYP) NaCl support.
+ "$root_out_dir/libwidevinecdmadapter.so",
+ "$root_out_dir/libwidevinecdm.so",
+ ]
+ }
+ if (is_asan) {
+ packaging_files_binaries += [ "$root_out_dir/lib/libc++.so" ]
+ }
+
+ deb_target_name = "${target_name}_deb"
+ action(deb_target_name) {
+ visibility = [ ":*" ]
+ script = "flock_make_package.py"
+
+ if (current_cpu == "x86") {
+ deb_arch = "i386"
+ } else if (current_cpu == "x64") {
+ deb_arch = "amd64"
+ } else if (current_cpu == "arm") {
+ deb_arch = "arm"
+ } else {
+ assert(false, "Linux installer not configured for this architecture.")
+ }
+
+ inputs = packaging_files_binaries
+ outputs = [
+ "$root_out_dir/google-chrome-${channel}_${chrome_version_full}-1_${deb_arch}.deb",
+ ]
+
+ args = [
+ rebase_path("$root_out_dir/linux_package.lock", root_build_dir),
+ rebase_path("$root_out_dir/installer/debian/build.sh", root_build_dir),
+ "-o",
+ rebase_path(root_out_dir, root_build_dir),
+ "-b",
+ rebase_path(root_out_dir, root_build_dir),
+ "-a",
+ build_script_arch,
+ "-c",
+ invoker.channel,
+ "-d",
+ branding_path_component,
+ ]
+ deps = [
+ ":installer_deps",
+ ]
+ }
+
+ if (!is_chromeos) {
+ rpm_target_name = "${target_name}_rpm"
+ action(rpm_target_name) {
+ visibility = [ ":*" ]
+ script = "flock_make_package.py"
+
+ if (current_cpu == "x86") {
+ rpm_arch = "i386"
+ } else if (current_cpu == "x64") {
+ rpm_arch = "x86_64"
+ } else if (current_cpu == "arm") {
+ rpm_arch = "arm"
+ } else {
+ assert(false, "Linux installer not configured for this architecture.")
+ }
+
+ inputs = packaging_files_binaries
+ outputs = [
+ "$root_out_dir/google-chrome-${channel}_${chrome_version_full}-1.${rpm_arch}.rpm",
+ ]
+
+ args = [
+ rebase_path("$root_out_dir/linux_package.lock", root_build_dir),
+ rebase_path("$root_out_dir/installer/rpm/build.sh", root_build_dir),
+ "-o",
+ rebase_path(root_out_dir, root_build_dir),
+ "-b",
+ rebase_path(root_out_dir, root_build_dir),
+ "-a",
+ build_script_arch,
+ "-c",
+ invoker.channel,
+ "-d",
+ branding_path_component,
+ ]
+ deps = [
+ ":installer_deps",
+ ]
+ }
+ }
+
+ group(target_name) {
+ deps = [
+ ":$deb_target_name",
+ ]
+ if (!is_chromeos) {
+ deps += [ ":$rpm_target_name" ]
+ }
+ }
+}
+
+# Standard packages.
+linux_package("stable") {
+ channel = "stable"
+}
+linux_package("beta") {
+ channel = "beta"
+}
+linux_package("unstable") {
+ channel = "unstable"
+}
+
+# Other packages that we support that aren't included in the default "linux"
+# target.
+linux_package("trunk") {
+ channel = "trunk"
+}
+if (is_asan) {
+ linux_package("asan") {
+ channel = "asan"
+ }
+}
diff --git a/chrome/installer/linux/flock_make_package.py b/chrome/installer/linux/flock_make_package.py
new file mode 100644
index 0000000..8dfc089
--- /dev/null
+++ b/chrome/installer/linux/flock_make_package.py
@@ -0,0 +1,21 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+# Linux package generation is serialized because it creates large numbers of
+# temporary files that can overload the /tmp partition on the builders.
+# See https://codereview.chromium.org/243019
+#
+# This script does a flock to serialize, and then runs the given shell
+# script with the given parameters.
+#
+# Usage:
+# flock_make_package.py <lockfile> <shell_script> [<args_to_script>*]
+
+import subprocess
+import sys
+
+if len(sys.argv) < 3:
+ print "Incorrect args."
+ sys.exit(1)
+subprocess.call(["flock", "--", sys.argv[1], "bash"] + sys.argv[2:])
diff --git a/chrome/version.gni b/chrome/version.gni
index b97df39..453a8d8 100644
--- a/chrome/version.gni
+++ b/chrome/version.gni
@@ -21,8 +21,6 @@ import("//build/config/chrome_build.gni")
# processes one file per invocation of the template so you may have to have
# multiple targets.
#
-# You must specify either sources or a template_file, or both.
-#
# Parameters:
# sources (optional):
# List of file names to read. When converting a GYP target, this should
@@ -34,9 +32,9 @@ import("//build/config/chrome_build.gni")
# "_version.rc" to the end. But in GN you need to specify the full name.
#
# template_file (optional):
-# Template file to use (not a list). Defaults to
-# //chrome/app/chrome_version.rc.version if unspecified.
-# TODO(brettw) remove this default behavior and specify it every time.
+# Template file to use (not a list). Most Windows uses for generating
+# resources will want to specify the chrome_version_rc_template defined
+# below.
#
# extra_args (optional):
# Extra arguments to pass to version.py. Any "-f <filename>" args should
@@ -57,8 +55,6 @@ import("//build/config/chrome_build.gni")
# extra_files = [ "foo/BRANDING" ]
# }
template("process_version") {
- assert(defined(invoker.sources) || defined(invoker.template_file),
- "Either sources or template_file must be defined for $target_name")
assert(defined(invoker.output), "Output must be defined for $target_name")
process_only = defined(invoker.process_only) && invoker.process_only
@@ -80,18 +76,15 @@ template("process_version") {
} else {
branding_path = "//chrome/app/theme/chromium/BRANDING"
}
- if (defined(invoker.template_file)) {
- template_path = invoker.template_file
- } else {
- template_path = "//chrome/app/chrome_version.rc.version"
- }
inputs = [
version_path,
lastchange_path,
branding_path,
- template_path,
]
+ if (defined(invoker.template_file)) {
+ inputs += [ invoker.template_file ]
+ }
outputs = [
invoker.output,
@@ -121,9 +114,12 @@ template("process_version") {
args += invoker.extra_args
}
args += [
- rebase_path(template_path, root_build_dir),
+ "-o",
rebase_path(invoker.output, root_build_dir),
]
+ if (defined(invoker.template_file)) {
+ args += [ rebase_path(invoker.template_file, root_build_dir) ]
+ }
if (process_only) {
# When processing only, visibility gets applied to this target.
@@ -144,3 +140,5 @@ template("process_version") {
}
}
}
+
+chrome_version_rc_template = "//chrome/app/chrome_version.rc.version"
diff --git a/chrome_elf/BUILD.gn b/chrome_elf/BUILD.gn
index c97a411..2a15a55 100644
--- a/chrome_elf/BUILD.gn
+++ b/chrome_elf/BUILD.gn
@@ -7,6 +7,7 @@ import("//chrome/version.gni")
import("//testing/test.gni")
process_version("chrome_elf_resources") {
+ template_file = chrome_version_rc_template
sources = [
"chrome_elf.ver",
]
diff --git a/media/cdm/ppapi/BUILD.gn b/media/cdm/ppapi/BUILD.gn
index cd10c83..b9ca2fc 100644
--- a/media/cdm/ppapi/BUILD.gn
+++ b/media/cdm/ppapi/BUILD.gn
@@ -51,6 +51,7 @@ shared_library("clearkeycdm") {
process_version("clearkeycdmadapter_resources") {
visibility = [ ":*" ]
+ template_file = chrome_version_rc_template
sources = [
"//media/clearkeycdmadapter.ver",
"external_clear_key/BRANDING",
diff --git a/sandbox/BUILD.gn b/sandbox/BUILD.gn
index 15fb620..6825a1d 100644
--- a/sandbox/BUILD.gn
+++ b/sandbox/BUILD.gn
@@ -5,18 +5,18 @@
# Meta-target that forwards to the proper platform one.
group("sandbox") {
if (is_win) {
- deps = [
+ public_deps = [
"//sandbox/win:sandbox",
]
} else if (is_mac) {
# TODO(GYP): Make sandbox compile w/ 10.6 SDK.
if (false) {
- deps = [
+ public_deps = [
"//sandbox/mac:sandbox",
]
}
} else if (is_linux || is_android) {
- deps = [
+ public_deps = [
"//sandbox/linux:sandbox",
]
}
diff --git a/third_party/widevine/cdm/BUILD.gn b/third_party/widevine/cdm/BUILD.gn
index 99ca959..50978d2 100644
--- a/third_party/widevine/cdm/BUILD.gn
+++ b/third_party/widevine/cdm/BUILD.gn
@@ -113,6 +113,7 @@ if ((is_chrome_branded || enable_widevine) && enable_pepper_cdms) {
# Produce and compile the .rc file.
process_version("widevinecdmadapter_resources") {
visibility = [ ":*" ]
+ template_file = chrome_version_rc_template
sources = [
"BRANDING",
"widevinecdmadapter.ver",