multipath-tools: fix compilation with gcc < 4.9 on dash shell
authorMauricio Faria de Oliveira <mfo@canonical.com>
Mon, 30 Jul 2018 19:37:44 +0000 (16:37 -0300)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Tue, 7 Aug 2018 13:29:35 +0000 (15:29 +0200)
commit2ba1949c89d9a9ea9cb06fa847a61b56dd92d4f7
tree058ded2f7fd9b71d8f76e3947d06211c7d53a2ec
parentc1adcc5ba452bb1252c97c8066e340433976c23e
multipath-tools: fix compilation with gcc < 4.9 on dash shell

The dash shell does not interpret '&>' as bash does, so instead
of stdout/stderr redirect, it runs the command in background [1].

    $ for shell in bash dash; do
        echo -n "$shell rc = "
        $shell -c 'echo "int main(void){return 0;}" \
                     | gcc -o /dev/null -c -fFAIL -xc - &>/dev/null; echo $?';
      done
    bash rc = 1
    dash rc = 0
    $ gcc: error: unrecognized command line option ‘-fFAIL’

This misleads the check for C compiler option in Makefile.inc
on Ubuntu 14.04 at least, which uses dash as /bin/sh, and has
GCC 4.8 (no -fstack-protector-strong), then the build fails.

So, replace '&>' with the equivalent '>' and '>&2'.

No regression on Ubuntu 18.04 (GCC 7.3, -fstack-protector-strong used).

Fixes: a8dd838c
"multipath-tools: fix compilation with gcc < 4.9"

[1] https://wiki.ubuntu.com/DashAsBinSh (see '&>' section)

Signed-off-by: Mauricio Faria de Oliveira <mfo@canonical.com>
Makefile.inc