On 09/20/19 21:50, Philippe Mathieu-Daudé wrote: > On 9/13/19 1:12 AM, Michael Roth wrote: >> Currently the `make efi` target pulls submodules nested under the >> roms/edk2 submodule as dependencies. However, when we attempt to build >> from a tarball this fails since we are no longer in a git tree. >> >> A preceding patch will pre-populate these submodules in the tarball, >> so assume this build dependency is only needed when building from a >> git tree. >> >> Reported-by: Bruce Rogers <brog...@suse.com> >> Cc: Laszlo Ersek <ler...@redhat.com> >> Cc: Bruce Rogers <brog...@suse.com> >> Cc: qemu-sta...@nongnu.org # v4.1.0 >> Signed-off-by: Michael Roth <mdr...@linux.vnet.ibm.com> >> --- >> roms/Makefile.edk2 | 7 ++++++- >> 1 file changed, 6 insertions(+), 1 deletion(-) >> >> diff --git a/roms/Makefile.edk2 b/roms/Makefile.edk2 >> index c2f2ff59d5..33a074d3a4 100644 >> --- a/roms/Makefile.edk2 >> +++ b/roms/Makefile.edk2 >> @@ -46,8 +46,13 @@ all: $(foreach >> flashdev,$(flashdevs),../pc-bios/edk2-$(flashdev).fd.bz2) \ >> # files. >> .INTERMEDIATE: $(foreach >> flashdev,$(flashdevs),../pc-bios/edk2-$(flashdev).fd) >> >> +# Fetch edk2 submodule's submodules. If it is not in a git tree, assume >> +# we're building from a tarball and that they've already been fetched by >> +# make-release/tarball scripts. > > Annoying, without using the make-release tool in a fresh clone, I get > qemu/roms/edk2/CryptoPkg/Library/OpensslLib/OpensslLibCrypto.inf(-1): > error 000E: File/directory not found in workspace > > I vaguely remember there was a thread about not using 'git submodule > update --init --recursive' in the root directory but can't find it, any > idea?
I think that was a point made in the first patch of this series -- the "--recursive" flag is unbounded, and it might pull in several unneeded submodules. For example, openssl itself appears to have three submodules (boringssl, krb5, pyca-cryptography), and none of those is needed for building openssl the way edk2 consumes it. I seem to remember that patch#1 in this series stated: we'd be handling the submodules on a case-by-case basis. Thanks Laszlo > >> submodules: >> - cd edk2 && git submodule update --init --force >> + if test -d edk2/.git; then \ >> + cd edk2 && git submodule update --init --force; \ >> + fi >> >> # See notes on the ".NOTPARALLEL" target and the "+" indicator in >> # "tests/uefi-test-tools/Makefile". >>