Ping for code review on this one? Mike Roth: especially input from
from you on this would be good since you're the one who runs
the make-release script...

thanks
-- PMM

On Mon, 21 Jul 2025 at 16:33, Peter Maydell <peter.mayd...@linaro.org> wrote:
>
> In commit bd0da3a3d4f we changed make-release so that instead of
> cloning every git submodule of EDK2 we only cloned a fixed list.
> The original motivation for this was that one of the submodules:
>  * was from a non-github repo
>  * that repo had a "SSL certificate expired" failure
>  * wasn't actually needed for the set of EDK2 binaries we build
> and at the time we were trying to build the EDK2 binaries in one of
> our CI jobs.
>
> Unfortunately this change meant that we were exposed to bugs where
> EDK2 adds a new submodule and the sources we ship in the release
> tarball won't build any more.  In particular, in EDK2 commit
> c6bb7d54beb05 the MipiSysTLib submodule was added, causing failure of
> the ROM build in our tarball starting from QEMU release 8.2.0:
>
> /tmp/qemu-10.0.0/roms/edk2/MdePkg/MdePkg.dec(32): error 000E: File/directory 
> not found in workspace
>         Library/MipiSysTLib/mipisyst/library/include is not found in packages 
> path:
>         /tmp/qemu-10.0.0/roms/.
>         /tmp/qemu-10.0.0/roms/edk2
>
> (Building from a QEMU git checkout works fine.)
>
> In the intervening time EDK2 moved the submodule that had a problem
> to be one they mirrored themselves (and at time of writing all their
> submodules are hosted on github), and we stopped trying to build
> EDK2 binaries in our own CI jobs with commit 690ceb71936f9037f6.
>
> Go back to cloning every EDK2 submodule, so we don't have an
> untested explicit list of submodules which will break without
> our noticing it.
>
> This increases the size of the QEMU tarball .tar.xz file from
> 133M to 139M in my testing.
>
> Cc: qemu-sta...@nongnu.org
> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3041
> Signed-off-by: Peter Maydell <peter.mayd...@linaro.org>
> ---
> I think ideally we would not ship these rom blobs in our source
> tarball but instead provide them separately. Then we would definitely
> have no reason to ship a huge amount of EDK2 sourcecode that
> 99.9% of the users of the tarball don't want. But that's an
> idea that was floated at least three or four years ago now
> and we don't in practice have time or effort to try to do that.
> So the simple thing is to at least ship the right source...
>
> NB: for me this can build the x86 blobs now, but it then tries
> to build the Arm blobs with the x86 GCC, which obviously doesn't
> work. Perhaps something needs to be set in the environment ?
>
> ---
>  scripts/make-release | 20 +++++++++-----------
>  1 file changed, 9 insertions(+), 11 deletions(-)
>
> diff --git a/scripts/make-release b/scripts/make-release
> index 4509a9fabf5..87f563ef5f7 100755
> --- a/scripts/make-release
> +++ b/scripts/make-release
> @@ -62,17 +62,15 @@ meson subprojects download $SUBPROJECTS
>  (cd roms/skiboot && ./make_version.sh > .version)
>  # Fetch edk2 submodule's submodules, since it won't have access to them via
>  # the tarball later.
> -#
> -# A more uniform way to handle this sort of situation would be nice, but we
> -# don't necessarily have much control over how a submodule handles its
> -# submodule dependencies, so we continue to handle these on a case-by-case
> -# basis for now.
> -(cd roms/edk2 && \
> -    git submodule update --init --depth 1 -- \
> -        ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3 \
> -        BaseTools/Source/C/BrotliCompress/brotli \
> -        CryptoPkg/Library/OpensslLib/openssl \
> -        MdeModulePkg/Library/BrotliCustomDecompressLib/brotli)
> +
> +# As recommended by the EDK2 readme, we don't use --recursive here.
> +# EDK2 won't use any code or feature from a submodule of a submodule,
> +# so we don't need to add them to the tarball.
> +# Although we don't necessarily need all of the submodules that EDK2
> +# has, we clone them all, to avoid running into problems where EDK2
> +# adds a new submodule or changes its use of an existing one and
> +# the sources we ship in the tarball then fail to build.
> +(cd roms/edk2 && git submodule update --init --depth 1)
>  popd
>
>  exclude=(--exclude=.git)
> --

Reply via email to