From 184747164d6926c24cca475ae2d46faa5d9ffb87 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Thu, 23 Mar 2017 11:06:23 -0400 Subject: [PATCH] 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 --- .../scripts/download-build-gdb.sh | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/scripts/download-build-gdb.sh b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/scripts/download-build-gdb.sh index 2e06d17005b..e61c3df3615 100755 --- a/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/scripts/download-build-gdb.sh +++ b/dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/scripts/download-build-gdb.sh @@ -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