Message ID | 20240229131108.363533-1-romain.naour@smile.fr |
---|---|
State | Superseded |
Headers | show |
Series | [1/2] package/rust: use host libraries from HOST_DIR | expand |
romain, All, On 2024-02-29 14:11 +0100, Romain Naour spake thusly: > host-rust package depends on several host packages to provide tools and > libraries but it doesn't take into account HOST_DIR while building rustc > compiler. Indeed, rustc needs zlib and fail to link if zlib is not > installed on the host. > > error: could not compile `rustc_driver` (lib) due to previous error > > If zlib is installed on the host, we can notice it with ldd tool (while > it should be linked with the one provided by Buildroot host-zlib). > > ldd [...]TestRust/host/bin/rustc > libz.so.1 => /lib64/libz.so.1 > > Provide HOST_LDFLAGS using llvm.ldflags in config.toml. > (HOST_LDFLAGS provide -L$(HOST_DIR)/lib -Wl,-rpath,$(HOST_DIR)/lib) > > With that fixed, rustc_driver link with libz from HOST_DIR but the > host-rust build still fail later due to another issue. > > error: could not compile `rustdoc-tool` (bin "rustdoc_tool_binary") due to previous error > > Fixes: > https://gitlab.com/buildroot.org/buildroot/-/jobs/6256881545 > http://autobuild.buildroot.org/results/a6b/a6b28783f29e6b729824bf42679a62f72ad5bee0 > > Signed-off-by: Romain Naour <romain.naour@smile.fr> > --- > package/rust/rust.mk | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/package/rust/rust.mk b/package/rust/rust.mk > index f7a5c0fcd5..c464e77f4f 100644 > --- a/package/rust/rust.mk > +++ b/package/rust/rust.mk > @@ -64,6 +64,7 @@ define HOST_RUST_CONFIGURE_CMDS > echo 'cc = "$(TARGET_CROSS)gcc"'; \ > echo '[llvm]'; \ > echo 'ninja = false'; \ > + echo 'ldflags = "$(HOST_LDFLAGS)"'; \ But then, we would also need to add host-zlib to HOST_RUST_DEPENDENCIES, no? Regards, Yann E. MORIN. > ) > $(@D)/config.toml > endef > > -- > 2.43.2 > > _______________________________________________ > buildroot mailing list > buildroot@buildroot.org > https://lists.buildroot.org/mailman/listinfo/buildroot
Le 29/02/2024 à 14:35, yann.morin@orange.com a écrit : > romain, All, > > On 2024-02-29 14:11 +0100, Romain Naour spake thusly: >> host-rust package depends on several host packages to provide tools and >> libraries but it doesn't take into account HOST_DIR while building rustc >> compiler. Indeed, rustc needs zlib and fail to link if zlib is not >> installed on the host. >> >> error: could not compile `rustc_driver` (lib) due to previous error >> >> If zlib is installed on the host, we can notice it with ldd tool (while >> it should be linked with the one provided by Buildroot host-zlib). >> >> ldd [...]TestRust/host/bin/rustc >> libz.so.1 => /lib64/libz.so.1 >> >> Provide HOST_LDFLAGS using llvm.ldflags in config.toml. >> (HOST_LDFLAGS provide -L$(HOST_DIR)/lib -Wl,-rpath,$(HOST_DIR)/lib) >> >> With that fixed, rustc_driver link with libz from HOST_DIR but the >> host-rust build still fail later due to another issue. >> >> error: could not compile `rustdoc-tool` (bin "rustdoc_tool_binary") due to previous error >> >> Fixes: >> https://gitlab.com/buildroot.org/buildroot/-/jobs/6256881545 >> http://autobuild.buildroot.org/results/a6b/a6b28783f29e6b729824bf42679a62f72ad5bee0 >> >> Signed-off-by: Romain Naour <romain.naour@smile.fr> >> --- >> package/rust/rust.mk | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/package/rust/rust.mk b/package/rust/rust.mk >> index f7a5c0fcd5..c464e77f4f 100644 >> --- a/package/rust/rust.mk >> +++ b/package/rust/rust.mk >> @@ -64,6 +64,7 @@ define HOST_RUST_CONFIGURE_CMDS >> echo 'cc = "$(TARGET_CROSS)gcc"'; \ >> echo '[llvm]'; \ >> echo 'ninja = false'; \ >> + echo 'ldflags = "$(HOST_LDFLAGS)"'; \ > > But then, we would also need to add host-zlib to > HOST_RUST_DEPENDENCIES, no? Indeed but in practice host-zlib is already an "indirect" dependency of host-rust due to host-openssl (host-libopenssl) dependency. HOST_LIBOPENSSL_DEPENDENCIES = host-zlib I noticed the missing dependency but forgot to add it in HOST_RUST_DEPENDENCIES. Best regards, Romain > > Regards, > Yann E. MORIN. > >> ) > $(@D)/config.toml >> endef >> >> -- >> 2.43.2 >> >> _______________________________________________ >> buildroot mailing list >> buildroot@buildroot.org >> https://lists.buildroot.org/mailman/listinfo/buildroot >
Romain, All, On 2024-02-29 14:43 +0100, Romain Naour spake thusly: > Le 29/02/2024 à 14:35, yann.morin@orange.com a écrit : > > On 2024-02-29 14:11 +0100, Romain Naour spake thusly: > >> host-rust package depends on several host packages to provide tools and > >> libraries but it doesn't take into account HOST_DIR while building rustc > >> compiler. Indeed, rustc needs zlib and fail to link if zlib is not > >> installed on the host. [--SNIP--] > > But then, we would also need to add host-zlib to > > HOST_RUST_DEPENDENCIES, no? > Indeed but in practice host-zlib is already an "indirect" dependency of > host-rust due to host-openssl (host-libopenssl) dependency. When a package has a dependency on a library for itself, we must add an explicit dependency in that package, even if it is transitively brought by another, like is the case here. So we do want that host-rust depends on host-zlib explicitly. > HOST_LIBOPENSSL_DEPENDENCIES = host-zlib > > I noticed the missing dependency but forgot to add it in HOST_RUST_DEPENDENCIES. Mark this patch as Changes-requested, then! ;-) Regards, Yann E. MORIN.
diff --git a/package/rust/rust.mk b/package/rust/rust.mk index f7a5c0fcd5..c464e77f4f 100644 --- a/package/rust/rust.mk +++ b/package/rust/rust.mk @@ -64,6 +64,7 @@ define HOST_RUST_CONFIGURE_CMDS echo 'cc = "$(TARGET_CROSS)gcc"'; \ echo '[llvm]'; \ echo 'ninja = false'; \ + echo 'ldflags = "$(HOST_LDFLAGS)"'; \ ) > $(@D)/config.toml endef
host-rust package depends on several host packages to provide tools and libraries but it doesn't take into account HOST_DIR while building rustc compiler. Indeed, rustc needs zlib and fail to link if zlib is not installed on the host. error: could not compile `rustc_driver` (lib) due to previous error If zlib is installed on the host, we can notice it with ldd tool (while it should be linked with the one provided by Buildroot host-zlib). ldd [...]TestRust/host/bin/rustc libz.so.1 => /lib64/libz.so.1 Provide HOST_LDFLAGS using llvm.ldflags in config.toml. (HOST_LDFLAGS provide -L$(HOST_DIR)/lib -Wl,-rpath,$(HOST_DIR)/lib) With that fixed, rustc_driver link with libz from HOST_DIR but the host-rust build still fail later due to another issue. error: could not compile `rustdoc-tool` (bin "rustdoc_tool_binary") due to previous error Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/6256881545 http://autobuild.buildroot.org/results/a6b/a6b28783f29e6b729824bf42679a62f72ad5bee0 Signed-off-by: Romain Naour <romain.naour@smile.fr> --- package/rust/rust.mk | 1 + 1 file changed, 1 insertion(+)