Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Releases: JavaScriptBench/v8

9.3.344-wenhui-version

05 Oct 01:04

Choose a tag to compare

#!/bin/bash -e

# Copyright (c) 2012 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.

# Script to install everything needed to build chromium (well, ideally, anyway)
# See https://chromium.googlesource.com/chromium/src/+/main/docs/linux/build_instructions.md

usage() {
  echo "Usage: $0 [--options]"
  echo "Options:"
  echo "--[no-]syms: enable or disable installation of debugging symbols"
  echo "--lib32: enable installation of 32-bit libraries, e.g. for V8 snapshot"
  echo "--[no-]arm: enable or disable installation of arm cross toolchain"
  echo "--[no-]chromeos-fonts: enable or disable installation of Chrome OS"\
       "fonts"
  echo "--[no-]nacl: enable or disable installation of prerequisites for"\
       "building standalone NaCl and all its toolchains"
  echo "--[no-]backwards-compatible: enable or disable installation of packages
        that are no longer currently needed and have been removed from this
        script.  Useful for bisection."
  echo "--no-prompt: silently select standard options/defaults"
  echo "--quick-check: quickly try to determine if dependencies are installed"
  echo "               (this avoids interactive prompts and sudo commands,"
  echo "               so might not be 100% accurate)"
  echo "--unsupported: attempt installation even on unsupported systems"
  echo "Script will prompt interactively if options not given."
  exit 1
}

# Build list of apt packages in dpkg --get-selections format.
build_apt_package_list() {
  echo "Building apt package list." >&2
  apt-cache dumpavail | \
    python3 -c '\
      import re,sys; \
      o = sys.stdin.read(); \
      p = {"i386": ":i386"}; \
      f = re.M | re.S; \
      r = re.compile(r"^Package: (.+?)$.+?^Architecture: (.+?)$", f); \
      m = ["%s%s" % (x, p.get(y, "")) for x, y in re.findall(r, o)]; \
      print("\n".join(m))'
}

# Checks whether a particular package is available in the repos.
# Uses pre-formatted ${apt_package_list}.
# USAGE: $ package_exists <package name>
package_exists() {
  if [ -z "${apt_package_list}" ]; then
    echo "Call build_apt_package_list() prior to calling package_exists()" >&2
    apt_package_list=$(build_apt_package_list)
  fi
  # `grep` takes a regex string, so the +'s in package names, e.g. "libstdc++",
  # need to be escaped.
  local escaped="$(echo $1 | sed 's/[\~\+\.\:-]/\\&/g')"
  [ ! -z "$(grep "^${escaped}$" <<< "${apt_package_list}")" ]
}

do_inst_arm=0
do_inst_nacl=0

while [ "$1" != "" ]
do
  case "$1" in
  --syms)                    do_inst_syms=1;;
  --no-syms)                 do_inst_syms=0;;
  --lib32)                   do_inst_lib32=1;;
  --arm)                     do_inst_arm=1;;
  --no-arm)                  do_inst_arm=0;;
  --chromeos-fonts)          do_inst_chromeos_fonts=1;;
  --no-chromeos-fonts)       do_inst_chromeos_fonts=0;;
  --nacl)                    do_inst_nacl=1;;
  --no-nacl)                 do_inst_nacl=0;;
  --backwards-compatible)    do_inst_backwards_compatible=1;;
  --no-backwards-compatible) do_inst_backwards_compatible=0;;
  --add-cross-tool-repo)     add_cross_tool_repo=1;;
  --no-prompt)               do_default=1
                             do_quietly="-qq --assume-yes"
    ;;
  --quick-check)             do_quick_check=1;;
  --unsupported)             do_unsupported=1;;
  *) usage;;
  esac
  shift
done

if [ "$do_inst_arm" = "1" ]; then
  do_inst_lib32=1
fi

# Check for lsb_release command in $PATH
if ! which lsb_release > /dev/null; then
  echo "ERROR: lsb_release not found in \$PATH" >&2
  echo "try: sudo apt-get install lsb-release" >&2
  exit 1;
