Chromium Code Reviews| Index: build/install-build-deps.sh |
| diff --git a/build/install-build-deps.sh b/build/install-build-deps.sh |
| index 15e0dfeb93043689d6c70324ec82f66e8ad002c8..686f1cbb84adf2cdf621b8222abe91cecec5d45e 100755 |
| --- a/build/install-build-deps.sh |
| +++ b/build/install-build-deps.sh |
| @@ -12,7 +12,6 @@ usage() { |
| echo "Usage: $0 [--options]" |
| echo "Options:" |
| echo "--[no-]syms: enable or disable installation of debugging symbols" |
| - echo "--[no-]lib32: enable or disable installation of 32 bit libraries" |
| echo "--[no-]arm: enable or disable installation of arm cross toolchain" |
| echo "--[no-]chromeos-fonts: enable or disable installation of Chrome OS"\ |
| "fonts" |
| @@ -45,6 +44,7 @@ do |
| case "$1" in |
| --syms) do_inst_syms=1;; |
| --no-syms) do_inst_syms=0;; |
| + # TODO(phajdan.jr): Remove the lib32 flags when nothing else refers to them. |
|
Michael Moss
2014/08/14 14:59:14
I'd almost like to see it fail here, so we can fin
Paweł Hajdan Jr.
2014/08/18 11:49:45
That's why I sent a chromium-dev e-mail.
I think
Michael Moss
2014/08/18 15:53:21
Hence my first sentence where I said I'd like to s
|
| --lib32) do_inst_lib32=1;; |
| --no-lib32) do_inst_lib32=0;; |
| --arm) do_inst_arm=1;; |
| @@ -110,8 +110,7 @@ dev_list="apache2.2-bin bison curl dpkg-dev elfutils devscripts fakeroot flex |
| wdiff xfonts-mathml zip $chromeos_dev_list" |
| # 64-bit systems need a minimum set of 32-bit compat packages for the pre-built |
| -# NaCl binaries. These are always needed, regardless of whether or not we want |
| -# the full 32-bit "cross-compile" support (--lib32). |
| +# NaCl binaries. |
| if file /sbin/init | grep -q 'ELF 64-bit'; then |
| dev_list="${dev_list} libc6-i386 lib32gcc1 lib32stdc++6" |
| fi |
| @@ -405,216 +404,3 @@ if test "$do_inst_nacl" = "1"; then |
| else |
| echo "Skipping symbolic links for NaCl." |
| fi |
| - |
| -# Install 32bit backwards compatibility support for 64bit systems |
| -if file /sbin/init | grep -q 'ELF 64-bit'; then |
| - if test "$do_inst_lib32" != "1" |
| - then |
| - echo "NOTE: If you were expecting the option to install 32bit libs," |
| - echo "please run with the --lib32 flag." |
| - echo |
| - echo "Installation complete." |
| - exit 0 |
| - else |
| - # This conditional statement has been added to deprecate and eventually |
| - # remove support for 32bit libraries on 64bit systems. But for the time |
| - # being, we still have to support a few legacy systems (e.g. bots), where |
| - # this feature is needed. |
| - # We only even give the user the option to install these libraries, if |
| - # they explicitly requested doing so by setting the --lib32 command line |
| - # flag. |
| - # And even then, we interactively ask them one more time whether they are |
| - # absolutely sure. |
| - # In order for that to work, we must reset the ${do_inst_lib32} variable. |
| - # There are other ways to achieve the same goal. But resetting the |
| - # variable is the best way to document the intended behavior -- and to |
| - # allow us to gradually deprecate and then remove the obsolete code. |
| - if test "${do_default-0}" -ne 1; then |
| - do_inst_lib32= |
| - fi |
| - fi |
| - |
| - echo "WARNING" |
| - echo |
| - echo "We no longer recommend that you use this script to install" |
| - echo "32bit libraries on a 64bit system. Instead, consider using the" |
| - echo "install-chroot.sh script to help you set up a 32bit environment" |
| - echo "for building and testing 32bit versions of Chrome." |
| - echo |
| - echo "The code for installing 32bit libraries on a 64bit system is" |
| - echo "unmaintained and might not work with modern versions of Ubuntu" |
| - echo "or Debian." |
| - if test "$do_inst_lib32" != "" ; then |
| - echo |
| - echo -n "Are you sure you want to proceed (y/N) " |
| - if yes_no 1; then |
| - do_inst_lib32=1 |
| - fi |
| - fi |
| - if test "$do_inst_lib32" != "1" |
| - then |
| - exit 0 |
| - fi |
| - |
| - # Standard 32bit compatibility libraries |
| - echo "First, installing the limited existing 32-bit support..." |
| - cmp_list="ia32-libs lib32asound2-dev lib32stdc++6 lib32z1 |
| - lib32z1-dev libc6-dev-i386 libc6-i386 g++-multilib" |
| - if [ -n "`apt-cache search lib32readline-gplv2-dev 2>/dev/null`" ]; then |
| - cmp_list="${cmp_list} lib32readline-gplv2-dev" |
| - else |
| - cmp_list="${cmp_list} lib32readline5-dev" |
| - fi |
| - sudo apt-get install ${do_quietly-} $cmp_list |
| - |
| - tmp=/tmp/install-32bit.$$ |
| - trap 'rm -rf "${tmp}"' EXIT INT TERM QUIT |
| - mkdir -p "${tmp}/apt/lists/partial" "${tmp}/cache" "${tmp}/partial" |
| - touch "${tmp}/status" |
| - |
| - [ -r /etc/apt/apt.conf ] && cp /etc/apt/apt.conf "${tmp}/apt/" |
| - cat >>"${tmp}/apt/apt.conf" <<EOF |
| - Apt::Architecture "i386"; |
| - Dir::Cache "${tmp}/cache"; |
| - Dir::Cache::Archives "${tmp}/"; |
| - Dir::State::Lists "${tmp}/apt/lists/"; |
| - Dir::State::status "${tmp}/status"; |
| -EOF |
| - |
| - # Download 32bit packages |
| - echo "Computing list of available 32bit packages..." |
| - sudo apt-get -c="${tmp}/apt/apt.conf" update |
| - |
| - echo "Downloading available 32bit packages..." |
| - sudo apt-get -c="${tmp}/apt/apt.conf" \ |
| - --yes --download-only --force-yes --reinstall install \ |
| - ${lib_list} ${dbg_list} |
| - |
| - # Open packages, remove everything that is not a library, move the |
| - # library to a lib32 directory and package everything as a *.deb file. |
| - echo "Repackaging and installing 32bit packages for use on 64bit systems..." |
| - for i in ${lib_list} ${dbg_list}; do |
| - orig="$(echo "${tmp}/${i}"_*_i386.deb)" |
| - compat="$(echo "${orig}" | |
| - sed -e 's,\(_[^_/]*_\)i386\(.deb\),-ia32\1amd64\2,')" |
| - rm -rf "${tmp}/staging" |
| - msg="$(fakeroot -u sh -exc ' |
| - # Unpack 32bit Debian archive |
| - umask 022 |
| - mkdir -p "'"${tmp}"'/staging/dpkg/DEBIAN" |
| - cd "'"${tmp}"'/staging" |
| - ar x "'${orig}'" |
| - tar Cfx dpkg data.tar* |
| - tar zCfx dpkg/DEBIAN control.tar.gz |
| - |
| - # Create a posix extended regular expression fragment that will |
| - # recognize the includes which have changed. Should be rare, |
| - # will almost always be empty. |
| - includes=`sed -n -e "s/^[0-9a-z]* //g" \ |
| - -e "\,usr/include/,p" dpkg/DEBIAN/md5sums | |
| - xargs -n 1 -I FILE /bin/sh -c \ |
| - "cmp -s dpkg/FILE /FILE || echo FILE" | |
| - tr "\n" "|" | |
| - sed -e "s,|$,,"` |
| - |
| - # If empty, set it to not match anything. |
| - test -z "$includes" && includes="^//" |
| - |
| - # Turn the conflicts into an extended RE for removal from the |
| - # Provides line. |
| - conflicts=`sed -n -e "/Conflicts/s/Conflicts: *//;T;s/, */|/g;p" \ |
| - dpkg/DEBIAN/control` |
| - |
| - # Rename package, change architecture, remove conflicts and dependencies |
| - sed -r -i \ |
| - -e "/Package/s/$/-ia32/" \ |
| - -e "/Architecture/s/:.*$/: amd64/" \ |
| - -e "/Depends/s/:.*/: ia32-libs/" \ |
| - -e "/Provides/s/($conflicts)(, *)?//g;T1;s/, *$//;:1" \ |
| - -e "/Recommends/d" \ |
| - -e "/Conflicts/d" \ |
| - dpkg/DEBIAN/control |
| - |
| - # Only keep files that live in "lib" directories or the includes |
| - # that have changed. |
| - sed -r -i \ |
| - -e "/\/lib64\//d" -e "/\/.?bin\//d" \ |
| - -e "\,$includes,s,[ /]include/,&32/,g;s,include/32/,include32/,g" \ |
| - -e "s, lib/, lib32/,g" \ |
| - -e "s,/lib/,/lib32/,g" \ |
| - -e "t;d" \ |
| - -e "\,^/usr/lib32/debug\(.*/lib32\),s,^/usr/lib32/debug,/usr/lib/debug," \ |
| - dpkg/DEBIAN/md5sums |
| - |
| - # Re-run ldconfig after installation/removal |
| - { echo "#!/bin/sh"; echo "[ \"x\$1\" = xconfigure ]&&ldconfig||:"; } \ |
| - >dpkg/DEBIAN/postinst |
| - { echo "#!/bin/sh"; echo "[ \"x\$1\" = xremove ]&&ldconfig||:"; } \ |
| - >dpkg/DEBIAN/postrm |
| - chmod 755 dpkg/DEBIAN/postinst dpkg/DEBIAN/postrm |
| - |
| - # Remove any other control files |
| - find dpkg/DEBIAN -mindepth 1 "(" -name control -o -name md5sums -o \ |
| - -name postinst -o -name postrm ")" -o -print | |
| - xargs -r rm -rf |
| - |
| - # Remove any files/dirs that live outside of "lib" directories, |
| - # or are not in our list of changed includes. |
| - find dpkg -mindepth 1 -regextype posix-extended \ |
| - "(" -name DEBIAN -o -name lib -o -regex "dpkg/($includes)" ")" \ |
| - -prune -o -print | tac | |
| - xargs -r -n 1 sh -c "rm \$0 2>/dev/null || rmdir \$0 2>/dev/null || : " |
| - find dpkg -name lib64 -o -name bin -o -name "?bin" | |
| - tac | xargs -r rm -rf |
| - |
| - # Remove any symbolic links that were broken by the above steps. |
| - find -L dpkg -type l -print | tac | xargs -r rm -rf |
| - |
| - # Rename lib to lib32, but keep debug symbols in /usr/lib/debug/usr/lib32 |
| - # That is where gdb looks for them. |
| - find dpkg -type d -o -path "*/lib/*" -print | |
| - xargs -r -n 1 sh -c " |
| - i=\$(echo \"\${0}\" | |
| - sed -e s,/lib/,/lib32/,g \ |
| - -e s,/usr/lib32/debug\\\\\(.*/lib32\\\\\),/usr/lib/debug\\\\1,); |
| - mkdir -p \"\${i%/*}\"; |
| - mv \"\${0}\" \"\${i}\"" |
| - |
| - # Rename include to include32. |
| - [ -d "dpkg/usr/include" ] && mv "dpkg/usr/include" "dpkg/usr/include32" |
| - |
| - # Prune any empty directories |
| - find dpkg -type d | tac | xargs -r -n 1 rmdir 2>/dev/null || : |
| - |
| - # Create our own Debian package |
| - cd .. |
| - dpkg --build staging/dpkg .' 2>&1)" |
| - compat="$(eval echo $(echo "${compat}" | |
| - sed -e 's,_[^_/]*_amd64.deb,_*_amd64.deb,'))" |
| - [ -r "${compat}" ] || { |
| - echo "${msg}" >&2 |
| - echo "Failed to build new Debian archive!" >&2 |
| - exit 1 |
| - } |
| - |
| - msg="$(sudo dpkg -i "${compat}" 2>&1)" && { |
| - echo "Installed ${compat##*/}" |
| - } || { |
| - # echo "${msg}" >&2 |
| - echo "Skipped ${compat##*/}" |
| - } |
| - done |
| - |
| - # Add symbolic links for developing 32bit code |
| - echo "Adding missing symbolic links, enabling 32bit code development..." |
| - for i in $(find /lib32 /usr/lib32 -maxdepth 1 -name \*.so.\* | |
| - sed -e 's/[.]so[.][0-9].*/.so/' | |
| - sort -u); do |
| - [ "x${i##*/}" = "xld-linux.so" ] && continue |
| - [ -r "$i" ] && continue |
| - j="$(ls "$i."* | sed -e 's/.*[.]so[.]\([^.]*\)$/\1/;t;d' | |
| - sort -n | tail -n 1)" |
| - [ -r "$i.$j" ] || continue |
| - sudo ln -s "${i##*/}.$j" "$i" |
| - done |
| -fi |