Lines Matching +full:binutils +full:- +full:mingw +full:- +full:w64
1 #!/bin/bash -e
4 # Use of this source code is governed by a BSD-style license that can be
13 echo "Usage: $0 [--options]"
15 echo "--[no-]syms: enable or disable installation of debugging symbols"
16 echo "--lib32: enable installation of 32-bit libraries, e.g. for V8 snapshot"
17 echo "--[no-]android: enable or disable installation of android dependencies"
18 echo "--[no-]arm: enable or disable installation of arm cross toolchain"
19 echo "--[no-]chromeos-fonts: enable or disable installation of Chrome OS"\
21 echo "--[no-]nacl: enable or disable installation of prerequisites for"\
23 echo "--[no-]backwards-compatible: enable or disable installation of packages
26 echo "--no-prompt: silently select standard options/defaults"
27 echo "--quick-check: quickly try to determine if dependencies are installed"
30 echo "--unsupported: attempt installation even on unsupported systems"
35 # Build list of apt packages in dpkg --get-selections format.
38 apt-cache dumpavail | \
39 python3 -c 'import re,sys; \
49 # Uses pre-formatted ${apt_package_list}.
52 if [ -z "${apt_package_list}" ]; then
58 local escaped="$(echo $1 | sed 's/[\~\+\.\:-]/\\&/g')"
59 [ ! -z "$(grep "^${escaped}$" <<< "${apt_package_list}")" ]
69 --syms) do_inst_syms=1;;
70 --no-syms) do_inst_syms=0;;
71 --lib32) do_inst_lib32=1;;
72 --android) do_inst_android=1;;
73 --no-android) do_inst_android=0;;
74 --arm) do_inst_arm=1;;
75 --no-arm) do_inst_arm=0;;
76 --chromeos-fonts) do_inst_chromeos_fonts=1;;
77 --no-chromeos-fonts) do_inst_chromeos_fonts=0;;
78 --nacl) do_inst_nacl=1;;
79 --no-nacl) do_inst_nacl=0;;
80 --backwards-compatible) do_inst_backwards_compatible=1;;
81 --no-backwards-compatible) do_inst_backwards_compatible=0;;
82 --add-cross-tool-repo) add_cross_tool_repo=1;;
83 --no-prompt) do_default=1
84 do_quietly="-qq --assume-yes"
86 --quick-check) do_quick_check=1;;
87 --unsupported) do_unsupported=1;;
104 echo "try: sudo apt-get install lsb-release" >&2
108 distro_codename=$(lsb_release --codename --short)
109 distro_id=$(lsb_release --id --short)
112 if [ 0 -eq "${do_unsupported-0}" ] && [ 0 -eq "${do_quick_check-0}" ] ; then
115 echo -e "WARNING: The following distributions are supported,
117 dependencies by passing the `--unsupported` parameter\n" \
126 if ! uname -m | egrep -q "i686|x86_64"; then
132 if [ "x$(id -u)" != x0 ] && [ 0 -eq "${do_quick_check-0}" ]; then
133 echo "Running as non-root user."
138 if [ 0 -eq "${do_quick_check-0}" ] ; then
140 sudo dpkg --add-architecture i386
142 sudo apt-get update
149 chromeos_dev_list="libbluetooth-dev libxkbcommon-dev mesa-common-dev zstd"
157 binutils
162 dbus-x11
163 dpkg-dev
168 git-core
170 libasound2-dev
171 libatspi2.0-dev
172 libbrlapi-dev
173 libbz2-dev
174 libcairo2-dev
175 libcap-dev
176 libc6-dev
177 libcups2-dev
178 libcurl4-gnutls-dev
179 libdrm-dev
180 libelf-dev
181 libevdev-dev
182 libffi-dev
183 libgbm-dev
184 libglib2.0-dev
185 libglu1-mesa-dev
186 libgtk-3-dev
187 libkrb5-dev
188 libnspr4-dev
189 libnss3-dev
190 libpam0g-dev
191 libpci-dev
192 libpulse-dev
193 libsctp-dev
194 libspeechd-dev
195 libsqlite3-dev
196 libssl-dev
197 libsystemd-dev
198 libudev-dev
199 libva-dev
200 libwww-perl
201 libxshmfence-dev
202 libxslt1-dev
203 libxss-dev
204 libxt-dev
205 libxtst-dev
212 pkg-config
216 uuid-dev
218 x11-utils
220 xz-utils
225 # 64-bit systems need a minimum set of 32-bit compat packages for the pre-built
227 if file -L /sbin/init | grep -q 'ELF 64-bit'; then
228 dev_list="${dev_list} libc6-i386 lib32stdc++6"
230 # lib32gcc-s1 used to be called lib32gcc1 in older distros.
231 if package_exists lib32gcc-s1; then
232 dev_list="${dev_list} lib32gcc-s1"
238 # Run-time libraries required by chromeos only
239 chromeos_lib_list="libpulse0 libbz2-1.0"
241 # List of required run-time libraries
245 libatk1.0-0
246 libatspi2.0-0
250 libcgi-session-perl
259 libglib2.0-0
261 libgtk-3-0
264 libpango-1.0-0
265 libpangocairo-1.0-0
268 libpixman-1-0
271 libsqlite3-0
273 libwayland-egl1
274 libwayland-egl1-mesa
275 libx11-6
276 libx11-xcb1
290 x11-utils
303 # Full list of required run-time libraries
309 # 32-bit libraries needed e.g. to compile V8 snapshot for Android or armhf
310 lib32_list="linux-libc-dev:i386 libpci3:i386"
312 # 32-bit libraries needed for a 32-bit build
313 # includes some 32-bit libraries required by the Android SDK
317 libatk-bridge2.0-0:i386
318 libatk1.0-0:i386
319 libatspi2.0-0:i386
320 libdbus-1-3:i386
323 libglib2.0-0:i386
326 libpango-1.0-0:i386
327 libpangocairo-1.0-0:i386
329 libwayland-egl1:i386
330 libx11-xcb1:i386
344 fonts-indic
345 fonts-ipafont
346 fonts-stix
347 fonts-thai-tlwg
348 fonts-tlwg-garuda
350 g++-4.8-multilib-arm-linux-gnueabihf
351 gcc-4.8-multilib-arm-linux-gnueabihf
352 g++-9-multilib-arm-linux-gnueabihf
353 gcc-9-multilib-arm-linux-gnueabihf
354 gcc-arm-linux-gnueabihf
355 g++-10-multilib-arm-linux-gnueabihf
356 gcc-10-multilib-arm-linux-gnueabihf
357 g++-10-arm-linux-gnueabihf
358 gcc-10-arm-linux-gnueabihf
359 git-svn
360 language-pack-da
361 language-pack-fr
362 language-pack-he
363 language-pack-zh-hant
364 libappindicator-dev
366 libappindicator3-1
367 libappindicator3-dev
368 libdconf-dev
371 libexif-dev
374 libgbm-dev
375 libgbm-dev-lts-trusty
376 libgbm-dev-lts-xenial
377 libgconf-2-4:i386
378 libgconf2-dev
379 libgl1-mesa-dev
380 libgl1-mesa-dev-lts-trusty
381 libgl1-mesa-dev-lts-xenial
382 libgl1-mesa-glx:i386
383 libgl1-mesa-glx-lts-trusty:i386
384 libgl1-mesa-glx-lts-xenial:i386
385 libgles2-mesa-dev
386 libgles2-mesa-dev-lts-trusty
387 libgles2-mesa-dev-lts-xenial
388 libgtk-3-0:i386
389 libgtk2.0-0
390 libgtk2.0-0:i386
391 libgtk2.0-dev
392 mesa-common-dev
393 mesa-common-dev-lts-trusty
394 mesa-common-dev-lts-xenial
396 python-dev
397 python-setuptools
398 ttf-dejavu-core
399 ttf-indic-fonts
400 ttf-kochi-gothic
401 ttf-kochi-mincho
402 ttf-mscorefonts-installer
403 xfonts-mathml
406 if package_exists python-is-python2; then
407 backwards_compatible_list="${backwards_compatible_list} python-is-python2 python2-dev"
412 if package_exists python-crypto; then
413 backwards_compatible_list="${backwards_compatible_list} python-crypto"
416 if package_exists python-numpy; then
417 backwards_compatible_list="${backwards_compatible_list} python-numpy"
420 if package_exists python-openssl; then
421 backwards_compatible_list="${backwards_compatible_list} python-openssl"
424 if package_exists python-psutil; then
425 backwards_compatible_list="${backwards_compatible_list} python-psutil"
428 if package_exists python-yaml; then
429 backwards_compatible_list="${backwards_compatible_list} python-yaml"
431 if package_exists apache2.2-bin; then
432 backwards_compatible_list="${backwards_compatible_list} apache2.2-bin"
434 backwards_compatible_list="${backwards_compatible_list} apache2-bin"
436 if package_exists php8.1-cgi; then
437 backwards_compatible_list="${backwards_compatible_list} php8.1-cgi libapache2-mod-php8.1"
438 elif package_exists php8.0-cgi; then
439 backwards_compatible_list="${backwards_compatible_list} php8.0-cgi libapache2-mod-php8.0"
440 elif package_exists php7.4-cgi; then
441 backwards_compatible_list="${backwards_compatible_list} php7.4-cgi libapache2-mod-php7.4"
442 elif package_exists php7.3-cgi; then
443 backwards_compatible_list="${backwards_compatible_list} php7.3-cgi libapache2-mod-php7.3"
444 elif package_exists php7.2-cgi; then
445 backwards_compatible_list="${backwards_compatible_list} php7.2-cgi libapache2-mod-php7.2"
446 elif package_exists php7.1-cgi; then
447 backwards_compatible_list="${backwards_compatible_list} php7.1-cgi libapache2-mod-php7.1"
448 elif package_exists php7.0-cgi; then
449 backwards_compatible_list="${backwards_compatible_list} php7.0-cgi libapache2-mod-php7.0"
450 elif package_exists php8.0-cgi; then
451 backwards_compatible_list="${backwards_compatible_list} php8.0-cgi libapache2-mod-php8.0"
453 backwards_compatible_list="${backwards_compatible_list} php5-cgi libapache2-mod-php5"
457 arm_list="libc6-dev-armhf-cross
458 linux-libc-dev-armhf-cross
459 g++-arm-linux-gnueabihf"
464 arm_list+=" g++-5-multilib-arm-linux-gnueabihf
465 gcc-5-multilib-arm-linux-gnueabihf
466 gcc-arm-linux-gnueabihf"
469 arm_list+=" g++-10-multilib-arm-linux-gnueabihf
470 gcc-10-multilib-arm-linux-gnueabihf
471 gcc-arm-linux-gnueabihf"
474 arm_list+=" gcc-arm-linux-gnueabihf
475 g++-11-arm-linux-gnueabihf
476 gcc-11-arm-linux-gnueabihf"
481 naclports_list="ant autoconf bison cmake gawk intltool xutils-dev xsltproc"
483 g++-mingw-w64-i686
484 lib32z1-dev
487 libelf-dev:i386
489 libglib2.0-0:i386
492 lib32ncurses5-dev
494 libpango-1.0-0:i386
495 libssl-dev:i386
496 libtinfo-dev
497 libtinfo-dev:i386
513 if package_exists libssl-dev; then
514 nacl_list="${nacl_list} libssl-dev:i386"
525 if package_exists libpng16-16; then
526 lib_list="${lib_list} libpng16-16"
528 lib_list="${lib_list} libpng12-0"
533 lib_list="${lib_list} libnspr4-0d libnss3-1d"
535 if package_exists libjpeg-dev; then
536 dev_list="${dev_list} libjpeg-dev"
538 dev_list="${dev_list} libjpeg62-dev"
556 if package_exists libav-tools; then
557 dev_list="${dev_list} libav-tools"
562 if package_exists appmenu-gtk; then
563 lib_list="$lib_list appmenu-gtk"
565 if package_exists libgnome-keyring0; then
566 lib_list="${lib_list} libgnome-keyring0"
568 if package_exists libgnome-keyring-dev; then
569 lib_list="${lib_list} libgnome-keyring-dev"
571 if package_exists libvulkan-dev; then
572 dev_list="${dev_list} libvulkan-dev"
580 if package_exists libinput-dev; then
581 dev_list="${dev_list} libinput-dev"
587 # Cross-toolchain strip is needed for building the sysroots.
588 if package_exists binutils-arm-linux-gnueabihf; then
589 dev_list="${dev_list} binutils-arm-linux-gnueabihf"
591 if package_exists binutils-aarch64-linux-gnu; then
592 dev_list="${dev_list} binutils-aarch64-linux-gnu"
594 if package_exists binutils-mipsel-linux-gnu; then
595 dev_list="${dev_list} binutils-mipsel-linux-gnu"
597 if package_exists binutils-mips64el-linux-gnuabi64; then
598 dev_list="${dev_list} binutils-mips64el-linux-gnuabi64"
601 # When cross building for arm/Android on 64-bit systems the host binaries
602 # that are part of v8 need to be compiled with -m32 which means
604 if file -L /sbin/init | grep -q 'ELF 64-bit'; then
605 # gcc-multilib conflicts with the arm cross compiler but
606 # g++-X.Y-multilib gives us the 32-bit support that we need. Find out the
608 # distribution's g++-multilib package depends on.
609 multilib_package=$(apt-cache depends g++-multilib --important | \
610 grep -E --color=never --only-matching '\bg\+\+-[0-9.]+-multilib\b')
618 # have the -dbgsym suffix (https://wiki.debian.org/AutomaticDebugPackages).
619 # Untransitioned packages have the -dbg suffix. And on some systems, neither
622 if package_exists "$1-dbgsym"; then
623 echo "$1-dbgsym"
624 elif package_exists "$1-dbg"; then
625 echo "$1-dbg"
635 if package_exists libstdc++6-8-dbg; then
636 dbg_list="${dbg_list} libstdc++6-8-dbg"
637 elif package_exists libstdc++6-7-dbg; then
638 dbg_list="${dbg_list} libstdc++6-7-dbg"
639 elif package_exists libstdc++6-6-dbg; then
640 dbg_list="${dbg_list} libstdc++6-6-dbg"
641 elif package_exists libstdc++6-5-dbg; then
642 dbg_list="${dbg_list} libstdc++6-5-dbg"
643 elif package_exists libstdc++6-4.9-dbg; then
644 dbg_list="${dbg_list} libstdc++6-4.9-dbg"
645 elif package_exists libstdc++6-4.8-dbg; then
646 dbg_list="${dbg_list} libstdc++6-4.8-dbg"
647 elif package_exists libstdc++6-4.7-dbg; then
648 dbg_list="${dbg_list} libstdc++6-4.7-dbg"
649 elif package_exists libstdc++6-4.6-dbg; then
650 dbg_list="${dbg_list} libstdc++6-4.6-dbg"
653 if [ "$(dbg_package_name libatk1.0-0)" == "" ]; then
656 if [ "$(dbg_package_name libpango-1.0-0)" == "" ]; then
657 dbg_list="$dbg_list $(dbg_package_name libpango1.0-dev)"
665 echo "Including 32-bit libraries."
667 echo "Skipping 32-bit libraries."
701 # The `sort -r -s -t: -k2` sorts all the :i386 packages to the front, to avoid
702 # confusing dpkg-query (crbug.com/446172).
706 sort -u | sort -r -s -t: -k2 | tr "\n" " "
709 if [ 1 -eq "${do_quick_check-0}" ] ; then
710 if ! missing_packages="$(dpkg-query -W -f ' ' ${packages} 2>&1)"; then
718 if apt-cache show ${p} > /dev/null 2>&1; then
724 if [ -n "${not_installed}" ]; then
726 echo -e "${not_installed}" | sed -e "s/^/ /"
728 if [ -n "${unknown}" ]; then
730 echo "(maybe missing a repo or need to 'sudo apt-get update'):"
731 echo -e "${unknown}" | sed -e "s/^/ /"
742 query_cmd="apt-get --just-print install $(echo $packages)"
745 sed -e '1,/The following NEW packages will be installed:/d;s/^ //;t;d' |
748 sed -e '1,/The following packages will be upgraded:/d;s/^ //;t;d' |
750 if [ -z "$new_list" ] && [ -z "$upgrade_list" ]; then
754 sudo apt-get install ${do_quietly-} ${new_list} ${upgrade_list}
758 # An apt-get exit status of 100 indicates that a real error has occurred.
773 # apt-get, since install-chromeos-fonts depends on curl.
777 dir=`echo $0 | sed -r -e 's/\/[^/]+$//'`
778 if ! sudo $dir/linux/install-chromeos-fonts.py; then
780 if [ `stat -f -c %T $dir` == "nfs" ]; then
787 echo "the command line option: --no-chromeos-fonts."
795 CHROMIUM_LOCALES="da_DK.UTF-8 fr_FR.UTF-8 he_IL.UTF-8 zh_TW.UTF-8"
797 if [ -e ${LOCALE_GEN} ]; then
800 sudo sed -i "s/^# ${CHROMIUM_LOCALE}/${CHROMIUM_LOCALE}/" ${LOCALE_GEN}
803 if (echo "${OLD_LOCALE_GEN}" | cmp -s ${LOCALE_GEN}); then
804 echo "Locales already up-to-date."
806 sudo locale-gen
810 sudo locale-gen ${CHROMIUM_LOCALE}