| OLD | NEW | 
|---|
| 1 #!/bin/sh | 1 #!/bin/sh | 
| 2 | 2 | 
| 3 # Copyright (c) 2009 The Chromium Authors. All rights reserved. | 3 # Copyright (c) 2009 The Chromium Authors. All rights reserved. | 
| 4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be | 
| 5 # found in the LICENSE file. | 5 # found in the LICENSE file. | 
| 6 | 6 | 
| 7 # Script to build valgrind for use with chromium | 7 # Script to build valgrind for use with chromium | 
| 8 # | 8 # | 
| 9 # Can also be used to just prepare patched source tarball with MAKE_TARBALL=yes | 9 # Can also be used to just prepare patched source tarball with MAKE_TARBALL=yes | 
| 10 # or to just build from a patched source tarball with USE_TARBALL=yes. | 10 # or to just build from a patched source tarball with USE_TARBALL=yes. | 
| 11 # These are useful when configuring jailed buildbots which are not allowed to | 11 # These are useful when configuring jailed buildbots which are not allowed to | 
| 12 # fetch valgrind source via svn.  Most users won't need those options. | 12 # fetch valgrind source via svn.  Most users won't need those options. | 
| 13 | 13 | 
| 14 # Checkout by date doesn't work unless you specify the friggin' timezone | 14 # Checkout by date doesn't work unless you specify the friggin' timezone | 
| 15 VALGRIND_SVN_REV=10880 | 15 VALGRIND_SVN_REV=10880 | 
| 16 # And svn isn't smart enough to figure out what rev of the linked tree to get | 16 # And svn isn't smart enough to figure out what rev of the linked tree to get | 
| 17 VEX_SVN_REV=1914 | 17 VEX_SVN_REV=1914 | 
| 18 # and TSAN may be out of sync, so you have to check that out by rev anyway | 18 # and TSAN may be out of sync, so you have to check that out by rev anyway | 
| 19 TSAN_SVN_REV=1129 | 19 TSAN_SVN_REV=1129 | 
| 20 | 20 | 
|  | 21 # suffix for build and install dir to denote our set of patches (may be empty) | 
|  | 22 PATCHLEVEL=-redzone | 
|  | 23 | 
|  | 24 DIRNAME=valgrind-${VALGRIND_SVN_REV}${PATCHLEVEL} | 
|  | 25 | 
| 21 THISDIR=$(dirname "${0}") | 26 THISDIR=$(dirname "${0}") | 
| 22 THISDIR=$(cd "${THISDIR}" && /bin/pwd) | 27 THISDIR=$(cd "${THISDIR}" && /bin/pwd) | 
| 23 | 28 | 
| 24 case "x${1}" in | 29 case "x${1}" in | 
| 25 x|x/*) ;; | 30 x|x/*) ;; | 
| 26 *) | 31 *) | 
| 27   echo "Usage: sh build-valgrind-for-chromium.sh [prefix]" | 32   echo "Usage: sh build-valgrind-for-chromium.sh [prefix]" | 
| 28   echo "Prefix is optional, but if present, must be the absolute path to where" | 33   echo "Prefix is optional, but if present, must be the absolute path to where" | 
| 29   echo "you want to install valgrind's bin, include, and lib directories." | 34   echo "you want to install valgrind's bin, include, and lib directories." | 
| 30   echo "Prefix defaults to /usr/local/valgrind-${VALGRIND_SVN_REV}, where" | 35   echo "Prefix defaults to /usr/local/$DIRNAME." | 
| 31   echo "${VALGRIND_SVN_REV} is the revision used when retrieving valgrind from s
     vn." |  | 
| 32   echo "Will use sudo to do the install if you don't own the parent of prefix." | 36   echo "Will use sudo to do the install if you don't own the parent of prefix." | 
| 33   exit 1 | 37   exit 1 | 
| 34   ;; | 38   ;; | 
| 35 esac | 39 esac | 
| 36 | 40 | 
| 37 set -x | 41 set -x | 
| 38 set -e | 42 set -e | 
| 39 | 43 | 
| 40 if test "x${USE_TARBALL}" = "xyes" && test "x${MAKE_TARBALL}" = "xyes" | 44 if test "x${USE_TARBALL}" = "xyes" && test "x${MAKE_TARBALL}" = "xyes" | 
| 41 then | 45 then | 
| 42   echo Set only one of MAKE_TARBALL or USE_TARBALL to yes | 46   echo Set only one of MAKE_TARBALL or USE_TARBALL to yes | 
| 43   exit 1 | 47   exit 1 | 
| 44 fi | 48 fi | 
| 45 | 49 | 
| 46 # Clean checkout our untar | 50 # Clean checkout our untar | 
| 47 rm -rf "valgrind-${VALGRIND_SVN_REV}" | 51 test -d "$DIRNAME" && rm -rf ./"$DIRNAME" | 
| 48 mkdir -p "valgrind-${VALGRIND_SVN_REV}" | 52 mkdir -p "$DIRNAME" | 
| 49 | 53 | 
| 50 if test "x${USE_TARBALL}" != "xyes" | 54 if test "x${USE_TARBALL}" != "xyes" | 
| 51 then | 55 then | 
| 52   # Check out latest version that following patches known to apply against | 56   # Check out latest version that following patches known to apply against | 
| 53   svn co -r "${VALGRIND_SVN_REV}" "svn://svn.valgrind.org/valgrind/trunk" "valgr
     ind-${VALGRIND_SVN_REV}" | 57   svn co -r "${VALGRIND_SVN_REV}" "svn://svn.valgrind.org/valgrind/trunk" "$DIRN
     AME" | 
| 54 | 58 | 
| 55   cd "valgrind-${VALGRIND_SVN_REV}" | 59   cd "$DIRNAME" | 
| 56 | 60 | 
| 57   # Make sure svn gets the right version of the external VEX repo, too | 61   # Make sure svn gets the right version of the external VEX repo, too | 
| 58   svn update -r "${VEX_SVN_REV}" VEX/ | 62   svn update -r "${VEX_SVN_REV}" VEX/ | 
| 59 | 63 | 
| 60   # Work around bug https://bugs.kde.org/show_bug.cgi?id=162848 | 64   # Work around bug https://bugs.kde.org/show_bug.cgi?id=162848 | 
| 61   # "fork() not handled properly" | 65   # "fork() not handled properly" | 
| 62   patch -p0 < "${THISDIR}/fork.patch" | 66   patch -p0 < "${THISDIR}/fork.patch" | 
| 63 | 67 | 
| 64   # Add feature bug https://bugs.kde.org/show_bug.cgi?id=201170 | 68   # Add feature bug https://bugs.kde.org/show_bug.cgi?id=201170 | 
| 65   # "Want --show-possible option so I can ignore the bazillion possible leaks...
     " | 69   # "Want --show-possible option so I can ignore the bazillion possible leaks...
     " | 
| 66   patch -p0 < "${THISDIR}/possible.patch" | 70   patch -p0 < "${THISDIR}/possible.patch" | 
| 67 | 71 | 
| 68   # Add feature bug https://bugs.kde.org/show_bug.cgi?id=205000 | 72   # Add feature bug https://bugs.kde.org/show_bug.cgi?id=205000 | 
| 69   # "Need library load address in log files" | 73   # "Need library load address in log files" | 
| 70   patch -p0 < "${THISDIR}/xml-loadadr.patch" | 74   patch -p0 < "${THISDIR}/xml-loadadr.patch" | 
| 71 | 75 | 
|  | 76   # Make red zone 64 bytes bigger to catch more buffer overruns | 
|  | 77   patch -p0 < "${THISDIR}/redzone.patch" | 
|  | 78 | 
| 72   if [ "${INSTALL_TSAN}" = "yes" ] | 79   if [ "${INSTALL_TSAN}" = "yes" ] | 
| 73   then | 80   then | 
| 74     # Add ThreadSanitier to the installation. | 81     # Add ThreadSanitier to the installation. | 
| 75     # ThreadSanitizer is an experimental dynamic data race detector. | 82     # ThreadSanitizer is an experimental dynamic data race detector. | 
| 76     # See http://code.google.com/p/data-race-test/wiki/ThreadSanitizer | 83     # See http://code.google.com/p/data-race-test/wiki/ThreadSanitizer | 
| 77     svn checkout -r "${TSAN_SVN_REV}" http://data-race-test.googlecode.com/svn/t
     runk/tsan tsan | 84     svn checkout -r "${TSAN_SVN_REV}" http://data-race-test.googlecode.com/svn/t
     runk/tsan tsan | 
| 78     mkdir tsan/tests | 85     mkdir tsan/tests | 
| 79     touch tsan/tests/Makefile.am | 86     touch tsan/tests/Makefile.am | 
| 80     patch -p 0 < tsan/valgrind.patch | 87     patch -p 0 < tsan/valgrind.patch | 
| 81   fi | 88   fi | 
| 82 | 89 | 
| 83   sh autogen.sh | 90   sh autogen.sh | 
| 84   if test -L install-sh | 91   if test -L install-sh | 
| 85   then | 92   then | 
| 86     # replace symlink with actual contents! | 93     # replace symlink with actual contents! | 
| 87     cp install-sh install-sh.new | 94     cp install-sh install-sh.new | 
| 88     mv install-sh.new install-sh | 95     mv -f install-sh.new install-sh | 
| 89     chmod +x install-sh | 96     chmod +x install-sh | 
| 90   fi | 97   fi | 
| 91 | 98 | 
| 92   # MacOSX before Snow Leopoard needs newer gdb to be able to handle -O1 chrome | 99   # MacOSX before Snow Leopoard needs newer gdb to be able to handle -O1 chrome | 
| 93   # Kludgily download and unpack the sources in a subdirectory. | 100   # Kludgily download and unpack the sources in a subdirectory. | 
| 94   if test `uname` = Darwin || test "x${MAKE_TARBALL}" = "xyes" | 101   if test `uname` = Darwin || test "x${MAKE_TARBALL}" = "xyes" | 
| 95   then | 102   then | 
| 96     curl http://www.opensource.apple.com/tarballs/gdb/gdb-1344.tar.gz | tar -xzf
      - | 103     curl http://www.opensource.apple.com/tarballs/gdb/gdb-1344.tar.gz | tar -xzf
      - | 
| 97   fi | 104   fi | 
| 98   cd .. | 105   cd .. | 
| 99 | 106 | 
| 100 fi | 107 fi | 
| 101 | 108 | 
| 102 if test "x${MAKE_TARBALL}" = "xyes" | 109 if test "x${MAKE_TARBALL}" = "xyes" | 
| 103 then | 110 then | 
| 104   tar -czvf "valgrind-${VALGRIND_SVN_REV}.tgz" "valgrind-${VALGRIND_SVN_REV}" | 111   tar -czvf "$DIRNAME".tgz "$DIRNAME" | 
| 105 fi | 112 fi | 
| 106 | 113 | 
| 107 if test "x${USE_TARBALL}" = "xyes" | 114 if test "x${USE_TARBALL}" = "xyes" | 
| 108 then | 115 then | 
| 109   tar -xzvf "valgrind-${VALGRIND_SVN_REV}.tgz" | 116   tar -xzvf "$DIRNAME".tgz | 
| 110 fi | 117 fi | 
| 111 | 118 | 
| 112 if test "x${MAKE_TARBALL}" != "xyes" | 119 if test "x${MAKE_TARBALL}" != "xyes" | 
| 113 then | 120 then | 
| 114   cd "valgrind-${VALGRIND_SVN_REV}" | 121   cd "$DIRNAME" | 
| 115 | 122 | 
| 116   OVERRIDE_LD_DIR="${THISDIR}/override_ld" | 123   OVERRIDE_LD_DIR="${THISDIR}/override_ld" | 
| 117   if ld --version | grep gold | 124   if ld --version | grep gold | 
| 118   then | 125   then | 
| 119     # build/install-build-deps leaves original ld around, try using that | 126     # build/install-build-deps leaves original ld around, try using that | 
| 120     if test -x /usr/bin/ld.orig | 127     if test -x /usr/bin/ld.orig | 
| 121     then | 128     then | 
| 122       echo "Using /usr/bin/ld.orig instead of gold to link valgrind" | 129       echo "Using /usr/bin/ld.orig instead of gold to link valgrind" | 
| 123       test -d "${OVERRIDE_LD_DIR}" && rm -rf "${OVERRIDE_LD_DIR}" | 130       test -d "${OVERRIDE_LD_DIR}" && rm -rf "${OVERRIDE_LD_DIR}" | 
| 124       mkdir "${OVERRIDE_LD_DIR}" | 131       mkdir "${OVERRIDE_LD_DIR}" | 
| 125       ln -s /usr/bin/ld.orig "${OVERRIDE_LD_DIR}/ld" | 132       ln -s /usr/bin/ld.orig "${OVERRIDE_LD_DIR}/ld" | 
| 126       PATH="${OVERRIDE_LD_DIR}:${PATH}" | 133       PATH="${OVERRIDE_LD_DIR}:${PATH}" | 
| 127     # Ubuntu diverts original ld to ld.single when it installs binutils-gold | 134     # Ubuntu diverts original ld to ld.single when it installs binutils-gold | 
| 128     elif test -x /usr/bin/ld.single | 135     elif test -x /usr/bin/ld.single | 
| 129     then | 136     then | 
| 130       echo "Using /usr/bin/ld.single instead of gold to link valgrind" | 137       echo "Using /usr/bin/ld.single instead of gold to link valgrind" | 
| 131       test -d "${OVERRIDE_LD_DIR}" && rm -rf "${OVERRIDE_LD_DIR}" | 138       test -d "${OVERRIDE_LD_DIR}" && rm -rf "${OVERRIDE_LD_DIR}" | 
| 132       mkdir "${OVERRIDE_LD_DIR}" | 139       mkdir "${OVERRIDE_LD_DIR}" | 
| 133       ln -s /usr/bin/ld.single "${OVERRIDE_LD_DIR}/ld" | 140       ln -s /usr/bin/ld.single "${OVERRIDE_LD_DIR}/ld" | 
| 134       PATH="${OVERRIDE_LD_DIR}:${PATH}" | 141       PATH="${OVERRIDE_LD_DIR}:${PATH}" | 
| 135     else | 142     else | 
| 136       echo "Cannot build valgrind with gold.  Please switch to normal /usr/bin/l
     d, rerun this script, then switch back to gold." | 143       echo "Cannot build valgrind with gold.  Please switch to normal /usr/bin/l
     d, rerun this script, then switch back to gold." | 
| 137       exit 1 | 144       exit 1 | 
| 138     fi | 145     fi | 
| 139   fi | 146   fi | 
| 140 | 147 | 
| 141   # Desired parent directory for valgrind's bin, include, etc. | 148   # Desired parent directory for valgrind's bin, include, etc. | 
| 142   PREFIX="${1:-/usr/local/valgrind-${VALGRIND_SVN_REV}}" | 149   PREFIX="${1:-/usr/local/$DIRNAME}" | 
| 143   parent_of_prefix=$(dirname "${PREFIX}") | 150   parent_of_prefix=$(dirname "${PREFIX}") | 
| 144   if test ! -d "${parent_of_prefix}" | 151   if test ! -d "${parent_of_prefix}" | 
| 145   then | 152   then | 
| 146     echo "Directory ${parent_of_prefix} does not exist" | 153     echo "Directory ${parent_of_prefix} does not exist" | 
| 147     exit 1 | 154     exit 1 | 
| 148   fi | 155   fi | 
| 149 | 156 | 
| 150   ./configure --prefix="${PREFIX}" | 157   ./configure --prefix="${PREFIX}" | 
| 151   make -j4 | 158   make -j4 | 
| 152 | 159 | 
| (...skipping 23 matching lines...) Expand all  Loading... | 
| 176     if test -w "${parent_of_prefix}" | 183     if test -w "${parent_of_prefix}" | 
| 177     then | 184     then | 
| 178        make install | 185        make install | 
| 179     else | 186     else | 
| 180        sudo make install | 187        sudo make install | 
| 181     fi | 188     fi | 
| 182     ;; | 189     ;; | 
| 183   esac | 190   esac | 
| 184   cd .. | 191   cd .. | 
| 185 fi | 192 fi | 
| OLD | NEW | 
|---|