[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
- Re: [Qemu-devel] [PATCH 06/10] roms/Makefile: replace the $(EFIROM) target with "edk2-basetools", (continued)
[Qemu-devel] [PATCH 07/10] roms: build edk2 firmware binaries and variable store templates, Laszlo Ersek, 2019/03/08
Re: [Qemu-devel] [PATCH 07/10] roms: build edk2 firmware binaries and variable store templates, Philippe Mathieu-Daudé, 2019/03/10
[Qemu-devel] [PATCH 08/10] pc-bios: add edk2 firmware binaries and variable store templates, Laszlo Ersek, 2019/03/08
[Qemu-devel] [PATCH 09/10] pc-bios: document the edk2 firmware images; add firmware descriptors, Laszlo Ersek, 2019/03/08
[Qemu-devel] [PATCH 10/10] Makefile: install the edk2 firmware images and their descriptors, Laszlo Ersek, 2019/03/08
Re: [Qemu-devel] [PATCH 00/10] bundle edk2 platform firmware with QEMU, Philippe Mathieu-Daudé, 2019/03/08