qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Building in Solaris 11.4


From: Eric Blake
Subject: Re: Building in Solaris 11.4
Date: Wed, 24 Jun 2020 16:48:51 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.9.0

On 6/24/20 4:31 PM, Michele Denber wrote:
While trying to run configure in Solaris 11.4, I quickly run into:

root@hemlock:~/qemu-5.0.0# ./configure
./configure[62]: local: not found [No such file or directory]

grep: illegal option -- e
Usage: grep [-c|-l|-q] -bhinsvw pattern file . . .
./configure[62]: local: not found [No such file or directory]

You've uncovered multiple portability issues, where even though configure expects to run with #!/bin/sh, it uses some non-POSIX-isms.


Line 62 is

     local compiler="$1"

I'm not familiar with this construct.  What does "local" do?  It wasn't
in the configure file for QEMU 2.12.  (And I already said "cc=gcc")

local is a bash-ism (ksh has it to) that changes how variables are scoped within shell functions. The options to fix it are to either: avoid local and use global variables everywhere (and worrying about naming collisions when one function calls another), or to tweak configure so that it re-exec's itself under bash if it detects that /bin/sh is not up to our usage expectations. (configure scripts generated by Autoconf do the latter, but qemu doesn't use autoconf).

grep -e is also a non-portable construct; it might be possible to change that line to call egrep instead, or to rewrite the regex to not need extended regex.

As a short-term workaround, you can always do:

/path/to/bash ./configure

to run it under a shell that won't choke on our use of non-posix constructs.

--
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org




reply via email to

[Prev in Thread] Current Thread [Next in Thread]