qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 07/10] roms: build edk2 firmware binaries and va


From: Laszlo Ersek
Subject: Re: [Qemu-devel] [PATCH 07/10] roms: build edk2 firmware binaries and variable store templates
Date: Tue, 12 Mar 2019 20:33:18 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1

On 03/12/19 17:07, Eric Blake wrote:
> On 3/12/19 10:15 AM, Laszlo Ersek wrote:
> 
>> I'm acutely aware of portable vs. non-portable shell scripts. While
>> working on the code, I specifically checked that "local" was not
>> specified in SUSv4. The point is, I didn't care, because I didn't target
>> a POSIX system, but a GNU system.
>>
>> We already require GNU Make, to my knowledge. Perhaps not by decree, but
>> through the feature set that we use.
> 
> Indeed, qemu fails to build under BSD make.
> 
>> I really want to keep "local", as it keeps the shell variable namespace
>> clean. Regarding the functions that I did put in the "global namespace",
>> I was careful to prefix them suitably.
> 
> Yes, using local makes bash functions easier to write. (And I've been
> trying to argue that POSIX should adopt local, but there is a
> fundamental difference between ksh local (static scoping) and bash local
> (dynamic scoping) that neither shell is willing to switch their existing
> practice to meet at common ground - which is why POSIX hasn't
> standardized anything yet)

Interesting! I didn't know about this. "local" has always seemed like a
"no brainer" to me (for POSIX to incorporate), but given the actual
conflict between bash and ksh, I guess it might never happen. (Also, it
should be quite obvious at this point that the only "ksh" command I have
ever typed has been "exit" :) )

>> IMO, it's perfectly fine to require the shell to be bash here, given
>> that this feature is meant for a subset of maintainers (and not for
>> end-users), and that building edk2 already requires a quite sizeable set
>> of packages installed (such as nasm, iasl, ...) So this feature is not
>> meant for any random POSIX system.
>>
>> What I did miss in fact was that "GNU Make" didn't imply "/bin/bash":
> 
> Yep, I can see how that was not obvious, and I also agree that:
> 
>> Thus, the real fix here is to be explicit about the bash requirement. I
>> should add
>>
>>   SHELL=/bin/bash
>>
>> near the top of "Makefile.edk2".
> 
> this should indeed force the use of bash for all shell snippets and
> $(shell) invocations in that makefile (and let you get away with
> 'source' instead of '.', as well as the use of 'local' within the
> sourced functions).
> 

Awesome, thank you.
Laszlo



reply via email to

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