Chromium Code Reviews| Index: third_party/instrumented_libraries/download_build_install |
| =================================================================== |
| --- third_party/instrumented_libraries/download_build_install (revision 0) |
| +++ third_party/instrumented_libraries/download_build_install (revision 0) |
| @@ -0,0 +1,103 @@ |
| +#!/bin/bash |
|
Alexander Potapenko
2013/10/29 13:36:11
A Bash script still needs the copyright text. For
alextaran1
2013/10/30 11:16:29
Done.
|
| +# |
| +# Downloads, builds (with instrumentation) and installs shared libraries |
|
Alexander Potapenko
2013/10/29 13:36:11
Period at the end of the comment.
alextaran1
2013/10/30 11:16:29
Done.
|
| + |
| +export CFLAGS="-fsanitize=address -g -fPIC -w" |
|
Alexander Potapenko
2013/10/29 13:36:11
We must potentially support other -fsanitize= flag
alextaran1
2013/10/30 11:16:29
Added "sanitizer" flag to script
|
| +export CXXFLAGS="-fsanitize=address -g -fPIC -w" |
| +export LDFLAGS="-Wl,-z,origin -Wl,-R,XORIGIN/." |
| + |
| +# Should be without spaces to pass it to dpkg-buildpackage! |
| +MAKEJOBS="-j14" |
| + |
| +# Colored print |
|
Alexander Potapenko
2013/10/29 13:36:11
Doesn't ninja swallow your colored print?
alextaran1
2013/10/30 11:16:29
It works good :)
|
| + |
| +RED_COLOR='\e[0;31m' |
| +GREEN_COLOR='\e[0;32m' |
| +NO_COLOR='\e[0m' |
| + |
| +function echo_red { |
| + echo -e "${RED_COLOR}$1${NO_COLOR}" |
| +} |
| + |
| +function echo_green { |
| + echo -e "${GREEN_COLOR}$1${NO_COLOR}" |
| +} |
| + |
| +# Default values |
| + |
| +install_dir=$(pwd)/asan |
|
Alexander Potapenko
2013/10/29 13:36:11
Again, we must support other tools in the future -
alextaran1
2013/10/30 11:16:29
Added a "sanitizer" flag to script
|
| +intermediate_dir=$(pwd) |
| + |
| +# Parsing args |
| + |
| +while getopts ":i:l:m:hp:" opt; do |
| + case $opt in |
| + p) |
| + echo_green "Only installing dependencies (requires root access)" |
| + echo_green "Installing dependencies for: $OPTARG" |
|
Alexander Potapenko
2013/10/29 13:36:11
Please check with http://google-styleguide.googlec
alextaran1
2013/10/30 11:16:29
Done.
|
| + sudo apt-get -y --no-remove build-dep $OPTARG |
| + exit |
| + ;; |
| + h) |
| + echo "Possible flags: |
| + -p - install dependencies for packages, |
| + -h - this help, |
| + -l - which library to build, |
| + -i - sets relative install_dir." |
|
Alexander Potapenko
2013/10/29 13:36:11
I suggest to pass only the parameters the script c
alextaran1
2013/10/30 11:16:29
Done.
|
| + echo "Environment variabless, which affect this script: CC and CXX" |
| + exit |
| + ;; |
| + i) |
| + install_dir="$(pwd)/$OPTARG" |
| + ;; |
| + l) |
| + library="$OPTARG" |
| + ;; |
| + m) |
| + intermediate_dir="$OPTARG" |
| + ;; |
| + *) |
| + echo "Invalid option: -$OPTARG" >&2 |
| + exit 1 |
| + ;; |
| + esac |
| +done |
| + |
| +if [[ -z "$library" ]]; then |
| + echo_red "No library specified to build" >&2 |
| + exit 1 |
| +fi |
| + |
| +mkdir -p $install_dir |
| + |
| +needed_dependencies=$(apt-get -s build-dep $library | grep Inst \ |
| + | cut -d " " -f 2) |
|
Alexander Potapenko
2013/10/29 13:36:11
I think there should be one more space before the
alextaran1
2013/10/30 11:16:29
It has actually 2 spaces according to http://googl
|
| + |
| +if [[ -n "$needed_dependencies" ]]; then |
| + echo_red "Library $library needs dependencies: $needed_dependencies" >&2 |
| + echo_red "Please, install dependencies using: |
| + third_party/instrumented_libraries/download_build_install -p $library" >&2 |
| + exit 1 |
| +fi |
| + |
| +( |
| + # Downloading $library |
| + mkdir -p $intermediate_dir/$library |
|
Alexander Potapenko
2013/10/29 13:36:11
Make sure to quote the variable names.
alextaran1
2013/10/30 11:16:29
Done.
|
| + cd $intermediate_dir/$library |
| + apt-get source $library |
| + |
| + cd $(ls -F |grep \/$) |
|
Alexander Potapenko
2013/10/29 13:36:11
Quite a cryptic line. Pleas add a comment.
alextaran1
2013/10/30 11:16:29
Done.
|
| + |
| + # Build $library |
| + ./configure --prefix=$install_dir |
| + make $MAKEJOBS |
| + |
| + # Install $library |
| + make install |
|
Alexander Potapenko
2013/10/29 13:36:11
You can install in parallel, too: make $MAKEJOBS i
alextaran1
2013/10/30 11:16:29
Done.
|
| +) > /dev/null |
| + |
| +# Mark that library is installed |
| +touch $install_dir/$library.txt |
|
Alexander Potapenko
2013/10/29 13:36:11
Is this file actually used anywhere now?
alextaran1
2013/10/30 11:16:29
It's used by GYP for valid incremental build.
I wi
|
| + |
| +# Clean up |
| +rm -rf $intermediate_dir/$library |
| Property changes on: third_party/instrumented_libraries/download_build_install |
| ___________________________________________________________________ |
| Added: svn:executable |
| + * |