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

Unified Diff: chrome/installer/linux/BUILD.gn

Issue 1311543003: Add Linux build packaging targets to GN (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 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 side-by-side diff with in-line comments
Download patch
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"
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698