Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(163)

Unified Diff: build/install-build-deps.sh

Issue 472863002: Remove lib32 code from install-build-deps.sh (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698