Message ID | 20190912231202.12327-3-mdroth@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
Series | Fix tarball builds of UEFI/EDK2 firmware | expand |
On 09/13/19 01:12, 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 <brogers@suse.com> > Cc: Laszlo Ersek <lersek@redhat.com> > Cc: Bruce Rogers <brogers@suse.com> > Cc: qemu-stable@nongnu.org # v4.1.0 > Signed-off-by: Michael Roth <mdroth@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. > 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". > Reviewed-by: Laszlo Ersek <lersek@redhat.com> Thank you, Laszlo
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 <brogers@suse.com> > Cc: Laszlo Ersek <lersek@redhat.com> > Cc: Bruce Rogers <brogers@suse.com> > Cc: qemu-stable@nongnu.org # v4.1.0 > Signed-off-by: Michael Roth <mdroth@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? > 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". >
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 <brogers@suse.com> >> Cc: Laszlo Ersek <lersek@redhat.com> >> Cc: Bruce Rogers <brogers@suse.com> >> Cc: qemu-stable@nongnu.org # v4.1.0 >> Signed-off-by: Michael Roth <mdroth@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". >>
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. 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".
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 <brogers@suse.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Bruce Rogers <brogers@suse.com> Cc: qemu-stable@nongnu.org # v4.1.0 Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com> --- roms/Makefile.edk2 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)