fi

distro_codename=$(lsb_release --codename --short)
distro_id=$(lsb_release --id --short)
# TODO(crbug.com/1199405): Remove 14.04 (trusty) and 16.04 (xenial).
supported_codenames="(trusty|xenial|bionic|disco|eoan|focal|groovy)"
supported_ids="(Debian)"
if [ 0 -eq "${do_unsupported-0}" ] && [ 0 -eq "${do_quick_check-0}" ] ; then
  if [[ ! $distro_codename =~ $supported_codenames &&
        ! $distro_id =~ $supported_ids ]]; then
    echo -e "ERROR: The only supported distros are\n" \
      "\tUbuntu 14.04 LTS (trusty with EoL April 2022)\n" \
      "\tUbuntu 16.04 LTS (xenial with EoL April 2024)\n" \
      "\tUbuntu 18.04 LTS (bionic with EoL April 2028)\n" \
      "\tUbuntu 20.04 LTS (focal with Eol April 2030)\n" \
      "\tUbuntu 20.10 (groovy)\n" \
      "\tDebian 10 (buster) or later" >&2
    exit 1
  fi

  if ! uname -m | egrep -q "i686|x86_64"; then
    echo "Only x86 architectures are currently supported" >&2
    exit
  fi
fi

if [ "x$(id -u)" != x0 ] && [ 0 -eq "${do_quick_check-0}" ]; then
  echo "Running as non-root user."
  echo "You might have to enter your password one or more times for 'sudo'."
  echo
fi

if [ 0 -eq "${do_quick_check-0}" ] ; then
  if [ "$do_inst_lib32" = "1" ] || [ "$do_inst_nacl" = "1" ]; then
    sudo dpkg --add-architecture i386
  fi
  sudo apt-get update
fi

# Populate ${apt_package_list} for package_exists() parsing.
apt_package_list=$(build_apt_package_list)

# Packages needed for chromeos only
chromeos_dev_list="libbluetooth-dev libxkbcommon-dev mesa-common-dev"

if package_exists realpath; then
  chromeos_dev_list="${chromeos_dev_list} realpath"
fi

# Packages needed for development
dev_list="\
  binutils
  bison
  bzip2
  cdbs
  curl
  dbus-x11
  dpkg-dev
  elfutils
  devscripts
  fakeroot
  flex
  git-core
  gperf
  libappindicator3-dev
  libasound2-dev
  libatspi2.0-dev
  libbrlapi-dev
  libbz2-dev
  libcairo2-dev
  libcap-dev
  libc6-dev
  libcups2-dev
  libcurl4-gnutls-dev
  libdrm-dev
  libelf-dev
  libevdev-dev
  libffi-dev
  libgbm-dev
  libglib2.0-dev
  libglu1-mesa-dev
  libgtk-3-dev
  libkrb5-dev
  libnspr4-dev
  libnss3-dev
  libpam0g-dev
  libpci-dev
  libpulse-dev
  libsctp-dev
  libspeechd-dev
  libsqlite3-dev
  libssl-dev
  libudev-dev
  libva-dev
  libwww-perl
  libxshmfence-dev
  libxslt1-dev
  libxss-dev
  libxt-dev
  libxtst-dev
  locales
  openbox
  p7zip
  patch
  perl
  pkg-config
  python-setuptools
  rpm
  ruby
  subversion
  uuid-dev
  wdiff
  x11-utils
  xcompmgr
  xz-utils
  zip
  $chromeos_dev_list
"

if package_exists python-is-python2; then
  dev_list="${dev_list} python-is-python2 python2-dev"
else
  dev_list="${dev_list} python python-dev"
fi

# 64-bit systems need a minimum set of 32-bit compat packages for the pre-built
# NaCl binaries.
if file -L /sbin/init | grep -q 'ELF 64-bit'; then
  dev_list="${dev_list} libc6-i386 lib32stdc++6"

  # lib32gcc-s1 used to be called lib32gcc1 in older distros.
  if package_exists lib32gcc-s1; then
    dev_list="${dev_list} lib32gcc-s1"
  elif package_exists lib32gcc1; then
    dev_list="${dev_list} lib32gcc1"
  fi
