58 Commits

Author SHA1 Message Date
Derek Straka
94280a636c Merge pull request #171 from cardoe/pyro-1.20.0
(pyro) upgrade to 1.20.0
2017-10-10 12:06:43 -04:00
Derek Straka
4c764c3447 Always allow the clean-up to succeed
Signed-off-by: Derek Straka <derek@asterius.io>
(cherry picked from commit 34941a25e9)
2017-10-10 08:48:31 -05:00
Johan Anderholm
980f6e2baf rust: Don't specify allocator for >= 1.20.0
System allocator is the default in rust.

(cherry picked from commit 37813c4dff)
2017-10-03 21:51:03 -05:00
Johan Anderholm
633c18c655 libstd: correct path to COPYRIGHT
(cherry picked from commit 2fd83daa46)
2017-10-03 21:50:50 -05:00
Doug Goldstein
13e81c1961 bump to Rust 1.20.0 and Cargo 0.21
(cherry picked from commit 3bf7088579)
2017-10-03 21:50:43 -05:00
Johan Anderholm
ee3fec561a Switch to rustbuild
Switch the build process to using Rust's new build system called
rustbuild. At the same time stop using jemalloc on all platforms and
switch to the system allocator since that was simplier to do.

(cherry picked from commit a4fe235317)
2017-10-03 21:50:30 -05:00
Doug Goldstein
a086ab5c3d cargo: convert to versioned include file
We'll need the prior version of cargo to boot strap ourselves going
forward so include the version info so we can support multiple versions
in the tree.

(cherry picked from commit 1ff41650d5)
2017-10-03 21:50:21 -05:00
Doug Goldstein
f822a1e21f update container to the pyro supported version
(cherry picked from commit 1b8883be12)
2017-10-03 21:49:56 -05:00
Doug Goldstein
c7d40b7e36 cargo{_common}.bbclass: abstract out parts for rustbuild
rustbuild is a cargo based way to build Rust but all of our helper bits
in cargo.bbclass would create a chicken/egg issue with dependencies
since we pull down pre-built binaries and use those for boot strapping.

(cherry picked from commit e31d252eb0)
2017-10-03 21:49:48 -05:00
Doug Goldstein
e4c106a186 cargo.bbclass: include CXXFLAGS for builds
If g++ is invoked when building native bits with cargo we need to
include CXXFLAGS.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
(cherry picked from commit 0cccf8b25c)
2017-10-03 21:49:39 -05:00
Doug Goldstein
f881c0897c rustfmt: bump to 0.8.0 and use cargo-bitbake
Switch to using cargo-bitbake to generate the recipe and bump versions
at the same time.

(cherry picked from commit 758f8459ec)
2017-10-03 21:49:21 -05:00
Doug Goldstein
243bc13191 cargo: convert recipe to cargo-bitbake
Generate the Cargo recipe with cargo-bitbake instead of having a
handcrafted recipe. This should make future version bumps easier.

Three known issues:
- license checksum of the Apache license is a generateme value
  due to the license file having a difference name then what's in
  Cargo.toml.
- branch= value was wrong for tags. Pointed to HEAD instead of the
  branch that the underlying tag commit came from.
- Use https protocol when the repo is publicly accessible.

(cherry picked from commit 398fecb48c)
2017-10-03 21:49:11 -05:00
Doug Goldstein
5b7699b4f0 cargo.bbclass: improve debug note showing paths
There was a bbnote that showed the path to the rustc and cargo binaries
being used but this was not necessarily correct since it didn't use the
exact variables used.

(cherry picked from commit c55fb403f8)
2017-10-03 21:48:59 -05:00
Doug Goldstein
49c512c885 rust: drop custom target finding patch
We shouldn't need to patch rustc to find the target but instead pass the
full path to the target spec. This should solve #138.

(cherry picked from commit 06a138a4a4)
2017-10-03 21:48:45 -05:00
Johan Anderholm
b4527016df cargo: build cargo using cargo and not make
Instead of using the configure script paired with make, use Cargo to
build Cargo. This moves us closer to being compatible with rustbuild.

(cherry picked from commit 3e0f03d12a)
2017-10-03 21:48:33 -05:00
Johan Anderholm
e04de10cfa rust-common: provide C++ wrappers
For similar reasons to the C and linker wrappers, using rustbuild
requires a C++ wrapper to ensure that the right flags that Yocto needs
are passed to the underlying compiler.

(cherry picked from commit e814ede9d9)
2017-10-03 21:48:23 -05:00
Doug Goldstein
f6d973c5ca compiler-rt: drop unused bits
Since a3fe7c75bf this file has been unused and should have been deleted
with that commit.
2017-06-21 11:51:15 -05:00
Derek Straka
4b9d7a8c21 Merge pull request #159 from cardoe/pyro-drop-rust-1.12
drop Rust 1.12.1 and Cargo 0.13
2017-06-20 11:27:45 -04:00
Doug Goldstein
a3fe7c75bf drop Rust 1.12.1 and Cargo 0.13
In keeping with our supported versions release schedule at
https://github.com/meta-rust/meta-rust/wiki this removes 1.12.1 from
pyro.
2017-06-18 11:14:04 -05:00
Doug Goldstein
73730520b3 Merge pull request #157 from meta-rust/fix-pyro-jenkinsfile
Jenkinsfile: update for pyro branch
2017-06-17 09:03:56 -05:00
Derek Straka
9d3b6cd3bb Jenkinsfile: update for pyro branch
Signed-off-by: Derek Straka <derek@asterius.io>
2017-06-16 11:43:56 -04:00
Cody Schafer
4dcaaa8fc9 Merge pull request #156 from bkylerussell/native-fixes
rust-llvm: Drop unnecessary native customization
2017-04-19 15:48:22 -04:00
Kyle Russell
027b7aeeb0 rust-llvm: Fix bad license checksum for 1.15.1 2017-04-19 13:43:47 -04:00
Kyle Russell
8e28683458 rust-llvm: Drop unnecessary native customization
This is already accounted for by the LLVM CMake files, assuming
CMAKE_CROSSCOMPILING is set correctly, which is fixed in the upstream
cmake.bbclass.

http://git.openembedded.org/openembedded-core/commit/?id=bd082c9be6191e67ea1b1bf10ce5e130a3433ab5
2017-04-19 08:21:54 -04:00
Derek Straka
394ad27929 Merge pull request #148 from cardoe/rust-1.15.0
bump to Rust 1.15.1
2017-03-10 16:23:41 -05:00
Doug Goldstein
1820907990 compiler-rt: remove standalone build for Rust 1.15
From Rust 1.15 a standalone build of compiler-rt is no longer necessary.
2017-03-07 20:25:13 -06:00
Doug Goldstein
5a9614f91a bump to Rust 1.15.1 2017-03-07 19:19:00 -06:00
Derek Straka
f851e8f185 Bump to Cargo 0.16.0 for Rust 1.15.x
Signed-off-by: Derek Straka <derek@asterius.io>
2017-03-07 16:30:26 -06:00
Doug Goldstein
bc04c2ea4a libstd-rs: move depends out of the shared file
Technically these dependencies change between versions. It just happens
that these two versions didn't change the dependencies but future
versions will so preemptively make the adjustment.
2017-03-07 14:41:13 -06:00
Derek Straka
64cdd4b714 Update the source paths for each item
The path to the rust source changes from 1.15 so preemptively make
changes to prepare for that.

Signed-off-by: Derek Straka <derek@asterius.io>
Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2017-03-07 14:41:13 -06:00
Doug Goldstein
502fc9b1d1 Merge pull request #149 from derekstraka/add-sstate
Add the ability to use and store build cache artifacts
2017-02-14 13:29:59 -06:00
Derek Straka
0adcc6e0bc Add the ability to use and store build cache artifacts
Signed-off-by: Derek Straka <derek@asterius.io>
2017-02-14 12:44:11 -05:00
Derek Straka
efae1a8bd0 Merge pull request #146 from srwalter/fix-rust-bin
Fix rust-bin.bbclass
2017-02-02 18:27:32 -05:00
Steven Walter
1eb86e935c rust-bin: fix recent breakage
The crate_hash flag is no longer accepted on rust 1.14.  Additionally,
due to the use of wrapper scripts by cargo, we were no longer able to
link correctly due to some link flags getting dropped.  Fix that as well
2017-02-02 10:02:11 -05:00
Doug Goldstein
f0e0b3b7e2 Merge pull request #145 from srwalter/fix-llvm-build-race
rust-llvm.inc: work around build race
2017-01-31 13:04:13 -06:00
Steven Walter
3276afb4ec rust-llvm.inc: work around build race
The way LLVM builds its native utilities is not safe (it runs a
recursive cmake in the same work directory as the main instance).  To
prevent those instances from stepping on each other, we'll build the two
native utilities separately before starting the main build.

Fixes issue #143
2017-01-31 08:23:55 -05:00
Derek Straka
a58ea82720 Merge pull request #142 from cardoe/rust-1.14.0
bump to Rust 1.14.0
2017-01-30 14:40:18 -05:00
Doug Goldstein
22c971c2fa bump to Rust 1.14.0 2017-01-30 10:16:39 -06:00
Doug Goldstein
5d2e062a84 rust: move versioned files into .inc
This way we can bump the versions without big diffs.
2017-01-30 10:14:29 -06:00
Derek Straka
97fcc5db56 rust: update the cpu selection to use PACKAGE_ARCH to ensure older processors can run created executables when building targets that have newer features
Signed-off-by: Derek Straka <derek@asterius.io>
2017-01-04 17:15:07 -05:00
Derek Straka
2a21657363 Merge pull request #135 from cardoe/readme-updates
README: swath of updates to reflect the current state
2017-01-02 14:00:39 -05:00
Doug Goldstein
d867f3d470 fetch: fix check for local ref path
This is a fast case if the slave has a local checkout available so that
it doesn't have to do a full clone. The check unfortunately didn't take
into account all cases and failed on the new slave.
2017-01-02 08:16:28 -06:00
Doug Goldstein
f43eadc581 README: swath of updates to reflect the current state 2016-12-29 11:55:01 -06:00
Derek Straka
bf4cdaf0a7 Merge pull request #133 from cardoe/drop-unused-patches-more
rust: remove unused patches
2016-12-29 08:25:13 -05:00
Doug Goldstein
4ccca55f2f rust: remove unused patches
This patches handle changing the directories that things are installed
in but appear to be unused. They were likely used before rust-cross was
split out to not install files.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2016-12-28 18:42:10 -06:00
Doug Goldstein
e6b757111a Merge pull request #132 from cardoe/drop-unused-patch
rust: drop unnecessary patch
2016-12-28 10:28:58 -06:00
Doug Goldstein
c19badf635 rust: drop unnecessary patch
Not sure what version this patch appears to have become unnecessary but
I verified it by checking the output in
build/tmp/sstate-control/manifest-x86_64-rust-native.populate_sysroot
and the installed files and their paths didn't change with and without
this patch.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
2016-12-27 11:36:36 -06:00
Doug Goldstein
247bb57c84 scripts/fetch: add missing die statement
Noticed this while the Yocto Project's git server was down for
maintenance.
2016-12-27 10:47:03 -06:00
Leon Anavi
abe20ca06f compiler-rt: fix toolchain installer
Fix building a toolchain installer with bitbake
-c populate_sdk in packages compiler-rt,
compiler-rt-dev and compiler-rt-staticdev.

Signed-off-by: Leon Anavi <leon.anavi@konsulko.com>
(cherry picked from commit fcbebdf58f)
2016-12-27 00:03:15 -06:00
Derek Straka
185e29e4e1 Merge pull request #128 from cardoe/for-pyro
drop Rust 1.10.0
2016-12-08 10:37:04 -05:00
Doug Goldstein
94aa1405e3 rustfmt: update to use Cargo 0.13.0 fetching 2016-12-07 15:14:10 -06:00
Doug Goldstein
04bd03be1e libstd-rs: update to use Cargo 0.13.0 fetching 2016-12-07 15:14:10 -06:00
Doug Goldstein
84af8005f3 cargo: update to use Cargo 0.13.0 fetching 2016-12-07 15:14:10 -06:00
Doug Goldstein
339cc787cc drop the old fetch behavior for pre Cargo 0.13.0
This behavior is flakey and doesn't work from Cargo 0.13.0 and newer
which aren't part of this repo anymore.
2016-12-07 08:52:03 -06:00
Doug Goldstein
ac5d169623 Remove Rust 1.10.0 / Cargo 0.11.0 2016-12-07 08:51:10 -06:00
Doug Goldstein
c05b6b4c30 Merge pull request #117 from derekstraka/update-getvar
getVar will expand by default, so the 'True' option is no longer required
2016-12-07 08:50:09 -06:00
Derek Straka
52c0f97ff6 getVar will expand by default, so the 'True' option is no longer required
Signed-off-by: Derek Straka <derek@asterius.io>
2016-12-06 16:08:41 -05:00
Derek Straka
85d411c81c Jenkinsfile: swap back to using master
Signed-off-by: Derek Straka <derek@asterius.io>
2016-12-06 16:07:46 -05:00
75 changed files with 1099 additions and 2402 deletions

