All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH RFC] toolchain-buildroot: add sanity checks
Date: Sun, 1 Jul 2018 14:40:39 +0200	[thread overview]
Message-ID: <20180701144039.2ec8d9c4@windsurf.home> (raw)
In-Reply-To: <20180610163315.6511-1-romain.naour@gmail.com>

Hello,

On Sun, 10 Jun 2018 18:33:15 +0200, Romain Naour wrote:
> When a Buildroot toolchain is build by the internal toolchain
> infrastructure, we curently don't check for toolchain features
> like it's done for external toolchains.
> 
> As an example:
> On microblaze, the SSP support was unconditionally requested from
> the Buildroot configuration even if it was not supported by the
> toolchain components.
> 
> See https://gitlab.com/free-electrons/toolchains-builder/issues/1
> 
> Copy all external toolchain checks to the internal toolchain using
> TOOLCHAIN_BUILDROOT_CONFIGURE_CMDS.
> 
> Signed-off-by: Romain Naour <romain.naour@gmail.com>
> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> ---
> Until now helpers.mk was only used for external toolchains.
> All error messages must be updated in order to remove all BR2_TOOLCHAIN_EXTERNAL_
> ---
>  .../toolchain-buildroot/toolchain-buildroot.mk     | 31 ++++++++++++++++++++++
>  1 file changed, 31 insertions(+)
> 
> diff --git a/toolchain/toolchain-buildroot/toolchain-buildroot.mk b/toolchain/toolchain-buildroot/toolchain-buildroot.mk
> index b30cc332d2..3fc4f37e39 100644
> --- a/toolchain/toolchain-buildroot/toolchain-buildroot.mk
> +++ b/toolchain/toolchain-buildroot/toolchain-buildroot.mk
> @@ -14,4 +14,35 @@ TOOLCHAIN_BUILDROOT_DEPENDENCIES = host-gcc-final
>  
>  TOOLCHAIN_BUILDROOT_ADD_TOOLCHAIN_DEPENDENCY = NO
>  
> +define TOOLCHAIN_BUILDROOT_CONFIGURE_CMDS
> +	$(Q)$(call check_cross_compiler_exists,$(TARGET_CC))
> +	$(Q)$(call check_unusable_toolchain,$(TARGET_CC))
> +	$(Q)SYSROOT_DIR="$(call toolchain_find_sysroot,$(TARGET_CC))" ; \
> +	$(call check_kernel_headers_version,\
> +		$(call toolchain_find_sysroot,$(TARGET_CC)),\
> +		$(call qstrip,$(BR2_TOOLCHAIN_HEADERS_AT_LEAST))); \
> +	$(call check_gcc_version,$(TARGET_CC),\
> +		$(call qstrip,$(BR2_TOOLCHAIN_GCC_AT_LEAST))); \
> +	if test "$(BR2_arm)" = "y" ; then \
> +		$(call check_arm_abi,\
> +			"$(TARGET_CC) $(TARGET_CFLAGS)") ; \
> +	fi ; \
> +	if test "$(BR2_INSTALL_LIBSTDCPP)" = "y" ; then \
> +		$(call check_cplusplus,$(TARGET_CXX)) ; \
> +	fi ; \
> +	if test "$(BR2_TOOLCHAIN_HAS_FORTRAN)" = "y" ; then \
> +		$(call check_fortran,$(TARGET_FC)) ; \
> +	fi ; \
> +	if test "$(BR2_TOOLCHAIN_BUILDROOT_UCLIBC)" = "y" ; then \
> +		$(call check_uclibc,$${SYSROOT_DIR}) ; \
> +	elif test "$(BR2_TOOLCHAIN_BUILDROOT_MUSL)" = "y" ; then \
> +		$(call check_musl,\
> +			"$(TARGET_CC) $(TARGET_CFLAGS)",\
> +			$(TARGET_READELF)) ; \
> +	else \
> +		$(call check_glibc,$${SYSROOT_DIR}) ; \
> +	fi
> +	$(Q)$(call check_toolchain_ssp,$(TARGET_CC))
> +endef

I understand the intention, but there's more work to be done to make
this actually usable. As you say, the error messages must be changed
because for now some of them will print errors about
BR2_TOOLCHAIN_EXTERNAL_* options, which doesn't make sense.

Speaking of this, the current check_uclibc function is not correct, as
it will print error messages about BR2_ENABLE_LOCALE or BR2_USE_WCHAR
(etc.) for external toolchains, while it should talk about
BR2_TOOLCHAIN_EXTERNAL_*.

Finally, it is a bit annoying to duplicate this code doing the tests
between the internal and external backends. But with the need to have
different error messages, it is a bit difficult to factorize.

So all in all, I understand the idea, but it seems more complicated to
implement than what you did, up to the point where I'm not sure if it's
worth the effort.

Best regards,

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com

      reply	other threads:[~2018-07-01 12:40 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-10 16:33 [Buildroot] [PATCH RFC] toolchain-buildroot: add sanity checks Romain Naour
2018-07-01 12:40 ` Thomas Petazzoni [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180701144039.2ec8d9c4@windsurf.home \
    --to=thomas.petazzoni@bootlin.com \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.