3 Commits

Author SHA1 Message Date
Steven Walter
8b0b52d5b3 Merge pull request #221 from stfl/sumo_cargo_22
libstd don't fail if incremental build files don't exist (sumo)
2018-12-05 11:12:38 -05:00
Stefan Lendl
1587d5b8dc libstd don't fail if incremental build files don't exist (sumo) 2018-12-05 15:48:38 +01:00
Derek Straka
3efa0f069f Update Jenkins file to point to sumo branches
Signed-off-by: Derek Straka <derek@asterius.io>
2018-05-22 09:44:21 -04:00
110 changed files with 3155 additions and 1602 deletions

View File

@@ -1,33 +0,0 @@
on: [pull_request]
jobs:
build:
env:
YOCTO_VERSION: 3.3.2
YOCTO_BRANCH: hardknott
runs-on: self-hosted
steps:
- uses: actions/checkout@v2
with:
path: 'meta-rust'
- name: Fetch poky
run: |
mv poky/build/sstate-cache . || true
rm -rf poky meta-openembedded
git clone -b $YOCTO_BRANCH --single-branch git://git.yoctoproject.org/poky
git clone -b $YOCTO_BRANCH --single-branch git://git.openembedded.org/meta-openembedded
- name: Configure build
run: |
cd poky
. oe-init-build-env
mv ../../sstate-cache . || true
bitbake-layers add-layer ../../meta-openembedded/meta-oe
bitbake-layers add-layer ../../meta-rust
echo 'PARALLEL_MAKE:pn-rust-llvm-native = "-j2"' >> conf/local.conf
echo 'TOOLCHAIN_HOST_TASK:append = " packagegroup-rust-cross-canadian-${MACHINE}"' >> conf/local.conf
echo 'PREFERRED_PROVIDER_virtual/kernel = "linux-dummy"' >> conf/local.conf
echo 'INHERIT_remove = "uninative"' >> conf/local.conf
- name: Run bitbake
run: |
cd poky
. oe-init-build-env
bitbake rust-hello-world

4
Jenkinsfile vendored
View File

