Chromium Code Reviews| Index: build/install-build-deps.sh |
| =================================================================== |
| --- build/install-build-deps.sh (revision 99910) |
| +++ build/install-build-deps.sh (working copy) |
| @@ -14,6 +14,8 @@ |
| echo "--[no-]syms: enable or disable installation of debugging symbols" |
| echo "--[no-]gold: enable or disable installation of gold linker" |
| echo "--[no-]lib32: enable or disable installation of 32 bit libraries" |
| + echo "--[no-]restore-usr-bin-ld: enable or disable restoring /usr/bin/ld to" |
| + echo " ld.bfd if it is currently gold" |
| echo "Script will prompt interactively if options not given." |
| exit 1 |
| } |
| @@ -21,12 +23,14 @@ |
| while test "$1" != "" |
| do |
| case "$1" in |
| - --syms) do_inst_syms=1;; |
| - --no-syms) do_inst_syms=0;; |
| - --gold) do_inst_gold=1;; |
| - --no-gold) do_inst_gold=0;; |
| - --lib32) do_inst_lib32=1;; |
| - --no-lib32) do_inst_lib32=0;; |
| + --syms) do_inst_syms=1;; |
| + --no-syms) do_inst_syms=0;; |
| + --gold) do_inst_gold=1;; |
| + --no-gold) do_inst_gold=0;; |
| + --lib32) do_inst_lib32=1;; |
| + --no-lib32) do_inst_lib32=0;; |
| + --restore-usr-bin-ld) do_restore_usr_bin_ld=1;; |
| + --no-restore-urs-bin-ld) do_restore_usr_bin_ld=0;; |
|
Evan Martin
2011/09/12 19:19:24
typo: usr
Lei Zhang
2011/09/12 22:00:09
Done.
|
| *) usage;; |
| esac |
| shift |
| @@ -59,20 +63,17 @@ |
| tar -xjvf $BINUTILS.tar.bz2 |
| cd $BINUTILS |
| - ./configure --prefix=/usr/local/gold --enable-gold --enable-threads |
| - make maybe-all-binutils maybe-all-gold -j4 |
| - if sudo make maybe-install-binutils maybe-install-gold |
| + ./configure --prefix=/usr/local/gold --enable-gold=default --enable-threads \ |
| + --enable-bfd=yes |
| + NCPU=`cat /proc/cpuinfo |grep ^processor|wc -l` |
| + make maybe-all-binutils maybe-all-gold maybe-all-ld -j${NCPU} |
| + if sudo make maybe-install-binutils maybe-install-gold maybe-install-ld |
| then |
| # Still need to figure out graceful way of pointing gyp to use |
| # /usr/local/gold/bin/ld without requiring him to set environment |
| - # variables. That will go into bootstrap-linux.sh when it's ready. |
| - echo "Installing gold as /usr/bin/ld." |
| - echo "To uninstall, do 'cd /usr/bin; sudo rm ld; sudo mv ld.orig ld'" |
| - test -f /usr/bin/ld && test ! -f /usr/bin/ld.orig && \ |
| - sudo mv /usr/bin/ld /usr/bin/ld.orig |
| - sudo strip /usr/local/gold/bin/ld |
| - sudo ln -fs /usr/local/gold/bin/ld /usr/bin/ld.gold |
| - sudo ln -fs /usr/bin/ld.gold /usr/bin/ld |
| + # variables. |
| + sudo strip /usr/local/gold/bin/ld.gold |
| + sudo strip /usr/local/gold/bin/ld.bfd |
| else |
| echo "make install failed, not installing gold" |
| fi |
| @@ -252,13 +253,60 @@ |
| # So install from source if we don't have a good version. |
| case `ld --version` in |
| +*gold*2.2[1-9].*) |
| + echo "*** Warning ***" |
| + echo "If the default linker is gold, linking may fail for:" |
| + echo "the Linux kernel, kernel modules, Valgrind, and Wine." |
| + echo "If you previously installed gold as the default linker," |
| + echo "you can restore the original linker by running:" |
| + echo "'cd /usr/bin; sudo rm ld; sudo mv ld.orig ld'" |
| + echo |
| + if [ "$do_restore_usr_bin_ld" = "" ] |
| + then |
| + echo -n "Automatically restore /usr/bin/ld to the original linker? (Y/n) " |
|
Evan Martin
2011/09/12 19:19:24
suggestion: s/Automatically r/R/
Lei Zhang
2011/09/12 22:00:09
Done.
|
| + if yes_no 0 |
| + then |
| + do_restore_usr_bin_ld=1 |
| + fi |
| + echo |
| + fi |
| + if [ "$do_restore_usr_bin_ld" = "1" ] |
| + then |
| + restore_success=0 |
| + sudo mv /usr/bin/ld.orig /usr/bin/ld && restore_success=1 |
| + if [ "$restore_success" = "1" ] |
|
Evan Martin
2011/09/12 19:19:24
Three lines above can become this, no?
if sudo mv
Lei Zhang
2011/09/12 22:00:09
Done.
|
| + then |
| + echo "Restored /usr/bin/ld.orig as /usr/bin/ld" |
| + else |
| + echo "Failed to restore /usr/bin/ld.orig as /usr/bin/ld" |
| + fi |
| + echo |
| + fi |
| + ;; |
| +esac |
| + |
| +# Check the gold version first. |
| +gold_up_to_date="1" |
| +case `/usr/local/gold/bin/ld --version` in |
| *gold*2.2[1-9].*) ;; |
| * ) |
| + gold_up_to_date="0" |
| +esac |
| + |
| +# Then check and make sure ld.bfd exists. |
| +if [ "$gold_up_to_date" = "1" ] && [ ! -x "/usr/local/gold/bin/ld.bfd" ] |
| +then |
| + gold_up_to_date="0" |
| +fi |
| + |
| +if [ "$gold_up_to_date" = "0" ] |
| +then |
| if test "$do_inst_gold" = "" |
| then |
| - echo "Gold is a new linker that links Chrome 5x faster than ld." |
| - echo "Don't use it if you need to link other apps (e.g. valgrind, wine)" |
| - echo -n "REPLACE SYSTEM LINKER ld with gold and back up ld? (y/N) " |
| + echo "Gold is a new linker that links Chrome 5x faster than GNU ld." |
| + echo -n "*** To use the gold linker, " |
| + echo "you must pass -B/usr/local/gold/bin/ to g++ ***" |
| + echo -n "Install the gold linker? (y/N) " |
| if yes_no 1; then |
| do_inst_gold=1 |
| fi |
| @@ -270,14 +318,13 @@ |
| echo "Installing binutils-gold. Backing up ld as ld.single." |
| sudo apt-get install binutils-gold |
| else |
| - # FIXME: avoid installing as /usr/bin/ld |
| - echo "Building binutils. Backing up ld as ld.orig." |
| + echo "Building binutils with gold..." |
| install_gold || exit 99 |
| fi |
| else |
| echo "Not installing gold." |
| fi |
| -esac |
| +fi |
| # Install 32bit backwards compatibility support for 64bit systems |
| if [ "$(uname -m)" = "x86_64" ]; then |