• Masahiro Yamada's avatar
    kbuild: buildtar: add comments about inconsistent package generation · c3f7bed8
    Masahiro Yamada authored
    scripts/package/buildtar checks some kernel packages, and copies the
    first image found. This may potentially produce an inconsistent (and
    possibly wrong) package.
    
    For instance, the for-loop for arm64 checks Image.{bz2,gz,lz4,lzma,lzo},
    and vmlinuz.efi, then copies the first image found, which might be a
    stale image created in a previous build.
    
    When CONFIG_EFI_ZBOOT is enabled in the pristine source tree,
    'make ARCH=arm64 tar-pkg' will build and copy vmlinuz.efi. This is the
    expected behavior.
    
    If you build the kernel with CONFIG_EFI_ZBOOT disabled, Image.gz will
    be created, which will remain in the tree until you run 'make clean'.
    Even if CONFIG_EFI_ZBOOT is turned on later, 'make ARCH=arm64 tar-pkg'
    will copy stale Image.gz instead of the latest vmlinuz.efi, as Image.gz
    takes precedence over vmlinuz.efi.
    
    In summary, the code "[ -f ... ] && cp" does not consistently produce
    the desired outcome.
    
    Other packaging targets are deterministic; deb-pkg and rpm-pkg copies
    ${KBUILD_IMAGE}, which is determined by CONFIG options.
    
    I removed [ -f ... ] checks from x86, alpha, parisc, and the default
    because they have a single kernel image to copy. If it is missing, it
    should be an error.
    
    I did not modify the code for mips, arm64, riscv. Instead, I left some
    comments. Eventually, someone may fix the code, or at the very least,
    it may discourage the copy-pasting of incorrect code to another
    architecture.
    Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
    Reviewed-by: default avatarEmil Renner Berthing <emil.renner.berthing@canonical.com>
    Reviewed-by: default avatarNicolas Schier <nicolas@fjasle.eu>
    c3f7bed8
buildtar 4.1 KB