@@ -15,7 +15,7 @@ for (int i = 0; i < targets.size(); i++) {
sh "./scripts/setup-env.sh"
}
stage("fetch $machine") {
sh "GIT_LOCAL_REF_DIR=/srv/git-cache/ ./scripts/fetch.sh master"
sh "GIT_LOCAL_REF_DIR=/srv/git-cache/ ./scripts/fetch.sh sumo"
}
stage("build $machine") {
sh "MACHINE=${machine} ./scripts/build.sh"
@@ -25,7 +25,7 @@ for (int i = 0; i < targets.size(); i++) {
throw e
} finally {
stage("push build cache $machine") {
sh "./scripts/publish-build-cache.sh master"
sh "./scripts/publish-build-cache.sh sumo"
}
stage("cleanup $machine") {
sh "./scripts/cleanup-env.sh"

View File

@@ -13,7 +13,7 @@ This OpenEmbedded layer provides the rust compiler, tools for building packages
## What doesn't:
- Using anything but x86_64 as the build environment
- rust (built for target) [issue #81](https://github.com/meta-rust/meta-rust/issues/81)
- rust (built for target) issue #81
## What's untested:
@@ -27,7 +27,7 @@ rust packages do), then it's especially easy. Otherwise you should probably
get the code building in cargo first.
Once your package builds in cargo, you can use
[cargo-bitbake](https://github.com/meta-rust/cargo-bitbake) to generate a bitbake
[cargo-bitbake](https://github.com/cardoe/cargo-bitbake) to generate a bitbake
recipe for it. This allows bitbake to fetch all the necessary dependent
crates, as well as a pegged version of the crates.io index, to ensure maximum
reproducibility.
@@ -39,7 +39,7 @@ contained within it
## Pitfalls
- TARGET_SYS _must_ be different from BUILD_SYS. This is due to the way Rust configuration options are tracked for different targets. This is the reason we use the Yocto triples instead of the native Rust triples. See [rust-lang/cargo#3349](https://github.com/rust-lang/cargo/issues/3349).
- TARGET_SYS _must_ be different from BUILD_SYS. This is due to the way Rust configuration options are tracked for different targets. This is the reason we use the Yocto triples instead of the native Rust triples. See rust-lang/cargo#3349.
## Dependencies
@@ -59,7 +59,7 @@ The master branch supports the latest master of poky. When poky creates releases
All new patches against rust, rust-llvm, and cargo must have referenced
upstream issues or PRs opened or an explanation why the patch cannot be
upstreamed. This corresponds to the OpenEmbedded policy for other meta layers.
upstreamed. This cooresponds to the OpenEmbedded policy for other meta layers.
More info can be seen on the wiki.

View File

@@ -9,34 +9,25 @@ inherit cargo_common
CARGO = "cargo"
# We need cargo to compile for the target
BASEDEPENDS:append = " cargo-native"
BASEDEPENDS_append = " cargo-native"
# Ensure we get the right rust variant
DEPENDS:append:class-target = " virtual/${TARGET_PREFIX}rust ${RUSTLIB_DEP}"
DEPENDS:append:class-native = " rust-native"
DEPENDS_append_class-target = " virtual/${TARGET_PREFIX}rust ${RUSTLIB_DEP}"
DEPENDS_append_class-native = " rust-native"
# Enable build separation
B = "${WORKDIR}/build"
# Cargo only supports in-tree builds at the moment
B = "${S}"
# In case something fails in the build process, give a bit more feedback on
# where the issue occured
export RUST_BACKTRACE = "1"
# The directory of the Cargo.toml relative to the root directory, per default
# assume there's a Cargo.toml directly in the root directory
CARGO_SRC_DIR ??= ""
# The actual path to the Cargo.toml
MANIFEST_PATH ??= "${S}/${CARGO_SRC_DIR}/Cargo.toml"
RUSTFLAGS ??= ""
BUILD_MODE = "${@['--release', ''][d.getVar('DEBUG_BUILD') == '1']}"
CARGO_BUILD_FLAGS = "-v --target ${HOST_SYS} ${BUILD_MODE} --manifest-path=${MANIFEST_PATH}"
CARGO_BUILD_FLAGS = "-v --target ${HOST_SYS} --release"
# This is based on the content of CARGO_BUILD_FLAGS and generally will need to
# change if CARGO_BUILD_FLAGS changes.
BUILD_DIR = "${@['release', 'debug'][d.getVar('DEBUG_BUILD') == '1']}"
CARGO_TARGET_SUBDIR="${HOST_SYS}/${BUILD_DIR}"
CARGO_TARGET_SUBDIR="${HOST_SYS}/release"
oe_cargo_build () {
export RUSTFLAGS="${RUSTFLAGS}"
export RUST_TARGET_PATH="${RUST_TARGET_PATH}"
@@ -46,7 +37,6 @@ oe_cargo_build () {
"${CARGO}" build ${CARGO_BUILD_FLAGS} "$@"
}
do_compile[progress] = "outof:\s+(\d+)/(\d+)"
cargo_do_compile () {
oe_cargo_fix_env
oe_cargo_build
@@ -61,17 +51,6 @@ cargo_do_install () {
install -m755 "$tgt" "${D}${rustlibdir}"
have_installed=true
;;
*examples)
if [ -d "$tgt" ]; then
for example in "$tgt/"*; do
if [ -f "$example" ] && [ -x "$example" ]; then
install -d "${D}${bindir}"
install -m755 "$example" "${D}${bindir}"
have_installed=true
fi
done
fi
;;
*)
if [ -f "$tgt" ] && [ -x "$tgt" ]; then
install -d "${D}${bindir}"

View File

@@ -20,90 +20,35 @@ export CARGO_HOME = "${WORKDIR}/cargo_home"
# for cross compilation, so tell it we know better than it.
export PKG_CONFIG_ALLOW_CROSS = "1"
# Don't instruct cargo to use crates downloaded by bitbake. Some rust packages,
# for example the rust compiler itself, come with their own vendored sources.
# Specifying two [source.crates-io] will not work.
CARGO_DISABLE_BITBAKE_VENDORING ?= "0"
# Used by libstd-rs to point to the vendor dir included in rustc src
CARGO_VENDORING_DIRECTORY ?= "${CARGO_HOME}/bitbake"
CARGO_RUST_TARGET_CCLD ?= "${RUST_TARGET_CCLD}"
cargo_common_do_configure () {
mkdir -p ${CARGO_HOME}/bitbake
echo "paths = [" > ${CARGO_HOME}/config
cat <<- EOF > ${CARGO_HOME}/config
# EXTRA_OECARGO_PATHS
paths = [
$(for p in ${EXTRA_OECARGO_PATHS}; do echo \"$p\",; done)
]
EOF
for p in ${EXTRA_OECARGO_PATHS}; do
printf "\"%s\"\n" "$p"
done | sed -e 's/$/,/' >> ${CARGO_HOME}/config
echo "]" >> ${CARGO_HOME}/config
# Point cargo at our local mirror of the registry
cat <<- EOF >> ${CARGO_HOME}/config
# Local mirror vendored by bitbake
[source.bitbake]
directory = "${CARGO_VENDORING_DIRECTORY}"
directory = "${CARGO_HOME}/bitbake"
EOF
if [ -z "${EXTERNALSRC}" ] && [ ${CARGO_DISABLE_BITBAKE_VENDORING} = "0" ]; then
if [ "${EXTERNALSRC}" == "" ]; then
cat <<- EOF >> ${CARGO_HOME}/config
[source.crates-io]
replace-with = "bitbake"
local-registry = "/nonexistant"
EOF
fi
cat <<- EOF >> ${CARGO_HOME}/config
[http]
# Multiplexing can't be enabled because http2 can't be enabled
# in curl-native without dependency loops
multiplexing = false
# Ignore the hard coded and incorrect path to certificates
cainfo = "${STAGING_ETCDIR_NATIVE}/ssl/certs/ca-certificates.crt"
EOF
if [ -n "${http_proxy}" ]; then
echo "proxy = \"${http_proxy}\"" >> ${CARGO_HOME}/config
fi
cat <<- EOF >> ${CARGO_HOME}/config
# HOST_SYS
[target.${HOST_SYS}]
linker = "${CARGO_RUST_TARGET_CCLD}"
EOF
echo "[target.${HOST_SYS}]" >> ${CARGO_HOME}/config
echo "linker = '${RUST_TARGET_CCLD}'" >> ${CARGO_HOME}/config
if [ "${HOST_SYS}" != "${BUILD_SYS}" ]; then
cat <<- EOF >> ${CARGO_HOME}/config
# BUILD_SYS
[target.${BUILD_SYS}]
linker = "${RUST_BUILD_CCLD}"
EOF
echo "[target.${BUILD_SYS}]" >> ${CARGO_HOME}/config
echo "linker = '${RUST_BUILD_CCLD}'" >> ${CARGO_HOME}/config
fi
# Put build output in build directory preferred by bitbake instead of
# inside source directory unless they are the same
if [ "${B}" != "${S}" ]; then
cat <<- EOF >> ${CARGO_HOME}/config
[build]
# Use out of tree build destination to avoid poluting the source tree
target-dir = "${B}/target"
EOF
fi
cat <<- EOF >> ${CARGO_HOME}/config
[term]
progress.when = 'always'
progress.width = 80
EOF
}
oe_cargo_fix_env () {
@@ -115,7 +60,7 @@ oe_cargo_fix_env () {
export TARGET_CC="${RUST_TARGET_CC}"
export TARGET_CXX="${RUST_TARGET_CXX}"
export TARGET_CFLAGS="${CFLAGS}"
export TARGET_CXXFLAGS="${CXXFLAGS}"
export TARGET_CFLAGS="${CXXFLAGS}"
export TARGET_AR="${AR}"
export HOST_CC="${RUST_BUILD_CC}"
export HOST_CXX="${RUST_BUILD_CXX}"

View File

@@ -1,6 +1,6 @@
inherit rust
RDEPENDS:${PN}:append:class-target = " ${RUSTLIB_DEP}"
RDEPENDS_${PN}_append_class-target += "${RUSTLIB_DEP}"
RUSTC_ARCHFLAGS += "-C opt-level=3 -g -L ${STAGING_DIR_HOST}/${rustlibdir} -C linker=${RUST_TARGET_CCLD}"
EXTRA_OEMAKE += 'RUSTC_ARCHFLAGS="${RUSTC_ARCHFLAGS}"'

View File

@@ -1,55 +1,18 @@
# Common variables used by all Rust builds
export rustlibdir = "${libdir}/rust"
FILES:${PN} += "${rustlibdir}/*.so"
FILES:${PN}-dev += "${rustlibdir}/*.rlib ${rustlibdir}/*.rmeta"
FILES:${PN}-dbg += "${rustlibdir}/.debug"
FILES_${PN} += "${rustlibdir}/*.so"
FILES_${PN}-dev += "${rustlibdir}/*.rlib"
FILES_${PN}-dbg += "${rustlibdir}/.debug"
RUSTLIB = "-L ${STAGING_LIBDIR}/rust"
RUST_DEBUG_REMAP = "--remap-path-prefix=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}"
RUST_DEBUG_REMAP = "-Zremap-path-prefix-from=${WORKDIR} -Zremap-path-prefix-to=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}"
RUSTFLAGS += "${RUSTLIB} ${RUST_DEBUG_REMAP}"
RUSTLIB_DEP ?= "libstd-rs"
RUST_TARGET_PATH = "${STAGING_LIBDIR_NATIVE}/rustlib"
RUST_PANIC_STRATEGY ?= "unwind"
# Native builds are not effected by TCLIBC. Without this, rust-native
# thinks it's "target" (i.e. x86_64-linux) is a musl target.
RUST_LIBC = "${TCLIBC}"
RUST_LIBC:class-native = "glibc"
def determine_libc(d, thing):
'''Determine which libc something should target'''
# BUILD is never musl, TARGET may be musl or glibc,
# HOST could be musl, but only if a compiler is built to be run on
# target in which case HOST_SYS != BUILD_SYS.
if thing == 'TARGET':
libc = d.getVar('RUST_LIBC')
elif thing == 'BUILD' and (d.getVar('HOST_SYS') != d.getVar('BUILD_SYS')):
libc = d.getVar('RUST_LIBC')
else:
libc = d.getVar('RUST_LIBC:class-native')
return libc
def target_is_armv7(d):
'''Determine if target is armv7'''
# TUNE_FEATURES may include arm* even if the target is not arm
# in the case of *-native packages
if d.getVar('TARGET_ARCH') != 'arm':
return False
feat = d.getVar('TUNE_FEATURES')
feat = frozenset(feat.split())
mach_overrides = d.getVar('MACHINEOVERRIDES')
mach_overrides = frozenset(mach_overrides.split(':'))
v7=frozenset(['armv7a', 'armv7r', 'armv7m', 'armv7ve'])
if mach_overrides.isdisjoint(v7) and feat.isdisjoint(v7):
return False
else:
return True
# Responsible for taking Yocto triples and converting it to Rust triples
def rust_base_triple(d, thing):
'''
Mangle bitbake's *_SYS into something that rust might support (see
@@ -58,16 +21,11 @@ def rust_base_triple(d, thing):
Note that os is assumed to be some linux form
'''
# The llvm-target for armv7 is armv7-unknown-linux-gnueabihf
if thing == "TARGET" and target_is_armv7(d):
arch = "armv7"
else:
arch = d.getVar('{}_ARCH'.format(thing))
arch = d.getVar('{}_ARCH'.format(thing))
# All the Yocto targets are Linux and are 'unknown'
vendor = "-unknown"
os = d.getVar('{}_OS'.format(thing))
libc = determine_libc(d, thing)
libc = d.getVar('TCLIBC')
# Prefix with a dash and convert glibc -> gnu
if libc == "glibc":
@@ -103,7 +61,7 @@ def rust_base_triple(d, thing):
#
# Rust additionally will use two additional cases:
# - undecorated (e.g. CC) - equivalent to TARGET
# - triple suffix (e.g. CC:x86_64_unknown_linux_gnu) - both
# - triple suffix (e.g. CC_x86_64_unknown_linux_gnu) - both
# see: https://github.com/alexcrichton/gcc-rs
# The way that Rust's internal triples and Yocto triples are mapped together
# its likely best to not use the triple suffix due to potential confusion.
@@ -133,17 +91,11 @@ create_wrapper () {
cat <<- EOF > "${file}"
#!/bin/sh
exec $@ "\$@"
$@ "\$@"
EOF
chmod +x "${file}"
}
export WRAPPER_TARGET_CC = "${CC}"
export WRAPPER_TARGET_CXX = "${CXX}"
export WRAPPER_TARGET_CCLD = "${CCLD}"
export WRAPPER_TARGET_LDFLAGS = "${LDFLAGS}"
export WRAPPER_TARGET_AR = "${AR}"
# compiler is used by gcc-rs
# linker is used by rustc/cargo
# archiver is used by the build of libstd-rs
@@ -160,14 +112,13 @@ do_rust_create_wrappers () {
create_wrapper "${RUST_BUILD_AR}" "${BUILD_AR}"
# Yocto Target / Rust Target C compiler
create_wrapper "${RUST_TARGET_CC}" "${WRAPPER_TARGET_CC}"
create_wrapper "${RUST_TARGET_CC}" "${CC}"
# Yocto Target / Rust Target C++ compiler
create_wrapper "${RUST_TARGET_CXX}" "${WRAPPER_TARGET_CXX}"
create_wrapper "${RUST_TARGET_CXX}" "${CXX}"
# Yocto Target / Rust Target linker
create_wrapper "${RUST_TARGET_CCLD}" "${WRAPPER_TARGET_CCLD}" "${WRAPPER_TARGET_LDFLAGS}"
create_wrapper "${RUST_TARGET_CCLD}" "${CCLD}" "${LDFLAGS}"
# Yocto Target / Rust Target archiver
create_wrapper "${RUST_TARGET_AR}" "${WRAPPER_TARGET_AR}"
create_wrapper "${RUST_TARGET_AR}" "${AR}"
}
addtask rust_create_wrappers before do_configure after do_patch

View File

@@ -15,7 +15,7 @@ def rust_base_dep(d):
deps += " rust-native"
return deps
DEPENDS:append = " ${@rust_base_dep(d)}"
DEPENDS_append = " ${@rust_base_dep(d)}"
# BUILD_LDFLAGS
# ${STAGING_LIBDIR_NATIVE}
@@ -42,4 +42,4 @@ rustlib_suffix="${TUNE_ARCH}${TARGET_VENDOR}-${TARGET_OS}/rustlib/${HOST_SYS}/li
rustlib_src="${prefix}/lib/${rustlib_suffix}"
# Host sysroot standard library path
rustlib="${libdir}/${rustlib_suffix}"
rustlib:class-native="${libdir}/rustlib/${BUILD_SYS}/lib"
rustlib_class-native="${libdir}/rustlib/${BUILD_SYS}/lib"

View File

@@ -1,7 +1,7 @@
# Build errors with PIE options enabled
SECURITY_CFLAGS:pn-rust-native = "${SECURITY_NO_PIE_CFLAGS}"
SECURITY_CFLAGS:pn-rust-cross-${TARGET_ARCH} = "${SECURITY_NO_PIE_CFLAGS}"
SECURITY_CFLAGS:pn-rust = "${SECURITY_NO_PIE_CFLAGS}"
SECURITY_CFLAGS:pn-rust-llvm = "${SECURITY_NO_PIE_CFLAGS}"
SECURITY_CFLAGS_pn-rust-native = "${SECURITY_NO_PIE_CFLAGS}"
SECURITY_CFLAGS_pn-rust-cross-${TARGET_ARCH} = "${SECURITY_NO_PIE_CFLAGS}"
SECURITY_CFLAGS_pn-rust = "${SECURITY_NO_PIE_CFLAGS}"
SECURITY_CFLAGS_pn-rust-llvm = "${SECURITY_NO_PIE_CFLAGS}"
SECURITY_LDFLAGS:pn-rust-cross-arm = " -lssp_nonshared -lssp"
SECURITY_LDFLAGS_pn-rust-cross-arm = " -lssp_nonshared -lssp"

View File

@@ -1,13 +0,0 @@
# include this in your distribution to easily switch between versions
# just by changing RUST_VERSION variable
RUST_VERSION ?= "1.51.0"
PREFERRED_VERSION_cargo ?= "${RUST_VERSION}"
PREFERRED_VERSION_cargo-native ?= "${RUST_VERSION}"
PREFERRED_VERSION_libstd-rs ?= "${RUST_VERSION}"
PREFERRED_VERSION_rust ?= "${RUST_VERSION}"
PREFERRED_VERSION_rust-cross-${TARGET_ARCH} ?= "${RUST_VERSION}"
PREFERRED_VERSION_rust-llvm ?= "${RUST_VERSION}"
PREFERRED_VERSION_rust-llvm-native ?= "${RUST_VERSION}"
PREFERRED_VERSION_rust-native ?= "${RUST_VERSION}"

View File

@@ -9,7 +9,7 @@ BBFILE_PATTERN_rust-layer := "^${LAYERDIR}/"
BBFILE_PRIORITY_rust-layer = "7"
LAYERDEPENDS_rust-layer = "core openembedded-layer"
LAYERSERIES_COMPAT_rust-layer = "dunfell gatesgarth hardknott honister kirkstone"
LAYERSERIES_COMPAT_rust-layer = "sumo"
# Override security flags
require conf/distro/include/rust_security_flags.inc

View File

@@ -232,8 +232,8 @@ INHERIT += "own-mirrors rm_work"
# seen. The two lines below enable the SDL backend too. By default libsdl-native will
# be built, if you want to use your host's libSDL instead of the minimal libsdl built
# by libsdl-native then uncomment the ASSUME_PROVIDED line below.
PACKAGECONFIG:append:pn-qemu-native = " sdl"
PACKAGECONFIG:append:pn-nativesdk-qemu = " sdl"
PACKAGECONFIG_append_pn-qemu-native = " sdl"
PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
#ASSUME_PROVIDED += "libsdl-native"
# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to

View File

@@ -0,0 +1,22 @@
DESCRIPTION = "Fast multiple substring searching with finite state machines."
HOMEPAGE = "https://github.com/BurntSushi/aho-corasick"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE-MIT;md5=8d0d0aa488af0ab9aafa3b85a7fc8e12"
DEPENDS = "memchr-rs"
inherit rust-bin
SRC_URI = "git://github.com/BurntSushi/aho-corasick.git;protocol=https"
SRCREV = "e1bca33dcc060d587e802320a79cbb035f37f8fa"
S = "${WORKDIR}/git"
do_compile () {
oe_compile_rust_lib
}
do_install () {
oe_install_rust_lib
}
BBCLASSEXTEND += "native"

View File

@@ -0,0 +1,26 @@
DESCRIPTION = "A macro to generate structures which behave like bitflags."
HOMEPAGE = "https://github.com/rust-lang-nursery/bitflags"
LICENSE = "MIT | Apache-2.0"
LIC_FILES_CHKSUM = "\
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
"
inherit rust-bin
SRC_URI = "git://github.com/rust-lang-nursery/bitflags.git;protocol=https;nobranch=1"
SRCREV = "e30da43cac0e52fc8d0007ce99a316ec6473033e"
S = "${WORKDIR}/git"
LIB_SRC = "${S}/src/lib.rs"
CRATE_TYPE = "rlib"
RUSTFLAGS += "-A pub_use_of_private_extern_crate"
do_compile () {
oe_compile_rust_lib
}
do_install () {
oe_install_rust_lib
}

View File

@@ -0,0 +1,28 @@
DESCRIPTION = "A (mostly) pure-Rust implementation of various common cryptographic algorithms."
HOMEPAGE = "https://github.com/DaGenix/rust-crypto/"
LICENSE = "MIT | Apache-2.0"
LIC_FILES_CHKSUM = "\
file://LICENSE-MIT;md5=4311034aa04489226c1fc3f816dbfb5a \
file://LICENSE-APACHE;md5=a02fef6dccf840318474c108a8281b77 \
"
DEPENDS = "\
libc-rs \
time-rs \
rand-rs \
rustc-serialize-rs \
"
inherit rust-bin
SRC_URI = "git://github.com/DaGenix/rust-crypto.git;protocol=https"
SRCREV = "5571cb41690b9cee12025192393ea7df0eddc21b"
S = "${WORKDIR}/git"
do_compile () {
oe_compile_rust_lib
}
do_install () {
oe_install_rust_lib
}

View File

@@ -0,0 +1,20 @@
DESCRIPTION = "DBus binding for rust"
HOMEPAGE = "https://github.com/diwic/dbus-rs"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=d2794c0df5b907fdace235a619d80314"
DEPENDS = "libc-rs dbus"
inherit rust-bin
SRC_URI = "git://github.com/diwic/dbus-rs.git;protocol=https"
SRCREV = "d23c8b7fecd5a8e82131893250a5ac376799faff"
S = "${WORKDIR}/git"
do_compile () {
oe_compile_rust_lib
}
do_install () {
oe_install_rust_lib
}

View File

@@ -0,0 +1,19 @@
DESCRIPTION = "A copy of libstd's debug builders for use before they stabilize"
HOMEPAGE = "https://github.com/sfackler/rust-debug-builders"
LICENSE = "MIT | Apache-2.0"
LIC_FILES_CHKSUM = "file://Cargo.toml;md5=97a131dc4ae910d242387f2c9d1a2ce8"
inherit rust-bin
SRC_URI = "git://github.com/sfackler/rust-debug-builders.git;protocol=https"
SRCREV = "c6943b72c7808ddaa151d08b824525cc7420cb9b"
S = "${WORKDIR}/git"
do_compile () {
oe_compile_rust_lib
}
do_install () {
oe_install_rust_lib
}

View File

@@ -0,0 +1,23 @@
DESCRIPTION = "getopts-like option parsing"
HOMEPAGE = "https://github.com/rust-lang/getopts"
LICENSE = "MIT | Apache-2.0"
LIC_FILES_CHKSUM = "\
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
"
DEPENDS = "log-rs"
inherit rust-bin
SRC_URI = "git://github.com/rust-lang/getopts.git;protocol=https"
SRCREV = "a13c62b7d860b6d370129ebb972bf5e0373c5be7"
S = "${WORKDIR}/git"
do_compile () {
oe_compile_rust_lib
}
do_install () {
oe_install_rust_lib
}

View File

@@ -0,0 +1,23 @@
DESCRIPTION = "A macro for declaring lazily evaluated statics in Rust."
HOMEPAGE = "https://github.com/rust-lang-nursery/lazy-static.rs"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "\
file://LICENSE;md5=5795ddb4df1d696d439b6667081cffc9 \
"
inherit rust-bin
SRC_URI = "git://github.com/rust-lang-nursery/lazy-static.rs.git;protocol=https"
SRCREV = "ffe65c818474f863945ca535c0e53f3b8b848ff7"
S = "${WORKDIR}/git"
LIB_SRC = "${S}/src/lib.rs"
do_compile () {
oe_compile_rust_lib
}
do_install () {
oe_install_rust_lib
}

View File

@@ -0,0 +1,27 @@
DESCRIPTION = "A Rust library with native bindings to the types and functions commonly found on various systems, including libc."
HOMEPAGE = "https://github.com/rust-lang/libc"
LICENSE = "MIT | Apache-2.0"
LIC_FILES_CHKSUM = "\
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
"
inherit rust-bin
SRC_URI = "git://github.com/rust-lang/libc.git;protocol=https"
SRCREV = "05a2d197356ef253dfd985166576619ac9b6947f"
S = "${WORKDIR}/git"
LIB_SRC = "${S}/src/lib.rs"
do_compile () {
oe_compile_rust_lib --cfg feature='"cargo-build"' --cfg feature='"use_std"'
}
do_install () {
oe_install_rust_lib
}
BBCLASSEXTEND += "native"

View File

@@ -0,0 +1,6 @@
DESCRIPTION = "An logging implementation for `log` which is configured via an environment variable"
DEPENDS = "regex-rs log-rs"
require log.inc
LIB_SRC = "${S}/env/src/lib.rs"

View File

@@ -0,0 +1,4 @@
DESCRIPTION = "A Rust library providing a lightweight logging facade"
DEPENDS = "libc-rs"
require log.inc

22
recipes-core/log/log.inc Normal file
View File

@@ -0,0 +1,22 @@
HOMEPAGE = "https://github.com/rust-lang/log"
LICENSE = "MIT | Apache-2.0"
LIC_FILES_CHKSUM = "\
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
"
inherit rust-bin
SRC_URI = "git://github.com/rust-lang/log.git;protocol=https"
SRCREV = "5453e16166ec451afc9738978ca01f162127ebbe"
PV = "0.3.1"
S = "${WORKDIR}/git"
do_compile () {
oe_compile_rust_lib
}
do_install () {
oe_install_rust_lib
}

View File

@@ -0,0 +1,22 @@
DESCRIPTION = "Safe interface to memchr"
HOMEPAGE = "https://github.com/BurntSushi/rust-memchr"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE-MIT;md5=8d0d0aa488af0ab9aafa3b85a7fc8e12"
DEPENDS = "libc-rs"
inherit rust-bin
SRC_URI = "git://github.com/BurntSushi/rust-memchr.git;protocol=https"
SRCREV = "4f9a13f95e6e00f2847c093c56b41b9c1d58d3c4"
S = "${WORKDIR}/git"
do_compile () {
oe_compile_rust_lib
}
do_install () {
oe_install_rust_lib
}
BBCLASSEXTEND += "native"

View File

@@ -0,0 +1,5 @@
require num.inc
DEPENDS += "num-traits"
LIB_SRC = "${S}/integer/src/lib.rs"

View File

@@ -0,0 +1,6 @@
require num.inc
DEPENDS += "num-traits"
DEPENDS += "num-integer"
LIB_SRC = "${S}/iter/src/lib.rs"

View File

@@ -0,0 +1,3 @@
require num.inc
LIB_SRC = "${S}/traits/src/lib.rs"

22
recipes-core/num/num.inc Normal file
View File

@@ -0,0 +1,22 @@
DESCRIPTION = "A collection of numeric types and traits for Rust, including bigint, complex, rational, range iterators, generic integers, and more!"
HOMEPAGE = "https://github.com/rust-num/num"
LICENSE = "MIT | Apache-2.0"
LIC_FILES_CHKSUM = "\
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
"
inherit rust-bin
SRC_URI = "git://github.com/rust-num/num.git;protocol=https"
SRCREV = "d9f08cb148cc686ec407c1e42fbd4536cde6ac82"
S = "${WORKDIR}/git"
do_compile () {
oe_compile_rust_lib
}
do_install () {
oe_install_rust_lib
}

View File

@@ -0,0 +1,9 @@
require num.inc
DEPENDS += "\
num-traits \
num-integer \
num-iter \
"
LIB_SRC = "${S}/src/lib.rs"

View File

@@ -1,18 +0,0 @@
SUMMARY = "Host SDK package for Rust cross canadian toolchain"
PN = "packagegroup-rust-cross-canadian-${MACHINE}"
inherit cross-canadian packagegroup
PACKAGEGROUP_DISABLE_COMPLEMENTARY = "1"
RUST="rust-cross-canadian-${TRANSLATED_TARGET_ARCH}"
CARGO="cargo-cross-canadian-${TRANSLATED_TARGET_ARCH}"
RUST_TOOLS="rust-tools-cross-canadian-${TRANSLATED_TARGET_ARCH}"
RDEPENDS:${PN} = " \
${@all_multilib_tune_values(d, 'RUST')} \
${@all_multilib_tune_values(d, 'CARGO')} \
rust-cross-canadian-src \
${@all_multilib_tune_values(d, 'RUST_TOOLS')} \
"

View File

@@ -0,0 +1,23 @@
DESCRIPTION = "Random number generators and other randomness functionality."
HOMEPAGE = "https://github.com/rust-lang/rand"
LICENSE = "MIT | Apache-2.0"
LIC_FILES_CHKSUM = "\
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
"
DEPENDS = "libc-rs"
inherit rust-bin
SRC_URI = "git://github.com/rust-lang/rand.git;protocol=https"
SRCREV = "f872fda5fb8fb899a837ee9eee0332076a8f5300"
S = "${WORKDIR}/git"
do_compile () {
oe_compile_rust_lib
}
do_install () {
oe_install_rust_lib
}

View File

@@ -0,0 +1,12 @@
DESCRIPTION = "An implementation of regular expressions for Rust"
DEPENDS = "\
aho-corasick-rs \
memchr-rs \
regex-syntax-rs \
"
require regex.inc
S = "${WORKDIR}/git"
BBCLASSEXTEND += "native"

View File

@@ -0,0 +1,7 @@
DESCRIPTION = "A regular expression parser"
require regex.inc
LIB_SRC = "${S}/regex-syntax/src/lib.rs"
BBCLASSEXTEND += "native"

View File

@@ -0,0 +1,22 @@
HOMEPAGE = "https://github.com/rust-lang/regex"
LICENSE = "MIT | Apache-2.0"
LIC_FILES_CHKSUM = "\
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
"
SRC_URI = "git://github.com/rust-lang/regex.git;protocol=https"
SRCREV = "c9e6781a6845478aa2d8ebc86972755f854fdbe0"
PV = "0.1.38"
inherit rust-bin
S = "${WORKDIR}/git"
do_compile () {
oe_compile_rust_lib
}
do_install () {
oe_install_rust_lib
}

View File

@@ -0,0 +1,22 @@
DESCRIPTION = "Generic serialization/deserialization support"
HOMEPAGE = "https://github.com/rust-lang/rustc-serialize"
LICENSE = "MIT | Apache-2.0"
LIC_FILES_CHKSUM = "\
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
"
inherit rust-bin
SRC_URI = "git://github.com/rust-lang/rustc-serialize.git;protocol=https"
SRCREV = "64b38a1f31a9af6eabf2894437aa5ccc3e457e68"
S = "${WORKDIR}/git"
do_compile () {
oe_compile_rust_lib
}
do_install () {
oe_install_rust_lib
}

View File

@@ -0,0 +1,23 @@
DESCRIPTION = "Utilities for working with time-related functions in Rust"
HOMEPAGE = "https://github.com/rust-lang/time"
LICENSE = "MIT | Apache-2.0"
LIC_FILES_CHKSUM = "\
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
"
DEPENDS = "libc-rs"
inherit rust-bin
SRC_URI = "git://github.com/rust-lang/time.git;protocol=https"
SRCREV = "d265b7cf9f50db74fbd0a01f8bec90ad7d239d48"
S = "${WORKDIR}/git"
do_compile () {
oe_compile_rust_lib
}
do_install () {
oe_install_rust_lib
}

View File

@@ -0,0 +1,20 @@
DESCRIPTION = "FFI bindings to libudev"
HOMEPAGE = "https://github.com/dcuddeback/libudev-sys"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=bbd2acd29c4ba5d4591b03e2757c04a3"
DEPENDS = "libudev-sys-rs"
inherit rust-bin
SRC_URI = "git://github.com/dcuddeback/libudev-rs.git;protocol=https"
SRCREV = "d55763c626790e2e8724947503238731843a969a"
S = "${WORKDIR}/git"
do_compile () {
oe_compile_rust_lib
}
do_install () {
oe_install_rust_lib
}

View File

@@ -0,0 +1,22 @@
DESCRIPTION = "FFI bindings to libudev"
HOMEPAGE = "https://github.com/dcuddeback/libudev-sys"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=bbd2acd29c4ba5d4591b03e2757c04a3"
DEPENDS += "libudev-sys-rs"
DEPENDS += "libc-rs"
inherit rust-bin
SRC_URI = "git://github.com/dcuddeback/libudev-rs.git;protocol=https"
SRCREV = "3da791245f206d0cf5a856531c574b8646b0f059"
S = "${WORKDIR}/git"
do_compile () {
oe_compile_rust_lib
}
do_install () {
oe_install_rust_lib
}

View File

@@ -0,0 +1,22 @@
DESCRIPTION = "FFI bindings to libudev"
HOMEPAGE = "https://github.com/dcuddeback/libudev-sys"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=bbd2acd29c4ba5d4591b03e2757c04a3"
DEPENDS = "libc-rs udev"
inherit rust-bin
SRC_URI = "git://github.com/dcuddeback/libudev-sys.git;protocol=https"
SRCREV = "14c24afc61e3315dffddab2c7f36999a16a002d8"
S = "${WORKDIR}/git"
RUSTC_FLAGS += "-ludev"
do_compile () {
oe_compile_rust_lib
}
do_install () {
oe_install_rust_lib
}

View File

@@ -0,0 +1,22 @@
DESCRIPTION = "FFI bindings to libudev"
HOMEPAGE = "https://github.com/dcuddeback/libudev-sys"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=bbd2acd29c4ba5d4591b03e2757c04a3"
DEPENDS = "libc-rs udev"
inherit rust-bin
SRC_URI = "git://github.com/dcuddeback/libudev-sys.git;protocol=https"
SRCREV = "c49163f87d4d109ec21bcf8f8c51db560ed31b22"
S = "${WORKDIR}/git"
RUSTC_FLAGS += "-ludev"
do_compile () {
oe_compile_rust_lib
}
do_install () {
oe_install_rust_lib
}

View File

@@ -0,0 +1,20 @@
DESCRIPTION = "Unix domain socket bindings for Rust"
HOMEPAGE = "https://github.com/sfackler/rust-unix-socket"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=bde86283c1fd74e84ebc3cf6dd7011d0"
DEPENDS = "libc-rs debug-builders-rs"
inherit rust-bin
SRC_URI = "git://github.com/sfackler/rust-unix-socket.git;protocol=https"
SRCREV = "d0f47ae888267a718072c3be5eed42ba1f637097"
S = "${WORKDIR}/git"
do_compile () {
oe_compile_rust_lib
}
do_install () {
oe_install_rust_lib
}

View File

@@ -0,0 +1,11 @@
CARGO_SNAPSHOT = "cargo-0.20.0-${RUST_BUILD_SYS}"
SRC_URI[cargo-snapshot.md5sum] = "63aa861b029eec9f559f4fb5a10c287d"
SRC_URI[cargo-snapshot.sha256sum] = "a677d13b01d00ad13edf75c7d1b484421c7fc09338bf9ed6d456b4685bb42ed1"
SRC_URI += "\
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.gz;name=cargo-snapshot \
"
# When building cargo-native we don't have a built cargo to use so we must use
# the snapshot to bootstrap the build of cargo
CARGO_class-native = "${WORKDIR}/${CARGO_SNAPSHOT}/cargo/bin/cargo"

View File

@@ -0,0 +1,11 @@
CARGO_SNAPSHOT = "cargo-0.21.0-${RUST_BUILD_SYS}"
SRC_URI[cargo-snapshot.md5sum] = "0e5389d2e38a14933dda77db8172cb1f"
SRC_URI[cargo-snapshot.sha256sum] = "caccf4ab039c806a9e6fdc7fe389cc88fb771e28e30d93c07a5c56ef845cdf57"
SRC_URI += "\
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.gz;name=cargo-snapshot \
"
# When building cargo-native we don't have a built cargo to use so we must use
# the snapshot to bootstrap the build of cargo
CARGO_class-native = "${WORKDIR}/${CARGO_SNAPSHOT}/cargo/bin/cargo"

View File

@@ -0,0 +1,12 @@
CARGO_SNAPSHOT = "cargo-0.24.0-${RUST_BUILD_SYS}"
SRC_URI[cargo-snapshot.md5sum] = "830041cfc8627d3f7187954993449cf9"
SRC_URI[cargo-snapshot.sha256sum] = "ff8a454104aba20426ea898ed7515ec5da7de07d11733cdda17462455beb76e8"
SRC_URI += "\
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.gz;name=cargo-snapshot \
"
# When building cargo-native we don't have a built cargo to use so we must use
# the snapshot to bootstrap the build of cargo
CARGO_class-native = "${WORKDIR}/${CARGO_SNAPSHOT}/cargo/bin/cargo"

View File

@@ -1,74 +0,0 @@
SUMMARY = "Cargo, a package manager for Rust cross canadian flavor."
RUST_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config"
HOST_SYS = "${HOST_ARCH}-unknown-linux-gnu"
CARGO_RUST_TARGET_CCLD = "${RUST_BUILD_CCLD}"
require recipes-devtools/rust/rust-common.inc
require cargo.inc
CARGO = "${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo"
BASEDEPENDS:remove = "cargo-native"
export RUST_TARGET_PATH="${WORKDIR}/targets/"
RUSTLIB = " \
-L ${STAGING_DIR_NATIVE}/${SDKPATHNATIVE}/usr/lib/${TARGET_SYS}/rustlib/${HOST_SYS}/lib \
"
DEPENDS += "rust-native \
rust-cross-canadian-${TRANSLATED_TARGET_ARCH} \
virtual/nativesdk-${HOST_PREFIX}compilerlibs \
nativesdk-openssl nativesdk-zlib \
virtual/nativesdk-libc \
"
inherit cross-canadian
PN = "cargo-cross-canadian-${TRANSLATED_TARGET_ARCH}"
LLVM_TARGET[x86_64] = "${RUST_HOST_SYS}"
python do_rust_gen_targets () {
wd = d.getVar('WORKDIR') + '/targets/'
rust_gen_target(d, 'BUILD', wd, "", "generic", d.getVar('BUILD_ARCH'))
rust_gen_target(d, 'HOST', wd, "", "generic", d.getVar('HOST_ARCH'))
}
do_compile:prepend () {
PKG_CONFIG_PATH="${RECIPE_SYSROOT_NATIVE}/usr/lib/pkgconfig:${PKG_CONFIG_PATH}"
}
do_install () {
SYS_BINDIR=$(dirname ${D}${bindir})
install -d "${SYS_BINDIR}"
install -m 755 "${B}/target/${CARGO_TARGET_SUBDIR}/cargo" "${SYS_BINDIR}"
for i in ${SYS_BINDIR}/*; do
chrpath -r "\$ORIGIN/../lib" ${i}
done
ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
mkdir "${ENV_SETUP_DIR}"
ENV_SETUP_SH="${ENV_SETUP_DIR}/cargo.sh"
cat <<- EOF > "${ENV_SETUP_SH}"
export CARGO_HOME="\$OECORE_TARGET_SYSROOT/home/cargo"
mkdir -p "\$CARGO_HOME"
# Init the default target once, it might be otherwise user modified.
if [ ! -f "\$CARGO_HOME/config" ]; then
touch "\$CARGO_HOME/config"
echo "[build]" >> "\$CARGO_HOME/config"
echo 'target = "'${TARGET_SYS}'"' >> "\$CARGO_HOME/config"
fi
# Keep the below off as long as HTTP/2 is disabled.
export CARGO_HTTP_MULTIPLEXING=false
export CARGO_HTTP_CAINFO="\$OECORE_NATIVE_SYSROOT/etc/ssl/certs/ca-certificates.crt"
EOF
}
PKG_SYS_BINDIR = "${SDKPATHNATIVE}/usr/bin"
FILES:${PN} += "${base_prefix}/environment-setup.d ${PKG_SYS_BINDIR}"

View File

@@ -1,6 +0,0 @@
require recipes-devtools/rust/rust-source-${PV}.inc
require recipes-devtools/rust/rust-snapshot-${PV}.inc
FILESEXTRAPATHS:prepend := "${THISDIR}/cargo-${PV}:"
require cargo-cross-canadian.inc

View File

@@ -1,6 +0,0 @@
require recipes-devtools/rust/rust-source-${PV}.inc
require recipes-devtools/rust/rust-snapshot-${PV}.inc
FILESEXTRAPATHS:prepend := "${THISDIR}/cargo-${PV}:"
require cargo-cross-canadian.inc

View File

@@ -1,56 +1,12 @@
SUMMARY ?= "Cargo, a package manager for Rust."
HOMEPAGE = "https://crates.io"
LICENSE = "MIT | Apache-2.0"
SECTION = "devel"
DEPENDS = "openssl zlib curl ca-certificates libssh2"
DEPENDS = "openssl zlib libgit2 curl ca-certificates libssh2"
LIC_FILES_CHKSUM = " \
file://LICENSE-MIT;md5=b377b220f43d747efdec40d69fcaa69d \
file://LICENSE-APACHE;md5=71b224ca933f0676e26d5c2e2271331c \
file://LICENSE-THIRD-PARTY;md5=f257ad009884cb88a3a87d6920e7180a \
LIC_FILES_CHKSUM += " \
file://LICENSE-THIRD-PARTY;md5=892ea68b169e69cfe75097fc38a15b56 \
"
# Used in libgit2-sys's build.rs, needed for pkg-config to be used
export LIBGIT2_SYS_USE_PKG_CONFIG = "1"
S = "${RUSTSRC}/src/tools/cargo"
CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor"
EXCLUDE_FROM_WORLD = "1"
inherit cargo pkgconfig
do_cargo_setup_snapshot () {
${WORKDIR}/rust-snapshot-components/${CARGO_SNAPSHOT}/install.sh --prefix="${WORKDIR}/${CARGO_SNAPSHOT}" --disable-ldconfig
# 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
patchelf-uninative ${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo --set-interpreter ${UNINATIVE_LOADER}
fi
}
addtask cargo_setup_snapshot after do_unpack before do_configure
do_cargo_setup_snapshot[dirs] += "${WORKDIR}/${CARGO_SNAPSHOT}"
do_cargo_setup_snapshot[vardepsexclude] += "UNINATIVE_LOADER"
do_compile:prepend () {
export RUSTC_BOOTSTRAP="1"
}
do_install () {
install -d "${D}${bindir}"
install -m 755 "${B}/target/${CARGO_TARGET_SUBDIR}/cargo" "${D}${bindir}"
}
# Disabled due to incompatibility with libgit2 0.28.x (https://github.com/rust-lang/git2-rs/issues/458, https://bugs.gentoo.org/707746#c1)
# as shipped by Yocto Dunfell.
# According to https://github.com/rust-lang/git2-rs/issues/458#issuecomment-522567539, there are no compatibility guarantees between
# libgit2-sys and arbitrary system libgit2 versions, so better keep this turned off.
#export LIBGIT2_SYS_USE_PKG_CONFIG = "1"
# Needed for pkg-config to be used
export LIBSSH2_SYS_USE_PKG_CONFIG = "1"
# When building cargo-native we don't have cargo-native to use and depend on,
# so we must use the locally set up snapshot to bootstrap the build.
BASEDEPENDS:remove:class-native = "cargo-native"
CARGO:class-native = "${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo"
BBCLASSEXTEND = "native"

View File

@@ -0,0 +1,136 @@
# Auto-Generated by cargo-bitbake 0.3.8
#
inherit cargo
# If this is git based prefer versioned ones if they exist
# DEFAULT_PREFERENCE = "-1"
# how to get cargo could be as easy as but default to a git checkout:
# SRC_URI += "crate://crates.io/cargo/0.21.0"
SRC_URI += "git://git@github.com/rust-lang/cargo.git;protocol=ssh;branch=rust-1.20.0"
SRCREV = "5b4b8b2ae3f6a884099544ce66dbb41626110ece"
S = "${WORKDIR}/git"
CARGO_SRC_DIR=""
# please note if you have entries that do not begin with crate://
# you must change them to how that package can be fetched
SRC_URI += " \
crate://crates.io/advapi32-sys/0.2.0 \
crate://crates.io/aho-corasick/0.5.3 \
crate://crates.io/aho-corasick/0.6.3 \
crate://crates.io/atty/0.2.2 \
crate://crates.io/backtrace-sys/0.1.11 \
crate://crates.io/backtrace/0.3.2 \
crate://crates.io/bitflags/0.9.1 \
crate://crates.io/bufstream/0.1.3 \
crate://crates.io/cfg-if/0.1.2 \
crate://crates.io/cmake/0.1.24 \
crate://crates.io/crossbeam/0.2.10 \
crate://crates.io/curl-sys/0.3.14 \
crate://crates.io/curl/0.4.7 \
crate://crates.io/dbghelp-sys/0.2.0 \
crate://crates.io/docopt/0.8.1 \
crate://crates.io/dtoa/0.4.1 \
crate://crates.io/env_logger/0.4.3 \
crate://crates.io/error-chain/0.11.0-rc.2 \
crate://crates.io/filetime/0.1.10 \
crate://crates.io/flate2/0.2.19 \
crate://crates.io/foreign-types/0.2.0 \
crate://crates.io/fs2/0.4.2 \
crate://crates.io/gcc/0.3.51 \
crate://crates.io/git2-curl/0.7.0 \
crate://crates.io/git2/0.6.6 \
crate://crates.io/glob/0.2.11 \
crate://crates.io/hamcrest/0.1.1 \
crate://crates.io/hex/0.2.0 \
crate://crates.io/idna/0.1.2 \
crate://crates.io/itoa/0.3.1 \
crate://crates.io/jobserver/0.1.6 \
crate://crates.io/kernel32-sys/0.2.2 \
crate://crates.io/lazy_static/0.2.8 \
crate://crates.io/libc/0.2.25 \
crate://crates.io/libgit2-sys/0.6.12 \
crate://crates.io/libssh2-sys/0.2.6 \
crate://crates.io/libz-sys/1.0.16 \
crate://crates.io/log/0.3.8 \
crate://crates.io/matches/0.1.6 \
crate://crates.io/memchr/0.1.11 \
crate://crates.io/memchr/1.0.1 \
crate://crates.io/miniz-sys/0.1.9 \
crate://crates.io/miow/0.2.1 \
crate://crates.io/net2/0.2.29 \
crate://crates.io/num-bigint/0.1.39 \
crate://crates.io/num-complex/0.1.38 \
crate://crates.io/num-integer/0.1.34 \
crate://crates.io/num-iter/0.1.33 \
crate://crates.io/num-rational/0.1.38 \
crate://crates.io/num-traits/0.1.39 \
crate://crates.io/num/0.1.39 \
crate://crates.io/num_cpus/1.6.2 \
crate://crates.io/openssl-probe/0.1.1 \
crate://crates.io/openssl-sys/0.9.14 \
crate://crates.io/openssl/0.9.14 \
crate://crates.io/percent-encoding/1.0.0 \
crate://crates.io/pkg-config/0.3.9 \
crate://crates.io/psapi-sys/0.1.0 \
crate://crates.io/quote/0.3.15 \
crate://crates.io/rand/0.3.15 \
crate://crates.io/regex-syntax/0.3.9 \
crate://crates.io/regex-syntax/0.4.1 \
crate://crates.io/regex/0.1.80 \
crate://crates.io/regex/0.2.2 \
crate://crates.io/rustc-demangle/0.1.4 \
crate://crates.io/rustc-serialize/0.3.24 \
crate://crates.io/scoped-tls/0.1.0 \
crate://crates.io/semver-parser/0.7.0 \
crate://crates.io/semver/0.7.0 \
crate://crates.io/serde/1.0.9 \
crate://crates.io/serde_derive/1.0.9 \
crate://crates.io/serde_derive_internals/0.15.1 \
crate://crates.io/serde_ignored/0.0.3 \
crate://crates.io/serde_json/1.0.2 \
crate://crates.io/shell-escape/0.1.3 \
crate://crates.io/socket2/0.2.1 \
crate://crates.io/strsim/0.6.0 \
crate://crates.io/syn/0.11.11 \
crate://crates.io/synom/0.11.3 \
crate://crates.io/tar/0.4.13 \
crate://crates.io/tempdir/0.3.5 \
crate://crates.io/termcolor/0.3.2 \
crate://crates.io/thread-id/2.0.0 \
crate://crates.io/thread_local/0.2.7 \
crate://crates.io/thread_local/0.3.4 \
crate://crates.io/toml/0.4.2 \
crate://crates.io/unicode-bidi/0.3.4 \
crate://crates.io/unicode-normalization/0.1.5 \
crate://crates.io/unicode-xid/0.0.4 \
crate://crates.io/unreachable/1.0.0 \
crate://crates.io/url/1.5.1 \
crate://crates.io/utf8-ranges/0.1.3 \
crate://crates.io/utf8-ranges/1.0.0 \
crate://crates.io/vcpkg/0.2.2 \
crate://crates.io/void/1.0.2 \
crate://crates.io/winapi-build/0.1.1 \
crate://crates.io/winapi/0.2.8 \
crate://crates.io/wincolor/0.1.4 \
crate://crates.io/ws2_32-sys/0.2.1 \
"
# FIXME: update generateme with the real MD5 of the license file
LIC_FILES_CHKSUM=" \
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
"
SUMMARY = "Cargo, a package manager for Rust."
HOMEPAGE = "https://crates.io"
LICENSE = "MIT | Apache-2.0"
# includes this file if it exists but does not fail
# this is useful for anything you may want to override from
# what cargo-bitbake generates.
include cargo-${PV}.inc
include cargo.inc

View File

@@ -0,0 +1,151 @@
# Auto-Generated by cargo-bitbake 0.3.9
#
inherit cargo
# If this is git based prefer versioned ones if they exist
# DEFAULT_PREFERENCE = "-1"
# how to get cargo could be as easy as but default to a git checkout:
# SRC_URI += "crate://crates.io/cargo/0.22.0"
SRC_URI += "git://github.com/rust-lang/cargo.git;protocol=https;branch=rust-1.21.0"
SRCREV = "3423351a5d75ac7377bb15987842aadcfd068ad2"
S = "${WORKDIR}/git"
CARGO_SRC_DIR=""
# please note if you have entries that do not begin with crate://
# you must change them to how that package can be fetched
SRC_URI += " \
crate://crates.io/advapi32-sys/0.2.0 \
crate://crates.io/aho-corasick/0.5.3 \
crate://crates.io/aho-corasick/0.6.3 \
crate://crates.io/atty/0.2.2 \
crate://crates.io/backtrace-sys/0.1.12 \
crate://crates.io/backtrace/0.3.2 \
crate://crates.io/bitflags/0.7.0 \
crate://crates.io/bitflags/0.9.1 \
crate://crates.io/bufstream/0.1.3 \
crate://crates.io/cfg-if/0.1.2 \
crate://crates.io/cmake/0.1.24 \
crate://crates.io/conv/0.3.3 \
crate://crates.io/core-foundation-sys/0.4.4 \
crate://crates.io/core-foundation/0.4.4 \
crate://crates.io/crossbeam/0.2.10 \
crate://crates.io/curl-sys/0.3.14 \
crate://crates.io/curl/0.4.8 \
crate://crates.io/custom_derive/0.1.7 \
crate://crates.io/dbghelp-sys/0.2.0 \
crate://crates.io/docopt/0.8.1 \
crate://crates.io/dtoa/0.4.1 \
crate://crates.io/env_logger/0.4.3 \
crate://crates.io/error-chain/0.11.0-rc.2 \
crate://crates.io/filetime/0.1.10 \
crate://crates.io/flate2/0.2.19 \
crate://crates.io/fnv/1.0.5 \
crate://crates.io/foreign-types/0.2.0 \
crate://crates.io/fs2/0.4.2 \
crate://crates.io/gcc/0.3.51 \
crate://crates.io/git2-curl/0.7.0 \
crate://crates.io/git2/0.6.6 \
crate://crates.io/glob/0.2.11 \
crate://crates.io/globset/0.2.0 \
crate://crates.io/hamcrest/0.1.1 \
crate://crates.io/hex/0.2.0 \
crate://crates.io/home/0.3.0 \
crate://crates.io/idna/0.1.4 \
crate://crates.io/ignore/0.2.2 \
crate://crates.io/itoa/0.3.1 \
crate://crates.io/jobserver/0.1.6 \
crate://crates.io/kernel32-sys/0.2.2 \
crate://crates.io/lazy_static/0.2.8 \
crate://crates.io/libc/0.2.28 \
crate://crates.io/libgit2-sys/0.6.12 \
crate://crates.io/libssh2-sys/0.2.6 \
crate://crates.io/libz-sys/1.0.16 \
crate://crates.io/log/0.3.8 \
crate://crates.io/magenta-sys/0.1.1 \
crate://crates.io/magenta/0.1.1 \
crate://crates.io/matches/0.1.6 \
crate://crates.io/memchr/0.1.11 \
crate://crates.io/memchr/1.0.1 \
crate://crates.io/miniz-sys/0.1.9 \
crate://crates.io/miow/0.2.1 \
crate://crates.io/net2/0.2.30 \
crate://crates.io/num-bigint/0.1.40 \
crate://crates.io/num-complex/0.1.40 \
crate://crates.io/num-integer/0.1.35 \
crate://crates.io/num-iter/0.1.34 \
crate://crates.io/num-rational/0.1.39 \
crate://crates.io/num-traits/0.1.40 \
crate://crates.io/num/0.1.40 \
crate://crates.io/num_cpus/1.6.2 \
crate://crates.io/openssl-probe/0.1.1 \
crate://crates.io/openssl-sys/0.9.15 \
crate://crates.io/openssl/0.9.15 \
crate://crates.io/percent-encoding/1.0.0 \
crate://crates.io/pkg-config/0.3.9 \
crate://crates.io/psapi-sys/0.1.0 \
crate://crates.io/quote/0.3.15 \
crate://crates.io/rand/0.3.16 \
crate://crates.io/regex-syntax/0.3.9 \
crate://crates.io/regex-syntax/0.4.1 \
crate://crates.io/regex/0.1.80 \
crate://crates.io/regex/0.2.2 \
crate://crates.io/rustc-demangle/0.1.4 \
crate://crates.io/rustc-serialize/0.3.24 \
crate://crates.io/same-file/0.1.3 \
crate://crates.io/scoped-tls/0.1.0 \
crate://crates.io/scopeguard/0.1.2 \
crate://crates.io/semver-parser/0.7.0 \
crate://crates.io/semver/0.7.0 \
crate://crates.io/serde/1.0.11 \
crate://crates.io/serde_derive/1.0.11 \
crate://crates.io/serde_derive_internals/0.15.1 \
crate://crates.io/serde_ignored/0.0.3 \
crate://crates.io/serde_json/1.0.2 \
crate://crates.io/shell-escape/0.1.3 \
crate://crates.io/socket2/0.2.1 \
crate://crates.io/strsim/0.6.0 \
crate://crates.io/syn/0.11.11 \
crate://crates.io/synom/0.11.3 \
crate://crates.io/tar/0.4.13 \
crate://crates.io/tempdir/0.3.5 \
crate://crates.io/termcolor/0.3.2 \
crate://crates.io/thread-id/2.0.0 \
crate://crates.io/thread_local/0.2.7 \
crate://crates.io/thread_local/0.3.4 \
crate://crates.io/toml/0.4.3 \
crate://crates.io/unicode-bidi/0.3.4 \
crate://crates.io/unicode-normalization/0.1.5 \
crate://crates.io/unicode-xid/0.0.4 \
crate://crates.io/unreachable/1.0.0 \
crate://crates.io/url/1.5.1 \
crate://crates.io/userenv-sys/0.2.0 \
crate://crates.io/utf8-ranges/0.1.3 \
crate://crates.io/utf8-ranges/1.0.0 \
crate://crates.io/vcpkg/0.2.2 \
crate://crates.io/void/1.0.2 \
crate://crates.io/walkdir/1.0.7 \
crate://crates.io/winapi-build/0.1.1 \
crate://crates.io/winapi/0.2.8 \
crate://crates.io/wincolor/0.1.4 \
crate://crates.io/ws2_32-sys/0.2.1 \
"
# FIXME: update generateme with the real MD5 of the license file
LIC_FILES_CHKSUM=" \
file://LICENSE-MIT;md5=b377b220f43d747efdec40d69fcaa69d \
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
"
SUMMARY = "Cargo, a package manager for Rust."
HOMEPAGE = "https://crates.io"
LICENSE = "MIT | Apache-2.0"
# includes this file if it exists but does not fail
# this is useful for anything you may want to override from
# what cargo-bitbake generates.
include cargo-${PV}.inc
include cargo.inc

View File

@@ -0,0 +1,167 @@
# Auto-Generated by cargo-bitbake 0.3.10-pre
#
inherit cargo
# If this is git based prefer versioned ones if they exist
# DEFAULT_PREFERENCE = "-1"
# how to get cargo could be as easy as but default to a git checkout:
# SRC_URI += "crate://crates.io/cargo/0.25.0"
SRC_URI += "git://github.com/rust-lang/cargo;protocol=http;branch=rust-1.24.0"
SRCREV = "8c93e089536467783957fec23b0f2627bb6ce357"
S = "${WORKDIR}/git"
CARGO_SRC_DIR=""
# please note if you have entries that do not begin with crate://
# you must change them to how that package can be fetched
SRC_URI += " \
crate://crates.io/advapi32-sys/0.2.0 \
crate://crates.io/aho-corasick/0.5.3 \
crate://crates.io/aho-corasick/0.6.4 \
crate://crates.io/atty/0.2.6 \
crate://crates.io/backtrace-sys/0.1.16 \
crate://crates.io/backtrace/0.3.5 \
crate://crates.io/bitflags/0.9.1 \
crate://crates.io/bitflags/1.0.1 \
crate://crates.io/bufstream/0.1.3 \
crate://crates.io/cc/1.0.4 \
crate://crates.io/cfg-if/0.1.2 \
crate://crates.io/cmake/0.1.29 \
crate://crates.io/commoncrypto-sys/0.2.0 \
crate://crates.io/commoncrypto/0.2.0 \
crate://crates.io/core-foundation-sys/0.4.6 \
crate://crates.io/core-foundation/0.4.6 \
crate://crates.io/crossbeam/0.2.12 \
crate://crates.io/crossbeam/0.3.2 \
crate://crates.io/crypto-hash/0.3.0 \
crate://crates.io/curl-sys/0.4.1 \
crate://crates.io/curl/0.4.11 \
crate://crates.io/docopt/0.8.3 \
crate://crates.io/dtoa/0.4.2 \
crate://crates.io/env_logger/0.4.3 \
crate://crates.io/failure/0.1.1 \
crate://crates.io/failure_derive/0.1.1 \
crate://crates.io/filetime/0.1.15 \
crate://crates.io/flate2/1.0.1 \
crate://crates.io/fnv/1.0.6 \
crate://crates.io/foreign-types-shared/0.1.1 \
crate://crates.io/foreign-types/0.3.2 \
crate://crates.io/fs2/0.4.3 \
crate://crates.io/fuchsia-zircon-sys/0.3.3 \
crate://crates.io/fuchsia-zircon/0.3.3 \
crate://crates.io/git2-curl/0.7.0 \
crate://crates.io/git2/0.6.11 \
crate://crates.io/glob/0.2.11 \
crate://crates.io/globset/0.2.1 \
crate://crates.io/hamcrest/0.1.1 \
crate://crates.io/hex/0.2.0 \
crate://crates.io/home/0.3.0 \
crate://crates.io/idna/0.1.4 \
crate://crates.io/ignore/0.2.2 \
crate://crates.io/itoa/0.3.4 \
crate://crates.io/jobserver/0.1.9 \
crate://crates.io/kernel32-sys/0.2.2 \
crate://crates.io/lazy_static/0.2.11 \
crate://crates.io/lazy_static/1.0.0 \
crate://crates.io/libc/0.2.36 \
crate://crates.io/libgit2-sys/0.6.19 \
crate://crates.io/libssh2-sys/0.2.6 \
crate://crates.io/libz-sys/1.0.18 \
crate://crates.io/log/0.3.9 \
crate://crates.io/log/0.4.1 \
crate://crates.io/matches/0.1.6 \
crate://crates.io/memchr/0.1.11 \
crate://crates.io/memchr/1.0.2 \
crate://crates.io/memchr/2.0.1 \
crate://crates.io/miniz-sys/0.1.10 \
crate://crates.io/miow/0.2.1 \
crate://crates.io/net2/0.2.31 \
crate://crates.io/num-bigint/0.1.43 \
crate://crates.io/num-complex/0.1.42 \
crate://crates.io/num-integer/0.1.36 \
crate://crates.io/num-iter/0.1.35 \
crate://crates.io/num-rational/0.1.42 \
crate://crates.io/num-traits/0.1.43 \
crate://crates.io/num-traits/0.2.0 \
crate://crates.io/num/0.1.42 \
crate://crates.io/num_cpus/1.8.0 \
crate://crates.io/openssl-probe/0.1.2 \
crate://crates.io/openssl-sys/0.9.26 \
crate://crates.io/openssl/0.9.24 \
crate://crates.io/percent-encoding/1.0.1 \
crate://crates.io/pkg-config/0.3.9 \
crate://crates.io/psapi-sys/0.1.1 \
crate://crates.io/quote/0.3.15 \
crate://crates.io/rand/0.3.22 \
crate://crates.io/rand/0.4.2 \
crate://crates.io/redox_syscall/0.1.37 \
crate://crates.io/redox_termios/0.1.1 \
crate://crates.io/regex-syntax/0.3.9 \
crate://crates.io/regex-syntax/0.4.2 \
crate://crates.io/regex/0.1.80 \
crate://crates.io/regex/0.2.6 \
crate://crates.io/remove_dir_all/0.3.0 \
crate://crates.io/rustc-demangle/0.1.6 \
crate://crates.io/rustc-serialize/0.3.24 \
crate://crates.io/same-file/0.1.3 \
crate://crates.io/schannel/0.1.10 \
crate://crates.io/scoped-tls/0.1.0 \
crate://crates.io/scopeguard/0.1.2 \
crate://crates.io/semver-parser/0.7.0 \
crate://crates.io/semver/0.8.0 \
crate://crates.io/serde/1.0.27 \
crate://crates.io/serde_derive/1.0.27 \
crate://crates.io/serde_derive_internals/0.19.0 \
crate://crates.io/serde_ignored/0.0.4 \
crate://crates.io/serde_json/1.0.9 \
crate://crates.io/shell-escape/0.1.3 \
crate://crates.io/socket2/0.3.1 \
crate://crates.io/strsim/0.6.0 \
crate://crates.io/syn/0.11.11 \
crate://crates.io/synom/0.11.3 \
crate://crates.io/synstructure/0.6.1 \
crate://crates.io/tar/0.4.14 \
crate://crates.io/tempdir/0.3.6 \
crate://crates.io/termcolor/0.3.4 \
crate://crates.io/termion/1.5.1 \
crate://crates.io/thread-id/2.0.0 \
crate://crates.io/thread_local/0.2.7 \
crate://crates.io/thread_local/0.3.5 \
crate://crates.io/toml/0.4.5 \
crate://crates.io/unicode-bidi/0.3.4 \
crate://crates.io/unicode-normalization/0.1.5 \
crate://crates.io/unicode-xid/0.0.4 \
crate://crates.io/unreachable/1.0.0 \
crate://crates.io/url/1.6.0 \
crate://crates.io/userenv-sys/0.2.0 \
crate://crates.io/utf8-ranges/0.1.3 \
crate://crates.io/utf8-ranges/1.0.0 \
crate://crates.io/vcpkg/0.2.2 \
crate://crates.io/void/1.0.2 \
crate://crates.io/walkdir/1.0.7 \
crate://crates.io/winapi-build/0.1.1 \
crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
crate://crates.io/winapi/0.2.8 \
crate://crates.io/winapi/0.3.4 \
crate://crates.io/wincolor/0.1.6 \
crate://crates.io/ws2_32-sys/0.2.1 \
"
# FIXME: update generateme with the real MD5 of the license file
LIC_FILES_CHKSUM=" \
file://LICENSE-MIT;md5=b377b220f43d747efdec40d69fcaa69d \
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
"
SUMMARY = "Cargo, a package manager for Rust."
HOMEPAGE = "https://crates.io"
LICENSE = "MIT | Apache-2.0"
# includes this file if it exists but does not fail
# this is useful for anything you may want to override from
# what cargo-bitbake generates.
include cargo-${PV}.inc
include cargo.inc

View File

@@ -1,4 +0,0 @@
require recipes-devtools/rust/rust-source-${PV}.inc
require recipes-devtools/rust/rust-snapshot-${PV}.inc
require cargo.inc
BBCLASSEXTEND = "native nativesdk"

View File

@@ -1,4 +0,0 @@
require recipes-devtools/rust/rust-source-${PV}.inc
require recipes-devtools/rust/rust-snapshot-${PV}.inc
require cargo.inc
BBCLASSEXTEND = "native nativesdk"

View File

@@ -0,0 +1,245 @@
From a0714f06eb1df66a206e1d0fadccf175276b753b Mon Sep 17 00:00:00 2001
From: Philip Craig <philipjcraig@gmail.com>
Date: Sat, 30 Sep 2017 16:28:48 +1000
Subject: [PATCH] Don't use remapped path when loading modules and include
files
---
src/librustc/ich/impls_syntax.rs | 1 +
src/librustc/session/mod.rs | 4 +---
src/libsyntax/codemap.rs | 14 +++++++++++++-
src/libsyntax/ext/expand.rs | 6 ++----
src/libsyntax/ext/source_util.rs | 2 +-
src/libsyntax/parse/parser.rs | 2 +-
src/libsyntax_pos/lib.rs | 6 ++++++
src/test/codegen/remap_path_prefix/aux_mod.rs | 16 ++++++++++++++++
src/test/codegen/remap_path_prefix/main.rs | 7 +++++++
9 files changed, 48 insertions(+), 10 deletions(-)
create mode 100644 src/test/codegen/remap_path_prefix/aux_mod.rs
diff --git a/src/librustc/ich/impls_syntax.rs b/src/librustc/ich/impls_syntax.rs
index b827284271..489fd9b5b7 100644
--- a/src/librustc/ich/impls_syntax.rs
+++ b/src/librustc/ich/impls_syntax.rs
@@ -332,6 +332,7 @@ impl<'a, 'gcx, 'tcx> HashStable<StableHashingContext<'a, 'gcx, 'tcx>> for FileMa
let FileMap {
ref name,
name_was_remapped,
+ path: _,
crate_of_origin,
// Do not hash the source as it is not encoded
src: _,
diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs
index 7ff9d202c1..619ae81506 100644
--- a/src/librustc/session/mod.rs
+++ b/src/librustc/session/mod.rs
@@ -72,8 +72,7 @@ pub struct Session {
pub derive_registrar_fn: Cell<Option<ast::NodeId>>,
pub default_sysroot: Option<PathBuf>,
// The name of the root source file of the crate, in the local file system.
- // The path is always expected to be absolute. `None` means that there is no
- // source file.
+ // `None` means that there is no source file.
pub local_crate_source_file: Option<String>,
// The directory the compiler has been executed in plus a flag indicating
// if the value stored here has been affected by path remapping.
@@ -707,7 +706,6 @@ pub fn build_session_(sopts: config::Options,
let file_path_mapping = sopts.file_path_mapping();
- // Make the path absolute, if necessary
let local_crate_source_file = local_crate_source_file.map(|path| {
file_path_mapping.map_prefix(path.to_string_lossy().into_owned()).0
});
diff --git a/src/libsyntax/codemap.rs b/src/libsyntax/codemap.rs
index 30ae7df935..e8cfa51ee2 100644
--- a/src/libsyntax/codemap.rs
+++ b/src/libsyntax/codemap.rs
@@ -162,9 +162,16 @@ impl CodeMap {
let start_pos = self.next_start_pos();
let mut files = self.files.borrow_mut();
+ // The path is used to determine the directory for loading submodules and
+ // include files, so it must be before remapping.
+ // Note that filename may not be a valid path, eg it may be `<anon>` etc,
+ // but this is okay because the directory determined by `path.pop()` will
+ // be empty, so the working directory will be used.
+ let path = PathBuf::from(filename.clone());
+
let (filename, was_remapped) = self.path_mapping.map_prefix(filename);
let filemap =
- Rc::new(FileMap::new(filename, was_remapped, src, Pos::from_usize(start_pos)));
+ Rc::new(FileMap::new(filename, was_remapped, path, src, Pos::from_usize(start_pos)));
files.push(filemap.clone());
@@ -216,6 +223,7 @@ impl CodeMap {
let filemap = Rc::new(FileMap {
name: filename,
name_was_remapped,
+ path: PathBuf::new(),
crate_of_origin,
src: None,
src_hash,
@@ -351,6 +359,10 @@ impl CodeMap {
self.lookup_char_pos(sp.lo).file.name.to_string()
}
+ pub fn span_to_path(&self, sp: Span) -> PathBuf {
+ self.lookup_char_pos(sp.lo).file.path.clone()
+ }
+
pub fn span_to_lines(&self, sp: Span) -> FileLinesResult {
debug!("span_to_lines(sp={:?})", sp);
diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs
index 171b0a22e9..8db8c83ef4 100644
--- a/src/libsyntax/ext/expand.rs
+++ b/src/libsyntax/ext/expand.rs
@@ -35,7 +35,6 @@ use visit::Visitor;
use std::collections::HashMap;
use std::mem;
-use std::path::PathBuf;
use std::rc::Rc;
macro_rules! expansions {
@@ -200,7 +199,7 @@ impl<'a, 'b> MacroExpander<'a, 'b> {
self.cx.crate_root = std_inject::injected_crate_name(&krate);
let mut module = ModuleData {
mod_path: vec![Ident::from_str(&self.cx.ecfg.crate_name)],
- directory: PathBuf::from(self.cx.codemap().span_to_filename(krate.span)),
+ directory: self.cx.codemap().span_to_path(krate.span),
};
module.directory.pop();
self.cx.current_expansion.module = Rc::new(module);
@@ -902,8 +901,7 @@ impl<'a, 'b> Folder for InvocationCollector<'a, 'b> {
module.directory.push(&*item.ident.name.as_str());
}
} else {
- let mut path =
- PathBuf::from(self.cx.parse_sess.codemap().span_to_filename(inner));
+ let mut path = self.cx.parse_sess.codemap().span_to_path(inner);
let directory_ownership = match path.file_name().unwrap().to_str() {
Some("mod.rs") => DirectoryOwnership::Owned,
_ => DirectoryOwnership::UnownedViaMod(false),
diff --git a/src/libsyntax/ext/source_util.rs b/src/libsyntax/ext/source_util.rs
index 95fe41be12..17a18256b3 100644
--- a/src/libsyntax/ext/source_util.rs
+++ b/src/libsyntax/ext/source_util.rs
@@ -197,7 +197,7 @@ fn res_rel_file(cx: &mut ExtCtxt, sp: syntax_pos::Span, arg: &Path) -> PathBuf {
// after macro expansion (that is, they are unhygienic).
if !arg.is_absolute() {
let callsite = sp.source_callsite();
- let mut path = PathBuf::from(&cx.codemap().span_to_filename(callsite));
+ let mut path = cx.codemap().span_to_path(callsite);
path.pop();
path.push(arg);
path
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 90a635fdf4..8c443e8b27 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -519,7 +519,7 @@ impl<'a> Parser<'a> {
if let Some(directory) = directory {
parser.directory = directory;
} else if parser.span != syntax_pos::DUMMY_SP {
- parser.directory.path = PathBuf::from(sess.codemap().span_to_filename(parser.span));
+ parser.directory.path = sess.codemap().span_to_path(parser.span);
parser.directory.path.pop();
}
diff --git a/src/libsyntax_pos/lib.rs b/src/libsyntax_pos/lib.rs
index d34dcfa3ed..b0db4edc30 100644
--- a/src/libsyntax_pos/lib.rs
+++ b/src/libsyntax_pos/lib.rs
@@ -32,6 +32,7 @@ use std::cmp;
use std::fmt;
use std::hash::Hasher;
use std::ops::{Add, Sub};
+use std::path::PathBuf;
use std::rc::Rc;
use rustc_data_structures::stable_hasher::StableHasher;
@@ -441,6 +442,8 @@ pub struct FileMap {
pub name: FileName,
/// True if the `name` field above has been modified by -Zremap-path-prefix
pub name_was_remapped: bool,
+ /// The path of the file that the source came from.
+ pub path: PathBuf,
/// Indicates which crate this FileMap was imported from.
pub crate_of_origin: u32,
/// The complete source code
@@ -566,6 +569,7 @@ impl Decodable for FileMap {
Ok(FileMap {
name,
name_was_remapped,
+ path: PathBuf::new(),
// `crate_of_origin` has to be set by the importer.
// This value matches up with rustc::hir::def_id::INVALID_CRATE.
// That constant is not available here unfortunately :(
@@ -591,6 +595,7 @@ impl fmt::Debug for FileMap {
impl FileMap {
pub fn new(name: FileName,
name_was_remapped: bool,
+ path: PathBuf,
mut src: String,
start_pos: BytePos) -> FileMap {
remove_bom(&mut src);
@@ -604,6 +609,7 @@ impl FileMap {
FileMap {
name,
name_was_remapped,
+ path,
crate_of_origin: 0,
src: Some(Rc::new(src)),
src_hash,
diff --git a/src/test/codegen/remap_path_prefix/aux_mod.rs b/src/test/codegen/remap_path_prefix/aux_mod.rs
new file mode 100644
index 0000000000..2a7019957a
--- /dev/null
+++ b/src/test/codegen/remap_path_prefix/aux_mod.rs
@@ -0,0 +1,16 @@
+// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// ignore-test: this is not a test
+
+#[inline]
+pub fn some_aux_mod_function() -> i32 {
+ 1234
+}
diff --git a/src/test/codegen/remap_path_prefix/main.rs b/src/test/codegen/remap_path_prefix/main.rs
index eb00c91ba5..c73739bb76 100644
--- a/src/test/codegen/remap_path_prefix/main.rs
+++ b/src/test/codegen/remap_path_prefix/main.rs
@@ -16,12 +16,19 @@
extern crate remap_path_prefix_aux;
+// Here we check that submodules and include files are found using the path without
+// remapping. This test requires that rustc is called with an absolute path.
+mod aux_mod;
+include!("aux_mod.rs");
+
// Here we check that the expansion of the file!() macro is mapped.
// CHECK: internal constant [34 x i8] c"/the/src/remap_path_prefix/main.rs"
pub static FILE_PATH: &'static str = file!();
fn main() {
remap_path_prefix_aux::some_aux_function();
+ aux_mod::some_aux_mod_function();
+ some_aux_mod_function();
}
// Here we check that local debuginfo is mapped correctly.
--
2.14.3

View File

@@ -0,0 +1,43 @@
From 6a82f31d21ac7b85211e580585cc73ab2bdb0bc9 Mon Sep 17 00:00:00 2001
From: Tyler Hall <tyler.hall@lexmark.com>
Date: Sun, 29 Oct 2017 16:29:03 -0400
Subject: [PATCH] librustc: always allow unstable options
---
src/librustc/session/config.rs | 13 -------------
1 file changed, 13 deletions(-)
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
index 4b41572c1a..97381bc05c 100644
--- a/src/librustc/session/config.rs
+++ b/src/librustc/session/config.rs
@@ -1703,8 +1703,6 @@ pub mod nightly_options {
pub fn check_nightly_options(matches: &getopts::Matches, flags: &[RustcOptGroup]) {
let has_z_unstable_option = matches.opt_strs("Z").iter().any(|x| *x == "unstable-options");
- let really_allows_unstable_options = UnstableFeatures::from_environment()
- .is_nightly_build();
for opt in flags.iter() {
if opt.stability == OptionStability::Stable {
@@ -1719,17 +1717,6 @@ pub mod nightly_options {
the flag `{}`",
opt.name));
}
- if really_allows_unstable_options {
- continue
- }
- match opt.stability {
- OptionStability::Unstable => {
- let msg = format!("the option `{}` is only accepted on the \
- nightly compiler", opt.name);
- early_error(ErrorOutputType::default(), &msg);
- }
- OptionStability::Stable => {}
- }
}
}
}
--
2.14.2

View File

@@ -0,0 +1,43 @@
From 6a82f31d21ac7b85211e580585cc73ab2bdb0bc9 Mon Sep 17 00:00:00 2001
From: Tyler Hall <tyler.hall@lexmark.com>
Date: Sun, 29 Oct 2017 16:29:03 -0400
Subject: [PATCH] librustc: always allow unstable options
---
src/librustc/session/config.rs | 13 -------------
1 file changed, 13 deletions(-)
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
index 4b41572c1a..97381bc05c 100644
--- a/src/librustc/session/config.rs
+++ b/src/librustc/session/config.rs
@@ -1703,8 +1703,6 @@ pub mod nightly_options {
pub fn check_nightly_options(matches: &getopts::Matches, flags: &[RustcOptGroup]) {
let has_z_unstable_option = matches.opt_strs("Z").iter().any(|x| *x == "unstable-options");
- let really_allows_unstable_options = UnstableFeatures::from_environment()
- .is_nightly_build();
for opt in flags.iter() {
if opt.stability == OptionStability::Stable {
@@ -1719,17 +1717,6 @@ pub mod nightly_options {
the flag `{}`",
opt.name));
}
- if really_allows_unstable_options {
- continue
- }
- match opt.stability {
- OptionStability::Unstable => {
- let msg = format!("the option `{}` is only accepted on the \
- nightly compiler", opt.name);
- early_error(ErrorOutputType::default(), &msg);
- }
- OptionStability::Stable => {}
- }
}
}
}
--
2.14.2

View File

@@ -1,44 +0,0 @@
From 7b3bc1de0c79a1b410105ce36bbe9f774438d263 Mon Sep 17 00:00:00 2001
From: Ross Schulman <ross@rbs.io>
Date: Tue, 1 Feb 2022 09:13:16 -0500
Subject: [PATCH] Add 400-series syscalls to musl riscv64 definitions
Upstream-Status: Backport [https://github.com/rust-lang/libc/commit/7b3bc1de0c79a1b410105ce36bbe9f774438d263]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
.../linux_like/linux/musl/b64/riscv64/mod.rs | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/vendor/libc-0.2.116/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs b/vendor/libc-0.2.116/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
index 6b17621c7..2036583d5 100644
--- a/vendor/libc-0.2.116/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+++ b/vendor/libc-0.2.116/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
@@ -465,6 +465,25 @@ pub const SYS_pkey_mprotect: ::c_long = 288;
pub const SYS_pkey_alloc: ::c_long = 289;
pub const SYS_pkey_free: ::c_long = 290;
pub const SYS_statx: ::c_long = 291;
+pub const SYS_pidfd_send_signal: ::c_long = 424;
+pub const SYS_io_uring_setup: ::c_long = 425;
+pub const SYS_io_uring_enter: ::c_long = 426;
+pub const SYS_io_uring_register: ::c_long = 427;
+pub const SYS_open_tree: ::c_long = 428;
+pub const SYS_move_mount: ::c_long = 429;
+pub const SYS_fsopen: ::c_long = 430;
+pub const SYS_fsconfig: ::c_long = 431;
+pub const SYS_fsmount: ::c_long = 432;
+pub const SYS_fspick: ::c_long = 433;
+pub const SYS_pidfd_open: ::c_long = 434;
+pub const SYS_clone3: ::c_long = 435;
+pub const SYS_close_range: ::c_long = 436;
+pub const SYS_openat2: ::c_long = 437;
+pub const SYS_pidfd_getfd: ::c_long = 438;
+pub const SYS_faccessat2: ::c_long = 439;
+pub const SYS_process_madvise: ::c_long = 440;
+pub const SYS_epoll_pwait2: ::c_long = 441;
+pub const SYS_mount_setattr: ::c_long = 442;
pub const O_APPEND: ::c_int = 1024;
pub const O_DIRECT: ::c_int = 0x4000;
--
2.35.1

View File

@@ -2,28 +2,16 @@ SUMMARY = "Rust standard libaries"
HOMEPAGE = "http://www.rust-lang.org"
SECTION = "devel"
LICENSE = "MIT | Apache-2.0"
LIC_FILES_CHKSUM = "file://../../COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"
RUSTLIB_DEP = ""
inherit cargo
DEPENDS:append:libc-musl = " libunwind"
# rv32 does not have libunwind ported yet
DEPENDS:remove:riscv32 = "libunwind"
DEPENDS:remove:riscv64 = "libunwind"
# Embed bitcode in order to allow compiling both with and without LTO
RUSTFLAGS += "-Cembed-bitcode=yes"
# Needed so cargo can find libbacktrace
RUSTFLAGS += "-L ${STAGING_LIBDIR} -C link-arg=-Wl,-soname,libstd.so"
S = "${RUSTSRC}/src/libstd"
CARGO_FEATURES ?= "panic-unwind backtrace"
CARGO_BUILD_FLAGS += "--features '${CARGO_FEATURES}'"
CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor"
do_compile:prepend () {
do_compile_prepend () {
export CARGO_TARGET_DIR="${B}"
# For Rust 1.13.0 and newer
export RUSTC_BOOTSTRAP="1"
@@ -35,6 +23,6 @@ do_install () {
# With the incremental build support added in 1.24, the libstd deps directory also includes dependency
# files that get installed. Those are really only needed to incrementally rebuild the libstd library
# itself and don't need to be installed.
rm -f ${B}/${TARGET_SYS}/${BUILD_DIR}/deps/*.d
cp ${B}/${TARGET_SYS}/${BUILD_DIR}/deps/* ${D}${rustlibdir}
rm -f ${B}/${TARGET_SYS}/release/deps/*.d
cp ${B}/${TARGET_SYS}/release/deps/* ${D}${rustlibdir}
}

View File

@@ -0,0 +1,139 @@
require rust-source-${PV}.inc
require libstd-rs.inc
LIC_FILES_CHKSUM = "file://../../COPYRIGHT;md5=12922f5565a22267bd82aaeb6d3548e5"
# Don't use jemalloc as it doesn't work for many targets.
# https://github.com/rust-lang/rust/pull/37392
CARGO_BUILD_FLAGS += "--features 'panic-unwind'"
# These are taken from src/libstd/Cargo.toml via cargo-bitbake
SRC_URI += " \
crate://crates.io/advapi32-sys/0.2.0 \
crate://crates.io/aho-corasick/0.5.3 \
crate://crates.io/aho-corasick/0.6.3 \
crate://crates.io/ansi_term/0.9.0 \
crate://crates.io/atty/0.2.2 \
crate://crates.io/backtrace-sys/0.1.11 \
crate://crates.io/backtrace/0.3.2 \
crate://crates.io/bitflags/0.8.2 \
crate://crates.io/bitflags/0.9.1 \
crate://crates.io/bufstream/0.1.3 \
crate://crates.io/cfg-if/0.1.2 \
crate://crates.io/clap/2.25.0 \
crate://crates.io/cmake/0.1.24 \
crate://crates.io/crossbeam/0.2.10 \
crate://crates.io/curl-sys/0.3.14 \
crate://crates.io/curl/0.4.7 \
crate://crates.io/dbghelp-sys/0.2.0 \
crate://crates.io/diff/0.1.10 \
crate://crates.io/docopt/0.8.1 \
crate://crates.io/dtoa/0.4.1 \
crate://crates.io/env_logger/0.4.3 \
crate://crates.io/error-chain/0.10.0 \
crate://crates.io/error-chain/0.11.0-rc.2 \
crate://crates.io/filetime/0.1.10 \
crate://crates.io/flate2/0.2.19 \
crate://crates.io/foreign-types/0.2.0 \
crate://crates.io/fs2/0.4.2 \
crate://crates.io/gcc/0.3.51 \
crate://crates.io/getopts/0.2.14 \
crate://crates.io/git2-curl/0.7.0 \
crate://crates.io/git2/0.6.6 \
crate://crates.io/glob/0.2.11 \
crate://crates.io/hamcrest/0.1.1 \
crate://crates.io/handlebars/0.26.2 \
crate://crates.io/hex/0.2.0 \
crate://crates.io/idna/0.1.2 \
crate://crates.io/itoa/0.3.1 \
crate://crates.io/jobserver/0.1.6 \
crate://crates.io/kernel32-sys/0.2.2 \
crate://crates.io/lazy_static/0.2.8 \
crate://crates.io/libc/0.2.26 \
crate://crates.io/libgit2-sys/0.6.12 \
crate://crates.io/libssh2-sys/0.2.6 \
crate://crates.io/libz-sys/1.0.16 \
crate://crates.io/log/0.3.8 \
crate://crates.io/lzma-sys/0.1.7 \
crate://crates.io/matches/0.1.6 \
crate://crates.io/mdbook/0.0.22 \
crate://crates.io/memchr/0.1.11 \
crate://crates.io/memchr/1.0.1 \
crate://crates.io/miniz-sys/0.1.9 \
crate://crates.io/miow/0.2.1 \
crate://crates.io/net2/0.2.29 \
crate://crates.io/num-bigint/0.1.39 \
crate://crates.io/num-complex/0.1.38 \
crate://crates.io/num-integer/0.1.34 \
crate://crates.io/num-iter/0.1.33 \
crate://crates.io/num-rational/0.1.38 \
crate://crates.io/num-traits/0.1.39 \
crate://crates.io/num/0.1.39 \
crate://crates.io/num_cpus/1.6.2 \
crate://crates.io/open/1.2.0 \
crate://crates.io/openssl-probe/0.1.1 \
crate://crates.io/openssl-sys/0.9.15 \
crate://crates.io/openssl/0.9.15 \
crate://crates.io/owning_ref/0.3.3 \
crate://crates.io/percent-encoding/1.0.0 \
crate://crates.io/pest/0.3.3 \
crate://crates.io/pkg-config/0.3.9 \
crate://crates.io/psapi-sys/0.1.0 \
crate://crates.io/pulldown-cmark/0.0.14 \
crate://crates.io/quick-error/1.2.0 \
crate://crates.io/quote/0.3.15 \
crate://crates.io/rand/0.3.15 \
crate://crates.io/regex-syntax/0.3.9 \
crate://crates.io/regex-syntax/0.4.1 \
crate://crates.io/regex/0.1.80 \
crate://crates.io/regex/0.2.2 \
crate://crates.io/rls-data/0.7.0 \
crate://crates.io/rls-span/0.4.0 \
crate://crates.io/rustc-demangle/0.1.4 \
crate://crates.io/rustc-serialize/0.3.24 \
crate://crates.io/same-file/0.1.3 \
crate://crates.io/scoped-tls/0.1.0 \
crate://crates.io/semver-parser/0.7.0 \
crate://crates.io/semver/0.7.0 \
crate://crates.io/serde/1.0.10 \
crate://crates.io/serde_derive/1.0.10 \
crate://crates.io/serde_derive_internals/0.15.1 \
crate://crates.io/serde_ignored/0.0.3 \
crate://crates.io/serde_json/1.0.2 \
crate://crates.io/shell-escape/0.1.3 \
crate://crates.io/socket2/0.2.1 \
crate://crates.io/stable_deref_trait/1.0.0 \
crate://crates.io/strsim/0.6.0 \
crate://crates.io/syn/0.11.11 \
crate://crates.io/synom/0.11.3 \
crate://crates.io/tar/0.4.13 \
crate://crates.io/tempdir/0.3.5 \
crate://crates.io/term_size/0.3.0 \
crate://crates.io/termcolor/0.3.2 \
crate://crates.io/textwrap/0.6.0 \
crate://crates.io/thread-id/2.0.0 \
crate://crates.io/thread_local/0.2.7 \
crate://crates.io/thread_local/0.3.4 \
crate://crates.io/toml/0.1.30 \
crate://crates.io/toml/0.4.2 \
crate://crates.io/unicode-bidi/0.3.4 \
crate://crates.io/unicode-normalization/0.1.5 \
crate://crates.io/unicode-segmentation/1.1.0 \
crate://crates.io/unicode-width/0.1.4 \
crate://crates.io/unicode-xid/0.0.4 \
crate://crates.io/unreachable/1.0.0 \
crate://crates.io/url/1.5.1 \
crate://crates.io/utf8-ranges/0.1.3 \
crate://crates.io/utf8-ranges/1.0.0 \
crate://crates.io/vcpkg/0.2.2 \
crate://crates.io/vec_map/0.8.0 \
crate://crates.io/void/1.0.2 \
crate://crates.io/walkdir/1.0.7 \
crate://crates.io/winapi-build/0.1.1 \
crate://crates.io/winapi/0.2.8 \
crate://crates.io/wincolor/0.1.4 \
crate://crates.io/ws2_32-sys/0.2.1 \
crate://crates.io/xattr/0.1.11 \
crate://crates.io/xz2/0.1.3 \
crate://crates.io/yaml-rust/0.3.5 \
"

View File

@@ -0,0 +1,170 @@
require rust-source-${PV}.inc
require libstd-rs.inc
LIC_FILES_CHKSUM = "file://../../COPYRIGHT;md5=c709a09d1b062d9a908e3631c1e1cdf5"
# Don't use jemalloc as it doesn't work for many targets.
# https://github.com/rust-lang/rust/pull/37392
CARGO_BUILD_FLAGS += "--features 'panic-unwind'"
# These are taken from src/libstd/Cargo.toml via cargo-bitbake
SRC_URI += " \
crate://crates.io/advapi32-sys/0.2.0 \
crate://crates.io/aho-corasick/0.5.3 \
crate://crates.io/aho-corasick/0.6.3 \
crate://crates.io/ansi_term/0.9.0 \
crate://crates.io/ar/0.3.0 \
crate://crates.io/atty/0.2.2 \
crate://crates.io/backtrace-sys/0.1.12 \
crate://crates.io/backtrace/0.3.2 \
crate://crates.io/bitflags/0.7.0 \
crate://crates.io/bitflags/0.8.2 \
crate://crates.io/bitflags/0.9.1 \
crate://crates.io/bufstream/0.1.3 \
crate://crates.io/cfg-if/0.1.2 \
crate://crates.io/clap/2.26.0 \
crate://crates.io/cmake/0.1.24 \
crate://crates.io/core-foundation-sys/0.4.4 \
crate://crates.io/core-foundation/0.4.4 \
crate://crates.io/crossbeam/0.2.10 \
crate://crates.io/curl-sys/0.3.14 \
crate://crates.io/curl/0.4.8 \
crate://crates.io/dbghelp-sys/0.2.0 \
crate://crates.io/derive-new/0.3.0 \
crate://crates.io/diff/0.1.10 \
crate://crates.io/docopt/0.8.1 \
crate://crates.io/dtoa/0.4.1 \
crate://crates.io/enum_primitive/0.1.1 \
crate://crates.io/env_logger/0.3.5 \
crate://crates.io/env_logger/0.4.3 \
crate://crates.io/error-chain/0.10.0 \
crate://crates.io/error-chain/0.11.0-rc.2 \
crate://crates.io/filetime/0.1.10 \
crate://crates.io/flate2/0.2.19 \
crate://crates.io/fnv/1.0.5 \
crate://crates.io/foreign-types/0.2.0 \
crate://crates.io/fs2/0.4.2 \
crate://crates.io/futures/0.1.14 \
crate://crates.io/gcc/0.3.51 \
crate://crates.io/getopts/0.2.14 \
crate://crates.io/git2-curl/0.7.0 \
crate://crates.io/git2/0.6.6 \
crate://crates.io/glob/0.2.11 \
crate://crates.io/globset/0.2.0 \
crate://crates.io/hamcrest/0.1.1 \
crate://crates.io/handlebars/0.26.2 \
crate://crates.io/hex/0.2.0 \
crate://crates.io/home/0.3.0 \
crate://crates.io/idna/0.1.4 \
crate://crates.io/ignore/0.2.2 \
crate://crates.io/itoa/0.3.1 \
crate://crates.io/jobserver/0.1.6 \
crate://crates.io/jsonrpc-core/7.1.0 \
crate://crates.io/kernel32-sys/0.2.2 \
crate://crates.io/languageserver-types/0.12.0 \
crate://crates.io/lazy_static/0.2.8 \
crate://crates.io/libc/0.2.29 \
crate://crates.io/libgit2-sys/0.6.12 \
crate://crates.io/libssh2-sys/0.2.6 \
crate://crates.io/libz-sys/1.0.16 \
crate://crates.io/log/0.3.8 \
crate://crates.io/lzma-sys/0.1.8 \
crate://crates.io/matches/0.1.6 \
crate://crates.io/mdbook/0.0.22 \
crate://crates.io/memchr/0.1.11 \
crate://crates.io/memchr/1.0.1 \
crate://crates.io/miniz-sys/0.1.9 \
crate://crates.io/miow/0.2.1 \
crate://crates.io/net2/0.2.31 \
crate://crates.io/num-bigint/0.1.40 \
crate://crates.io/num-complex/0.1.40 \
crate://crates.io/num-integer/0.1.35 \
crate://crates.io/num-iter/0.1.34 \
crate://crates.io/num-rational/0.1.39 \
crate://crates.io/num-traits/0.1.40 \
crate://crates.io/num/0.1.40 \
crate://crates.io/num_cpus/1.6.2 \
crate://crates.io/open/1.2.0 \
crate://crates.io/openssl-probe/0.1.1 \
crate://crates.io/openssl-sys/0.9.17 \
crate://crates.io/openssl/0.9.17 \
crate://crates.io/owning_ref/0.3.3 \
crate://crates.io/percent-encoding/1.0.0 \
crate://crates.io/pest/0.3.3 \
crate://crates.io/pkg-config/0.3.9 \
crate://crates.io/psapi-sys/0.1.0 \
crate://crates.io/pulldown-cmark/0.0.14 \
crate://crates.io/quick-error/1.2.0 \
crate://crates.io/quote/0.2.3 \
crate://crates.io/quote/0.3.15 \
crate://crates.io/racer/2.0.10 \
crate://crates.io/rand/0.3.15 \
crate://crates.io/regex-syntax/0.3.9 \
crate://crates.io/regex-syntax/0.4.1 \
crate://crates.io/regex/0.1.80 \
crate://crates.io/regex/0.2.2 \
crate://crates.io/rls-analysis/0.6.5 \
crate://crates.io/rls-data/0.10.0 \
crate://crates.io/rls-rustc/0.1.0 \
crate://crates.io/rls-span/0.4.0 \
crate://crates.io/rls-vfs/0.4.4 \
crate://crates.io/rustc-demangle/0.1.5 \
crate://crates.io/rustc-serialize/0.3.24 \
crate://crates.io/rustfmt-nightly/0.2.2 \
crate://crates.io/same-file/0.1.3 \
crate://crates.io/scoped-tls/0.1.0 \
crate://crates.io/scopeguard/0.1.2 \
crate://crates.io/semver-parser/0.7.0 \
crate://crates.io/semver/0.7.0 \
crate://crates.io/serde/1.0.11 \
crate://crates.io/serde_derive/1.0.11 \
crate://crates.io/serde_derive_internals/0.15.1 \
crate://crates.io/serde_ignored/0.0.3 \
crate://crates.io/serde_json/1.0.2 \
crate://crates.io/shell-escape/0.1.3 \
crate://crates.io/socket2/0.2.2 \
crate://crates.io/stable_deref_trait/1.0.0 \
crate://crates.io/strings/0.1.0 \
crate://crates.io/strsim/0.6.0 \
crate://crates.io/syn/0.11.11 \
crate://crates.io/syn/0.8.7 \
crate://crates.io/synom/0.11.3 \
crate://crates.io/syntex_errors/0.52.0 \
crate://crates.io/syntex_pos/0.52.0 \
crate://crates.io/syntex_syntax/0.52.0 \
crate://crates.io/tar/0.4.13 \
crate://crates.io/tempdir/0.3.5 \
crate://crates.io/term/0.4.6 \
crate://crates.io/term_size/0.3.0 \
crate://crates.io/termcolor/0.3.2 \
crate://crates.io/textwrap/0.7.0 \
crate://crates.io/thread-id/2.0.0 \
crate://crates.io/thread_local/0.2.7 \
crate://crates.io/thread_local/0.3.4 \
crate://crates.io/toml/0.2.1 \
crate://crates.io/toml/0.4.5 \
crate://crates.io/typed-arena/1.3.0 \
crate://crates.io/unicode-bidi/0.3.4 \
crate://crates.io/unicode-normalization/0.1.5 \
crate://crates.io/unicode-segmentation/1.2.0 \
crate://crates.io/unicode-width/0.1.4 \
crate://crates.io/unicode-xid/0.0.3 \
crate://crates.io/unicode-xid/0.0.4 \
crate://crates.io/unreachable/1.0.0 \
crate://crates.io/url/1.5.1 \
crate://crates.io/url_serde/0.2.0 \
crate://crates.io/userenv-sys/0.2.0 \
crate://crates.io/utf8-ranges/0.1.3 \
crate://crates.io/utf8-ranges/1.0.0 \
crate://crates.io/vcpkg/0.2.2 \
crate://crates.io/vec_map/0.8.0 \
crate://crates.io/void/1.0.2 \
crate://crates.io/walkdir/1.0.7 \
crate://crates.io/winapi-build/0.1.1 \
crate://crates.io/winapi/0.2.8 \
crate://crates.io/wincolor/0.1.4 \
crate://crates.io/ws2_32-sys/0.2.1 \
crate://crates.io/xattr/0.1.11 \
crate://crates.io/xz2/0.1.3 \
crate://crates.io/yaml-rust/0.3.5 \
"

View File

@@ -0,0 +1,235 @@
require rust-source-${PV}.inc
require libstd-rs.inc
LIC_FILES_CHKSUM = "file://../../COPYRIGHT;md5=c709a09d1b062d9a908e3631c1e1cdf5"
# Don't use jemalloc as it doesn't work for many targets.
# https://github.com/rust-lang/rust/pull/37392
CARGO_BUILD_FLAGS += "--features 'panic-unwind'"
# These are taken from src/libstd/Cargo.toml via cargo-bitbake
SRC_URI += " \
crate://crates.io/advapi32-sys/0.2.0 \
crate://crates.io/aho-corasick/0.5.3 \
crate://crates.io/aho-corasick/0.6.4 \
crate://crates.io/ansi_term/0.10.2 \
crate://crates.io/ar/0.3.1 \
crate://crates.io/atty/0.2.3 \
crate://crates.io/backtrace-sys/0.1.16 \
crate://crates.io/backtrace/0.3.4 \
crate://crates.io/bitflags/0.7.0 \
crate://crates.io/bitflags/0.9.1 \
crate://crates.io/bitflags/1.0.1 \
crate://crates.io/bufstream/0.1.3 \
crate://crates.io/byteorder/1.2.1 \
crate://crates.io/cargo_metadata/0.2.3 \
crate://crates.io/cargo_metadata/0.4.0 \
crate://crates.io/cc/1.0.3 \
crate://crates.io/cfg-if/0.1.2 \
crate://crates.io/clap/2.29.0 \
crate://crates.io/cmake/0.1.29 \
crate://crates.io/coco/0.1.1 \
crate://crates.io/commoncrypto-sys/0.2.0 \
crate://crates.io/commoncrypto/0.2.0 \
crate://crates.io/compiletest_rs/0.3.3 \
crate://crates.io/core-foundation-sys/0.4.6 \
crate://crates.io/core-foundation/0.4.6 \
crate://crates.io/crossbeam/0.2.10 \
crate://crates.io/crossbeam/0.3.0 \
crate://crates.io/crypto-hash/0.3.0 \
crate://crates.io/cssparser-macros/0.3.0 \
crate://crates.io/cssparser/0.13.7 \
crate://crates.io/curl-sys/0.3.15 \
crate://crates.io/curl/0.4.8 \
crate://crates.io/dbghelp-sys/0.2.0 \
crate://crates.io/debug_unreachable/0.1.1 \
crate://crates.io/derive-new/0.5.0 \
crate://crates.io/diff/0.1.11 \
crate://crates.io/docopt/0.8.1 \
crate://crates.io/dtoa/0.4.2 \
crate://crates.io/duct/0.8.2 \
crate://crates.io/either/1.4.0 \
crate://crates.io/endian-type/0.1.2 \
crate://crates.io/enum_primitive/0.1.1 \
crate://crates.io/env_logger/0.3.5 \
crate://crates.io/env_logger/0.4.3 \
crate://crates.io/error-chain/0.11.0 \
crate://crates.io/error-chain/0.8.1 \
crate://crates.io/failure/0.1.1 \
crate://crates.io/failure_derive/0.1.1 \
crate://crates.io/filetime/0.1.14 \
crate://crates.io/flate2/1.0.1 \
crate://crates.io/fnv/1.0.6 \
crate://crates.io/foreign-types-shared/0.1.1 \
crate://crates.io/foreign-types/0.3.2 \
crate://crates.io/fs2/0.4.2 \
crate://crates.io/fuchsia-zircon-sys/0.3.2 \
crate://crates.io/fuchsia-zircon/0.3.2 \
crate://crates.io/futf/0.1.3 \
crate://crates.io/futures/0.1.17 \
crate://crates.io/getopts/0.2.15 \
crate://crates.io/git2-curl/0.7.0 \
crate://crates.io/git2/0.6.10 \
crate://crates.io/glob/0.2.11 \
crate://crates.io/globset/0.2.1 \
crate://crates.io/hamcrest/0.1.1 \
crate://crates.io/handlebars/0.29.1 \
crate://crates.io/hex/0.2.0 \
crate://crates.io/home/0.3.0 \
crate://crates.io/html-diff/0.0.5 \
crate://crates.io/html5ever/0.20.0 \
crate://crates.io/idna/0.1.4 \
crate://crates.io/if_chain/0.1.2 \
crate://crates.io/ignore/0.2.2 \
crate://crates.io/itertools/0.6.5 \
crate://crates.io/itoa/0.3.4 \
crate://crates.io/jobserver/0.1.8 \
crate://crates.io/json/0.11.12 \
crate://crates.io/jsonrpc-core/8.0.1 \
crate://crates.io/kernel32-sys/0.2.2 \
crate://crates.io/kuchiki/0.6.0 \
crate://crates.io/languageserver-types/0.16.0 \
crate://crates.io/lazy_static/0.2.11 \
crate://crates.io/lazy_static/1.0.0 \
crate://crates.io/lazycell/0.5.1 \
crate://crates.io/libc/0.2.34 \
crate://crates.io/libgit2-sys/0.6.18 \
crate://crates.io/libssh2-sys/0.2.6 \
crate://crates.io/libz-sys/1.0.18 \
crate://crates.io/log/0.3.9 \
crate://crates.io/log/0.4.1 \
crate://crates.io/log_settings/0.1.1 \
crate://crates.io/lzma-sys/0.1.9 \
crate://crates.io/mac/0.1.1 \
crate://crates.io/markup5ever/0.5.0 \
crate://crates.io/matches/0.1.6 \
crate://crates.io/mdbook/0.0.26 \
crate://crates.io/memchr/0.1.11 \
crate://crates.io/memchr/1.0.2 \
crate://crates.io/memchr/2.0.1 \
crate://crates.io/miniz-sys/0.1.10 \
crate://crates.io/miow/0.2.1 \
crate://crates.io/net2/0.2.31 \
crate://crates.io/nibble_vec/0.0.3 \
crate://crates.io/nix/0.8.1 \
crate://crates.io/num-bigint/0.1.41 \
crate://crates.io/num-complex/0.1.41 \
crate://crates.io/num-integer/0.1.35 \
crate://crates.io/num-iter/0.1.34 \
crate://crates.io/num-rational/0.1.40 \
crate://crates.io/num-traits/0.1.41 \
crate://crates.io/num/0.1.41 \
crate://crates.io/num_cpus/1.7.0 \
crate://crates.io/open/1.2.1 \
crate://crates.io/openssl-probe/0.1.2 \
crate://crates.io/openssl-sys/0.9.23 \
crate://crates.io/openssl/0.9.23 \
crate://crates.io/os_pipe/0.5.1 \
crate://crates.io/owning_ref/0.3.3 \
crate://crates.io/parking_lot/0.5.3 \
crate://crates.io/parking_lot_core/0.2.9 \
crate://crates.io/percent-encoding/1.0.1 \
crate://crates.io/pest/0.3.3 \
crate://crates.io/phf/0.7.21 \
crate://crates.io/phf_codegen/0.7.21 \
crate://crates.io/phf_generator/0.7.21 \
crate://crates.io/phf_shared/0.7.21 \
crate://crates.io/pkg-config/0.3.9 \
crate://crates.io/precomputed-hash/0.1.1 \
crate://crates.io/procedural-masquerade/0.1.5 \
crate://crates.io/psapi-sys/0.1.1 \
crate://crates.io/pulldown-cmark/0.0.15 \
crate://crates.io/pulldown-cmark/0.1.0 \
crate://crates.io/quick-error/1.2.1 \
crate://crates.io/quine-mc_cluskey/0.2.4 \
crate://crates.io/quote/0.3.15 \
crate://crates.io/racer/2.0.12 \
crate://crates.io/radix_trie/0.1.2 \
crate://crates.io/rand/0.3.19 \
crate://crates.io/rayon-core/1.3.0 \
crate://crates.io/rayon/0.9.0 \
crate://crates.io/redox_syscall/0.1.32 \
crate://crates.io/redox_termios/0.1.1 \
crate://crates.io/regex-syntax/0.3.9 \
crate://crates.io/regex-syntax/0.4.1 \
crate://crates.io/regex/0.1.80 \
crate://crates.io/regex/0.2.3 \
crate://crates.io/rls-analysis/0.10.0 \
crate://crates.io/rls-data/0.14.0 \
crate://crates.io/rls-rustc/0.1.1 \
crate://crates.io/rls-span/0.4.0 \
crate://crates.io/rls-vfs/0.4.4 \
crate://crates.io/rustc-demangle/0.1.5 \
crate://crates.io/rustc-serialize/0.3.24 \
crate://crates.io/same-file/0.1.3 \
crate://crates.io/scoped-tls/0.1.0 \
crate://crates.io/scopeguard/0.1.2 \
crate://crates.io/scopeguard/0.3.3 \
crate://crates.io/selectors/0.18.0 \
crate://crates.io/semver-parser/0.7.0 \
crate://crates.io/semver/0.6.0 \
crate://crates.io/semver/0.8.0 \
crate://crates.io/serde/1.0.25 \
crate://crates.io/serde_derive/1.0.25 \
crate://crates.io/serde_derive_internals/0.18.1 \
crate://crates.io/serde_ignored/0.0.4 \
crate://crates.io/serde_json/1.0.8 \
crate://crates.io/shared_child/0.2.1 \
crate://crates.io/shell-escape/0.1.3 \
crate://crates.io/siphasher/0.2.2 \
crate://crates.io/smallvec/0.3.3 \
crate://crates.io/smallvec/0.6.0 \
crate://crates.io/socket2/0.2.4 \
crate://crates.io/stable_deref_trait/1.0.0 \
crate://crates.io/string_cache/0.6.2 \
crate://crates.io/string_cache_codegen/0.4.0 \
crate://crates.io/string_cache_shared/0.3.0 \
crate://crates.io/strsim/0.6.0 \
crate://crates.io/syn/0.11.11 \
crate://crates.io/synom/0.11.3 \
crate://crates.io/synstructure/0.6.1 \
crate://crates.io/syntex_errors/0.52.0 \
crate://crates.io/syntex_pos/0.52.0 \
crate://crates.io/syntex_syntax/0.52.0 \
crate://crates.io/tar/0.4.14 \
crate://crates.io/tempdir/0.3.5 \
crate://crates.io/tendril/0.4.0 \
crate://crates.io/term/0.4.6 \
crate://crates.io/termcolor/0.3.3 \
crate://crates.io/termion/1.5.1 \
crate://crates.io/textwrap/0.9.0 \
crate://crates.io/thread-id/2.0.0 \
crate://crates.io/thread_local/0.2.7 \
crate://crates.io/thread_local/0.3.5 \
crate://crates.io/time/0.1.39 \
crate://crates.io/toml/0.2.1 \
crate://crates.io/toml/0.4.5 \
crate://crates.io/unicode-bidi/0.3.4 \
crate://crates.io/unicode-normalization/0.1.5 \
crate://crates.io/unicode-segmentation/1.2.0 \
crate://crates.io/unicode-width/0.1.4 \
crate://crates.io/unicode-xid/0.0.3 \
crate://crates.io/unicode-xid/0.0.4 \
crate://crates.io/unreachable/0.1.1 \
crate://crates.io/unreachable/1.0.0 \
crate://crates.io/url/1.6.0 \
crate://crates.io/url_serde/0.2.0 \
crate://crates.io/userenv-sys/0.2.0 \
crate://crates.io/utf-8/0.7.1 \
crate://crates.io/utf8-ranges/0.1.3 \
crate://crates.io/utf8-ranges/1.0.0 \
crate://crates.io/vcpkg/0.2.2 \
crate://crates.io/vec_map/0.8.0 \
crate://crates.io/void/1.0.2 \
crate://crates.io/walkdir/1.0.7 \
crate://crates.io/winapi-build/0.1.1 \
crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
crate://crates.io/winapi/0.2.8 \
crate://crates.io/winapi/0.3.4 \
crate://crates.io/wincolor/0.1.4 \
crate://crates.io/ws2_32-sys/0.2.1 \
crate://crates.io/xattr/0.1.11 \
crate://crates.io/xz2/0.1.3 \
crate://crates.io/yaml-rust/0.3.5 \
"

View File

@@ -1,11 +0,0 @@
require rust-source-${PV}.inc
require libstd-rs.inc
# Check if libc crate is >= 0.2.117 before dropping this patch
SRC_URI += " \
file://0001-Add-400-series-syscalls-to-musl-riscv64-definitions.patch;patchdir=../../ \
file://0001-Update-checksums-for-modified-vendored-libc.patch;patchdir=../../ \
"
# libstd moved from src/libstd to library/std in 1.47+
S = "${RUSTSRC}/library/std"

View File

@@ -1,5 +0,0 @@
require rust-source-${PV}.inc
require libstd-rs.inc
# libstd moved from src/libstd to library/std in 1.47+
S = "${RUSTSRC}/library/std"

View File

@@ -1,369 +0,0 @@
# Right now this is focused on arm-specific tune features.
# We get away with this for now as one can only use x86-64 as the build host
# (not arm).
# Note that TUNE_FEATURES is _always_ refering to the target, so we really
# don't want to use this for the host/build.
def llvm_features_from_tune(d):
f = []
feat = d.getVar('TUNE_FEATURES')
if not feat:
return []
feat = frozenset(feat.split())
mach_overrides = d.getVar('MACHINEOVERRIDES')
mach_overrides = frozenset(mach_overrides.split(':'))
if 'vfpv4' in feat:
f.append("+vfp4")
if 'vfpv3' in feat:
f.append("+vfp3")
if 'vfpv3d16' in feat:
f.append("+d16")
if 'vfpv2' in feat or 'vfp' in feat:
f.append("+vfp2")
if 'neon' in feat:
f.append("+neon")
if 'mips32' in feat:
f.append("+mips32")
if 'mips32r2' in feat:
f.append("+mips32r2")
if target_is_armv7(d):
f.append('+v7')
if ('armv6' in mach_overrides) or ('armv6' in feat):
f.append("+v6")
if 'armv5te' in feat:
f.append("+strict-align")
f.append("+v5te")
elif 'armv5' in feat:
f.append("+strict-align")
f.append("+v5")
if ('armv4' in mach_overrides) or ('armv4' in feat):
f.append("+strict-align")
if 'dsp' in feat:
f.append("+dsp")
if 'thumb' in feat:
if d.getVar('ARM_THUMB_OPT') == "thumb":
if target_is_armv7(d):
f.append('+thumb2')
f.append("+thumb-mode")
if 'cortexa5' in feat:
f.append("+a5")
if 'cortexa7' in feat:
f.append("+a7")
if 'cortexa9' in feat:
f.append("+a9")
if 'cortexa15' in feat:
f.append("+a15")
if 'cortexa17' in feat:
f.append("+a17")
if ('riscv64' in feat) or ('riscv32' in feat):
f.append("+a,+c,+d,+f,+m")
return f
llvm_features_from_tune[vardepvalue] = "${@llvm_features_from_tune(d)}"
# TARGET_CC_ARCH changes from build/cross/target so it'll do the right thing
# this should go away when https://github.com/rust-lang/rust/pull/31709 is
# stable (1.9.0?)
def llvm_features_from_cc_arch(d):
f = []
feat = d.getVar('TARGET_CC_ARCH')
if not feat:
return []
feat = frozenset(feat.split())
if '-mmmx' in feat:
f.append("+mmx")
if '-msse' in feat:
f.append("+sse")
if '-msse2' in feat:
f.append("+sse2")
if '-msse3' in feat:
f.append("+sse3")
if '-mssse3' in feat:
f.append("+ssse3")
if '-msse4.1' in feat:
f.append("+sse4.1")
if '-msse4.2' in feat:
f.append("+sse4.2")
if '-msse4a' in feat:
f.append("+sse4a")
if '-mavx' in feat:
f.append("+avx")
if '-mavx2' in feat:
f.append("+avx2")
return f
def llvm_features_from_target_fpu(d):
# TARGET_FPU can be hard or soft. +soft-float tell llvm to use soft float
# ABI. There is no option for hard.
fpu = d.getVar('TARGET_FPU', True)
return ["+soft-float"] if fpu == "soft" else []
def llvm_features(d):
return ','.join(llvm_features_from_tune(d) +
llvm_features_from_cc_arch(d) +
llvm_features_from_target_fpu(d))
## arm-unknown-linux-gnueabihf
DATA_LAYOUT[arm-eabi] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
LLVM_TARGET[arm-eabi] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[arm-eabi] = "little"
TARGET_POINTER_WIDTH[arm-eabi] = "32"
TARGET_C_INT_WIDTH[arm-eabi] = "32"
MAX_ATOMIC_WIDTH[arm-eabi] = "64"
FEATURES[arm-eabi] = "+v6,+vfp2"
## armv7-unknown-linux-gnueabihf
DATA_LAYOUT[armv7-eabi] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
LLVM_TARGET[armv7-eabi] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[armv7-eabi] = "little"
TARGET_POINTER_WIDTH[armv7-eabi] = "32"
TARGET_C_INT_WIDTH[armv7-eabi] = "32"
MAX_ATOMIC_WIDTH[armv7-eabi] = "64"
FEATURES[armv7-eabi] = "+v7,+vfp2,+thumb2"
## aarch64-unknown-linux-{gnu, musl}
DATA_LAYOUT[aarch64] = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
LLVM_TARGET[aarch64] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[aarch64] = "little"
TARGET_POINTER_WIDTH[aarch64] = "64"
TARGET_C_INT_WIDTH[aarch64] = "32"
MAX_ATOMIC_WIDTH[aarch64] = "128"
## x86_64-unknown-linux-{gnu, musl}
DATA_LAYOUT[x86_64] = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
LLVM_TARGET[x86_64] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[x86_64] = "little"
TARGET_POINTER_WIDTH[x86_64] = "64"
TARGET_C_INT_WIDTH[x86_64] = "32"
MAX_ATOMIC_WIDTH[x86_64] = "64"
## x86_64-unknown-linux-gnux32
DATA_LAYOUT[x86_64-x32] = "e-m:e-p:32:32-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
LLVM_TARGET[x86_64-x32] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[x86_64-x32] = "little"
TARGET_POINTER_WIDTH[x86_64-x32] = "32"
TARGET_C_INT_WIDTH[x86_64-x32] = "32"
MAX_ATOMIC_WIDTH[x86_64-x32] = "64"
## i686-unknown-linux-{gnu, musl}
DATA_LAYOUT[i686] = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
LLVM_TARGET[i686] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[i686] = "little"
TARGET_POINTER_WIDTH[i686] = "32"
TARGET_C_INT_WIDTH[i686] = "32"
MAX_ATOMIC_WIDTH[i686] = "64"
## XXX: a bit of a hack so qemux86 builds, clone of i686-unknown-linux-{gnu, musl} above
DATA_LAYOUT[i586] = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
LLVM_TARGET[i586] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[i586] = "little"
TARGET_POINTER_WIDTH[i586] = "32"
TARGET_C_INT_WIDTH[i586] = "32"
MAX_ATOMIC_WIDTH[i586] = "64"
## mips-unknown-linux-{gnu, musl}
DATA_LAYOUT[mips] = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
LLVM_TARGET[mips] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[mips] = "big"
TARGET_POINTER_WIDTH[mips] = "32"
TARGET_C_INT_WIDTH[mips] = "32"
MAX_ATOMIC_WIDTH[mips] = "32"
## mipsel-unknown-linux-{gnu, musl}
DATA_LAYOUT[mipsel] = "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
LLVM_TARGET[mipsel] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[mipsel] = "little"
TARGET_POINTER_WIDTH[mipsel] = "32"
TARGET_C_INT_WIDTH[mipsel] = "32"
MAX_ATOMIC_WIDTH[mipsel] = "32"
## mips64-unknown-linux-{gnu, musl}
DATA_LAYOUT[mips64] = "E-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128"
LLVM_TARGET[mips64] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[mips64] = "big"
TARGET_POINTER_WIDTH[mips64] = "64"
TARGET_C_INT_WIDTH[mips64] = "64"
MAX_ATOMIC_WIDTH[mips64] = "64"
## mips64el-unknown-linux-{gnu, musl}
DATA_LAYOUT[mips64el] = "e-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128"
LLVM_TARGET[mips64el] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[mips64el] = "little"
TARGET_POINTER_WIDTH[mips64el] = "64"
TARGET_C_INT_WIDTH[mips64el] = "64"
MAX_ATOMIC_WIDTH[mips64el] = "64"
## powerpc-unknown-linux-{gnu, musl}
DATA_LAYOUT[powerpc] = "E-m:e-p:32:32-i64:64-n32"
LLVM_TARGET[powerpc] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[powerpc] = "big"
TARGET_POINTER_WIDTH[powerpc] = "32"
TARGET_C_INT_WIDTH[powerpc] = "32"
MAX_ATOMIC_WIDTH[powerpc] = "32"
## powerpc64-unknown-linux-{gnu, musl}
DATA_LAYOUT[powerpc64] = "E-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512"
LLVM_TARGET[powerpc64] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[powerpc64] = "big"
TARGET_POINTER_WIDTH[powerpc64] = "64"
TARGET_C_INT_WIDTH[powerpc64] = "64"
MAX_ATOMIC_WIDTH[powerpc64] = "64"
## powerpc64le-unknown-linux-{gnu, musl}
DATA_LAYOUT[powerpc64le] = "e-m:e-i64:64-n32:64-v256:256:256-v512:512:512"
LLVM_TARGET[powerpc64le] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[powerpc64le] = "little"
TARGET_POINTER_WIDTH[powerpc64le] = "64"
TARGET_C_INT_WIDTH[powerpc64le] = "64"
MAX_ATOMIC_WIDTH[powerpc64le] = "64"
## riscv32-unknown-linux-{gnu, musl}
DATA_LAYOUT[riscv32] = "e-m:e-p:32:32-i64:64-n32-S128"
LLVM_TARGET[riscv32] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[riscv32] = "little"
TARGET_POINTER_WIDTH[riscv32] = "32"
TARGET_C_INT_WIDTH[riscv32] = "32"
MAX_ATOMIC_WIDTH[riscv32] = "32"
## riscv64-unknown-linux-{gnu, musl}
DATA_LAYOUT[riscv64] = "e-m:e-p:64:64-i64:64-i128:128-n64-S128"
LLVM_TARGET[riscv64] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[riscv64] = "little"
TARGET_POINTER_WIDTH[riscv64] = "64"
TARGET_C_INT_WIDTH[riscv64] = "64"
MAX_ATOMIC_WIDTH[riscv64] = "64"
def sys_for(d, thing):
return d.getVar('{}_SYS'.format(thing))
def prefix_for(d, thing):
return d.getVar('{}_PREFIX'.format(thing))
# Convert a normal arch (HOST_ARCH, TARGET_ARCH, BUILD_ARCH, etc) to something
# rust's internals won't choke on.
def arch_to_rust_target_arch(arch):
if arch == "i586" or arch == "i686":
return "x86"
elif arch == "mipsel":
return "mips"
elif arch == "mip64sel":
return "mips64"
elif arch == "armv7":
return "arm"
elif arch == "powerpc64le":
return "powerpc64"
else:
return arch
# generates our target CPU value
def llvm_cpu(d):
cpu = d.getVar('PACKAGE_ARCH')
target = d.getVar('TRANSLATED_TARGET_ARCH')
trans = {}
trans['corei7-64'] = "corei7"
trans['core2-32'] = "core2"
trans['x86-64'] = "x86-64"
trans['i686'] = "i686"
trans['i586'] = "i586"
trans['powerpc'] = "powerpc"
trans['mips64'] = "mips64"
trans['mips64el'] = "mips64"
trans['riscv64'] = "generic-rv64"
trans['riscv32'] = "generic-rv32"
if target in ["mips", "mipsel"]:
feat = frozenset(d.getVar('TUNE_FEATURES').split())
if "mips32r2" in feat:
trans['mipsel'] = "mips32r2"
trans['mips'] = "mips32r2"
elif "mips32" in feat:
trans['mipsel'] = "mips32"
trans['mips'] = "mips32"
try:
return trans[cpu]
except:
return trans.get(target, "generic")
TARGET_LLVM_CPU="${@llvm_cpu(d)}"
TARGET_LLVM_FEATURES = "${@llvm_features(d)}"
# class-native implies TARGET=HOST, and TUNE_FEATURES only describes the real
# (original) target.
TARGET_LLVM_FEATURES:class-native = "${@','.join(llvm_features_from_cc_arch(d))}"
def rust_gen_target(d, thing, wd, features, cpu, arch, abi=""):
import json
sys = sys_for(d, thing)
prefix = prefix_for(d, thing)
if abi:
arch_abi = "{}-{}".format(arch, abi)
else:
arch_abi = arch
features = features or d.getVarFlag('FEATURES', arch_abi) or ""
features = features.strip()
# build tspec
tspec = {}
tspec['llvm-target'] = d.getVarFlag('LLVM_TARGET', arch_abi)
tspec['data-layout'] = d.getVarFlag('DATA_LAYOUT', arch_abi)
tspec['max-atomic-width'] = int(d.getVarFlag('MAX_ATOMIC_WIDTH', arch_abi))
tspec['target-pointer-width'] = d.getVarFlag('TARGET_POINTER_WIDTH', arch_abi)
tspec['target-c-int-width'] = d.getVarFlag('TARGET_C_INT_WIDTH', arch_abi)
tspec['target-endian'] = d.getVarFlag('TARGET_ENDIAN', arch_abi)
tspec['arch'] = arch_to_rust_target_arch(arch)
tspec['os'] = "linux"
if "musl" in tspec['llvm-target']:
tspec['env'] = "musl"
else:
tspec['env'] = "gnu"
if "riscv64" in tspec['llvm-target']:
tspec['llvm-abiname'] = "lp64d"
if "riscv32" in tspec['llvm-target']:
tspec['llvm-abiname'] = "ilp32d"
tspec['vendor'] = "unknown"
tspec['target-family'] = "unix"
tspec['linker'] = "{}{}gcc".format(d.getVar('CCACHE'), prefix)
tspec['cpu'] = cpu
if features != "":
tspec['features'] = features
tspec['dynamic-linking'] = True
tspec['executables'] = True
tspec['linker-is-gnu'] = True
tspec['linker-flavor'] = "gcc"
tspec['has-rpath'] = True
tspec['has-elf-tls'] = True
tspec['position-independent-executables'] = True
tspec['panic-strategy'] = d.getVar("RUST_PANIC_STRATEGY")
# write out the target spec json file
with open(wd + sys + '.json', 'w') as f:
json.dump(tspec, f, indent=4)
python do_rust_gen_targets () {
wd = d.getVar('WORKDIR') + '/targets/'
build_arch = d.getVar('BUILD_ARCH')
rust_gen_target(d, 'BUILD', wd, "", "generic", build_arch)
}
addtask rust_gen_targets after do_patch before do_compile
do_rust_gen_targets[dirs] += "${WORKDIR}/targets"

View File

@@ -1,55 +0,0 @@
RUST_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config"
require rust.inc
DEPENDS += "rust-llvm (=${PV})"
inherit cross-canadian
DEPENDS += " \
virtual/${HOST_PREFIX}gcc-crosssdk \
virtual/nativesdk-libc rust-llvm-native \
virtual/${TARGET_PREFIX}compilerlibs \
virtual/nativesdk-${HOST_PREFIX}compilerlibs \
gcc-cross-${TARGET_ARCH} \
"
# The host tools are likely not to be able to do the necessary operation on
# the target architecturea. Alternatively one could check compatibility
# between host/target.
EXCLUDE_FROM_SHLIBS_${RUSTLIB_TARGET_PN} = "1"
DEBUG_PREFIX_MAP = "-fdebug-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
-fdebug-prefix-map=${STAGING_DIR_HOST}= \
-fdebug-prefix-map=${STAGING_DIR_NATIVE}= \
"
LLVM_TARGET[x86_64] = "${RUST_HOST_SYS}"
python do_rust_gen_targets () {
wd = d.getVar('WORKDIR') + '/targets/'
rust_gen_target(d, 'TARGET', wd, d.getVar('TARGET_LLVM_FEATURES') or "", d.getVar('TARGET_LLVM_CPU'), d.getVar('TARGET_ARCH'))
rust_gen_target(d, 'HOST', wd, "", "generic", d.getVar('HOST_ARCH'))
rust_gen_target(d, 'BUILD', wd, "", "generic", d.getVar('BUILD_ARCH'))
}
INHIBIT_DEFAULT_RUST_DEPS = "1"
export WRAPPER_TARGET_CC = "${CCACHE}${TARGET_PREFIX}gcc --sysroot=${STAGING_DIR_TARGET} ${TARGET_CC_ARCH} ${SECURITY_NOPIE_CFLAGS}"
export WRAPPER_TARGET_CXX = "${CCACHE}${TARGET_PREFIX}g++ --sysroot=${STAGING_DIR_TARGET} ${TARGET_CC_ARCH} ${SECURITY_NOPIE_CFLAGS}"
export WRAPPER_TARGET_CCLD = "${TARGET_PREFIX}gcc --sysroot=${STAGING_DIR_TARGET} ${TARGET_CC_ARCH} ${SECURITY_NOPIE_CFLAGS}"
export WRAPPER_TARGET_LDFLAGS = "${TARGET_LDFLAGS}"
export WRAPPER_TARGET_AR = "${TARGET_PREFIX}ar"
python do_configure:prepend() {
targets = [d.getVar("TARGET_SYS", True), "{}-unknown-linux-gnu".format(d.getVar("HOST_ARCH", True))]
hosts = ["{}-unknown-linux-gnu".format(d.getVar("HOST_ARCH", True))]
}
INSANE_SKIP:${RUSTLIB_TARGET_PN} = "file-rdeps arch ldflags"
SKIP_FILEDEPS:${RUSTLIB_TARGET_PN} = "1"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
INHIBIT_PACKAGE_STRIP = "1"
INHIBIT_SYSROOT_STRIP = "1"

View File

@@ -1,78 +0,0 @@
require rust-cross-canadian-common.inc
RUSTLIB_TARGET_PN = "rust-cross-canadian-rustlib-target-${TRANSLATED_TARGET_ARCH}"
RUSTLIB_HOST_PN = "rust-cross-canadian-rustlib-host-${TRANSLATED_TARGET_ARCH}"
RUSTLIB_SRC_PN = "rust-cross-canadian-src"
RUSTLIB_PKGS = "${RUSTLIB_SRC_PN} ${RUSTLIB_TARGET_PN} ${RUSTLIB_HOST_PN}"
PN = "rust-cross-canadian-${TRANSLATED_TARGET_ARCH}"
PACKAGES = "${RUSTLIB_PKGS} ${PN}"
RDEPENDS:${PN} += "${RUSTLIB_PKGS}"
# The default behaviour of x.py changed in 1.47+ so now we need to
# explicitly ask for the stage 2 compiler to be assembled.
do_compile () {
rust_runx build --stage 2
}
do_install () {
# Rust requires /usr/lib to contain the libs.
# Similar story is with /usr/bin ruquiring `lib` to be at the same level.
# The required structure is retained for simplicity.
SYS_LIBDIR=$(dirname ${D}${libdir})
SYS_BINDIR=$(dirname ${D}${bindir})
RUSTLIB_DIR=${SYS_LIBDIR}/${TARGET_SYS}/rustlib
install -d "${SYS_BINDIR}"
cp build/${SNAPSHOT_BUILD_SYS}/stage2/bin/* ${SYS_BINDIR}
for i in ${SYS_BINDIR}/*; do
chrpath -r "\$ORIGIN/../lib" ${i}
done
install -d "${D}${libdir}"
cp -pRd build/${SNAPSHOT_BUILD_SYS}/stage2/lib/${TARGET_SYS}/*.so ${SYS_LIBDIR}
cp -pRd build/${SNAPSHOT_BUILD_SYS}/stage2/lib/${TARGET_SYS}/rustlib ${RUSTLIB_DIR}
for i in ${SYS_LIBDIR}/*.so; do
chrpath -r "\$ORIGIN/../lib" ${i}
done
for i in ${RUSTLIB_DIR}/*/lib/*.so; do
chrpath -d ${i}
done
install -m 0644 "${WORKDIR}/targets/${TARGET_SYS}.json" "${RUSTLIB_DIR}"
SRC_DIR=${RUSTLIB_DIR}/src/rust
install -d ${SRC_DIR}/src/llvm-project
cp -R --no-dereference build/${SNAPSHOT_BUILD_SYS}/stage2/lib/rustlib/src/rust/src/llvm-project/libunwind ${SRC_DIR}/src/llvm-project
cp -R --no-dereference build/${SNAPSHOT_BUILD_SYS}/stage2/lib/rustlib/src/rust/library ${SRC_DIR}
cp --no-dereference build/${SNAPSHOT_BUILD_SYS}/stage2/lib/rustlib/src/rust/Cargo.lock ${SRC_DIR}
# Remove executable bit from any files so then SDK doesn't try to relocate.
chmod -R -x+X ${SRC_DIR}
ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
mkdir "${ENV_SETUP_DIR}"
ENV_SETUP_SH="${ENV_SETUP_DIR}/rust.sh"
cat <<- EOF > "${ENV_SETUP_SH}"
export RUSTFLAGS="--sysroot=\$OECORE_NATIVE_SYSROOT/usr -C link-arg=--sysroot=\$OECORE_TARGET_SYSROOT -L\$OECORE_NATIVE_SYSROOT/usr/lib/${TARGET_SYS}/rustlib/${TARGET_SYS}/lib"
export RUST_TARGET_PATH="\$OECORE_NATIVE_SYSROOT/usr/lib/${TARGET_SYS}/rustlib"
EOF
chown -R root.root ${D}
}
PKG_SYS_LIBDIR = "${SDKPATHNATIVE}/usr/lib"
PKG_SYS_BINDIR = "${SDKPATHNATIVE}/usr/bin"
PKG_RUSTLIB_DIR = "${PKG_SYS_LIBDIR}/${TARGET_SYS}/rustlib"
FILES:${PN} = "${PKG_SYS_LIBDIR}/*.so ${PKG_SYS_BINDIR} ${base_prefix}/environment-setup.d"
FILES:${RUSTLIB_TARGET_PN} = "${PKG_RUSTLIB_DIR}/${TARGET_SYS} ${PKG_RUSTLIB_DIR}/${TARGET_SYS}.json"
FILES:${RUSTLIB_HOST_PN} = "${PKG_RUSTLIB_DIR}/${BUILD_ARCH}-unknown-linux-gnu"
FILES:${RUSTLIB_SRC_PN} = "${PKG_RUSTLIB_DIR}/src"
SUMMARY:${RUSTLIB_TARGET_PN} = "Rust cross canadian libaries for ${TARGET_SYS}"
SUMMARY:${RUSTLIB_HOST_PN} = "Rust cross canadian libaries for ${HOST_SYS}"
SUMMARY:${RUSTLIB_SRC_PN} = "Rust standard library sources for cross canadian toolchain"
SUMMARY:${PN} = "Rust crost canadian compiler"

View File

@@ -1,6 +0,0 @@
require rust-cross-canadian.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc
FILESEXTRAPATHS:prepend := "${THISDIR}/rust:"

View File

@@ -1,6 +0,0 @@
require rust-cross-canadian.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc
FILESEXTRAPATHS:prepend := "${THISDIR}/rust:"

View File

@@ -1,27 +1,6 @@
require rust.inc
inherit cross
python do_rust_gen_targets () {
wd = d.getVar('WORKDIR') + '/targets/'
# It is important 'TARGET' is last here so that it overrides our less
# informed choices for BUILD & HOST if TARGET happens to be the same as
# either of them.
for thing in ['BUILD', 'HOST', 'TARGET']:
bb.debug(1, "rust_gen_target for " + thing)
features = ""
cpu = "generic"
arch = d.getVar('{}_ARCH'.format(thing))
abi = ""
if thing is "TARGET":
abi = d.getVar('ABIEXTENSION')
# arm and armv7 have different targets in llvm
if arch == "arm" and target_is_armv7(d):
arch = 'armv7'
features = d.getVar('TARGET_LLVM_FEATURES') or ""
cpu = d.getVar('TARGET_LLVM_CPU')
rust_gen_target(d, thing, wd, features, cpu, arch, abi)
}
# Otherwise we'll depend on what we provide
INHIBIT_DEFAULT_RUST_DEPS = "1"
@@ -34,7 +13,7 @@ DEPENDS += "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}compilerlibs vir
DEPENDS += "rust-native"
PROVIDES = "virtual/${TARGET_PREFIX}rust"
PN = "rust-cross-${TUNE_PKGARCH}-${TCLIBC}"
PN = "rust-cross-${TARGET_ARCH}"
# In the cross compilation case, rustc doesn't seem to get the rpath quite
# right. It manages to include '../../lib/${TARGET_PREFIX}', but doesn't
@@ -47,14 +26,11 @@ PN = "rust-cross-${TUNE_PKGARCH}-${TCLIBC}"
# FIXME: this should really be fixed in rust itself.
# FIXME: using hard-coded relative paths is wrong, we should ask bitbake for
# the relative path between 2 of it's vars.
HOST_POST_LINK_ARGS:append = " -Wl,-rpath=../../lib"
BUILD_POST_LINK_ARGS:append = " -Wl,-rpath=../../lib"
HOST_POST_LINK_ARGS_append = " -Wl,-rpath=../../lib"
BUILD_POST_LINK_ARGS_append = " -Wl,-rpath=../../lib"
# We need the same thing for the calls to the compiler when building the runtime crap
TARGET_CC_ARCH:append = " --sysroot=${STAGING_DIR_TARGET}"
do_rust_setup_snapshot () {
}
TARGET_CC_ARCH_append = " --sysroot=${STAGING_DIR_TARGET}"
do_configure () {
}

View File

@@ -1,2 +1,3 @@
require rust-cross.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc

View File

@@ -1,2 +1,3 @@
require rust-cross.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc

View File

@@ -0,0 +1,4 @@
require rust-cross.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc

View File

@@ -1,72 +1,65 @@
SUMMARY = "LLVM compiler framework (packaged with rust)"
LICENSE ?= "Apache-2.0-with-LLVM-exception"
HOMEPAGE = "http://www.rust-lang.org"
LICENSE = "NCSA"
SRC_URI += "file://0002-llvm-allow-env-override-of-exe-path.patch;striplevel=2 \
file://0001-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch;striplevel=2 \
file://0003-llvm-fix-include-benchmarks.patch;striplevel=2 \
"
S = "${RUSTSRC}/src/llvm"
S = "${RUSTSRC}/src/llvm-project/llvm"
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=4c0bc17c954e99fd547528d938832bfa"
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=8a15a0759ef07f2682d2ba4b893c9afe"
inherit cmake python3native
DEPENDS += "ninja-native rust-llvm-native"
ARM_INSTRUCTION_SET:armv5 = "arm"
ARM_INSTRUCTION_SET:armv4t = "arm"
# rustc_llvm with debug info is not recognized as a valid crate that's
# generated by rust-llvm-native.
CFLAGS:remove = "-g"
CXXFLAGS:remove = "-g"
LLVM_DIR = "llvm${LLVM_RELEASE}"
inherit cmake pythonnative
EXTRA_OECMAKE = " \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_TARGETS_TO_BUILD='ARM;AArch64;Mips;PowerPC;RISCV;X86' \
-DLLVM_TARGETS_TO_BUILD='X86;ARM;AArch64;PowerPC;Mips' \
-DLLVM_ENABLE_ASSERTIONS=OFF \
-DLLVM_BUILD_DOCS=OFF \
-DLLVM_ENABLE_TERMINFO=OFF \
-DLLVM_ENABLE_ZLIB=OFF \
-DLLVM_ENABLE_LIBXML2=OFF \
-DLLVM_ENABLE_FFI=OFF \
-DLLVM_INSTALL_UTILS=ON \
-DLLVM_BUILD_TOOLS=ON \
-DLLVM_BUILD_EXAMPLES=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_BUILD_TESTS=OFF \
-DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_TARGET_ARCH=${TARGET_ARCH} \
-DCMAKE_INSTALL_PREFIX:PATH=${libdir}/llvm-rust \
"
EXTRA_OECMAKE:append:class-target = "\
-DCMAKE_CROSSCOMPILING:BOOL=ON \
-DLLVM_BUILD_TOOLS=OFF \
-DLLVM_TABLEGEN=${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-tblgen \
-DLLVM_CONFIG_PATH=${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config \
"
# The debug symbols are huge here (>2GB) so suppress them since they
# provide almost no value. If you really need them then override this
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
export YOCTO_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR}/llvm-rust/bin/llvm-config"
do_compile_prepend_class-target() {
# Fix paths in llvm-config
sed -i "s|sys::path::parent_path(CurrentPath))\.str()|sys::path::parent_path(sys::path::parent_path(CurrentPath))).str()|g" ${S}/tools/llvm-config/llvm-config.cpp
do_install:append () {
# we don't need any of this stuff to build Rust
rm -rf "${D}/usr/lib/cmake"
# Fix the hardcoded libdir in llvm-config
sed -i 's:/lib\>:/${baselib}:g' ${S}/tools/llvm-config/llvm-config.cpp
}
do_install_append_class-target() {
# Disable checks on the native tools, since these should came from the native recipe
sed -i -e 's/\(.*APPEND.*_IMPORT_CHECK_FILES_FOR_.*{_IMPORT_PREFIX}\/bin\/.*\)/#\1/' ${D}/usr/share/llvm/cmake/LLVMExports-noconfig.cmake
}
SYSROOT_PREPROCESS_FUNCS_append_class-target = " llvm_sysroot_preprocess"
SYSROOT_PREPROCESS_FUNCS_append_class-native = " llvm_native_sysroot_preprocess"
llvm_sysroot_preprocess() {
install -d ${SYSROOT_DESTDIR}${bindir}
cp ${B}/NATIVE/bin/llvm-config ${SYSROOT_DESTDIR}/${bindir} || bbfatal "missing llvm-config"
cp ${B}/NATIVE/bin/llvm-tblgen ${SYSROOT_DESTDIR}/${bindir} || bbfatal "missing llvm-tblgen"
}
llvm_native_sysroot_preprocess() {
sysroot_stage_dir ${D}${STAGING_DIR_NATIVE}/usr/libexec ${SYSROOT_DESTDIR}${bindir}
}
PACKAGES =+ "${PN}-bugpointpasses ${PN}-llvmhello ${PN}-liblto"
# Add the extra locations to avoid the complaints about unpackaged files
FILES:${PN}-bugpointpasses = "${libdir}/llvm-rust/lib/BugpointPasses.so"
FILES:${PN}-llvmhello = "${libdir}/llvm-rust/lib/LLVMHello.so"
FILES:${PN}-liblto = "${libdir}/llvm-rust/lib/libLTO.so.*"
FILES:${PN}-staticdev =+ "${libdir}/llvm-rust/*/*.a"
FILES:${PN} += "${libdir}/libLLVM*.so.* ${libdir}/llvm-rust/lib/*.so.* ${libdir}/llvm-rust/bin"
FILES:${PN}-dev += "${datadir}/llvm ${libdir}/llvm-rust/lib/*.so ${libdir}/llvm-rust/include ${libdir}/llvm-rust/share ${libdir}/llvm-rust/lib/cmake"
FILES_${PN} += "${libdir}/libLLVM*.so"
FILES_${PN}-dev += "${datadir}/llvm"
FILES_${PN}-bugpointpasses = "${libdir}/BugpointPasses.so"
FILES_${PN}-llvmhello = "${libdir}/LLVMHello.so"
FILES_${PN}-liblto = "${libdir}/libLTO.so"
BBCLASSEXTEND = "native"

View File

@@ -1,31 +0,0 @@
From 86940d87026432683fb6741cd8a34d3b9b18e40d Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Fri, 27 Nov 2020 10:11:08 +0000
Subject: [PATCH] AsmMatcherEmitter: sort ClassInfo lists by name as well
Otherwise, there are instances which are identical in
every other field and therefore sort non-reproducibly
(which breaks binary and source reproducibiliy).
Upstream-Status: Submitted [https://reviews.llvm.org/D97477]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
llvm/utils/TableGen/AsmMatcherEmitter.cpp | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/llvm/utils/TableGen/AsmMatcherEmitter.cpp b/llvm/utils/TableGen/AsmMatcherEmitter.cpp
index ccf0959389b..1f801e83b7d 100644
--- a/llvm/utils/TableGen/AsmMatcherEmitter.cpp
+++ b/llvm/utils/TableGen/AsmMatcherEmitter.cpp
@@ -359,7 +359,10 @@ public:
// name of a class shouldn't be significant. However, some of the backends
// accidentally rely on this behaviour, so it will have to stay like this
// until they are fixed.
- return ValueName < RHS.ValueName;
+ if (ValueName != RHS.ValueName)
+ return ValueName < RHS.ValueName;
+ // All else being equal, we should sort by name, for source and binary reproducibility
+ return Name < RHS.Name;
}
};

View File

@@ -1,33 +0,0 @@
From 7111770e8290082530d920e120995bf81431b0aa Mon Sep 17 00:00:00 2001
From: Martin Kelly <mkelly@xevo.com>
Date: Fri, 19 May 2017 00:22:57 -0700
Subject: [PATCH 12/18] llvm: allow env override of exe path
When using a native llvm-config from inside a sysroot, we need llvm-config to
return the libraries, include directories, etc. from inside the sysroot rather
than from the native sysroot. Thus provide an env override for calling
llvm-config from a target sysroot.
Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Martin Kelly <mkelly@xevo.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
llvm/tools/llvm-config/llvm-config.cpp | 7 +++++++
1 file changed, 7 insertions(+)
--- a/llvm/tools/llvm-config/llvm-config.cpp
+++ b/llvm/tools/llvm-config/llvm-config.cpp
@@ -226,6 +226,13 @@ Typical components:\n\
/// Compute the path to the main executable.
std::string GetExecutablePath(const char *Argv0) {
+ // Hack for Yocto: we need to override the root path when we are using
+ // llvm-config from within a target sysroot.
+ const char *Sysroot = std::getenv("YOCTO_ALTERNATE_EXE_PATH");
+ if (Sysroot != nullptr) {
+ return Sysroot;
+ }
+
// This just needs to be some symbol in the binary; C++ doesn't
// allow taking the address of ::main however.
void *P = (void *)(intptr_t)GetExecutablePath;

View File

@@ -1,25 +0,0 @@
Subject: LLVM_INCLUDE_BENCHMARKS with llvm 14.0.1 failing to build
https://github.com/llvm/llvm-project/issues/54941
The LLVM_INCLUDE_BENCHMARKS is turned OFF to fix the build error as
per the discussions in the above link. We will work on the issue and
replace the workaround with actual fix once committed in LLVM.
Please refer the following link for more discussions on the issue:-
https://github.com/rust-lang/rust/issues/96054
Upstream-Status: Pending
Signed-off-by: Pgowda <pgowda.cve@gmail.com>
--- a/llvm/CMakeLists.txt 2022-04-22 00:45:30.543445478 -0700
+++ b/llvm/CMakeLists.txt 2022-04-22 00:45:42.095232974 -0700
@@ -615,7 +615,7 @@ option(LLVM_INCLUDE_GO_TESTS "Include th
option(LLVM_BUILD_BENCHMARKS "Add LLVM benchmark targets to the list of default
targets. If OFF, benchmarks still could be built using Benchmarks target." OFF)
-option(LLVM_INCLUDE_BENCHMARKS "Generate benchmark targets. If OFF, benchmarks can't be built." ON)
+option(LLVM_INCLUDE_BENCHMARKS "Generate benchmark targets. If OFF, benchmarks can't be built." OFF)
option (LLVM_BUILD_DOCS "Build the llvm documentation." OFF)
option (LLVM_INCLUDE_DOCS "Generate build targets for llvm documentation." ON)

View File

@@ -0,0 +1,16 @@
require rust-source-${PV}.inc
require rust-llvm.inc
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=e825e017edc35cfd58e26116e5251771"
do_install_prepend () {
# the install does a sed on this without installing the file
# we don't need it for anything
mkdir -p "${D}/usr/share/llvm/cmake"
touch "${D}/usr/share/llvm/cmake/LLVMExports-noconfig.cmake"
}
do_install_append () {
# we don't need any of this stuff to build Rust
rm -rf "${D}/usr/lib/cmake"
}

View File

@@ -0,0 +1,16 @@
require rust-source-${PV}.inc
require rust-llvm.inc
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=e825e017edc35cfd58e26116e5251771"
do_install_prepend () {
# the install does a sed on this without installing the file
# we don't need it for anything
mkdir -p "${D}/usr/share/llvm/cmake"
touch "${D}/usr/share/llvm/cmake/LLVMExports-noconfig.cmake"
}
do_install_append () {
# we don't need any of this stuff to build Rust
rm -rf "${D}/usr/lib/cmake"
}

View File

@@ -0,0 +1,16 @@
require rust-source-${PV}.inc
require rust-llvm.inc
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=e825e017edc35cfd58e26116e5251771"
do_install_prepend () {
# the install does a sed on this without installing the file
# we don't need it for anything
mkdir -p "${D}/usr/share/llvm/cmake"
touch "${D}/usr/share/llvm/cmake/LLVMExports-noconfig.cmake"
}
do_install_append () {
# we don't need any of this stuff to build Rust
rm -rf "${D}/usr/lib/cmake"
}

View File

@@ -1,5 +0,0 @@
# check src/llvm-project/llvm/CMakeLists.txt for llvm version in use
#
LLVM_RELEASE = "14.0.0"
require rust-source-${PV}.inc
require rust-llvm.inc

View File

@@ -1,5 +0,0 @@
# check src/llvm-project/llvm/CMakeLists.txt for llvm version in use
#
LLVM_RELEASE = "14.0.6"
require rust-source-${PV}.inc
require rust-llvm.inc

View File

@@ -0,0 +1,26 @@
# Specifics for Rust 1.20.0
## This is information on the rust-snapshot (binary) used to build our current release.
## snapshot info is taken from rust/src/stage0.txt
## TODO: find a way to add additional SRC_URIs based on the contents of an
## earlier SRC_URI.
RS_VERSION = "1.19.0"
RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${RUST_BUILD_SYS}"
RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${RUST_BUILD_SYS}"
CARGO_VERSION = "0.20.0"
CARGO_SNAPSHOT = "cargo-${CARGO_VERSION}-${RUST_BUILD_SYS}"
SRC_URI += " \
https://static.rust-lang.org/dist/${RUST_STD_SNAPSHOT}.tar.gz;name=rust-std-snapshot;subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${RUSTC_SNAPSHOT}.tar.gz;name=rustc-snapshot;subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.gz;name=cargo-snapshot;subdir=rust-snapshot-components \
"
# These are x86_64-unknown-linux-gnu hashes, how can we add more?
SRC_URI[rustc-snapshot.md5sum] = "e5077b80cc953a1fb9c767aa039d5984"
SRC_URI[rustc-snapshot.sha256sum] = "4c8df3088d17c8e06bf58d453d39bd521487defcefc8193203b80f0fb797d6fe"
SRC_URI[rust-std-snapshot.md5sum] = "2bff47764df01c99f349908601c10478"
SRC_URI[rust-std-snapshot.sha256sum] = "5905803e8a127f656bf253978692f0d6cf6c9206c527e4d6d7e981980618d1b6"
SRC_URI[cargo-snapshot.md5sum] = "63aa861b029eec9f559f4fb5a10c287d"
SRC_URI[cargo-snapshot.sha256sum] = "a677d13b01d00ad13edf75c7d1b484421c7fc09338bf9ed6d456b4685bb42ed1"

View File

@@ -0,0 +1,26 @@
# Specifics for Rust 1.21.0
## This is information on the rust-snapshot (binary) used to build our current release.
## snapshot info is taken from rust/src/stage0.txt
## TODO: find a way to add additional SRC_URIs based on the contents of an
## earlier SRC_URI.
RS_VERSION = "1.20.0"
RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${RUST_BUILD_SYS}"
RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${RUST_BUILD_SYS}"
CARGO_VERSION = "0.21.0"
CARGO_SNAPSHOT = "cargo-${CARGO_VERSION}-${RUST_BUILD_SYS}"
SRC_URI += " \
https://static.rust-lang.org/dist/${RUST_STD_SNAPSHOT}.tar.gz;name=rust-std-snapshot;subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${RUSTC_SNAPSHOT}.tar.gz;name=rustc-snapshot;subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.gz;name=cargo-snapshot;subdir=rust-snapshot-components \
"
# These are x86_64-unknown-linux-gnu hashes, how can we add more?
SRC_URI[rustc-snapshot.md5sum] = "c6276176ec6061b61ae73617a64bceb0"
SRC_URI[rustc-snapshot.sha256sum] = "000e776431718a32b5d40c4aa6e09b3425f0b71dea8c95e718d29b8c0f5b35d3"
SRC_URI[rust-std-snapshot.md5sum] = "8c0f7355b66830517a51a2bd6f530327"
SRC_URI[rust-std-snapshot.sha256sum] = "a1b3e13b9d6f9aa713783145cb83070b1dabbe17349043b3528031d7712ca929"
SRC_URI[cargo-snapshot.md5sum] = "0e5389d2e38a14933dda77db8172cb1f"
SRC_URI[cargo-snapshot.sha256sum] = "caccf4ab039c806a9e6fdc7fe389cc88fb771e28e30d93c07a5c56ef845cdf57"

View File

@@ -0,0 +1,26 @@
# Specifics for Rust 1.24.0
## This is information on the rust-snapshot (binary) used to build our current release.
## snapshot info is taken from rust/src/stage0.txt
## TODO: find a way to add additional SRC_URIs based on the contents of an
## earlier SRC_URI.
RS_VERSION = "1.23.0"
RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${RUST_BUILD_SYS}"
RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${RUST_BUILD_SYS}"
CARGO_VERSION = "0.24.0"
CARGO_SNAPSHOT = "cargo-${CARGO_VERSION}-${RUST_BUILD_SYS}"
SRC_URI += " \
https://static.rust-lang.org/dist/${RUST_STD_SNAPSHOT}.tar.gz;name=rust-std-snapshot;subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${RUSTC_SNAPSHOT}.tar.gz;name=rustc-snapshot;subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.gz;name=cargo-snapshot;subdir=rust-snapshot-components \
"
# These are x86_64-unknown-linux-gnu hashes, how can we add more?
SRC_URI[rustc-snapshot.md5sum] = "068fc6566772c4ce165cc547151f514c"
SRC_URI[rustc-snapshot.sha256sum] = "27b124fd0d94c082978ff81e45f7b7c37e91d64714587829bf828d64d76524ee"
SRC_URI[rust-std-snapshot.md5sum] = "f9f89caf41e3f9c092118272ceb5bf6b"
SRC_URI[rust-std-snapshot.sha256sum] = "83c7351bdc4326caf785c208cff86682825dad4a89ccee705fa05f55ce7bd25b"
SRC_URI[cargo-snapshot.md5sum] = "830041cfc8627d3f7187954993449cf9"
SRC_URI[cargo-snapshot.sha256sum] = "ff8a454104aba20426ea898ed7515ec5da7de07d11733cdda17462455beb76e8"

View File

@@ -1,25 +0,0 @@
## This is information on the rust-snapshot (binary) used to build our current release.
## snapshot info is taken from rust/src/stage0.txt
## TODO: find a way to add additional SRC_URIs based on the contents of an
## earlier SRC_URI.
RS_VERSION = "1.60.0"
CARGO_VERSION = "1.60.0"
# TODO: Add hashes for other architecture toolchains as well. Make a script?
SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "6fb8ee3650beb10836ae48a9aaa535473e64eaca20695b88113267aea3c7557f"
SRC_URI[rustc-snapshot-x86_64.sha256sum] = "fc0b41c15e348ad0eeb7a6c015a922a2ac95e9577e531635558b26d99399f315"
SRC_URI[cargo-snapshot-x86_64.sha256sum] = "48edb2eb51d7c56ef9a3130f0b331e83f139559161f6f93b9588d28cf72610f3"
SRC_URI[rust-std-snapshot-aarch64.sha256sum] = "fbc39c2ba2eee9bad7305d73d02a63ada651961be8fd9e0dae520bda5d715c6e"
SRC_URI[rustc-snapshot-aarch64.sha256sum] = "f5b24f2bc30db4b8efb7eba7db86fd5db0bc283631b4c918794e9217fca32822"
SRC_URI[cargo-snapshot-aarch64.sha256sum] = "36030f5cede7971eaed45284b5243b4103184a663ad934124de8a530e0e6d993"
SRC_URI += " \
https://static.rust-lang.org/dist/${RUST_STD_SNAPSHOT}.tar.xz;name=rust-std-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${RUSTC_SNAPSHOT}.tar.xz;name=rustc-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.xz;name=cargo-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
"
RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
CARGO_SNAPSHOT = "cargo-${CARGO_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"

View File

@@ -1,25 +0,0 @@
## This is information on the rust-snapshot (binary) used to build our current release.
## snapshot info is taken from rust/src/stage0.json
## TODO: find a way to add additional SRC_URIs based on the contents of an
## earlier SRC_URI.
RS_VERSION = "1.63.0"
CARGO_VERSION = "1.63.0"
# TODO: Add hashes for other architecture toolchains as well. Make a script?
SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "993c2c17bf76ac626bfb5b17bddce65fbdfc14f70d183f33773de0cd12df46d2"
SRC_URI[rustc-snapshot-x86_64.sha256sum] = "bdab9d9afa5c329c40f9ba568364815237fab8426477c12bfabad35ffc484ab5"
SRC_URI[cargo-snapshot-x86_64.sha256sum] = "f370d12e4c11f0c835becb738bcf00d363f29b76f8b424b4dcb005abcf15fc9a"
SRC_URI[rust-std-snapshot-aarch64.sha256sum] = "f1d93b3d48258f701687c63ef9b226c07329fb92c2c5559283258687f958e9d0"
SRC_URI[rustc-snapshot-aarch64.sha256sum] = "d78799bb8f4177877f97b9051c9cba1fd85173f2e9cecab9486388fc6fa66259"
SRC_URI[cargo-snapshot-aarch64.sha256sum] = "4313ab44dccba4faed20db4aacc16def405773d1676e79d3e65ced4b99d710d4"
SRC_URI += " \
https://static.rust-lang.org/dist/${RUST_STD_SNAPSHOT}.tar.xz;name=rust-std-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${RUSTC_SNAPSHOT}.tar.xz;name=rustc-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.xz;name=cargo-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
"
RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
CARGO_SNAPSHOT = "cargo-${CARGO_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"

View File

@@ -0,0 +1,14 @@
# Specifics for Rust 1.20.0
SRC_URI += "\
https://static.rust-lang.org/dist/rustc-${PV}-src.tar.gz;name=rust \
"
SRC_URI[rust.md5sum] = "1d3c5d25d8e6215e7d0b6d4d4c9835b9"
SRC_URI[rust.sha256sum] = "2aa4875ff4472c6e35262bbb9052cb2623da3dae6084a858cc59d36f33f18214"
# later versions of rust change the directory that they unextract to
RUSTSRC = "${WORKDIR}/rustc-${PV}-src"
# set this as our default
S = "${RUSTSRC}"
LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=12922f5565a22267bd82aaeb6d3548e5"

View File

@@ -0,0 +1,14 @@
# Specifics for Rust 1.21.0
SRC_URI += "\
https://static.rust-lang.org/dist/rustc-${PV}-src.tar.gz;name=rust \
"
SRC_URI[rust.md5sum] = "bc494706b764276613064aad52922f53"
SRC_URI[rust.sha256sum] = "1707c142244b5bd909993559c6116c81987c1de21d6207c05d3ecbe5bba548fa"
# later versions of rust change the directory that they unextract to
RUSTSRC = "${WORKDIR}/rustc-${PV}-src"
# set this as our default
S = "${RUSTSRC}"
LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=c709a09d1b062d9a908e3631c1e1cdf5"

View File

@@ -0,0 +1,18 @@
# Specifics for Rust 1.24.1
SRC_URI += " \
https://static.rust-lang.org/dist/rustc-${PV}-src.tar.gz;name=rust \
"
SRC_URI[md5sum] = "50639bf359e658fcd713787d5898628d"
SRC_URI[sha256sum] = "3ea53d45e8d2e9a41afb3340cf54b9745f845b552d802d607707cf04450761ef"
SRC_URI[rust.md5sum] = "50639bf359e658fcd713787d5898628d"
SRC_URI[rust.sha256sum] = "3ea53d45e8d2e9a41afb3340cf54b9745f845b552d802d607707cf04450761ef"
# later versions of rust change the directory that they unextract to
RUSTSRC = "${WORKDIR}/rustc-${PV}-src"
# set this as our default
S = "${RUSTSRC}"
LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=c709a09d1b062d9a908e3631c1e1cdf5"

View File

@@ -1,7 +0,0 @@
SRC_URI += "https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz;name=rust"
SRC_URI[rust.sha256sum] = "a63305a3ad734f170746b337a5e3d07ccaa7aa8f253dc52336b44c0a3b549d7b"
RUSTSRC = "${WORKDIR}/rustc-${PV}-src"
UPSTREAM_CHECK_URI = "https://forge.rust-lang.org/infra/other-installation-methods.html"
UPSTREAM_CHECK_REGEX = "rustc-(?P<pver>\d+(\.\d+)+)-src"

View File

@@ -1,7 +0,0 @@
SRC_URI += "https://static.rust-lang.org/dist/rustc-${PV}-src.tar.xz;name=rust"
SRC_URI[rust.sha256sum] = "e8170d318fac9d2fc17d5c3e648e7068f56e8db8d233d864aeffbef7c6542eac"
RUSTSRC = "${WORKDIR}/rustc-${PV}-src"
UPSTREAM_CHECK_URI = "https://forge.rust-lang.org/infra/other-installation-methods.html"
UPSTREAM_CHECK_REGEX = "rustc-(?P<pver>\d+(\.\d+)+)-src"

View File

@@ -1,10 +0,0 @@
require rust.inc
DEPENDS += "rust-llvm (=${PV})"
# 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"
BBCLASSEXTEND = "native"

View File

@@ -1,38 +0,0 @@
require rust-cross-canadian-common.inc
RUST_TOOLS_CLIPPY_PN = "rust-tools-clippy-cross-canadian-${TRANSLATED_TARGET_ARCH}"
RUST_TOOLS_RUSTFMT_PN = "rust-tools-rustfmt-cross-canadian-${TRANSLATED_TARGET_ARCH}"
RUST_TOOLS_PKGS = "${RUST_TOOLS_CLIPPY_PN} ${RUST_TOOLS_RUSTFMT_PN}"
PN = "rust-tools-cross-canadian-${TRANSLATED_TARGET_ARCH}"
PACKAGES = "${RUST_TOOLS_CLIPPY_PN} ${RUST_TOOLS_RUSTFMT_PN} ${PN}"
RDEPENDS:${PN} += "${RUST_TOOLS_PKGS}"
do_compile () {
rust_runx build --stage 2 src/tools/clippy
rust_runx build --stage 2 src/tools/rustfmt
}
do_install () {
SYS_BINDIR=$(dirname ${D}${bindir})
install -d "${SYS_BINDIR}"
cp build/${SNAPSHOT_BUILD_SYS}/stage2-tools-bin/* ${SYS_BINDIR}
for i in ${SYS_BINDIR}/*; do
chrpath -r "\$ORIGIN/../lib" ${i}
done
chown -R root.root ${D}
}
ALLOW_EMPTY:${PN} = "1"
PKG_SYS_BINDIR = "${SDKPATHNATIVE}/usr/bin"
FILES:${RUST_TOOLS_CLIPPY_PN} = "${PKG_SYS_BINDIR}/cargo-clippy ${PKG_SYS_BINDIR}/clippy-driver"
FILES:${RUST_TOOLS_RUSTFMT_PN} = "${PKG_SYS_BINDIR}/rustfmt"
SUMMARY:${PN} = "Rust helper tools"
SUMMARY:${RUST_TOOLS_CLIPPY_PN} = "A collection of lints to catch common mistakes and improve your Rust code"
SUMMARY:${RUST_TOOLS_RUSTFMT_PN} = "A tool for formatting Rust code according to style guidelines"

View File

@@ -1,6 +0,0 @@
require rust-tools-cross-canadian.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc
FILESEXTRAPATHS:prepend := "${THISDIR}/rust:"

View File

@@ -1,6 +0,0 @@
require rust-tools-cross-canadian.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc
FILESEXTRAPATHS:prepend := "${THISDIR}/rust:"

View File

@@ -2,32 +2,17 @@ SUMMARY = "Rust compiler and runtime libaries"
HOMEPAGE = "http://www.rust-lang.org"
SECTION = "devel"
LICENSE = "MIT | Apache-2.0"
LIC_FILES_CHKSUM = "file://COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"
inherit rust
inherit cargo_common
DEPENDS += "file-native python3-native"
DEPENDS:append:class-native = " rust-llvm-native"
S = "${RUSTSRC}"
DEPENDS += "file-native python-native"
# We generate local targets, and need to be able to locate them
export RUST_TARGET_PATH="${WORKDIR}/targets/"
export FORCE_CRATE_HASH="${BB_TASKHASH}"
RUST_ALTERNATE_EXE_PATH ?= "${STAGING_LIBDIR}/llvm-rust/bin/llvm-config"
export YOCTO_ALTERNATE_EXE_PATH = "${RUST_ALTERNATE_EXE_PATH}"
export YOCTO_ALTERNATE_MULTILIB_NAME = "/${BASELIB}"
# 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
SNAPSHOT_BUILD_SYS = "${BUILD_ARCH}-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.
@@ -35,11 +20,291 @@ setup_cargo_environment () {
# Later stages are build for the native target (i.e. target.x86_64-linux)
cargo_common_do_configure
printf '[target.%s]\n' "${SNAPSHOT_BUILD_SYS}" >> ${CARGO_HOME}/config
printf "linker = '%s'\n" "${RUST_BUILD_CCLD}" >> ${CARGO_HOME}/config
echo "[target.${RUST_BUILD_SYS}]" >> ${CARGO_HOME}/config
echo "linker = '${RUST_TARGET_CCLD}'" >> ${CARGO_HOME}/config
}
include rust-common.inc
# Right now this is focused on arm-specific tune features.
# We get away with this for now as one can only use x86-64 as the build host
# (not arm).
# Note that TUNE_FEATURES is _always_ refering to the target, so we really
# don't want to use this for the host/build.
def llvm_features_from_tune(d):
f = []
feat = d.getVar('TUNE_FEATURES')
if not feat:
return []
feat = frozenset(feat.split())
if 'vfpv4' in feat:
f.append("+vfp4")
if 'vfpv3' in feat:
f.append("+vfp3")
if 'vfpv3d16' in feat:
f.append("+d16")
if 'vfpv2' in feat or 'vfp' in feat:
f.append("+vfp2")
if 'neon' in feat:
f.append("+neon")
if 'aarch64' in feat:
f.append("+v8")
if 'mips32' in feat:
f.append("+mips32")
if 'mips32r2' in feat:
f.append("+mips32r2")
v7=frozenset(['armv7a', 'armv7r', 'armv7m', 'armv7ve'])
if not feat.isdisjoint(v7):
f.append("+v7")
if 'armv6' in feat:
f.append("+v6")
if 'dsp' in feat:
f.append("+dsp")
if d.getVar('ARM_THUMB_OPT') is "thumb":
if not feat.isdisjoint(v7):
f.append("+thumb2")
f.append("+thumb-mode")
if 'cortexa5' in feat:
f.append("+a5")
if 'cortexa7' in feat:
f.append("+a7")
if 'cortexa9' in feat:
f.append("+a9")
if 'cortexa15' in feat:
f.append("+a15")
if 'cortexa17' in feat:
f.append("+a17")
return f
# TARGET_CC_ARCH changes from build/cross/target so it'll do the right thing
# this should go away when https://github.com/rust-lang/rust/pull/31709 is
# stable (1.9.0?)
def llvm_features_from_cc_arch(d):
f = []
feat = d.getVar('TARGET_CC_ARCH')
if not feat:
return []
feat = frozenset(feat.split())
if '-mmmx' in feat:
f.append("+mmx")
if '-msse' in feat:
f.append("+sse")
if '-msse2' in feat:
f.append("+sse2")
if '-msse3' in feat:
f.append("+sse3")
if '-mssse3' in feat:
f.append("+ssse3")
if '-msse4.1' in feat:
f.append("+sse4.1")
if '-msse4.2' in feat:
f.append("+sse4.2")
if '-msse4a' in feat:
f.append("+sse4a")
if '-mavx' in feat:
f.append("+avx")
if '-mavx2' in feat:
f.append("+avx2")
return f
def llvm_features_from_target_fpu(d):
# TARGET_FPU can be hard or soft. +soft-float tell llvm to use soft float
# ABI. There is no option for hard.
fpu = d.getVar('TARGET_FPU', True)
return ["+soft-float"] if fpu == "soft" else []
def llvm_features(d):
return ','.join(llvm_features_from_tune(d) +
llvm_features_from_cc_arch(d) +
llvm_features_from_target_fpu(d))
## arm-unknown-linux-gnueabihf
DATA_LAYOUT[arm] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
LLVM_TARGET[arm] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[arm] = "little"
TARGET_POINTER_WIDTH[arm] = "32"
TARGET_C_INT_WIDTH[arm] = "32"
MAX_ATOMIC_WIDTH[arm] = "64"
FEATURES[arm] = "+v6,+vfp2"
## aarch64-unknown-linux-gnu
DATA_LAYOUT[aarch64] = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
LLVM_TARGET[aarch64] = "aarch64-unknown-linux-gnu"
TARGET_ENDIAN[aarch64] = "little"
TARGET_POINTER_WIDTH[aarch64] = "64"
TARGET_C_INT_WIDTH[aarch64] = "64"
MAX_ATOMIC_WIDTH[aarch64] = "128"
## x86_64-unknown-linux-gnu
DATA_LAYOUT[x86_64] = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
LLVM_TARGET[x86_64] = "x86_64-unknown-linux-gnu"
TARGET_ENDIAN[x86_64] = "little"
TARGET_POINTER_WIDTH[x86_64] = "64"
TARGET_C_INT_WIDTH[x86_64] = "64"
MAX_ATOMIC_WIDTH[x86_64] = "64"
## i686-unknown-linux-gnu
DATA_LAYOUT[i686] = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
LLVM_TARGET[i686] = "i686-unknown-linux-gnu"
TARGET_ENDIAN[i686] = "little"
TARGET_POINTER_WIDTH[i686] = "32"
TARGET_C_INT_WIDTH[i686] = "32"
MAX_ATOMIC_WIDTH[i686] = "64"
## XXX: a bit of a hack so qemux86 builds, clone of i686-unknown-linux-gnu above
DATA_LAYOUT[i586] = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
LLVM_TARGET[i586] = "i586-unknown-linux-gnu"
TARGET_ENDIAN[i586] = "little"
TARGET_POINTER_WIDTH[i586] = "32"
TARGET_C_INT_WIDTH[i586] = "32"
MAX_ATOMIC_WIDTH[i586] = "64"
## mips-unknown-linux-gnu
DATA_LAYOUT[mips] = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
LLVM_TARGET[mips] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[mips] = "big"
TARGET_POINTER_WIDTH[mips] = "32"
TARGET_C_INT_WIDTH[mips] = "32"
MAX_ATOMIC_WIDTH[mips] = "32"
## mipsel-unknown-linux-gnu
DATA_LAYOUT[mipsel] = "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
LLVM_TARGET[mipsel] = "${RUST_TARGET_SYS}"
TARGET_ENDIAN[mipsel] = "little"
TARGET_POINTER_WIDTH[mipsel] = "32"
TARGET_C_INT_WIDTH[mipsel] = "32"
MAX_ATOMIC_WIDTH[mipsel] = "32"
def arch_for(d, thing):
return d.getVar('{}_ARCH'.format(thing))
def sys_for(d, thing):
return d.getVar('{}_SYS'.format(thing))
def prefix_for(d, thing):
return d.getVar('{}_PREFIX'.format(thing))
# Convert a normal arch (HOST_ARCH, TARGET_ARCH, BUILD_ARCH, etc) to something
# rust's internals won't choke on.
def arch_to_rust_target_arch(arch):
if arch == "i586" or arch == "i686":
return "x86"
elif arch == "mipsel":
return "mips"
else:
return arch
# generates our target CPU value
def llvm_cpu(d):
cpu = d.getVar('PACKAGE_ARCH')
target = d.getVar('TRANSLATED_TARGET_ARCH')
trans = {}
trans['corei7-64'] = "corei7"
trans['core2-32'] = "core2"
trans['x86-64'] = "x86-64"
trans['i686'] = "i686"
trans['i586'] = "i586"
if target in ["mips", "mipsel"]:
feat = frozenset(d.getVar('TUNE_FEATURES').split())
if "mips32r2" in feat:
trans['mipsel'] = "mips32r2"
trans['mips'] = "mips32r2"
elif "mips32" in feat:
trans['mipsel'] = "mips32"
trans['mips'] = "mips32"
try:
return trans[cpu]
except:
return trans.get(target, "generic")
TARGET_LLVM_CPU="${@llvm_cpu(d)}"
TARGET_LLVM_FEATURES = "${@llvm_features(d)}"
# class-native implies TARGET=HOST, and TUNE_FEATURES only describes the real
# (original) target.
TARGET_LLVM_FEATURES_class-native = "${@','.join(llvm_features_from_cc_arch(d))}"
def rust_gen_target(d, thing, wd):
import json
from distutils.version import LooseVersion
arch = arch_for(d, thing)
sys = sys_for(d, thing)
prefix = prefix_for(d, thing)
features = ""
cpu = "generic"
if thing is "TARGET":
features = d.getVar('TARGET_LLVM_FEATURES') or ""
cpu = d.getVar('TARGET_LLVM_CPU')
features = features or d.getVarFlag('FEATURES', arch) or ""
features = features.strip()
# build tspec
tspec = {}
tspec['llvm-target'] = d.getVarFlag('LLVM_TARGET', arch)
tspec['data-layout'] = d.getVarFlag('DATA_LAYOUT', arch)
tspec['max-atomic-width'] = d.getVarFlag('MAX_ATOMIC_WIDTH', arch)
tspec['target-pointer-width'] = d.getVarFlag('TARGET_POINTER_WIDTH', arch)
tspec['target-c-int-width'] = d.getVarFlag('TARGET_C_INT_WIDTH', arch)
tspec['target-endian'] = d.getVarFlag('TARGET_ENDIAN', arch)
tspec['arch'] = arch_to_rust_target_arch(arch)
tspec['os'] = "linux"
tspec['env'] = "gnu"
tspec['vendor'] = "unknown"
tspec['target-family'] = "unix"
tspec['linker'] = "{}{}gcc".format(d.getVar('CCACHE'), prefix)
tspec['ar'] = "{}ar".format(prefix)
tspec['cpu'] = cpu
if features is not "":
tspec['features'] = features
tspec['dynamic-linking'] = True
tspec['executables'] = True
tspec['linker-is-gnu'] = True
tspec['linker-flavor'] = "gcc"
tspec['has-rpath'] = True
tspec['has-elf-tls'] = True
tspec['position-independent-executables'] = True
tspec['panic-strategy'] = d.getVar("RUST_PANIC_STRATEGY")
# Don't use jemalloc as it doesn't work for many targets.
# https://github.com/rust-lang/rust/pull/37392
# From 1.20.0 and forward, system allocator is the default.
if LooseVersion(d.getVar("PV")) < LooseVersion("1.20.0"):
tspec['exe-allocation-crate'] = "alloc_system"
tspec['lib-allocation-crate'] = "alloc_system"
# write out the target spec json file
with open(wd + sys + '.json', 'w') as f:
json.dump(tspec, f, indent=4)
python do_rust_gen_targets () {
wd = d.getVar('WORKDIR') + '/targets/'
# It is important 'TARGET' is last here so that it overrides our less
# informed choices for BUILD & HOST if TARGET happens to be the same as
# either of them.
for thing in ['BUILD', 'HOST', 'TARGET']:
bb.debug(1, "rust_gen_target for " + thing)
rust_gen_target(d, thing, wd)
}
addtask rust_gen_targets after do_patch before do_compile
do_rust_gen_targets[dirs] += "${WORKDIR}/targets"
do_rust_setup_snapshot () {
for installer in "${WORKDIR}/rust-snapshot-components/"*"/install.sh"; do
@@ -50,18 +315,10 @@ do_rust_setup_snapshot () {
# 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
do_rust_setup_snapshot[dirs] += "${WORKDIR}/rust-snapshot"
do_rust_setup_snapshot[vardepsexclude] += "UNINATIVE_LOADER"
python do_configure() {
import json
@@ -82,27 +339,21 @@ python do_configure() {
target_section = "target.{}".format(d.getVar('TARGET_SYS', True))
config.add_section(target_section)
llvm_config = d.expand("${YOCTO_ALTERNATE_EXE_PATH}")
llvm_config = d.expand("${STAGING_DIR_NATIVE}${bindir_native}/llvm-config")
config.set(target_section, "llvm-config", e(llvm_config))
config.set(target_section, "cxx", e(d.expand("${RUST_TARGET_CXX}")))
config.set(target_section, "cc", e(d.expand("${RUST_TARGET_CC}")))
# If we don't do this rust-native will compile it's own llvm for BUILD.
# [target.${BUILD_ARCH}-unknown-linux-gnu]
target_section = "target.{}".format(d.getVar('SNAPSHOT_BUILD_SYS', True))
config.add_section(target_section)
config.set(target_section, "llvm-config", e(llvm_config))
config.set(target_section, "cxx", e(d.expand("${RUST_BUILD_CXX}")))
config.set(target_section, "cc", e(d.expand("${RUST_BUILD_CC}")))
# [rust]
config.add_section("rust")
config.set("rust", "rpath", e(True))
config.set("rust", "channel", e("stable"))
# Don't use jemalloc as it doesn't work for many targets.
# https://github.com/rust-lang/rust/pull/37392
config.set("rust", "use-jemalloc", e(False))
# Whether or not to optimize the compiler and standard library
config.set("rust", "optimize", e(True))
@@ -114,39 +365,18 @@ python do_configure() {
rustc = d.expand("${WORKDIR}/rust-snapshot/bin/rustc")
config.set("build", "rustc", e(rustc))
# Support for the profiler runtime to generate e.g. coverage report,
# PGO etc.
config.set("build", "profiler", e(True))
cargo = d.expand("${WORKDIR}/rust-snapshot/bin/cargo")
config.set("build", "cargo", e(cargo))
config.set("build", "vendor", e(True))
if not "targets" in locals():
targets = [d.getVar("TARGET_SYS", True)]
targets = [d.getVar("TARGET_SYS", True)]
config.set("build", "target", e(targets))
if not "hosts" in locals():
hosts = [d.getVar("HOST_SYS", True)]
config.set("build", "host", e(hosts))
hosts = [d.getVar("HOST_SYS", True)]
config.set("build", "host", e(targets))
# 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("SNAPSHOT_BUILD_SYS", True)))
# [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", True) + d.getVar("prefix", True)))
config.set("install", "bindir", e(d.getVar("D", True) + d.getVar("bindir", True)))
config.set("install", "libdir", e(d.getVar("D", True) + d.getVar("libdir", True)))
config.set("install", "datadir", e(d.getVar("D", True) + d.getVar("datadir", True)))
config.set("install", "mandir", e(d.getVar("D", True) + d.getVar("mandir", True)))
config.set("build", "build", e(d.getVar("BUILD_SYS", True)))
with open("config.toml", "w") as f:
f.write('changelog-seen = 2\n\n')
config.write(f)
# set up ${WORKDIR}/cargo_home
@@ -167,36 +397,42 @@ rust_runx () {
oe_cargo_fix_env
python3 src/bootstrap/bootstrap.py ${@oe.utils.parallel_make_argument(d, '-j %d')} "$@" --verbose
python src/bootstrap/bootstrap.py "$@" --verbose
}
rust_runx[vardepsexclude] += "PARALLEL_MAKE"
do_compile () {
rust_runx build
}
rust_do_install () {
mkdir -p ${D}${bindir}
cp build/${HOST_SYS}/stage2/bin/* ${D}${bindir}
mkdir -p ${D}${libdir}/rustlib
cp -pRd build/${HOST_SYS}/stage2/lib/* ${D}${libdir}
# Remove absolute symlink so bitbake doesn't complain
rm -f ${D}${libdir}/rustlib/src/rust
}
rust_do_dist_install () {
rust_runx dist
for installer in "build/tmp/dist/rustc"*"/install.sh"; do
"${installer}" --destdir="${D}" --prefix="${prefix}" --disable-ldconfig
done
for installer in "build/tmp/dist/rust-std"*"/install.sh"; do
"${installer}" --destdir="${D}" --prefix="${prefix}" --disable-ldconfig
done
rust_install_targets() {
# Install our custom target.json files
local td="${D}${libdir}/rustlib/"
install -d "$td"
for tgt in "${WORKDIR}/targets/"* ; do
install -m 0644 "$tgt" "$td"
done
# cleanup after rust-installer since we don't need these bits
rm ${D}/${libdir}/rustlib/install.log
rm ${D}/${libdir}/rustlib/rust-installer-version
rm ${D}/${libdir}/rustlib/uninstall.sh
rm ${D}/${libdir}/rustlib/components
}
do_install () {
rust_do_install
rust_install_targets
rust_do_dist_install
}
# ex: sts=4 et sw=4 ts=8

View File

@@ -0,0 +1,143 @@
require rust.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc
# These are extracted from rustc/src/bootstrap/Cargo.toml via cargo-bitbake
SRC_URI += " \
crate://crates.io/advapi32-sys/0.2.0 \
crate://crates.io/aho-corasick/0.5.3 \
crate://crates.io/aho-corasick/0.6.3 \
crate://crates.io/ansi_term/0.9.0 \
crate://crates.io/atty/0.2.2 \
crate://crates.io/backtrace-sys/0.1.11 \
crate://crates.io/backtrace/0.3.2 \
crate://crates.io/bitflags/0.8.2 \
crate://crates.io/bitflags/0.9.1 \
crate://crates.io/bufstream/0.1.3 \
crate://crates.io/cfg-if/0.1.2 \
crate://crates.io/clap/2.25.0 \
crate://crates.io/cmake/0.1.24 \
crate://crates.io/crossbeam/0.2.10 \
crate://crates.io/curl-sys/0.3.14 \
crate://crates.io/curl/0.4.7 \
crate://crates.io/dbghelp-sys/0.2.0 \
crate://crates.io/diff/0.1.10 \
crate://crates.io/docopt/0.8.1 \
crate://crates.io/dtoa/0.4.1 \
crate://crates.io/env_logger/0.4.3 \
crate://crates.io/error-chain/0.10.0 \
crate://crates.io/error-chain/0.11.0-rc.2 \
crate://crates.io/filetime/0.1.10 \
crate://crates.io/flate2/0.2.19 \
crate://crates.io/foreign-types/0.2.0 \
crate://crates.io/fs2/0.4.2 \
crate://crates.io/gcc/0.3.51 \
crate://crates.io/getopts/0.2.14 \
crate://crates.io/git2-curl/0.7.0 \
crate://crates.io/git2/0.6.6 \
crate://crates.io/glob/0.2.11 \
crate://crates.io/hamcrest/0.1.1 \
crate://crates.io/handlebars/0.26.2 \
crate://crates.io/hex/0.2.0 \
crate://crates.io/idna/0.1.2 \
crate://crates.io/itoa/0.3.1 \
crate://crates.io/jobserver/0.1.6 \
crate://crates.io/kernel32-sys/0.2.2 \
crate://crates.io/lazy_static/0.2.8 \
crate://crates.io/libc/0.2.26 \
crate://crates.io/libgit2-sys/0.6.12 \
crate://crates.io/libssh2-sys/0.2.6 \
crate://crates.io/libz-sys/1.0.16 \
crate://crates.io/log/0.3.8 \
crate://crates.io/lzma-sys/0.1.7 \
crate://crates.io/matches/0.1.6 \
crate://crates.io/mdbook/0.0.22 \
crate://crates.io/memchr/0.1.11 \
crate://crates.io/memchr/1.0.1 \
crate://crates.io/miniz-sys/0.1.9 \
crate://crates.io/miow/0.2.1 \
crate://crates.io/net2/0.2.29 \
crate://crates.io/num-bigint/0.1.39 \
crate://crates.io/num-complex/0.1.38 \
crate://crates.io/num-integer/0.1.34 \
crate://crates.io/num-iter/0.1.33 \
crate://crates.io/num-rational/0.1.38 \
crate://crates.io/num-traits/0.1.39 \
crate://crates.io/num/0.1.39 \
crate://crates.io/num_cpus/1.6.2 \
crate://crates.io/open/1.2.0 \
crate://crates.io/openssl-probe/0.1.1 \
crate://crates.io/openssl-sys/0.9.15 \
crate://crates.io/openssl/0.9.15 \
crate://crates.io/owning_ref/0.3.3 \
crate://crates.io/percent-encoding/1.0.0 \
crate://crates.io/pest/0.3.3 \
crate://crates.io/pkg-config/0.3.9 \
crate://crates.io/psapi-sys/0.1.0 \
crate://crates.io/pulldown-cmark/0.0.14 \
crate://crates.io/quick-error/1.2.0 \
crate://crates.io/quote/0.3.15 \
crate://crates.io/rand/0.3.15 \
crate://crates.io/regex-syntax/0.3.9 \
crate://crates.io/regex-syntax/0.4.1 \
crate://crates.io/regex/0.1.80 \
crate://crates.io/regex/0.2.2 \
crate://crates.io/rls-data/0.7.0 \
crate://crates.io/rls-span/0.4.0 \
crate://crates.io/rustc-demangle/0.1.4 \
crate://crates.io/rustc-serialize/0.3.24 \
crate://crates.io/same-file/0.1.3 \
crate://crates.io/scoped-tls/0.1.0 \
crate://crates.io/semver-parser/0.7.0 \
crate://crates.io/semver/0.7.0 \
crate://crates.io/serde/1.0.10 \
crate://crates.io/serde_derive/1.0.10 \
crate://crates.io/serde_derive_internals/0.15.1 \
crate://crates.io/serde_ignored/0.0.3 \
crate://crates.io/serde_json/1.0.2 \
crate://crates.io/shell-escape/0.1.3 \
crate://crates.io/socket2/0.2.1 \
crate://crates.io/stable_deref_trait/1.0.0 \
crate://crates.io/strsim/0.6.0 \
crate://crates.io/syn/0.11.11 \
crate://crates.io/synom/0.11.3 \
crate://crates.io/tar/0.4.13 \
crate://crates.io/tempdir/0.3.5 \
crate://crates.io/term_size/0.3.0 \
crate://crates.io/termcolor/0.3.2 \
crate://crates.io/textwrap/0.6.0 \
crate://crates.io/thread-id/2.0.0 \
crate://crates.io/thread_local/0.2.7 \
crate://crates.io/thread_local/0.3.4 \
crate://crates.io/toml/0.1.30 \
crate://crates.io/toml/0.4.2 \
crate://crates.io/unicode-bidi/0.3.4 \
crate://crates.io/unicode-normalization/0.1.5 \
crate://crates.io/unicode-segmentation/1.1.0 \
crate://crates.io/unicode-width/0.1.4 \
crate://crates.io/unicode-xid/0.0.4 \
crate://crates.io/unreachable/1.0.0 \
crate://crates.io/url/1.5.1 \
crate://crates.io/utf8-ranges/0.1.3 \
crate://crates.io/utf8-ranges/1.0.0 \
crate://crates.io/vcpkg/0.2.2 \
crate://crates.io/vec_map/0.8.0 \
crate://crates.io/void/1.0.2 \
crate://crates.io/walkdir/1.0.7 \
crate://crates.io/winapi-build/0.1.1 \
crate://crates.io/winapi/0.2.8 \
crate://crates.io/wincolor/0.1.4 \
crate://crates.io/ws2_32-sys/0.2.1 \
crate://crates.io/xattr/0.1.11 \
crate://crates.io/xz2/0.1.3 \
crate://crates.io/yaml-rust/0.3.5 \
"
DEPENDS += "rust-llvm (=${PV})"
# 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"
BBCLASSEXTEND = "native"

View File

@@ -0,0 +1,177 @@
require rust.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc
SRC_URI += "file://rust-${PV}/0001-librustc-always-allow-unstable-options.patch"
SRC_URI += "file://rust-${PV}/0001-Don-t-use-remapped-path-when-loading-modules-and-inc.patch"
# These are extracted from rustc/src/bootstrap/Cargo.toml via cargo-bitbake
SRC_URI += " \
crate://crates.io/advapi32-sys/0.2.0 \
crate://crates.io/aho-corasick/0.5.3 \
crate://crates.io/aho-corasick/0.6.3 \
crate://crates.io/ansi_term/0.9.0 \
crate://crates.io/ar/0.3.0 \
crate://crates.io/atty/0.2.2 \
crate://crates.io/backtrace-sys/0.1.12 \
crate://crates.io/backtrace/0.3.2 \
crate://crates.io/bitflags/0.7.0 \
crate://crates.io/bitflags/0.8.2 \
crate://crates.io/bitflags/0.9.1 \
crate://crates.io/bufstream/0.1.3 \
crate://crates.io/cfg-if/0.1.2 \
crate://crates.io/clap/2.26.0 \
crate://crates.io/cmake/0.1.24 \
crate://crates.io/core-foundation-sys/0.4.4 \
crate://crates.io/core-foundation/0.4.4 \
crate://crates.io/crossbeam/0.2.10 \
crate://crates.io/curl-sys/0.3.14 \
crate://crates.io/curl/0.4.8 \
crate://crates.io/dbghelp-sys/0.2.0 \
crate://crates.io/derive-new/0.3.0 \
crate://crates.io/diff/0.1.10 \
crate://crates.io/docopt/0.8.1 \
crate://crates.io/dtoa/0.4.1 \
crate://crates.io/enum_primitive/0.1.1 \
crate://crates.io/env_logger/0.3.5 \
crate://crates.io/env_logger/0.4.3 \
crate://crates.io/error-chain/0.10.0 \
crate://crates.io/error-chain/0.11.0-rc.2 \
crate://crates.io/filetime/0.1.10 \
crate://crates.io/flate2/0.2.19 \
crate://crates.io/fnv/1.0.5 \
crate://crates.io/foreign-types/0.2.0 \
crate://crates.io/fs2/0.4.2 \
crate://crates.io/futures/0.1.14 \
crate://crates.io/gcc/0.3.51 \
crate://crates.io/getopts/0.2.14 \
crate://crates.io/git2-curl/0.7.0 \
crate://crates.io/git2/0.6.6 \
crate://crates.io/glob/0.2.11 \
crate://crates.io/globset/0.2.0 \
crate://crates.io/hamcrest/0.1.1 \
crate://crates.io/handlebars/0.26.2 \
crate://crates.io/hex/0.2.0 \
crate://crates.io/home/0.3.0 \
crate://crates.io/idna/0.1.4 \
crate://crates.io/ignore/0.2.2 \
crate://crates.io/itoa/0.3.1 \
crate://crates.io/jobserver/0.1.6 \
crate://crates.io/jsonrpc-core/7.1.0 \
crate://crates.io/kernel32-sys/0.2.2 \
crate://crates.io/languageserver-types/0.12.0 \
crate://crates.io/lazy_static/0.2.8 \
crate://crates.io/libc/0.2.29 \
crate://crates.io/libgit2-sys/0.6.12 \
crate://crates.io/libssh2-sys/0.2.6 \
crate://crates.io/libz-sys/1.0.16 \
crate://crates.io/log/0.3.8 \
crate://crates.io/lzma-sys/0.1.8 \
crate://crates.io/matches/0.1.6 \
crate://crates.io/mdbook/0.0.22 \
crate://crates.io/memchr/0.1.11 \
crate://crates.io/memchr/1.0.1 \
crate://crates.io/miniz-sys/0.1.9 \
crate://crates.io/miow/0.2.1 \
crate://crates.io/net2/0.2.31 \
crate://crates.io/num-bigint/0.1.40 \
crate://crates.io/num-complex/0.1.40 \
crate://crates.io/num-integer/0.1.35 \
crate://crates.io/num-iter/0.1.34 \
crate://crates.io/num-rational/0.1.39 \
crate://crates.io/num-traits/0.1.40 \
crate://crates.io/num/0.1.40 \
crate://crates.io/num_cpus/1.6.2 \
crate://crates.io/open/1.2.0 \
crate://crates.io/openssl-probe/0.1.1 \
crate://crates.io/openssl-sys/0.9.17 \
crate://crates.io/openssl/0.9.17 \
crate://crates.io/owning_ref/0.3.3 \
crate://crates.io/percent-encoding/1.0.0 \
crate://crates.io/pest/0.3.3 \
crate://crates.io/pkg-config/0.3.9 \
crate://crates.io/psapi-sys/0.1.0 \
crate://crates.io/pulldown-cmark/0.0.14 \
crate://crates.io/quick-error/1.2.0 \
crate://crates.io/quote/0.2.3 \
crate://crates.io/quote/0.3.15 \
crate://crates.io/racer/2.0.10 \
crate://crates.io/rand/0.3.15 \
crate://crates.io/regex-syntax/0.3.9 \
crate://crates.io/regex-syntax/0.4.1 \
crate://crates.io/regex/0.1.80 \
crate://crates.io/regex/0.2.2 \
crate://crates.io/rls-analysis/0.6.5 \
crate://crates.io/rls-data/0.10.0 \
crate://crates.io/rls-rustc/0.1.0 \
crate://crates.io/rls-span/0.4.0 \
crate://crates.io/rls-vfs/0.4.4 \
crate://crates.io/rustc-demangle/0.1.5 \
crate://crates.io/rustc-serialize/0.3.24 \
crate://crates.io/rustfmt-nightly/0.2.2 \
crate://crates.io/same-file/0.1.3 \
crate://crates.io/scoped-tls/0.1.0 \
crate://crates.io/scopeguard/0.1.2 \
crate://crates.io/semver-parser/0.7.0 \
crate://crates.io/semver/0.7.0 \
crate://crates.io/serde/1.0.11 \
crate://crates.io/serde_derive/1.0.11 \
crate://crates.io/serde_derive_internals/0.15.1 \
crate://crates.io/serde_ignored/0.0.3 \
crate://crates.io/serde_json/1.0.2 \
crate://crates.io/shell-escape/0.1.3 \
crate://crates.io/socket2/0.2.2 \
crate://crates.io/stable_deref_trait/1.0.0 \
crate://crates.io/strings/0.1.0 \
crate://crates.io/strsim/0.6.0 \
crate://crates.io/syn/0.11.11 \
crate://crates.io/syn/0.8.7 \
crate://crates.io/synom/0.11.3 \
crate://crates.io/syntex_errors/0.52.0 \
crate://crates.io/syntex_pos/0.52.0 \
crate://crates.io/syntex_syntax/0.52.0 \
crate://crates.io/tar/0.4.13 \
crate://crates.io/tempdir/0.3.5 \
crate://crates.io/term/0.4.6 \
crate://crates.io/term_size/0.3.0 \
crate://crates.io/termcolor/0.3.2 \
crate://crates.io/textwrap/0.7.0 \
crate://crates.io/thread-id/2.0.0 \
crate://crates.io/thread_local/0.2.7 \
crate://crates.io/thread_local/0.3.4 \
crate://crates.io/toml/0.2.1 \
crate://crates.io/toml/0.4.5 \
crate://crates.io/typed-arena/1.3.0 \
crate://crates.io/unicode-bidi/0.3.4 \
crate://crates.io/unicode-normalization/0.1.5 \
crate://crates.io/unicode-segmentation/1.2.0 \
crate://crates.io/unicode-width/0.1.4 \
crate://crates.io/unicode-xid/0.0.3 \
crate://crates.io/unicode-xid/0.0.4 \
crate://crates.io/unreachable/1.0.0 \
crate://crates.io/url/1.5.1 \
crate://crates.io/url_serde/0.2.0 \
crate://crates.io/userenv-sys/0.2.0 \
crate://crates.io/utf8-ranges/0.1.3 \
crate://crates.io/utf8-ranges/1.0.0 \
crate://crates.io/vcpkg/0.2.2 \
crate://crates.io/vec_map/0.8.0 \
crate://crates.io/void/1.0.2 \
crate://crates.io/walkdir/1.0.7 \
crate://crates.io/winapi-build/0.1.1 \
crate://crates.io/winapi/0.2.8 \
crate://crates.io/wincolor/0.1.4 \
crate://crates.io/ws2_32-sys/0.2.1 \
crate://crates.io/xattr/0.1.11 \
crate://crates.io/xz2/0.1.3 \
crate://crates.io/yaml-rust/0.3.5 \
"
DEPENDS += "rust-llvm (=${PV})"
# 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"
BBCLASSEXTEND = "native"

View File

@@ -0,0 +1,241 @@
require rust.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc
SRC_URI += "file://rust-${PV}/0001-librustc-always-allow-unstable-options.patch"
# These are extracted from rustc/src/bootstrap/Cargo.toml via cargo-bitbake
SRC_URI += " \
crate://crates.io/advapi32-sys/0.2.0 \
crate://crates.io/aho-corasick/0.5.3 \
crate://crates.io/aho-corasick/0.6.4 \
crate://crates.io/ansi_term/0.10.2 \
crate://crates.io/ar/0.3.1 \
crate://crates.io/atty/0.2.3 \
crate://crates.io/backtrace-sys/0.1.16 \
crate://crates.io/backtrace/0.3.4 \
crate://crates.io/bitflags/0.7.0 \
crate://crates.io/bitflags/0.9.1 \
crate://crates.io/bitflags/1.0.1 \
crate://crates.io/bufstream/0.1.3 \
crate://crates.io/byteorder/1.2.1 \
crate://crates.io/cargo_metadata/0.2.3 \
crate://crates.io/cargo_metadata/0.4.0 \
crate://crates.io/cc/1.0.3 \
crate://crates.io/cfg-if/0.1.2 \
crate://crates.io/clap/2.29.0 \
crate://crates.io/cmake/0.1.29 \
crate://crates.io/coco/0.1.1 \
crate://crates.io/commoncrypto-sys/0.2.0 \
crate://crates.io/commoncrypto/0.2.0 \
crate://crates.io/compiletest_rs/0.3.3 \
crate://crates.io/core-foundation-sys/0.4.6 \
crate://crates.io/core-foundation/0.4.6 \
crate://crates.io/crossbeam/0.2.10 \
crate://crates.io/crossbeam/0.3.0 \
crate://crates.io/crypto-hash/0.3.0 \
crate://crates.io/cssparser-macros/0.3.0 \
crate://crates.io/cssparser/0.13.7 \
crate://crates.io/curl-sys/0.3.15 \
crate://crates.io/curl/0.4.8 \
crate://crates.io/dbghelp-sys/0.2.0 \
crate://crates.io/debug_unreachable/0.1.1 \
crate://crates.io/derive-new/0.5.0 \
crate://crates.io/diff/0.1.11 \
crate://crates.io/docopt/0.8.1 \
crate://crates.io/dtoa/0.4.2 \
crate://crates.io/duct/0.8.2 \
crate://crates.io/either/1.4.0 \
crate://crates.io/endian-type/0.1.2 \
crate://crates.io/enum_primitive/0.1.1 \
crate://crates.io/env_logger/0.3.5 \
crate://crates.io/env_logger/0.4.3 \
crate://crates.io/error-chain/0.11.0 \
crate://crates.io/error-chain/0.8.1 \
crate://crates.io/failure/0.1.1 \
crate://crates.io/failure_derive/0.1.1 \
crate://crates.io/filetime/0.1.14 \
crate://crates.io/flate2/1.0.1 \
crate://crates.io/fnv/1.0.6 \
crate://crates.io/foreign-types-shared/0.1.1 \
crate://crates.io/foreign-types/0.3.2 \
crate://crates.io/fs2/0.4.2 \
crate://crates.io/fuchsia-zircon-sys/0.3.2 \
crate://crates.io/fuchsia-zircon/0.3.2 \
crate://crates.io/futf/0.1.3 \
crate://crates.io/futures/0.1.17 \
crate://crates.io/getopts/0.2.15 \
crate://crates.io/git2-curl/0.7.0 \
crate://crates.io/git2/0.6.10 \
crate://crates.io/glob/0.2.11 \
crate://crates.io/globset/0.2.1 \
crate://crates.io/hamcrest/0.1.1 \
crate://crates.io/handlebars/0.29.1 \
crate://crates.io/hex/0.2.0 \
crate://crates.io/home/0.3.0 \
crate://crates.io/html-diff/0.0.5 \
crate://crates.io/html5ever/0.20.0 \
crate://crates.io/idna/0.1.4 \
crate://crates.io/if_chain/0.1.2 \
crate://crates.io/ignore/0.2.2 \
crate://crates.io/itertools/0.6.5 \
crate://crates.io/itoa/0.3.4 \
crate://crates.io/jobserver/0.1.8 \
crate://crates.io/json/0.11.12 \
crate://crates.io/jsonrpc-core/8.0.1 \
crate://crates.io/kernel32-sys/0.2.2 \
crate://crates.io/kuchiki/0.6.0 \
crate://crates.io/languageserver-types/0.16.0 \
crate://crates.io/lazy_static/0.2.11 \
crate://crates.io/lazy_static/1.0.0 \
crate://crates.io/lazycell/0.5.1 \
crate://crates.io/libc/0.2.34 \
crate://crates.io/libgit2-sys/0.6.18 \
crate://crates.io/libssh2-sys/0.2.6 \
crate://crates.io/libz-sys/1.0.18 \
crate://crates.io/log/0.3.9 \
crate://crates.io/log/0.4.1 \
crate://crates.io/log_settings/0.1.1 \
crate://crates.io/lzma-sys/0.1.9 \
crate://crates.io/mac/0.1.1 \
crate://crates.io/markup5ever/0.5.0 \
crate://crates.io/matches/0.1.6 \
crate://crates.io/mdbook/0.0.26 \
crate://crates.io/memchr/0.1.11 \
crate://crates.io/memchr/1.0.2 \
crate://crates.io/memchr/2.0.1 \
crate://crates.io/miniz-sys/0.1.10 \
crate://crates.io/miow/0.2.1 \
crate://crates.io/net2/0.2.31 \
crate://crates.io/nibble_vec/0.0.3 \
crate://crates.io/nix/0.8.1 \
crate://crates.io/num-bigint/0.1.41 \
crate://crates.io/num-complex/0.1.41 \
crate://crates.io/num-integer/0.1.35 \
crate://crates.io/num-iter/0.1.34 \
crate://crates.io/num-rational/0.1.40 \
crate://crates.io/num-traits/0.1.41 \
crate://crates.io/num/0.1.41 \
crate://crates.io/num_cpus/1.7.0 \
crate://crates.io/open/1.2.1 \
crate://crates.io/openssl-probe/0.1.2 \
crate://crates.io/openssl-sys/0.9.23 \
crate://crates.io/openssl/0.9.23 \
crate://crates.io/os_pipe/0.5.1 \
crate://crates.io/owning_ref/0.3.3 \
crate://crates.io/parking_lot/0.5.3 \
crate://crates.io/parking_lot_core/0.2.9 \
crate://crates.io/percent-encoding/1.0.1 \
crate://crates.io/pest/0.3.3 \
crate://crates.io/phf/0.7.21 \
crate://crates.io/phf_codegen/0.7.21 \
crate://crates.io/phf_generator/0.7.21 \
crate://crates.io/phf_shared/0.7.21 \
crate://crates.io/pkg-config/0.3.9 \
crate://crates.io/precomputed-hash/0.1.1 \
crate://crates.io/procedural-masquerade/0.1.5 \
crate://crates.io/psapi-sys/0.1.1 \
crate://crates.io/pulldown-cmark/0.0.15 \
crate://crates.io/pulldown-cmark/0.1.0 \
crate://crates.io/quick-error/1.2.1 \
crate://crates.io/quine-mc_cluskey/0.2.4 \
crate://crates.io/quote/0.3.15 \
crate://crates.io/racer/2.0.12 \
crate://crates.io/radix_trie/0.1.2 \
crate://crates.io/rand/0.3.19 \
crate://crates.io/rayon-core/1.3.0 \
crate://crates.io/rayon/0.9.0 \
crate://crates.io/redox_syscall/0.1.32 \
crate://crates.io/redox_termios/0.1.1 \
crate://crates.io/regex-syntax/0.3.9 \
crate://crates.io/regex-syntax/0.4.1 \
crate://crates.io/regex/0.1.80 \
crate://crates.io/regex/0.2.3 \
crate://crates.io/rls-analysis/0.10.0 \
crate://crates.io/rls-data/0.14.0 \
crate://crates.io/rls-rustc/0.1.1 \
crate://crates.io/rls-span/0.4.0 \
crate://crates.io/rls-vfs/0.4.4 \
crate://crates.io/rustc-demangle/0.1.5 \
crate://crates.io/rustc-serialize/0.3.24 \
crate://crates.io/same-file/0.1.3 \
crate://crates.io/scoped-tls/0.1.0 \
crate://crates.io/scopeguard/0.1.2 \
crate://crates.io/scopeguard/0.3.3 \
crate://crates.io/selectors/0.18.0 \
crate://crates.io/semver-parser/0.7.0 \
crate://crates.io/semver/0.6.0 \
crate://crates.io/semver/0.8.0 \
crate://crates.io/serde/1.0.25 \
crate://crates.io/serde_derive/1.0.25 \
crate://crates.io/serde_derive_internals/0.18.1 \
crate://crates.io/serde_ignored/0.0.4 \
crate://crates.io/serde_json/1.0.8 \
crate://crates.io/shared_child/0.2.1 \
crate://crates.io/shell-escape/0.1.3 \
crate://crates.io/siphasher/0.2.2 \
crate://crates.io/smallvec/0.3.3 \
crate://crates.io/smallvec/0.6.0 \
crate://crates.io/socket2/0.2.4 \
crate://crates.io/stable_deref_trait/1.0.0 \
crate://crates.io/string_cache/0.6.2 \
crate://crates.io/string_cache_codegen/0.4.0 \
crate://crates.io/string_cache_shared/0.3.0 \
crate://crates.io/strsim/0.6.0 \
crate://crates.io/syn/0.11.11 \
crate://crates.io/synom/0.11.3 \
crate://crates.io/synstructure/0.6.1 \
crate://crates.io/syntex_errors/0.52.0 \
crate://crates.io/syntex_pos/0.52.0 \
crate://crates.io/syntex_syntax/0.52.0 \
crate://crates.io/tar/0.4.14 \
crate://crates.io/tempdir/0.3.5 \
crate://crates.io/tendril/0.4.0 \
crate://crates.io/term/0.4.6 \
crate://crates.io/termcolor/0.3.3 \
crate://crates.io/termion/1.5.1 \
crate://crates.io/textwrap/0.9.0 \
crate://crates.io/thread-id/2.0.0 \
crate://crates.io/thread_local/0.2.7 \
crate://crates.io/thread_local/0.3.5 \
crate://crates.io/time/0.1.39 \
crate://crates.io/toml/0.2.1 \
crate://crates.io/toml/0.4.5 \
crate://crates.io/unicode-bidi/0.3.4 \
crate://crates.io/unicode-normalization/0.1.5 \
crate://crates.io/unicode-segmentation/1.2.0 \
crate://crates.io/unicode-width/0.1.4 \
crate://crates.io/unicode-xid/0.0.3 \
crate://crates.io/unicode-xid/0.0.4 \
crate://crates.io/unreachable/0.1.1 \
crate://crates.io/unreachable/1.0.0 \
crate://crates.io/url/1.6.0 \
crate://crates.io/url_serde/0.2.0 \
crate://crates.io/userenv-sys/0.2.0 \
crate://crates.io/utf-8/0.7.1 \
crate://crates.io/utf8-ranges/0.1.3 \
crate://crates.io/utf8-ranges/1.0.0 \
crate://crates.io/vcpkg/0.2.2 \
crate://crates.io/vec_map/0.8.0 \
crate://crates.io/void/1.0.2 \
crate://crates.io/walkdir/1.0.7 \
crate://crates.io/winapi-build/0.1.1 \
crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
crate://crates.io/winapi/0.2.8 \
crate://crates.io/winapi/0.3.4 \
crate://crates.io/wincolor/0.1.4 \
crate://crates.io/ws2_32-sys/0.2.1 \
crate://crates.io/xattr/0.1.11 \
crate://crates.io/xz2/0.1.3 \
crate://crates.io/yaml-rust/0.3.5 \
"
DEPENDS += "rust-llvm (=${PV})"
# 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"
BBCLASSEXTEND = "native"

Some files were not shown because too many files have changed in this diff Show More