fi

# Run-time libraries required by chromeos only
chromeos_lib_list="libpulse0 libbz2-1.0"

# List of required run-time libraries
common_lib_list="\
  libappindicator3-1
  libasound2
  libatk1.0-0
  libatspi2.0-0
  libc6
  libcairo2
  libcap2
  libcups2
  libdrm2
  libevdev2
  libexpat1
  libfontconfig1
  libfreetype6
  libgbm1
  libglib2.0-0
  libgtk-3-0
  libpam0g
  libpango-1.0-0
  libpci3
  libpcre3
  libpixman-1-0
  libspeechd2
  libstdc++6
  libsqlite3-0
  libuuid1
  libwayland-egl1-mesa
  libx11-6
  libx11-xcb1
  libxau6
  libxcb1
  libxcomposite1
  libxcursor1
  libxdamage1
  libxdmcp6
  libxext6
  libxfixes3
  libxi6
  libxinerama1
  libxrandr2
  libxrender1
  libxtst6
  zlib1g
"

if package_exists libffi7; then
  common_lib_list="${common_lib_list} libffi7"
elif package_exists libffi6; then
  common_lib_list="${common_lib_list} libffi6"
fi

# Full list of required run-time libraries
lib_list="\
  $common_lib_list
  $chromeos_lib_list
"

# 32-bit libraries needed e.g. to compile V8 snapshot for Android or armhf
lib32_list="linux-libc-dev:i386 libpci3:i386"

# 32-bit libraries needed for a 32-bit build
lib32_list="$lib32_list libx11-xcb1:i386"

# Packages that have been removed from this script.  Regardless of configuration
# or options passed to this script, whenever a package is removed, it should be
# added here.
backwards_compatible_list="\
  7za
  fonts-indic
  fonts-ipafont
  fonts-stix
  fonts-thai-tlwg
  fonts-tlwg-garuda
  g++
  git-svn
  language-pack-da
  language-pack-fr
  language-pack-he
  language-pack-zh-hant
  libappindicator-dev
  libappindicator1
  libdconf-dev
  libdconf1
  libdconf1:i386
  libexif-dev
  libexif12
  libexif12:i386
  libgbm-dev
  libgconf-2-4:i386
  libgconf2-dev
  libgl1-mesa-dev
  libgl1-mesa-glx:i386
  libgles2-mesa-dev
  libgtk-3-0:i386
  libgtk2.0-0
  libgtk2.0-0:i386
  libgtk2.0-dev
  mesa-common-dev
  msttcorefonts
  ttf-dejavu-core
  ttf-indic-fonts
  ttf-kochi-gothic
  ttf-kochi-mincho
  ttf-mscorefonts-installer
  xfonts-mathml
"
if package_exists python-is-python2; then
  backwards_compatible_list="${backwards_compatible_list} python-dev"
fi

case $distro_codename in
  trusty)
    backwards_compatible_list+=" \
      libgbm-dev-lts-trusty
      libgl1-mesa-dev-lts-trusty
      libgl1-mesa-glx-lts-trusty:i386
      libgles2-mesa-dev-lts-trusty
      mesa-common-dev-lts-trusty"
    ;;
  xenial)
    backwards_compatible_list+=" \
      libgbm-dev-lts-xenial
      libgl1-mesa-dev-lts-xenial
      libgl1-mesa-glx-lts-xenial:i386
      libgles2-mesa-dev-lts-xenial
      mesa-common-dev-lts-xenial"
    ;;
esac

# arm cross toolchain packages needed to build chrome on armhf
arm_list="libc6-dev-armhf-cross
          linux-libc-dev-armhf-cross
          g++-arm-linux-gnueabihf"

# Work around for dependency issue Ubuntu/Trusty: http://crbug.com/435056
case $distro_...
Read more
Morty Proxy This is a proxified and sanitized view of the page, visit original site.