6465c79166
Commit4cbf733691
("arch/xtensa: custom configuration requires an overlay") added a check in arch/arch.mk.xtensa to bail out if a custom Xtensa core is selected but not overlay file is provided. While this is indeed a perfectly valid check to make when building an internal toolchain, with an external toolchain it's entirely possible to build with no overlay file: the toolchain already exists, and there's no overlay to be applied in the context of the Buildroot build. And indeed commit4cbf733691
broke some of the runtime test cases that use a custom Xtensa core configuration, with no overlay, to test the toolchains.bootlin.com Xtensa external toolchain. By relaxing the check to only apply to internal toolchain configurations, we fix those test cases. It is to be noted that this still allows a configuration where gdb gets built for a custom core, but with no overlay, so basically that means the fsf variant, which can lead to build or run failures that4cbf733691
attempted to fix to begin with. This still covers the most common cases. Finally, it also means being able to build a kernel with no overlay, but this is offset by the fact that the kernel may be already patched with an overlay (as it is possible to specify a custom kernel), which is most probably what people using a custom core would have. Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/3282261966 https://gitlab.com/buildroot.org/buildroot/-/jobs/3282261963 Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> [yann.morin.1998@free.fr: extend commit log with last two paragraphs] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
42 lines
1.8 KiB
Plaintext
42 lines
1.8 KiB
Plaintext
BR_ARCH_XTENSA_OVERLAY_FILE = $(call qstrip,$(BR2_XTENSA_OVERLAY_FILE))
|
|
|
|
ifeq ($(BR_BUILDING)$(BR2_XTENSA_CUSTOM)$(BR2_TOOLCHAIN_BUILDROOT):$(BR_ARCH_XTENSA_OVERLAY_FILE),yyy:)
|
|
$(error No xtensa overlay file provided. Check your BR2_XTENSA_OVERLAY_FILE setting)
|
|
endif
|
|
|
|
################################################################################
|
|
# This variable can be used by packages that need to extract the overlay.
|
|
#
|
|
# ARCH_XTENSA_OVERLAY_FILE is the path to the overlay tarball; empty if not
|
|
# using any overlay
|
|
#
|
|
# Example:
|
|
# ifneq ($(ARCH_XTENSA_OVERLAY_FILE),)
|
|
# tar xf $(ARCH_XTENSA_OVERLAY_FILE) -C $(@D) --strip-components=1 gcc
|
|
# endif
|
|
################################################################################
|
|
ifneq ($(filter http://% https://% ftp://% scp://%,$(BR_ARCH_XTENSA_OVERLAY_FILE)),)
|
|
ARCH_XTENSA_OVERLAY_URL = $(BR_ARCH_XTENSA_OVERLAY_FILE)
|
|
ARCH_XTENSA_OVERLAY_FILE = $($(PKG)_DL_DIR)/$(notdir $(BR_ARCH_XTENSA_OVERLAY_FILE))
|
|
# Do not check that file, we can't know its hash
|
|
BR_NO_CHECK_HASH_FOR += $(notdir $(ARCH_XTENSA_OVERLAY_URL))
|
|
else
|
|
ARCH_XTENSA_OVERLAY_FILE = $(BR_ARCH_XTENSA_OVERLAY_FILE)
|
|
endif
|
|
|
|
################################################################################
|
|
# arch-xtensa-overlay-extract -- extract an extensa overlay
|
|
#
|
|
# argument 1 is the path in which to extract
|
|
# argument 2 is the component to extract, one of: gcc, binutils, gdb, linux,
|
|
# u-boot
|
|
#
|
|
# Example:
|
|
# $(call arch-xtensa-overlay-extract,/path/to/overlay.tar,$(@D),gcc)
|
|
################################################################################
|
|
define arch-xtensa-overlay-extract
|
|
$(call suitable-extractor,$(ARCH_XTENSA_OVERLAY_FILE)) \
|
|
$(ARCH_XTENSA_OVERLAY_FILE) | \
|
|
$(TAR) --strip-components=1 -C $(1) $(TAR_OPTIONS) - $(2)
|
|
endef
|