Chromium Code Reviews| 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" |
| + } |
| +} |