1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-09 09:15:38 +02:00

Various enhancements to download-build-gdb.sh

I ran shellcheck [1] on the script and it found various minor things to
improve.

 - Use $(...) instead of `...` to run commands in a subshell.
 - Wrap all variables in quotes, in case there are spaces.

At the same time, I noticed a few other things:

 - Use "#!/usr/bin/env bash" instead of "#!/bin/bash", in case the user
   uses a bash not at /bin/bash.
 - Use "set -o errexit" instead of "set -e" for better readability.
 - Use "set -o nounset" to generate errors if trying to read unset
   variables.
 - Pass CXXFLAGS in addition to CFLAGS, since GDB is now in C++.
 - Use ${CFLAGS:-} instead of ${CFLAGS}, in case CFLAGS is not set
   (because of "set -o nounset").
 - Don't check for result of getopt.  If it fails, the script ends
   immediatly due to errexit.

[1] http://www.shellcheck.net/

Change-Id: If73f3510e46ca80d542d47c29c55b48b8b0bc697
Signed-off-by: Simon Marchi <simon.marchi@polymtl.ca>
This commit is contained in:
Simon Marchi 2017-03-23 11:06:23 -04:00
parent 5bec70f68f
commit 184747164d

View file

@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
# * Copyright (c) 2015 Ericsson and others.
# * All rights reserved. This program and the accompanying materials
@ -10,10 +10,13 @@
# * Simon Marchi (Ericsson) - Initial implementation
# Stop the script if any command fails
set -e
set -o errexit
# Consider using an unset variable as an error
set -o nounset
# Make sure getopt is the command and not the bash built-in
if [[ `getopt --version` != *"getopt"* ]]; then
if [[ $(getopt --version) != *"getopt"* ]]; then
echo "getopt command not found."
exit 1
fi
@ -63,7 +66,7 @@ function help_and_exit() {
echo " $ $0 all"
echo ""
exit $1
exit "$1"
}
# Output a visible header
@ -89,7 +92,7 @@ function check_supported() {
*)
echo "Error: version ${version} is not supported by this script."
echo ""
help_and_exit
help_and_exit 1
;;
esac
}
@ -163,7 +166,8 @@ function configure_gdb() {
local version="$1"
local build="${build_dir}/gdb-${version}"
local cflags="-Wno-error -g -O0"
local cflags="-Wno-error -g3 -O0"
local cxxflags="-Wno-error -g3 -O0"
echo_header "Configuring in ${build}"
@ -175,11 +179,12 @@ function configure_gdb() {
;;
esac
# Let the user specify some CFLAGS
cflags="${cflags} ${CFLAGS}"
# If there is already some CFLAGS/CXXFLAGS in the environment, add them to the mix.
cflags="${cflags} ${CFLAGS:-}"
cxxflags="${cxxflags} ${CXXFLAGS:-}"
# Need to use eval to allow the ${dryrun} trick to work with the env var command at the start.
eval ${dryrun} 'CFLAGS="${cflags}" ./configure --prefix="${install_dir}/gdb-${version}"'
eval ${dryrun} 'CFLAGS="${cflags}" CXXFLAGS="${cxxflags}" ./configure --prefix="${install_dir}/gdb-${version}"'
${dryrun} popd
}
@ -245,14 +250,9 @@ function symlink_gdb() {
fi
}
# Start argument parsing
# Start argument parsing. The script will exit (thanks to errexit) if bad arguments are passed.
args=$(getopt -o b:dhj: -l "base-dir:,dry-run,help,jobs" -n "$0" -- "$@");
# Bad arguments ?
if [ $? -ne 0 ]; then
exit 1
fi
eval set -- "$args"
while true; do