152 Commits

Author SHA1 Message Date
Martin 'JaMa' Jansa
bf6705fb7f Convert to new override syntax (#357)
* Convert to new override syntax

This is the result of automated script (0.9.0) conversion:

oe-core/scripts/contrib/convert-overrides.py .

converting the metadata to use ":" as the override character instead of "_".

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>

* Manually fix the conversion

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>

* layer.conf: Update layer compatibility with only dunfell and newer.

Add honister to mark the layers as compatible with honister now that it uses
the new override syntax.

Drop zeus and older which are missing a support for newer override syntax which
was backported only to 1.46 branch (used by dunfell) and newer, e.g.:
https://git.openembedded.org/bitbake/commit/?h=1.46&id=c5418eae56cc50dbae7951c055434a0c456c53a4

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>

* CI: use YOCTO_BRANCH instead of yocto-${YOCTO_VERSION} for poky checkout

* using latest revision in branch is often better than sticking to
  some point releases

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>

* CI: switch to hardknott branch

* gatesgarth is already EOL, better to use something supported

Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
2021-08-05 17:37:51 -04:00
Anatol Belski
ab86e0a068 nativesdk: Add some tools in a separate recipe (#345)
* nativesdk: Add some tools in a separate recipe

This brings ATM:
- clippy
- rustfmt

Another approach might be to include these into the existing rust recipe,
but as we can't really use PACKAGECONFIG here it might just overload it.
This way, the tools will be built in parallel and still can be excluded
from the packgae group, if desired.

Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2021-06-05 13:42:18 -04:00
Steven Walter
53cbdb566d cargo.bbclass: support cargo's progress indicator
Recent versions of cargo support always showing the progress indicator.
By default the progress indicator is hidden if the output is not a tty.
For bitbake builds, the output is redirected to a file and not a tty.
However, if we tell cargo to always show the progress indicator, bitbake
can parse it and will show the user how the rust build is progressing.
2021-04-02 16:21:43 -04:00
Anatol Belski
439dea8664 nativesdk: Implement cross canadian support
This addition closes #236 requesting the SDK support. The implementation
consists on a yet minimum set of worky functionality;

- Includes rustc, rustdoc and cargo.
- Includes libstd and accompanying lib archives for host and for target.
- Integrates with the standard environment setup script.
- Integrates configurations automatically build for target.

The supported build host is still AMD64 only.

Note that there's no need on introducing crosssdk package as the
official snapshot package serves same way as a non SDK build.

Possible future directions:

- Offline build:
	- Support pre-cached set of crates that can be vendored.
	- Support pre-filled cargo registry.
- Support further tools like cargo-fmt, cargo-clippy, GDB support and so
on.

Signed-off-by: Anatol Belski <anbelski@linux.microsoft.com>
2021-03-30 15:11:59 +00:00
Joel Winarske
81a4d79c06 install example executables 2021-02-23 20:03:59 -08:00
Benjamin Isbarn
4e96013677 Factor in CARGO_SRC_DIR when setting MANIFEST_PATH. 2021-02-15 14:36:46 +01:00
Johan Anderholm
0025cebb12 Fix *-native cargo builds
Normally all *-native packages needs to depend on cargo-native in order
to be able to use cargo. When building cargo-native however, this is not
available and we use a snapshot.

Fixes #302.
2021-02-08 16:04:39 +01:00
Khem Raj
1936904ad3 cargo: Mark the cargo-native dependency specific to target
Fixes dependency loop

These are usually caused by circular dependencies and any circular dependency chains found will be printed below. Increase the debug level to see a list of unbuildable tasks.

Identifying dependency loops (this may take a short while)...

ERROR:
Dependency loop #1 found:
  Task virtual:native:/mnt/b/yoe/master/sources/meta-rust/recipes-devtools/cargo/cargo_1.47.0.bb:do_compile (dependent Tasks ['cargo_1.47.0.bb:do_configure'])
  Task virtual:native:/mnt/b/yoe/master/sources/meta-rust/recipes-devtools/cargo/cargo_1.47.0.bb:do_install (dependent Tasks ['cargo_1.47.0.bb:do_compile'])
  Task virtual:native:/mnt/b/yoe/master/sources/meta-rust/recipes-devtools/cargo/cargo_1.47.0.bb:do_populate_sysroot (dependent Tasks ['cargo_1.47.0.bb:do_install'])
  Task virtual:native:/mnt/b/yoe/master/sources/meta-rust/recipes-devtools/cargo/cargo_1.47.0.bb:do_prepare_recipe_sysroot (dependent Tasks ['cargo_1.47.0.bb:do_populate_sysroot', 'openssl_1.1.1i.bb:do_populate_sysroot', 'curl_7.74.0.bb:do_populate_sysroot', 'rust_1.47.0.bb:do_populate_sysroot', 'zlib_1.2.11.bb:do_populate_sysroot', 'ca-certificates_20210119.bb:do_populate_sysroot', 'libssh2_1.9.0.bb:do_populate_sysroot', 'cargo_1.47.0.bb:do_fetch'])
  Task virtual:native:/mnt/b/yoe/master/sources/meta-rust/recipes-devtools/cargo/cargo_1.47.0.bb:do_configure (dependent Tasks ['cargo_1.47.0.bb:do_prepare_recipe_sysroot', 'cargo_1.47.0.bb:do_patch', 'cargo_1.47.0.bb:do_rust_create_wrappers', 'cargo_1.47.0.bb:do_cargo_setup_snapshot'])

ERROR: Command execution failed: 1

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2021-01-29 10:18:30 -08:00
Johan Anderholm
e5ee880894 cargo_common: Make output more readable 2021-01-08 16:48:36 +01:00
Johan Anderholm
a673320995 cargo: Enable build separation
Place generated artifacts in the directory suggested by bitbake (${B})
instead of directly in the source directory. This has multiple
advantages such as the ability to share source directory between
multiple machine types without risking cross contamination.
2021-01-08 16:47:40 +01:00
Johan Anderholm
cb4f8294d4 Use proper llvm-target for armv7
arm-unknown-linux-gnueabihf was incorrectly used as llvm-target instead
of armv7-unknown-linux-gnueabihf when building for some Cortex A SoCs.
This may cause segfaults in non trivial rust applications on ARMv7
when e.g. +a7 is passed to LLVM. It seems to differ between different
versions of the compiler and LLVM versions.
2021-01-08 10:37:34 +01:00
Khem Raj
7afffa083c rust-bin.bbclass: Do not use append and += together
this is undefined behavior in bitbake, prepend space instead

Signed-off-by: Khem Raj <raj.khem@gmail.com>
2020-11-14 08:56:18 -08:00
Angus Lees
ea97549161 Avoid extra sh process from shell wrapper
`exec` from shell wrapper to avoid persistent sh process
2020-03-15 12:23:52 +11:00
Johan Anderholm
2c4a666b68 Set cainfo to certificates in sysroot-native
This solves SSL CA cert errors.

When a sstate-cache is used sometimes the certificates are not available
at the compile time path anymore. The required certificates are
available in sysroot-native and can be selected with the cainfo
configuration.
2019-08-06 12:16:10 +00:00
Johan Anderholm
2f323e1e9e Update to rust and cargo version 1.36.0 2019-08-02 09:35:31 +00:00
Johan Anderholm
68046d42b8 Correct proxy variable 2019-02-19 14:52:16 +00:00
Johan Anderholm
fa0aebc070 Disable http2 in cargo
Since 1.31.0 cargo requires curl to support http2. Enabling http2 in
curl results in a dependency loop. This commit disables the use of
multiplexing and http2.
2019-02-15 12:34:37 +00:00
Johan Anderholm
9ecc36acb5 Set proxy in cargo if available
This is needed for cargo to use proxies set by bitbake. It is important
for devtooled builds which does not use vendored sources.
2019-01-13 10:45:01 +01:00
Johan Anderholm
496b75fa1f Update to rust version 1.31.1
Also make use of the sources vendored in the rustc package instead of
letting bitbake download the sources.
2019-01-03 17:31:46 +01:00
Hongxu Jia
3b9251e732 cargo_common.bbclass: fix bashism
While /bin/sh -> dash, var-EXTERNALSRC didn't work

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
2018-11-20 22:10:18 +08:00
Mike Yagley
c7fc7986c2 Fix TARGET_CXXFLAGS in cargo_common 2018-11-12 13:44:02 -08:00
Tyler Hall
060e033df9 rust-common: fix remap-path-prefix for 1.26
Before the flag was stabilized, it required two arguments of the form
"from=<from_path>" and "to=<to_path>" respectively. The stabilized
version uses one argument of the form "<from_path>=<to_path>".

Unfortunately the old format is still parsed successfully, but results
in attempting to replace the literal paths "from" and "to".

https://github.com/rust-lang/rust/issues/41555#issuecomment-320951103
2018-07-22 15:48:46 -04:00
Johan Anderholm
8e6c6271fc Handle env and llvm-target for musl
Further changes needed for musl to work.
env needs to be set to "musl" for unwinding work properly.
Also the llvm target should end with "-musl" and not "-gnu".
2018-07-06 19:34:33 +02:00
Johan Anderholm
de42179513 cargo.bbclass: Make release mode optional
Use DEBUG_BUILD to determine if cargo should build with --release or
not. Set DEBUG_BUILD="1" in a recipe to build it without --release.
2018-07-06 19:30:36 +02:00
Johan Anderholm
03d8fb472c Bump to Rust 1.26.2
Remove old versions because they are not compatible with the changes in
rust-common.bbclass
2018-06-16 09:50:47 +02:00
Steven Walter
48e2a7db25 cargo_common.bbclass: improve operation with devtool
Because devtool inhibits all the normal bitbake fetchers, we can't mask crates.io.
Use EXTERNALSRC to detect if we're being built with devtool, and only mask
crates.io if we're not.

Fixes #195
2018-05-19 10:16:55 -04:00
Tyler Hall
52ea673a8f rust: allow configuring panic-strategy
This defaults to "unwind" if not set, so this alone has no effect.

Signed-off-by: Tyler Hall <tylerwhall@gmail.com>
2018-01-23 17:54:15 -05:00
Tyler Hall
e5230147f6 Remap source paths
This is needed for reproducible builds.
2017-11-03 12:41:51 -04:00
Steven Walter
c60b799c11 Allow native variants of rust recipes to build 2017-11-02 16:41:58 -04:00
Tyler Hall
463622c0c6 rust-bin: use linker to set rpath
Patchelf should be reserved for when the ELF cannot be generated
correctly in the first place. This is not the case here because we have
control over the linker flags. The limitation is that -C link-args can
only be specified once, so consolidate the generation of link-args. Also
introduce some new intermediate variables in link-args generation for
customization.

Patchelf was running only in ${PKGD} because patching the ELF in ${D}
would cause objcopy to fail when splitting the debug sections. This is
not a problem when setting it correctly in the linker. The benefit is
that the rpath is correct in the sysroot as well.

This also switches the rpaths to be relative so that they work in both
the sysroot and the target in the same way.

Signed-off-by: Tyler Hall <tyler.hall@lexmark.com>
Signed-off-by: Steven Walter <swalter@lexmark.com>
2017-11-02 16:41:58 -04:00
Tyler Hall
172a226259 rust-bin: use linker wrapper
Commit 864fe95 ("classes: create proper compiler and linker wrappers")
introduced wrapper scripts for the OE toolchain. Specifying the sysroot
manually ceased to function in rust-bin, so use the wrapper where rustc
is called directly.

This should be more reliable than trying to repeat what OE puts in the
$CC variable.
2017-11-02 16:41:58 -04:00
Tyler Hall
c83864ce19 rust-bin: get RUST_TARGET_PATH from rust-common
Since commit 06a138a ("rust: drop custom target finding patch"), rustc
is no longer self-sufficient in finding its target specifications. Any
usage of rustc needs RUST_TARGET_PATH set in the environment.

Move the declaration to rust-common.bbclass and add the export to
rust-bin where rustc is invoked.
2017-11-02 16:41:58 -04:00
Will Newton
7f80e6d68b cargo.bbclass: Avoid bashism in cargo_do_install
The double square brackets are an extension to POSIX so are not
available in some shells. Use a case statement instead.
2017-10-03 22:28:24 -05:00
Johan Anderholm
a4fe235317 Switch to rustbuild
Switch the build process to using Rust's new build system called
rustbuild. At the same time stop using jemalloc on all platforms and
switch to the system allocator since that was simplier to do.
2017-09-29 09:49:33 -05:00
Doug Goldstein
e31d252eb0 cargo{_common}.bbclass: abstract out parts for rustbuild
rustbuild is a cargo based way to build Rust but all of our helper bits
in cargo.bbclass would create a chicken/egg issue with dependencies
since we pull down pre-built binaries and use those for boot strapping.
2017-09-29 09:49:27 -05:00
Doug Goldstein
0cccf8b25c cargo.bbclass: include CXXFLAGS for builds
If g++ is invoked when building native bits with cargo we need to
include CXXFLAGS.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2017-09-29 09:49:25 -05:00
Doug Goldstein
c55fb403f8 cargo.bbclass: improve debug note showing paths
There was a bbnote that showed the path to the rustc and cargo binaries
being used but this was not necessarily correct since it didn't use the
exact variables used.
2017-06-21 11:52:28 -05:00
Doug Goldstein
06a138a4a4 rust: drop custom target finding patch
We shouldn't need to patch rustc to find the target but instead pass the
full path to the target spec. This should solve #138.
2017-06-21 11:52:28 -05:00
Johan Anderholm
e814ede9d9 rust-common: provide C++ wrappers
For similar reasons to the C and linker wrappers, using rustbuild
requires a C++ wrapper to ensure that the right flags that Yocto needs
are passed to the underlying compiler.
2017-06-21 11:52:28 -05:00
Steven Walter
1eb86e935c rust-bin: fix recent breakage
The crate_hash flag is no longer accepted on rust 1.14.  Additionally,
due to the use of wrapper scripts by cargo, we were no longer able to
link correctly due to some link flags getting dropped.  Fix that as well
2017-02-02 10:02:11 -05:00
Doug Goldstein
339cc787cc drop the old fetch behavior for pre Cargo 0.13.0
This behavior is flakey and doesn't work from Cargo 0.13.0 and newer
which aren't part of this repo anymore.
2016-12-07 08:52:03 -06:00
Derek Straka
52c0f97ff6 getVar will expand by default, so the 'True' option is no longer required
Signed-off-by: Derek Straka <derek@asterius.io>
2016-12-06 16:08:41 -05:00
Doug Goldstein
1f18869377 workaround bug in the -C crate_hash option
The -C crate_hash option does not work if multiple versions of the same
crate are being linked into a binary. This can happen if different
dependencies depend on different versions of the same crate. The -C
crate_hash argument causes all versions of a given crate to have the
same crate hash which in turn causes the compiler to select the wrong
one internally and crash. This works around issue #126 for Cargo builds
but does not fix the underlying cause.
2016-12-06 11:08:46 -06:00
Doug Goldstein
0340c31a42 fix bad engrish 2016-12-05 10:55:14 -06:00
Doug Goldstein
d364837120 merge rust-vars and rust-triples to rust-common
Merge two bbclasses that were included in the same places so merge it
into one common file.
2016-12-05 10:55:14 -06:00
Doug Goldstein
43c139f131 rust: remove --disable-static only for rust
Only remove --disable-static from OECONF for things built from the rust
source and not things inheriting rust.
2016-12-05 10:55:14 -06:00
Doug Goldstein
6083dff0b6 drop rust-installer.bbclass
This is only necessary for installations of rust so move the actual
functional bits into the do_install() phase of rust.
2016-12-05 10:55:14 -06:00
Doug Goldstein
846454281e classes/cargo: implement directory source redirection
Reworked the source redirection to use directory source redirection like
I've done for Gentoo. This allows us to specify all crate dependencies
in the bitbake SRC_URI and have Yocto fetch them down using our crate
fetcher and then Cargo will build without reaching out to the network.
2016-12-03 00:36:04 -06:00
Doug Goldstein
f87bb05414 classes/cargo: provide linker for BUILD_SYS
Ensure that we have a linker for the BUILD_SYS (Yocto) / HOST (Rust).
2016-11-30 20:57:05 -06:00
Doug Goldstein
1bf70b13a7 classes/cargo: revert to utilizing compiler/linker wrappers
Don't supply the linker arguments via rustflags and then mangle with the
RUSTFLAGS environment variable. This is also a parial reversion of
4e1bda643e and 5afc0cc471. These changes are reverted since it assumed
people would build with cargo and not directly with rustc. ref #116.
2016-11-30 20:57:04 -06:00