5
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 morty"
sh "GIT_LOCAL_REF_DIR=/srv/git-cache/ ./scripts/fetch.sh pyro"
}
stage("build $machine") {
sh "MACHINE=${machine} ./scripts/build.sh"
@@ -24,6 +24,9 @@ for (int i = 0; i < targets.size(); i++) {
echo "Caught: ${e}"
throw e
} finally {
stage("push build cache $machine") {
sh "./scripts/publish-build-cache.sh pyro"
}
stage("cleanup $machine") {
sh "./scripts/cleanup-env.sh"
deleteDir()

View File

@@ -5,17 +5,19 @@ This OpenEmbedded layer provides the rust compiler, tools for building packages
## What works:
- Building rust-native, rust-cross, rust-hello-world, cargo-native
- Building `rust-native` and `cargo-native`
- Building Rust based projects with Cargo for the TARGET
- e.g. `rustfmt` which is used by the CI system
- `-buildsdk` and `-crosssdk` packages
## What doesn't:
- Using anything but x86_64 as the build environment
- Probably some of the untested things
- rust (built for target) issue #81
## What's untested:
- rust (built for target)
- cargo (built for target)
## Building a rust package
@@ -30,39 +32,24 @@ 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.
## Common issues when packaging things using cargo
You may run into errors similar to:
```
| src/lib.rs:12:1: 12:35 error: can't find crate for `ffi`
| src/lib.rs:12 extern crate "openssl-sys" as ffi;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```
Where a "-sys" crate (or other crate) is not found. These are typically caused
by a crate's Cargo.toml including triplet-specific dependencies and then using
the crate based on a feature (most often, `#[cfg(unix)]`). Until cargo and it's
ecosystem get their act together, you'll need to supply patches to the
misbehaving packages. See `recipies/cargo/cargo_*.bb` for an example of how to
do this.
NOTE: You will have to edit the generated recipe based on the comments
contained within it
## TODO
- -crosssdk and -buildsdk packages
- Upstream local rustc patches for libdir and bindir support
## Pitfalls
- TARGET_SYS _must_ be different from BUILD_SYS. This is due to the way configuration options are tracked for different targets.
- 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
On the host:
unknown
- Any `-sys` packages your project might need must have RDEPENDs for
the native library.
On the target:
unknown
- Any `-sys` packages your project might need must have RDEPENDs for
the native library.
## Maintainer(s) & Patch policy
@@ -74,6 +61,8 @@ 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 cooresponds to the OpenEmbedded policy for other meta layers.
More info can be seen on the wiki.
## Copyright
MIT OR Apache-2.0 - Same as rust

View File

@@ -1,13 +1,13 @@
# add crate fetch support
inherit crate-fetch
inherit rust-common
##
## Purpose:
## This class is used by any recipes that are built using
## Cargo.
inherit cargo_common
# the binary we will use
CARGO = "cargo"
# Where we download our registry and dependencies to
export CARGO_HOME = "${WORKDIR}/cargo_home"
# We need cargo to compile for the target
BASEDEPENDS_append = " cargo-native"
@@ -22,71 +22,23 @@ B = "${S}"
# where the issue occured
export RUST_BACKTRACE = "1"
# The pkg-config-rs library used by cargo build scripts disables itself when
# cross compiling unless this is defined. We set up pkg-config appropriately
# for cross compilation, so tell it we know better than it.
export PKG_CONFIG_ALLOW_CROSS = "1"
cargo_do_configure () {
mkdir -p ${CARGO_HOME}
echo "paths = [" > ${CARGO_HOME}/config
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
[source.bitbake]
directory = "${CARGO_HOME}/bitbake"
[source.crates-io]
replace-with = "bitbake"
local-registry = "/nonexistant"
EOF
echo "[target.${HOST_SYS}]" >> ${CARGO_HOME}/config
echo "linker = '${RUST_TARGET_CCLD}'" >> ${CARGO_HOME}/config
if [ "${HOST_SYS}" != "${BUILD_SYS}" ]; then
echo "[target.${BUILD_SYS}]" >> ${CARGO_HOME}/config
echo "linker = '${RUST_BUILD_CCLD}'" >> ${CARGO_HOME}/config
fi
}
RUSTFLAGS ??= ""
CARGO_BUILD_FLAGS = "-v --target ${HOST_SYS} --release"
RUST_TARGET_PATH = "${STAGING_LIBDIR_NATIVE}/rustlib"
# This is based on the content of CARGO_BUILD_FLAGS and generally will need to
# change if CARGO_BUILD_FLAGS changes.
CARGO_TARGET_SUBDIR="${HOST_SYS}/release"
oe_cargo_build () {
export RUSTFLAGS="${RUSTFLAGS}"
bbnote "cargo = $(which cargo)"
bbnote "rustc = $(which rustc)"
export RUST_TARGET_PATH="${RUST_TARGET_PATH}"
bbnote "cargo = $(which ${CARGO})"
bbnote "rustc = $(which ${RUSTC})"
bbnote "${CARGO} build ${CARGO_BUILD_FLAGS} $@"
"${CARGO}" build ${CARGO_BUILD_FLAGS} "$@"
}
oe_cargo_fix_env () {
export CC="${RUST_TARGET_CC}"
export CFLAGS="${CFLAGS}"
export AR="${AR}"
export TARGET_CC="${RUST_TARGET_CC}"
export TARGET_CFLAGS="${CFLAGS}"
export TARGET_AR="${AR}"
export HOST_CC="${RUST_BUILD_CC}"
export HOST_CFLAGS="${BUILD_CFLAGS}"
export HOST_AR="${BUILD_AR}"
}
EXTRA_OECARGO_PATHS ??= ""
cargo_do_compile () {
# prevent cargo from trying to fetch down new data
mkdir -p "${WORKDIR}/cargo_home/registry/index/github.com-1ecc6299db9ec823"
touch "${WORKDIR}/cargo_home/registry/index/github.com-1ecc6299db9ec823/.cargo-index-lock"
oe_cargo_fix_env
oe_cargo_build
}
@@ -109,4 +61,4 @@ cargo_do_install () {
fi
}
EXPORT_FUNCTIONS do_configure do_compile do_install
EXPORT_FUNCTIONS do_compile do_install

View File

@@ -0,0 +1,70 @@
##
## Purpose:
## This class is to support building with cargo. It
## must be different than cargo.bbclass because Rust
## now builds with Cargo but cannot use cargo.bbclass
## due to dependencies and assumptions in cargo.bbclass
## that Rust & Cargo are already installed. So this
## is used by cargo.bbclass and Rust
##
# add crate fetch support
inherit crate-fetch
inherit rust-common
# Where we download our registry and dependencies to
export CARGO_HOME = "${WORKDIR}/cargo_home"
# The pkg-config-rs library used by cargo build scripts disables itself when
# cross compiling unless this is defined. We set up pkg-config appropriately
# for cross compilation, so tell it we know better than it.
export PKG_CONFIG_ALLOW_CROSS = "1"
cargo_common_do_configure () {
mkdir -p ${CARGO_HOME}
echo "paths = [" > ${CARGO_HOME}/config
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
[source.bitbake]
directory = "${CARGO_HOME}/bitbake"
[source.crates-io]
replace-with = "bitbake"
local-registry = "/nonexistant"
EOF
echo "[target.${HOST_SYS}]" >> ${CARGO_HOME}/config
echo "linker = '${RUST_TARGET_CCLD}'" >> ${CARGO_HOME}/config
if [ "${HOST_SYS}" != "${BUILD_SYS}" ]; then
echo "[target.${BUILD_SYS}]" >> ${CARGO_HOME}/config
echo "linker = '${RUST_BUILD_CCLD}'" >> ${CARGO_HOME}/config
fi
}
oe_cargo_fix_env () {
export CC="${RUST_TARGET_CC}"
export CXX="${RUST_TARGET_CXX}"
export CFLAGS="${CFLAGS}"
export CXXFLAGS="${CXXFLAGS}"
export AR="${AR}"
export TARGET_CC="${RUST_TARGET_CC}"
export TARGET_CXX="${RUST_TARGET_CXX}"
export TARGET_CFLAGS="${CFLAGS}"
export TARGET_CFLAGS="${CXXFLAGS}"
export TARGET_AR="${AR}"
export HOST_CC="${RUST_BUILD_CC}"
export HOST_CXX="${RUST_BUILD_CXX}"
export HOST_CFLAGS="${BUILD_CFLAGS}"
export HOST_CXXFLAGS="${BUILD_CXXFLAGS}"
export HOST_AR="${BUILD_AR}"
}
EXTRA_OECARGO_PATHS ??= ""
EXPORT_FUNCTIONS do_configure

View File

@@ -3,8 +3,7 @@ inherit rust
DEPENDS_append = " patchelf-native"
RDEPENDS_${PN} += "${RUSTLIB_DEP}"
RUSTFLAGS += "-C crate_hash=${BB_TASKHASH}"
RUSTC_ARCHFLAGS += "-C opt-level=3 -g -L ${STAGING_DIR_HOST}/${rustlibdir}"
RUSTC_ARCHFLAGS += "-C opt-level=3 -g -L ${STAGING_DIR_HOST}/${rustlibdir} -C link-args=--sysroot=${STAGING_DIR_HOST}"
EXTRA_OEMAKE += 'RUSTC_ARCHFLAGS="${RUSTC_ARCHFLAGS}"'
# Some libraries alias with the standard library but libstd is configured to
@@ -17,9 +16,9 @@ OVERLAP_LIBS = "\
rand \
"
def get_overlap_deps(d):
deps = d.getVar("DEPENDS", True).split()
deps = d.getVar("DEPENDS").split()
overlap_deps = []
for o in d.getVar("OVERLAP_LIBS", True).split():
for o in d.getVar("OVERLAP_LIBS").split():
l = len([o for dep in deps if (o + '-rs' in dep)])
if l > 0:
overlap_deps.append(o)
@@ -31,7 +30,7 @@ OVERLAP_DEPS = "${@get_overlap_deps(d)}"
RUSTC_PREFER_DYNAMIC = "-C prefer-dynamic"
RUSTC_FLAGS += "${RUSTC_PREFER_DYNAMIC}"
CRATE_NAME ?= "${@d.getVar('BPN', True).replace('-rs', '').replace('-', '_')}"
CRATE_NAME ?= "${@d.getVar('BPN').replace('-rs', '').replace('-', '_')}"
BINNAME ?= "${BPN}"
LIBNAME ?= "lib${CRATE_NAME}-rs"
CRATE_TYPE ?= "dylib"

View File

@@ -5,7 +5,7 @@ FILES_${PN}-dev += "${rustlibdir}/*.rlib"
FILES_${PN}-dbg += "${rustlibdir}/.debug"
RUSTLIB = "-L ${STAGING_LIBDIR}/rust"
RUSTFLAGS += "-C rpath ${RUSTLIB}"
RUSTFLAGS += "${RUSTLIB}"
RUSTLIB_DEP ?= "libstd-rs"
# Responsible for taking Yocto triples and converting it to Rust triples
@@ -18,11 +18,11 @@ def rust_base_triple(d, thing):
Note that os is assumed to be some linux form
'''
arch = d.getVar('{}_ARCH'.format(thing), True)
arch = d.getVar('{}_ARCH'.format(thing))
# All the Yocto targets are Linux and are 'unknown'
vendor = "-unknown"
os = d.getVar('{}_OS'.format(thing), True)
libc = d.getVar('TCLIBC', True)
os = d.getVar('{}_OS'.format(thing))
libc = d.getVar('TCLIBC')
# Prefix with a dash and convert glibc -> gnu
if libc == "glibc":
@@ -74,9 +74,11 @@ RUST_TARGET_SYS = "${@rust_base_triple(d, 'TARGET')}"
# use those commands based on the prefix.
WRAPPER_DIR = "${WORKDIR}/wrapper"
RUST_BUILD_CC = "${WRAPPER_DIR}/build-rust-cc"
RUST_BUILD_CXX = "${WRAPPER_DIR}/build-rust-cxx"
RUST_BUILD_CCLD = "${WRAPPER_DIR}/build-rust-ccld"
RUST_BUILD_AR = "${WRAPPER_DIR}/build-rust-ar"
RUST_TARGET_CC = "${WRAPPER_DIR}/target-rust-cc"
RUST_TARGET_CXX = "${WRAPPER_DIR}/target-rust-cxx"
RUST_TARGET_CCLD = "${WRAPPER_DIR}/target-rust-ccld"
RUST_TARGET_AR = "${WRAPPER_DIR}/target-rust-ar"
@@ -97,15 +99,19 @@ create_wrapper () {
do_rust_create_wrappers () {
mkdir -p "${WRAPPER_DIR}"
# Yocto Build / Rust Host compiler
# Yocto Build / Rust Host C compiler
create_wrapper "${RUST_BUILD_CC}" "${BUILD_CC}"
# Yocto Build / Rust Host C++ compiler
create_wrapper "${RUST_BUILD_CXX}" "${BUILD_CXX}"
# Yocto Build / Rust Host linker
create_wrapper "${RUST_BUILD_CCLD}" "${BUILD_CCLD}" "${BUILD_LDFLAGS}"
# Yocto Build / Rust Host archiver
create_wrapper "${RUST_BUILD_AR}" "${BUILD_AR}"
# Yocto Target / Rust Target compiler
# Yocto Target / Rust Target C compiler
create_wrapper "${RUST_TARGET_CC}" "${CC}"
# Yocto Target / Rust Target C++ compiler
create_wrapper "${RUST_TARGET_CXX}" "${CXX}"
# Yocto Target / Rust Target linker
create_wrapper "${RUST_TARGET_CCLD}" "${CCLD}" "${LDFLAGS}"
# Yocto Target / Rust Target archiver

View File

@@ -8,8 +8,8 @@ def rust_base_dep(d):
# Taken from meta/classes/base.bbclass `base_dep_prepend` and modified to
# use rust instead of gcc
deps = ""
if not d.getVar('INHIBIT_DEFAULT_RUST_DEPS', True):
if (d.getVar('HOST_SYS', True) != d.getVar('BUILD_SYS', True)):
if not d.getVar('INHIBIT_DEFAULT_RUST_DEPS'):
if (d.getVar('HOST_SYS') != d.getVar('BUILD_SYS')):
deps += " virtual/${TARGET_PREFIX}rust ${RUSTLIB_DEP}"
else:
deps += " rust-native"

View File

@@ -220,7 +220,7 @@ BB_DISKMON_DIRS = "\
#file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \
#file://.* file:///some/local/dir/sstate/PATH"
SSTATE_MIRRORS ?= "file://.* http://build-cache.asterius.io/sstate/PATH;downloadfilename=PATH \n"
SSTATE_MIRRORS ?= "file://.* http://build-cache.asterius.io/master/sstate-cache/PATH;downloadfilename=PATH \n"
SOURCE_MIRROR_URL ?= "http://build-cache.asterius.io/downloads/"
INHERIT += "own-mirrors rm_work"

View File

@@ -35,21 +35,6 @@ class Crate(Wget):
"""Class to fetch crates via wget"""
def _cargo_path(self, rootdir, component):
# TODO: make this less brittle
# This can go away entirely once we can build a cargo that supports source-replacement
repo = "github.com-1ecc6299db9ec823"
return os.path.join(rootdir, "cargo_home", "registry", component, repo)
def _cargo_src_path(self, rootdir):
return self._cargo_path(rootdir, "src")
def _cargo_index_path(self, rootdir):
return self._cargo_path(rootdir, "index")
def _cargo_cache_path(self, rootdir):
return self._cargo_path(rootdir, "cache")
def _cargo_bitbake_path(self, rootdir):
return os.path.join(rootdir, "cargo_home", "bitbake")
@@ -57,7 +42,7 @@ class Crate(Wget):
"""
Check to see if a given url is for this fetcher
"""
return ud.type in ['crate', 'crate-index']
return ud.type in ['crate']
def recommends_checksum(self, urldata):
return False
@@ -69,8 +54,6 @@ class Crate(Wget):
if ud.type == 'crate':
self._crate_urldata_init(ud, d)
elif ud.type == 'crate-index':
self._index_urldata_init(ud, d)
super(Crate, self).urldata_init(ud, d)
@@ -102,71 +85,15 @@ class Crate(Wget):
logger.debug(2, "Fetching %s to %s" % (ud.url, ud.parm['downloadfilename']))
def _index_urldata_init(self, ud, d):
"""
Sets up the download for the cargo index
"""
# URL syntax is: crate-index://REV
# break the URL apart by /
parts = ud.url.split('/')
if len(parts) != 4:
raise bb.fetch2.ParameterError("Invalid URL: Must be crate-index://HOST/REV", ud.url)
# last field is the rev
rev = parts[3]
host = parts[2]
if host == 'crates.io':
host = 'github.com/rust-lang/crates.io-index'
ud.url = "https://%s/archive/%s.tar.gz" % (host, rev)
ud.parm['downloadfilename'] = 'cargo-index-%s.tar.gz' % rev
ud.parm['name'] = "index"
logger.debug(2, "Fetching crate index %s" % ud.url)
def unpack(self, ud, rootdir, d):
"""
Uses the crate to build the necessary paths for cargo to utilize it
"""
if ud.type == 'crate-index':
return self._index_unpack(ud, rootdir, d)
elif ud.type == 'crate':
if ud.type == 'crate':
return self._crate_unpack(ud, rootdir, d)
else:
super(Crate, self).unpack(ud, rootdir, d)
def _index_unpack(self, ud, rootdir, d):
"""
Unpacks the index
"""
thefile = ud.localpath
cargo_index = self._cargo_index_path(rootdir)
cmd = "tar -xz --no-same-owner --strip-components 1 -f %s -C %s" % (thefile, cargo_index)
# change to the rootdir to unpack but save the old working dir
save_cwd = os.getcwd()
os.chdir(rootdir)
# ensure we've got these paths made
bb.utils.mkdirhier(cargo_index)
# path it
path = d.getVar('PATH', True)
if path:
cmd = "PATH=\"%s\" %s" % (path, cmd)
bb.note("Unpacking %s to %s/" % (thefile, cargo_index))
ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True)
os.chdir(save_cwd)
if ret != 0:
raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), ud.url)
def _crate_unpack(self, ud, rootdir, d):
"""
Unpacks a crate
@@ -180,12 +107,10 @@ class Crate(Wget):
save_cwd = os.getcwd()
os.chdir(rootdir)
pn = d.getVar('BPN', True)
pn = d.getVar('BPN')
if pn == ud.parm.get('name'):
cmd = "tar -xz --no-same-owner -f %s" % thefile
else:
self._crate_unpack_old_layout(ud, rootdir, d)
cargo_bitbake = self._cargo_bitbake_path(rootdir)
cmd = "tar -xz --no-same-owner -f %s -C %s" % (thefile, cargo_bitbake)
@@ -202,7 +127,7 @@ class Crate(Wget):
metadata['package'] = tarhash
# path it
path = d.getVar('PATH', True)
path = d.getVar('PATH')
if path:
cmd = "PATH=\"%s\" %s" % (path, cmd)
bb.note("Unpacking %s to %s/" % (thefile, os.getcwd()))
@@ -222,34 +147,3 @@ class Crate(Wget):
mdpath = os.path.join(bbpath, cratepath, mdfile)
with open(mdpath, "w") as f:
json.dump(metadata, f)
def _crate_unpack_old_layout(self, ud, rootdir, d):
"""
Unpacks a crate in the old location that tried to emulate
the Cargo registry layout.
"""
thefile = ud.localpath
cargo_src = self._cargo_src_path(rootdir)
cargo_cache = self._cargo_cache_path(rootdir)
cmd = "tar -xz --no-same-owner -f %s -C %s" % (thefile, cargo_src)
# ensure we've got these paths made
bb.utils.mkdirhier(cargo_cache)
bb.utils.mkdirhier(cargo_src)
bb.note("Copying %s to %s/" % (thefile, cargo_cache))
shutil.copy(thefile, cargo_cache)
# path it
path = d.getVar('PATH', True)
if path:
cmd = "PATH=\"%s\" %s" % (path, cmd)
bb.note("Unpacking %s to %s/" % (thefile, os.getcwd()))
ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True)
if ret != 0:
raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), ud.url)

View File

@@ -0,0 +1,11 @@
CARGO_SNAPSHOT = "2016-09-01/cargo-nightly-x86_64-unknown-linux-gnu.tar.gz;downloadfilename=cargo-nightly-x86_64-unknown-linux-gnu-2016-09-01.tar.gz"
SRC_URI[cargo-snapshot.md5sum] = "d41ebf79290a7c9c9e5df87cb27e5091"
SRC_URI[cargo-snapshot.sha256sum] = "365e5cad79512d244b8ced32f8e5b86a710fc6c17f0d0f5f744b8058ef6dc756"
SRC_URI += "\
https://static.rust-lang.org/cargo-dist/${CARGO_SNAPSHOT};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-nightly-${RUST_BUILD_SYS}/cargo/bin/cargo"

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

@@ -1,4 +0,0 @@
CARGO_SNAPSHOT = "2016-09-01/cargo-nightly-x86_64-unknown-linux-gnu.tar.gz;downloadfilename=cargo-nightly-x86_64-unknown-linux-gnu-2016-09-01.tar.gz"
SRC_URI[md5sum] = "d41ebf79290a7c9c9e5df87cb27e5091"
SRC_URI[sha256sum] = "365e5cad79512d244b8ced32f8e5b86a710fc6c17f0d0f5f744b8058ef6dc756"

View File

@@ -1,59 +1,12 @@
inherit cargo
inherit patch
SUMMARY = "Cargo downloads your Rust project's dependencies and builds your project"
HOMEPAGE = "http://crates.io"
SECTION = "devel"
LICENSE = "MIT | Apache-2.0"
DEPENDS = "openssl zlib libgit2 curl ca-certificates libssh2"
CARGO_INDEX_COMMIT = "6127fc24b0b6fe73fe4d339817fbf000b9a798a2"
SRC_URI = "\
http://static-rust-lang-org.s3.amazonaws.com/cargo-dist/${CARGO_SNAPSHOT} \
crate-index://crates.io/${CARGO_INDEX_COMMIT} \
LIC_FILES_CHKSUM += " \
file://LICENSE-THIRD-PARTY;md5=892ea68b169e69cfe75097fc38a15b56 \
"
B = "${S}"
# Used in libgit2-sys's build.rs, needed for pkg-config to be used
export LIBGIT2_SYS_USE_PKG_CONFIG = "1"
# cargo's configure doesn't recognize --disable-static, so remove it.
DISABLE_STATIC = ""
do_configure () {
"${S}/configure" \
"--prefix=${prefix}" \
"--build=${BUILD_SYS}" \
"--host=${HOST_SYS}" \
"--target=${TARGET_SYS}" \
"--localstatedir=${localstatedir}" \
"--sysconfdir=${sysconfdir}" \
"--datadir=${datadir}" \
"--infodir=${infodir}" \
"--mandir=${mandir}" \
"--libdir=${libdir}" \
"--disable-verify-install" \
${EXTRA_OECONF} \
|| die "Could not configure cargo"
cargo_do_configure
}
do_compile () {
oe_cargo_fix_env
rm -rf target/snapshot
mkdir -p target
cp -R ${WORKDIR}/cargo-nightly-x86_64-unknown-linux-gnu/cargo target/snapshot
oe_runmake VERBOSE=1
}
do_install () {
oe_runmake prepare-image-${TARGET_SYS} IMGDIR_${TARGET_SYS}="${D}${prefix}"
}
BBCLASSEXTEND = "native"

View File

@@ -1,105 +0,0 @@
require cargo-snapshot.inc
require cargo.inc
SRC_URI += " \
git://github.com/rust-lang/cargo.git;protocol=https;name=cargo \
file://0001-disable-cargo-snapshot-fetch.patch \
file://0001-Never-update-the-registry-index.patch \
crate://crates.io/advapi32-sys/0.1.2 \
crate://crates.io/bufstream/0.1.1 \
crate://crates.io/crossbeam/0.2.8 \
crate://crates.io/docopt/0.6.78 \
crate://crates.io/env_logger/0.3.2 \
crate://crates.io/filetime/0.1.10 \
crate://crates.io/flate2/0.2.13 \
crate://crates.io/fs2/0.2.3 \
crate://crates.io/glob/0.2.11 \
crate://crates.io/hamcrest/0.1.0 \
crate://crates.io/kernel32-sys/0.2.1 \
crate://crates.io/libc/0.2.8 \
crate://crates.io/log/0.3.5 \
crate://crates.io/num_cpus/0.2.11 \
crate://crates.io/regex/0.1.58 \
crate://crates.io/rustc-serialize/0.3.18 \
crate://crates.io/tar/0.4.5 \
crate://crates.io/tempdir/0.3.4 \
crate://crates.io/term/0.4.4 \
crate://crates.io/toml/0.1.28 \
crate://crates.io/url/1.1.0 \
crate://crates.io/winapi/0.2.6 \
crate://crates.io/semver/0.2.3 \
crate://crates.io/regex-syntax/0.3.0 \
crate://crates.io/utf8-ranges/0.1.3 \
crate://crates.io/gcc/0.3.26 \
crate://crates.io/unicode-normalization/0.1.2 \
crate://crates.io/libz-sys/1.0.2 \
crate://crates.io/rand/0.3.14 \
crate://crates.io/user32-sys/0.1.2 \
crate://crates.io/idna/0.1.0 \
crate://crates.io/strsim/0.3.0 \
crate://crates.io/matches/0.1.2 \
crate://crates.io/cmake/0.1.16 \
crate://crates.io/gdi32-sys/0.1.1 \
crate://crates.io/bitflags/0.1.1 \
crate://crates.io/unicode-bidi/0.2.3 \
crate://crates.io/pkg-config/0.3.8 \
crate://crates.io/winapi-build/0.1.1 \
crate://crates.io/memchr/0.1.10 \
crate://crates.io/pnacl-build-helper/1.4.10 \
crate://crates.io/nom/1.2.2 \
crate://crates.io/num/0.1.31 \
crate://crates.io/uuid/0.2.3 \
crate://crates.io/aho-corasick/0.5.1 \
crate://crates.io/libressl-pnacl-sys/2.1.6 \
crate://crates.io/miniz-sys/0.1.7 \
crate://crates.io/openssl-sys/0.7.8 \
crate://crates.io/url/0.5.10 \
"
# Compatible with Rust 1.10.0
# https://static.rust-lang.org/dist/channel-rust-1.10.0.toml
SRCREV_cargo = "259324cd8f9bb6e1068a3a2b77685e90fda3e3b6"
S = "${WORKDIR}/git"
LIC_FILES_CHKSUM ="\
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
file://LICENSE-THIRD-PARTY;md5=892ea68b169e69cfe75097fc38a15b56 \
"
## curl-rust
SRC_URI += "\
git://github.com/carllerche/curl-rust.git;protocol=https;destsuffix=curl-rust;name=curl-rust \
file://curl-rust/0001-curl-sys-avoid-explicitly-linking-in-openssl.patch;patchdir=../curl-rust \
file://curl-rust/0002-remove-per-triple-deps-on-openssl-sys.patch;patchdir=../curl-rust \
"
# 0.2.19 / -sys 0.1.34
SRCREV_curl-rust = "45b8cb56fbed45f828f96bdd8c286b2b3a8a26cb"
SRCREV_FORMAT .= "_curl-rust"
EXTRA_OECARGO_PATHS += "${WORKDIR}/curl-rust"
## ssh2-rs
SRC_URI += "\
git://github.com/alexcrichton/ssh2-rs.git;protocol=https;name=ssh2-rs;destsuffix=ssh2-rs \
file://ssh2-rs/0001-libssh2-sys-avoid-explicitly-linking-in-openssl.patch;patchdir=../ssh2-rs \
"
# 0.2.11 / -sys 0.1.37
SRCREV_ssh2-rs = "ced77751cb780d0725a3411bd588c5a26ea79953"
SRCREV_FORMAT .= "_ssh2-rs"
EXTRA_OECARGO_PATHS += "${WORKDIR}/ssh2-rs"
## git2-rs
SRC_URI += "\
git://github.com/alexcrichton/git2-rs.git;protocol=https;name=git2-rs;destsuffix=git2-rs \
file://git2-rs/0001-libgit2-sys-avoid-blessed-triples.patch;patchdir=../git2-rs \
"
# 0.4.3 / -sys 0.4.2
SRCREV_git2-rs = "cd14fc7801e70d3b26a4e7e5d94785af1f7e9e58"
SRCREV_FORMAT .= "_git2-rs"
EXTRA_OECARGO_PATHS += "${WORKDIR}/git2-rs"

View File

@@ -1,86 +0,0 @@
require cargo-snapshot.inc
require cargo.inc
SRC_URI += " \
git://github.com/rust-lang/cargo.git;protocol=https;name=cargo \
crate://crates.io/advapi32-sys/0.2.0 \
crate://crates.io/aho-corasick/0.5.2 \
crate://crates.io/bitflags/0.1.1 \
crate://crates.io/bitflags/0.7.0 \
crate://crates.io/bufstream/0.1.2 \
crate://crates.io/cfg-if/0.1.0 \
crate://crates.io/cmake/0.1.17 \
crate://crates.io/crossbeam/0.2.9 \
crate://crates.io/curl-sys/0.2.1 \
crate://crates.io/curl/0.3.2 \
crate://crates.io/docopt/0.6.82 \
crate://crates.io/env_logger/0.3.4 \
crate://crates.io/filetime/0.1.10 \
crate://crates.io/flate2/0.2.14 \
crate://crates.io/fs2/0.2.5 \
crate://crates.io/gcc/0.3.32 \
crate://crates.io/gdi32-sys/0.2.0 \
crate://crates.io/git2-curl/0.5.0 \
crate://crates.io/git2/0.4.4 \
crate://crates.io/glob/0.2.11 \
crate://crates.io/hamcrest/0.1.0 \
crate://crates.io/idna/0.1.0 \
crate://crates.io/kernel32-sys/0.2.2 \
crate://crates.io/lazy_static/0.2.1 \
crate://crates.io/libc/0.2.15 \
crate://crates.io/libgit2-sys/0.4.5 \
crate://crates.io/libressl-pnacl-sys/2.1.6 \
crate://crates.io/libssh2-sys/0.1.38 \
crate://crates.io/libz-sys/1.0.5 \
crate://crates.io/log/0.3.6 \
crate://crates.io/matches/0.1.2 \
crate://crates.io/memchr/0.1.11 \
crate://crates.io/miniz-sys/0.1.7 \
crate://crates.io/miow/0.1.3 \
crate://crates.io/net2/0.2.26 \
crate://crates.io/nom/1.2.4 \
crate://crates.io/num-bigint/0.1.33 \
crate://crates.io/num-complex/0.1.33 \
crate://crates.io/num-integer/0.1.32 \
crate://crates.io/num-iter/0.1.32 \
crate://crates.io/num-rational/0.1.32 \
crate://crates.io/num-traits/0.1.34 \
crate://crates.io/num/0.1.34 \
crate://crates.io/num_cpus/1.0.0 \
crate://crates.io/openssl-sys-extras/0.7.14 \
crate://crates.io/openssl-sys/0.7.14 \
crate://crates.io/openssl/0.7.14 \
crate://crates.io/pkg-config/0.3.8 \
crate://crates.io/pnacl-build-helper/1.4.10 \
crate://crates.io/rand/0.3.14 \
crate://crates.io/regex-syntax/0.3.4 \
crate://crates.io/regex/0.1.73 \
crate://crates.io/rustc-serialize/0.3.19 \
crate://crates.io/semver/0.2.3 \
crate://crates.io/strsim/0.3.0 \
crate://crates.io/tar/0.4.8 \
crate://crates.io/tempdir/0.3.5 \
crate://crates.io/term/0.4.4 \
crate://crates.io/thread-id/2.0.0 \
crate://crates.io/thread_local/0.2.6 \
crate://crates.io/toml/0.2.0 \
crate://crates.io/unicode-bidi/0.2.3 \
crate://crates.io/unicode-normalization/0.1.2 \
crate://crates.io/url/1.2.0 \
crate://crates.io/user32-sys/0.2.0 \
crate://crates.io/utf8-ranges/0.1.3 \
crate://crates.io/winapi-build/0.1.1 \
crate://crates.io/winapi/0.2.8 \
crate://crates.io/ws2_32-sys/0.2.1 \
"
# Compatible with Rust 1.12.1
# https://static.rust-lang.org/dist/channel-rust-1.12.1.toml
SRCREV_cargo = "109cb7c33d426044d141457049bd0fffaca1327c"
S = "${WORKDIR}/git"
LIC_FILES_CHKSUM ="\
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
file://LICENSE-THIRD-PARTY;md5=892ea68b169e69cfe75097fc38a15b56 \
"

View File

@@ -0,0 +1,103 @@
# 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.16.0"
SRC_URI += "git://git@github.com/rust-lang/cargo.git;protocol=https;branch=rust-1.15.1"
SRCREV = "6e0c18cccc8b0c06fba8a8d76486f81a792fb420"
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/bitflags/0.7.0 \
crate://crates.io/bufstream/0.1.2 \
crate://crates.io/cfg-if/0.1.0 \
crate://crates.io/cmake/0.1.19 \
crate://crates.io/crossbeam/0.2.10 \
crate://crates.io/curl-sys/0.3.6 \
crate://crates.io/curl/0.4.1 \
crate://crates.io/docopt/0.6.86 \
crate://crates.io/env_logger/0.3.5 \
crate://crates.io/filetime/0.1.10 \
crate://crates.io/flate2/0.2.14 \
crate://crates.io/fs2/0.3.0 \
crate://crates.io/gcc/0.3.39 \
crate://crates.io/gdi32-sys/0.2.0 \
crate://crates.io/git2-curl/0.7.0 \
crate://crates.io/git2/0.6.3 \
crate://crates.io/glob/0.2.11 \
crate://crates.io/hamcrest/0.1.1 \
crate://crates.io/idna/0.1.0 \
crate://crates.io/kernel32-sys/0.2.2 \
crate://crates.io/lazy_static/0.2.2 \
crate://crates.io/libc/0.2.18 \
crate://crates.io/libgit2-sys/0.6.5 \
crate://crates.io/libssh2-sys/0.2.4 \
crate://crates.io/libz-sys/1.0.10 \
crate://crates.io/log/0.3.6 \
crate://crates.io/matches/0.1.4 \
crate://crates.io/memchr/0.1.11 \
crate://crates.io/miniz-sys/0.1.7 \
crate://crates.io/miow/0.1.3 \
crate://crates.io/net2/0.2.26 \
crate://crates.io/num-bigint/0.1.35 \
crate://crates.io/num-complex/0.1.35 \
crate://crates.io/num-integer/0.1.32 \
crate://crates.io/num-iter/0.1.32 \
crate://crates.io/num-rational/0.1.35 \
crate://crates.io/num-traits/0.1.36 \
crate://crates.io/num/0.1.36 \
crate://crates.io/num_cpus/1.1.0 \
crate://crates.io/openssl-probe/0.1.0 \
crate://crates.io/openssl-sys/0.9.1 \
crate://crates.io/openssl/0.9.1 \
crate://crates.io/pkg-config/0.3.8 \
crate://crates.io/psapi-sys/0.1.0 \
crate://crates.io/rand/0.3.14 \
crate://crates.io/regex-syntax/0.3.9 \
crate://crates.io/regex/0.1.80 \
crate://crates.io/rustc-serialize/0.3.21 \
crate://crates.io/semver-parser/0.6.1 \
crate://crates.io/semver/0.5.1 \
crate://crates.io/strsim/0.5.1 \
crate://crates.io/tar/0.4.9 \
crate://crates.io/tempdir/0.3.5 \
crate://crates.io/term/0.4.4 \
crate://crates.io/thread-id/2.0.0 \
crate://crates.io/thread_local/0.2.7 \
crate://crates.io/toml/0.2.1 \
crate://crates.io/unicode-bidi/0.2.3 \
crate://crates.io/unicode-normalization/0.1.2 \
crate://crates.io/url/1.2.3 \
crate://crates.io/user32-sys/0.2.0 \
crate://crates.io/utf8-ranges/0.1.3 \
crate://crates.io/winapi-build/0.1.1 \
crate://crates.io/winapi/0.2.8 \
crate://crates.io/ws2_32-sys/0.2.1 \
"
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,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

@@ -1,88 +0,0 @@
From 27df8ab04275dfd715d1756fc517bb0323f1b210 Mon Sep 17 00:00:00 2001
From: Steven Walter <stevenrwalter@gmail.com>
Date: Fri, 2 Sep 2016 14:02:03 -0400
Subject: [PATCH] Never update the registry index
Bitbake will fetch the index for us so that we needn't do network IO
during a build
---
src/cargo/ops/cargo_run.rs | 2 +-
src/cargo/sources/registry.rs | 34 +---------------------------------
2 files changed, 2 insertions(+), 34 deletions(-)
diff --git a/src/cargo/ops/cargo_run.rs b/src/cargo/ops/cargo_run.rs
index 6764118..379b98b 100644
--- a/src/cargo/ops/cargo_run.rs
+++ b/src/cargo/ops/cargo_run.rs
@@ -1,7 +1,7 @@
use std::path::Path;
use ops::{self, CompileFilter};
-use util::{self, CargoResult, process, ProcessError};
+use util::{self, CargoResult, ProcessError};
use core::Package;
pub fn run(manifest_path: &Path,
diff --git a/src/cargo/sources/registry.rs b/src/cargo/sources/registry.rs
index 614d654..a0c7fe6 100644
--- a/src/cargo/sources/registry.rs
+++ b/src/cargo/sources/registry.rs
@@ -166,7 +166,6 @@ use std::path::{PathBuf, Path};
use curl::http;
use flate2::read::GzDecoder;
-use git2;
use rustc_serialize::hex::ToHex;
use rustc_serialize::json;
use tar::Archive;
@@ -174,7 +173,7 @@ use url::Url;
use core::{Source, SourceId, PackageId, Package, Summary, Registry};
use core::dependency::{Dependency, DependencyInner, Kind};
-use sources::{PathSource, git};
+use sources::PathSource;
use util::{CargoResult, Config, internal, ChainError, ToUrl, human};
use util::{hex, Sha256, paths, Filesystem, FileLock};
use ops;
@@ -464,38 +463,7 @@ impl<'cfg> RegistrySource<'cfg> {
/// Actually perform network operations to update the registry
fn do_update(&mut self) -> CargoResult<()> {
- if self.updated {
- return Ok(())
- }
- try!(self.checkout_path.create_dir());
- let lock = try!(self.checkout_path.open_rw(Path::new(INDEX_LOCK),
- self.config,
- "the registry index"));
- let path = lock.path().parent().unwrap();
-
- try!(self.config.shell().status("Updating",
- format!("registry `{}`", self.source_id.url())));
- let repo = try!(git2::Repository::open(path).or_else(|_| {
- let _ = lock.remove_siblings();
- git2::Repository::init(path)
- }));
-
- // git fetch origin
- let url = self.source_id.url().to_string();
- let refspec = "refs/heads/*:refs/remotes/origin/*";
-
- try!(git::fetch(&repo, &url, refspec, &self.config).chain_error(|| {
- internal(format!("failed to fetch `{}`", url))
- }));
-
- // git reset --hard origin/master
- let reference = "refs/remotes/origin/master";
- let oid = try!(repo.refname_to_id(reference));
- trace!("[{}] updating to rev {}", self.source_id, oid);
- let object = try!(repo.find_object(oid, None));
- try!(repo.reset(&object, git2::ResetType::Hard, None));
self.updated = true;
- self.cache.clear();
Ok(())
}
}
--
2.7.4

View File

@@ -1,27 +0,0 @@
From 7ae8ea6523c943cc819eadea011ce4f783e40764 Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Wed, 3 Feb 2016 15:59:48 -0500
Subject: [PATCH] disable cargo snapshot fetch
---
Makefile.in | 4 ----
1 file changed, 4 deletions(-)
diff --git a/Makefile.in b/Makefile.in
index fadcb4b..a8da630 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -103,10 +103,6 @@ test-unit-$(1): $$(CARGO)
endef
$(foreach target,$(CFG_TARGET),$(eval $(call CARGO_TARGET,$(target))))
-$(TARGET_ROOT)/snapshot/bin/cargo$(X): $(S)src/snapshots.txt
- $(CFG_PYTHON) $(S)src/etc/dl-snapshot.py $(CFG_BUILD)
- touch $@
-
# === Tests
--
2.8.2

View File

@@ -1,75 +0,0 @@
From 8f82cc69e50e7c8e48a2e20b7061483a28bd0d7f Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Sat, 12 Dec 2015 22:36:26 -0500
Subject: [PATCH 1/2] curl-sys: avoid explicitly linking in openssl
linking libcurl with libssl is handled by pkg-config, not us
This also allows non-blessed triples to work.
---
curl-sys/Cargo.toml | 38 --------------------------------------
curl-sys/lib.rs | 2 --
2 files changed, 40 deletions(-)
diff --git a/curl-sys/Cargo.toml b/curl-sys/Cargo.toml
index 24bc4fa..dd56209 100644
--- a/curl-sys/Cargo.toml
+++ b/curl-sys/Cargo.toml
@@ -19,42 +19,4 @@ path = "lib.rs"
[dependencies]
libz-sys = ">= 0"
libc = "0.2"
-
-[target."cfg(all(unix, not(target_os = \"macos\")))".dependencies]
-openssl-sys = ">= 0"
-
-# Unix platforms use OpenSSL for now to provide SSL functionality
-[target.i686-unknown-linux-gnu.dependencies]
-openssl-sys = ">= 0"
-[target.i586-unknown-linux-gnu.dependencies]
-openssl-sys = ">= 0"
-[target.i686-linux-android.dependencies]
-openssl-sys = ">= 0"
-[target.x86_64-unknown-linux-gnu.dependencies]
-openssl-sys = ">= 0"
-[target.x86_64-unknown-linux-musl.dependencies]
-openssl-sys = ">= 0"
-[target.arm-unknown-linux-gnueabihf.dependencies]
-openssl-sys = ">= 0"
-[target.armv7-unknown-linux-gnueabihf.dependencies]
openssl-sys = "0.7.0"
-[target.arm-linux-androideabi.dependencies]
-openssl-sys = ">= 0"
-[target.aarch64-unknown-linux-gnu.dependencies]
-openssl-sys = ">= 0"
-[target.powerpc-unknown-linux-gnu.dependencies]
-openssl-sys = ">= 0"
-[target.powerpc64-unknown-linux-gnu.dependencies]
-openssl-sys = ">= 0"
-[target.powerpc64le-unknown-linux-gnu.dependencies]
-openssl-sys = ">= 0"
-[target.i686-unknown-freebsd.dependencies]
-openssl-sys = ">= 0"
-[target.x86_64-unknown-freebsd.dependencies]
-openssl-sys = ">= 0"
-[target.x86_64-unknown-bitrig.dependencies]
-openssl-sys = ">= 0"
-[target.x86_64-unknown-openbsd.dependencies]
-openssl-sys = ">= 0"
-[target.x86_64-unknown-dragonfly.dependencies]
-openssl-sys = ">= 0"
diff --git a/curl-sys/lib.rs b/curl-sys/lib.rs
index 7990bd6..eb6c27a 100644
--- a/curl-sys/lib.rs
+++ b/curl-sys/lib.rs
@@ -3,8 +3,6 @@
extern crate libc;
#[cfg(not(target_env = "msvc"))]
extern crate libz_sys;
-#[cfg(all(unix, not(target_os = "macos")))]
-extern crate openssl_sys;
use libc::{c_void, c_int, c_char, c_uint, c_long};
--
2.9.2

View File

@@ -1,67 +0,0 @@
From eb23b1b6f749102e3db92b73a5e55ec6ad688524 Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Sat, 12 Dec 2015 22:40:33 -0500
Subject: [PATCH 2/2] remove per triple deps on openssl-sys
---
Cargo.toml | 40 +---------------------------------------
1 file changed, 1 insertion(+), 39 deletions(-)
diff --git a/Cargo.toml b/Cargo.toml
index 5f6cf87..0c87156 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -12,49 +12,11 @@ url = ">= 0.5, < 2.0"
log = "0.3.0"
libc = "0.2"
curl-sys = { path = "curl-sys", version = "0.1.0" }
+openssl-sys = "0.7.0"
[dev-dependencies]
env_logger = "0.3.0"
-# Unix platforms use OpenSSL for now to provide SSL functionality
-[target."cfg(all(unix, not(target_os = \"macos\")))".dependencies]
-openssl-sys = "0.7.0"
-
-[target.i686-unknown-linux-gnu.dependencies]
-openssl-sys = "0.7.0"
-[target.i586-unknown-linux-gnu.dependencies]
-openssl-sys = "0.7.0"
-[target.i686-linux-android.dependencies]
-openssl-sys = "0.7.0"
-[target.x86_64-unknown-linux-gnu.dependencies]
-openssl-sys = "0.7.0"
-[target.x86_64-unknown-linux-musl.dependencies]
-openssl-sys = "0.7.0"
-[target.arm-unknown-linux-gnueabihf.dependencies]
-openssl-sys = "0.7.0"
-[target.armv7-unknown-linux-gnueabihf.dependencies]
-openssl-sys = "0.7.0"
-[target.arm-linux-androideabi.dependencies]
-openssl-sys = "0.7.0"
-[target.aarch64-unknown-linux-gnu.dependencies]
-openssl-sys = "0.7.0"
-[target.powerpc-unknown-linux-gnu.dependencies]
-openssl-sys = "0.7.0"
-[target.powerpc64-unknown-linux-gnu.dependencies]
-openssl-sys = "0.7.0"
-[target.powerpc64le-unknown-linux-gnu.dependencies]
-openssl-sys = "0.7.0"
-[target.i686-unknown-freebsd.dependencies]
-openssl-sys = "0.7.0"
-[target.x86_64-unknown-freebsd.dependencies]
-openssl-sys = "0.7.0"
-[target.x86_64-unknown-bitrig.dependencies]
-openssl-sys = "0.7.0"
-[target.x86_64-unknown-openbsd.dependencies]
-openssl-sys = "0.7.0"
-[target.x86_64-unknown-dragonfly.dependencies]
-openssl-sys = "0.7.0"
-
[[test]]
name = "test"
--
2.9.2

View File

@@ -1,62 +0,0 @@
From 308fd350907fba13f68dcdb8e48040582466cae6 Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Sat, 12 Dec 2015 22:53:37 -0500
Subject: [PATCH] libgit2-sys: avoid blessed triples
---
libgit2-sys/Cargo.toml | 33 +--------------------------------
1 file changed, 1 insertion(+), 32 deletions(-)
diff --git a/libgit2-sys/Cargo.toml b/libgit2-sys/Cargo.toml
index 2395314..29000ef 100644
--- a/libgit2-sys/Cargo.toml
+++ b/libgit2-sys/Cargo.toml
@@ -17,44 +17,13 @@ path = "lib.rs"
libssh2-sys = { version = ">= 0", optional = true }
libc = "0.2"
libz-sys = ">= 0"
+openssl-sys = "0.7.0"
[build-dependencies]
pkg-config = "0.3"
cmake = "0.1.2"
gcc = "0.3"
-[target."cfg(all(unix, not(target_os = \"macos\")))".dependencies]
-openssl-sys = "0.7.0"
-
-[target.i686-unknown-linux-gnu.dependencies]
-openssl-sys = "0.7.0"
-[target.i586-unknown-linux-gnu.dependencies]
-openssl-sys = "0.7.0"
-[target.x86_64-unknown-linux-gnu.dependencies]
-openssl-sys = "0.7.0"
-[target.x86_64-unknown-linux-musl.dependencies]
-openssl-sys = "0.7.0"
-[target.aarch64-unknown-linux-gnu.dependencies]
-openssl-sys = "0.7.0"
-[target.powerpc64-unknown-linux-gnu.dependencies]
-openssl-sys = "0.7.0"
-[target.powerpc64le-unknown-linux-gnu.dependencies]
-openssl-sys = "0.7.0"
-[target.arm-unknown-linux-gnueabihf.dependencies]
-openssl-sys = "0.7.0"
-[target.armv7-unknown-linux-gnueabihf.dependencies]
-openssl-sys = "0.7.0"
-[target.i686-unknown-freebsd.dependencies]
-openssl-sys = "0.7.0"
-[target.x86_64-unknown-freebsd.dependencies]
-openssl-sys = "0.7.0"
-[target.x86_64-unknown-bitrig.dependencies]
-openssl-sys = "0.7.0"
-[target.x86_64-unknown-openbsd.dependencies]
-openssl-sys = "0.7.0"
-[target.x86_64-unknown-dragonfly.dependencies]
-openssl-sys = "0.7.0"
-
[features]
ssh = ["libssh2-sys"]
https = []
--
2.9.2

View File

@@ -1,70 +0,0 @@
From 65f07216c2c7a341cf13c35ecc1a781d7a489511 Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Sat, 12 Dec 2015 22:44:14 -0500
Subject: [PATCH] libssh2-sys: avoid explicitly linking in openssl
---
libssh2-sys/Cargo.toml | 33 ---------------------------------
libssh2-sys/lib.rs | 2 --
2 files changed, 35 deletions(-)
diff --git a/libssh2-sys/Cargo.toml b/libssh2-sys/Cargo.toml
index c4e006d..175be77 100644
--- a/libssh2-sys/Cargo.toml
+++ b/libssh2-sys/Cargo.toml
@@ -19,39 +19,6 @@ libc = "0.2"
[target."cfg(unix)".dependencies]
openssl-sys = ">= 0"
-[target.i686-apple-darwin.dependencies]
-openssl-sys = ">= 0"
-[target.x86_64-apple-darwin.dependencies]
-openssl-sys = ">= 0"
-[target.i686-unknown-linux-gnu.dependencies]
-openssl-sys = ">= 0"
-[target.i586-unknown-linux-gnu.dependencies]
-openssl-sys = ">= 0"
-[target.x86_64-unknown-linux-gnu.dependencies]
-openssl-sys = ">= 0"
-[target.aarch64-unknown-linux-gnu.dependencies]
-openssl-sys = ">= 0"
-[target.powerpc64-unknown-linux-gnu.dependencies]
-openssl-sys = ">= 0"
-[target.powerpc64le-unknown-linux-gnu.dependencies]
-openssl-sys = ">= 0"
-[target.x86_64-unknown-linux-musl.dependencies]
-openssl-sys = ">= 0"
-[target.arm-unknown-linux-gnueabihf.dependencies]
-openssl-sys = ">= 0"
-[target.armv7-unknown-linux-gnueabihf.dependencies]
-openssl-sys = ">= 0"
-[target.i686-unknown-freebsd.dependencies]
-openssl-sys = ">= 0"
-[target.x86_64-unknown-freebsd.dependencies]
-openssl-sys = ">= 0"
-[target.x86_64-unknown-dragonfly.dependencies]
-openssl-sys = ">= 0"
-[target.x86_64-unknown-bitrig.dependencies]
-openssl-sys = ">= 0"
-[target.x86_64-unknown-openbsd.dependencies]
-openssl-sys = ">= 0"
-
[build-dependencies]
pkg-config = "0.3"
cmake = "0.1.2"
diff --git a/libssh2-sys/lib.rs b/libssh2-sys/lib.rs
index 02fd203..3ca1806 100644
--- a/libssh2-sys/lib.rs
+++ b/libssh2-sys/lib.rs
@@ -4,8 +4,6 @@
extern crate libc;
extern crate libz_sys;
-#[cfg(unix)]
-extern crate openssl_sys;
use libc::{c_int, size_t, c_void, c_char, c_long, c_uchar, c_uint, c_ulong};
use libc::ssize_t;
--
2.8.2

View File

@@ -1,63 +0,0 @@
From 3d850e1b1651a79085b994c12cdb78faa8271622 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ho=C3=A0ng=20=C4=90=E1=BB=A9c=20Hi=E1=BA=BFu?=
<hdhoang@zahe.me>
Date: Mon, 1 Dec 2014 11:48:14 +0700
Subject: [PATCH] update to new io::FileType enum
---
src/lib.rs | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/src/lib.rs b/src/lib.rs
index 5e13b84..3e24ff2 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -283,12 +283,12 @@ impl<W: Writer> Archive<W> {
octal(&mut header.dev_major, 0i);
header.link[0] = match stat.kind {
- io::TypeFile => b'0',
- io::TypeDirectory => b'5',
- io::TypeNamedPipe => b'6',
- io::TypeBlockSpecial => b'4',
- io::TypeSymlink => b'2',
- io::TypeUnknown => b' ',
+ io::FileType::RegularFile => b'0',
+ io::FileType::Directory => b'5',
+ io::FileType::NamedPipe => b'6',
+ io::FileType::BlockSpecial => b'4',
+ io::FileType::Symlink => b'2',
+ io::FileType::Unknown => b' ',
};
// Final step, calculate the checksum
@@ -411,16 +411,16 @@ impl<'a, R> File<'a, R> {
/// Classify the type of file that this entry represents
pub fn classify(&self) -> io::FileType {
match (self.header.is_ustar(), self.header.link[0]) {
- (_, b'0') => io::TypeFile,
- (_, b'1') => io::TypeUnknown, // need a hard link enum?
- (_, b'2') => io::TypeSymlink,
- (false, _) => io::TypeUnknown, // not technically valid...
-
- (_, b'3') => io::TypeUnknown, // character special...
- (_, b'4') => io::TypeBlockSpecial,
- (_, b'5') => io::TypeDirectory,
- (_, b'6') => io::TypeNamedPipe,
- (_, _) => io::TypeUnknown, // not technically valid...
+ (_, b'0') => io::FileType::RegularFile,
+ (_, b'1') => io::FileType::Unknown, // need a hard link enum?
+ (_, b'2') => io::FileType::Symlink,
+ (false, _) => io::FileType::Unknown, // not technically valid...
+
+ (_, b'3') => io::FileType::Unknown, // character special...
+ (_, b'4') => io::FileType::BlockSpecial,
+ (_, b'5') => io::FileType::Directory,
+ (_, b'6') => io::FileType::NamedPipe,
+ (_, _) => io::FileType::Unknown, // not technically valid...
}
}
--
2.0.4

View File

@@ -1,30 +0,0 @@
SUMMARY = "Rust compiler run-time"
HOMEPAGE = "http://www.rust-lang.org"
SECTION = "devel"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=27b14ab4ce08d04c3a9a5f0ed7997362"
SRC_URI = "\
https://static.rust-lang.org/dist/rustc-${PV}-src.tar.gz;name=rust \
"
require rust-source-${PV}.inc
S = "${WORKDIR}/rustc-${PV}/src/compiler-rt"
do_compile () {
oe_runmake -C ${S} \
ProjSrcRoot="${S}" \
ProjObjRoot="${B}" \
CC="${CC}" \
AR="${AR}" \
RANLIB="${RANLIB}" \
CFLAGS="${CFLAGS}" \
TargetTriple=${HOST_SYS} \
triple-builtins
}
do_install () {
mkdir -p ${D}${libdir}
cp triple/builtins/libcompiler_rt.a ${D}${libdir}/libcompiler-rt.a
}

View File

@@ -1,24 +0,0 @@
SUMMARY = "Rust compiler run-time"
HOMEPAGE = "http://www.rust-lang.org"
SECTION = "devel"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://src/compiler-rt/LICENSE.TXT;md5=bf24bca27049b52e9738451aa55771d4"
require rust.inc
require rust-source-${PV}.inc
DEPENDS += "rust-llvm-native (=${PV})"
S = "${WORKDIR}/rustc-${PV}"
DISABLE_STATIC = ""
INHIBIT_DEFAULT_RUST_DEPS = "1"
do_compile () {
oe_runmake ${TARGET_SYS}/rt/libcompiler-rt.a
}
do_install () {
mkdir -p ${D}${libdir}
cp ${TARGET_SYS}/rt/libcompiler-rt.a ${D}${libdir}/libcompiler-rt.a
}

View File

@@ -1,45 +0,0 @@
From 69b65762ccdf459143fc273a39b0a0e0c6d8fe3e Mon Sep 17 00:00:00 2001
From: Steven Walter <swalter@lexmark.com>
Date: Mon, 2 May 2016 19:57:46 -0400
Subject: [PATCH 01/11] Add config for musl-based arm builds
---
mk/cfg/arm-unknown-linux-musleabi.mk | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
create mode 100644 mk/cfg/arm-unknown-linux-musleabi.mk
diff --git a/mk/cfg/arm-unknown-linux-musleabi.mk b/mk/cfg/arm-unknown-linux-musleabi.mk
new file mode 100644
index 0000000..2485bd9
--- /dev/null
+++ b/mk/cfg/arm-unknown-linux-musleabi.mk
@@ -0,0 +1,26 @@
+# arm-unknown-linux-musleabi configuration
+CROSS_PREFIX_arm-unknown-linux-musleabi=arm-linux-musleabi-
+CC_arm-unknown-linux-musleabi=gcc
+CXX_arm-unknown-linux-musleabi=g++
+CPP_arm-unknown-linux-musleabi=gcc -E
+AR_arm-unknown-linux-musleabi=ar
+CFG_LIB_NAME_arm-unknown-linux-musleabi=lib$(1).so
+CFG_STATIC_LIB_NAME_arm-unknown-linux-musleabi=lib$(1).a
+CFG_LIB_GLOB_arm-unknown-linux-musleabi=lib$(1)-*.so
+CFG_LIB_DSYM_GLOB_arm-unknown-linux-musleabi=lib$(1)-*.dylib.dSYM
+CFG_JEMALLOC_CFLAGS_arm-unknown-linux-musleabi := -D__arm__ $(CFLAGS)
+CFG_GCCISH_CFLAGS_arm-unknown-linux-musleabi := -Wall -g -fPIC -D__arm__ $(CFLAGS)
+CFG_GCCISH_CXXFLAGS_arm-unknown-linux-musleabi := -fno-rtti $(CXXFLAGS)
+CFG_GCCISH_LINK_FLAGS_arm-unknown-linux-musleabi := -shared -fPIC -g
+CFG_GCCISH_DEF_FLAG_arm-unknown-linux-musleabi := -Wl,--export-dynamic,--dynamic-list=
+CFG_LLC_FLAGS_arm-unknown-linux-musleabi :=
+CFG_INSTALL_NAME_arm-unknown-linux-musleabi =
+CFG_EXE_SUFFIX_arm-unknown-linux-musleabi :=
+CFG_WINDOWSY_arm-unknown-linux-musleabi :=
+CFG_UNIXY_arm-unknown-linux-musleabi := 1
+CFG_LDPATH_arm-unknown-linux-musleabi :=
+CFG_RUN_arm-unknown-linux-musleabi=$(2)
+CFG_RUN_TARG_arm-unknown-linux-musleabi=$(call CFG_RUN_arm-unknown-linux-musleabi,,$(2))
+RUSTC_FLAGS_arm-unknown-linux-musleabi :=
+RUSTC_CROSS_FLAGS_arm-unknown-linux-musleabi :=
+CFG_GNU_TRIPLE_arm-unknown-linux-musleabi := arm-unknown-linux-musleabi
--
2.7.4

View File

@@ -1,107 +0,0 @@
From 0535c75086a9c170d8d4d99b3030d9136ea6e2c7 Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Tue, 18 Nov 2014 01:40:21 -0500
Subject: [PATCH 02/11] Target: add default target.json path:
$libdir/rust/targets
---
src/librustc/session/config.rs | 6 +++---
src/librustc/session/mod.rs | 8 ++++++--
src/librustc_back/target/mod.rs | 13 +++++++++++--
3 files changed, 20 insertions(+), 7 deletions(-)
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
index da5555d..6cd0ea9 100644
--- a/src/librustc/session/config.rs
+++ b/src/librustc/session/config.rs
@@ -35,7 +35,7 @@ use getopts;
use std::collections::HashMap;
use std::env;
use std::fmt;
-use std::path::PathBuf;
+use std::path::{Path, PathBuf};
pub struct Config {
pub target: Target,
@@ -787,8 +787,8 @@ pub fn build_configuration(sess: &Session) -> ast::CrateConfig {
v
}
-pub fn build_target_config(opts: &Options, sp: &Handler) -> Config {
- let target = match Target::search(&opts.target_triple) {
+pub fn build_target_config(sysroot: &Path, opts: &Options, sp: &Handler) -> Config {
+ let target = match Target::search(sysroot, &opts.target_triple[..]) {
Ok(t) => t,
Err(e) => {
panic!(sp.fatal(&format!("Error loading target specification: {}", e)));
diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs
index 907241d..d0e3743 100644
--- a/src/librustc/session/mod.rs
+++ b/src/librustc/session/mod.rs
@@ -470,13 +470,17 @@ pub fn build_session_(sopts: config::Options,
codemap: Rc<codemap::CodeMap>,
cstore: Rc<for<'a> CrateStore<'a>>)
-> Session {
- let host = match Target::search(config::host_triple()) {
+ let sysroot = match sopts.maybe_sysroot {
+ Some(ref x) => PathBuf::from(x),
+ None => filesearch::get_or_default_sysroot()
+ };
+ let host = match Target::search(&sysroot, config::host_triple()) {
Ok(t) => t,
Err(e) => {
panic!(span_diagnostic.fatal(&format!("Error loading host specification: {}", e)));
}
};
- let target_cfg = config::build_target_config(&sopts, &span_diagnostic);
+ let target_cfg = config::build_target_config(&sysroot, &sopts, &span_diagnostic);
let p_s = parse::ParseSess::with_span_handler(span_diagnostic, codemap);
let default_sysroot = match sopts.maybe_sysroot {
Some(_) => None,
diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs
index 2163a8a..38607f0 100644
--- a/src/librustc_back/target/mod.rs
+++ b/src/librustc_back/target/mod.rs
@@ -48,6 +48,8 @@ use serialize::json::Json;
use std::default::Default;
use std::io::prelude::*;
use syntax::abi::Abi;
+use std::borrow::ToOwned;
+use std::path::Path;
mod android_base;
mod apple_base;
@@ -477,12 +479,13 @@ impl Target {
///
/// The error string could come from any of the APIs called, including
/// filesystem access and JSON decoding.
- pub fn search(target: &str) -> Result<Target, String> {
+ pub fn search(sysroot: &Path, target: &str) -> Result<Target, String> {
use std::env;
use std::ffi::OsString;
use std::fs::File;
use std::path::{Path, PathBuf};
use serialize::json;
+ use std::iter::IntoIterator;
fn load_file(path: &Path) -> Result<Target, String> {
let mut f = File::open(path).map_err(|e| e.to_string())?;
@@ -513,8 +516,14 @@ impl Target {
.unwrap_or(OsString::new());
// FIXME 16351: add a sane default search path?
+ let mut default_path = sysroot.to_owned();
+ default_path.push(env!("CFG_LIBDIR_RELATIVE"));
+ default_path.push("rustlib");
- for dir in env::split_paths(&target_path) {
+ let paths = env::split_paths(&target_path)
+ .chain(Some(default_path).into_iter());
+
+ for dir in paths {
let p = dir.join(&path);
if p.is_file() {
return load_file(&p);
--
2.7.4

View File

@@ -1,73 +0,0 @@
From 4290b8f28222824a558ac4471d26fe88b2889a5b Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Tue, 18 Nov 2014 14:52:56 -0500
Subject: [PATCH 03/11] mk: for stage0, use RUSTFLAGS to override target libs
dir
Setting HLIB specially for stage0 (and even more specially for windows)
also affects the location we place TLIB. To keep the TLIBs we build in
the place requested by configure, use '-L' and '--sysroot' to point
stage0-rustc at the appropriate location.
---
mk/main.mk | 29 ++++++++++++-----------------
1 file changed, 12 insertions(+), 17 deletions(-)
diff --git a/mk/main.mk b/mk/main.mk
index c47020c..fcf1409 100644
--- a/mk/main.mk
+++ b/mk/main.mk
@@ -403,32 +403,26 @@ define SREQ
HROOT$(1)_H_$(3) = $(3)/stage$(1)
HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
-ifeq ($$(CFG_WINDOWSY_$(3)),1)
-# On Windows we always store host runtime libraries in the 'bin' directory because
-# there's no rpath. Target libraries go under $CFG_LIBDIR_RELATIVE (usually 'lib').
-HLIB_RELATIVE$(1)_H_$(3) = bin
-TROOT$(1)_T_$(2)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)/rustlib/$(2)
-# Remove the next 3 lines after a snapshot
-ifeq ($(1),0)
-RUSTFLAGS_STAGE0 += -L $$(TROOT$(1)_T_$(2)_H_$(3))/lib
-endif
-
-else
-
-ifeq ($(1),0)
-HLIB_RELATIVE$(1)_H_$(3) = lib
-else
HLIB_RELATIVE$(1)_H_$(3) = $$(CFG_LIBDIR_RELATIVE)
-endif
+
TROOT$(1)_T_$(2)_H_$(3) = $$(HLIB$(1)_H_$(3))/rustlib/$(2)
-endif
HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(HLIB_RELATIVE$(1)_H_$(3))
# Destinations of artifacts for target architectures
TBIN$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/bin
TLIB$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/lib
+# Don't trust stage0, be explicit about libraries
+# TODO: rather than specifying sysroot, we really want to tell which libdir to
+# use (ie: the dir containing 'rustlib'). This would allow us to avoid
+# passing the '-L' options.
+ifeq ($(1),0)
+RUSTFLAGS_S_$(1)_T_$(2)_H_$(3) += --sysroot "$$(HROOT$(1)_H_$(3))" \
+ -L "$$(TLIB$(1)_T_$(2)_H_$(3))"
+endif
+
+
# Preqrequisites for using the stageN compiler
ifeq ($(1),0)
HSREQ$(1)_H_$(3) = $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3))
@@ -536,6 +530,7 @@ STAGE$(1)_T_$(2)_H_$(3) := \
$$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \
--cfg $$(CFGFLAG$(1)_T_$(2)_H_$(3)) \
$$(CFG_RUSTC_FLAGS) $$(EXTRAFLAGS_STAGE$(1)) --target=$(2)) \
+ $$(RUSTFLAGS_S_$(1)_T_$(2)_H_$(3)) \
$$(RUSTC_FLAGS_$(2))
endef
--
2.7.4

View File

@@ -1,27 +0,0 @@
From 06b8c4bc8f7056d604d8ef4d699273cc1dd39025 Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Tue, 18 Nov 2014 13:48:14 -0500
Subject: [PATCH 04/11] mk: add missing CFG_LIBDIR_RELATIVE
---
mk/grammar.mk | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/mk/grammar.mk b/mk/grammar.mk
index 0d527bd..926f247 100644
--- a/mk/grammar.mk
+++ b/mk/grammar.mk
@@ -11,8 +11,8 @@
BG = $(CFG_BUILD_DIR)/grammar/
SG = $(S)src/grammar/
B = $(CFG_BUILD_DIR)/$(CFG_BUILD)/stage2/
-L = $(B)lib/rustlib/$(CFG_BUILD)/lib
-LD = $(CFG_BUILD)/stage2/lib/rustlib/$(CFG_BUILD)/lib/
+L = $(B)$(CFG_LIBDIR_RELATIVE)/rustlib/$(CFG_BUILD)/lib
+LD = $(CFG_BUILD)/stage2/$(CFG_LIBDIR_RELATIVE)/rustlib/$(CFG_BUILD)/lib/
RUSTC = $(STAGE2_T_$(CFG_BUILD)_H_$(CFG_BUILD))
ifeq ($(CFG_OSTYPE),apple-darwin)
FLEX_LDFLAGS=-ll
--
2.7.4

View File

@@ -1,25 +0,0 @@
From f7441b3080088d8131d106c59c3543b22c9e8211 Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Wed, 3 Dec 2014 19:15:19 -0500
Subject: [PATCH 06/11] std/thread_local: workaround for NULL __dso_handle
---
src/libstd/thread/local.rs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/libstd/thread/local.rs b/src/libstd/thread/local.rs
index 6b54ec8..5b41b75 100644
--- a/src/libstd/thread/local.rs
+++ b/src/libstd/thread/local.rs
@@ -346,7 +346,7 @@ pub mod elf {
#[linkage = "extern_weak"]
static __cxa_thread_atexit_impl: *const libc::c_void;
}
- if !__cxa_thread_atexit_impl.is_null() {
+ if !__cxa_thread_atexit_impl.is_null() && !__dso_handle.is_null() {
type F = unsafe extern fn(dtor: unsafe extern fn(*mut u8),
arg: *mut u8,
dso_handle: *mut u8) -> libc::c_int;
--
2.7.4

View File

@@ -1,30 +0,0 @@
From a73a748cd73920380ae1f069be91ff833e99d003 Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Mon, 2 Mar 2015 13:34:59 -0500
Subject: [PATCH 07/11] mk/install: use disable-rewrite-paths
This stops the install scripts from doing work we've already handled.
Path rewriting is only useful for prepackaged binary installers.
---
mk/install.mk | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/mk/install.mk b/mk/install.mk
index d2e5449..e67650b 100644
--- a/mk/install.mk
+++ b/mk/install.mk
@@ -12,7 +12,9 @@ RUN_INSTALLER = cd tmp/empty_dir && \
sh ../../tmp/dist/$(1)/install.sh \
--prefix="$(DESTDIR)$(CFG_PREFIX)" \
--libdir="$(DESTDIR)$(CFG_LIBDIR)" \
- --mandir="$(DESTDIR)$(CFG_MANDIR)"
+ --mandir="$(DESTDIR)$(CFG_MANDIR)" \
+ "$(MAYBE_DISABLE_VERIFY)" \
+ --disable-rewrite-paths
install:
ifeq (root user, $(USER) $(patsubst %,user,$(SUDO_USER)))
--
2.7.4

View File

@@ -1,60 +0,0 @@
From 042a5df36597c2c6c23900667ae1b4299279092f Mon Sep 17 00:00:00 2001
From: Steven Walter <swalter@lexmark.com>
Date: Wed, 18 Nov 2015 08:33:26 -0500
Subject: [PATCH 08/11] Allow overriding crate_hash with -C crate_hash
The current crate hash is not stable from run-to-run. This causes
problems with bitbake; it needs a guarantee that every build with the
same input will generate compatible output, otherwise sstate won't work.
Using -C crate_hash, we can do that by using the bitbake input hash to
determine the crate hash; the bitbake input hash will be stable, but
still different for different rust recipes.
---
src/librustc/session/config.rs | 2 ++
src/librustc_trans/back/link.rs | 12 +++++++++++-
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
index 6cd0ea9..f90398d 100644
--- a/src/librustc/session/config.rs
+++ b/src/librustc/session/config.rs
@@ -585,6 +585,8 @@ options! {CodegenOptions, CodegenSetter, basic_codegen_options,
"choose the code model to use (llc -code-model for details)"),
metadata: Vec<String> = (Vec::new(), parse_list,
"metadata to mangle symbol names with"),
+ crate_hash: String = ("".to_string(), parse_string,
+ "override crate hash with given value"),
extra_filename: String = ("".to_string(), parse_string,
"extra data to put in each output filename"),
codegen_units: usize = (1, parse_uint,
diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs
index 222d447..e951476 100644
--- a/src/librustc_trans/back/link.rs
+++ b/src/librustc_trans/back/link.rs
@@ -125,12 +125,22 @@ pub fn find_crate_name(sess: Option<&Session>,
}
+use std::hash::{Hasher, SipHasher};
+use rustc::hir::svh::Svh;
+
pub fn build_link_meta<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
name: &str)
-> LinkMeta {
+ let crate_hash = if tcx.sess.opts.cg.crate_hash != "" {
+ let mut state = SipHasher::new();
+ state.write(tcx.sess.opts.cg.crate_hash.as_bytes());
+ Svh::new(state.finish())
+ } else {
+ tcx.calculate_krate_hash()
+ };
let r = LinkMeta {
crate_name: name.to_owned(),
- crate_hash: tcx.calculate_krate_hash(),
+ crate_hash: crate_hash,
};
info!("{:?}", r);
return r;
--
2.7.4

View File

@@ -1,25 +0,0 @@
From 44ee7a68f44132ebe32ac486355945131c7a2b83 Mon Sep 17 00:00:00 2001
From: Steven Walter <swalter@lexmark.com>
Date: Wed, 18 Nov 2015 08:41:17 -0500
Subject: [PATCH 09/11] mk/platform.mk: pass -C crate_hash to builds
bitbake recipe will export FORCE_CRATE_HASH
---
mk/platform.mk | 1 +
1 file changed, 1 insertion(+)
diff --git a/mk/platform.mk b/mk/platform.mk
index c264462..b959d59 100644
--- a/mk/platform.mk
+++ b/mk/platform.mk
@@ -181,6 +181,7 @@ define CFG_MAKE_TOOLCHAIN
AR_$(1)=$(CROSS_PREFIX_$(1))$(AR_$(1))
LINK_$(1)=$(CROSS_PREFIX_$(1))$(LINK_$(1))
RUSTC_CROSS_FLAGS_$(1)=-C linker=$$(call FIND_COMPILER,$$(LINK_$(1))) \
+ -C crate_hash=$(FORCE_CRATE_HASH) \
-C ar=$$(call FIND_COMPILER,$$(AR_$(1))) $(RUSTC_CROSS_FLAGS_$(1))
RUSTC_FLAGS_$(1)=$$(RUSTC_CROSS_FLAGS_$(1)) $(RUSTC_FLAGS_$(1))
--
2.7.4

View File

@@ -1,96 +0,0 @@
From 9c76c93de35fb45ed18e75827649e299d8c4e94e Mon Sep 17 00:00:00 2001
From: Eduard Burtescu <edy.burt@gmail.com>
Date: Sun, 14 Aug 2016 11:16:28 +0300
Subject: [PATCH 11/11] Get rid of the .note interpretation of rustc dylib
metadata.
---
src/librustc_metadata/loader.rs | 41 ++++++++++++++++++-----------------------
src/librustc_trans/base.rs | 13 ++++++++++---
2 files changed, 28 insertions(+), 26 deletions(-)
diff --git a/src/librustc_metadata/loader.rs b/src/librustc_metadata/loader.rs
index dc10391..9430b70 100644
--- a/src/librustc_metadata/loader.rs
+++ b/src/librustc_metadata/loader.rs
@@ -875,34 +875,29 @@ fn get_metadata_section_imp(target: &Target, flavor: CrateFlavor, filename: &Pat
}
pub fn meta_section_name(target: &Target) -> &'static str {
+ // Historical note:
+ //
+ // When using link.exe it was seen that the section name `.note.rustc`
+ // was getting shortened to `.note.ru`, and according to the PE and COFF
+ // specification:
+ //
+ // > Executable images do not use a string table and do not support
+ // > section names longer than 8 characters
+ //
+ // https://msdn.microsoft.com/en-us/library/windows/hardware/gg463119.aspx
+ //
+ // As a result, we choose a slightly shorter name! As to why
+ // `.note.rustc` works on MinGW, that's another good question...
+
if target.options.is_like_osx {
- "__DATA,__note.rustc"
- } else if target.options.is_like_msvc {
- // When using link.exe it was seen that the section name `.note.rustc`
- // was getting shortened to `.note.ru`, and according to the PE and COFF
- // specification:
- //
- // > Executable images do not use a string table and do not support
- // > section names longer than 8 characters
- //
- // https://msdn.microsoft.com/en-us/library/windows/hardware/gg463119.aspx
- //
- // As a result, we choose a slightly shorter name! As to why
- // `.note.rustc` works on MinGW, that's another good question...
- ".rustc"
+ "__DATA,.rustc"
} else {
- ".note.rustc"
+ ".rustc"
}
}
-pub fn read_meta_section_name(target: &Target) -> &'static str {
- if target.options.is_like_osx {
- "__note.rustc"
- } else if target.options.is_like_msvc {
- ".rustc"
- } else {
- ".note.rustc"
- }
+pub fn read_meta_section_name(_target: &Target) -> &'static str {
+ ".rustc"
}
// A diagnostic function for dumping crate metadata to an output stream
diff --git a/src/librustc_trans/base.rs b/src/librustc_trans/base.rs
index d4f0786..93c9d1a 100644
--- a/src/librustc_trans/base.rs
+++ b/src/librustc_trans/base.rs
@@ -2523,10 +2523,17 @@ pub fn write_metadata<'a, 'tcx>(cx: &SharedCrateContext<'a, 'tcx>,
};
unsafe {
llvm::LLVMSetInitializer(llglobal, llconst);
- let name =
+ let section_name =
cx.tcx().sess.cstore.metadata_section_name(&cx.sess().target.target);
- let name = CString::new(name).unwrap();
- llvm::LLVMSetSection(llglobal, name.as_ptr())
+ let name = CString::new(section_name).unwrap();
+ llvm::LLVMSetSection(llglobal, name.as_ptr());
+
+ // Also generate a .section directive to force no
+ // flags, at least for ELF outputs, so that the
+ // metadata doesn't get loaded into memory.
+ let directive = format!(".section {}", section_name);
+ let directive = CString::new(directive).unwrap();
+ llvm::LLVMSetModuleInlineAsm(cx.metadata_llmod(), directive.as_ptr())
}
return metadata;
}
--
2.7.4

View File

@@ -1,107 +0,0 @@
From bb2d8649b2b344e0bb4b1cf94135378831735557 Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Tue, 18 Nov 2014 01:40:21 -0500
Subject: [PATCH 01/10] Target: add default target.json path:
$libdir/rust/targets
---
src/librustc/session/config.rs | 6 +++---
src/librustc/session/mod.rs | 8 ++++++--
src/librustc_back/target/mod.rs | 13 +++++++++++--
3 files changed, 20 insertions(+), 7 deletions(-)
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
index e988ddc..563f3ac 100644
--- a/src/librustc/session/config.rs
+++ b/src/librustc/session/config.rs
@@ -42,7 +42,7 @@ use std::env;
use std::fmt;
use std::hash::{Hasher, SipHasher};
use std::iter::FromIterator;
-use std::path::PathBuf;
+use std::path::{Path, PathBuf};
pub struct Config {
pub target: Target,
@@ -1011,8 +1011,8 @@ pub fn build_configuration(sess: &Session,
v
}
-pub fn build_target_config(opts: &Options, sp: &Handler) -> Config {
- let target = match Target::search(&opts.target_triple) {
+pub fn build_target_config(sysroot: &Path, opts: &Options, sp: &Handler) -> Config {
+ let target = match Target::search(sysroot, &opts.target_triple[..]) {
Ok(t) => t,
Err(e) => {
sp.struct_fatal(&format!("Error loading target specification: {}", e))
diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs
index c71253a..13b4e05 100644
--- a/src/librustc/session/mod.rs
+++ b/src/librustc/session/mod.rs
@@ -395,13 +395,17 @@ pub fn build_session_(sopts: config::Options,
codemap: Rc<codemap::CodeMap>,
cstore: Rc<for<'a> CrateStore<'a>>)
-> Session {
- let host = match Target::search(config::host_triple()) {
+ let sysroot = match sopts.maybe_sysroot {
+ Some(ref x) => PathBuf::from(x),
+ None => filesearch::get_or_default_sysroot()
+ };
+ let host = match Target::search(&sysroot, config::host_triple()) {
Ok(t) => t,
Err(e) => {
panic!(span_diagnostic.fatal(&format!("Error loading host specification: {}", e)));
}
};
- let target_cfg = config::build_target_config(&sopts, &span_diagnostic);
+ let target_cfg = config::build_target_config(&sysroot, &sopts, &span_diagnostic);
let p_s = parse::ParseSess::with_span_handler(span_diagnostic, codemap);
let default_sysroot = match sopts.maybe_sysroot {
Some(_) => None,
diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs
index 18686e3..d439b59 100644
--- a/src/librustc_back/target/mod.rs
+++ b/src/librustc_back/target/mod.rs
@@ -49,6 +49,8 @@ use std::collections::BTreeMap;
use std::default::Default;
use std::io::prelude::*;
use syntax::abi::Abi;
+use std::borrow::ToOwned;
+use std::path::Path;
mod android_base;
mod apple_base;
@@ -541,12 +543,13 @@ impl Target {
///
/// The error string could come from any of the APIs called, including
/// filesystem access and JSON decoding.
- pub fn search(target: &str) -> Result<Target, String> {
+ pub fn search(sysroot: &Path, target: &str) -> Result<Target, String> {
use std::env;
use std::ffi::OsString;
use std::fs::File;
use std::path::{Path, PathBuf};
use serialize::json;
+ use std::iter::IntoIterator;
fn load_file(path: &Path) -> Result<Target, String> {
let mut f = File::open(path).map_err(|e| e.to_string())?;
@@ -577,8 +580,14 @@ impl Target {
.unwrap_or(OsString::new());
// FIXME 16351: add a sane default search path?
+ let mut default_path = sysroot.to_owned();
+ default_path.push(env!("CFG_LIBDIR_RELATIVE"));
+ default_path.push("rustlib");
- for dir in env::split_paths(&target_path) {
+ let paths = env::split_paths(&target_path)
+ .chain(Some(default_path).into_iter());
+
+ for dir in paths {
let p = dir.join(&path);
if p.is_file() {
return load_file(&p);
--
2.10.0

View File

@@ -1,73 +0,0 @@
From 0829743c109a147213d06d38052662a5f2b0dd9b Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Tue, 18 Nov 2014 14:52:56 -0500
Subject: [PATCH 02/10] mk: for stage0, use RUSTFLAGS to override target libs
dir
Setting HLIB specially for stage0 (and even more specially for windows)
also affects the location we place TLIB. To keep the TLIBs we build in
the place requested by configure, use '-L' and '--sysroot' to point
stage0-rustc at the appropriate location.
---
mk/main.mk | 29 ++++++++++++-----------------
1 file changed, 12 insertions(+), 17 deletions(-)
diff --git a/mk/main.mk b/mk/main.mk
index 90d3563..cdcbdf2 100644
--- a/mk/main.mk
+++ b/mk/main.mk
@@ -420,32 +420,26 @@ define SREQ
HROOT$(1)_H_$(3) = $(3)/stage$(1)
HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
-ifeq ($$(CFG_WINDOWSY_$(3)),1)
-# On Windows we always store host runtime libraries in the 'bin' directory because
-# there's no rpath. Target libraries go under $CFG_LIBDIR_RELATIVE (usually 'lib').
-HLIB_RELATIVE$(1)_H_$(3) = bin
-TROOT$(1)_T_$(2)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)/rustlib/$(2)
-# Remove the next 3 lines after a snapshot
-ifeq ($(1),0)
-RUSTFLAGS_STAGE0 += -L $$(TROOT$(1)_T_$(2)_H_$(3))/lib
-endif
-
-else
-
-ifeq ($(1),0)
-HLIB_RELATIVE$(1)_H_$(3) = lib
-else
HLIB_RELATIVE$(1)_H_$(3) = $$(CFG_LIBDIR_RELATIVE)
-endif
+
TROOT$(1)_T_$(2)_H_$(3) = $$(HLIB$(1)_H_$(3))/rustlib/$(2)
-endif
HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(HLIB_RELATIVE$(1)_H_$(3))
# Destinations of artifacts for target architectures
TBIN$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/bin
TLIB$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/lib
+# Don't trust stage0, be explicit about libraries
+# TODO: rather than specifying sysroot, we really want to tell which libdir to
+# use (ie: the dir containing 'rustlib'). This would allow us to avoid
+# passing the '-L' options.
+ifeq ($(1),0)
+RUSTFLAGS_S_$(1)_T_$(2)_H_$(3) += --sysroot "$$(HROOT$(1)_H_$(3))" \
+ -L "$$(TLIB$(1)_T_$(2)_H_$(3))"
+endif
+
+
# Preqrequisites for using the stageN compiler
ifeq ($(1),0)
HSREQ$(1)_H_$(3) = $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3))
@@ -558,6 +552,7 @@ STAGE$(1)_T_$(2)_H_$(3) := \
$$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \
--cfg $$(CFGFLAG$(1)_T_$(2)_H_$(3)) \
$$(CFG_RUSTC_FLAGS) $$(EXTRAFLAGS_STAGE$(1)) --target=$(2)) \
+ $$(RUSTFLAGS_S_$(1)_T_$(2)_H_$(3)) \
$$(RUSTC_FLAGS_$(2))
endef
--
2.10.0

View File

@@ -1,27 +0,0 @@
From 128503bf447e82b9e99bea8ef83294a6446036b5 Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Tue, 18 Nov 2014 13:48:14 -0500
Subject: [PATCH 03/10] mk: add missing CFG_LIBDIR_RELATIVE
---
mk/grammar.mk | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/mk/grammar.mk b/mk/grammar.mk
index 0d527bd..926f247 100644
--- a/mk/grammar.mk
+++ b/mk/grammar.mk
@@ -11,8 +11,8 @@
BG = $(CFG_BUILD_DIR)/grammar/
SG = $(S)src/grammar/
B = $(CFG_BUILD_DIR)/$(CFG_BUILD)/stage2/
-L = $(B)lib/rustlib/$(CFG_BUILD)/lib
-LD = $(CFG_BUILD)/stage2/lib/rustlib/$(CFG_BUILD)/lib/
+L = $(B)$(CFG_LIBDIR_RELATIVE)/rustlib/$(CFG_BUILD)/lib
+LD = $(CFG_BUILD)/stage2/$(CFG_LIBDIR_RELATIVE)/rustlib/$(CFG_BUILD)/lib/
RUSTC = $(STAGE2_T_$(CFG_BUILD)_H_$(CFG_BUILD))
ifeq ($(CFG_OSTYPE),apple-darwin)
FLEX_LDFLAGS=-ll
--
2.10.0

View File

@@ -1,25 +0,0 @@
From d73ce5d99346812fcf063a87b4efac54c263737d Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Wed, 3 Dec 2014 19:15:19 -0500
Subject: [PATCH 05/10] std/thread_local: workaround for NULL __dso_handle
---
src/libstd/thread/local.rs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/libstd/thread/local.rs b/src/libstd/thread/local.rs
index 152b977..3c62862 100644
--- a/src/libstd/thread/local.rs
+++ b/src/libstd/thread/local.rs
@@ -380,7 +380,7 @@ pub mod elf {
#[linkage = "extern_weak"]
static __cxa_thread_atexit_impl: *const libc::c_void;
}
- if !__cxa_thread_atexit_impl.is_null() {
+ if !__cxa_thread_atexit_impl.is_null() && !__dso_handle.is_null() {
type F = unsafe extern fn(dtor: unsafe extern fn(*mut u8),
arg: *mut u8,
dso_handle: *mut u8) -> libc::c_int;
--
2.10.0

View File

@@ -1,30 +0,0 @@
From f8d4b1ea925789bca1aa6261017d63f5efa95c0f Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Mon, 2 Mar 2015 13:34:59 -0500
Subject: [PATCH 06/10] mk/install: use disable-rewrite-paths
This stops the install scripts from doing work we've already handled.
Path rewriting is only useful for prepackaged binary installers.
---
mk/install.mk | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/mk/install.mk b/mk/install.mk
index d2e5449..e67650b 100644
--- a/mk/install.mk
+++ b/mk/install.mk
@@ -12,7 +12,9 @@ RUN_INSTALLER = cd tmp/empty_dir && \
sh ../../tmp/dist/$(1)/install.sh \
--prefix="$(DESTDIR)$(CFG_PREFIX)" \
--libdir="$(DESTDIR)$(CFG_LIBDIR)" \
- --mandir="$(DESTDIR)$(CFG_MANDIR)"
+ --mandir="$(DESTDIR)$(CFG_MANDIR)" \
+ "$(MAYBE_DISABLE_VERIFY)" \
+ --disable-rewrite-paths
install:
ifeq (root user, $(USER) $(patsubst %,user,$(SUDO_USER)))
--
2.10.0

View File

@@ -1,65 +0,0 @@
From 2a42d59c3671f3ab68d8ff49c46240842aff6eb6 Mon Sep 17 00:00:00 2001
From: Steven Walter <swalter@lexmark.com>
Date: Wed, 18 Nov 2015 08:33:26 -0500
Subject: [PATCH 07/10] Allow overriding crate_hash with -C crate_hash
The current crate hash is not stable from run-to-run. This causes
problems with bitbake; it needs a guarantee that every build with the
same input will generate compatible output, otherwise sstate won't work.
Using -C crate_hash, we can do that by using the bitbake input hash to
determine the crate hash; the bitbake input hash will be stable, but
still different for different rust recipes.
Upstream-Status: not-appropriate
Upstream wants to fix it's actual object generation here. See
https://github.com/rust-lang/rust/issues/34902 (and others) for details.
---
src/librustc/session/config.rs | 2 ++
src/librustc_trans/back/link.rs | 12 +++++++++++-
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
index 563f3ac..52a5130 100644
--- a/src/librustc/session/config.rs
+++ b/src/librustc/session/config.rs
@@ -804,6 +804,8 @@ options! {CodegenOptions, CodegenSetter, basic_codegen_options,
"choose the code model to use (rustc --print code-models for details)"),
metadata: Vec<String> = (Vec::new(), parse_list, [TRACKED],
"metadata to mangle symbol names with"),
+ crate_hash: String = ("".to_string(), parse_string, [TRACKED],
+ "override crate hash with given value"),
extra_filename: String = ("".to_string(), parse_string, [UNTRACKED],
"extra data to put in each output filename"),
codegen_units: usize = (1, parse_uint, [UNTRACKED],
diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs
index 3cf2500..0e48063 100644
--- a/src/librustc_trans/back/link.rs
+++ b/src/librustc_trans/back/link.rs
@@ -125,12 +125,22 @@ pub fn find_crate_name(sess: Option<&Session>,
}
+use std::hash::{Hasher, SipHasher};
+use rustc::hir::svh::Svh;
+
pub fn build_link_meta<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
name: &str)
-> LinkMeta {
+ let crate_hash = if tcx.sess.opts.cg.crate_hash != "" {
+ let mut state = SipHasher::new();
+ state.write(tcx.sess.opts.cg.crate_hash.as_bytes());
+ Svh::new(state.finish())
+ } else {
+ tcx.calculate_krate_hash()
+ };
let r = LinkMeta {
crate_name: name.to_owned(),
- crate_hash: tcx.calculate_krate_hash(),
+ crate_hash: crate_hash,
};
info!("{:?}", r);
return r;
--
2.10.0

View File

@@ -1,27 +0,0 @@
From 174ae38bcc197658dd0ad6bcdae2bb06112e68a2 Mon Sep 17 00:00:00 2001
From: Steven Walter <swalter@lexmark.com>
Date: Wed, 18 Nov 2015 08:41:17 -0500
Subject: [PATCH 08/10] mk/platform.mk: pass -C crate_hash to builds
bitbake recipe will export FORCE_CRATE_HASH
Upstream-Status: not-appropriate
---
mk/platform.mk | 1 +
1 file changed, 1 insertion(+)
diff --git a/mk/platform.mk b/mk/platform.mk
index d601cab..0b5e9f2 100644
--- a/mk/platform.mk
+++ b/mk/platform.mk
@@ -181,6 +181,7 @@ define CFG_MAKE_TOOLCHAIN
AR_$(1)=$(CROSS_PREFIX_$(1))$(AR_$(1))
LINK_$(1)=$(CROSS_PREFIX_$(1))$(LINK_$(1))
RUSTC_CROSS_FLAGS_$(1)=-C linker=$$(call FIND_COMPILER,$$(LINK_$(1))) \
+ -C crate_hash=$(FORCE_CRATE_HASH) \
-C ar=$$(call FIND_COMPILER,$$(AR_$(1))) $(RUSTC_CROSS_FLAGS_$(1))
RUSTC_FLAGS_$(1)=$$(RUSTC_CROSS_FLAGS_$(1)) $(RUSTC_FLAGS_$(1))
--
2.10.0

View File

@@ -0,0 +1,25 @@
From bff536002eba2ed322d329d9022ccdc77da458a3 Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Wed, 3 Dec 2014 19:15:19 -0500
Subject: [PATCH 3/3] std/thread_local: workaround for NULL __dso_handle
---
src/libstd/sys/unix/fast_thread_local.rs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/libstd/sys/unix/fast_thread_local.rs b/src/libstd/sys/unix/fast_thread_local.rs
index 0c625e7..31e7146 100644
--- a/src/libstd/sys/unix/fast_thread_local.rs
+++ b/src/libstd/sys/unix/fast_thread_local.rs
@@ -110,7 +110,7 @@ unsafe fn register_dtor(t: *mut u8, dtor: unsafe extern fn(*mut u8)) {
#[linkage = "extern_weak"]
static __cxa_thread_atexit_impl: *const libc::c_void;
}
- if !__cxa_thread_atexit_impl.is_null() {
+ if !__cxa_thread_atexit_impl.is_null() && !__dso_handle.is_null() {
type F = unsafe extern fn(dtor: unsafe extern fn(*mut u8),
arg: *mut u8,
dso_handle: *mut u8) -> libc::c_int;
--
2.10.1 (Apple Git-78)

View File

@@ -1,58 +0,0 @@
From c7daec775a917d9e3017bc35ea7d88cc9418f181 Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Mon, 2 Mar 2015 13:27:49 -0500
Subject: [PATCH] add option to disable rewriting of install paths
This is intended for use by rust & cargo's `make install`, as in that
case:
- these paths are typically built into the pre-install layout already
- attempting to do the replacement will be incorrect subdirectory
cases (ie: libdir=lib/foo)
---
install-template.sh | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/install-template.sh b/install-template.sh
index 042b955..4ecf430 100644
--- a/install-template.sh
+++ b/install-template.sh
@@ -618,16 +618,18 @@ install_components() {
# Decide the destination of the file
local _file_install_path="$_dest_prefix/$_file"
- if echo "$_file" | grep "^lib/" > /dev/null
- then
- local _f="$(echo "$_file" | sed 's/^lib\///')"
- _file_install_path="$CFG_LIBDIR/$_f"
- fi
+ if [ -n "${CFG_REWRITE_PATHS-}" ]; then
+ if echo "$_file" | grep "^lib/" > /dev/null
+ then
+ local _f="$(echo "$_file" | sed 's/^lib\///')"
+ _file_install_path="$CFG_LIBDIR/$_f"
+ fi
- if echo "$_file" | grep "^share/man/" > /dev/null
- then
- local _f="$(echo "$_file" | sed 's/^share\/man\///')"
- _file_install_path="$CFG_MANDIR/$_f"
+ if echo "$_file" | grep "^share/man/" > /dev/null
+ then
+ local _f="$(echo "$_file" | sed 's/^share\/man\///')"
+ _file_install_path="$CFG_MANDIR/$_f"
+ fi
fi
# Make sure there's a directory for it
@@ -810,6 +812,7 @@ valopt mandir "$CFG_DESTDIR_PREFIX/share/man" "install man pages in PATH"
opt ldconfig 1 "run ldconfig after installation (Linux only)"
opt verify 1 "obsolete"
flag verbose "run with verbose output"
+opt rewrite-paths 1 "rewrite install paths for libdir & mandir"
if [ $HELP -eq 1 ]
then
--
2.4.1

View File

@@ -1,58 +0,0 @@
From c7daec775a917d9e3017bc35ea7d88cc9418f181 Mon Sep 17 00:00:00 2001
From: Cody P Schafer <dev@codyps.com>
Date: Mon, 2 Mar 2015 13:27:49 -0500
Subject: [PATCH] add option to disable rewriting of install paths
This is intended for use by rust & cargo's `make install`, as in that
case:
- these paths are typically built into the pre-install layout already
- attempting to do the replacement will be incorrect subdirectory
cases (ie: libdir=lib/foo)
---
install-template.sh | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/install-template.sh b/install-template.sh
index 042b955..4ecf430 100644
--- a/install-template.sh
+++ b/install-template.sh
@@ -618,16 +618,18 @@ install_components() {
# Decide the destination of the file
local _file_install_path="$_dest_prefix/$_file"
- if echo "$_file" | grep "^lib/" > /dev/null
- then
- local _f="$(echo "$_file" | sed 's/^lib\///')"
- _file_install_path="$CFG_LIBDIR/$_f"
- fi
+ if [ -n "${CFG_REWRITE_PATHS-}" ]; then
+ if echo "$_file" | grep "^lib/" > /dev/null
+ then
+ local _f="$(echo "$_file" | sed 's/^lib\///')"
+ _file_install_path="$CFG_LIBDIR/$_f"
+ fi
- if echo "$_file" | grep "^share/man/" > /dev/null
- then
- local _f="$(echo "$_file" | sed 's/^share\/man\///')"
- _file_install_path="$CFG_MANDIR/$_f"
+ if echo "$_file" | grep "^share/man/" > /dev/null
+ then
+ local _f="$(echo "$_file" | sed 's/^share\/man\///')"
+ _file_install_path="$CFG_MANDIR/$_f"
+ fi
fi
# Make sure there's a directory for it
@@ -810,6 +812,7 @@ valopt mandir "$CFG_DESTDIR_PREFIX/share/man" "install man pages in PATH"
opt ldconfig 1 "run ldconfig after installation (Linux only)"
opt verify 1 "obsolete"
flag verbose "run with verbose output"
+opt rewrite-paths 1 "rewrite install paths for libdir & mandir"
if [ $HELP -eq 1 ]
then
--
2.4.1

View File

@@ -0,0 +1,24 @@
SUMMARY = "Rust standard libaries"
HOMEPAGE = "http://www.rust-lang.org"
SECTION = "devel"
LICENSE = "MIT | Apache-2.0"
RUSTLIB_DEP = ""
inherit cargo
# Needed so cargo can find libbacktrace
RUSTFLAGS += "-L ${STAGING_LIBDIR}"
S = "${RUSTSRC}/src/libstd"
do_compile_prepend () {
export CARGO_TARGET_DIR="${B}"
# For Rust 1.13.0 and newer
export RUSTC_BOOTSTRAP="1"
}
do_install () {
mkdir -p ${D}${rustlibdir}
cp ${B}/${TARGET_SYS}/release/deps/* ${D}${rustlibdir}
}

View File

@@ -1,41 +0,0 @@
SUMMARY = "Rust standard libaries"
HOMEPAGE = "http://www.rust-lang.org"
SECTION = "devel"
LICENSE = "MIT | Apache-2.0"
LIC_FILES_CHKSUM ="file://COPYRIGHT;md5=43e1f1fb9c0ee3af66693d8c4fecafa8"
SRC_URI = "\
https://static.rust-lang.org/dist/rustc-${PV}-src.tar.gz;name=rust \
"
require rust-source-${PV}.inc
S = "${WORKDIR}/rustc-${PV}"
CARGO_INDEX_COMMIT = "6127fc24b0b6fe73fe4d339817fbf000b9a798a2"
SRC_URI += "\
crate://crates.io/gcc/0.3.26 \
crate-index://crates.io/${CARGO_INDEX_COMMIT} \
"
DEPENDS += "compiler-rt (=${PV})"
RUSTLIB_DEP = ""
inherit cargo
# Needed so cargo can find libbacktrace
RUSTFLAGS += "-L ${STAGING_LIBDIR}"
S = "${WORKDIR}/rustc-${PV}"
do_compile_prepend () {
cd ${S}/src/rustc/std_shim
export CARGO_TARGET_DIR="${B}"
export RUSTC_BOOTSTRAP_KEY="${RS_KEY}"
}
do_install () {
mkdir -p ${D}${rustlibdir}
cp ${B}/${TARGET_SYS}/release/deps/* ${D}${rustlibdir}
}

View File

@@ -1,37 +0,0 @@
SUMMARY = "Rust standard libaries"
HOMEPAGE = "http://www.rust-lang.org"
SECTION = "devel"
LICENSE = "MIT | Apache-2.0"
LIC_FILES_CHKSUM ="file://COPYRIGHT;md5=43e1f1fb9c0ee3af66693d8c4fecafa8"
require rust-source-${PV}.inc
S = "${WORKDIR}/rustc-${PV}"
CARGO_INDEX_COMMIT = "6127fc24b0b6fe73fe4d339817fbf000b9a798a2"
SRC_URI += "\
crate://crates.io/gcc/0.3.27 \
crate-index://crates.io/${CARGO_INDEX_COMMIT} \
"
DEPENDS += "compiler-rt (=${PV})"
RUSTLIB_DEP = ""
inherit cargo
# Needed so cargo can find libbacktrace
RUSTFLAGS += "-L ${STAGING_LIBDIR}"
S = "${WORKDIR}/rustc-${PV}"
do_compile_prepend () {
cd ${S}/src/rustc/std_shim
export CARGO_TARGET_DIR="${B}"
export RUSTC_BOOTSTRAP_KEY="${RS_KEY}"
}
do_install () {
mkdir -p ${D}${rustlibdir}
cp ${B}/${TARGET_SYS}/release/deps/* ${D}${rustlibdir}
}

View File

@@ -0,0 +1,21 @@
require rust-source-${PV}.inc
require libstd-rs.inc
LIC_FILES_CHKSUM = "file://../../COPYRIGHT;md5=43e1f1fb9c0ee3af66693d8c4fecafa8"
# 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'"
SRC_URI += "\
crate://crates.io/cmake/0.1.18 \
crate://crates.io/env_logger/0.3.5 \
crate://crates.io/filetime/0.1.10 \
crate://crates.io/gcc/0.3.40 \
crate://crates.io/getopts/0.2.14 \
crate://crates.io/libc/0.2.17 \
crate://crates.io/log/0.3.6 \
crate://crates.io/num_cpus/0.2.13 \
crate://crates.io/rustc-serialize/0.3.19 \
crate://crates.io/toml/0.1.30 \
"

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

@@ -1,6 +1,5 @@
require rust.inc
inherit cross
require rust-source-${PV}.inc
# Otherwise we'll depend on what we provide
INHIBIT_DEFAULT_RUST_DEPS = "1"

View File

@@ -1,50 +0,0 @@
require rust.inc
inherit cross
require rust-source-${PV}.inc
# Otherwise we'll depend on what we provide
INHIBIT_DEFAULT_RUST_DEPS = "1"
# Unlike native (which nicely maps it's DEPENDS) cross wipes them out completely.
# Generally, we (and cross in general) need the same things that native needs,
# so it might make sense to take it's mapping. For now, though, we just mention
# the bits we need explicitly.
DEPENDS += "rust-llvm-native"
DEPENDS += "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}compilerlibs virtual/libc"
DEPENDS += "rust-native"
PROVIDES = "virtual/${TARGET_PREFIX}rust"
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
# include the '../../lib' (ie: relative path from cross_bindir to normal
# libdir. As a result, we end up not being able to properly reference files in normal ${libdir}.
# Most of the time this happens to work fine as the systems libraries are
# subsituted, but sometimes a host system will lack a library, or the right
# version of a library (libtinfo was how I noticed this).
#
# 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"
# 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_configure () {
}
do_compile () {
}
do_install () {
mkdir -p ${D}${prefix}/${base_libdir_native}/rustlib
cp ${WORKDIR}/targets/${TARGET_SYS}.json ${D}${prefix}/${base_libdir_native}/rustlib
}
rust_cross_sysroot_preprocess() {
sysroot_stage_dir ${D}${prefix}/${base_libdir_native}/rustlib ${SYSROOT_DESTDIR}${prefix}/${base_libdir_native}/rustlib
}
SYSROOT_PREPROCESS_FUNCS += "rust_cross_sysroot_preprocess"

View File

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

View File

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

View File

@@ -1,7 +1,7 @@
SUMMARY = "LLVM compiler framework (packaged with rust)"
LICENSE = "NCSA"
S = "${WORKDIR}/rustc-${PV}/src/llvm"
S = "${RUSTSRC}/src/llvm"
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=4c0bc17c954e99fd547528d938832bfa"
@@ -27,50 +27,6 @@ EXTRA_OECMAKE = " \
# provide almost no value. If you really need them then override this
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
EXTRA_OECMAKE_append_class-target = "\
-DCROSS_TOOLCHAIN_FLAGS_NATIVE='-DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/native_toolchain.cmake' \
"
do_generate_native_toolchain_file() {
cat > ${WORKDIR}/native_toolchain.cmake <<EOF
set( CMAKE_SYSTEM_NAME `echo ${BUILD_OS} | sed -e 's/^./\u&/' -e 's/^\(Linux\).*/\1/'` )
set( CMAKE_SYSTEM_PROCESSOR ${BUILD_ARCH} )
set( CMAKE_C_COMPILER ${BUILD_CC} )
set( CMAKE_CXX_COMPILER ${BUILD_CXX} )
set( CMAKE_ASM_COMPILER ${BUILD_AS} )
set( CMAKE_AR ${BUILD_AR} CACHE FILEPATH "Archiver" )
set( CMAKE_C_FLAGS "${BUILD_CC_ARCH} ${BUILD_CFLAGS}" CACHE STRING "CFLAGS" )
set( CMAKE_CXX_FLAGS "${BUILD_CC_ARCH} ${BUILD_CXXFLAGS}" CACHE STRING "CXXFLAGS" )
set( CMAKE_ASM_FLAGS "${BUILD_CC_ARCH} ${BUILD_CFLAGS}" CACHE STRING "ASM FLAGS" )
set( CMAKE_C_FLAGS_RELEASE "${SELECTED_OPTIMIZATION} ${BUILD_CFLAGS} -DNDEBUG" CACHE STRING "CFLAGS for release" )
set( CMAKE_CXX_FLAGS_RELEASE "${SELECTED_OPTIMIZATION} ${BUILD_CXXFLAGS} -DNDEBUG" CACHE STRING "CXXFLAGS for release" )
set( CMAKE_ASM_FLAGS_RELEASE "${SELECTED_OPTIMIZATION} ${BUILD_CFLAGS} -DNDEBUG" CACHE STRING "ASM FLAGS for release" )
set( CMAKE_C_LINK_FLAGS "${BUILD_CC_ARCH} ${BUILD_CPPFLAGS} ${BUILD_LDFLAGS}" CACHE STRING "LDFLAGS" )
set( CMAKE_CXX_LINK_FLAGS "${BUILD_CC_ARCH} ${BUILD_CXXFLAGS} ${BUILD_LDFLAGS}" CACHE STRING "LDFLAGS" )
# only search in the paths provided so cmake doesnt pick
# up libraries and tools from the native build machine
set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN})
set( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY )
set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )
# Use native cmake modules
set( CMAKE_MODULE_PATH ${STAGING_DATADIR}/cmake/Modules/ )
# add for non /usr/lib libdir, e.g. /usr/lib64
set( CMAKE_LIBRARY_PATH ${libdir} ${base_libdir})
EOF
}
addtask generate_native_toolchain_file after do_patch before do_configure
do_configure_prepend_class-native() {
# Use host paths for native tools
sed -i -e '/CMAKE_FIND_ROOT_PATH_MODE/d' ${WORKDIR}/toolchain.cmake
}
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

View File

@@ -1,2 +0,0 @@
require rust-llvm.inc
require rust-source-${PV}.inc

View File

@@ -1,7 +1,7 @@
require rust-llvm.inc
require rust-source-${PV}.inc
require rust-llvm.inc
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=43fdaa303c1c5589ad60f4ffc6a0b9ce"
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=b99eb43c934ceebecab85c6b9b1a08be"
do_install_prepend () {
# the install does a sed on this without installing the file

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,30 @@
# Specifics for Rust 1.15.1
## 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.14.0"
RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${RUST_BUILD_SYS}"
RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${RUST_BUILD_SYS}"
CARGO_REV = "fbeea902d2c9a5be6d99cc35681565d8f7832592"
CARGO_SNAPSHOT = "cargo-nightly-${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 \
"
# Downloaded cargo tarballs must be named differently to distinguish between versions.
SRC_URI += " \
https://s3.amazonaws.com/rust-lang-ci/cargo-builds/${CARGO_REV}/${CARGO_SNAPSHOT}.tar.gz;name=cargo-snapshot;subdir=rust-snapshot-components;downloadfilename=${CARGO_SNAPSHOT}-${CARGO_REV}.tar.gz \
"
# These are x86_64-unknown-linux-gnu hashes, how can we add more?
SRC_URI[rustc-snapshot.md5sum] = "f178d9d6aad0f87c451f4b2f93170633"
SRC_URI[rustc-snapshot.sha256sum] = "0eeec4211aa872f24c220200a0c2b095bbfc9c0f737c1c5df2555967c8f36787"
SRC_URI[rust-std-snapshot.md5sum] = "518e492fc3d50d8c678056eb788bd0e7"
SRC_URI[rust-std-snapshot.sha256sum] = "3a609bfe9572c742d71199faad578ee76abe9067cd8df698bda6e3ef5caf6ec4"
SRC_URI[cargo-snapshot.md5sum] = "59bc24d15c393de364dadb3f4e3c9a5a"
SRC_URI[cargo-snapshot.sha256sum] = "0e052514ee88f236153a0d6c6f38f66d691eb4cf1ac09e6040d96e5101d57800"

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

@@ -1,17 +0,0 @@
# Specifics for Rust 1.10.0
## snapshot info 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.9.0"
RS_KEY = "e8edd0fd"
RUST_SNAPSHOT = "rustc-${RS_VERSION}-${RUST_BUILD_SYS}"
# These are x86_64-unknown-linux-gnu hashes, how can we add more?
SRC_URI[rust-snapshot.md5sum] = "f1cf6d2fe15e4be18a08259f1540a4ae"
SRC_URI[rust-snapshot.sha256sum] = "d0704d10237c66c3efafa6f7e5570c59a1d3fe5c6d99487540f90ebb37cd84c4"
SRC_URI[rust.md5sum] = "a48fef30353fc9daa70b484b690ce5db"
SRC_URI[rust.sha256sum] = "a4015aacf4f6d8a8239253c4da46e7abaa8584f8214d1828d2ff0a8f56176869"

View File

@@ -1,21 +0,0 @@
# Specifics for Rust 1.12.1
## 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.11.0"
RS_KEY = "5c6cf767"
RUST_SNAPSHOT = "rustc-${RS_VERSION}-${RUST_BUILD_SYS}"
# These are x86_64-unknown-linux-gnu hashes, how can we add more?
SRC_URI[rust-snapshot.md5sum] = "b83d7a1a90c2d80bef97a518022948c8"
SRC_URI[rust-snapshot.sha256sum] = "e9d27a72900da33c1bbd0e59dd42fd6414c6bcdfa33593fb7c7360068406394a"
SRC_URI += "\
https://static.rust-lang.org/dist/rustc-${PV}-src.tar.gz;name=rust \
"
SRC_URI[rust.md5sum] = "82db5a9cb9a051bf8ece2f5174cb273b"
SRC_URI[rust.sha256sum] = "97913ae4cb255618aaacd1a534b11f343634b040b32656250d09d8d9ec02d3dc"

View File

@@ -0,0 +1,14 @@
# Specifics for Rust 1.15.1
SRC_URI += "\
https://static.rust-lang.org/dist/rustc-${PV}-src.tar.gz;name=rust \
"
SRC_URI[rust.md5sum] = "5bbfff5ef8857a73d120616546a7fd29"
SRC_URI[rust.sha256sum] = "2e7daad418a830b45b977cd7ecf181b65f30f73df63ff36e124ea5fe5d1af327"
# 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=43e1f1fb9c0ee3af66693d8c4fecafa8"

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

@@ -2,23 +2,28 @@ 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=43e1f1fb9c0ee3af66693d8c4fecafa8"
inherit rust
inherit cargo_common
SRC_URI = "\
https://static.rust-lang.org/dist/${RUST_SNAPSHOT}.tar.gz;name=rust-snapshot \
"
S = "${WORKDIR}/rustc-${PV}"
DEPENDS += "file-native"
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}"
setup_cargo_environment () {
# The first step is to build bootstrap and some early stage tools,
# these are build for the same target as the snapshot, e.g.
# x86_64-unknown-linux-gnu.
# Later stages are build for the native target (i.e. target.x86_64-linux)
cargo_common_do_configure
echo "[target.${RUST_BUILD_SYS}]" >> ${CARGO_HOME}/config
echo "linker = '${RUST_TARGET_CCLD}'" >> ${CARGO_HOME}/config
}
# 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).
@@ -26,7 +31,7 @@ export FORCE_CRATE_HASH="${BB_TASKHASH}"
# don't want to use this for the host/build.
def llvm_features_from_tune(d):
f = []
feat = d.getVar('TUNE_FEATURES', True)
feat = d.getVar('TUNE_FEATURES')
if not feat:
return ""
feat = frozenset(feat.split())
@@ -56,7 +61,7 @@ def llvm_features_from_tune(d):
if 'dsp' in feat:
f.append("+dsp")
if d.getVar('ARM_THUMB_OPT', True) is "thumb":
if d.getVar('ARM_THUMB_OPT') is "thumb":
if not feat.isdisjoint(v7):
f.append("+thumb2")
f.append("+thumb-mode")
@@ -84,7 +89,7 @@ def llvm_features_from_tune(d):
# stable (1.9.0?)
def llvm_features_from_cc_arch(d):
f = []
feat = d.getVar('TARGET_CC_ARCH', True)
feat = d.getVar('TARGET_CC_ARCH')
if not feat:
return ""
feat = frozenset(feat.split())
@@ -117,6 +122,7 @@ 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"
MAX_ATOMIC_WIDTH[arm] = "64"
FEATURES[arm] = "+v6,+vfp2"
## aarch64-unknown-linux-gnu
@@ -124,48 +130,37 @@ 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"
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"
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"
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"
MAX_ATOMIC_WIDTH[i586] = "64"
def arch_for(d, thing):
return d.getVar('{}_ARCH'.format(thing), True)
return d.getVar('{}_ARCH'.format(thing))
def sys_for(d, thing):
return d.getVar('{}_SYS'.format(thing), True)
return d.getVar('{}_SYS'.format(thing))
def prefix_for(d, thing):
return d.getVar('{}_PREFIX'.format(thing), True)
## Note: TOOLCHAIN_OPTIONS is set to "" by native.bbclass and cross.bbclass,
## which prevents us from grabbing them when building a cross compiler (native doesn't matter).
## We workaround this in internal-rust-cross.bbclass.
def cflags_for(d, thing):
cc_arch = d.getVar('{}_CC_ARCH'.format(thing), True) or ""
flags = d.getVar('{}_CFLAGS'.format(thing), True) or ""
tc = d.getVar('TOOLCHAIN_OPTIONS', True) or ""
return ' '.join([cc_arch, flags, tc])
def cxxflags_for(d, thing):
cc_arch = d.getVar('{}_CC_ARCH'.format(thing), True) or ""
flags = d.getVar('{}_CXXFLAGS'.format(thing), True) or ""
tc = d.getVar('TOOLCHAIN_OPTIONS', True) or ""
return ' '.join([cc_arch, flags, tc])
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.
@@ -177,8 +172,8 @@ def arch_to_rust_target_arch(arch):
# generates our target CPU value
def llvm_cpu(d):
cpu = d.getVar('TUNE_PKGARCH', True)
target = d.getVar('TRANSLATED_TARGET_ARCH', True)
cpu = d.getVar('PACKAGE_ARCH')
target = d.getVar('TRANSLATED_TARGET_ARCH')
trans = {}
trans['corei7-64'] = "corei7"
@@ -201,6 +196,7 @@ TARGET_LLVM_FEATURES_class-native = "${@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)
@@ -208,42 +204,50 @@ def rust_gen_target(d, thing, wd):
features = ""
cpu = "generic"
if thing is "TARGET":
features = d.getVar('TARGET_LLVM_FEATURES', True) or ""
cpu = d.getVar('TARGET_LLVM_CPU', True)
features = features or d.getVarFlag('FEATURES', arch, True) or ""
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, True)
tspec['data-layout'] = d.getVarFlag('DATA_LAYOUT', arch, True)
tspec['target-pointer-width'] = d.getVarFlag('TARGET_POINTER_WIDTH', arch, True)
tspec['target-word-size'] = tspec['target-pointer-width']
tspec['target-endian'] = d.getVarFlag('TARGET_ENDIAN', arch, True)
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-endian'] = d.getVarFlag('TARGET_ENDIAN', arch)
tspec['arch'] = arch_to_rust_target_arch(arch)
tspec['os'] = "linux"
tspec['env'] = "gnu"
tspec['linker'] = "{}{}gcc".format(d.getVar('CCACHE', True), prefix)
tspec['objcopy'] = "{}objcopy".format(prefix)
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['morestack'] = True
tspec['linker-is-gnu'] = True
tspec['linker-flavor'] = "gcc"
tspec['has-rpath'] = True
tspec['has-elf-tls'] = True
tspec['position-independent-executables'] = True
# 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)
json.dump(tspec, f, indent=4)
python do_rust_gen_targets () {
wd = d.getVar('WORKDIR', True) + '/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.
@@ -254,128 +258,86 @@ python do_rust_gen_targets () {
addtask rust_gen_targets after do_patch before do_compile
do_rust_gen_targets[dirs] += "${WORKDIR}/targets"
def rust_gen_mk_cfg(d, thing):
''''
Rust's build system adds support for new archs via 2 things:
1. a file in mk/cfg which defines how the runtime libraries are built
2. and rustc arch definition either built into the compiler or supplied as a .json file
This generates a new #1 for the given 'thing' (one of HOST, TARGET, BUILD)
using a "similar" config that rust already supplies as a template.
do_rust_setup_snapshot () {
for installer in "${WORKDIR}/rust-snapshot-components/"*"/install.sh"; do
"${installer}" --prefix="${WORKDIR}/rust-snapshot" --disable-ldconfig
done
Note that the configure process also depends on the existence of #1, so we
have to run this before do_configure
'''
import os
import subprocess
rust_base_sys = rust_base_triple(d, thing)
arch = arch_for(d, thing)
sys = sys_for(d, thing)
prefix = prefix_for(d, thing)
llvm_target = d.getVarFlag('LLVM_TARGET', arch, True)
ldflags = d.getVar('LDFLAGS', True) + d.getVar('HOST_CC_ARCH', True) + d.getVar('TOOLCHAIN_OPTIONS', True)
b = os.path.join(d.getVar('S', True), 'mk', 'cfg')
o = open(os.path.join(b, sys_for(d, thing) + '.mk'), 'w')
i = open(os.path.join(b, rust_base_sys + '.mk'), 'r')
r = subprocess.call(['sed',
# CFLAGS, LDFLAGS, CXXFLAGS, CPPFLAGS are used by rust's build for a
# wide range of targets (not just HOST). Yocto's settings for them will
# be inappropriate, avoid having random targets try to use them, we'll
# add as needed.
'-e', 's/$(CFLAGS)//',
'-e', 's/$(CXXFLAGS)//',
'-e', 's/$(CPPFLAGS)//',
'-e', 's/$(LDFLAGS)//',
# update all triplets to the new one
'-e', 's/{}/{}/g'.format(rust_base_sys, sys),
# Replace tools with our own (CROSS_PREFIX is appended to all tools
# by rust's build system). We delete and then insert this because not
# all targets define it.
'-e', 's/^CROSS_PREFIX_{}.*$//'.format(sys),
'-e', '2 a CROSS_PREFIX_{} := {}'.format(sys, prefix),
'-e', 's/^CFG_LLVM_TARGET_.*$//',
'-e', '2 a CFG_LLVM_TARGET_{} := {}'.format(sys, llvm_target),
'-e', 's/^CC_{}=.*$/CC_{} := gcc/'.format(sys, sys),
'-e', 's/^CXX_{}.*$/CXX_{} := g++/'.format(sys, sys),
'-e', 's/^CPP_{}.*$/CPP_{} := gcc -E/'.format(sys, sys),
'-e', 's/^AR_{}.*$/AR_{} := ar/'.format(sys, sys),
# Some targets don't have LINK even though it is required to build.
'-e', 's/^LINK_{}.*$//'.format(sys),
'-e', '2 a LINK_{} := gcc'.format(sys),
# Append our flags to the existing ones
'-e', '/^CFG_JEMALLOC_CFLAGS/ s;$; {};'.format(cflags_for(d, thing)),
'-e', '/^CFG_GCCISH_CFLAGS/ s;$; {};'.format(cflags_for(d, thing)),
'-e', '/^CFG_GCCISH_CXXFLAGS/ s;$; {};'.format(cxxflags_for(d, thing)),
'-e', '/^CFG_GCCISH_LINK_FLAGS/ s;$; {};'.format(ldflags),
# May need to add: CFG_LLC_FLAGS_{}
], stdout=o, stdin=i)
if r:
raise Exception
o.write("OBJCOPY_{} := {}objcopy\n".format(sys, prefix))
# Note: this isn't how this variable is supposed to be used, but for
# non-msvc platforms nothing else touches it.
# These are the only extra flags passed to the rustllvm (c++ code) build.
# These are only used for host (even though we emit them for all targets)
# Without this, there are link failures due to GLIBC_CXX11_ABI issues in
# certain setups.
o.write("EXTRA_RUSTLLVM_CXXFLAGS_{} := {}\n".format(sys, cxxflags_for(d, thing)))
o.close()
i.close()
python do_rust_arch_fixup () {
for thing in ['BUILD', 'HOST', 'TARGET']:
bb.debug(1, "rust_gen_mk_cfg for " + thing)
rust_gen_mk_cfg(d, thing)
# Some versions of rust (e.g. 1.18.0) tries to find cargo in stage0/bin/cargo
# and fail without it there.
mkdir -p ${RUSTSRC}/build/${BUILD_SYS}
ln -s ${WORKDIR}/rust-snapshot/ ${RUSTSRC}/build/${BUILD_SYS}/stage0
}
addtask rust_arch_fixup before do_configure after do_patch
do_rust_arch_fixup[dirs] += "${S}/mk/cfg"
addtask rust_setup_snapshot after do_unpack before do_configure
do_rust_setup_snapshot[dirs] += "${WORKDIR}/rust-snapshot"
# prevent the rust-installer scripts from calling ldconfig
export CFG_DISABLE_LDCONFIG="notempty"
# rust's configure doesn't recognize --disable-static, so remove it.
DISABLE_STATIC = ""
python do_configure() {
import json
try:
import configparser
except ImportError:
import ConfigParser as configparser
do_configure () {
# FIXME: target_prefix vs prefix, see cross.bbclass
# toml is rather similar to standard ini like format except it likes values
# that look more JSON like. So for our purposes simply escaping all values
# as JSON seem to work fine.
# - rpath is required otherwise rustc fails to resolve symbols
# - submodule management is done by bitbake's fetching
${S}/configure \
"--enable-rpath" \
"--disable-docs" \
"--disable-manage-submodules" \
"--disable-debug" \
"--enable-optimize" \
"--enable-optimize-cxx" \
"--disable-llvm-version-check" \
"--llvm-root=${STAGING_DIR_NATIVE}/${prefix_native}" \
"--enable-optimize-tests" \
"--release-channel=stable" \
"--prefix=${prefix}" \
"--target=${TARGET_SYS}" \
"--host=${HOST_SYS}" \
"--build=${BUILD_SYS}" \
"--localstatedir=${localstatedir}" \
"--sysconfdir=${sysconfdir}" \
"--datadir=${datadir}" \
"--infodir=${infodir}" \
"--mandir=${mandir}" \
"--libdir=${libdir}" \
"--enable-local-rust" \
"--local-rust-root=${WORKDIR}/${RUST_SNAPSHOT}/rustc" \
${EXTRA_OECONF}
e = lambda s: json.dumps(s)
config = configparser.RawConfigParser()
# [target.ARCH-poky-linux]
target_section = "target.{}".format(d.getVar('TARGET_SYS', True))
config.add_section(target_section)
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}")))
# [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))
# [build]
config.add_section("build")
config.set("build", "submodules", e(False))
config.set("build", "docs", e(False))
rustc = d.expand("${WORKDIR}/rust-snapshot/bin/rustc")
config.set("build", "rustc", e(rustc))
cargo = d.expand("${WORKDIR}/rust-snapshot/bin/cargo")
config.set("build", "cargo", e(cargo))
targets = [d.getVar("TARGET_SYS", True)]
config.set("build", "target", e(targets))
hosts = [d.getVar("HOST_SYS", True)]
config.set("build", "host", e(targets))
config.set("build", "build", e(d.getVar("BUILD_SYS", True)))
with open("config.toml", "w") as f:
config.write(f)
# set up ${WORKDIR}/cargo_home
bb.build.exec_func("setup_cargo_environment", d)
}
rust_runmake () {
rust_runx () {
echo "COMPILE ${PN}" "$@"
# CFLAGS, LDFLAGS, CXXFLAGS, CPPFLAGS are used by rust's build for a
@@ -386,15 +348,27 @@ rust_runmake () {
unset CXXFLAGS
unset CPPFLAGS
oe_runmake "VERBOSE=1" "$@"
oe_cargo_fix_env
python src/bootstrap/bootstrap.py "$@" --verbose
}
do_compile () {
rust_runmake
rust_runx build
}
rust_do_install () {
rust_runmake DESTDIR="${D}" install
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
# Install our custom target.json files
local td="${D}${libdir}/rustlib/"
@@ -403,10 +377,6 @@ rust_do_install () {
install -m 0644 "$tgt" "$td"
done
# Remove any files directly installed into libdir to avoid
# conflicts between cross and native
rm -f ${D}${libdir}/lib*.so
# cleanup after rust-installer since we don't need these bits
rm ${D}/${libdir}/rustlib/install.log
rm ${D}/${libdir}/rustlib/rust-installer-version
@@ -414,7 +384,8 @@ rust_do_install () {
rm ${D}/${libdir}/rustlib/components
}
do_install () {
rust_do_install
rust_do_dist_install
}
# ex: sts=4 et sw=4 ts=8

View File

@@ -1,27 +0,0 @@
require rust.inc
require rust-source-${PV}.inc
# overriden due to difference between 1.10.0 and 1.12.1
DATA_LAYOUT[aarch64] = "e-m:e-i64:64-i128:128-n32:64-S128"
SRC_URI += " \
file://rust-${PV}/0001-Add-config-for-musl-based-arm-builds.patch \
file://rust-${PV}/0002-Target-add-default-target.json-path-libdir-rust-targ.patch \
file://rust-${PV}/0003-mk-for-stage0-use-RUSTFLAGS-to-override-target-libs-.patch \
file://rust-${PV}/0004-mk-add-missing-CFG_LIBDIR_RELATIVE.patch \
file://rust-${PV}/0006-std-thread_local-workaround-for-NULL-__dso_handle.patch \
file://rust-${PV}/0007-mk-install-use-disable-rewrite-paths.patch \
file://rust-${PV}/0008-Allow-overriding-crate_hash-with-C-crate_hash.patch \
file://rust-${PV}/0009-mk-platform.mk-pass-C-crate_hash-to-builds.patch \
file://rust-${PV}/0011-Get-rid-of-the-.note-interpretation-of-rustc-dylib-m.patch \
file://rust-installer-${PV}/0001-add-option-to-disable-rewriting-of-install-paths.patch;patchdir=src/rust-installer \
"
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,27 +0,0 @@
require rust.inc
require rust-source-${PV}.inc
# the configure script always requires cmake so despite
# rust not needing this (only rust-llvm needs it) we must
# have it for the configure script to succeed.
DEPENDS += "cmake-native"
SRC_URI += " \
file://rust-${PV}/0001-Target-add-default-target.json-path-libdir-rust-targ.patch \
file://rust-${PV}/0002-mk-for-stage0-use-RUSTFLAGS-to-override-target-libs-.patch \
file://rust-${PV}/0003-mk-add-missing-CFG_LIBDIR_RELATIVE.patch \
file://rust-${PV}/0005-std-thread_local-workaround-for-NULL-__dso_handle.patch \
file://rust-${PV}/0006-mk-install-use-disable-rewrite-paths.patch \
file://rust-${PV}/0007-Allow-overriding-crate_hash-with-C-crate_hash.patch \
file://rust-${PV}/0008-mk-platform.mk-pass-C-crate_hash-to-builds.patch \
file://rust-installer-${PV}/0001-add-option-to-disable-rewriting-of-install-paths.patch;patchdir=src/rust-installer \
"
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,30 @@
require rust.inc
require rust-source-${PV}.inc
require rust-snapshot-${PV}.inc
SRC_URI += " \
file://rust-${PV}/0003-std-thread_local-workaround-for-NULL-__dso_handle.patch \
"
# These are extracted from rustc/src/bootstrap/Cargo.toml.
SRC_URI += " \
crate://crates.io/cmake/0.1.18 \
crate://crates.io/env_logger/0.3.5 \
crate://crates.io/filetime/0.1.10 \
crate://crates.io/gcc/0.3.40 \
crate://crates.io/getopts/0.2.14 \
crate://crates.io/libc/0.2.17 \
crate://crates.io/log/0.3.6 \
crate://crates.io/num_cpus/0.2.13 \
crate://crates.io/rustc-serialize/0.3.19 \
crate://crates.io/toml/0.1.30 \
"
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,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

@@ -1,44 +0,0 @@
inherit cargo
CARGO_INDEX_COMMIT = "3b3994e099281c394a6a66604d1af6c0920e4c31"
SRC_URI = " \
crate://crates.io/aho-corasick/0.5.1 \
crate://crates.io/bitflags/0.5.0 \
crate://crates.io/diff/0.1.9 \
crate://crates.io/env_logger/0.3.2 \
crate://crates.io/getopts/0.2.14 \
crate://crates.io/kernel32-sys/0.2.1 \
crate://crates.io/libc/0.2.8 \
crate://crates.io/log/0.3.5 \
crate://crates.io/memchr/0.1.10 \
crate://crates.io/regex/0.1.58 \
crate://crates.io/regex-syntax/0.3.0 \
crate://crates.io/rustc-serialize/0.3.18 \
crate://crates.io/strings/0.0.1 \
crate://crates.io/syntex_syntax/0.30.0 \
crate://crates.io/term/0.2.14 \
crate://crates.io/toml/0.1.28 \
crate://crates.io/unicode-segmentation/0.1.2 \
crate://crates.io/unicode-xid/0.0.3 \
crate://crates.io/utf8-ranges/0.1.3 \
crate://crates.io/winapi/0.2.6 \
crate://crates.io/winapi-build/0.1.1 \
crate://crates.io/rustfmt/0.4.0 \
crate-index://crates.io/${CARGO_INDEX_COMMIT} \
"
SRC_URI[md5sum] = "7fc46357c9c5e72a3a1ec3630c8c7a05"
SRC_URI[sha256sum] = "770c66dc845424a0c9a7f51b47d8de1e2605298da9b257ddde1d5be6fe01331f"
SRC_URI[index.md5sum] = "79f10f436dbf26737cc80445746f16b4"
SRC_URI[index.sha256sum] = "86114b93f1f51aaf0aec3af0751d214b351f4ff9839ba031315c1b19dcbb1913"
# rustfmt 0.5.0
#LIC_FILES_CHKSUM=" \
# file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
# file://LICENSE-MIT;md5=0b29d505d9225d1f0815cbdcf602b901 \
#"
LIC_FILES_CHKSUM="file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
SUMMARY = "Format Rust Code"
HOMEPAGE = "https://github.com/rust-lang-nursery/rustfmt"
LICENSE = "MIT | Apache-2.0"

View File

@@ -0,0 +1,67 @@
# Auto-Generated by cargo-bitbake 0.3.6
#
inherit cargo
# If this is git based prefer versioned ones if they exist
# DEFAULT_PREFERENCE = "-1"
# how to get rustfmt could be as easy as but default to a git checkout:
# SRC_URI += "crate://crates.io/rustfmt/0.8.0"
SRC_URI += "git://github.com/rust-lang-nursery/rustfmt.git;protocol=https;branch=syntex"
SRCREV = "4ed5a3bac71ed104e27797ee63729b0333e39d39"
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/aho-corasick/0.6.2 \
crate://crates.io/bitflags/0.8.0 \
crate://crates.io/diff/0.1.10 \
crate://crates.io/either/1.0.3 \
crate://crates.io/env_logger/0.4.1 \
crate://crates.io/getopts/0.2.14 \
crate://crates.io/itertools/0.5.9 \
crate://crates.io/kernel32-sys/0.2.2 \
crate://crates.io/libc/0.2.21 \
crate://crates.io/log/0.3.6 \
crate://crates.io/memchr/1.0.1 \
crate://crates.io/multimap/0.3.0 \
crate://crates.io/regex-syntax/0.4.0 \
crate://crates.io/regex/0.2.1 \
crate://crates.io/rustc-serialize/0.3.22 \
crate://crates.io/same-file/0.1.3 \
crate://crates.io/strings/0.0.1 \
crate://crates.io/syntex_errors/0.58.1 \
crate://crates.io/syntex_pos/0.58.1 \
crate://crates.io/syntex_syntax/0.58.1 \
crate://crates.io/term/0.4.5 \
crate://crates.io/thread-id/3.0.0 \
crate://crates.io/thread_local/0.3.3 \
crate://crates.io/toml/0.2.1 \
crate://crates.io/unicode-segmentation/1.1.0 \
crate://crates.io/unicode-xid/0.0.4 \
crate://crates.io/unreachable/0.1.1 \
crate://crates.io/utf8-ranges/1.0.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 \
"
LIC_FILES_CHKSUM=" \
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
file://LICENSE-MIT;md5=0b29d505d9225d1f0815cbdcf602b901 \
"
SUMMARY = "Tool to find and fix Rust formatting issues"
HOMEPAGE = "https://github.com/rust-lang-nursery/rustfmt"
LICENSE = "Apache-2.0 | MIT"
# 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 rustfmt.inc

View File

@@ -1,4 +1,4 @@
#!/bin/bash -e
#!/bin/bash -x
# Only attempt to unmount if the directory is already mounted
if mountpoint -q `pwd`/build; then

View File

@@ -1,7 +1,7 @@
#!/bin/bash
# what container are we using to build this
CONTAINER="starlabio/yocto:1.5"
CONTAINER="cardoe/yocto:pyro"
einfo() {
echo "$*" >&2

View File

@@ -40,10 +40,11 @@ update_repo() {
git fetch origin || die "unable to fetch ${uri}"
else
echo "Cloning '${path}'"
if [ -z "${GIT_LOCAL_REF_DIR}" ]; then
git clone ${uri} ${path} || die "unable to clone ${uri}"
if [ -d "${GIT_LOCAL_REF_DIR}" ]; then
git clone --reference ${GIT_LOCAL_REF_DIR}/`basename ${path}` \
${uri} ${path} || die "unable to clone ${uri}"
else
git clone --reference ${GIT_LOCAL_REF_DIR}/`basename ${path}` ${uri} ${path}
git clone ${uri} ${path} || die "unable to clone ${uri}"
fi
pushd ${path} > /dev/null
fi

13
scripts/publish-build-cache.sh Executable file
View File

@@ -0,0 +1,13 @@
#!/bin/bash -e
if [[ $# -lt 1 ]]; then
echo "No Yocto branch specified, defaulting to master"
echo "To change this pass a Yocto branch name as an argument to this script"
fi
branch=${1-master}
rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress build/downloads yocto-cache@build-cache.asterius.io:/srv/yocto-cache/
rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress build/sstate-cache yocto-cache@build-cache.asterius.io:/srv/yocto-cache/${branch}/
exit 0