subtree updates
meta-arm: 025f76a14f..aba9250494:
Anusmita Dutta Mazumder (2):
arm-bsp/linux-yocto: Remove EOL Linux yocto kernel 6.1
arm-bsp/n1sdp: update to linux yocto kernel 6.6
Bence Balogh (1):
arm-bsp/trusted-firmware-m: disable libmetal doc generation
Drew Reed (5):
meta-arm: Support firmware building under a multiconfig
bsp,ci: Build Corstone-1000 firmware under multiconfig
bsp: Restore the ability to build firmware only
ci: Add back testing of firmware only builds
ci: Ensure tests are in the Corstone-1000 flash image
meta-raspberrypi: dbf1113a82..95a9103f91:
Khem Raj (1):
python3-sense-hat: Drop PYTHON_PN
Martin Jansa (2):
sdcard_image-rpi.bbclass: include ${IMAGE_NAME_SUFFIX} directly in both ${IMAGE_NAME} and ${IMAGE_LINK_NAME}
sdimage-raspberrypi.wks: increase /boot partition minimal size from 20 to 100
meta-openembedded: 528f273006..9f0e513211:
Andreas Mützel (1):
python3-pynacl: allow -native build
Chen Qi (1):
unixodbc: fix odbc.pc file generation
Daniel Ammann (1):
sdmon: add new package
Derek Straka (9):
python3-trustme: add runtime dependency for tests and re-add to ptest
python3-gunicorn: re-enable working ptests for the package
python-inotify: re-enable working ptests for the package
python3-license-expression: re-enable passing ptests for the package
python3-jdcal: re-add functional ptests
python3-msgpack: re-add functional ptests
python3-parse: re-add functional ptests
python3-typeguard: update ptest dependencies and re-enable functional tests
python3-service-identity: add missing ptest dependencies and re-enable functional tests
Jan Vermaete (1):
netdata: version bump 1.43.2 -> 1.44.3
Joerg Hofrichter (1):
python3-gevent: adding missing dependency to python3-zopeevent
Khawaja Shaheryar (2):
libdaq: add recipe
snort: add snort3 initial recipe
Khem Raj (25):
python3-pocketsphinx: Upgrade to 5.0.3
snort: Do not use llvm libunwind
snort3: Fix contains reference to TMPDIR [buildpaths] warnings
libcamera: Replace VLAs with alloca
dav1d: Inherit missing pkgconfig
webkitgtk3: Fix build on 32bit x86
ptest-packagelists-meta-oe: Remove oprofile for rv32/rv64
python3-jsmin: Fix ptests to run with python 3.12+
python3-ordered-set: Use automake formatter for ptest output
fuse3: Add missing runtime deps for ptests
python3-looseversion: Add recipe
sshfs-fuse: Fix ptest builds with python 3.12
meta-filesystems: Add meta-filesystems-image-ptest
meta-multimedia-image-ptest: Add images to enable BBCLASSEXTEND parallel execution
meta-networking-image-ptest: Add images to enable BBCLASSEXTEND parallel execution
python3-scapy: Add missing rdeps for ptests
ptest-packagelists-meta-oe.inc: Remove oprofile from PTESTS_PROBLEMS_META_OE
ptest-packagelists-meta-networking: firewalld hangs therefore disabled
ptest-packagelists-meta-perl.inc: Move couple of test to PTESTS_FAST_META_PERL
openhpi: Fix ptest run time failures
squid: Add missing bash dependency for ptest package
meta-networking: Express dependency on meta-python
ostree: Remove strace from ptest rdeps
python3-pydantic-core,python3-pydantic: Update to 2.16.3 and 2.6.3 respectively
python3-pydantic-core: Fix build for arches without 64bit atomics
Lei Maohui (1):
Fix install error when enable multilib.
Markus Volk (7):
iwd: update 2.13 -> 2.14
libgedit-gtksourceview: update 299.0.5 -> 299.1.0
gedit: update 46.1 -> 46.2
mutter: update 45.3 -> 45.4
gnome-shell: update 45.3 -> 45.4
gnome-control-center: update 45.2 -> 45.3
dav1d: update 1.3.0 -> 1.4.0
Martin Jansa (5):
python3-httpx: respect libdir in packaging
snort3: drop SRCPV from PV
snort3: fix snort.pc
gattlib: use python3native and depend on python3-packaging-native
networkmanager-fortisslvpn: use python3native and depend on python3-packaging-native
Mingli Yu (1):
mariadb: Upgrade to 10.11.7
Niko Mauno (2):
python3-pybind11: Migrate to python_setuptools_build_meta
python3-pybind11: Restore strip prevention patch
Oleh Matiusha (1):
yasm: improve reproducibility
Peter Marko (1):
dnsmasq: Upgrade 2.89 -> 2.90
Romain Naour (1):
wavemon: add recipe for version 0.9.5
Sascha Hauer (1):
signing.bbclass: fix wrong function name
Tim Orling (16):
python_mesonpy.bbclass: move to oe-core
python3-meson-python: move to oe-core
python3-pyproject-metadata: move to oe-core
meta-python: drop ${PYTHON_PN}
meta-oe: drop ${PYTHON_PN}
meta-filesystems: drop ${PYTHON_PN}
meta-networking: drop ${PYTHON_PN}
meta-gnome: drop ${PYTHON_PN}
python3-pytest-lazy-fixtures: add 1.0.5
python3-prettytable: upgrade 3.9.0 => 3.10.0; fix ptests
python3-pytest-lazy-fixture: drop recipe
meta-oe-image-ptest: add PTESTS_PROBLEMS_META_OE
meta-perl-image-ptest: add PTESTS_PROBLEMS_META_PERL
meta-python-image-ptest: add PTESTS_PROBLEMS_META_PYTHON
libencode-perl: drop recipe
libencode-locale-perl: drop recipe
Wang Mingyu (49):
babl: upgrade 0.1.106 -> 0.1.108
btop: upgrade 1.3.0 -> 1.3.2
gegl: upgrade 0.4.46 -> 0.4.48
gjs: upgrade 1.78.3 -> 1.78.4
gnome-bluetooth: upgrade 42.7 -> 42.8
gnome-keyring: upgrade 42.1 -> 46.1
isomd5sum: upgrade 1.2.3 -> 1.2.4
libei: upgrade 1.2.0 -> 1.2.1
libmanette: upgrade 0.2.6 -> 0.2.7
libmime-types-perl: upgrade 2.24 -> 2.26
logwatch: upgrade 7.9 -> 7.10
mpich: upgrade 4.1.2 -> 4.2.0
ostree: upgrade 2024.1 -> 2024.3
python3-aiohue: upgrade 4.7.0 -> 4.7.1
python3-awesomeversion: upgrade 23.11.0 -> 24.2.0
python3-bidict: upgrade 0.22.1 -> 0.23.0
python3-cantools: upgrade 39.4.3 -> 39.4.4
python3-cmake: upgrade 3.28.1 -> 3.28.3
python3-django: upgrade 5.0.1 -> 5.0.2
python3-dnspython: upgrade 2.5.0 -> 2.6.0
python3-elementpath: upgrade 4.2.0 -> 4.3.0
python3-engineio: upgrade 4.8.2 -> 4.9.0
python3-gevent: upgrade 23.9.1 -> 24.2.1
unbound: upgrade 1.19.0 -> 1.19.1
wireshark: upgrade 4.2.2 -> 4.2.3
protobuf: upgrade 4.25.2 -> 4.25.3
webkitgtk3: upgrade 2.42.4 -> 2.42.5
python3-tqdm: upgrade 4.66.1 -> 4.66.2
python3-google-api-python-client: upgrade 2.116.0 -> 2.118.0
python3-httpcore: upgrade 1.0.2 -> 1.0.3
python3-jsbeautifier: upgrade 1.14.11 -> 1.15.1
python3-langtable: upgrade 0.0.64 -> 0.0.65
python3-polyline: upgrade 2.0.1 -> 2.0.2
python3-protobuf: upgrade 4.25.2 -> 4.25.3
python3-pymisp: upgrade 2.4.184 -> 2.4.185
python3-pymodbus: upgrade 3.6.3 -> 3.6.4
python3-pytest-asyncio: upgrade 0.23.4 -> 0.23.5
python3-tox: upgrade 4.12.1 -> 4.13.0
python3-twine: upgrade 4.0.2 -> 5.0.0
python3-watchdog: upgrade 3.0.0 -> 4.0.0
python3-zopeinterface: upgrade 6.1 -> 6.2
remmina: upgrade 1.4.33 -> 1.4.34
sip: upgrade 6.8.2 -> 6.8.3
python3-google-auth: upgrade 2.27.0 -> 2.28.0
python3-gspread: upgrade 6.0.1 -> 6.0.2
python3-socketio: upgrade 5.11.0 -> 5.11.1
python3-sentry-sdk: upgrade 1.40.0 -> 1.40.4
python3-pydantic-core: upgrade 2.14.6 -> 2.16.1
python3-pydantic: upgrade 2.5.3 -> 2.6.0
William Lyu (1):
e2tools: Add ptest
Yi Zhao (1):
audit: upgrade 3.1.2 -> 4.0
Yoann Congal (2):
influxdb: Fix /etc files owner
influxdb: Add missing group to static id
chenheyun (1):
dropwatch: Use header files from sysroot instead of build host
poky: fc8e5d7c13..25d60ac6f6:
Adrian Freihofer (5):
devtool: ide-sdk python 3.12 escaping
sdk-manual: extensible.rst: cover devtool ide-sdk
devtool: ide-sdk launch.json per recipe only
devtool: ide-sdk prefer sources from workspace
oe-selftest devtool: ide-sdk tests
Alexander Kanavin (1):
dbus: disable assertions and enable only modular tests
Alexis Lothoré (7):
testimage: log exception when failing to retrieve artifacts
lib/oeqa: share get_json_result_dir helper
testimage: create a list of failed test post actions
oeqa/utils/postactions: isolate directory creation in dedicated action
oeqa/utils/postactions: add target disk usage stat as post action
oeqa/utils/postactions: testimage: add host disk usage stat as post action
oeqa/lib/utils/postactions: fix host disk usage stats retrieval
Bruce Ashfield (8):
linux-yocto/6.6: update to v6.6.17
linux-yocto/6.6: update CVE exclusions
linux-yocto/6.6: enable squashfs for selftests
linux-yocto/6.6: config: x86 tidy & consolidation
kern-tools: depend on git-replacement-native
linux-yocto/6.6: genericarm64 configuration/definition
linux-yocto/6.6: update to v6.6.18
linux-yocto/6.6: update CVE exclusions
Christoph Vogtländer (1):
overlayfs: add missing vardeps
Claus Stovgaard (1):
wpa-supplicant: Fix CVE-2023-52160
Eilís 'pidge' Ní Fhlannagáin (2):
creategroup*: Remove coreutils-native as a DEPENDS
selftest-users: Convoluted selftest for USERADD_DEPENDS
Emil Kronborg (1):
bluez5: remove configuration files from install task
Enguerrand de Ribaucourt (4):
devtool: ide: define compilerPath for meson projects
Revert "meson: use absolute cross-compiler paths"
bitbake: bitbake: progressbar: accept value over initial maxval
devtool: ide-sdk source mapping for vscode
Enrico Jörns (1):
wic: 'empty' plugin: fix typo in comment
Joe Slater (1):
qemuboot: predictable network interface names
Jonathan GUILLOT (2):
lib/oe/package: fix LOCALE_PATHS scan to create locale packages
glibc-locale: add an explicit dedicated package for locale.alias file
Jose Quaresma (1):
go: update 1.20.13 -> 1.20.14
Joshua Watt (1):
bitbake: asyncrpc: Add support for server headers
Khem Raj (6):
ncurses: Always pass -D_GNU_SOURCE
linux-yocto: Remove unused patch
ref-manual: variables: remove PYTHON_PN
python3-bcrypt: Fix build break on arches without 64 bit atomics
python3-maturin: Recognise riscv32 architecture
llvm: Update to 18.1.0 RC4
Lee Chee Yang (1):
migration-guide: add release notes for 4.3.3
Lei Maohui (1):
rpm: Fix the following error when run nativesdk-rpm in nativesdk environment.
Martin Jansa (1):
glib-2.0: backport a switch from distutils to packaging in codegen
Michael Halstead (1):
yocto-uninative: Update to 4.4 for glibc 2.39
Michael Opdenacker (5):
ref-manual: system-requirements: update packages to build docs
ref-manual: release-process: grammar fix
manuals: suppress excess use of "following" word
dev-manual: packages: clarify shared PR service constraint
dev-manual: packages: need enough free space
Munehisa Kamata (1):
kernel.bbclass: Set pkg-config variables for building modules
Nick Owens (1):
python3: dont disable readline module for editline
Philip Lorenz (1):
bitbake: fetch2: Ensure that git LFS objects are available
Piotr Łobacz (1):
useradd.bbclass: Fix order of postinst-useradd-*
Richard Purdie (6):
numactl: Upgrade 2.0.17 -> 2.0.18
lttng-ust: Upgrade 2.13.6 -> 2.13.7
oeqa/selftest/rust: Simplify the rust testsuite output gathering/processing
recipetool: Fix errors with meta-poky bbappend
bitbake: runqueue: Add support for BB_LOADFACTOR_MAX
mirrors: Switch llvm to use shallow cloning
Ross Burton (4):
base-files: add usage warning to motd
libexif: remove unused version_underscore
gstreamer1.0: skip a test that is known to be flaky
linux-firmware: split out more firmware pieces
Simone Weiß (6):
patchtest: provide further guidance for failed testcases
patchtest: Skip test for CVE_CHECK_IGNORE for older branches
meta: Remove some not needed CVE_STATUS
meta: Update CVE_STATUS for incorrect cpes
cve-check: Log if CVE_STATUS set but not reported for component
dev-manual: Rephrase spdx creation
Soumya Sambu (1):
bind: Upgrade 9.18.21 -> 9.18.24
Tim Orling (3):
bitbake: layerindexlib: fix missing layer branch backtrace
python3-cryptography{-vectors}: upgrade to 42.0.5
python3-attrs: disable Hypothesis deadline
Tobias Hagelborn (1):
bitbake: hashserv: Re-enable connection pooling with psycopg 3 driver
Trevor Gamblin (1):
python3-git: upgrade 3.1.41 -> 3.1.42
Trevor Woerner (1):
wic: allow imager-specific filename extensions
Ulrich Ölmann (1):
bitbake: taskexp_ncurses: fix execution example in introductory comment
Wang Mingyu (44):
bash-completion: upgrade 2.11 -> 2.12.0
ccache: upgrade 4.9 -> 4.9.1
createrepo-c: upgrade 1.0.3 -> 1.0.4
ed: upgrade 1.20 -> 1.20.1
efivar: upgrade 38 -> 39
gcr: upgrade 4.1.0 -> 4.2.0
git: upgrade 2.43.0 -> 2.44.0
libffi: upgrade 3.4.5 -> 3.4.6
libgpg-error: upgrade 1.47 -> 1.48
libhandy: upgrade 1.8.2 -> 1.8.3
libksba: upgrade 1.6.5 -> 1.6.6
libmicrohttpd: upgrade 0.9.77 -> 1.0.1
libpng: upgrade 1.6.41 -> 1.6.42
libsecret: upgrade 0.21.2 -> 0.21.4
libunistring: upgrade 1.1 -> 1.2
liburi-perl: upgrade 5.25 -> 5.27
libxext: upgrade 1.3.5 -> 1.3.6
libxkbfile: upgrade 1.1.2 -> 1.1.3
libxvmc: upgrade 1.0.13 -> 1.0.14
lighttpd: upgrade 1.4.73 -> 1.4.74
makedepend: upgrade 1.0.8 -> 1.0.9
mpg123: upgrade 1.32.4 -> 1.32.5
ofono: upgrade 2.3 -> 2.4
pango: upgrade 1.51.0 -> 1.52.0
pciutils: upgrade 3.10.0 -> 3.11.1
pkgconf: upgrade 2.1.0 -> 2.1.1
python3-beartype: upgrade 0.17.0 -> 0.17.2
python3-certifi: upgrade 2023.11.17 -> 2024.2.2
python3-dbusmock: upgrade 0.30.2 -> 0.31.1
python3-hypothesis: upgrade 6.97.3 -> 6.98.12
python3-pip: upgrade 23.3.2 -> 24.0
python3-pycairo: upgrade 1.25.1 -> 1.26.0
python3-pytest: upgrade 8.0.0 -> 8.0.2
python3-pytz: upgrade 2023.4 -> 2024.1
python3-setuptools-rust: upgrade 1.8.1 -> 1.9.0
python3-trove-classifiers: upgrade 2024.1.8 -> 2024.2.23
python3-typing-extensions: upgrade 4.9.0 -> 4.10.0
python3: upgrade 3.12.1 -> 3.12.2
python3-urllib3: upgrade 2.1.0 -> 2.2.1
python3-yamllint: upgrade 1.33.0 -> 1.35.1
swig: upgrade 4.2.0 -> 4.2.1
xkbcomp: upgrade 1.4.6 -> 1.4.7
xkeyboard-config: upgrade 2.40 -> 2.41
xprop: upgrade 1.2.6 -> 1.2.7
Xiangyu Chen (2):
systemd-systemctl: fix dead loop when multi services enable each other
libc-locale: fix ASCII compatible warning cause build failure.
Xiaotian Wu (2):
loongarch64: change -march to loongarch64
openssl: Match target name for loongarch64
Yash Shinde (3):
rust: Upgrade 1.74.1 -> 1.75.0
rust: Revert PGO to it's default
rust: reproducibility issue fix with v1.75
Yoann Congal (1):
waf: Improve version parsing to avoid failing on warnings
Change-Id: I6dfb848feb4ec8f5aae56a9ccbff475f4eb1edc6
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
diff --git a/poky/meta/recipes-devtools/rust/rust_1.75.0.bb b/poky/meta/recipes-devtools/rust/rust_1.75.0.bb
new file mode 100644
index 0000000..76e1fe2
--- /dev/null
+++ b/poky/meta/recipes-devtools/rust/rust_1.75.0.bb
@@ -0,0 +1,361 @@
+SUMMARY = "Rust compiler and runtime libaries"
+HOMEPAGE = "http://www.rust-lang.org"
+SECTION = "devel"
+LICENSE = "(MIT | Apache-2.0) & Unicode-TOU"
+LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=c2cccf560306876da3913d79062a54b9"
+
+inherit rust
+inherit cargo_common
+
+DEPENDS += "file-native python3-native"
+DEPENDS:append:class-native = " rust-llvm-native"
+DEPENDS:append:class-nativesdk = " nativesdk-rust-llvm"
+
+DEPENDS += "rust-llvm (=${PV})"
+
+RDEPENDS:${PN}:append:class-target = " gcc g++ binutils"
+
+# Otherwise we'll depend on what we provide
+INHIBIT_DEFAULT_RUST_DEPS:class-native = "1"
+# We don't need to depend on gcc-native because yocto assumes it exists
+PROVIDES:class-native = "virtual/${TARGET_PREFIX}rust"
+
+S = "${RUSTSRC}"
+
+# Use at your own risk, accepted values are stable, beta and nightly
+RUST_CHANNEL ?= "stable"
+PV .= "${@bb.utils.contains('RUST_CHANNEL', 'stable', '', '-${RUST_CHANNEL}', d)}"
+
+export FORCE_CRATE_HASH="${BB_TASKHASH}"
+
+RUST_ALTERNATE_EXE_PATH ?= "${STAGING_LIBDIR}/llvm-rust/bin/llvm-config"
+RUST_ALTERNATE_EXE_PATH_NATIVE = "${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config"
+
+# We don't want to use bitbakes vendoring because the rust sources do their
+# own vendoring.
+CARGO_DISABLE_BITBAKE_VENDORING = "1"
+
+# We can't use RUST_BUILD_SYS here because that may be "musl" if
+# TCLIBC="musl". Snapshots are always -unknown-linux-gnu
+setup_cargo_environment () {
+ # The first step is to build bootstrap and some early stage tools,
+ # these are build for the same target as the snapshot, e.g.
+ # x86_64-unknown-linux-gnu.
+ # Later stages are build for the native target (i.e. target.x86_64-linux)
+ cargo_common_do_configure
+}
+
+inherit rust-target-config
+
+do_rust_setup_snapshot () {
+ for installer in "${WORKDIR}/rust-snapshot-components/"*"/install.sh"; do
+ "${installer}" --prefix="${WORKDIR}/rust-snapshot" --disable-ldconfig
+ done
+
+ # Some versions of rust (e.g. 1.18.0) tries to find cargo in stage0/bin/cargo
+ # and fail without it there.
+ mkdir -p ${RUSTSRC}/build/${BUILD_SYS}
+ ln -sf ${WORKDIR}/rust-snapshot/ ${RUSTSRC}/build/${BUILD_SYS}/stage0
+
+ # Need to use uninative's loader if enabled/present since the library paths
+ # are used internally by rust and result in symbol mismatches if we don't
+ if [ ! -z "${UNINATIVE_LOADER}" -a -e "${UNINATIVE_LOADER}" ]; then
+ for bin in cargo rustc rustdoc; do
+ patchelf-uninative ${WORKDIR}/rust-snapshot/bin/$bin --set-interpreter ${UNINATIVE_LOADER}
+ done
+ fi
+}
+addtask rust_setup_snapshot after do_unpack before do_configure
+addtask do_test_compile after do_configure do_rust_gen_targets
+do_rust_setup_snapshot[dirs] += "${WORKDIR}/rust-snapshot"
+do_rust_setup_snapshot[vardepsexclude] += "UNINATIVE_LOADER"
+
+python do_configure() {
+ import json
+ import configparser
+
+ # toml is rather similar to standard ini like format except it likes values
+ # that look more JSON like. So for our purposes simply escaping all values
+ # as JSON seem to work fine.
+
+ e = lambda s: json.dumps(s)
+
+ config = configparser.RawConfigParser()
+
+ # [target.ARCH-poky-linux]
+ host_section = "target.{}".format(d.getVar('RUST_HOST_SYS'))
+ config.add_section(host_section)
+
+ llvm_config_target = d.expand("${RUST_ALTERNATE_EXE_PATH}")
+ llvm_config_build = d.expand("${RUST_ALTERNATE_EXE_PATH_NATIVE}")
+ config.set(host_section, "llvm-config", e(llvm_config_target))
+
+ config.set(host_section, "cxx", e(d.expand("${RUST_TARGET_CXX}")))
+ config.set(host_section, "cc", e(d.expand("${RUST_TARGET_CC}")))
+ config.set(host_section, "linker", e(d.expand("${RUST_TARGET_CCLD}")))
+ if "musl" in host_section:
+ config.set(host_section, "musl-root", e(d.expand("${STAGING_DIR_HOST}${exec_prefix}")))
+
+ # If we don't do this rust-native will compile it's own llvm for BUILD.
+ # [target.${BUILD_ARCH}-unknown-linux-gnu]
+ build_section = "target.{}".format(d.getVar('RUST_BUILD_SYS'))
+ if build_section != host_section:
+ config.add_section(build_section)
+
+ config.set(build_section, "llvm-config", e(llvm_config_build))
+
+ config.set(build_section, "cxx", e(d.expand("${RUST_BUILD_CXX}")))
+ config.set(build_section, "cc", e(d.expand("${RUST_BUILD_CC}")))
+ config.set(build_section, "linker", e(d.expand("${RUST_BUILD_CCLD}")))
+
+ target_section = "target.{}".format(d.getVar('RUST_TARGET_SYS'))
+ if target_section != host_section and target_section != build_section:
+ config.add_section(target_section)
+
+ config.set(target_section, "llvm-config", e(llvm_config_target))
+
+ config.set(target_section, "cxx", e(d.expand("${RUST_TARGET_CXX}")))
+ config.set(target_section, "cc", e(d.expand("${RUST_TARGET_CC}")))
+ config.set(target_section, "linker", e(d.expand("${RUST_TARGET_CCLD}")))
+
+ # [llvm]
+ config.add_section("llvm")
+ config.set("llvm", "static-libstdcpp", e(False))
+ if "llvm" in (d.getVar('TC_CXX_RUNTIME') or ""):
+ config.set("llvm", "use-libcxx", e(True))
+
+ # [rust]
+ config.add_section("rust")
+ config.set("rust", "rpath", e(True))
+ config.set("rust", "remap-debuginfo", e(True))
+ config.set("rust", "channel", e(d.expand("${RUST_CHANNEL}")))
+
+ # Whether or not to optimize the compiler and standard library
+ config.set("rust", "optimize", e(True))
+
+ # Emits extraneous output from tests to ensure that failures of the test
+ # harness are debuggable just from logfiles
+ config.set("rust", "verbose-tests", e(True))
+
+ # [build]
+ config.add_section("build")
+ config.set("build", "submodules", e(False))
+ config.set("build", "docs", e(False))
+ config.set("build", "tools", ["rust-demangler",])
+
+ rustc = d.expand("${WORKDIR}/rust-snapshot/bin/rustc")
+ config.set("build", "rustc", e(rustc))
+
+ cargo = d.expand("${WORKDIR}/rust-snapshot/bin/cargo")
+ config.set("build", "cargo", e(cargo))
+
+ config.set("build", "vendor", e(True))
+
+ config.set("build", "target", e([d.getVar("RUST_TARGET_SYS")]))
+
+ config.set("build", "host", e([d.getVar("RUST_HOST_SYS")]))
+
+ # We can't use BUILD_SYS since that is something the rust snapshot knows
+ # nothing about when trying to build some stage0 tools (like fabricate)
+ config.set("build", "build", e(d.getVar("RUST_BUILD_SYS")))
+
+ # [install]
+ config.add_section("install")
+ # ./x.py install doesn't have any notion of "destdir"
+ # but we can prepend ${D} to all the directories instead
+ config.set("install", "prefix", e(d.getVar("D") + d.getVar("prefix")))
+ config.set("install", "bindir", e(d.getVar("D") + d.getVar("bindir")))
+ config.set("install", "libdir", e(d.getVar("D") + d.getVar("libdir")))
+ config.set("install", "datadir", e(d.getVar("D") + d.getVar("datadir")))
+ config.set("install", "mandir", e(d.getVar("D") + d.getVar("mandir")))
+ config.set("install", "sysconfdir", e(d.getVar("D") + d.getVar("sysconfdir")))
+
+ with open("config.toml", "w") as f:
+ f.write('change-id = 116881\n\n')
+ config.write(f)
+
+ # set up ${WORKDIR}/cargo_home
+ bb.build.exec_func("setup_cargo_environment", d)
+}
+
+rust_runx () {
+ echo "COMPILE ${PN}" "$@"
+
+ # CFLAGS, LDFLAGS, CXXFLAGS, CPPFLAGS are used by rust's build for a
+ # wide range of targets (not just TARGET). Yocto's settings for them will
+ # be inappropriate, avoid using.
+ unset CFLAGS
+ unset LDFLAGS
+ unset CXXFLAGS
+ unset CPPFLAGS
+
+ export RUSTFLAGS="${RUST_DEBUG_REMAP}"
+
+ # Copy the natively built llvm-config into the target so we can run it. Horrible,
+ # but works!
+ if [ ${RUST_ALTERNATE_EXE_PATH_NATIVE} != ${RUST_ALTERNATE_EXE_PATH} -a ! -f ${RUST_ALTERNATE_EXE_PATH} ]; then
+ mkdir -p `dirname ${RUST_ALTERNATE_EXE_PATH}`
+ cp ${RUST_ALTERNATE_EXE_PATH_NATIVE} ${RUST_ALTERNATE_EXE_PATH}
+ if [ -e ${STAGING_LIBDIR_NATIVE}/libc++.so.1 ]; then
+ chrpath -r \$ORIGIN/../../../../../`basename ${STAGING_DIR_NATIVE}`${libdir_native} ${RUST_ALTERNATE_EXE_PATH}
+ else
+ chrpath -d ${RUST_ALTERNATE_EXE_PATH}
+ fi
+ fi
+
+ oe_cargo_fix_env
+
+ python3 src/bootstrap/bootstrap.py ${@oe.utils.parallel_make_argument(d, '-j %d')} "$@" --verbose
+}
+rust_runx[vardepsexclude] += "PARALLEL_MAKE"
+
+require rust-source.inc
+require rust-snapshot.inc
+
+INSANE_SKIP:${PN}:class-native = "already-stripped"
+FILES:${PN} += "${libdir}/rustlib"
+FILES:${PN} += "${libdir}/*.so"
+FILES:${PN}-dev = ""
+
+do_compile () {
+}
+
+do_test_compile[dirs] = "${B}"
+do_test_compile () {
+ rust_runx build src/tools/remote-test-server --target "${RUST_TARGET_SYS}"
+}
+
+ALLOW_EMPTY:${PN} = "1"
+
+PACKAGES =+ "${PN}-rustdoc ${PN}-tools-clippy ${PN}-tools-rustfmt"
+FILES:${PN}-rustdoc = "${bindir}/rustdoc"
+FILES:${PN}-tools-clippy = "${bindir}/cargo-clippy ${bindir}/clippy-driver"
+FILES:${PN}-tools-rustfmt = "${bindir}/rustfmt"
+RDEPENDS:${PN}-rustdoc = "${PN}"
+RDEPENDS:${PN}-tools-clippy = "${PN}"
+RDEPENDS:${PN}-tools-rustfmt = "${PN}"
+
+SUMMARY:${PN}-tools-clippy = "A collection of lints to catch common mistakes and improve your Rust code"
+SUMMARY:${PN}-tools-rustfmt = "A tool for formatting Rust code according to style guidelines"
+
+do_install () {
+ rust_do_install
+}
+
+rust_do_install() {
+ rust_runx install
+}
+
+rust_do_install:class-nativesdk() {
+ export PSEUDO_UNLOAD=1
+ rust_runx install
+ rust_runx install clippy
+ rust_runx install rustfmt
+ unset PSEUDO_UNLOAD
+
+ install -d ${D}${bindir}
+ for i in cargo-clippy clippy-driver rustfmt; do
+ cp build/${RUST_BUILD_SYS}/stage2-tools/${RUST_HOST_SYS}/release/$i ${D}${bindir}
+ chrpath -r "\$ORIGIN/../lib" ${D}${bindir}/$i
+ done
+
+ chown root:root ${D}/ -R
+ rm ${D}${libdir}/rustlib/uninstall.sh
+ rm ${D}${libdir}/rustlib/install.log
+ rm ${D}${libdir}/rustlib/manifest*
+}
+
+EXTRA_TOOLS ?= "cargo-clippy clippy-driver rustfmt"
+rust_do_install:class-target() {
+ export PSEUDO_UNLOAD=1
+ rust_runx install
+ rust_runx install clippy
+ rust_runx install rustfmt
+ unset PSEUDO_UNLOAD
+
+ install -d ${D}${bindir}
+ for i in ${EXTRA_TOOLS}; do
+ cp build/${RUST_BUILD_SYS}/stage2-tools/${RUST_HOST_SYS}/release/$i ${D}${bindir}
+ chrpath -r "\$ORIGIN/../lib" ${D}${bindir}/$i
+ done
+
+ install -d ${D}${libdir}/rustlib/${RUST_HOST_SYS}
+ install -m 0644 ${WORKDIR}/rust-targets/${RUST_HOST_SYS}.json ${D}${libdir}/rustlib/${RUST_HOST_SYS}/target.json
+
+ chown root:root ${D}/ -R
+ rm ${D}${libdir}/rustlib/uninstall.sh
+ rm ${D}${libdir}/rustlib/install.log
+ rm ${D}${libdir}/rustlib/manifest*
+}
+
+addtask do_update_snapshot after do_patch
+do_update_snapshot[nostamp] = "1"
+
+# Run with `bitbake -c update_snapshot rust` to update `rust-snapshot.inc`
+# with the checksums for the rust snapshot associated with this rustc-src
+# tarball.
+python do_update_snapshot() {
+ import json
+ import re
+ import sys
+
+ from collections import defaultdict
+
+ with open(os.path.join(d.getVar("S"), "src", "stage0.json")) as f:
+ j = json.load(f)
+
+ config_dist_server = j['config']['dist_server']
+ compiler_date = j['compiler']['date']
+ compiler_version = j['compiler']['version']
+
+ src_uri = defaultdict(list)
+ for k, v in j['checksums_sha256'].items():
+ m = re.search(f"dist/{compiler_date}/(?P<component>.*)-{compiler_version}-(?P<arch>.*)-unknown-linux-gnu\\.tar\\.xz", k)
+ if m:
+ component = m.group('component')
+ arch = m.group('arch')
+ src_uri[arch].append(f"SRC_URI[{component}-snapshot-{arch}.sha256sum] = \"{v}\"")
+
+ snapshot = """\
+## This is information on the rust-snapshot (binary) used to build our current release.
+## snapshot info is taken from rust/src/stage0.json
+## Rust is self-hosting and bootstraps itself with a pre-built previous version of itself.
+## The exact (previous) version that has been used is specified in the source tarball.
+## The version is replicated here.
+
+SNAPSHOT_VERSION = "%s"
+
+""" % compiler_version
+
+ for arch, components in src_uri.items():
+ snapshot += "\n".join(components) + "\n\n"
+
+ snapshot += """\
+SRC_URI += " \\
+ ${RUST_DIST_SERVER}/dist/${RUST_STD_SNAPSHOT}.tar.xz;name=rust-std-snapshot-${RUST_BUILD_ARCH};subdir=rust-snapshot-components \\
+ ${RUST_DIST_SERVER}/dist/${RUSTC_SNAPSHOT}.tar.xz;name=rustc-snapshot-${RUST_BUILD_ARCH};subdir=rust-snapshot-components \\
+ ${RUST_DIST_SERVER}/dist/${CARGO_SNAPSHOT}.tar.xz;name=cargo-snapshot-${RUST_BUILD_ARCH};subdir=rust-snapshot-components \\
+"
+
+RUST_DIST_SERVER = "%s"
+
+RUST_STD_SNAPSHOT = "rust-std-${SNAPSHOT_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu"
+RUSTC_SNAPSHOT = "rustc-${SNAPSHOT_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu"
+CARGO_SNAPSHOT = "cargo-${SNAPSHOT_VERSION}-${RUST_BUILD_ARCH}-unknown-linux-gnu"
+""" % config_dist_server
+
+ with open(os.path.join(d.getVar("THISDIR"), "rust-snapshot.inc"), "w") as f:
+ f.write(snapshot)
+}
+
+RUSTLIB_DEP:class-nativesdk = ""
+
+# musl builds include libunwind.a
+INSANE_SKIP:${PN} = "staticdev"
+
+BBCLASSEXTEND = "native nativesdk"
+
+# Since 1.70.0 upgrade this fails to build with gold:
+# http://errors.yoctoproject.org/Errors/Details/708196/
+# ld: error: version script assignment of to symbol __rust_alloc_error_handler_should_panic failed: symbol not defined
+LDFLAGS:append = "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd', '', d)}"