From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bill Pringlemeir Date: Tue, 06 Jan 2015 16:32:26 -0500 Subject: [U-Boot] v2015.01-rc4 REGRESSION: "scripts: fix binutils-version.sh" breaks things for non Linaro toolchains References: <54A2849F.3010100@redhat.com> <54ABB89F.4000405@redhat.com> <20150106154622.GO10826@bill-the-cat> Message-ID: <8761cj8uj9.fsf@nbsps.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 6 Jan 2015, trini at ti.com wrote: > On Tue, Jan 06, 2015 at 11:27:43AM +0100, Hans de Goede wrote: >> Hi all, >> >> ping ? current master still has this regression, it is not fatal, >> but it is not >> pretty either. > > Did you see my earlier reply? It's OK with vanilla toolchains (see > ELDK) and Linaro ones, but breaking on how Fedora mangles the version > string. I'm _not_ saying it's a Fedora problem, but can you poke at > this a bit? If not, I'll play with echo and see if I can do it. I did a shell check on this script, shellcheck -f gcc binutils-version.sh binutils-version.sh:13:9: warning: Don't use variables in the printf format string. Use printf "..%s.." "$foo". [SC2059] binutils-version.sh:19:14: note: Double quote to prevent globbing and word splitting. [SC2086] binutils-version.sh:20:14: note: Double quote to prevent globbing and word splitting. [SC2086] binutils-version.sh:22:22: note: Double quote to prevent globbing and word splitting. [SC2086] binutils-version.sh:22:29: note: Double quote to prevent globbing and word splitting. [SC2086] diff --git a/scripts/binutils-version.sh b/scripts/binutils-version.sh index 0bc26cf..955267d 100755 --- a/scripts/binutils-version.sh +++ b/scripts/binutils-version.sh @@ -5,7 +5,6 @@ # Prints the binutils version of `gas-command' in a canonical 4-digit form # such as `0222' for binutils 2.22 # - gas="$*" if [ ${#gas} -eq 0 ]; then @@ -14,9 +13,9 @@ if [ ${#gas} -eq 0 ]; then exit 1 fi -version_string=$($gas --version | head -1 | sed -e 's/.*) *\([0-9.]*\).*/\1/' ) +version_string=$($gas --version | head -1 | sed -e 's/.*) *\([0-9\.]*\).*/\1/' ) -MAJOR=$(echo $version_string | cut -d . -f 1) -MINOR=$(echo $version_string | cut -d . -f 2) +MAJOR=$(echo "$version_string" | cut -d . -f 1) +MINOR=$(echo "$version_string" | cut -d . -f 2) -printf "%02d%02d\\n" $MAJOR $MINOR +printf "%02d%02d\\n" "$MAJOR" "$MINOR" The main issue is quoting of the 'sed' expression. We had regex [0-9.], but we want [0-9\.] so that we match a literal '.' as opposed to anything. Or so I speculate. I made a script that output the version info Hans has and after the patch it is fine.