Index: chrome/installer/linux/BUILD.gn |
diff --git a/chrome/installer/linux/BUILD.gn b/chrome/installer/linux/BUILD.gn |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1605dea55c4bbd7d799593928009070cfb2ca934 |
--- /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 |
Lei Zhang
2015/08/28 23:17:02
With gyp, there's separate targets for the combina
brettw
2015/08/28 23:31:41
Yes, in GN you can reference whatever ones you act
|
+# 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" |
+ } |
+} |