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 |