diff mbox series

package/rustc: RUSTC_TARGET_NAME is needed to build host-rust

Message ID 20200508152739.1625844-1-romain.naour@gmail.com
State Accepted
Headers show
Series package/rustc: RUSTC_TARGET_NAME is needed to build host-rust | expand

Commit Message

Romain Naour May 8, 2020, 3:27 p.m. UTC
As reported on bugzilla [1], the host-rust package fail when
the target architecture or the target libc is not supported.

The error is the following:
failed to parse TOML configuration 'config.toml': expected a table key, found a right bracket at line 15

In such case BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS is
not set thus RUSTC_TARGET_NAME is also not set [2].

But RUSTC_TARGET_NAME is needed to generate the file config.toml [3]

Add BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS in the host-rust
dependency.

The commit [4] that allowed to select host-rust when the target
architecture or the target libc is not supported, should have
allowed to select only host-rustc-bin.

Fixes:
Bug #12691

[1] https://bugs.busybox.net/show_bug.cgi?id=12691
[2] https://git.buildroot.net/buildroot/tree/package/rustc/rustc.mk?h=2020.05-rc1#n10
[3] https://git.buildroot.net/buildroot/tree/package/rust/rust.mk?h=2020.05-rc1#n41
[4] 025b863e6facb7b219b82ee6ee7a7916c2c3c47e

Signed-off-by: Romain Naour <romain.naour@gmail.com>
Cc: Sam Voss <sam.voss@gmail.com>
---
 package/rustc/Config.in.host | 3 +++
 1 file changed, 3 insertions(+)

Comments

Sam Voss May 16, 2020, 2:35 a.m. UTC | #1
Romain,

On Fri, May 8, 2020 at 10:27 AM Romain Naour <romain.naour@gmail.com> wrote:
>
> As reported on bugzilla [1], the host-rust package fail when
> the target architecture or the target libc is not supported.
>
> The error is the following:
> failed to parse TOML configuration 'config.toml': expected a table key, found a right bracket at line 15
>
> In such case BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS is
> not set thus RUSTC_TARGET_NAME is also not set [2].
>
> But RUSTC_TARGET_NAME is needed to generate the file config.toml [3]
>
> Add BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS in the host-rust
> dependency.
>
> The commit [4] that allowed to select host-rust when the target
> architecture or the target libc is not supported, should have
> allowed to select only host-rustc-bin.

Thanks for fixing this, looks good to me.

>
> Fixes:
> Bug #12691
>
> [1] https://bugs.busybox.net/show_bug.cgi?id=12691
> [2] https://git.buildroot.net/buildroot/tree/package/rustc/rustc.mk?h=2020.05-rc1#n10
> [3] https://git.buildroot.net/buildroot/tree/package/rust/rust.mk?h=2020.05-rc1#n41
> [4] 025b863e6facb7b219b82ee6ee7a7916c2c3c47e
>
> Signed-off-by: Romain Naour <romain.naour@gmail.com>

Reviewed-by: Sam Voss <sam.voss@gmail.com>
Thomas Petazzoni May 17, 2020, 7:30 p.m. UTC | #2
Hello,

On Fri,  8 May 2020 17:27:39 +0200
Romain Naour <romain.naour@gmail.com> wrote:

> As reported on bugzilla [1], the host-rust package fail when
> the target architecture or the target libc is not supported.
> 
> The error is the following:
> failed to parse TOML configuration 'config.toml': expected a table key, found a right bracket at line 15
> 
> In such case BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS is
> not set thus RUSTC_TARGET_NAME is also not set [2].
> 
> But RUSTC_TARGET_NAME is needed to generate the file config.toml [3]
> 
> Add BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS in the host-rust
> dependency.
> 
> The commit [4] that allowed to select host-rust when the target
> architecture or the target libc is not supported, should have
> allowed to select only host-rustc-bin.
> 
> Fixes:
> Bug #12691
> 
> [1] https://bugs.busybox.net/show_bug.cgi?id=12691
> [2] https://git.buildroot.net/buildroot/tree/package/rustc/rustc.mk?h=2020.05-rc1#n10
> [3] https://git.buildroot.net/buildroot/tree/package/rust/rust.mk?h=2020.05-rc1#n41
> [4] 025b863e6facb7b219b82ee6ee7a7916c2c3c47e
> 
> Signed-off-by: Romain Naour <romain.naour@gmail.com>
> Cc: Sam Voss <sam.voss@gmail.com>
> ---
>  package/rustc/Config.in.host | 3 +++
>  1 file changed, 3 insertions(+)

I have applied to master, because it's the most obvious workaround, but
I'm not sure to be entirely happy about it.

Indeed, the whole point of commit
025b863e6facb7b219b82ee6ee7a7916c2c3c47e was to ensure we could use
Rust as a host-only tool, even when the target architecture is not
supported by rust. This would allow to support building some host tools
that are written in Rust.

This is properly supported by the host-rust-bin package, which does not
install the target Rust library when
BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS is false.

Shouldn't the host-rust package be changed to also build just a host
compiler (without cross-compilation capabilities) ? Or is host-rust
anyway using host-rust-bin as the host compiler ?

Thomas
Peter Korsgaard May 29, 2020, 9:14 p.m. UTC | #3
>>>>> "Romain" == Romain Naour <romain.naour@gmail.com> writes:

 > As reported on bugzilla [1], the host-rust package fail when
 > the target architecture or the target libc is not supported.

 > The error is the following:
 > failed to parse TOML configuration 'config.toml': expected a table key, found a right bracket at line 15

 > In such case BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS is
 > not set thus RUSTC_TARGET_NAME is also not set [2].

 > But RUSTC_TARGET_NAME is needed to generate the file config.toml [3]

 > Add BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS in the host-rust
 > dependency.

 > The commit [4] that allowed to select host-rust when the target
 > architecture or the target libc is not supported, should have
 > allowed to select only host-rustc-bin.

 > Fixes:
 > Bug #12691

 > [1] https://bugs.busybox.net/show_bug.cgi?id=12691
 > [2] https://git.buildroot.net/buildroot/tree/package/rustc/rustc.mk?h=2020.05-rc1#n10
 > [3] https://git.buildroot.net/buildroot/tree/package/rust/rust.mk?h=2020.05-rc1#n41
 > [4] 025b863e6facb7b219b82ee6ee7a7916c2c3c47e

 > Signed-off-by: Romain Naour <romain.naour@gmail.com>
 > Cc: Sam Voss <sam.voss@gmail.com>

Committed to 2020.02.x, thanks.
diff mbox series

Patch

diff --git a/package/rustc/Config.in.host b/package/rustc/Config.in.host
index d595efbc6f..1df25ae326 100644
--- a/package/rustc/Config.in.host
+++ b/package/rustc/Config.in.host
@@ -49,6 +49,9 @@  choice
 
 config BR2_PACKAGE_HOST_RUST
 	bool "host rust"
+	# RUSTC_TARGET_NAME must be set for building host-rust
+	# otherwise config.toml is broken.
+	depends on BR2_PACKAGE_HOST_RUSTC_TARGET_ARCH_SUPPORTS
 	# triggers ICE on trunc_int_for_mode, at explow.c:56
 	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5 || !BR2_aarch64
 	help