Compare commits
406 Commits
fido
...
add-more-c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0d4f726e89 | ||
|
|
4c9068bd09 | ||
|
|
3b9251e732 | ||
|
|
ea613e2ae2 | ||
|
|
e660179c55 | ||
|
|
318a4c6f25 | ||
|
|
c7fc7986c2 | ||
|
|
50828f8af2 | ||
|
|
adf3f10036 | ||
|
|
446d28d6e1 | ||
|
|
b15ba05ea8 | ||
|
|
f54025fed9 | ||
|
|
f317737fae | ||
|
|
e04d99bf38 | ||
|
|
6b060617cd | ||
|
|
99ec7396f6 | ||
|
|
1119c88ec3 | ||
|
|
f81fbebaeb | ||
|
|
5a9933dd46 | ||
|
|
0c02af0d86 | ||
|
|
badf251873 | ||
|
|
060e033df9 | ||
|
|
6d3f61e5ce | ||
|
|
bbf4f77f98 | ||
|
|
b7380307d0 | ||
|
|
8b471a1bdc | ||
|
|
b82e450b5a | ||
|
|
cef09a5551 | ||
|
|
6052c90ca8 | ||
|
|
8e6c6271fc | ||
|
|
6066f1d2df | ||
|
|
d3bdd55c03 | ||
|
|
6a0d148968 | ||
|
|
e1fa6d39ce | ||
|
|
de42179513 | ||
|
|
9b1b4db8b0 | ||
|
|
03d8fb472c | ||
|
|
b117a311ef | ||
|
|
55e9c18a37 | ||
|
|
7cfa3db4f6 | ||
|
|
63aa6db53a | ||
|
|
48e2a7db25 | ||
|
|
ab62d9cdbf | ||
|
|
22d72b3be6 | ||
|
|
575016d11d | ||
|
|
8203dce091 | ||
|
|
0639277e4c | ||
|
|
5a9c23fac4 | ||
|
|
69ae1df12e | ||
|
|
17cc34c9c8 | ||
|
|
a19993c804 | ||
|
|
03c0338cab | ||
|
|
52ea673a8f | ||
|
|
4c7cbf6a60 | ||
|
|
8f46fe3e97 | ||
|
|
c65375f14f | ||
|
|
f02df59eea | ||
|
|
141177fbf9 | ||
|
|
fa4f4f9c1a | ||
|
|
7f7156b664 | ||
|
|
af5491692e | ||
|
|
ab57e94e2c | ||
|
|
6965038dee | ||
|
|
e5230147f6 | ||
|
|
528a34206b | ||
|
|
434f7851f5 | ||
|
|
5b1b95772e | ||
|
|
81ea9f2d2c | ||
|
|
d4755fc065 | ||
|
|
533507b25b | ||
|
|
ad9f280e6c | ||
|
|
c60b799c11 | ||
|
|
463622c0c6 | ||
|
|
172a226259 | ||
|
|
c83864ce19 | ||
|
|
bd80824ddf | ||
|
|
b28674a452 | ||
|
|
9383b2d572 | ||
|
|
d231fcb708 | ||
|
|
7f80e6d68b | ||
|
|
a1cd215131 | ||
|
|
34941a25e9 | ||
|
|
9b0dc6b3af | ||
|
|
afe7e94a6e | ||
|
|
37813c4dff | ||
|
|
2fd83daa46 | ||
|
|
3bf7088579 | ||
|
|
d9c63d8557 | ||
|
|
a4fe235317 | ||
|
|
1ff41650d5 | ||
|
|
1b8883be12 | ||
|
|
e31d252eb0 | ||
|
|
0cccf8b25c | ||
|
|
d5bf43b9b3 | ||
|
|
9f1f8ab32f | ||
|
|
2cbf17309f | ||
|
|
758f8459ec | ||
|
|
398fecb48c | ||
|
|
c55fb403f8 | ||
|
|
06a138a4a4 | ||
|
|
3e0f03d12a | ||
|
|
e814ede9d9 | ||
|
|
bb41c50510 | ||
|
|
c29ada51f1 | ||
|
|
1db27bc4f7 | ||
|
|
4dcaaa8fc9 | ||
|
|
027b7aeeb0 | ||
|
|
8e28683458 | ||
|
|
394ad27929 | ||
|
|
1820907990 | ||
|
|
5a9614f91a | ||
|
|
f851e8f185 | ||
|
|
bc04c2ea4a | ||
|
|
64cdd4b714 | ||
|
|
502fc9b1d1 | ||
|
|
0adcc6e0bc | ||
|
|
efae1a8bd0 | ||
|
|
1eb86e935c | ||
|
|
f0e0b3b7e2 | ||
|
|
3276afb4ec | ||
|
|
a58ea82720 | ||
|
|
22c971c2fa | ||
|
|
5d2e062a84 | ||
|
|
97fcc5db56 | ||
|
|
2a21657363 | ||
|
|
d867f3d470 | ||
|
|
f43eadc581 | ||
|
|
bf4cdaf0a7 | ||
|
|
4ccca55f2f | ||
|
|
e6b757111a | ||
|
|
c19badf635 | ||
|
|
247bb57c84 | ||
|
|
abe20ca06f | ||
|
|
185e29e4e1 | ||
|
|
94aa1405e3 | ||
|
|
04bd03be1e | ||
|
|
84af8005f3 | ||
|
|
339cc787cc | ||
|
|
ac5d169623 | ||
|
|
c05b6b4c30 | ||
|
|
52c0f97ff6 | ||
|
|
85d411c81c | ||
|
|
84d9d2da0a | ||
|
|
1f18869377 | ||
|
|
65ae954a80 | ||
|
|
0340c31a42 | ||
|
|
d364837120 | ||
|
|
43c139f131 | ||
|
|
487e670b9b | ||
|
|
6083dff0b6 | ||
|
|
03496f658f | ||
|
|
9da0d2f687 | ||
|
|
846454281e | ||
|
|
21224d76a0 | ||
|
|
06cc11b2b4 | ||
|
|
1d0e0e8343 | ||
|
|
634498e0ac | ||
|
|
ba428c19bf | ||
|
|
972fbd4582 | ||
|
|
5983744d01 | ||
|
|
95fa6c92a9 | ||
|
|
e414321228 | ||
|
|
07069a1869 | ||
|
|
5985331f33 | ||
|
|
98472fd232 | ||
|
|
f87bb05414 | ||
|
|
2ffd11b9fe | ||
|
|
1bf70b13a7 | ||
|
|
20ac8ea888 | ||
|
|
a387a5fe8f | ||
|
|
689dfe8004 | ||
|
|
864fe95722 | ||
|
|
168396820d | ||
|
|
c9a4db15ea | ||
|
|
3d70f56ae7 | ||
|
|
f4573d9c44 | ||
|
|
c72c88be92 | ||
|
|
7d6fede8ef | ||
|
|
311ea03c1f | ||
|
|
61093e260f | ||
|
|
dfa7dc1bad | ||
|
|
5afc0cc471 | ||
|
|
4e1bda643e | ||
|
|
c98312fd1d | ||
|
|
f366cff864 | ||
|
|
0827bc626b | ||
|
|
b828ccaefe | ||
|
|
19cdae76b8 | ||
|
|
87f67e6d86 | ||
|
|
f748246cae | ||
|
|
d91d726db6 | ||
|
|
957ede76f8 | ||
|
|
5d60f12957 | ||
|
|
0b6b45fbca | ||
|
|
7645b9b331 | ||
|
|
0c266200ad | ||
|
|
d2373244b8 | ||
|
|
0530d30808 | ||
|
|
e4d37ce4f1 | ||
|
|
82bf763c76 | ||
|
|
489fe195e0 | ||
|
|
ed62ea5176 | ||
|
|
8673659f6a | ||
|
|
75f4549859 | ||
|
|
91319e80f8 | ||
|
|
d0663639a0 | ||
|
|
3b28ddab2b | ||
|
|
404cbe3dcc | ||
|
|
ea888066a3 | ||
|
|
e0e7b6cefe | ||
|
|
ae7122c7e6 | ||
|
|
ce9949725c | ||
|
|
bef7c3f07e | ||
|
|
8f809476c0 | ||
|
|
ea040ab01d | ||
|
|
101e818ec5 | ||
|
|
6db046c19d | ||
|
|
e77fbb7f08 | ||
|
|
a97f66224a | ||
|
|
2536080e0b | ||
|
|
1f903865b4 | ||
|
|
7f7b3cd652 | ||
|
|
a1ca1ed06d | ||
|
|
c5b53736b7 | ||
|
|
d716587c26 | ||
|
|
1622af812d | ||
|
|
52cbdd3b24 | ||
|
|
a2c1575132 | ||
|
|
8262f3ac0f | ||
|
|
bf2c4ada41 | ||
|
|
39fd00119c | ||
|
|
1436b99692 | ||
|
|
3b954b38d1 | ||
|
|
41800bdd99 | ||
|
|
9b8d884d6b | ||
|
|
45d540de36 | ||
|
|
1cb0b64537 | ||
|
|
4eb46035c5 | ||
|
|
a78d470ed2 | ||
|
|
237a22fd17 | ||
|
|
e47bf14904 | ||
|
|
79166b9cf0 | ||
|
|
34f213d162 | ||
|
|
2247ad36aa | ||
|
|
fbf59ed6a0 | ||
|
|
e87b2d43b0 | ||
|
|
f31f0c2257 | ||
|
|
1059968d25 | ||
|
|
cb753fc536 | ||
|
|
6902ea276a | ||
|
|
8af5d4f7e9 | ||
|
|
08ac2819f8 | ||
|
|
f89057c0af | ||
|
|
0c54b5727f | ||
|
|
11f0c95763 | ||
|
|
c6ea2fe285 | ||
|
|
c8e2b6166e | ||
|
|
56ac849771 | ||
|
|
df07899855 | ||
|
|
f6c7789c95 | ||
|
|
e2d09d0362 | ||
|
|
e3140137e5 | ||
|
|
d320edc05f | ||
|
|
00429e037b | ||
|
|
da71abbef1 | ||
|
|
12725a2247 | ||
|
|
8d6c809833 | ||
|
|
cc5832d4be | ||
|
|
c4a8abed21 | ||
|
|
62b3ed7895 | ||
|
|
c5978989a7 | ||
|
|
21c12a3c3b | ||
|
|
9864e47b14 | ||
|
|
44bc6fd31f | ||
|
|
5eeb74ed5e | ||
|
|
1df6619559 | ||
|
|
02962e7c70 | ||
|
|
0a1d85272d | ||
|
|
3d0fab8860 | ||
|
|
b708837c7c | ||
|
|
ec3cbddb38 | ||
|
|
af571adabe | ||
|
|
b2e6f98f3e | ||
|
|
15bb60780a | ||
|
|
344fd5eec5 | ||
|
|
8dae8b4f85 | ||
|
|
487205331b | ||
|
|
64074c9e55 | ||
|
|
7c494d94f0 | ||
|
|
03b4c9086e | ||
|
|
7519c8a6b3 | ||
|
|
01f7eb256b | ||
|
|
b139bbc514 | ||
|
|
0992dbb4bc | ||
|
|
210642776c | ||
|
|
46cb45b44d | ||
|
|
e83b706e8e | ||
|
|
1f42bdc679 | ||
|
|
fc9645c15b | ||
|
|
69dd8a8ee3 | ||
|
|
1878ee9a1e | ||
|
|
095b0be0a6 | ||
|
|
8ceb6a47d5 | ||
|
|
2814eb8764 | ||
|
|
a67fbf2223 | ||
|
|
49d94ef0a7 | ||
|
|
d947c2e40e | ||
|
|
85471f88e5 | ||
|
|
d3ee1e59b6 | ||
|
|
1b78a65885 | ||
|
|
310cc353a1 | ||
|
|
5b451ec4af | ||
|
|
27ff9aea20 | ||
|
|
1f17e68d1e | ||
|
|
243fdbd72d | ||
|
|
4e6b8b4eca | ||
|
|
498ad2a6b9 | ||
|
|
8e0b263733 | ||
|
|
395cde5819 | ||
|
|
75c20f0bbc | ||
|
|
7b05b9c7f0 | ||
|
|
a74985c341 | ||
|
|
18c946267e | ||
|
|
9a0ea9bf40 | ||
|
|
8fe8fc5b7b | ||
|
|
d477a68dba | ||
|
|
fe8b755da0 | ||
|
|
825bf74a2e | ||
|
|
5ced950596 | ||
|
|
b13e266124 | ||
|
|
ba16b5c39e | ||
|
|
2fb76952f7 | ||
|
|
0fb90a149c | ||
|
|
95af734ac1 | ||
|
|
8f25a92000 | ||
|
|
91b165427c | ||
|
|
5f701adec8 | ||
|
|
8982df0b5c | ||
|
|
d749cbb98a | ||
|
|
f13ac9d48a | ||
|
|
61d0ab2b9e | ||
|
|
a8cd882676 | ||
|
|
a5bb44819d | ||
|
|
66c8aef3f2 | ||
|
|
347947db41 | ||
|
|
d47b1578c7 | ||
|
|
629b28637e | ||
|
|
e76332d732 | ||
|
|
94daa39193 | ||
|
|
c4a3f15a8c | ||
|
|
a4d6b55448 | ||
|
|
99bb5f6e55 | ||
|
|
f634a72c3b | ||
|
|
78e51cd7f4 | ||
|
|
2eafa1892d | ||
|
|
38c950b0a1 | ||
|
|
898efb793c | ||
|
|
fa53e7a70d | ||
|
|
4b03af4190 | ||
|
|
55ab1927d7 | ||
|
|
f2a16b4019 | ||
|
|
598bd26c2f | ||
|
|
5aab7e99ae | ||
|
|
ec974e5e92 | ||
|
|
ce1881d08c | ||
|
|
a616547640 | ||
|
|
4109f0cdd7 | ||
|
|
ec117587bc | ||
|
|
3a832dd439 | ||
|
|
ce73e1a6f2 | ||
|
|
5dbe9be9a8 | ||
|
|
b7200e623c | ||
|
|
0ade0cc790 | ||
|
|
ba3486997a | ||
|
|
483334f02b | ||
|
|
aaaeaeed3f | ||
|
|
f0ea28ae30 | ||
|
|
45d77b849f | ||
|
|
ebe7fb0d8f | ||
|
|
63cf611e65 | ||
|
|
302cca7529 | ||
|
|
355863b528 | ||
|
|
34c36492db | ||
|
|
84bacaaf21 | ||
|
|
fc0e2f74b3 | ||
|
|
9fac435f1c | ||
|
|
232d100c09 | ||
|
|
b516012a46 | ||
|
|
fa0d333237 | ||
|
|
1c1819971e | ||
|
|
9c571225f2 | ||
|
|
b5058823f2 | ||
|
|
0ed55291b6 | ||
|
|
6f9559d152 | ||
|
|
82238846e4 | ||
|
|
bb5c2042a9 | ||
|
|
8c74d4ce6f | ||
|
|
3371589498 | ||
|
|
5d8b5d2862 | ||
|
|
836fbef13b | ||
|
|
7413948eaf | ||
|
|
934450e2b0 | ||
|
|
25b4255204 | ||
|
|
8752eef1dc | ||
|
|
5691bbfc1f | ||
|
|
5689154fdd |
9
.github/ISSUE_TEMPLATE.md
vendored
Normal file
9
.github/ISSUE_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
## Version(s) of meta-rust
|
||||
|
||||
## Version(s) of poky and/or oe-core
|
||||
|
||||
## Expected result
|
||||
|
||||
## Actual result
|
||||
|
||||
## Steps to reproduce
|
||||
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
*.pyc
|
||||
build/
|
||||
poky/
|
||||
42
Jenkinsfile
vendored
Normal file
42
Jenkinsfile
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
def targets = [ 'qemux86', 'qemux86-64', 'qemuarm', 'qemuarm64', 'qemumips' ]
|
||||
|
||||
def machine_builds = [:]
|
||||
|
||||
for (int i = 0; i < targets.size(); i++) {
|
||||
def machine = targets.get(i)
|
||||
|
||||
machine_builds["$machine"] = {
|
||||
node {
|
||||
try {
|
||||
stage("checkout $machine") {
|
||||
checkout scm
|
||||
}
|
||||
stage("setup-env $machine") {
|
||||
sh "./scripts/setup-env.sh"
|
||||
}
|
||||
stage("fetch $machine") {
|
||||
sh "GIT_LOCAL_REF_DIR=/srv/git-cache/ ./scripts/fetch.sh master"
|
||||
}
|
||||
stage("build glibc $machine") {
|
||||
sh "MACHINE=${machine} TCLIBC=glibc ./scripts/build.sh"
|
||||
}
|
||||
stage("build musl $machine") {
|
||||
sh "MACHINE=${machine} TCLIBC=musl ./scripts/build.sh"
|
||||
}
|
||||
} catch (e) {
|
||||
echo "Caught: ${e}"
|
||||
throw e
|
||||
} finally {
|
||||
stage("push build cache $machine") {
|
||||
sh "./scripts/publish-build-cache.sh master"
|
||||
}
|
||||
stage("cleanup $machine") {
|
||||
sh "./scripts/cleanup-env.sh"
|
||||
deleteDir()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
parallel machine_builds
|
||||
66
README.md
66
README.md
@@ -1,65 +1,69 @@
|
||||
## Introduction
|
||||
|
||||
This openembedded layer provides the rust compiler, tools for building packages
|
||||
This OpenEmbedded layer provides the rust compiler, tools for building packages
|
||||
(cargo), and a few example projects.
|
||||
|
||||
## What works:
|
||||
|
||||
- MACHINE="beaglebone" (TARGET_SYS=arm-poky-linux-gnueabi)
|
||||
- Building rust-native, rust-cross, rust-hello-world, cargo-native
|
||||
- Running/using all of these (including rust-hello-world)
|
||||
- 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:
|
||||
|
||||
- Probably some of the untested things
|
||||
- Using anything but x86_64 as the build environment
|
||||
- rust (built for target) issue #81
|
||||
|
||||
## What's untested:
|
||||
|
||||
- rust (built for target)
|
||||
- Other TARGETs
|
||||
- cargo (built for target)
|
||||
|
||||
## Common issues when packaging things using cargo
|
||||
## Building a rust package
|
||||
|
||||
You may run into errors similar to:
|
||||
When building a rust package in bitbake, it's usually easiest to build with
|
||||
cargo using cargo.bbclass. If the package already has a Cargo.toml file (most
|
||||
rust packages do), then it's especially easy. Otherwise you should probably
|
||||
get the code building in cargo first.
|
||||
|
||||
```
|
||||
| src/lib.rs:12:1: 12:35 error: can't find crate for `ffi`
|
||||
| src/lib.rs:12 extern crate "openssl-sys" as ffi;
|
||||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
```
|
||||
Once your package builds in cargo, you can use
|
||||
[cargo-bitbake](https://github.com/cardoe/cargo-bitbake) to generate a bitbake
|
||||
recipe for it. This allows bitbake to fetch all the necessary dependent
|
||||
crates, as well as a pegged version of the crates.io index, to ensure maximum
|
||||
reproducibility.
|
||||
|
||||
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
|
||||
- add bitbake fetch support for crates.io
|
||||
- add required cargo package registry clones in SRC_URI to prevent the need
|
||||
for network when building.
|
||||
|
||||
## 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
|
||||
|
||||
Open a Pull Request
|
||||
Open a Pull Request.
|
||||
|
||||
The master branch supports the latest master of poky. When poky creates releases, we will create a branch with the same name as the poky release. This release branch should always work with that poky release. Note that these release branches will typically be less tested than the master branch.
|
||||
|
||||
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/Apache-2.0 - Same as rust
|
||||
MIT OR Apache-2.0 - Same as rust
|
||||
|
||||
|
||||
@@ -1,116 +1,70 @@
|
||||
inherit rust
|
||||
##
|
||||
## Purpose:
|
||||
## This class is used by any recipes that are built using
|
||||
## Cargo.
|
||||
|
||||
CARGO ?= "cargo"
|
||||
export CARGO_HOME = "${WORKDIR}/cargo_home"
|
||||
inherit cargo_common
|
||||
|
||||
def cargo_base_dep(d):
|
||||
deps = ""
|
||||
if not d.getVar('INHIBIT_DEFAULT_DEPS') and not d.getVar('INHIBIT_CARGO_DEP'):
|
||||
deps += " cargo-native"
|
||||
return deps
|
||||
# the binary we will use
|
||||
CARGO = "cargo"
|
||||
|
||||
BASEDEPENDS_append = " ${@cargo_base_dep(d)}"
|
||||
# We need cargo to compile for the target
|
||||
BASEDEPENDS_append = " cargo-native"
|
||||
|
||||
# FIXME: this is a workaround for a misbehavior in cargo when used with quilt.
|
||||
# See https://github.com/rust-lang/cargo/issues/978
|
||||
PATCHTOOL = "patch"
|
||||
# Ensure we get the right rust variant
|
||||
DEPENDS_append_class-target = " virtual/${TARGET_PREFIX}rust ${RUSTLIB_DEP}"
|
||||
DEPENDS_append_class-native = " rust-native"
|
||||
|
||||
# Cargo only supports in-tree builds at the moment
|
||||
B = "${S}"
|
||||
|
||||
|
||||
# In case something fails in the build process, give a bit more feedback on
|
||||
# where the issue occured
|
||||
export RUST_BACKTRACE = "1"
|
||||
|
||||
# The 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"
|
||||
|
||||
EXTRA_OECARGO_PATHS ??= ""
|
||||
|
||||
cargo_do_configure () {
|
||||
mkdir -p .cargo
|
||||
# FIXME: we currently blow away the entire config because duplicate
|
||||
# sections are treated as a parse error by cargo (causing the entire
|
||||
# config to be silently ignored.
|
||||
# NOTE: we cannot pass more flags via this interface, the 'linker' is
|
||||
# assumed to be a path to a binary. If flags are needed, a wrapper must
|
||||
# be used.
|
||||
echo "paths = [" >.cargo/config
|
||||
|
||||
for p in ${EXTRA_OECARGO_PATHS}; do
|
||||
printf "\"%s\"\n" "$p"
|
||||
done | sed -e 's/$/,/' >>.cargo/config
|
||||
echo "]" >>.cargo/config
|
||||
}
|
||||
|
||||
rust_cargo_patch () {
|
||||
# FIXME: if there is already an entry for this target, in an existing
|
||||
# cargo/config, this won't work.
|
||||
cd "${S}"
|
||||
cat >>Cargo.toml <<EOF
|
||||
[profile.dev]
|
||||
rpath = true
|
||||
[profile.release]
|
||||
rpath = true
|
||||
EOF
|
||||
}
|
||||
|
||||
# All the rust & cargo ecosystem assume that CC, LD, etc are a path to a single
|
||||
# command. Fixup the ones we give it so that is the case.
|
||||
# XXX: this is hard coded based on meta/conf/bitbake.conf
|
||||
# TODO: we do quite a bit very similar to this in rust.inc, see if it can be
|
||||
# generalized.
|
||||
export RUST_CC = "${CCACHE}${HOST_PREFIX}gcc"
|
||||
export RUST_CFLAGS = "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} ${CFLAGS}"
|
||||
export RUST_BUILD_CC = "${CCACHE}${BUILD_PREFIX}gcc"
|
||||
export RUST_BUILD_CFLAGS = "${BUILD_CC_ARCH} ${BUILD_CFLAGS}"
|
||||
|
||||
export CARGO_BUILD_FLAGS = "-v --target ${HOST_SYS} --release"
|
||||
RUSTFLAGS ??= ""
|
||||
BUILD_MODE = "${@['--release', ''][d.getVar('DEBUG_BUILD') == '1']}"
|
||||
CARGO_BUILD_FLAGS = "-v --target ${HOST_SYS} ${BUILD_MODE}"
|
||||
|
||||
# This is based on the content of CARGO_BUILD_FLAGS and generally will need to
|
||||
# change if CARGO_BUILD_FLAGS changes.
|
||||
export CARGO_TARGET_SUBDIR="${HOST_SYS}/release"
|
||||
BUILD_DIR = "${@['release', 'debug'][d.getVar('DEBUG_BUILD') == '1']}"
|
||||
CARGO_TARGET_SUBDIR="${HOST_SYS}/${BUILD_DIR}"
|
||||
oe_cargo_build () {
|
||||
which cargo
|
||||
which rustc
|
||||
bbnote ${CARGO} build ${CARGO_BUILD_FLAGS} "$@"
|
||||
export RUSTFLAGS="${RUSTFLAGS}"
|
||||
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_CC}"
|
||||
export CFLAGS="${RUST_CFLAGS}"
|
||||
export AR="${AR}"
|
||||
export TARGET_CC="${RUST_CC}"
|
||||
export TARGET_CFLAGS="${RUST_CFLAGS}"
|
||||
export TARGET_AR="${AR}"
|
||||
export HOST_CC="${RUST_BUILD_CC}"
|
||||
export HOST_CFLAGS="${RUST_BUILD_CFLAGS}"
|
||||
export HOST_AR="${BUILD_AR}"
|
||||
}
|
||||
|
||||
cargo_do_compile () {
|
||||
cd "${B}"
|
||||
oe_cargo_fix_env
|
||||
oe_cargo_build
|
||||
}
|
||||
|
||||
# All but the most simple projects will need to override this.
|
||||
cargo_do_install () {
|
||||
local have_installed=false
|
||||
install -d "${D}${bindir}"
|
||||
for tgt in "${B}/target/${CARGO_TARGET_SUBDIR}/"*; do
|
||||
if [ -f "$tgt" ] && [ -x "$tgt" ]; then
|
||||
install -m755 "$tgt" "${D}${bindir}"
|
||||
case $tgt in
|
||||
*.so|*.rlib)
|
||||
install -d "${D}${rustlibdir}"
|
||||
install -m755 "$tgt" "${D}${rustlibdir}"
|
||||
have_installed=true
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
if [ -f "$tgt" ] && [ -x "$tgt" ]; then
|
||||
install -d "${D}${bindir}"
|
||||
install -m755 "$tgt" "${D}${bindir}"
|
||||
have_installed=true
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
if ! $have_installed; then
|
||||
die "Did not find anything to install"
|
||||
fi
|
||||
}
|
||||
|
||||
EXPORT_FUNCTIONS do_compile do_install do_configure
|
||||
EXPORT_FUNCTIONS do_compile do_install
|
||||
|
||||
74
classes/cargo_common.bbclass
Normal file
74
classes/cargo_common.bbclass
Normal file
@@ -0,0 +1,74 @@
|
||||
##
|
||||
## 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}/bitbake
|
||||
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"
|
||||
EOF
|
||||
|
||||
if [ -z "${EXTERNALSRC}" ]; then
|
||||
cat <<- EOF >> ${CARGO_HOME}/config
|
||||
[source.crates-io]
|
||||
replace-with = "bitbake"
|
||||
local-registry = "/nonexistant"
|
||||
EOF
|
||||
fi
|
||||
|
||||
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_CXXFLAGS="${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
|
||||
13
classes/crate-fetch.bbclass
Normal file
13
classes/crate-fetch.bbclass
Normal file
@@ -0,0 +1,13 @@
|
||||
#
|
||||
# crate-fetch class
|
||||
#
|
||||
# Registers 'crate' method for Bitbake fetch2.
|
||||
#
|
||||
# Adds support for following format in recipe SRC_URI:
|
||||
# crate://<packagename>/<version>
|
||||
#
|
||||
|
||||
python () {
|
||||
import crate
|
||||
bb.fetch2.methods.append( crate.Crate() )
|
||||
}
|
||||
@@ -1,15 +1,8 @@
|
||||
inherit rust
|
||||
|
||||
RUSTLIB_DEP ?= " rustlib"
|
||||
DEPENDS .= "${RUSTLIB_DEP}"
|
||||
DEPENDS += "patchelf-native"
|
||||
RDEPENDS_${PN}_append_class-target += "${RUSTLIB_DEP}"
|
||||
|
||||
export rustlibdir = "${libdir}/rust"
|
||||
FILES_${PN} += "${rustlibdir}/*.so"
|
||||
FILES_${PN}-dev += "${rustlibdir}/*.rlib"
|
||||
FILES_${PN}-dbg += "${rustlibdir}/.debug"
|
||||
|
||||
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 linker=${RUST_TARGET_CCLD}"
|
||||
EXTRA_OEMAKE += 'RUSTC_ARCHFLAGS="${RUSTC_ARCHFLAGS}"'
|
||||
|
||||
# Some libraries alias with the standard library but libstd is configured to
|
||||
@@ -19,11 +12,12 @@ OVERLAP_LIBS = "\
|
||||
libc \
|
||||
log \
|
||||
getopts \
|
||||
rand \
|
||||
"
|
||||
def get_overlap_deps(d):
|
||||
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)
|
||||
@@ -32,20 +26,58 @@ OVERLAP_DEPS = "${@get_overlap_deps(d)}"
|
||||
|
||||
# Prevents multiple static copies of standard library modules
|
||||
# See https://github.com/rust-lang/rust/issues/19680
|
||||
RUSTC_FLAGS += "-C prefer-dynamic"
|
||||
RUSTC_PREFER_DYNAMIC = "-C prefer-dynamic"
|
||||
RUSTC_FLAGS += "${RUSTC_PREFER_DYNAMIC}"
|
||||
|
||||
rustlib="${libdir}/${TUNE_PKGARCH}${TARGET_VENDOR}-${TARGET_OS}/rustlib/${HOST_SYS}/lib"
|
||||
CRATE_NAME ?= "${@d.getVar('BPN', True).replace('-rs', '').replace('-', '_')}"
|
||||
CRATE_NAME ?= "${@d.getVar('BPN').replace('-rs', '').replace('-', '_')}"
|
||||
BINNAME ?= "${BPN}"
|
||||
LIBNAME ?= "lib${CRATE_NAME}"
|
||||
LIBNAME ?= "lib${CRATE_NAME}-rs"
|
||||
CRATE_TYPE ?= "dylib"
|
||||
BIN_SRC ?= "${S}/src/main.rs"
|
||||
LIB_SRC ?= "${S}/src/lib.rs"
|
||||
|
||||
rustbindest ?= "${bindir}"
|
||||
rustlibdest ?= "${rustlibdir}"
|
||||
RUST_RPATH_ABS ?= "${rustlibdir}:${rustlib}"
|
||||
|
||||
def relative_rpaths(paths, base):
|
||||
relpaths = set()
|
||||
for p in paths.split(':'):
|
||||
if p == base:
|
||||
relpaths.add('$ORIGIN')
|
||||
continue
|
||||
relpaths.add(os.path.join('$ORIGIN', os.path.relpath(p, base)))
|
||||
return '-rpath=' + ':'.join(relpaths) if len(relpaths) else ''
|
||||
|
||||
RUST_LIB_RPATH_FLAGS ?= "${@relative_rpaths(d.getVar('RUST_RPATH_ABS', True), d.getVar('rustlibdest', True))}"
|
||||
RUST_BIN_RPATH_FLAGS ?= "${@relative_rpaths(d.getVar('RUST_RPATH_ABS', True), d.getVar('rustbindest', True))}"
|
||||
|
||||
def libfilename(d):
|
||||
if d.getVar('CRATE_TYPE', True) == 'dylib':
|
||||
return d.getVar('LIBNAME', True) + '.so'
|
||||
else:
|
||||
return d.getVar('LIBNAME', True) + '.rlib'
|
||||
|
||||
def link_args(d, bin):
|
||||
linkargs = []
|
||||
if bin:
|
||||
rpaths = d.getVar('RUST_BIN_RPATH_FLAGS', False)
|
||||
else:
|
||||
rpaths = d.getVar('RUST_LIB_RPATH_FLAGS', False)
|
||||
if d.getVar('CRATE_TYPE', True) == 'dylib':
|
||||
linkargs.append('-soname')
|
||||
linkargs.append(libfilename(d))
|
||||
if len(rpaths):
|
||||
linkargs.append(rpaths)
|
||||
if len(linkargs):
|
||||
return ' '.join(['-Wl,' + arg for arg in linkargs])
|
||||
else:
|
||||
return ''
|
||||
|
||||
get_overlap_externs () {
|
||||
externs=
|
||||
for dep in ${OVERLAP_DEPS}; do
|
||||
extern=$(ls ${STAGING_DIR_HOST}/${rustlibdir}/lib$dep.{so,rlib} 2>/dev/null \
|
||||
extern=$(ls ${STAGING_DIR_HOST}/${rustlibdir}/lib$dep-rs.{so,rlib} 2>/dev/null \
|
||||
| awk '{print $1}');
|
||||
if [ -n "$extern" ]; then
|
||||
externs="$externs --extern $dep=$extern"
|
||||
@@ -57,16 +89,26 @@ get_overlap_externs () {
|
||||
echo "$externs"
|
||||
}
|
||||
|
||||
do_configure () {
|
||||
}
|
||||
|
||||
oe_runrustc () {
|
||||
export RUST_TARGET_PATH="${RUST_TARGET_PATH}"
|
||||
bbnote ${RUSTC} ${RUSTC_ARCHFLAGS} ${RUSTC_FLAGS} "$@"
|
||||
"${RUSTC}" ${RUSTC_ARCHFLAGS} ${RUSTC_FLAGS} "$@"
|
||||
}
|
||||
|
||||
oe_compile_rust_lib () {
|
||||
rm -rf ${LIBNAME}.{rlib,so}
|
||||
local -a link_args
|
||||
if [ "${CRATE_TYPE}" == "dylib" ]; then
|
||||
link_args[0]="-C"
|
||||
link_args[1]="link-args=-Wl,-soname -Wl,${LIBNAME}.so"
|
||||
if [ -n '${@link_args(d, False)}' ]; then
|
||||
link_args[0]='-C'
|
||||
link_args[1]='link-args=${@link_args(d, False)}'
|
||||
fi
|
||||
oe_runrustc $(get_overlap_externs) \
|
||||
"${link_args[@]}" \
|
||||
${LIB_SRC} \
|
||||
-o ${@libfilename(d)} \
|
||||
--crate-name=${CRATE_NAME} --crate-type=${CRATE_TYPE} \
|
||||
"$@"
|
||||
}
|
||||
@@ -74,20 +116,27 @@ oe_compile_rust_lib[vardeps] += "get_overlap_externs"
|
||||
|
||||
oe_compile_rust_bin () {
|
||||
rm -rf ${BINNAME}
|
||||
oe_runrustc $(get_overlap_externs) ${BIN_SRC} -o ${BINNAME} "$@"
|
||||
local -a link_args
|
||||
if [ -n '${@link_args(d, True)}' ]; then
|
||||
link_args[0]='-C'
|
||||
link_args[1]='link-args=${@link_args(d, True)}'
|
||||
fi
|
||||
oe_runrustc $(get_overlap_externs) \
|
||||
"${link_args[@]}" \
|
||||
${BIN_SRC} -o ${BINNAME} "$@"
|
||||
}
|
||||
oe_compile_rust_bin[vardeps] += "get_overlap_externs"
|
||||
|
||||
oe_install_rust_lib () {
|
||||
for lib in $(ls ${LIBNAME}.{so,rlib} 2>/dev/null); do
|
||||
echo Installing $lib
|
||||
install -D -m 755 $lib ${D}/${rustlibdir}/$lib
|
||||
install -D -m 755 $lib ${D}/${rustlibdest}/$lib
|
||||
done
|
||||
}
|
||||
|
||||
oe_install_rust_bin () {
|
||||
echo Installing ${BINNAME}
|
||||
install -D -m 755 ${BINNAME} ${D}/${bindir}/${BINNAME}
|
||||
install -D -m 755 ${BINNAME} ${D}/${rustbindest}/${BINNAME}
|
||||
}
|
||||
|
||||
do_rust_bin_fixups() {
|
||||
@@ -95,13 +144,6 @@ do_rust_bin_fixups() {
|
||||
echo "Strip rust note: $f"
|
||||
${OBJCOPY} -R .note.rustc $f $f
|
||||
done
|
||||
|
||||
for f in `find ${PKGD}`; do
|
||||
file "$f" | grep -q ELF || continue
|
||||
readelf -d "$f" | grep RPATH | grep -q rustlib || continue
|
||||
echo "Set rpath:" "$f"
|
||||
patchelf --set-rpath '$ORIGIN:'${rustlibdir}:${rustlib} "$f"
|
||||
done
|
||||
}
|
||||
|
||||
PACKAGE_PREPROCESS_FUNCS += "do_rust_bin_fixups"
|
||||
|
||||
|
||||
144
classes/rust-common.bbclass
Normal file
144
classes/rust-common.bbclass
Normal file
@@ -0,0 +1,144 @@
|
||||
# Common variables used by all Rust builds
|
||||
export rustlibdir = "${libdir}/rust"
|
||||
FILES_${PN} += "${rustlibdir}/*.so"
|
||||
FILES_${PN}-dev += "${rustlibdir}/*.rlib"
|
||||
FILES_${PN}-dbg += "${rustlibdir}/.debug"
|
||||
|
||||
RUSTLIB = "-L ${STAGING_LIBDIR}/rust"
|
||||
RUST_DEBUG_REMAP = "--remap-path-prefix=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}"
|
||||
RUSTFLAGS += "${RUSTLIB} ${RUST_DEBUG_REMAP}"
|
||||
RUSTLIB_DEP ?= "libstd-rs"
|
||||
RUST_TARGET_PATH = "${STAGING_LIBDIR_NATIVE}/rustlib"
|
||||
RUST_PANIC_STRATEGY ?= "unwind"
|
||||
|
||||
# Native builds are not effected by TCLIBC. Without this, rust-native
|
||||
# thinks it's "target" (i.e. x86_64-linux) is a musl target.
|
||||
RUST_LIBC = "${TCLIBC}"
|
||||
RUST_LIBC_class-native = "glibc"
|
||||
|
||||
def determine_libc(d, thing):
|
||||
'''Determine which libc something should target'''
|
||||
|
||||
# BUILD is never musl, TARGET may be musl or glibc,
|
||||
# HOST could be musl, but only if a compiler is built to be run on
|
||||
# target in which case HOST_SYS != BUILD_SYS.
|
||||
if thing == 'TARGET':
|
||||
libc = d.getVar('RUST_LIBC')
|
||||
elif thing == 'BUILD' and (d.getVar('HOST_SYS') != d.getVar('BUILD_SYS')):
|
||||
libc = d.getVar('RUST_LIBC')
|
||||
else:
|
||||
libc = d.getVar('RUST_LIBC_class-native')
|
||||
|
||||
return libc
|
||||
|
||||
# Responsible for taking Yocto triples and converting it to Rust triples
|
||||
def rust_base_triple(d, thing):
|
||||
'''
|
||||
Mangle bitbake's *_SYS into something that rust might support (see
|
||||
rust/mk/cfg/* for a list)
|
||||
|
||||
Note that os is assumed to be some linux form
|
||||
'''
|
||||
|
||||
arch = d.getVar('{}_ARCH'.format(thing))
|
||||
# All the Yocto targets are Linux and are 'unknown'
|
||||
vendor = "-unknown"
|
||||
os = d.getVar('{}_OS'.format(thing))
|
||||
libc = determine_libc(d, thing)
|
||||
|
||||
# Prefix with a dash and convert glibc -> gnu
|
||||
if libc == "glibc":
|
||||
libc = "-gnu"
|
||||
elif libc == "musl":
|
||||
libc = "-musl"
|
||||
|
||||
# Don't double up musl (only appears to be the case on aarch64)
|
||||
if os == "linux-musl":
|
||||
if libc != "-musl":
|
||||
bb.fatal("{}_OS was '{}' but TCLIBC was not 'musl'".format(thing, os))
|
||||
os = "linux"
|
||||
|
||||
# This catches ARM targets and appends the necessary hard float bits
|
||||
if os == "linux-gnueabi" or os == "linux-musleabi":
|
||||
libc = bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'hf', '', d)
|
||||
return arch + vendor + '-' + os + libc
|
||||
|
||||
# Naming explanation
|
||||
# Yocto
|
||||
# - BUILD_SYS - Yocto triple of the build environment
|
||||
# - HOST_SYS - What we're building for in Yocto
|
||||
# - TARGET_SYS - What we're building for in Yocto
|
||||
#
|
||||
# So when building '-native' packages BUILD_SYS == HOST_SYS == TARGET_SYS
|
||||
# When building packages for the image HOST_SYS == TARGET_SYS
|
||||
# This is a gross over simplification as there are other modes but
|
||||
# currently this is all that's supported.
|
||||
#
|
||||
# Rust
|
||||
# - TARGET - the system where the binary will run
|
||||
# - HOST - the system where the binary is being built
|
||||
#
|
||||
# Rust additionally will use two additional cases:
|
||||
# - undecorated (e.g. CC) - equivalent to TARGET
|
||||
# - triple suffix (e.g. CC_x86_64_unknown_linux_gnu) - both
|
||||
# see: https://github.com/alexcrichton/gcc-rs
|
||||
# The way that Rust's internal triples and Yocto triples are mapped together
|
||||
# its likely best to not use the triple suffix due to potential confusion.
|
||||
|
||||
RUST_BUILD_SYS = "${@rust_base_triple(d, 'BUILD')}"
|
||||
RUST_HOST_SYS = "${@rust_base_triple(d, 'HOST')}"
|
||||
RUST_TARGET_SYS = "${@rust_base_triple(d, 'TARGET')}"
|
||||
|
||||
# wrappers to get around the fact that Rust needs a single
|
||||
# binary but Yocto's compiler and linker commands have
|
||||
# arguments. Technically the archiver is always one command but
|
||||
# this is necessary for builds that determine the prefix and then
|
||||
# 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"
|
||||
|
||||
create_wrapper () {
|
||||
file="$1"
|
||||
shift
|
||||
|
||||
cat <<- EOF > "${file}"
|
||||
#!/bin/sh
|
||||
$@ "\$@"
|
||||
EOF
|
||||
chmod +x "${file}"
|
||||
}
|
||||
|
||||
# compiler is used by gcc-rs
|
||||
# linker is used by rustc/cargo
|
||||
# archiver is used by the build of libstd-rs
|
||||
do_rust_create_wrappers () {
|
||||
mkdir -p "${WRAPPER_DIR}"
|
||||
|
||||
# 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 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
|
||||
create_wrapper "${RUST_TARGET_AR}" "${AR}"
|
||||
}
|
||||
|
||||
addtask rust_create_wrappers before do_configure after do_patch
|
||||
do_rust_create_wrappers[dirs] += "${WRAPPER_DIR}"
|
||||
@@ -1,15 +0,0 @@
|
||||
# Rust installer isn't very nice and drops a bunch of junk in our filesystem,
|
||||
# clean it up after the install.
|
||||
|
||||
rust_installer_do_install () {
|
||||
rm ${D}/${libdir}/rustlib/install.log
|
||||
rm ${D}/${libdir}/rustlib/rust-installer-version
|
||||
rm ${D}/${libdir}/rustlib/uninstall.sh
|
||||
rm ${D}/${libdir}/rustlib/components
|
||||
}
|
||||
|
||||
do_install_append () {
|
||||
rust_installer_do_install
|
||||
}
|
||||
|
||||
EXPORT_FUNCTIONS rust_installer_do_install
|
||||
@@ -1,49 +1,22 @@
|
||||
inherit rust-common
|
||||
|
||||
RUSTC = "rustc"
|
||||
|
||||
# FIXME: --sysroot might be needed
|
||||
RUSTC_ARCHFLAGS += "--target=${TARGET_SYS} -C rpath"
|
||||
RUSTC_ARCHFLAGS += "--target=${HOST_SYS} ${RUSTFLAGS}"
|
||||
|
||||
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'):
|
||||
if (d.getVar('HOST_SYS', True) != d.getVar('BUILD_SYS', True)):
|
||||
deps += " virtual/${TARGET_PREFIX}rust"
|
||||
if (d.getVar('HOST_SYS') != d.getVar('BUILD_SYS')):
|
||||
deps += " virtual/${TARGET_PREFIX}rust ${RUSTLIB_DEP}"
|
||||
else:
|
||||
deps += " rust-native"
|
||||
return deps
|
||||
|
||||
DEPENDS_append = " ${@rust_base_dep(d)}"
|
||||
|
||||
def rust_base_triple(d, thing):
|
||||
'''
|
||||
Mangle bitbake's *_SYS into something that rust might support (see
|
||||
rust/mk/cfg/* for a list)
|
||||
|
||||
Note that os is assumed to be some linux form
|
||||
'''
|
||||
|
||||
arch = d.getVar('{}_ARCH'.format(thing), True)
|
||||
vendor = d.getVar('{}_VENDOR'.format(thing), True)
|
||||
os = d.getVar('{}_OS'.format(thing), True)
|
||||
|
||||
vendor = "-unknown"
|
||||
|
||||
if arch.startswith("arm"):
|
||||
if os.endswith("gnueabi"):
|
||||
os += bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'hf', '', d)
|
||||
elif arch.startswith("x86_64"):
|
||||
os = "linux-gnu"
|
||||
elif arch.startswith("i586"):
|
||||
arch = "i686"
|
||||
os = "linux-gnu"
|
||||
return arch + vendor + '-' + os
|
||||
|
||||
RUST_BUILD_SYS = "${@rust_base_triple(d, 'BUILD')}"
|
||||
RUST_HOST_SYS = "${@rust_base_triple(d, 'HOST')}"
|
||||
RUST_TARGET_SYS = "${@rust_base_triple(d, 'TARGET')}"
|
||||
|
||||
# BUILD_LDFLAGS
|
||||
# ${STAGING_LIBDIR_NATIVE}
|
||||
# ${STAGING_BASE_LIBDIR_NATIVE}
|
||||
@@ -57,26 +30,16 @@ RUST_TARGET_SYS = "${@rust_base_triple(d, 'TARGET')}"
|
||||
# -L${STAGING_BASE_LIBDIR_NATIVE} \
|
||||
#"
|
||||
|
||||
RUST_PATH_NATIVE = "${STAGING_LIBDIR_NATIVE}:${STAGING_BASE_LIBDIR_NATIVE}"
|
||||
|
||||
## Note: the 'rustlib' element of this was a workaround rustc forgetting the
|
||||
## libdir it was built with. It now remembers so this should be unneeded
|
||||
#RUST_PATH_NATIVE .= ":${STAGING_LIBDIR_NATIVE}/${TARGET_SYS}/rustlib/${TARGET_SYS}/lib"
|
||||
|
||||
# FIXME: set based on whether we are native vs cross vs buildsdk, etc
|
||||
#export RUST_PATH ??= "${RUST_PATH_NATIVE}"
|
||||
|
||||
## This is builtin to rustc with the value "$libdir/rust/targets"
|
||||
# RUST_TARGET_PATH = "foo:bar"
|
||||
|
||||
oe_runrustc () {
|
||||
bbnote ${RUSTC} ${RUSTC_ARCHFLAGS} ${RUSTC_FLAGS} "$@"
|
||||
"${RUSTC}" ${RUSTC_ARCHFLAGS} ${RUSTC_FLAGS} "$@"
|
||||
}
|
||||
|
||||
# XXX: for some reason bitbake sets BUILD_* & TARGET_* but uses the bare
|
||||
# variables for HOST. Alias things to make it easier for us.
|
||||
HOST_LDFLAGS ?= "${LDFLAGS}"
|
||||
HOST_CFLAGS ?= "${CFLAGS}"
|
||||
HOST_CXXFLAGS ?= "${CXXFLAGS}"
|
||||
HOST_CPPFLAGS ?= "${CPPFLAGS}"
|
||||
|
||||
rustlib_suffix="${TUNE_ARCH}${TARGET_VENDOR}-${TARGET_OS}/rustlib/${HOST_SYS}/lib"
|
||||
# Native sysroot standard library path
|
||||
rustlib_src="${prefix}/lib/${rustlib_suffix}"
|
||||
# Host sysroot standard library path
|
||||
rustlib="${libdir}/${rustlib_suffix}"
|
||||
rustlib_class-native="${libdir}/rustlib/${BUILD_SYS}/lib"
|
||||
|
||||
20
conf/bblayers.conf.sample
Normal file
20
conf/bblayers.conf.sample
Normal file
@@ -0,0 +1,20 @@
|
||||
# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
|
||||
# changes incompatibly
|
||||
LCONF_VERSION = "6"
|
||||
|
||||
BBPATH = "${TOPDIR}"
|
||||
BBFILES ?= ""
|
||||
|
||||
BBLAYERS ?= " \
|
||||
##OEROOT##/meta-rust \
|
||||
##OEROOT##/meta \
|
||||
##OEROOT##/meta-poky \
|
||||
##OEROOT##/meta-yocto-bsp \
|
||||
##OEROOT##/meta-openembedded/meta-oe \
|
||||
##OEROOT##/meta-openembedded/meta-networking \
|
||||
##OEROOT##/meta-openembedded/meta-python \
|
||||
"
|
||||
BBLAYERS_NON_REMOVABLE ?= " \
|
||||
##OEROOT##/meta \
|
||||
##OEROOT##/meta-yocto \
|
||||
"
|
||||
@@ -1,4 +1,7 @@
|
||||
# Build errors with PIE options enabled
|
||||
SECURITY_CFLAGS_pn-rust-native = "${SECURITY_NO_PIE_CFLAGS}"
|
||||
SECURITY_CFLAGS_pn-rust-cross = "${SECURITY_NO_PIE_CFLAGS}"
|
||||
SECURITY_CFLAGS_pn-rust-cross-${TARGET_ARCH} = "${SECURITY_NO_PIE_CFLAGS}"
|
||||
SECURITY_CFLAGS_pn-rust = "${SECURITY_NO_PIE_CFLAGS}"
|
||||
SECURITY_CFLAGS_pn-rust-llvm = "${SECURITY_NO_PIE_CFLAGS}"
|
||||
|
||||
SECURITY_LDFLAGS_pn-rust-cross-arm = " -lssp_nonshared -lssp"
|
||||
|
||||
@@ -2,13 +2,14 @@
|
||||
BBPATH .= ":${LAYERDIR}"
|
||||
|
||||
# We have a recipes directory, add to BBFILES
|
||||
BBFILES += "${LAYERDIR}/recipes*/*/*.bb ${LAYERDIR}/recipes*/*/*.bbappend"
|
||||
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb ${LAYERDIR}/recipes-*/*/*.bbappend"
|
||||
|
||||
BBFILE_COLLECTIONS += "rust-layer"
|
||||
BBFILE_PATTERN_rust-layer := "^${LAYERDIR}/"
|
||||
BBFILE_PRIORITY_rust-layer = "7"
|
||||
|
||||
LICENSE_PATH += "${LAYERDIR}/files/licenses"
|
||||
LAYERDEPENDS_rust-layer = "core openembedded-layer"
|
||||
LAYERSERIES_COMPAT_rust-layer = "rocko sumo thud"
|
||||
|
||||
# Override security flags
|
||||
require conf/distro/include/rust_security_flags.inc
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
SRC_DISTRIBUTE_LICENSES += "GPL-2.0-with-linking-exception"
|
||||
242
conf/local.conf.sample
Normal file
242
conf/local.conf.sample
Normal file
@@ -0,0 +1,242 @@
|
||||
#
|
||||
# This file is your local configuration file and is where all local user settings
|
||||
# are placed. The comments in this file give some guide to the options a new user
|
||||
# to the system might want to change but pretty much any configuration option can
|
||||
# be set in this file. More adventurous users can look at local.conf.extended
|
||||
# which contains other examples of configuration which can be placed in this file
|
||||
# but new users likely won't need any of them initially.
|
||||
#
|
||||
# Lines starting with the '#' character are commented out and in some cases the
|
||||
# default values are provided as comments to show people example syntax. Enabling
|
||||
# the option is a question of removing the # character and making any change to the
|
||||
# variable as required.
|
||||
|
||||
#
|
||||
# Machine Selection
|
||||
#
|
||||
# You need to select a specific machine to target the build with. There are a selection
|
||||
# of emulated machines available which can boot and run in the QEMU emulator:
|
||||
#
|
||||
#MACHINE ?= "qemuarm"
|
||||
#MACHINE ?= "qemuarm64"
|
||||
#MACHINE ?= "qemumips"
|
||||
#MACHINE ?= "qemumips64"
|
||||
#MACHINE ?= "qemuppc"
|
||||
#MACHINE ?= "qemux86"
|
||||
#MACHINE ?= "qemux86-64"
|
||||
#
|
||||
# There are also the following hardware board target machines included for
|
||||
# demonstration purposes:
|
||||
#
|
||||
#MACHINE ?= "beaglebone"
|
||||
#MACHINE ?= "genericx86"
|
||||
#MACHINE ?= "genericx86-64"
|
||||
#MACHINE ?= "mpc8315e-rdb"
|
||||
#MACHINE ?= "edgerouter"
|
||||
#
|
||||
# This sets the default machine to be qemux86 if no other machine is selected:
|
||||
MACHINE ??= "qemux86-64"
|
||||
|
||||
#
|
||||
# Where to place downloads
|
||||
#
|
||||
# During a first build the system will download many different source code tarballs
|
||||
# from various upstream projects. This can take a while, particularly if your network
|
||||
# connection is slow. These are all stored in DL_DIR. When wiping and rebuilding you
|
||||
# can preserve this directory to speed up this part of subsequent builds. This directory
|
||||
# is safe to share between multiple builds on the same machine too.
|
||||
#
|
||||
# The default is a downloads directory under TOPDIR which is the build directory.
|
||||
#
|
||||
#DL_DIR ?= "${TOPDIR}/downloads"
|
||||
|
||||
#
|
||||
# Where to place shared-state files
|
||||
#
|
||||
# BitBake has the capability to accelerate builds based on previously built output.
|
||||
# This is done using "shared state" files which can be thought of as cache objects
|
||||
# and this option determines where those files are placed.
|
||||
#
|
||||
# You can wipe out TMPDIR leaving this directory intact and the build would regenerate
|
||||
# from these files if no changes were made to the configuration. If changes were made
|
||||
# to the configuration, only shared state files where the state was still valid would
|
||||
# be used (done using checksums).
|
||||
#
|
||||
# The default is a sstate-cache directory under TOPDIR.
|
||||
#
|
||||
#SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
|
||||
|
||||
#
|
||||
# Where to place the build output
|
||||
#
|
||||
# This option specifies where the bulk of the building work should be done and
|
||||
# where BitBake should place its temporary files and output. Keep in mind that
|
||||
# this includes the extraction and compilation of many applications and the toolchain
|
||||
# which can use Gigabytes of hard disk space.
|
||||
#
|
||||
# The default is a tmp directory under TOPDIR.
|
||||
#
|
||||
#TMPDIR = "${TOPDIR}/tmp"
|
||||
|
||||
#
|
||||
# Default policy config
|
||||
#
|
||||
# The distribution setting controls which policy settings are used as defaults.
|
||||
# The default value is fine for general Yocto project use, at least initially.
|
||||
# Ultimately when creating custom policy, people will likely end up subclassing
|
||||
# these defaults.
|
||||
#
|
||||
DISTRO ?= "poky"
|
||||
# As an example of a subclass there is a "bleeding" edge policy configuration
|
||||
# where many versions are set to the absolute latest code from the upstream
|
||||
# source control systems. This is just mentioned here as an example, its not
|
||||
# useful to most new users.
|
||||
# DISTRO ?= "poky-bleeding"
|
||||
|
||||
#
|
||||
# Package Management configuration
|
||||
#
|
||||
# This variable lists which packaging formats to enable. Multiple package backends
|
||||
# can be enabled at once and the first item listed in the variable will be used
|
||||
# to generate the root filesystems.
|
||||
# Options are:
|
||||
# - 'package_deb' for debian style deb files
|
||||
# - 'package_ipk' for ipk files are used by opkg (a debian style embedded package manager)
|
||||
# - 'package_rpm' for rpm style packages
|
||||
# E.g.: PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk"
|
||||
# We default to rpm:
|
||||
PACKAGE_CLASSES ?= "package_rpm"
|
||||
|
||||
#
|
||||
# SDK target architecture
|
||||
#
|
||||
# This variable specifies the architecture to build SDK items for and means
|
||||
# you can build the SDK packages for architectures other than the machine you are
|
||||
# running the build on (i.e. building i686 packages on an x86_64 host).
|
||||
# Supported values are i686 and x86_64
|
||||
#SDKMACHINE ?= "i686"
|
||||
|
||||
#
|
||||
# Extra image configuration defaults
|
||||
#
|
||||
# The EXTRA_IMAGE_FEATURES variable allows extra packages to be added to the generated
|
||||
# images. Some of these options are added to certain image types automatically. The
|
||||
# variable can contain the following options:
|
||||
# "dbg-pkgs" - add -dbg packages for all installed packages
|
||||
# (adds symbol information for debugging/profiling)
|
||||
# "dev-pkgs" - add -dev packages for all installed packages
|
||||
# (useful if you want to develop against libs in the image)
|
||||
# "ptest-pkgs" - add -ptest packages for all ptest-enabled packages
|
||||
# (useful if you want to run the package test suites)
|
||||
# "tools-sdk" - add development tools (gcc, make, pkgconfig etc.)
|
||||
# "tools-debug" - add debugging tools (gdb, strace)
|
||||
# "eclipse-debug" - add Eclipse remote debugging support
|
||||
# "tools-profile" - add profiling tools (oprofile, lttng, valgrind)
|
||||
# "tools-testapps" - add useful testing tools (ts_print, aplay, arecord etc.)
|
||||
# "debug-tweaks" - make an image suitable for development
|
||||
# e.g. ssh root access has a blank password
|
||||
# There are other application targets that can be used here too, see
|
||||
# meta/classes/image.bbclass and meta/classes/core-image.bbclass for more details.
|
||||
# We default to enabling the debugging tweaks.
|
||||
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
|
||||
|
||||
#
|
||||
# Additional image features
|
||||
#
|
||||
# The following is a list of additional classes to use when building images which
|
||||
# enable extra features. Some available options which can be included in this variable
|
||||
# are:
|
||||
# - 'buildstats' collect build statistics
|
||||
# - 'image-mklibs' to reduce shared library files size for an image
|
||||
# - 'image-prelink' in order to prelink the filesystem image
|
||||
# - 'image-swab' to perform host system intrusion detection
|
||||
# NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink
|
||||
# NOTE: mklibs also needs to be explicitly enabled for a given image, see local.conf.extended
|
||||
# image-prelink disabled for now due to issues with IFUNC symbol relocation
|
||||
USER_CLASSES ?= "buildstats image-mklibs"
|
||||
|
||||
#
|
||||
# Runtime testing of images
|
||||
#
|
||||
# The build system can test booting virtual machine images under qemu (an emulator)
|
||||
# after any root filesystems are created and run tests against those images. To
|
||||
# enable this uncomment this line. See classes/testimage(-auto).bbclass for
|
||||
# further details.
|
||||
#TEST_IMAGE = "1"
|
||||
#
|
||||
# Interactive shell configuration
|
||||
#
|
||||
# Under certain circumstances the system may need input from you and to do this it
|
||||
# can launch an interactive shell. It needs to do this since the build is
|
||||
# multithreaded and needs to be able to handle the case where more than one parallel
|
||||
# process may require the user's attention. The default is iterate over the available
|
||||
# terminal types to find one that works.
|
||||
#
|
||||
# Examples of the occasions this may happen are when resolving patches which cannot
|
||||
# be applied, to use the devshell or the kernel menuconfig
|
||||
#
|
||||
# Supported values are auto, gnome, xfce, rxvt, screen, konsole (KDE 3.x only), none
|
||||
# Note: currently, Konsole support only works for KDE 3.x due to the way
|
||||
# newer Konsole versions behave
|
||||
#OE_TERMINAL = "auto"
|
||||
# By default disable interactive patch resolution (tasks will just fail instead):
|
||||
PATCHRESOLVE = "noop"
|
||||
|
||||
#
|
||||
# Disk Space Monitoring during the build
|
||||
#
|
||||
# Monitor the disk space during the build. If there is less that 1GB of space or less
|
||||
# than 100K inodes in any key build location (TMPDIR, DL_DIR, SSTATE_DIR), gracefully
|
||||
# shutdown the build. If there is less that 100MB or 1K inodes, perform a hard abort
|
||||
# of the build. The reason for this is that running completely out of space can corrupt
|
||||
# files and damages the build in ways which may not be easily recoverable.
|
||||
# It's necesary to monitor /tmp, if there is no space left the build will fail
|
||||
# with very exotic errors.
|
||||
BB_DISKMON_DIRS = "\
|
||||
STOPTASKS,${TMPDIR},1G,100K \
|
||||
STOPTASKS,${DL_DIR},1G,100K \
|
||||
STOPTASKS,${SSTATE_DIR},1G,100K \
|
||||
STOPTASKS,/tmp,100M,100K \
|
||||
ABORT,${TMPDIR},100M,1K \
|
||||
ABORT,${DL_DIR},100M,1K \
|
||||
ABORT,${SSTATE_DIR},100M,1K \
|
||||
ABORT,/tmp,10M,1K"
|
||||
|
||||
#
|
||||
# Shared-state files from other locations
|
||||
#
|
||||
# As mentioned above, shared state files are prebuilt cache data objects which can
|
||||
# used to accelerate build time. This variable can be used to configure the system
|
||||
# to search other mirror locations for these objects before it builds the data itself.
|
||||
#
|
||||
# This can be a filesystem directory, or a remote url such as http or ftp. These
|
||||
# would contain the sstate-cache results from previous builds (possibly from other
|
||||
# machines). This variable works like fetcher MIRRORS/PREMIRRORS and points to the
|
||||
# cache locations to check for the shared objects.
|
||||
# NOTE: if the mirror uses the same structure as SSTATE_DIR, you need to add PATH
|
||||
# at the end as shown in the examples below. This will be substituted with the
|
||||
# correct path within the directory structure.
|
||||
#SSTATE_MIRRORS ?= "\
|
||||
#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/master/sstate-cache/PATH;downloadfilename=PATH \n"
|
||||
|
||||
SOURCE_MIRROR_URL ?= "http://build-cache.asterius.io/downloads/"
|
||||
INHERIT += "own-mirrors rm_work"
|
||||
|
||||
#
|
||||
# Qemu configuration
|
||||
#
|
||||
# By default qemu will build with a builtin VNC server where graphical output can be
|
||||
# seen. The two lines below enable the SDL backend too. By default libsdl-native will
|
||||
# be built, if you want to use your host's libSDL instead of the minimal libsdl built
|
||||
# by libsdl-native then uncomment the ASSUME_PROVIDED line below.
|
||||
PACKAGECONFIG_append_pn-qemu-native = " sdl"
|
||||
PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
|
||||
#ASSUME_PROVIDED += "libsdl-native"
|
||||
|
||||
# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to
|
||||
# track the version of this file when it was generated. This can safely be ignored if
|
||||
# this doesn't mean anything to you.
|
||||
CONF_VERSION = "1"
|
||||
@@ -1,11 +0,0 @@
|
||||
LINKING EXCEPTION
|
||||
|
||||
In addition to the permissions in the GNU General Public License, the authors
|
||||
give you unlimited permission to link the compiled version of this library into
|
||||
combinations with other programs, and to distribute those combinations without
|
||||
any restriction coming from the use of this file. (The General Public License
|
||||
restrictions do apply in other respects; for example, they cover modification
|
||||
of the file, and distribution when not linked into a combined executable.)
|
||||
|
||||
|
||||
insert GPL v2 text here
|
||||
149
lib/crate.py
Normal file
149
lib/crate.py
Normal file
@@ -0,0 +1,149 @@
|
||||
# ex:ts=4:sw=4:sts=4:et
|
||||
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
|
||||
"""
|
||||
BitBake 'Fetch' implementation for crates.io
|
||||
"""
|
||||
|
||||
# Copyright (C) 2016 Doug Goldstein
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License version 2 as
|
||||
# published by the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
|
||||
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import bb
|
||||
from bb.fetch2 import logger, subprocess_setup, UnpackError
|
||||
from bb.fetch2.wget import Wget
|
||||
|
||||
|
||||
class Crate(Wget):
|
||||
|
||||
"""Class to fetch crates via wget"""
|
||||
|
||||
def _cargo_bitbake_path(self, rootdir):
|
||||
return os.path.join(rootdir, "cargo_home", "bitbake")
|
||||
|
||||
def supports(self, ud, d):
|
||||
"""
|
||||
Check to see if a given url is for this fetcher
|
||||
"""
|
||||
return ud.type in ['crate']
|
||||
|
||||
def recommends_checksum(self, urldata):
|
||||
return False
|
||||
|
||||
def urldata_init(self, ud, d):
|
||||
"""
|
||||
Sets up to download the respective crate from crates.io
|
||||
"""
|
||||
|
||||
if ud.type == 'crate':
|
||||
self._crate_urldata_init(ud, d)
|
||||
|
||||
super(Crate, self).urldata_init(ud, d)
|
||||
|
||||
def _crate_urldata_init(self, ud, d):
|
||||
"""
|
||||
Sets up the download for a crate
|
||||
"""
|
||||
|
||||
# URL syntax is: crate://NAME/VERSION
|
||||
# break the URL apart by /
|
||||
parts = ud.url.split('/')
|
||||
if len(parts) < 5:
|
||||
raise bb.fetch2.ParameterError("Invalid URL: Must be crate://HOST/NAME/VERSION", ud.url)
|
||||
|
||||
# last field is version
|
||||
version = parts[len(parts) - 1]
|
||||
# second to last field is name
|
||||
name = parts[len(parts) - 2]
|
||||
# host (this is to allow custom crate registries to be specified
|
||||
host = '/'.join(parts[2:len(parts) - 2])
|
||||
|
||||
# if using upstream just fix it up nicely
|
||||
if host == 'crates.io':
|
||||
host = 'crates.io/api/v1/crates'
|
||||
|
||||
ud.url = "https://%s/%s/%s/download" % (host, name, version)
|
||||
ud.parm['downloadfilename'] = "%s-%s.crate" % (name, version)
|
||||
ud.parm['name'] = name
|
||||
|
||||
logger.debug(2, "Fetching %s to %s" % (ud.url, ud.parm['downloadfilename']))
|
||||
|
||||
def unpack(self, ud, rootdir, d):
|
||||
"""
|
||||
Uses the crate to build the necessary paths for cargo to utilize it
|
||||
"""
|
||||
if ud.type == 'crate':
|
||||
return self._crate_unpack(ud, rootdir, d)
|
||||
else:
|
||||
super(Crate, self).unpack(ud, rootdir, d)
|
||||
|
||||
def _crate_unpack(self, ud, rootdir, d):
|
||||
"""
|
||||
Unpacks a crate
|
||||
"""
|
||||
thefile = ud.localpath
|
||||
|
||||
# possible metadata we need to write out
|
||||
metadata = {}
|
||||
|
||||
# change to the rootdir to unpack but save the old working dir
|
||||
save_cwd = os.getcwd()
|
||||
os.chdir(rootdir)
|
||||
|
||||
pn = d.getVar('BPN')
|
||||
if pn == ud.parm.get('name'):
|
||||
cmd = "tar -xz --no-same-owner -f %s" % thefile
|
||||
else:
|
||||
cargo_bitbake = self._cargo_bitbake_path(rootdir)
|
||||
|
||||
cmd = "tar -xz --no-same-owner -f %s -C %s" % (thefile, cargo_bitbake)
|
||||
|
||||
# ensure we've got these paths made
|
||||
bb.utils.mkdirhier(cargo_bitbake)
|
||||
|
||||
# generate metadata necessary
|
||||
with open(thefile, 'rb') as f:
|
||||
# get the SHA256 of the original tarball
|
||||
tarhash = hashlib.sha256(f.read()).hexdigest()
|
||||
|
||||
metadata['files'] = {}
|
||||
metadata['package'] = tarhash
|
||||
|
||||
# path it
|
||||
path = d.getVar('PATH')
|
||||
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)
|
||||
|
||||
os.chdir(save_cwd)
|
||||
|
||||
if ret != 0:
|
||||
raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), ud.url)
|
||||
|
||||
# if we have metadata to write out..
|
||||
if len(metadata) > 0:
|
||||
cratepath = os.path.splitext(os.path.basename(thefile))[0]
|
||||
bbpath = self._cargo_bitbake_path(rootdir)
|
||||
mdfile = '.cargo-checksum.json'
|
||||
mdpath = os.path.join(bbpath, cratepath, mdfile)
|
||||
with open(mdpath, "w") as f:
|
||||
json.dump(metadata, f)
|
||||
@@ -1,20 +0,0 @@
|
||||
DESCRIPTION = "Fast multiple substring searching with finite state machines."
|
||||
HOMEPAGE = "https://github.com/BurntSushi/aho-corasick"
|
||||
LICENSE = "MIT"
|
||||
LIC_FILES_CHKSUM = "file://LICENSE-MIT;md5=8d0d0aa488af0ab9aafa3b85a7fc8e12"
|
||||
DEPENDS = "memchr-rs"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
SRC_URI = "git://github.com/BurntSushi/aho-corasick.git;protocol=https"
|
||||
SRCREV = "e1bca33dcc060d587e802320a79cbb035f37f8fa"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
DESCRIPTION = "DBus binding for rust"
|
||||
HOMEPAGE = "https://github.com/diwic/dbus-rs"
|
||||
LICENSE = "Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "file://LICENSE;md5=d2794c0df5b907fdace235a619d80314"
|
||||
DEPENDS = "libc-rs dbus"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
SRC_URI = "git://github.com/diwic/dbus-rs.git;protocol=https"
|
||||
SRCREV = "d23c8b7fecd5a8e82131893250a5ac376799faff"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
DESCRIPTION = "getopts-like option parsing"
|
||||
HOMEPAGE = "https://github.com/rust-lang/getopts"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "\
|
||||
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
|
||||
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
|
||||
"
|
||||
DEPENDS = "log-rs"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
SRC_URI = "git://github.com/rust-lang/getopts.git;protocol=https"
|
||||
SRCREV = "a13c62b7d860b6d370129ebb972bf5e0373c5be7"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
DESCRIPTION = "A Rust library with native bindings to the types and functions commonly found on various systems, including libc."
|
||||
HOMEPAGE = "https://github.com/rust-lang/libc"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "\
|
||||
file://LICENSE-MIT;md5=615cc94ba6f721c4ed3d6988605e85ca \
|
||||
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
|
||||
"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
# SRC_URI = "git://git@github.com:rust-lang/libc.git;protocol=https"
|
||||
# libc lives in rust-lang/rust which is a submodule of rust-lang/libc
|
||||
SRC_URI = "gitsm://github.com/rust-lang/rust.git;protocol=https"
|
||||
SRCREV = "8b7c17db2235a2a3f2c71242b11fc429a8d05a90"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_compile () {
|
||||
oe_runrustc ${S}/src/liblibc/lib.rs --cfg feature='"cargo-build"'
|
||||
}
|
||||
|
||||
do_install () {
|
||||
install -D -m 644 liblibc.rlib ${D}/${rustlibdir}/liblibc.rlib
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
DESCRIPTION = "An logging implementation for `log` which is configured via an environment variable"
|
||||
DEPENDS = "regex-rs log-rs"
|
||||
|
||||
require log.inc
|
||||
|
||||
LIB_SRC = "${S}/env/src/lib.rs"
|
||||
@@ -1,4 +0,0 @@
|
||||
DESCRIPTION = "A Rust library providing a lightweight logging facade"
|
||||
DEPENDS = "libc-rs"
|
||||
|
||||
require log.inc
|
||||
@@ -1,22 +0,0 @@
|
||||
HOMEPAGE = "https://github.com/rust-lang/log"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "\
|
||||
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
|
||||
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
|
||||
"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
SRC_URI = "git://github.com/rust-lang/log.git;protocol=https"
|
||||
SRCREV = "5453e16166ec451afc9738978ca01f162127ebbe"
|
||||
PV = "0.3.1"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
DESCRIPTION = "Safe interface to memchr"
|
||||
HOMEPAGE = "https://github.com/BurntSushi/rust-memchr"
|
||||
LICENSE = "MIT"
|
||||
LIC_FILES_CHKSUM = "file://LICENSE-MIT;md5=8d0d0aa488af0ab9aafa3b85a7fc8e12"
|
||||
DEPENDS = "libc-rs"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
SRC_URI = "git://github.com/BurntSushi/rust-memchr.git;protocol=https"
|
||||
SRCREV = "a91e63378bf6f4bba5c7d88f4fe98efdcb432c99"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
# This module is tiny. One wrapper function only.
|
||||
CRATE_TYPE = "rlib"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
DESCRIPTION = "An implementation of regular expressions for Rust"
|
||||
DEPENDS = "\
|
||||
aho-corasick-rs \
|
||||
memchr-rs \
|
||||
regex-syntax-rs \
|
||||
"
|
||||
|
||||
require regex.inc
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
@@ -1,7 +0,0 @@
|
||||
DESCRIPTION = "A regular expression parser"
|
||||
|
||||
require regex.inc
|
||||
|
||||
# Should only be used directly by regex
|
||||
CRATE_TYPE = "rlib"
|
||||
LIB_SRC = "${S}/regex-syntax/src/lib.rs"
|
||||
@@ -1,22 +0,0 @@
|
||||
HOMEPAGE = "https://github.com/rust-lang/regex"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "\
|
||||
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
|
||||
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
|
||||
"
|
||||
|
||||
SRC_URI = "git://github.com/rust-lang/regex.git;protocol=https"
|
||||
SRCREV = "c9e6781a6845478aa2d8ebc86972755f854fdbe0"
|
||||
PV = "0.1.38"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
DESCRIPTION = "Utilities for working with time-related functions in Rust"
|
||||
HOMEPAGE = "https://github.com/rust-lang/time"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "\
|
||||
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
|
||||
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
|
||||
"
|
||||
DEPENDS = "libc-rs"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
SRC_URI = "git://github.com/rust-lang/time.git;protocol=https"
|
||||
SRCREV = "32b212b877b836dbfdc97af5674d91672e70ecbd"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
DESCRIPTION = "FFI bindings to libudev"
|
||||
HOMEPAGE = "https://github.com/dcuddeback/libudev-sys"
|
||||
LICENSE = "MIT"
|
||||
LIC_FILES_CHKSUM = "file://LICENSE;md5=bbd2acd29c4ba5d4591b03e2757c04a3"
|
||||
DEPENDS = "libudev-sys-rs"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
SRC_URI = "git://github.com/dcuddeback/libudev-rs.git;protocol=https"
|
||||
SRCREV = "d55763c626790e2e8724947503238731843a969a"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
DESCRIPTION = "FFI bindings to libudev"
|
||||
HOMEPAGE = "https://github.com/dcuddeback/libudev-sys"
|
||||
LICENSE = "MIT"
|
||||
LIC_FILES_CHKSUM = "file://LICENSE;md5=bbd2acd29c4ba5d4591b03e2757c04a3"
|
||||
DEPENDS = "libc-rs udev"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
SRC_URI = "git://github.com/dcuddeback/libudev-sys.git;protocol=https"
|
||||
SRCREV = "14c24afc61e3315dffddab2c7f36999a16a002d8"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
RUSTC_FLAGS += "-ludev"
|
||||
CRATE_TYPE = "rlib"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
|
||||
## An excerpt from curl-sys's build script:
|
||||
#export CFLAGS := $(CFLAGS) -fPIC -ffunction-sections -fdata-sections
|
||||
#OPTS := $(OPTS) \
|
||||
# --enable-static=yes \
|
||||
# --enable-shared=no \
|
||||
# --disable-ldap --disable-ldaps --disable-ftp --disable-rtsp \
|
||||
# --disable-dict --disable-telnet --disable-tftp --disable-pop3 \
|
||||
# --disable-imap --disable-smtp --disable-gopher --disable-manual \
|
||||
# --enable-optimize --without-librtmp --without-libidn \
|
||||
# --prefix="$(OUT_DIR)"
|
||||
## Due to how rust links, we need -fPIC. Without it,
|
||||
|
||||
#EXTRA_OECONF_append = " \
|
||||
# --with-zlib \
|
||||
# --enable-static \
|
||||
# --enable-hidden-symbols \
|
||||
#"
|
||||
|
||||
#BUILD_CFLAGS += "-fPIC"
|
||||
#TARGET_CFLAGS += "-fPIC"
|
||||
|
||||
#| note: /usr/bin/ld: .../tmp/work/x86_64-linux/cargo-native/2014-11-07-r0/git/target/x86_64-unknown-linux-gnu/deps/libcurl-f3f9ef32955b72e6.rlib(r-curl-libcurl_la-openssl.o): undefined reference to symbol 'SSL_CTX_set_cipher_list'
|
||||
#| /usr/lib/libssl.so.1.0.0: error adding symbols: DSO missing from command line
|
||||
#DEPENDS_append = "openssl"
|
||||
PACKAGECONFIG = "ipv6"
|
||||
CFLAGS_append = " -fPIC"
|
||||
@@ -1,3 +0,0 @@
|
||||
require libgit2.inc
|
||||
S = "${WORKDIR}/git"
|
||||
SRC_URI = "git://github.com/libgit2/libgit2.git;protocol=https"
|
||||
@@ -1,3 +0,0 @@
|
||||
require libgit2.inc
|
||||
SRC_URI = "https://github.com/libgit2/libgit2/archive/v${PV}.tar.gz"
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
SUMMARY = "the Git linkable library"
|
||||
HOMEPAGE = "http://libgit2.github.com/"
|
||||
LICENSE = "GPL-2.0-with-linking-exception"
|
||||
|
||||
DEPENDS = "zlib"
|
||||
|
||||
inherit cmake
|
||||
|
||||
# CLAR = tests, needs python-native
|
||||
EXTRA_OECMAKE = "\
|
||||
-DTHREADSAFE=ON \
|
||||
-DBUILD_CLAR=OFF \
|
||||
-DSHA1_TYPE="builtin" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DBUILD_EXAMPLES=OFF \
|
||||
"
|
||||
|
||||
CFLAGS_append .= " -fPIC"
|
||||
|
||||
# Prior to poky commit 60d504b431fa7cdc6ded141def7ae18edb1834e5,
|
||||
# the cmake class did not define CMAKE_AR in the generated toolchain
|
||||
# file. This is needed to support building a static library.
|
||||
# See https://github.com/jmesmon/meta-rust/issues/1
|
||||
OECMAKE_AR ?= "${AR}"
|
||||
cmake_do_generate_toolchain_file_append() {
|
||||
cat >> ${WORKDIR}/toolchain.cmake <<EOF
|
||||
set( CMAKE_AR ${OECMAKE_AR} CACHE FILEPATH "Archiver" )
|
||||
EOF
|
||||
}
|
||||
|
||||
BBCLASSEXTEND = "native"
|
||||
@@ -1,6 +0,0 @@
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=29c24df0df4c2bab5efb8d5a33a73202"
|
||||
|
||||
SRC_URI[md5sum] = "dbf516d18e176bbb131de3efccfee533"
|
||||
SRC_URI[sha256sum] = "c7f1bf99ed8aeba65a485489869e2a50f022f3cd847df85e192fc99fdd6c8b5e"
|
||||
|
||||
require libgit2-release.inc
|
||||
@@ -1,10 +0,0 @@
|
||||
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=34197a479f637beb9e09e56893f48bc2"
|
||||
|
||||
SRC_URI[md5sum] = "ade3b85d759866c03b6188e397b652fa"
|
||||
SRC_URI[sha256sum] = "20c0a6ee92c0e19207dac6ddc336b4ae4a1c4ddf91be0891e4b6e6ccba16df0b"
|
||||
|
||||
require libgit2-release.inc
|
||||
|
||||
# Broken due to too old cargo using too old git2-rs
|
||||
DEFAULT_PREFERENCE = "-1"
|
||||
@@ -1,3 +0,0 @@
|
||||
require libgit2-git.inc
|
||||
SRCREV ?= "47f37400253210f483d84fb9c2ecf44fb5986849"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=5ddd5fb64b24982b32a490dccccdabc5"
|
||||
@@ -1,2 +0,0 @@
|
||||
# meta-oe/recipes-support/libssh2
|
||||
BBCLASSEXTEND = "native"
|
||||
@@ -1,3 +0,0 @@
|
||||
# cargo tries to build a shared object using several static objects, one of
|
||||
# which includes the contents of zlib (zutil.o as 'libcurl-f3f9ef32955b72e6.rlib(r-z-zutil.o)')
|
||||
CFLAGS_append = " -fPIC"
|
||||
13
recipes-devtools/cargo/cargo-0.27.0.inc
Normal file
13
recipes-devtools/cargo/cargo-0.27.0.inc
Normal file
@@ -0,0 +1,13 @@
|
||||
CARGO_SNAPSHOT = "cargo-0.26.0-${RUST_BUILD_SYS}"
|
||||
|
||||
# TODO: Add hashes for other architecture toolchains as well. Make a script?
|
||||
SRC_URI[cargo-snapshot-x86_64.md5sum] = "b0de62d86f0ba71078471d09916873c6"
|
||||
SRC_URI[cargo-snapshot-x86_64.sha256sum] = "9ba227f2364f618dc9415dacf3a5dce17458e1cb9f6d4fe860416cb68db894e4"
|
||||
|
||||
SRC_URI += "\
|
||||
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.gz;name=cargo-snapshot-${BUILD_ARCH} \
|
||||
"
|
||||
|
||||
# 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"
|
||||
12
recipes-devtools/cargo/cargo-0.28.0.inc
Normal file
12
recipes-devtools/cargo/cargo-0.28.0.inc
Normal file
@@ -0,0 +1,12 @@
|
||||
CARGO_SNAPSHOT = "cargo-0.27.0-${BUILD_ARCH}-unknown-linux-gnu"
|
||||
|
||||
SRC_URI[cargo-snapshot-x86_64.md5sum] = "ca366ba1e97ffc02b72dc74859db35e2"
|
||||
SRC_URI[cargo-snapshot-x86_64.sha256sum] = "8c17710252513d8130141f2c12b4efeef67f0def252b94b246fe326a9a75043b"
|
||||
|
||||
SRC_URI += "\
|
||||
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.gz;name=cargo-snapshot-${BUILD_ARCH} \
|
||||
"
|
||||
|
||||
# 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"
|
||||
12
recipes-devtools/cargo/cargo-0.31.0.inc
Normal file
12
recipes-devtools/cargo/cargo-0.31.0.inc
Normal file
@@ -0,0 +1,12 @@
|
||||
CARGO_SNAPSHOT = "cargo-0.30.0-${BUILD_ARCH}-unknown-linux-gnu"
|
||||
|
||||
SRC_URI[cargo-snapshot-x86_64.md5sum] = "79b62c75b11ef480163276be189fdac5"
|
||||
SRC_URI[cargo-snapshot-x86_64.sha256sum] = "32f210fd3142fda7825a06e95d1aa4b54035c2da435d8cf0dd03fad410c8002f"
|
||||
|
||||
SRC_URI += "\
|
||||
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.gz;name=cargo-snapshot-${BUILD_ARCH} \
|
||||
"
|
||||
|
||||
# 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"
|
||||
13
recipes-devtools/cargo/cargo.inc
Normal file
13
recipes-devtools/cargo/cargo.inc
Normal file
@@ -0,0 +1,13 @@
|
||||
SECTION = "devel"
|
||||
|
||||
DEPENDS = "openssl zlib libgit2 curl ca-certificates libssh2"
|
||||
|
||||
LIC_FILES_CHKSUM += " \
|
||||
file://LICENSE-THIRD-PARTY;md5=892ea68b169e69cfe75097fc38a15b56 \
|
||||
"
|
||||
|
||||
# Needed for pkg-config to be used
|
||||
export LIBGIT2_SYS_USE_PKG_CONFIG = "1"
|
||||
export LIBSSH2_SYS_USE_PKG_CONFIG = "1"
|
||||
|
||||
BBCLASSEXTEND = "native"
|
||||
154
recipes-devtools/cargo/cargo_0.27.0.bb
Normal file
154
recipes-devtools/cargo/cargo_0.27.0.bb
Normal file
@@ -0,0 +1,154 @@
|
||||
# Auto-Generated by cargo-bitbake 0.3.10
|
||||
#
|
||||
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.27.0"
|
||||
SRC_URI += "git://github.com/rust-lang/cargo.git;protocol=https;branch=rust-1.26.0"
|
||||
SRCREV = "0e7c5a93159076952f609e05760e2458828d0d1f"
|
||||
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.4 \
|
||||
crate://crates.io/ansi_term/0.11.0 \
|
||||
crate://crates.io/atty/0.2.10 \
|
||||
crate://crates.io/backtrace-sys/0.1.16 \
|
||||
crate://crates.io/backtrace/0.3.7 \
|
||||
crate://crates.io/bitflags/1.0.3 \
|
||||
crate://crates.io/bufstream/0.1.3 \
|
||||
crate://crates.io/cc/1.0.15 \
|
||||
crate://crates.io/cfg-if/0.1.3 \
|
||||
crate://crates.io/clap/2.31.2 \
|
||||
crate://crates.io/cmake/0.1.31 \
|
||||
crate://crates.io/commoncrypto-sys/0.2.0 \
|
||||
crate://crates.io/commoncrypto/0.2.0 \
|
||||
crate://crates.io/core-foundation-sys/0.5.1 \
|
||||
crate://crates.io/core-foundation/0.5.1 \
|
||||
crate://crates.io/crossbeam/0.3.2 \
|
||||
crate://crates.io/crypto-hash/0.3.1 \
|
||||
crate://crates.io/curl-sys/0.4.5 \
|
||||
crate://crates.io/curl/0.4.12 \
|
||||
crate://crates.io/dtoa/0.4.2 \
|
||||
crate://crates.io/env_logger/0.5.10 \
|
||||
crate://crates.io/failure/0.1.1 \
|
||||
crate://crates.io/failure_derive/0.1.1 \
|
||||
crate://crates.io/filetime/0.1.15 \
|
||||
crate://crates.io/filetime/0.2.1 \
|
||||
crate://crates.io/flate2/1.0.1 \
|
||||
crate://crates.io/fnv/1.0.6 \
|
||||
crate://crates.io/foreign-types-shared/0.1.1 \
|
||||
crate://crates.io/foreign-types/0.3.2 \
|
||||
crate://crates.io/fs2/0.4.3 \
|
||||
crate://crates.io/fuchsia-zircon-sys/0.3.3 \
|
||||
crate://crates.io/fuchsia-zircon/0.3.3 \
|
||||
crate://crates.io/git2-curl/0.8.1 \
|
||||
crate://crates.io/git2/0.7.1 \
|
||||
crate://crates.io/glob/0.2.11 \
|
||||
crate://crates.io/globset/0.4.0 \
|
||||
crate://crates.io/hex/0.3.2 \
|
||||
crate://crates.io/home/0.3.3 \
|
||||
crate://crates.io/humantime/1.1.1 \
|
||||
crate://crates.io/idna/0.1.4 \
|
||||
crate://crates.io/ignore/0.4.2 \
|
||||
crate://crates.io/itoa/0.4.1 \
|
||||
crate://crates.io/jobserver/0.1.11 \
|
||||
crate://crates.io/kernel32-sys/0.2.2 \
|
||||
crate://crates.io/lazy_static/1.0.0 \
|
||||
crate://crates.io/lazycell/0.6.0 \
|
||||
crate://crates.io/libc/0.2.40 \
|
||||
crate://crates.io/libgit2-sys/0.7.1 \
|
||||
crate://crates.io/libssh2-sys/0.2.7 \
|
||||
crate://crates.io/libz-sys/1.0.18 \
|
||||
crate://crates.io/log/0.4.1 \
|
||||
crate://crates.io/matches/0.1.6 \
|
||||
crate://crates.io/memchr/2.0.1 \
|
||||
crate://crates.io/miniz-sys/0.1.10 \
|
||||
crate://crates.io/miow/0.3.1 \
|
||||
crate://crates.io/num-traits/0.2.4 \
|
||||
crate://crates.io/num_cpus/1.8.0 \
|
||||
crate://crates.io/openssl-probe/0.1.2 \
|
||||
crate://crates.io/openssl-sys/0.9.30 \
|
||||
crate://crates.io/openssl/0.10.7 \
|
||||
crate://crates.io/percent-encoding/1.0.1 \
|
||||
crate://crates.io/pkg-config/0.3.11 \
|
||||
crate://crates.io/proc-macro2/0.3.8 \
|
||||
crate://crates.io/quick-error/1.2.1 \
|
||||
crate://crates.io/quote/0.3.15 \
|
||||
crate://crates.io/quote/0.5.2 \
|
||||
crate://crates.io/rand/0.4.2 \
|
||||
crate://crates.io/redox_syscall/0.1.37 \
|
||||
crate://crates.io/redox_termios/0.1.1 \
|
||||
crate://crates.io/regex-syntax/0.5.6 \
|
||||
crate://crates.io/regex-syntax/0.6.0 \
|
||||
crate://crates.io/regex/0.2.11 \
|
||||
crate://crates.io/regex/1.0.0 \
|
||||
crate://crates.io/remove_dir_all/0.5.1 \
|
||||
crate://crates.io/rustc-demangle/0.1.8 \
|
||||
crate://crates.io/same-file/1.0.2 \
|
||||
crate://crates.io/schannel/0.1.12 \
|
||||
crate://crates.io/scopeguard/0.3.3 \
|
||||
crate://crates.io/semver-parser/0.7.0 \
|
||||
crate://crates.io/semver/0.9.0 \
|
||||
crate://crates.io/serde/1.0.55 \
|
||||
crate://crates.io/serde_derive/1.0.55 \
|
||||
crate://crates.io/serde_ignored/0.0.4 \
|
||||
crate://crates.io/serde_json/1.0.17 \
|
||||
crate://crates.io/shell-escape/0.1.4 \
|
||||
crate://crates.io/socket2/0.3.5 \
|
||||
crate://crates.io/strsim/0.7.0 \
|
||||
crate://crates.io/syn/0.11.11 \
|
||||
crate://crates.io/syn/0.13.10 \
|
||||
crate://crates.io/synom/0.11.3 \
|
||||
crate://crates.io/synstructure/0.6.1 \
|
||||
crate://crates.io/tar/0.4.15 \
|
||||
crate://crates.io/tempfile/3.0.2 \
|
||||
crate://crates.io/termcolor/0.3.6 \
|
||||
crate://crates.io/termion/1.5.1 \
|
||||
crate://crates.io/textwrap/0.9.0 \
|
||||
crate://crates.io/thread_local/0.3.5 \
|
||||
crate://crates.io/toml/0.4.6 \
|
||||
crate://crates.io/ucd-util/0.1.1 \
|
||||
crate://crates.io/unicode-bidi/0.3.4 \
|
||||
crate://crates.io/unicode-normalization/0.1.7 \
|
||||
crate://crates.io/unicode-width/0.1.4 \
|
||||
crate://crates.io/unicode-xid/0.0.4 \
|
||||
crate://crates.io/unicode-xid/0.1.0 \
|
||||
crate://crates.io/unreachable/1.0.0 \
|
||||
crate://crates.io/url/1.7.0 \
|
||||
crate://crates.io/utf8-ranges/1.0.0 \
|
||||
crate://crates.io/vcpkg/0.2.3 \
|
||||
crate://crates.io/vec_map/0.8.1 \
|
||||
crate://crates.io/void/1.0.2 \
|
||||
crate://crates.io/walkdir/2.1.4 \
|
||||
crate://crates.io/winapi-build/0.1.1 \
|
||||
crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
|
||||
crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
|
||||
crate://crates.io/winapi/0.2.8 \
|
||||
crate://crates.io/winapi/0.3.4 \
|
||||
crate://crates.io/wincolor/0.1.6 \
|
||||
"
|
||||
|
||||
|
||||
|
||||
# FIXME: update generateme with the real MD5 of the license file
|
||||
LIC_FILES_CHKSUM=" \
|
||||
file://LICENSE-MIT;md5=b377b220f43d747efdec40d69fcaa69d \
|
||||
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
|
||||
"
|
||||
|
||||
SUMMARY = "Cargo, a package manager for Rust."
|
||||
HOMEPAGE = "https://crates.io"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
|
||||
# includes this file if it exists but does not fail
|
||||
# this is useful for anything you may want to override from
|
||||
# what cargo-bitbake generates.
|
||||
include cargo-${PV}.inc
|
||||
include cargo.inc
|
||||
153
recipes-devtools/cargo/cargo_0.28.0.bb
Normal file
153
recipes-devtools/cargo/cargo_0.28.0.bb
Normal file
@@ -0,0 +1,153 @@
|
||||
# Auto-Generated by cargo-bitbake 0.3.10
|
||||
#
|
||||
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.28.0"
|
||||
SRC_URI += "git://github.com/rust-lang/cargo.git;protocol=https;branch=rust-1.27.0"
|
||||
SRCREV = "1e95190e5ffd6e6b701ad87dab4671246b96a9ce"
|
||||
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.5 \
|
||||
crate://crates.io/ansi_term/0.11.0 \
|
||||
crate://crates.io/atty/0.2.10 \
|
||||
crate://crates.io/backtrace-sys/0.1.23 \
|
||||
crate://crates.io/backtrace/0.3.9 \
|
||||
crate://crates.io/bitflags/1.0.3 \
|
||||
crate://crates.io/bufstream/0.1.3 \
|
||||
crate://crates.io/cc/1.0.17 \
|
||||
crate://crates.io/cfg-if/0.1.4 \
|
||||
crate://crates.io/clap/2.32.0 \
|
||||
crate://crates.io/cmake/0.1.31 \
|
||||
crate://crates.io/commoncrypto-sys/0.2.0 \
|
||||
crate://crates.io/commoncrypto/0.2.0 \
|
||||
crate://crates.io/core-foundation-sys/0.5.1 \
|
||||
crate://crates.io/core-foundation/0.5.1 \
|
||||
crate://crates.io/crossbeam/0.3.2 \
|
||||
crate://crates.io/crypto-hash/0.3.1 \
|
||||
crate://crates.io/curl-sys/0.4.5 \
|
||||
crate://crates.io/curl/0.4.12 \
|
||||
crate://crates.io/dtoa/0.4.2 \
|
||||
crate://crates.io/env_logger/0.5.10 \
|
||||
crate://crates.io/failure/0.1.1 \
|
||||
crate://crates.io/failure_derive/0.1.1 \
|
||||
crate://crates.io/filetime/0.2.1 \
|
||||
crate://crates.io/flate2/1.0.1 \
|
||||
crate://crates.io/fnv/1.0.6 \
|
||||
crate://crates.io/foreign-types-shared/0.1.1 \
|
||||
crate://crates.io/foreign-types/0.3.2 \
|
||||
crate://crates.io/fs2/0.4.3 \
|
||||
crate://crates.io/fuchsia-zircon-sys/0.3.3 \
|
||||
crate://crates.io/fuchsia-zircon/0.3.3 \
|
||||
crate://crates.io/git2-curl/0.8.1 \
|
||||
crate://crates.io/git2/0.7.2 \
|
||||
crate://crates.io/glob/0.2.11 \
|
||||
crate://crates.io/globset/0.4.0 \
|
||||
crate://crates.io/hex/0.3.2 \
|
||||
crate://crates.io/home/0.3.3 \
|
||||
crate://crates.io/humantime/1.1.1 \
|
||||
crate://crates.io/idna/0.1.4 \
|
||||
crate://crates.io/ignore/0.4.2 \
|
||||
crate://crates.io/itoa/0.4.1 \
|
||||
crate://crates.io/jobserver/0.1.11 \
|
||||
crate://crates.io/kernel32-sys/0.2.2 \
|
||||
crate://crates.io/lazy_static/1.0.1 \
|
||||
crate://crates.io/lazycell/0.6.0 \
|
||||
crate://crates.io/libc/0.2.42 \
|
||||
crate://crates.io/libgit2-sys/0.7.4 \
|
||||
crate://crates.io/libssh2-sys/0.2.7 \
|
||||
crate://crates.io/libz-sys/1.0.18 \
|
||||
crate://crates.io/log/0.4.3 \
|
||||
crate://crates.io/matches/0.1.6 \
|
||||
crate://crates.io/memchr/2.0.1 \
|
||||
crate://crates.io/miniz-sys/0.1.10 \
|
||||
crate://crates.io/miow/0.3.1 \
|
||||
crate://crates.io/num-traits/0.2.5 \
|
||||
crate://crates.io/num_cpus/1.8.0 \
|
||||
crate://crates.io/openssl-probe/0.1.2 \
|
||||
crate://crates.io/openssl-sys/0.9.33 \
|
||||
crate://crates.io/openssl/0.10.10 \
|
||||
crate://crates.io/percent-encoding/1.0.1 \
|
||||
crate://crates.io/pkg-config/0.3.11 \
|
||||
crate://crates.io/proc-macro2/0.4.6 \
|
||||
crate://crates.io/quick-error/1.2.2 \
|
||||
crate://crates.io/quote/0.3.15 \
|
||||
crate://crates.io/quote/0.6.3 \
|
||||
crate://crates.io/rand/0.4.2 \
|
||||
crate://crates.io/redox_syscall/0.1.40 \
|
||||
crate://crates.io/redox_termios/0.1.1 \
|
||||
crate://crates.io/regex-syntax/0.5.6 \
|
||||
crate://crates.io/regex-syntax/0.6.1 \
|
||||
crate://crates.io/regex/0.2.11 \
|
||||
crate://crates.io/regex/1.0.1 \
|
||||
crate://crates.io/remove_dir_all/0.5.1 \
|
||||
crate://crates.io/rustc-demangle/0.1.8 \
|
||||
crate://crates.io/same-file/1.0.2 \
|
||||
crate://crates.io/schannel/0.1.13 \
|
||||
crate://crates.io/scopeguard/0.3.3 \
|
||||
crate://crates.io/semver-parser/0.7.0 \
|
||||
crate://crates.io/semver/0.9.0 \
|
||||
crate://crates.io/serde/1.0.69 \
|
||||
crate://crates.io/serde_derive/1.0.69 \
|
||||
crate://crates.io/serde_ignored/0.0.4 \
|
||||
crate://crates.io/serde_json/1.0.22 \
|
||||
crate://crates.io/shell-escape/0.1.4 \
|
||||
crate://crates.io/socket2/0.3.7 \
|
||||
crate://crates.io/strsim/0.7.0 \
|
||||
crate://crates.io/syn/0.11.11 \
|
||||
crate://crates.io/syn/0.14.4 \
|
||||
crate://crates.io/synom/0.11.3 \
|
||||
crate://crates.io/synstructure/0.6.1 \
|
||||
crate://crates.io/tar/0.4.16 \
|
||||
crate://crates.io/tempfile/3.0.2 \
|
||||
crate://crates.io/termcolor/0.3.6 \
|
||||
crate://crates.io/termion/1.5.1 \
|
||||
crate://crates.io/textwrap/0.10.0 \
|
||||
crate://crates.io/thread_local/0.3.5 \
|
||||
crate://crates.io/toml/0.4.6 \
|
||||
crate://crates.io/ucd-util/0.1.1 \
|
||||
crate://crates.io/unicode-bidi/0.3.4 \
|
||||
crate://crates.io/unicode-normalization/0.1.7 \
|
||||
crate://crates.io/unicode-width/0.1.5 \
|
||||
crate://crates.io/unicode-xid/0.0.4 \
|
||||
crate://crates.io/unicode-xid/0.1.0 \
|
||||
crate://crates.io/unreachable/1.0.0 \
|
||||
crate://crates.io/url/1.7.0 \
|
||||
crate://crates.io/utf8-ranges/1.0.0 \
|
||||
crate://crates.io/vcpkg/0.2.4 \
|
||||
crate://crates.io/vec_map/0.8.1 \
|
||||
crate://crates.io/void/1.0.2 \
|
||||
crate://crates.io/walkdir/2.1.4 \
|
||||
crate://crates.io/winapi-build/0.1.1 \
|
||||
crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
|
||||
crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
|
||||
crate://crates.io/winapi/0.2.8 \
|
||||
crate://crates.io/winapi/0.3.5 \
|
||||
crate://crates.io/wincolor/0.1.6 \
|
||||
"
|
||||
|
||||
|
||||
|
||||
# FIXME: update generateme with the real MD5 of the license file
|
||||
LIC_FILES_CHKSUM=" \
|
||||
file://LICENSE-MIT;md5=b377b220f43d747efdec40d69fcaa69d \
|
||||
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
|
||||
"
|
||||
|
||||
SUMMARY = "Cargo, a package manager for Rust."
|
||||
HOMEPAGE = "https://crates.io"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
|
||||
# includes this file if it exists but does not fail
|
||||
# this is useful for anything you may want to override from
|
||||
# what cargo-bitbake generates.
|
||||
include cargo-${PV}.inc
|
||||
include cargo.inc
|
||||
173
recipes-devtools/cargo/cargo_0.31.0.bb
Normal file
173
recipes-devtools/cargo/cargo_0.31.0.bb
Normal file
@@ -0,0 +1,173 @@
|
||||
# Auto-Generated by cargo-bitbake 0.3.10
|
||||
#
|
||||
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.31.0"
|
||||
SRC_URI += "git://github.com/rust-lang/cargo;protocol=https;nobranch=1"
|
||||
SRCREV = "36d96825d0f288c6d1bb2219919a277968bd365f"
|
||||
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/adler32/1.0.3 \
|
||||
crate://crates.io/aho-corasick/0.6.9 \
|
||||
crate://crates.io/ansi_term/0.11.0 \
|
||||
crate://crates.io/arrayvec/0.4.7 \
|
||||
crate://crates.io/atty/0.2.11 \
|
||||
crate://crates.io/backtrace-sys/0.1.24 \
|
||||
crate://crates.io/backtrace/0.3.9 \
|
||||
crate://crates.io/bitflags/1.0.4 \
|
||||
crate://crates.io/bufstream/0.1.4 \
|
||||
crate://crates.io/build_const/0.2.1 \
|
||||
crate://crates.io/cc/1.0.25 \
|
||||
crate://crates.io/cfg-if/0.1.6 \
|
||||
crate://crates.io/clap/2.32.0 \
|
||||
crate://crates.io/cloudabi/0.0.3 \
|
||||
crate://crates.io/commoncrypto-sys/0.2.0 \
|
||||
crate://crates.io/commoncrypto/0.2.0 \
|
||||
crate://crates.io/core-foundation-sys/0.6.2 \
|
||||
crate://crates.io/core-foundation/0.6.2 \
|
||||
crate://crates.io/crc/1.8.1 \
|
||||
crate://crates.io/crossbeam-channel/0.2.6 \
|
||||
crate://crates.io/crossbeam-epoch/0.6.0 \
|
||||
crate://crates.io/crossbeam-utils/0.5.0 \
|
||||
crate://crates.io/crypto-hash/0.3.1 \
|
||||
crate://crates.io/curl-sys/0.4.14 \
|
||||
crate://crates.io/curl/0.4.18 \
|
||||
crate://crates.io/env_logger/0.5.13 \
|
||||
crate://crates.io/failure/0.1.3 \
|
||||
crate://crates.io/failure_derive/0.1.3 \
|
||||
crate://crates.io/filetime/0.2.2 \
|
||||
crate://crates.io/flate2/1.0.4 \
|
||||
crate://crates.io/fnv/1.0.6 \
|
||||
crate://crates.io/foreign-types-shared/0.1.1 \
|
||||
crate://crates.io/foreign-types/0.3.2 \
|
||||
crate://crates.io/fs2/0.4.3 \
|
||||
crate://crates.io/fuchsia-zircon-sys/0.3.3 \
|
||||
crate://crates.io/fuchsia-zircon/0.3.3 \
|
||||
crate://crates.io/fwdansi/1.0.1 \
|
||||
crate://crates.io/git2-curl/0.8.2 \
|
||||
crate://crates.io/git2/0.7.5 \
|
||||
crate://crates.io/glob/0.2.11 \
|
||||
crate://crates.io/globset/0.4.2 \
|
||||
crate://crates.io/hex/0.3.2 \
|
||||
crate://crates.io/home/0.3.3 \
|
||||
crate://crates.io/humantime/1.1.1 \
|
||||
crate://crates.io/idna/0.1.5 \
|
||||
crate://crates.io/ignore/0.4.4 \
|
||||
crate://crates.io/itoa/0.4.3 \
|
||||
crate://crates.io/jobserver/0.1.11 \
|
||||
crate://crates.io/kernel32-sys/0.2.2 \
|
||||
crate://crates.io/lazy_static/1.2.0 \
|
||||
crate://crates.io/lazycell/1.2.0 \
|
||||
crate://crates.io/libc/0.2.43 \
|
||||
crate://crates.io/libgit2-sys/0.7.10 \
|
||||
crate://crates.io/libssh2-sys/0.2.11 \
|
||||
crate://crates.io/libz-sys/1.0.25 \
|
||||
crate://crates.io/lock_api/0.1.4 \
|
||||
crate://crates.io/log/0.4.6 \
|
||||
crate://crates.io/matches/0.1.8 \
|
||||
crate://crates.io/memchr/2.1.1 \
|
||||
crate://crates.io/memoffset/0.2.1 \
|
||||
crate://crates.io/miniz-sys/0.1.11 \
|
||||
crate://crates.io/miniz_oxide/0.2.0 \
|
||||
crate://crates.io/miniz_oxide_c_api/0.2.0 \
|
||||
crate://crates.io/miow/0.3.3 \
|
||||
crate://crates.io/nodrop/0.1.12 \
|
||||
crate://crates.io/num_cpus/1.8.0 \
|
||||
crate://crates.io/opener/0.3.0 \
|
||||
crate://crates.io/openssl-probe/0.1.2 \
|
||||
crate://crates.io/openssl-src/111.0.1+1.1.1 \
|
||||
crate://crates.io/openssl-sys/0.9.39 \
|
||||
crate://crates.io/openssl/0.10.15 \
|
||||
crate://crates.io/owning_ref/0.3.3 \
|
||||
crate://crates.io/parking_lot/0.6.4 \
|
||||
crate://crates.io/parking_lot_core/0.3.1 \
|
||||
crate://crates.io/percent-encoding/1.0.1 \
|
||||
crate://crates.io/pkg-config/0.3.14 \
|
||||
crate://crates.io/proc-macro2/0.4.20 \
|
||||
crate://crates.io/quick-error/1.2.2 \
|
||||
crate://crates.io/quote/0.6.9 \
|
||||
crate://crates.io/rand/0.4.3 \
|
||||
crate://crates.io/rand/0.5.5 \
|
||||
crate://crates.io/rand_core/0.2.2 \
|
||||
crate://crates.io/rand_core/0.3.0 \
|
||||
crate://crates.io/redox_syscall/0.1.40 \
|
||||
crate://crates.io/redox_termios/0.1.1 \
|
||||
crate://crates.io/regex-syntax/0.6.2 \
|
||||
crate://crates.io/regex/1.0.5 \
|
||||
crate://crates.io/remove_dir_all/0.5.1 \
|
||||
crate://crates.io/rustc-demangle/0.1.9 \
|
||||
crate://crates.io/rustc-workspace-hack/1.0.0 \
|
||||
crate://crates.io/rustc_version/0.2.3 \
|
||||
crate://crates.io/rustfix/0.4.2 \
|
||||
crate://crates.io/ryu/0.2.6 \
|
||||
crate://crates.io/same-file/1.0.4 \
|
||||
crate://crates.io/schannel/0.1.14 \
|
||||
crate://crates.io/scopeguard/0.3.3 \
|
||||
crate://crates.io/semver-parser/0.7.0 \
|
||||
crate://crates.io/semver/0.9.0 \
|
||||
crate://crates.io/serde/1.0.80 \
|
||||
crate://crates.io/serde_derive/1.0.80 \
|
||||
crate://crates.io/serde_ignored/0.0.4 \
|
||||
crate://crates.io/serde_json/1.0.32 \
|
||||
crate://crates.io/shell-escape/0.1.4 \
|
||||
crate://crates.io/smallvec/0.6.5 \
|
||||
crate://crates.io/socket2/0.3.8 \
|
||||
crate://crates.io/stable_deref_trait/1.1.1 \
|
||||
crate://crates.io/strsim/0.7.0 \
|
||||
crate://crates.io/syn/0.15.18 \
|
||||
crate://crates.io/synstructure/0.10.1 \
|
||||
crate://crates.io/tar/0.4.18 \
|
||||
crate://crates.io/tempfile/3.0.4 \
|
||||
crate://crates.io/termcolor/1.0.4 \
|
||||
crate://crates.io/termion/1.5.1 \
|
||||
crate://crates.io/textwrap/0.10.0 \
|
||||
crate://crates.io/thread_local/0.3.6 \
|
||||
crate://crates.io/toml/0.4.8 \
|
||||
crate://crates.io/ucd-util/0.1.2 \
|
||||
crate://crates.io/unicode-bidi/0.3.4 \
|
||||
crate://crates.io/unicode-normalization/0.1.7 \
|
||||
crate://crates.io/unicode-width/0.1.5 \
|
||||
crate://crates.io/unicode-xid/0.1.0 \
|
||||
crate://crates.io/unreachable/1.0.0 \
|
||||
crate://crates.io/url/1.7.1 \
|
||||
crate://crates.io/utf8-ranges/1.0.2 \
|
||||
crate://crates.io/vcpkg/0.2.6 \
|
||||
crate://crates.io/vec_map/0.8.1 \
|
||||
crate://crates.io/version_check/0.1.5 \
|
||||
crate://crates.io/void/1.0.2 \
|
||||
crate://crates.io/walkdir/2.2.6 \
|
||||
crate://crates.io/winapi-build/0.1.1 \
|
||||
crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
|
||||
crate://crates.io/winapi-util/0.1.1 \
|
||||
crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
|
||||
crate://crates.io/winapi/0.2.8 \
|
||||
crate://crates.io/winapi/0.3.6 \
|
||||
crate://crates.io/wincolor/1.0.1 \
|
||||
"
|
||||
|
||||
|
||||
|
||||
# FIXME: update generateme with the real MD5 of the license file
|
||||
LIC_FILES_CHKSUM=" \
|
||||
file://LICENSE-MIT;md5=b377b220f43d747efdec40d69fcaa69d \
|
||||
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
|
||||
"
|
||||
|
||||
SUMMARY = "Cargo, a package manager for Rust."
|
||||
HOMEPAGE = "https://crates.io"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
|
||||
# includes this file if it exists but does not fail
|
||||
# this is useful for anything you may want to override from
|
||||
# what cargo-bitbake generates.
|
||||
include cargo-${PV}.inc
|
||||
include cargo.inc
|
||||
30
recipes-devtools/rust/libstd-rs.inc
Normal file
30
recipes-devtools/rust/libstd-rs.inc
Normal file
@@ -0,0 +1,30 @@
|
||||
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} -C link-arg=-Wl,-soname,libstd.so"
|
||||
|
||||
S = "${RUSTSRC}/src/libstd"
|
||||
|
||||
CARGO_BUILD_FLAGS += "--features '${CARGO_FEATURES}'"
|
||||
|
||||
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}
|
||||
|
||||
# With the incremental build support added in 1.24, the libstd deps directory also includes dependency
|
||||
# files that get installed. Those are really only needed to incrementally rebuild the libstd library
|
||||
# itself and don't need to be installed.
|
||||
rm ${B}/${TARGET_SYS}/${BUILD_DIR}/deps/*.d
|
||||
cp ${B}/${TARGET_SYS}/${BUILD_DIR}/deps/* ${D}${rustlibdir}
|
||||
}
|
||||
211
recipes-devtools/rust/libstd-rs_1.26.2.bb
Normal file
211
recipes-devtools/rust/libstd-rs_1.26.2.bb
Normal file
@@ -0,0 +1,211 @@
|
||||
require rust-source-${PV}.inc
|
||||
require libstd-rs.inc
|
||||
|
||||
LIC_FILES_CHKSUM = "file://../../COPYRIGHT;md5=99c369ad81a36cd5b27f6c6968d01055"
|
||||
|
||||
# Don't use jemalloc as it doesn't work for many targets.
|
||||
# https://github.com/rust-lang/rust/pull/37392
|
||||
CARGO_FEATURES ?= "panic-unwind"
|
||||
|
||||
# These are taken from src/libstd/Cargo.toml via cargo-bitbake
|
||||
SRC_URI += " \
|
||||
crate://crates.io/aho-corasick/0.6.4 \
|
||||
crate://crates.io/ansi_term/0.11.0 \
|
||||
crate://crates.io/ar/0.3.1 \
|
||||
crate://crates.io/arrayvec/0.4.7 \
|
||||
crate://crates.io/atty/0.2.8 \
|
||||
crate://crates.io/backtrace-sys/0.1.16 \
|
||||
crate://crates.io/backtrace/0.3.5 \
|
||||
crate://crates.io/bitflags/0.7.0 \
|
||||
crate://crates.io/bitflags/0.9.1 \
|
||||
crate://crates.io/bitflags/1.0.1 \
|
||||
crate://crates.io/bufstream/0.1.3 \
|
||||
crate://crates.io/byteorder/1.2.1 \
|
||||
crate://crates.io/cargo_metadata/0.2.3 \
|
||||
crate://crates.io/cargo_metadata/0.5.3 \
|
||||
crate://crates.io/cc/1.0.9 \
|
||||
crate://crates.io/cfg-if/0.1.2 \
|
||||
crate://crates.io/chrono/0.4.0 \
|
||||
crate://crates.io/clap/2.31.2 \
|
||||
crate://crates.io/cmake/0.1.29 \
|
||||
crate://crates.io/commoncrypto-sys/0.2.0 \
|
||||
crate://crates.io/commoncrypto/0.2.0 \
|
||||
crate://crates.io/compiletest_rs/0.3.8 \
|
||||
crate://crates.io/core-foundation-sys/0.5.1 \
|
||||
crate://crates.io/core-foundation/0.5.1 \
|
||||
crate://crates.io/crossbeam-deque/0.2.0 \
|
||||
crate://crates.io/crossbeam-epoch/0.3.0 \
|
||||
crate://crates.io/crossbeam-utils/0.2.2 \
|
||||
crate://crates.io/crossbeam/0.3.2 \
|
||||
crate://crates.io/crypto-hash/0.3.1 \
|
||||
crate://crates.io/curl-sys/0.4.1 \
|
||||
crate://crates.io/curl/0.4.11 \
|
||||
crate://crates.io/derive-new/0.5.1 \
|
||||
crate://crates.io/diff/0.1.11 \
|
||||
crate://crates.io/dtoa/0.4.2 \
|
||||
crate://crates.io/either/1.4.0 \
|
||||
crate://crates.io/ena/0.9.2 \
|
||||
crate://crates.io/endian-type/0.1.2 \
|
||||
crate://crates.io/enum_primitive/0.1.1 \
|
||||
crate://crates.io/env_logger/0.5.6 \
|
||||
crate://crates.io/error-chain/0.11.0 \
|
||||
crate://crates.io/failure/0.1.1 \
|
||||
crate://crates.io/failure_derive/0.1.1 \
|
||||
crate://crates.io/filetime/0.1.15 \
|
||||
crate://crates.io/flate2/1.0.1 \
|
||||
crate://crates.io/fnv/1.0.6 \
|
||||
crate://crates.io/foreign-types-shared/0.1.1 \
|
||||
crate://crates.io/foreign-types/0.3.2 \
|
||||
crate://crates.io/fs2/0.4.3 \
|
||||
crate://crates.io/fuchsia-zircon-sys/0.3.3 \
|
||||
crate://crates.io/fuchsia-zircon/0.3.3 \
|
||||
crate://crates.io/futures/0.1.17 \
|
||||
crate://crates.io/getopts/0.2.15 \
|
||||
crate://crates.io/git2-curl/0.8.1 \
|
||||
crate://crates.io/git2/0.7.1 \
|
||||
crate://crates.io/glob/0.2.11 \
|
||||
crate://crates.io/globset/0.3.0 \
|
||||
crate://crates.io/handlebars/0.29.1 \
|
||||
crate://crates.io/hex/0.3.1 \
|
||||
crate://crates.io/home/0.3.2 \
|
||||
crate://crates.io/humantime/1.1.1 \
|
||||
crate://crates.io/idna/0.1.4 \
|
||||
crate://crates.io/if_chain/0.1.2 \
|
||||
crate://crates.io/ignore/0.4.1 \
|
||||
crate://crates.io/is-match/0.1.0 \
|
||||
crate://crates.io/itertools/0.7.6 \
|
||||
crate://crates.io/itoa/0.4.1 \
|
||||
crate://crates.io/jobserver/0.1.11 \
|
||||
crate://crates.io/json/0.11.12 \
|
||||
crate://crates.io/jsonrpc-core/8.0.1 \
|
||||
crate://crates.io/kernel32-sys/0.2.2 \
|
||||
crate://crates.io/languageserver-types/0.35.0 \
|
||||
crate://crates.io/lazy_static/0.2.11 \
|
||||
crate://crates.io/lazy_static/1.0.0 \
|
||||
crate://crates.io/lazycell/0.6.0 \
|
||||
crate://crates.io/libc/0.2.40 \
|
||||
crate://crates.io/libgit2-sys/0.7.1 \
|
||||
crate://crates.io/libssh2-sys/0.2.6 \
|
||||
crate://crates.io/libz-sys/1.0.18 \
|
||||
crate://crates.io/log/0.3.9 \
|
||||
crate://crates.io/log/0.4.1 \
|
||||
crate://crates.io/log_settings/0.1.1 \
|
||||
crate://crates.io/lzma-sys/0.1.9 \
|
||||
crate://crates.io/matches/0.1.6 \
|
||||
crate://crates.io/mdbook/0.1.2 \
|
||||
crate://crates.io/memchr/2.0.1 \
|
||||
crate://crates.io/memoffset/0.2.1 \
|
||||
crate://crates.io/miniz-sys/0.1.10 \
|
||||
crate://crates.io/miow/0.3.1 \
|
||||
crate://crates.io/nibble_vec/0.0.3 \
|
||||
crate://crates.io/nodrop/0.1.12 \
|
||||
crate://crates.io/num-integer/0.1.36 \
|
||||
crate://crates.io/num-iter/0.1.35 \
|
||||
crate://crates.io/num-traits/0.1.43 \
|
||||
crate://crates.io/num-traits/0.2.2 \
|
||||
crate://crates.io/num/0.1.42 \
|
||||
crate://crates.io/num_cpus/1.8.0 \
|
||||
crate://crates.io/open/1.2.1 \
|
||||
crate://crates.io/openssl-probe/0.1.2 \
|
||||
crate://crates.io/openssl-sys/0.9.27 \
|
||||
crate://crates.io/openssl/0.10.5 \
|
||||
crate://crates.io/owning_ref/0.3.3 \
|
||||
crate://crates.io/parking_lot/0.5.3 \
|
||||
crate://crates.io/parking_lot_core/0.2.13 \
|
||||
crate://crates.io/percent-encoding/1.0.1 \
|
||||
crate://crates.io/pest/0.3.3 \
|
||||
crate://crates.io/pkg-config/0.3.9 \
|
||||
crate://crates.io/proc-macro2/0.2.3 \
|
||||
crate://crates.io/pulldown-cmark/0.1.2 \
|
||||
crate://crates.io/quick-error/1.2.1 \
|
||||
crate://crates.io/quine-mc_cluskey/0.2.4 \
|
||||
crate://crates.io/quote/0.3.15 \
|
||||
crate://crates.io/quote/0.4.2 \
|
||||
crate://crates.io/racer/2.0.13 \
|
||||
crate://crates.io/radix_trie/0.1.2 \
|
||||
crate://crates.io/rand/0.4.2 \
|
||||
crate://crates.io/rayon-core/1.4.0 \
|
||||
crate://crates.io/rayon/1.0.0 \
|
||||
crate://crates.io/redox_syscall/0.1.37 \
|
||||
crate://crates.io/redox_termios/0.1.1 \
|
||||
crate://crates.io/regex-syntax/0.5.3 \
|
||||
crate://crates.io/regex/0.2.10 \
|
||||
crate://crates.io/remove_dir_all/0.5.0 \
|
||||
crate://crates.io/rls-analysis/0.11.3 \
|
||||
crate://crates.io/rls-blacklist/0.1.0 \
|
||||
crate://crates.io/rls-data/0.15.0 \
|
||||
crate://crates.io/rls-rustc/0.2.2 \
|
||||
crate://crates.io/rls-span/0.4.0 \
|
||||
crate://crates.io/rls-vfs/0.4.5 \
|
||||
crate://crates.io/rustc-ap-rustc_cratesio_shim/94.0.0 \
|
||||
crate://crates.io/rustc-ap-rustc_data_structures/94.0.0 \
|
||||
crate://crates.io/rustc-ap-rustc_errors/94.0.0 \
|
||||
crate://crates.io/rustc-ap-serialize/94.0.0 \
|
||||
crate://crates.io/rustc-ap-syntax/94.0.0 \
|
||||
crate://crates.io/rustc-ap-syntax_pos/94.0.0 \
|
||||
crate://crates.io/rustc-demangle/0.1.7 \
|
||||
crate://crates.io/rustc-serialize/0.3.24 \
|
||||
crate://crates.io/same-file/1.0.2 \
|
||||
crate://crates.io/schannel/0.1.11 \
|
||||
crate://crates.io/scoped-tls/0.1.1 \
|
||||
crate://crates.io/scopeguard/0.3.3 \
|
||||
crate://crates.io/semver-parser/0.7.0 \
|
||||
crate://crates.io/semver/0.9.0 \
|
||||
crate://crates.io/serde/1.0.35 \
|
||||
crate://crates.io/serde_derive/1.0.35 \
|
||||
crate://crates.io/serde_derive_internals/0.22.1 \
|
||||
crate://crates.io/serde_ignored/0.0.4 \
|
||||
crate://crates.io/serde_json/1.0.13 \
|
||||
crate://crates.io/shell-escape/0.1.3 \
|
||||
crate://crates.io/shlex/0.1.1 \
|
||||
crate://crates.io/smallvec/0.6.0 \
|
||||
crate://crates.io/socket2/0.3.4 \
|
||||
crate://crates.io/stable_deref_trait/1.0.0 \
|
||||
crate://crates.io/strsim/0.7.0 \
|
||||
crate://crates.io/syn/0.11.11 \
|
||||
crate://crates.io/syn/0.12.14 \
|
||||
crate://crates.io/synom/0.11.3 \
|
||||
crate://crates.io/synstructure/0.6.1 \
|
||||
crate://crates.io/syntex_errors/0.52.0 \
|
||||
crate://crates.io/syntex_pos/0.52.0 \
|
||||
crate://crates.io/syntex_syntax/0.52.0 \
|
||||
crate://crates.io/tar/0.4.14 \
|
||||
crate://crates.io/tempdir/0.3.7 \
|
||||
crate://crates.io/tempfile/3.0.2 \
|
||||
crate://crates.io/term/0.4.6 \
|
||||
crate://crates.io/term/0.5.1 \
|
||||
crate://crates.io/termcolor/0.3.6 \
|
||||
crate://crates.io/termion/1.5.1 \
|
||||
crate://crates.io/textwrap/0.9.0 \
|
||||
crate://crates.io/thread_local/0.3.5 \
|
||||
crate://crates.io/time/0.1.39 \
|
||||
crate://crates.io/toml-query/0.6.0 \
|
||||
crate://crates.io/toml/0.2.1 \
|
||||
crate://crates.io/toml/0.4.5 \
|
||||
crate://crates.io/ucd-util/0.1.1 \
|
||||
crate://crates.io/unicode-bidi/0.3.4 \
|
||||
crate://crates.io/unicode-normalization/0.1.5 \
|
||||
crate://crates.io/unicode-segmentation/1.2.0 \
|
||||
crate://crates.io/unicode-width/0.1.4 \
|
||||
crate://crates.io/unicode-xid/0.0.3 \
|
||||
crate://crates.io/unicode-xid/0.0.4 \
|
||||
crate://crates.io/unicode-xid/0.1.0 \
|
||||
crate://crates.io/unreachable/1.0.0 \
|
||||
crate://crates.io/url/1.7.0 \
|
||||
crate://crates.io/url_serde/0.2.0 \
|
||||
crate://crates.io/userenv-sys/0.2.0 \
|
||||
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/2.1.4 \
|
||||
crate://crates.io/winapi-build/0.1.1 \
|
||||
crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
|
||||
crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
|
||||
crate://crates.io/winapi/0.2.8 \
|
||||
crate://crates.io/winapi/0.3.4 \
|
||||
crate://crates.io/wincolor/0.1.6 \
|
||||
crate://crates.io/xattr/0.1.11 \
|
||||
crate://crates.io/xz2/0.1.4 \
|
||||
crate://crates.io/yaml-rust/0.3.5 \
|
||||
"
|
||||
254
recipes-devtools/rust/libstd-rs_1.27.1.bb
Normal file
254
recipes-devtools/rust/libstd-rs_1.27.1.bb
Normal file
@@ -0,0 +1,254 @@
|
||||
require rust-source-${PV}.inc
|
||||
require libstd-rs.inc
|
||||
|
||||
LIC_FILES_CHKSUM = "file://../../COPYRIGHT;md5=99c369ad81a36cd5b27f6c6968d01055"
|
||||
|
||||
# Don't use jemalloc as it doesn't work for many targets.
|
||||
# https://github.com/rust-lang/rust/pull/37392
|
||||
CARGO_FEATURES ?= "panic-unwind"
|
||||
|
||||
# These are taken from src/libstd/Cargo.toml via cargo-bitbake
|
||||
SRC_URI += " \
|
||||
crate://crates.io/aho-corasick/0.6.4 \
|
||||
crate://crates.io/ammonia/1.1.0 \
|
||||
crate://crates.io/ansi_term/0.11.0 \
|
||||
crate://crates.io/ar/0.3.1 \
|
||||
crate://crates.io/arrayvec/0.4.7 \
|
||||
crate://crates.io/assert_cli/0.5.4 \
|
||||
crate://crates.io/atty/0.2.8 \
|
||||
crate://crates.io/backtrace-sys/0.1.16 \
|
||||
crate://crates.io/backtrace/0.3.6 \
|
||||
crate://crates.io/bitflags/0.7.0 \
|
||||
crate://crates.io/bitflags/0.9.1 \
|
||||
crate://crates.io/bitflags/1.0.1 \
|
||||
crate://crates.io/bufstream/0.1.3 \
|
||||
crate://crates.io/bytecount/0.2.0 \
|
||||
crate://crates.io/byteorder/1.2.2 \
|
||||
crate://crates.io/cargo_metadata/0.3.3 \
|
||||
crate://crates.io/cargo_metadata/0.5.4 \
|
||||
crate://crates.io/cc/1.0.10 \
|
||||
crate://crates.io/cfg-if/0.1.2 \
|
||||
crate://crates.io/chrono/0.4.1 \
|
||||
crate://crates.io/clap/2.31.2 \
|
||||
crate://crates.io/clippy_lints/0.0.197 \
|
||||
crate://crates.io/cmake/0.1.30 \
|
||||
crate://crates.io/colored/1.6.0 \
|
||||
crate://crates.io/commoncrypto-sys/0.2.0 \
|
||||
crate://crates.io/commoncrypto/0.2.0 \
|
||||
crate://crates.io/compiletest_rs/0.3.9 \
|
||||
crate://crates.io/core-foundation-sys/0.5.1 \
|
||||
crate://crates.io/core-foundation/0.5.1 \
|
||||
crate://crates.io/crossbeam-deque/0.2.0 \
|
||||
crate://crates.io/crossbeam-epoch/0.3.1 \
|
||||
crate://crates.io/crossbeam-utils/0.2.2 \
|
||||
crate://crates.io/crossbeam/0.3.2 \
|
||||
crate://crates.io/crypto-hash/0.3.1 \
|
||||
crate://crates.io/curl-sys/0.4.2 \
|
||||
crate://crates.io/curl/0.4.12 \
|
||||
crate://crates.io/debug_unreachable/0.1.1 \
|
||||
crate://crates.io/derive-new/0.5.2 \
|
||||
crate://crates.io/diff/0.1.11 \
|
||||
crate://crates.io/difference/1.0.0 \
|
||||
crate://crates.io/difference/2.0.0 \
|
||||
crate://crates.io/dtoa/0.4.2 \
|
||||
crate://crates.io/either/1.5.0 \
|
||||
crate://crates.io/elasticlunr-rs/2.2.0 \
|
||||
crate://crates.io/ena/0.9.2 \
|
||||
crate://crates.io/endian-type/0.1.2 \
|
||||
crate://crates.io/enum_primitive/0.1.1 \
|
||||
crate://crates.io/env_logger/0.5.8 \
|
||||
crate://crates.io/environment/0.1.1 \
|
||||
crate://crates.io/error-chain/0.11.0 \
|
||||
crate://crates.io/failure/0.1.1 \
|
||||
crate://crates.io/failure_derive/0.1.1 \
|
||||
crate://crates.io/filetime/0.1.15 \
|
||||
crate://crates.io/filetime/0.2.0 \
|
||||
crate://crates.io/fixedbitset/0.1.9 \
|
||||
crate://crates.io/flate2/1.0.1 \
|
||||
crate://crates.io/fnv/1.0.6 \
|
||||
crate://crates.io/foreign-types-shared/0.1.1 \
|
||||
crate://crates.io/foreign-types/0.3.2 \
|
||||
crate://crates.io/fs2/0.4.3 \
|
||||
crate://crates.io/fuchsia-zircon-sys/0.3.3 \
|
||||
crate://crates.io/fuchsia-zircon/0.3.3 \
|
||||
crate://crates.io/futf/0.1.3 \
|
||||
crate://crates.io/futures/0.1.20 \
|
||||
crate://crates.io/getopts/0.2.17 \
|
||||
crate://crates.io/git2-curl/0.8.1 \
|
||||
crate://crates.io/git2/0.7.1 \
|
||||
crate://crates.io/glob/0.2.11 \
|
||||
crate://crates.io/globset/0.3.0 \
|
||||
crate://crates.io/handlebars/0.32.0 \
|
||||
crate://crates.io/hex/0.3.1 \
|
||||
crate://crates.io/home/0.3.2 \
|
||||
crate://crates.io/html5ever/0.22.0 \
|
||||
crate://crates.io/humantime/1.1.1 \
|
||||
crate://crates.io/idna/0.1.4 \
|
||||
crate://crates.io/if_chain/0.1.2 \
|
||||
crate://crates.io/ignore/0.4.1 \
|
||||
crate://crates.io/is-match/0.1.0 \
|
||||
crate://crates.io/itertools/0.7.8 \
|
||||
crate://crates.io/itoa/0.4.1 \
|
||||
crate://crates.io/jobserver/0.1.11 \
|
||||
crate://crates.io/json/0.11.13 \
|
||||
crate://crates.io/jsonrpc-core/8.0.1 \
|
||||
crate://crates.io/kernel32-sys/0.2.2 \
|
||||
crate://crates.io/languageserver-types/0.39.0 \
|
||||
crate://crates.io/lazy_static/0.2.11 \
|
||||
crate://crates.io/lazy_static/1.0.0 \
|
||||
crate://crates.io/lazycell/0.6.0 \
|
||||
crate://crates.io/libc/0.2.40 \
|
||||
crate://crates.io/libgit2-sys/0.7.1 \
|
||||
crate://crates.io/libssh2-sys/0.2.6 \
|
||||
crate://crates.io/libz-sys/1.0.18 \
|
||||
crate://crates.io/log/0.3.9 \
|
||||
crate://crates.io/log/0.4.1 \
|
||||
crate://crates.io/log_settings/0.1.1 \
|
||||
crate://crates.io/lzma-sys/0.1.9 \
|
||||
crate://crates.io/mac/0.1.1 \
|
||||
crate://crates.io/maplit/1.0.1 \
|
||||
crate://crates.io/markup5ever/0.7.2 \
|
||||
crate://crates.io/matches/0.1.6 \
|
||||
crate://crates.io/mdbook/0.1.7 \
|
||||
crate://crates.io/memchr/2.0.1 \
|
||||
crate://crates.io/memoffset/0.2.1 \
|
||||
crate://crates.io/miniz-sys/0.1.10 \
|
||||
crate://crates.io/miow/0.3.1 \
|
||||
crate://crates.io/nibble_vec/0.0.4 \
|
||||
crate://crates.io/nodrop/0.1.12 \
|
||||
crate://crates.io/num-integer/0.1.36 \
|
||||
crate://crates.io/num-traits/0.1.43 \
|
||||
crate://crates.io/num-traits/0.2.2 \
|
||||
crate://crates.io/num_cpus/1.8.0 \
|
||||
crate://crates.io/open/1.2.1 \
|
||||
crate://crates.io/openssl-probe/0.1.2 \
|
||||
crate://crates.io/openssl-sys/0.9.28 \
|
||||
crate://crates.io/openssl/0.10.6 \
|
||||
crate://crates.io/ordermap/0.3.5 \
|
||||
crate://crates.io/owning_ref/0.3.3 \
|
||||
crate://crates.io/parking_lot/0.5.5 \
|
||||
crate://crates.io/parking_lot_core/0.2.14 \
|
||||
crate://crates.io/percent-encoding/1.0.1 \
|
||||
crate://crates.io/pest/1.0.6 \
|
||||
crate://crates.io/pest_derive/1.0.7 \
|
||||
crate://crates.io/petgraph/0.4.12 \
|
||||
crate://crates.io/phf/0.7.21 \
|
||||
crate://crates.io/phf_codegen/0.7.21 \
|
||||
crate://crates.io/phf_generator/0.7.21 \
|
||||
crate://crates.io/phf_shared/0.7.21 \
|
||||
crate://crates.io/pkg-config/0.3.9 \
|
||||
crate://crates.io/precomputed-hash/0.1.1 \
|
||||
crate://crates.io/pretty_assertions/0.5.1 \
|
||||
crate://crates.io/proc-macro2/0.2.3 \
|
||||
crate://crates.io/proc-macro2/0.3.6 \
|
||||
crate://crates.io/pulldown-cmark/0.1.2 \
|
||||
crate://crates.io/quick-error/1.2.1 \
|
||||
crate://crates.io/quine-mc_cluskey/0.2.4 \
|
||||
crate://crates.io/quote/0.3.15 \
|
||||
crate://crates.io/quote/0.4.2 \
|
||||
crate://crates.io/quote/0.5.1 \
|
||||
crate://crates.io/racer/2.0.13 \
|
||||
crate://crates.io/radix_trie/0.1.3 \
|
||||
crate://crates.io/rand/0.3.22 \
|
||||
crate://crates.io/rand/0.4.2 \
|
||||
crate://crates.io/rayon-core/1.4.0 \
|
||||
crate://crates.io/rayon/1.0.1 \
|
||||
crate://crates.io/redox_syscall/0.1.37 \
|
||||
crate://crates.io/redox_termios/0.1.1 \
|
||||
crate://crates.io/regex-syntax/0.5.5 \
|
||||
crate://crates.io/regex/0.2.10 \
|
||||
crate://crates.io/remove_dir_all/0.5.1 \
|
||||
crate://crates.io/rls-analysis/0.12.1 \
|
||||
crate://crates.io/rls-blacklist/0.1.2 \
|
||||
crate://crates.io/rls-data/0.15.0 \
|
||||
crate://crates.io/rls-rustc/0.2.2 \
|
||||
crate://crates.io/rls-span/0.4.0 \
|
||||
crate://crates.io/rls-vfs/0.4.5 \
|
||||
crate://crates.io/rustc-ap-rustc_cratesio_shim/121.0.0 \
|
||||
crate://crates.io/rustc-ap-rustc_data_structures/121.0.0 \
|
||||
crate://crates.io/rustc-ap-rustc_errors/121.0.0 \
|
||||
crate://crates.io/rustc-ap-rustc_target/121.0.0 \
|
||||
crate://crates.io/rustc-ap-serialize/121.0.0 \
|
||||
crate://crates.io/rustc-ap-syntax/121.0.0 \
|
||||
crate://crates.io/rustc-ap-syntax_pos/121.0.0 \
|
||||
crate://crates.io/rustc-demangle/0.1.7 \
|
||||
crate://crates.io/rustc-serialize/0.3.24 \
|
||||
crate://crates.io/rustfix/0.2.0 \
|
||||
crate://crates.io/same-file/0.1.3 \
|
||||
crate://crates.io/same-file/1.0.2 \
|
||||
crate://crates.io/schannel/0.1.12 \
|
||||
crate://crates.io/scoped-tls/0.1.1 \
|
||||
crate://crates.io/scopeguard/0.3.3 \
|
||||
crate://crates.io/semver-parser/0.7.0 \
|
||||
crate://crates.io/semver/0.8.0 \
|
||||
crate://crates.io/semver/0.9.0 \
|
||||
crate://crates.io/serde/1.0.40 \
|
||||
crate://crates.io/serde_derive/1.0.40 \
|
||||
crate://crates.io/serde_derive_internals/0.23.1 \
|
||||
crate://crates.io/serde_ignored/0.0.4 \
|
||||
crate://crates.io/serde_json/1.0.15 \
|
||||
crate://crates.io/shell-escape/0.1.4 \
|
||||
crate://crates.io/shlex/0.1.1 \
|
||||
crate://crates.io/siphasher/0.2.2 \
|
||||
crate://crates.io/skeptic/0.13.2 \
|
||||
crate://crates.io/smallvec/0.6.0 \
|
||||
crate://crates.io/socket2/0.3.5 \
|
||||
crate://crates.io/stable_deref_trait/1.0.0 \
|
||||
crate://crates.io/string_cache/0.7.1 \
|
||||
crate://crates.io/string_cache_codegen/0.4.0 \
|
||||
crate://crates.io/string_cache_shared/0.3.0 \
|
||||
crate://crates.io/strsim/0.7.0 \
|
||||
crate://crates.io/strum/0.9.0 \
|
||||
crate://crates.io/strum_macros/0.9.0 \
|
||||
crate://crates.io/syn/0.11.11 \
|
||||
crate://crates.io/syn/0.12.15 \
|
||||
crate://crates.io/syn/0.13.1 \
|
||||
crate://crates.io/synom/0.11.3 \
|
||||
crate://crates.io/synstructure/0.6.1 \
|
||||
crate://crates.io/syntex_errors/0.52.0 \
|
||||
crate://crates.io/syntex_pos/0.52.0 \
|
||||
crate://crates.io/syntex_syntax/0.52.0 \
|
||||
crate://crates.io/tar/0.4.15 \
|
||||
crate://crates.io/tempdir/0.3.7 \
|
||||
crate://crates.io/tempfile/3.0.1 \
|
||||
crate://crates.io/tendril/0.4.0 \
|
||||
crate://crates.io/term/0.4.6 \
|
||||
crate://crates.io/term/0.5.1 \
|
||||
crate://crates.io/termcolor/0.3.6 \
|
||||
crate://crates.io/termion/1.5.1 \
|
||||
crate://crates.io/textwrap/0.9.0 \
|
||||
crate://crates.io/thread_local/0.3.5 \
|
||||
crate://crates.io/time/0.1.39 \
|
||||
crate://crates.io/toml-query/0.6.0 \
|
||||
crate://crates.io/toml/0.2.1 \
|
||||
crate://crates.io/toml/0.4.6 \
|
||||
crate://crates.io/ucd-util/0.1.1 \
|
||||
crate://crates.io/unicode-bidi/0.3.4 \
|
||||
crate://crates.io/unicode-normalization/0.1.5 \
|
||||
crate://crates.io/unicode-segmentation/1.2.0 \
|
||||
crate://crates.io/unicode-width/0.1.4 \
|
||||
crate://crates.io/unicode-xid/0.0.3 \
|
||||
crate://crates.io/unicode-xid/0.0.4 \
|
||||
crate://crates.io/unicode-xid/0.1.0 \
|
||||
crate://crates.io/unreachable/0.1.1 \
|
||||
crate://crates.io/unreachable/1.0.0 \
|
||||
crate://crates.io/url/1.7.0 \
|
||||
crate://crates.io/url_serde/0.2.0 \
|
||||
crate://crates.io/userenv-sys/0.2.0 \
|
||||
crate://crates.io/utf-8/0.7.2 \
|
||||
crate://crates.io/utf8-ranges/1.0.0 \
|
||||
crate://crates.io/vcpkg/0.2.3 \
|
||||
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/walkdir/2.1.4 \
|
||||
crate://crates.io/winapi-build/0.1.1 \
|
||||
crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
|
||||
crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
|
||||
crate://crates.io/winapi/0.2.8 \
|
||||
crate://crates.io/winapi/0.3.4 \
|
||||
crate://crates.io/wincolor/0.1.6 \
|
||||
crate://crates.io/xattr/0.2.1 \
|
||||
crate://crates.io/xz2/0.1.4 \
|
||||
crate://crates.io/yaml-rust/0.3.5 \
|
||||
"
|
||||
49
recipes-devtools/rust/rust-cross.inc
Normal file
49
recipes-devtools/rust/rust-cross.inc
Normal file
@@ -0,0 +1,49 @@
|
||||
require rust.inc
|
||||
inherit cross
|
||||
|
||||
# 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"
|
||||
4
recipes-devtools/rust/rust-cross_1.26.2.bb
Normal file
4
recipes-devtools/rust/rust-cross_1.26.2.bb
Normal file
@@ -0,0 +1,4 @@
|
||||
require rust-cross.inc
|
||||
require rust-source-${PV}.inc
|
||||
require rust-snapshot-${PV}.inc
|
||||
|
||||
4
recipes-devtools/rust/rust-cross_1.27.1.bb
Normal file
4
recipes-devtools/rust/rust-cross_1.27.1.bb
Normal file
@@ -0,0 +1,4 @@
|
||||
require rust-cross.inc
|
||||
require rust-source-${PV}.inc
|
||||
require rust-snapshot-${PV}.inc
|
||||
|
||||
62
recipes-devtools/rust/rust-llvm.inc
Normal file
62
recipes-devtools/rust/rust-llvm.inc
Normal file
@@ -0,0 +1,62 @@
|
||||
SUMMARY = "LLVM compiler framework (packaged with rust)"
|
||||
LICENSE = "NCSA"
|
||||
|
||||
SRC_URI += "file://0002-llvm-allow-env-override-of-exe-path.patch"
|
||||
|
||||
S = "${RUSTSRC}/src/llvm"
|
||||
|
||||
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=4c0bc17c954e99fd547528d938832bfa"
|
||||
|
||||
inherit cmake pythonnative
|
||||
|
||||
DEPENDS += "ninja-native rust-llvm-native"
|
||||
|
||||
ARM_INSTRUCTION_SET_armv5 = "arm"
|
||||
ARM_INSTRUCTION_SET_armv4t = "arm"
|
||||
|
||||
LLVM_RELEASE = "6.0"
|
||||
LLVM_DIR = "llvm${LLVM_RELEASE}"
|
||||
|
||||
EXTRA_OECMAKE = " \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DLLVM_TARGETS_TO_BUILD='X86;ARM;AArch64;PowerPC;Mips' \
|
||||
-DLLVM_BUILD_DOCS=OFF \
|
||||
-DLLVM_ENABLE_TERMINFO=OFF \
|
||||
-DLLVM_ENABLE_ZLIB=OFF \
|
||||
-DLLVM_ENABLE_LIBXML2=OFF \
|
||||
-DLLVM_ENABLE_FFI=OFF \
|
||||
-DLLVM_INSTALL_UTILS=ON \
|
||||
-DLLVM_BUILD_EXAMPLES=OFF \
|
||||
-DLLVM_INCLUDE_EXAMPLES=OFF \
|
||||
-DLLVM_BUILD_TESTS=OFF \
|
||||
-DLLVM_INCLUDE_TESTS=OFF \
|
||||
-DLLVM_TARGET_ARCH=${TARGET_ARCH} \
|
||||
-DCMAKE_INSTALL_PREFIX:PATH=${libdir}/llvm-rust \
|
||||
"
|
||||
EXTRA_OECMAKE_append_class-target = "\
|
||||
-DCMAKE_CROSSCOMPILING:BOOL=ON \
|
||||
-DLLVM_BUILD_TOOLS=OFF \
|
||||
-DLLVM_TABLEGEN=${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-tblgen \
|
||||
-DLLVM_CONFIG_PATH=${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config \
|
||||
"
|
||||
|
||||
# The debug symbols are huge here (>2GB) so suppress them since they
|
||||
# provide almost no value. If you really need them then override this
|
||||
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
|
||||
|
||||
do_install_append_class-target() {
|
||||
# Disable checks on the native tools, since these should came from the native recipe
|
||||
sed -i -e 's/\(.*APPEND.*_IMPORT_CHECK_FILES_FOR_.*{_IMPORT_PREFIX}\/bin\/.*\)/#\1/' ${D}/usr/share/llvm/cmake/LLVMExports-noconfig.cmake
|
||||
}
|
||||
|
||||
PACKAGES =+ "${PN}-bugpointpasses ${PN}-llvmhello ${PN}-liblto"
|
||||
|
||||
# Add the extra locations to avoid the complaints about unpackaged files
|
||||
FILES_${PN}-bugpointpasses = "${libdir}/llvm-rust/lib/BugpointPasses.so"
|
||||
FILES_${PN}-llvmhello = "${libdir}/llvm-rust/lib/LLVMHello.so"
|
||||
FILES_${PN}-liblto = "${libdir}/llvm-rust/lib/libLTO.so.*"
|
||||
FILES_${PN}-staticdev =+ "${libdir}/llvm-rust/*/*.a"
|
||||
FILES_${PN} += "${libdir}/libLLVM*.so.* ${libdir}/llvm-rust/lib/*.so.* ${libdir}/llvm-rust/bin"
|
||||
FILES_${PN}-dev += "${datadir}/llvm ${libdir}/llvm-rust/lib/*.so ${libdir}/llvm-rust/include ${libdir}/llvm-rust/share ${libdir}/llvm-rust/lib/cmake"
|
||||
|
||||
BBCLASSEXTEND = "native"
|
||||
@@ -0,0 +1,70 @@
|
||||
From aeccf16eaccdd80e4d5ecaa51673ce4b2bac1130 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Kelly <mkelly@xevo.com>
|
||||
Date: Fri, 19 May 2017 00:22:57 -0700
|
||||
Subject: [PATCH 2/2] llvm: allow env override of exe path
|
||||
|
||||
When using a native llvm-config from inside a sysroot, we need llvm-config to
|
||||
return the libraries, include directories, etc. from inside the sysroot rather
|
||||
than from the native sysroot. Thus provide an env override for calling
|
||||
llvm-config from a target sysroot.
|
||||
|
||||
To let it work in multilib environment, we need to provide a knob to supply
|
||||
multilib dirname as well
|
||||
|
||||
Upstream-Status: Inappropriate [OE-Specific]
|
||||
|
||||
Signed-off-by: Martin Kelly <mkelly@xevo.com>
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
tools/llvm-config/llvm-config.cpp | 17 ++++++++++++++++-
|
||||
1 file changed, 16 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: llvm/tools/llvm-config/llvm-config.cpp
|
||||
===================================================================
|
||||
--- llvm.orig/tools/llvm-config/llvm-config.cpp
|
||||
+++ llvm/tools/llvm-config/llvm-config.cpp
|
||||
@@ -225,6 +225,13 @@ Typical components:\n\
|
||||
|
||||
/// \brief Compute the path to the main executable.
|
||||
std::string GetExecutablePath(const char *Argv0) {
|
||||
+ // Hack for Yocto: we need to override the root path when we are using
|
||||
+ // llvm-config from within a target sysroot.
|
||||
+ const char *Sysroot = std::getenv("YOCTO_ALTERNATE_EXE_PATH");
|
||||
+ if (Sysroot != nullptr) {
|
||||
+ return Sysroot;
|
||||
+ }
|
||||
+
|
||||
// This just needs to be some symbol in the binary; C++ doesn't
|
||||
// allow taking the address of ::main however.
|
||||
void *P = (void *)(intptr_t)GetExecutablePath;
|
||||
@@ -306,12 +313,21 @@ int main(int argc, char **argv) {
|
||||
std::string ActivePrefix, ActiveBinDir, ActiveIncludeDir, ActiveLibDir,
|
||||
ActiveCMakeDir;
|
||||
std::string ActiveIncludeOption;
|
||||
+ // Hack for Yocto: we need to override the multilib path when we are using
|
||||
+ // llvm-config from within a target sysroot.
|
||||
+ std::string Multilibdir;
|
||||
+ if (std::getenv("YOCTO_ALTERNATE_MULTILIB_NAME") != nullptr)
|
||||
+ Multilibdir = std::getenv("YOCTO_ALTERNATE_MULTILIB_NAME");
|
||||
+ else
|
||||
+ Multilibdir = "/lib" LLVM_LIBDIR_SUFFIX;
|
||||
+
|
||||
if (IsInDevelopmentTree) {
|
||||
ActiveIncludeDir = std::string(LLVM_SRC_ROOT) + "/include";
|
||||
ActivePrefix = CurrentExecPrefix;
|
||||
|
||||
// CMake organizes the products differently than a normal prefix style
|
||||
// layout.
|
||||
+
|
||||
switch (DevelopmentTreeLayout) {
|
||||
case CMakeStyle:
|
||||
ActiveBinDir = ActiveObjRoot + "/bin";
|
||||
@@ -336,7 +352,7 @@ int main(int argc, char **argv) {
|
||||
SmallString<256> path(StringRef(LLVM_TOOLS_INSTALL_DIR));
|
||||
sys::fs::make_absolute(ActivePrefix, path);
|
||||
ActiveBinDir = path.str();
|
||||
- ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX;
|
||||
+ ActiveLibDir = ActivePrefix + Multilibdir;
|
||||
ActiveCMakeDir = ActiveLibDir + "/cmake/llvm";
|
||||
ActiveIncludeOption = "-I" + ActiveIncludeDir;
|
||||
}
|
||||
16
recipes-devtools/rust/rust-llvm_1.26.2.bb
Normal file
16
recipes-devtools/rust/rust-llvm_1.26.2.bb
Normal 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"
|
||||
}
|
||||
16
recipes-devtools/rust/rust-llvm_1.27.1.bb
Normal file
16
recipes-devtools/rust/rust-llvm_1.27.1.bb
Normal 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"
|
||||
}
|
||||
26
recipes-devtools/rust/rust-snapshot-1.26.2.inc
Normal file
26
recipes-devtools/rust/rust-snapshot-1.26.2.inc
Normal file
@@ -0,0 +1,26 @@
|
||||
# Specifics for Rust 1.26.2
|
||||
|
||||
## 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.25.0"
|
||||
|
||||
RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
|
||||
RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
|
||||
CARGO_VERSION = "0.26.0"
|
||||
CARGO_SNAPSHOT = "cargo-${CARGO_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
|
||||
|
||||
SRC_URI += " \
|
||||
https://static.rust-lang.org/dist/${RUST_STD_SNAPSHOT}.tar.gz;name=rust-std-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
|
||||
https://static.rust-lang.org/dist/${RUSTC_SNAPSHOT}.tar.gz;name=rustc-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
|
||||
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.gz;name=cargo-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
|
||||
"
|
||||
|
||||
# TODO: Add hashes for other architecture toolchains as well. Make a script?
|
||||
SRC_URI[rustc-snapshot-x86_64.md5sum] = "6e9c8ae2946cf6626ad6511c7a1d6c2a"
|
||||
SRC_URI[rustc-snapshot-x86_64.sha256sum] = "f8f4ae2f4b76416bfa90758267df4280dd078235dfba92dac0431595493443be"
|
||||
SRC_URI[rust-std-snapshot-x86_64.md5sum] = "37e9f9193413caba47134af3306328c5"
|
||||
SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "a3258308e3a9fe364d63b5d782efb285ab410bdfc01d168c119122ddbc9a02e2"
|
||||
SRC_URI[cargo-snapshot-x86_64.md5sum] = "b0de62d86f0ba71078471d09916873c6"
|
||||
SRC_URI[cargo-snapshot-x86_64.sha256sum] = "9ba227f2364f618dc9415dacf3a5dce17458e1cb9f6d4fe860416cb68db894e4"
|
||||
26
recipes-devtools/rust/rust-snapshot-1.27.1.inc
Normal file
26
recipes-devtools/rust/rust-snapshot-1.27.1.inc
Normal file
@@ -0,0 +1,26 @@
|
||||
# Specifics for Rust 1.27.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.26.0"
|
||||
|
||||
RUST_STD_SNAPSHOT = "rust-std-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
|
||||
RUSTC_SNAPSHOT = "rustc-${RS_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
|
||||
CARGO_VERSION = "0.27.0"
|
||||
CARGO_SNAPSHOT = "cargo-${CARGO_VERSION}-${BUILD_ARCH}-unknown-linux-gnu"
|
||||
|
||||
SRC_URI += " \
|
||||
https://static.rust-lang.org/dist/${RUST_STD_SNAPSHOT}.tar.gz;name=rust-std-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
|
||||
https://static.rust-lang.org/dist/${RUSTC_SNAPSHOT}.tar.gz;name=rustc-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
|
||||
https://static.rust-lang.org/dist/${CARGO_SNAPSHOT}.tar.gz;name=cargo-snapshot-${BUILD_ARCH};subdir=rust-snapshot-components \
|
||||
"
|
||||
|
||||
# TODO: Add hashes for other architecture toolchains as well. Make a script?
|
||||
SRC_URI[rustc-snapshot-x86_64.md5sum] = "939631f19dd9ca5ae8493dc8ec2d3131"
|
||||
SRC_URI[rustc-snapshot-x86_64.sha256sum] = "7ca9a30010602aaf2244c376a3cc5baa89429d54da17b8ba1cb0cdfdc846cc61"
|
||||
SRC_URI[rust-std-snapshot-x86_64.md5sum] = "643460e582de498eea53ec1e93aeabab"
|
||||
SRC_URI[rust-std-snapshot-x86_64.sha256sum] = "e27cb5c21541a500c8df919e15c8d3b002456ebbe573122e7b058cf5b4c3c13a"
|
||||
SRC_URI[cargo-snapshot-x86_64.md5sum] = "ca366ba1e97ffc02b72dc74859db35e2"
|
||||
SRC_URI[cargo-snapshot-x86_64.sha256sum] = "8c17710252513d8130141f2c12b4efeef67f0def252b94b246fe326a9a75043b"
|
||||
18
recipes-devtools/rust/rust-source-1.26.2.inc
Normal file
18
recipes-devtools/rust/rust-source-1.26.2.inc
Normal file
@@ -0,0 +1,18 @@
|
||||
# Specifics for Rust 1.26.2
|
||||
|
||||
SRC_URI += " \
|
||||
https://static.rust-lang.org/dist/rustc-${PV}-src.tar.gz;name=rust \
|
||||
"
|
||||
|
||||
SRC_URI[md5sum] = "581bc81b4695cff0d9b7c57a144d01cc"
|
||||
SRC_URI[sha256sum] = "fb9ecf304488c9b56600ab20cfd1937482057f7e5db7899fddb86e0774548700"
|
||||
SRC_URI[rust.md5sum] = "581bc81b4695cff0d9b7c57a144d01cc"
|
||||
SRC_URI[rust.sha256sum] = "fb9ecf304488c9b56600ab20cfd1937482057f7e5db7899fddb86e0774548700"
|
||||
|
||||
|
||||
# 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=99c369ad81a36cd5b27f6c6968d01055"
|
||||
15
recipes-devtools/rust/rust-source-1.27.1.inc
Normal file
15
recipes-devtools/rust/rust-source-1.27.1.inc
Normal file
@@ -0,0 +1,15 @@
|
||||
# Specifics for Rust 1.27.1
|
||||
|
||||
SRC_URI += "https://static.rust-lang.org/dist/rustc-${PV}-src.tar.gz;name=rust"
|
||||
|
||||
SRC_URI[md5sum] = "3d7f2a08caccb631b46084c31d2759c9"
|
||||
SRC_URI[sha256sum] = "2133beb01ddc3aa09eebc769dd884533c6cfb08ce684f042497e097068d733d1"
|
||||
SRC_URI[rust.md5sum] = "3d7f2a08caccb631b46084c31d2759c9"
|
||||
SRC_URI[rust.sha256sum] = "2133beb01ddc3aa09eebc769dd884533c6cfb08ce684f042497e097068d733d1"
|
||||
|
||||
# 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=99c369ad81a36cd5b27f6c6968d01055"
|
||||
448
recipes-devtools/rust/rust.inc
Normal file
448
recipes-devtools/rust/rust.inc
Normal file
@@ -0,0 +1,448 @@
|
||||
SUMMARY = "Rust compiler and runtime libaries"
|
||||
HOMEPAGE = "http://www.rust-lang.org"
|
||||
SECTION = "devel"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
|
||||
inherit rust
|
||||
inherit cargo_common
|
||||
|
||||
DEPENDS += "file-native python-native"
|
||||
DEPENDS_append_class-native = " rust-llvm-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}"
|
||||
|
||||
export YOCTO_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR}/llvm-rust/bin/llvm-config"
|
||||
export YOCTO_ALTERNATE_MULTILIB_NAME = "/${BASELIB}"
|
||||
|
||||
# We can't use RUST_BUILD_SYS here because that may be "musl" if
|
||||
# TCLIBC="musl". Snapshots are always -unknown-linux-gnu
|
||||
SNAPSHOT_BUILD_SYS = "${BUILD_ARCH}-unknown-linux-gnu"
|
||||
setup_cargo_environment () {
|
||||
# The first step is to build bootstrap and some early stage tools,
|
||||
# these are build for the same target as the snapshot, e.g.
|
||||
# x86_64-unknown-linux-gnu.
|
||||
# Later stages are build for the native target (i.e. target.x86_64-linux)
|
||||
cargo_common_do_configure
|
||||
|
||||
printf '[target.%s]\n' "${SNAPSHOT_BUILD_SYS}" >> ${CARGO_HOME}/config
|
||||
printf "linker = '%s'\n" "${RUST_BUILD_CCLD}" >> ${CARGO_HOME}/config
|
||||
}
|
||||
|
||||
# Right now this is focused on arm-specific tune features.
|
||||
# We get away with this for now as one can only use x86-64 as the build host
|
||||
# (not arm).
|
||||
# Note that TUNE_FEATURES is _always_ refering to the target, so we really
|
||||
# don't want to use this for the host/build.
|
||||
def llvm_features_from_tune(d):
|
||||
f = []
|
||||
feat = d.getVar('TUNE_FEATURES')
|
||||
if not feat:
|
||||
return []
|
||||
feat = frozenset(feat.split())
|
||||
|
||||
if 'vfpv4' in feat:
|
||||
f.append("+vfp4")
|
||||
if 'vfpv3' in feat:
|
||||
f.append("+vfp3")
|
||||
if 'vfpv3d16' in feat:
|
||||
f.append("+d16")
|
||||
|
||||
if 'vfpv2' in feat or 'vfp' in feat:
|
||||
f.append("+vfp2")
|
||||
|
||||
if 'neon' in feat:
|
||||
f.append("+neon")
|
||||
|
||||
if 'aarch64' in feat:
|
||||
f.append("+v8")
|
||||
|
||||
if 'mips32' in feat:
|
||||
f.append("+mips32")
|
||||
|
||||
if 'mips32r2' in feat:
|
||||
f.append("+mips32r2")
|
||||
|
||||
v7=frozenset(['armv7a', 'armv7r', 'armv7m', 'armv7ve'])
|
||||
if not feat.isdisjoint(v7):
|
||||
f.append("+v7")
|
||||
if 'armv6' in feat:
|
||||
f.append("+v6")
|
||||
|
||||
if 'dsp' in feat:
|
||||
f.append("+dsp")
|
||||
|
||||
if d.getVar('ARM_THUMB_OPT') is "thumb":
|
||||
if not feat.isdisjoint(v7):
|
||||
f.append("+thumb2")
|
||||
f.append("+thumb-mode")
|
||||
|
||||
if 'cortexa5' in feat:
|
||||
f.append("+a5")
|
||||
if 'cortexa7' in feat:
|
||||
f.append("+a7")
|
||||
if 'cortexa9' in feat:
|
||||
f.append("+a9")
|
||||
if 'cortexa15' in feat:
|
||||
f.append("+a15")
|
||||
if 'cortexa17' in feat:
|
||||
f.append("+a17")
|
||||
|
||||
return f
|
||||
|
||||
# TARGET_CC_ARCH changes from build/cross/target so it'll do the right thing
|
||||
# this should go away when https://github.com/rust-lang/rust/pull/31709 is
|
||||
# stable (1.9.0?)
|
||||
def llvm_features_from_cc_arch(d):
|
||||
f = []
|
||||
feat = d.getVar('TARGET_CC_ARCH')
|
||||
if not feat:
|
||||
return []
|
||||
feat = frozenset(feat.split())
|
||||
|
||||
if '-mmmx' in feat:
|
||||
f.append("+mmx")
|
||||
if '-msse' in feat:
|
||||
f.append("+sse")
|
||||
if '-msse2' in feat:
|
||||
f.append("+sse2")
|
||||
if '-msse3' in feat:
|
||||
f.append("+sse3")
|
||||
if '-mssse3' in feat:
|
||||
f.append("+ssse3")
|
||||
if '-msse4.1' in feat:
|
||||
f.append("+sse4.1")
|
||||
if '-msse4.2' in feat:
|
||||
f.append("+sse4.2")
|
||||
if '-msse4a' in feat:
|
||||
f.append("+sse4a")
|
||||
if '-mavx' in feat:
|
||||
f.append("+avx")
|
||||
if '-mavx2' in feat:
|
||||
f.append("+avx2")
|
||||
|
||||
return f
|
||||
|
||||
def llvm_features_from_target_fpu(d):
|
||||
# TARGET_FPU can be hard or soft. +soft-float tell llvm to use soft float
|
||||
# ABI. There is no option for hard.
|
||||
|
||||
fpu = d.getVar('TARGET_FPU', True)
|
||||
return ["+soft-float"] if fpu == "soft" else []
|
||||
|
||||
def llvm_features(d):
|
||||
return ','.join(llvm_features_from_tune(d) +
|
||||
llvm_features_from_cc_arch(d) +
|
||||
llvm_features_from_target_fpu(d))
|
||||
|
||||
## arm-unknown-linux-gnueabihf
|
||||
DATA_LAYOUT[arm] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
||||
LLVM_TARGET[arm] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[arm] = "little"
|
||||
TARGET_POINTER_WIDTH[arm] = "32"
|
||||
TARGET_C_INT_WIDTH[arm] = "32"
|
||||
MAX_ATOMIC_WIDTH[arm] = "64"
|
||||
FEATURES[arm] = "+v6,+vfp2"
|
||||
|
||||
## aarch64-unknown-linux-{gnu, musl}
|
||||
DATA_LAYOUT[aarch64] = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
|
||||
LLVM_TARGET[aarch64] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[aarch64] = "little"
|
||||
TARGET_POINTER_WIDTH[aarch64] = "64"
|
||||
TARGET_C_INT_WIDTH[aarch64] = "32"
|
||||
MAX_ATOMIC_WIDTH[aarch64] = "128"
|
||||
|
||||
## x86_64-unknown-linux-{gnu, musl}
|
||||
DATA_LAYOUT[x86_64] = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
LLVM_TARGET[x86_64] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[x86_64] = "little"
|
||||
TARGET_POINTER_WIDTH[x86_64] = "64"
|
||||
TARGET_C_INT_WIDTH[x86_64] = "32"
|
||||
MAX_ATOMIC_WIDTH[x86_64] = "64"
|
||||
|
||||
## i686-unknown-linux-{gnu, musl}
|
||||
DATA_LAYOUT[i686] = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
|
||||
LLVM_TARGET[i686] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[i686] = "little"
|
||||
TARGET_POINTER_WIDTH[i686] = "32"
|
||||
TARGET_C_INT_WIDTH[i686] = "32"
|
||||
MAX_ATOMIC_WIDTH[i686] = "64"
|
||||
|
||||
## XXX: a bit of a hack so qemux86 builds, clone of i686-unknown-linux-{gnu, musl} above
|
||||
DATA_LAYOUT[i586] = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
|
||||
LLVM_TARGET[i586] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[i586] = "little"
|
||||
TARGET_POINTER_WIDTH[i586] = "32"
|
||||
TARGET_C_INT_WIDTH[i586] = "32"
|
||||
MAX_ATOMIC_WIDTH[i586] = "64"
|
||||
|
||||
## mips-unknown-linux-{gnu, musl}
|
||||
DATA_LAYOUT[mips] = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
|
||||
LLVM_TARGET[mips] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[mips] = "big"
|
||||
TARGET_POINTER_WIDTH[mips] = "32"
|
||||
TARGET_C_INT_WIDTH[mips] = "32"
|
||||
MAX_ATOMIC_WIDTH[mips] = "32"
|
||||
|
||||
## mipsel-unknown-linux-{gnu, musl}
|
||||
DATA_LAYOUT[mipsel] = "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
|
||||
LLVM_TARGET[mipsel] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[mipsel] = "little"
|
||||
TARGET_POINTER_WIDTH[mipsel] = "32"
|
||||
TARGET_C_INT_WIDTH[mipsel] = "32"
|
||||
MAX_ATOMIC_WIDTH[mipsel] = "32"
|
||||
|
||||
def arch_for(d, thing):
|
||||
return d.getVar('{}_ARCH'.format(thing))
|
||||
|
||||
def sys_for(d, thing):
|
||||
return d.getVar('{}_SYS'.format(thing))
|
||||
|
||||
def prefix_for(d, thing):
|
||||
return d.getVar('{}_PREFIX'.format(thing))
|
||||
|
||||
# Convert a normal arch (HOST_ARCH, TARGET_ARCH, BUILD_ARCH, etc) to something
|
||||
# rust's internals won't choke on.
|
||||
def arch_to_rust_target_arch(arch):
|
||||
if arch == "i586" or arch == "i686":
|
||||
return "x86"
|
||||
elif arch == "mipsel":
|
||||
return "mips"
|
||||
else:
|
||||
return arch
|
||||
|
||||
# generates our target CPU value
|
||||
def llvm_cpu(d):
|
||||
cpu = d.getVar('PACKAGE_ARCH')
|
||||
target = d.getVar('TRANSLATED_TARGET_ARCH')
|
||||
|
||||
trans = {}
|
||||
trans['corei7-64'] = "corei7"
|
||||
trans['core2-32'] = "core2"
|
||||
trans['x86-64'] = "x86-64"
|
||||
trans['i686'] = "i686"
|
||||
trans['i586'] = "i586"
|
||||
|
||||
if target in ["mips", "mipsel"]:
|
||||
feat = frozenset(d.getVar('TUNE_FEATURES').split())
|
||||
if "mips32r2" in feat:
|
||||
trans['mipsel'] = "mips32r2"
|
||||
trans['mips'] = "mips32r2"
|
||||
elif "mips32" in feat:
|
||||
trans['mipsel'] = "mips32"
|
||||
trans['mips'] = "mips32"
|
||||
|
||||
try:
|
||||
return trans[cpu]
|
||||
except:
|
||||
return trans.get(target, "generic")
|
||||
|
||||
TARGET_LLVM_CPU="${@llvm_cpu(d)}"
|
||||
TARGET_LLVM_FEATURES = "${@llvm_features(d)}"
|
||||
|
||||
# class-native implies TARGET=HOST, and TUNE_FEATURES only describes the real
|
||||
# (original) target.
|
||||
TARGET_LLVM_FEATURES_class-native = "${@','.join(llvm_features_from_cc_arch(d))}"
|
||||
|
||||
def rust_gen_target(d, thing, wd):
|
||||
import json
|
||||
from distutils.version import LooseVersion
|
||||
arch = arch_for(d, thing)
|
||||
sys = sys_for(d, thing)
|
||||
prefix = prefix_for(d, thing)
|
||||
|
||||
features = ""
|
||||
cpu = "generic"
|
||||
if thing is "TARGET":
|
||||
features = d.getVar('TARGET_LLVM_FEATURES') or ""
|
||||
cpu = d.getVar('TARGET_LLVM_CPU')
|
||||
features = features or d.getVarFlag('FEATURES', arch) or ""
|
||||
features = features.strip()
|
||||
|
||||
# build tspec
|
||||
tspec = {}
|
||||
tspec['llvm-target'] = d.getVarFlag('LLVM_TARGET', arch)
|
||||
tspec['data-layout'] = d.getVarFlag('DATA_LAYOUT', arch)
|
||||
tspec['max-atomic-width'] = d.getVarFlag('MAX_ATOMIC_WIDTH', arch)
|
||||
tspec['target-pointer-width'] = d.getVarFlag('TARGET_POINTER_WIDTH', arch)
|
||||
tspec['target-c-int-width'] = d.getVarFlag('TARGET_C_INT_WIDTH', arch)
|
||||
tspec['target-endian'] = d.getVarFlag('TARGET_ENDIAN', arch)
|
||||
tspec['arch'] = arch_to_rust_target_arch(arch)
|
||||
tspec['os'] = "linux"
|
||||
if "musl" in tspec['llvm-target']:
|
||||
tspec['env'] = "musl"
|
||||
else:
|
||||
tspec['env'] = "gnu"
|
||||
tspec['vendor'] = "unknown"
|
||||
tspec['target-family'] = "unix"
|
||||
tspec['linker'] = "{}{}gcc".format(d.getVar('CCACHE'), prefix)
|
||||
tspec['ar'] = "{}ar".format(prefix)
|
||||
tspec['cpu'] = cpu
|
||||
if features is not "":
|
||||
tspec['features'] = features
|
||||
tspec['dynamic-linking'] = True
|
||||
tspec['executables'] = True
|
||||
tspec['linker-is-gnu'] = True
|
||||
tspec['linker-flavor'] = "gcc"
|
||||
tspec['has-rpath'] = True
|
||||
tspec['has-elf-tls'] = True
|
||||
tspec['position-independent-executables'] = True
|
||||
tspec['panic-strategy'] = d.getVar("RUST_PANIC_STRATEGY")
|
||||
|
||||
# Don't use jemalloc as it doesn't work for many targets.
|
||||
# https://github.com/rust-lang/rust/pull/37392
|
||||
# From 1.20.0 and forward, system allocator is the default.
|
||||
if LooseVersion(d.getVar("PV")) < LooseVersion("1.20.0"):
|
||||
tspec['exe-allocation-crate'] = "alloc_system"
|
||||
tspec['lib-allocation-crate'] = "alloc_system"
|
||||
|
||||
# write out the target spec json file
|
||||
with open(wd + sys + '.json', 'w') as f:
|
||||
json.dump(tspec, f, indent=4)
|
||||
|
||||
|
||||
python do_rust_gen_targets () {
|
||||
wd = d.getVar('WORKDIR') + '/targets/'
|
||||
# It is important 'TARGET' is last here so that it overrides our less
|
||||
# informed choices for BUILD & HOST if TARGET happens to be the same as
|
||||
# either of them.
|
||||
for thing in ['BUILD', 'HOST', 'TARGET']:
|
||||
bb.debug(1, "rust_gen_target for " + thing)
|
||||
rust_gen_target(d, thing, wd)
|
||||
}
|
||||
addtask rust_gen_targets after do_patch before do_compile
|
||||
do_rust_gen_targets[dirs] += "${WORKDIR}/targets"
|
||||
|
||||
|
||||
do_rust_setup_snapshot () {
|
||||
for installer in "${WORKDIR}/rust-snapshot-components/"*"/install.sh"; do
|
||||
"${installer}" --prefix="${WORKDIR}/rust-snapshot" --disable-ldconfig
|
||||
done
|
||||
|
||||
# Some versions of rust (e.g. 1.18.0) tries to find cargo in stage0/bin/cargo
|
||||
# and fail without it there.
|
||||
mkdir -p ${RUSTSRC}/build/${BUILD_SYS}
|
||||
ln -sf ${WORKDIR}/rust-snapshot/ ${RUSTSRC}/build/${BUILD_SYS}/stage0
|
||||
}
|
||||
addtask rust_setup_snapshot after do_unpack before do_configure
|
||||
do_rust_setup_snapshot[dirs] += "${WORKDIR}/rust-snapshot"
|
||||
|
||||
|
||||
python do_configure() {
|
||||
import json
|
||||
try:
|
||||
import configparser
|
||||
except ImportError:
|
||||
import ConfigParser as configparser
|
||||
|
||||
# toml is rather similar to standard ini like format except it likes values
|
||||
# that look more JSON like. So for our purposes simply escaping all values
|
||||
# as JSON seem to work fine.
|
||||
|
||||
e = lambda s: json.dumps(s)
|
||||
|
||||
config = configparser.RawConfigParser()
|
||||
|
||||
# [target.ARCH-poky-linux]
|
||||
target_section = "target.{}".format(d.getVar('TARGET_SYS', True))
|
||||
config.add_section(target_section)
|
||||
|
||||
llvm_config = d.expand("${YOCTO_ALTERNATE_EXE_PATH}")
|
||||
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_runx () {
|
||||
echo "COMPILE ${PN}" "$@"
|
||||
|
||||
# CFLAGS, LDFLAGS, CXXFLAGS, CPPFLAGS are used by rust's build for a
|
||||
# wide range of targets (not just TARGET). Yocto's settings for them will
|
||||
# be inappropriate, avoid using.
|
||||
unset CFLAGS
|
||||
unset LDFLAGS
|
||||
unset CXXFLAGS
|
||||
unset CPPFLAGS
|
||||
|
||||
oe_cargo_fix_env
|
||||
|
||||
python src/bootstrap/bootstrap.py "$@" --verbose
|
||||
}
|
||||
|
||||
|
||||
do_compile () {
|
||||
rust_runx build
|
||||
}
|
||||
|
||||
|
||||
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/"
|
||||
install -d "$td"
|
||||
for tgt in "${WORKDIR}/targets/"* ; do
|
||||
install -m 0644 "$tgt" "$td"
|
||||
done
|
||||
|
||||
# cleanup after rust-installer since we don't need these bits
|
||||
rm ${D}/${libdir}/rustlib/install.log
|
||||
rm ${D}/${libdir}/rustlib/rust-installer-version
|
||||
rm ${D}/${libdir}/rustlib/uninstall.sh
|
||||
rm ${D}/${libdir}/rustlib/components
|
||||
}
|
||||
|
||||
|
||||
do_install () {
|
||||
rust_do_dist_install
|
||||
}
|
||||
# ex: sts=4 et sw=4 ts=8
|
||||
215
recipes-devtools/rust/rust_1.26.2.bb
Normal file
215
recipes-devtools/rust/rust_1.26.2.bb
Normal file
@@ -0,0 +1,215 @@
|
||||
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/aho-corasick/0.6.4 \
|
||||
crate://crates.io/ansi_term/0.11.0 \
|
||||
crate://crates.io/ar/0.3.1 \
|
||||
crate://crates.io/arrayvec/0.4.7 \
|
||||
crate://crates.io/atty/0.2.8 \
|
||||
crate://crates.io/backtrace-sys/0.1.16 \
|
||||
crate://crates.io/backtrace/0.3.5 \
|
||||
crate://crates.io/bitflags/0.7.0 \
|
||||
crate://crates.io/bitflags/0.9.1 \
|
||||
crate://crates.io/bitflags/1.0.1 \
|
||||
crate://crates.io/bufstream/0.1.3 \
|
||||
crate://crates.io/byteorder/1.2.1 \
|
||||
crate://crates.io/cargo_metadata/0.2.3 \
|
||||
crate://crates.io/cargo_metadata/0.5.3 \
|
||||
crate://crates.io/cc/1.0.9 \
|
||||
crate://crates.io/cfg-if/0.1.2 \
|
||||
crate://crates.io/chrono/0.4.0 \
|
||||
crate://crates.io/clap/2.31.2 \
|
||||
crate://crates.io/cmake/0.1.29 \
|
||||
crate://crates.io/commoncrypto-sys/0.2.0 \
|
||||
crate://crates.io/commoncrypto/0.2.0 \
|
||||
crate://crates.io/compiletest_rs/0.3.8 \
|
||||
crate://crates.io/core-foundation-sys/0.5.1 \
|
||||
crate://crates.io/core-foundation/0.5.1 \
|
||||
crate://crates.io/crossbeam-deque/0.2.0 \
|
||||
crate://crates.io/crossbeam-epoch/0.3.0 \
|
||||
crate://crates.io/crossbeam-utils/0.2.2 \
|
||||
crate://crates.io/crossbeam/0.3.2 \
|
||||
crate://crates.io/crypto-hash/0.3.1 \
|
||||
crate://crates.io/curl-sys/0.4.1 \
|
||||
crate://crates.io/curl/0.4.11 \
|
||||
crate://crates.io/derive-new/0.5.1 \
|
||||
crate://crates.io/diff/0.1.11 \
|
||||
crate://crates.io/dtoa/0.4.2 \
|
||||
crate://crates.io/either/1.4.0 \
|
||||
crate://crates.io/ena/0.9.2 \
|
||||
crate://crates.io/endian-type/0.1.2 \
|
||||
crate://crates.io/enum_primitive/0.1.1 \
|
||||
crate://crates.io/env_logger/0.5.6 \
|
||||
crate://crates.io/error-chain/0.11.0 \
|
||||
crate://crates.io/failure/0.1.1 \
|
||||
crate://crates.io/failure_derive/0.1.1 \
|
||||
crate://crates.io/filetime/0.1.15 \
|
||||
crate://crates.io/flate2/1.0.1 \
|
||||
crate://crates.io/fnv/1.0.6 \
|
||||
crate://crates.io/foreign-types-shared/0.1.1 \
|
||||
crate://crates.io/foreign-types/0.3.2 \
|
||||
crate://crates.io/fs2/0.4.3 \
|
||||
crate://crates.io/fuchsia-zircon-sys/0.3.3 \
|
||||
crate://crates.io/fuchsia-zircon/0.3.3 \
|
||||
crate://crates.io/futures/0.1.17 \
|
||||
crate://crates.io/getopts/0.2.15 \
|
||||
crate://crates.io/git2-curl/0.8.1 \
|
||||
crate://crates.io/git2/0.7.1 \
|
||||
crate://crates.io/glob/0.2.11 \
|
||||
crate://crates.io/globset/0.3.0 \
|
||||
crate://crates.io/handlebars/0.29.1 \
|
||||
crate://crates.io/hex/0.3.1 \
|
||||
crate://crates.io/home/0.3.2 \
|
||||
crate://crates.io/humantime/1.1.1 \
|
||||
crate://crates.io/idna/0.1.4 \
|
||||
crate://crates.io/if_chain/0.1.2 \
|
||||
crate://crates.io/ignore/0.4.1 \
|
||||
crate://crates.io/is-match/0.1.0 \
|
||||
crate://crates.io/itertools/0.7.6 \
|
||||
crate://crates.io/itoa/0.4.1 \
|
||||
crate://crates.io/jobserver/0.1.11 \
|
||||
crate://crates.io/json/0.11.12 \
|
||||
crate://crates.io/jsonrpc-core/8.0.1 \
|
||||
crate://crates.io/kernel32-sys/0.2.2 \
|
||||
crate://crates.io/languageserver-types/0.35.0 \
|
||||
crate://crates.io/lazy_static/0.2.11 \
|
||||
crate://crates.io/lazy_static/1.0.0 \
|
||||
crate://crates.io/lazycell/0.6.0 \
|
||||
crate://crates.io/libc/0.2.40 \
|
||||
crate://crates.io/libgit2-sys/0.7.1 \
|
||||
crate://crates.io/libssh2-sys/0.2.6 \
|
||||
crate://crates.io/libz-sys/1.0.18 \
|
||||
crate://crates.io/log/0.3.9 \
|
||||
crate://crates.io/log/0.4.1 \
|
||||
crate://crates.io/log_settings/0.1.1 \
|
||||
crate://crates.io/lzma-sys/0.1.9 \
|
||||
crate://crates.io/matches/0.1.6 \
|
||||
crate://crates.io/mdbook/0.1.2 \
|
||||
crate://crates.io/memchr/2.0.1 \
|
||||
crate://crates.io/memoffset/0.2.1 \
|
||||
crate://crates.io/miniz-sys/0.1.10 \
|
||||
crate://crates.io/miow/0.3.1 \
|
||||
crate://crates.io/nibble_vec/0.0.3 \
|
||||
crate://crates.io/nodrop/0.1.12 \
|
||||
crate://crates.io/num-integer/0.1.36 \
|
||||
crate://crates.io/num-iter/0.1.35 \
|
||||
crate://crates.io/num-traits/0.1.43 \
|
||||
crate://crates.io/num-traits/0.2.2 \
|
||||
crate://crates.io/num/0.1.42 \
|
||||
crate://crates.io/num_cpus/1.8.0 \
|
||||
crate://crates.io/open/1.2.1 \
|
||||
crate://crates.io/openssl-probe/0.1.2 \
|
||||
crate://crates.io/openssl-sys/0.9.27 \
|
||||
crate://crates.io/openssl/0.10.5 \
|
||||
crate://crates.io/owning_ref/0.3.3 \
|
||||
crate://crates.io/parking_lot/0.5.3 \
|
||||
crate://crates.io/parking_lot_core/0.2.13 \
|
||||
crate://crates.io/percent-encoding/1.0.1 \
|
||||
crate://crates.io/pest/0.3.3 \
|
||||
crate://crates.io/pkg-config/0.3.9 \
|
||||
crate://crates.io/proc-macro2/0.2.3 \
|
||||
crate://crates.io/pulldown-cmark/0.1.2 \
|
||||
crate://crates.io/quick-error/1.2.1 \
|
||||
crate://crates.io/quine-mc_cluskey/0.2.4 \
|
||||
crate://crates.io/quote/0.3.15 \
|
||||
crate://crates.io/quote/0.4.2 \
|
||||
crate://crates.io/racer/2.0.13 \
|
||||
crate://crates.io/radix_trie/0.1.2 \
|
||||
crate://crates.io/rand/0.4.2 \
|
||||
crate://crates.io/rayon-core/1.4.0 \
|
||||
crate://crates.io/rayon/1.0.0 \
|
||||
crate://crates.io/redox_syscall/0.1.37 \
|
||||
crate://crates.io/redox_termios/0.1.1 \
|
||||
crate://crates.io/regex-syntax/0.5.3 \
|
||||
crate://crates.io/regex/0.2.10 \
|
||||
crate://crates.io/remove_dir_all/0.5.0 \
|
||||
crate://crates.io/rls-analysis/0.11.3 \
|
||||
crate://crates.io/rls-blacklist/0.1.0 \
|
||||
crate://crates.io/rls-data/0.15.0 \
|
||||
crate://crates.io/rls-rustc/0.2.2 \
|
||||
crate://crates.io/rls-span/0.4.0 \
|
||||
crate://crates.io/rls-vfs/0.4.5 \
|
||||
crate://crates.io/rustc-ap-rustc_cratesio_shim/94.0.0 \
|
||||
crate://crates.io/rustc-ap-rustc_data_structures/94.0.0 \
|
||||
crate://crates.io/rustc-ap-rustc_errors/94.0.0 \
|
||||
crate://crates.io/rustc-ap-serialize/94.0.0 \
|
||||
crate://crates.io/rustc-ap-syntax/94.0.0 \
|
||||
crate://crates.io/rustc-ap-syntax_pos/94.0.0 \
|
||||
crate://crates.io/rustc-demangle/0.1.7 \
|
||||
crate://crates.io/rustc-serialize/0.3.24 \
|
||||
crate://crates.io/same-file/1.0.2 \
|
||||
crate://crates.io/schannel/0.1.11 \
|
||||
crate://crates.io/scoped-tls/0.1.1 \
|
||||
crate://crates.io/scopeguard/0.3.3 \
|
||||
crate://crates.io/semver-parser/0.7.0 \
|
||||
crate://crates.io/semver/0.9.0 \
|
||||
crate://crates.io/serde/1.0.35 \
|
||||
crate://crates.io/serde_derive/1.0.35 \
|
||||
crate://crates.io/serde_derive_internals/0.22.1 \
|
||||
crate://crates.io/serde_ignored/0.0.4 \
|
||||
crate://crates.io/serde_json/1.0.13 \
|
||||
crate://crates.io/shell-escape/0.1.3 \
|
||||
crate://crates.io/shlex/0.1.1 \
|
||||
crate://crates.io/smallvec/0.6.0 \
|
||||
crate://crates.io/socket2/0.3.4 \
|
||||
crate://crates.io/stable_deref_trait/1.0.0 \
|
||||
crate://crates.io/strsim/0.7.0 \
|
||||
crate://crates.io/syn/0.11.11 \
|
||||
crate://crates.io/syn/0.12.14 \
|
||||
crate://crates.io/synom/0.11.3 \
|
||||
crate://crates.io/synstructure/0.6.1 \
|
||||
crate://crates.io/syntex_errors/0.52.0 \
|
||||
crate://crates.io/syntex_pos/0.52.0 \
|
||||
crate://crates.io/syntex_syntax/0.52.0 \
|
||||
crate://crates.io/tar/0.4.14 \
|
||||
crate://crates.io/tempdir/0.3.7 \
|
||||
crate://crates.io/tempfile/3.0.2 \
|
||||
crate://crates.io/term/0.4.6 \
|
||||
crate://crates.io/term/0.5.1 \
|
||||
crate://crates.io/termcolor/0.3.6 \
|
||||
crate://crates.io/termion/1.5.1 \
|
||||
crate://crates.io/textwrap/0.9.0 \
|
||||
crate://crates.io/thread_local/0.3.5 \
|
||||
crate://crates.io/time/0.1.39 \
|
||||
crate://crates.io/toml-query/0.6.0 \
|
||||
crate://crates.io/toml/0.2.1 \
|
||||
crate://crates.io/toml/0.4.5 \
|
||||
crate://crates.io/ucd-util/0.1.1 \
|
||||
crate://crates.io/unicode-bidi/0.3.4 \
|
||||
crate://crates.io/unicode-normalization/0.1.5 \
|
||||
crate://crates.io/unicode-segmentation/1.2.0 \
|
||||
crate://crates.io/unicode-width/0.1.4 \
|
||||
crate://crates.io/unicode-xid/0.0.3 \
|
||||
crate://crates.io/unicode-xid/0.0.4 \
|
||||
crate://crates.io/unicode-xid/0.1.0 \
|
||||
crate://crates.io/unreachable/1.0.0 \
|
||||
crate://crates.io/url/1.7.0 \
|
||||
crate://crates.io/url_serde/0.2.0 \
|
||||
crate://crates.io/userenv-sys/0.2.0 \
|
||||
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/2.1.4 \
|
||||
crate://crates.io/winapi-build/0.1.1 \
|
||||
crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
|
||||
crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
|
||||
crate://crates.io/winapi/0.2.8 \
|
||||
crate://crates.io/winapi/0.3.4 \
|
||||
crate://crates.io/wincolor/0.1.6 \
|
||||
crate://crates.io/xattr/0.1.11 \
|
||||
crate://crates.io/xz2/0.1.4 \
|
||||
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"
|
||||
258
recipes-devtools/rust/rust_1.27.1.bb
Normal file
258
recipes-devtools/rust/rust_1.27.1.bb
Normal file
@@ -0,0 +1,258 @@
|
||||
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/aho-corasick/0.6.4 \
|
||||
crate://crates.io/ammonia/1.1.0 \
|
||||
crate://crates.io/ansi_term/0.11.0 \
|
||||
crate://crates.io/ar/0.3.1 \
|
||||
crate://crates.io/arrayvec/0.4.7 \
|
||||
crate://crates.io/assert_cli/0.5.4 \
|
||||
crate://crates.io/atty/0.2.8 \
|
||||
crate://crates.io/backtrace-sys/0.1.16 \
|
||||
crate://crates.io/backtrace/0.3.6 \
|
||||
crate://crates.io/bitflags/0.7.0 \
|
||||
crate://crates.io/bitflags/0.9.1 \
|
||||
crate://crates.io/bitflags/1.0.1 \
|
||||
crate://crates.io/bufstream/0.1.3 \
|
||||
crate://crates.io/bytecount/0.2.0 \
|
||||
crate://crates.io/byteorder/1.2.2 \
|
||||
crate://crates.io/cargo_metadata/0.3.3 \
|
||||
crate://crates.io/cargo_metadata/0.5.4 \
|
||||
crate://crates.io/cc/1.0.10 \
|
||||
crate://crates.io/cfg-if/0.1.2 \
|
||||
crate://crates.io/chrono/0.4.1 \
|
||||
crate://crates.io/clap/2.31.2 \
|
||||
crate://crates.io/clippy_lints/0.0.197 \
|
||||
crate://crates.io/cmake/0.1.30 \
|
||||
crate://crates.io/colored/1.6.0 \
|
||||
crate://crates.io/commoncrypto-sys/0.2.0 \
|
||||
crate://crates.io/commoncrypto/0.2.0 \
|
||||
crate://crates.io/compiletest_rs/0.3.9 \
|
||||
crate://crates.io/core-foundation-sys/0.5.1 \
|
||||
crate://crates.io/core-foundation/0.5.1 \
|
||||
crate://crates.io/crossbeam-deque/0.2.0 \
|
||||
crate://crates.io/crossbeam-epoch/0.3.1 \
|
||||
crate://crates.io/crossbeam-utils/0.2.2 \
|
||||
crate://crates.io/crossbeam/0.3.2 \
|
||||
crate://crates.io/crypto-hash/0.3.1 \
|
||||
crate://crates.io/curl-sys/0.4.2 \
|
||||
crate://crates.io/curl/0.4.12 \
|
||||
crate://crates.io/debug_unreachable/0.1.1 \
|
||||
crate://crates.io/derive-new/0.5.2 \
|
||||
crate://crates.io/diff/0.1.11 \
|
||||
crate://crates.io/difference/1.0.0 \
|
||||
crate://crates.io/difference/2.0.0 \
|
||||
crate://crates.io/dtoa/0.4.2 \
|
||||
crate://crates.io/either/1.5.0 \
|
||||
crate://crates.io/elasticlunr-rs/2.2.0 \
|
||||
crate://crates.io/ena/0.9.2 \
|
||||
crate://crates.io/endian-type/0.1.2 \
|
||||
crate://crates.io/enum_primitive/0.1.1 \
|
||||
crate://crates.io/env_logger/0.5.8 \
|
||||
crate://crates.io/environment/0.1.1 \
|
||||
crate://crates.io/error-chain/0.11.0 \
|
||||
crate://crates.io/failure/0.1.1 \
|
||||
crate://crates.io/failure_derive/0.1.1 \
|
||||
crate://crates.io/filetime/0.1.15 \
|
||||
crate://crates.io/filetime/0.2.0 \
|
||||
crate://crates.io/fixedbitset/0.1.9 \
|
||||
crate://crates.io/flate2/1.0.1 \
|
||||
crate://crates.io/fnv/1.0.6 \
|
||||
crate://crates.io/foreign-types-shared/0.1.1 \
|
||||
crate://crates.io/foreign-types/0.3.2 \
|
||||
crate://crates.io/fs2/0.4.3 \
|
||||
crate://crates.io/fuchsia-zircon-sys/0.3.3 \
|
||||
crate://crates.io/fuchsia-zircon/0.3.3 \
|
||||
crate://crates.io/futf/0.1.3 \
|
||||
crate://crates.io/futures/0.1.20 \
|
||||
crate://crates.io/getopts/0.2.17 \
|
||||
crate://crates.io/git2-curl/0.8.1 \
|
||||
crate://crates.io/git2/0.7.1 \
|
||||
crate://crates.io/glob/0.2.11 \
|
||||
crate://crates.io/globset/0.3.0 \
|
||||
crate://crates.io/handlebars/0.32.0 \
|
||||
crate://crates.io/hex/0.3.1 \
|
||||
crate://crates.io/home/0.3.2 \
|
||||
crate://crates.io/html5ever/0.22.0 \
|
||||
crate://crates.io/humantime/1.1.1 \
|
||||
crate://crates.io/idna/0.1.4 \
|
||||
crate://crates.io/if_chain/0.1.2 \
|
||||
crate://crates.io/ignore/0.4.1 \
|
||||
crate://crates.io/is-match/0.1.0 \
|
||||
crate://crates.io/itertools/0.7.8 \
|
||||
crate://crates.io/itoa/0.4.1 \
|
||||
crate://crates.io/jobserver/0.1.11 \
|
||||
crate://crates.io/json/0.11.13 \
|
||||
crate://crates.io/jsonrpc-core/8.0.1 \
|
||||
crate://crates.io/kernel32-sys/0.2.2 \
|
||||
crate://crates.io/languageserver-types/0.39.0 \
|
||||
crate://crates.io/lazy_static/0.2.11 \
|
||||
crate://crates.io/lazy_static/1.0.0 \
|
||||
crate://crates.io/lazycell/0.6.0 \
|
||||
crate://crates.io/libc/0.2.40 \
|
||||
crate://crates.io/libgit2-sys/0.7.1 \
|
||||
crate://crates.io/libssh2-sys/0.2.6 \
|
||||
crate://crates.io/libz-sys/1.0.18 \
|
||||
crate://crates.io/log/0.3.9 \
|
||||
crate://crates.io/log/0.4.1 \
|
||||
crate://crates.io/log_settings/0.1.1 \
|
||||
crate://crates.io/lzma-sys/0.1.9 \
|
||||
crate://crates.io/mac/0.1.1 \
|
||||
crate://crates.io/maplit/1.0.1 \
|
||||
crate://crates.io/markup5ever/0.7.2 \
|
||||
crate://crates.io/matches/0.1.6 \
|
||||
crate://crates.io/mdbook/0.1.7 \
|
||||
crate://crates.io/memchr/2.0.1 \
|
||||
crate://crates.io/memoffset/0.2.1 \
|
||||
crate://crates.io/miniz-sys/0.1.10 \
|
||||
crate://crates.io/miow/0.3.1 \
|
||||
crate://crates.io/nibble_vec/0.0.4 \
|
||||
crate://crates.io/nodrop/0.1.12 \
|
||||
crate://crates.io/num-integer/0.1.36 \
|
||||
crate://crates.io/num-traits/0.1.43 \
|
||||
crate://crates.io/num-traits/0.2.2 \
|
||||
crate://crates.io/num_cpus/1.8.0 \
|
||||
crate://crates.io/open/1.2.1 \
|
||||
crate://crates.io/openssl-probe/0.1.2 \
|
||||
crate://crates.io/openssl-sys/0.9.28 \
|
||||
crate://crates.io/openssl/0.10.6 \
|
||||
crate://crates.io/ordermap/0.3.5 \
|
||||
crate://crates.io/owning_ref/0.3.3 \
|
||||
crate://crates.io/parking_lot/0.5.5 \
|
||||
crate://crates.io/parking_lot_core/0.2.14 \
|
||||
crate://crates.io/percent-encoding/1.0.1 \
|
||||
crate://crates.io/pest/1.0.6 \
|
||||
crate://crates.io/pest_derive/1.0.7 \
|
||||
crate://crates.io/petgraph/0.4.12 \
|
||||
crate://crates.io/phf/0.7.21 \
|
||||
crate://crates.io/phf_codegen/0.7.21 \
|
||||
crate://crates.io/phf_generator/0.7.21 \
|
||||
crate://crates.io/phf_shared/0.7.21 \
|
||||
crate://crates.io/pkg-config/0.3.9 \
|
||||
crate://crates.io/precomputed-hash/0.1.1 \
|
||||
crate://crates.io/pretty_assertions/0.5.1 \
|
||||
crate://crates.io/proc-macro2/0.2.3 \
|
||||
crate://crates.io/proc-macro2/0.3.6 \
|
||||
crate://crates.io/pulldown-cmark/0.1.2 \
|
||||
crate://crates.io/quick-error/1.2.1 \
|
||||
crate://crates.io/quine-mc_cluskey/0.2.4 \
|
||||
crate://crates.io/quote/0.3.15 \
|
||||
crate://crates.io/quote/0.4.2 \
|
||||
crate://crates.io/quote/0.5.1 \
|
||||
crate://crates.io/racer/2.0.13 \
|
||||
crate://crates.io/radix_trie/0.1.3 \
|
||||
crate://crates.io/rand/0.3.22 \
|
||||
crate://crates.io/rand/0.4.2 \
|
||||
crate://crates.io/rayon-core/1.4.0 \
|
||||
crate://crates.io/rayon/1.0.1 \
|
||||
crate://crates.io/redox_syscall/0.1.37 \
|
||||
crate://crates.io/redox_termios/0.1.1 \
|
||||
crate://crates.io/regex-syntax/0.5.5 \
|
||||
crate://crates.io/regex/0.2.10 \
|
||||
crate://crates.io/remove_dir_all/0.5.1 \
|
||||
crate://crates.io/rls-analysis/0.12.1 \
|
||||
crate://crates.io/rls-blacklist/0.1.2 \
|
||||
crate://crates.io/rls-data/0.15.0 \
|
||||
crate://crates.io/rls-rustc/0.2.2 \
|
||||
crate://crates.io/rls-span/0.4.0 \
|
||||
crate://crates.io/rls-vfs/0.4.5 \
|
||||
crate://crates.io/rustc-ap-rustc_cratesio_shim/121.0.0 \
|
||||
crate://crates.io/rustc-ap-rustc_data_structures/121.0.0 \
|
||||
crate://crates.io/rustc-ap-rustc_errors/121.0.0 \
|
||||
crate://crates.io/rustc-ap-rustc_target/121.0.0 \
|
||||
crate://crates.io/rustc-ap-serialize/121.0.0 \
|
||||
crate://crates.io/rustc-ap-syntax/121.0.0 \
|
||||
crate://crates.io/rustc-ap-syntax_pos/121.0.0 \
|
||||
crate://crates.io/rustc-demangle/0.1.7 \
|
||||
crate://crates.io/rustc-serialize/0.3.24 \
|
||||
crate://crates.io/rustfix/0.2.0 \
|
||||
crate://crates.io/same-file/0.1.3 \
|
||||
crate://crates.io/same-file/1.0.2 \
|
||||
crate://crates.io/schannel/0.1.12 \
|
||||
crate://crates.io/scoped-tls/0.1.1 \
|
||||
crate://crates.io/scopeguard/0.3.3 \
|
||||
crate://crates.io/semver-parser/0.7.0 \
|
||||
crate://crates.io/semver/0.8.0 \
|
||||
crate://crates.io/semver/0.9.0 \
|
||||
crate://crates.io/serde/1.0.40 \
|
||||
crate://crates.io/serde_derive/1.0.40 \
|
||||
crate://crates.io/serde_derive_internals/0.23.1 \
|
||||
crate://crates.io/serde_ignored/0.0.4 \
|
||||
crate://crates.io/serde_json/1.0.15 \
|
||||
crate://crates.io/shell-escape/0.1.4 \
|
||||
crate://crates.io/shlex/0.1.1 \
|
||||
crate://crates.io/siphasher/0.2.2 \
|
||||
crate://crates.io/skeptic/0.13.2 \
|
||||
crate://crates.io/smallvec/0.6.0 \
|
||||
crate://crates.io/socket2/0.3.5 \
|
||||
crate://crates.io/stable_deref_trait/1.0.0 \
|
||||
crate://crates.io/string_cache/0.7.1 \
|
||||
crate://crates.io/string_cache_codegen/0.4.0 \
|
||||
crate://crates.io/string_cache_shared/0.3.0 \
|
||||
crate://crates.io/strsim/0.7.0 \
|
||||
crate://crates.io/strum/0.9.0 \
|
||||
crate://crates.io/strum_macros/0.9.0 \
|
||||
crate://crates.io/syn/0.11.11 \
|
||||
crate://crates.io/syn/0.12.15 \
|
||||
crate://crates.io/syn/0.13.1 \
|
||||
crate://crates.io/synom/0.11.3 \
|
||||
crate://crates.io/synstructure/0.6.1 \
|
||||
crate://crates.io/syntex_errors/0.52.0 \
|
||||
crate://crates.io/syntex_pos/0.52.0 \
|
||||
crate://crates.io/syntex_syntax/0.52.0 \
|
||||
crate://crates.io/tar/0.4.15 \
|
||||
crate://crates.io/tempdir/0.3.7 \
|
||||
crate://crates.io/tempfile/3.0.1 \
|
||||
crate://crates.io/tendril/0.4.0 \
|
||||
crate://crates.io/term/0.4.6 \
|
||||
crate://crates.io/term/0.5.1 \
|
||||
crate://crates.io/termcolor/0.3.6 \
|
||||
crate://crates.io/termion/1.5.1 \
|
||||
crate://crates.io/textwrap/0.9.0 \
|
||||
crate://crates.io/thread_local/0.3.5 \
|
||||
crate://crates.io/time/0.1.39 \
|
||||
crate://crates.io/toml-query/0.6.0 \
|
||||
crate://crates.io/toml/0.2.1 \
|
||||
crate://crates.io/toml/0.4.6 \
|
||||
crate://crates.io/ucd-util/0.1.1 \
|
||||
crate://crates.io/unicode-bidi/0.3.4 \
|
||||
crate://crates.io/unicode-normalization/0.1.5 \
|
||||
crate://crates.io/unicode-segmentation/1.2.0 \
|
||||
crate://crates.io/unicode-width/0.1.4 \
|
||||
crate://crates.io/unicode-xid/0.0.3 \
|
||||
crate://crates.io/unicode-xid/0.0.4 \
|
||||
crate://crates.io/unicode-xid/0.1.0 \
|
||||
crate://crates.io/unreachable/0.1.1 \
|
||||
crate://crates.io/unreachable/1.0.0 \
|
||||
crate://crates.io/url/1.7.0 \
|
||||
crate://crates.io/url_serde/0.2.0 \
|
||||
crate://crates.io/userenv-sys/0.2.0 \
|
||||
crate://crates.io/utf-8/0.7.2 \
|
||||
crate://crates.io/utf8-ranges/1.0.0 \
|
||||
crate://crates.io/vcpkg/0.2.3 \
|
||||
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/walkdir/2.1.4 \
|
||||
crate://crates.io/winapi-build/0.1.1 \
|
||||
crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
|
||||
crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
|
||||
crate://crates.io/winapi/0.2.8 \
|
||||
crate://crates.io/winapi/0.3.4 \
|
||||
crate://crates.io/wincolor/0.1.6 \
|
||||
crate://crates.io/xattr/0.2.1 \
|
||||
crate://crates.io/xz2/0.1.4 \
|
||||
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"
|
||||
67
recipes-example/rustfmt/rustfmt_0.8.0.bb
Normal file
67
recipes-example/rustfmt/rustfmt_0.8.0.bb
Normal 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
|
||||
@@ -1,74 +0,0 @@
|
||||
INHIBIT_CARGO_DEP = "1"
|
||||
|
||||
inherit cargo
|
||||
inherit patch
|
||||
inherit rust-installer
|
||||
|
||||
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"
|
||||
|
||||
SRC_URI = "\
|
||||
git://github.com/rust-lang/cargo.git;protocol=https;name=cargo \
|
||||
git://github.com/rust-lang/rust-installer.git;protocol=https;name=rust-installer;destsuffix=git/src/rust-installer \
|
||||
http://static-rust-lang-org.s3.amazonaws.com/cargo-dist/${CARGO_SNAPSHOT} \
|
||||
"
|
||||
|
||||
LIC_FILES_CHKSUM ="\
|
||||
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
|
||||
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
|
||||
file://LICENSE-THIRD-PARTY;md5=afbb7ae0aa70c8e437a007314eae5f3b \
|
||||
"
|
||||
SRCREV_FORMAT = "cargo_rust-installer"
|
||||
PV .= "+git${SRCPV}"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
B = "${S}"
|
||||
|
||||
PACKAGECONFIG ??= ""
|
||||
|
||||
# Note: this does not appear to work very well due to our use of bitbake triples
|
||||
# & rust's use of cooked triples
|
||||
PACKAGECONFIG[rust-snapshot] = "--local-rust-root=${B}/rustc"
|
||||
|
||||
do_configure () {
|
||||
${@bb.utils.contains('PACKAGECONFIG', 'rust-snapshot', '${S}/.travis.install.deps.sh', ':', d)}
|
||||
|
||||
"${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 downloads a cargo snapshot to build itself using cargo, we need
|
||||
# to override it's arch info.
|
||||
cargo_do_configure
|
||||
}
|
||||
|
||||
do_compile () {
|
||||
oe_cargo_fix_env
|
||||
|
||||
rm -rf target/snapshot
|
||||
mkdir -p target
|
||||
cp -R ${WORKDIR}/$(basename ${CARGO_SNAPSHOT} .tar.gz) target/snapshot
|
||||
|
||||
oe_runmake ARGS="--verbose"
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_runmake DESTDIR="${D}" install
|
||||
}
|
||||
|
||||
BBCLASSEXTEND = "native"
|
||||
@@ -1,51 +0,0 @@
|
||||
# 2015-06-29
|
||||
SRCREV_cargo = "339a103fa71701541229316a568fca12cf07fc8d"
|
||||
SRCREV_rust-installer = "8e4f8ea581502a2edc8177a040300e05ff7f91e3"
|
||||
|
||||
require cargo.inc
|
||||
|
||||
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.-If-it-.patch;patchdir=../curl-rust \
|
||||
file://curl-rust/0002-remove-per-triple-deps-on-openssl-sys.patch;patchdir=../curl-rust \
|
||||
\
|
||||
git://github.com/alexcrichton/ssh2-rs.git;protocol=https;name=ssh2-rs;destsuffix=ssh2-rs \
|
||||
file://ssh2-rs/0001-Unconditionally-depend-on-openssl-sys.patch;patchdir=../ssh2-rs \
|
||||
\
|
||||
git://github.com/alexcrichton/git2-rs.git;protocol=https;name=git2-rs;destsuffix=git2-rs \
|
||||
file://git2-rs/0001-Add-generic-openssl-sys-dep.patch;patchdir=../git2-rs \
|
||||
"
|
||||
|
||||
# 0.2.10 / -sys 0.1.24
|
||||
SRCREV_curl-rust = "9fbf39fa8765e777d110ad18a2a2a3ea42dcb717"
|
||||
|
||||
# 0.2.8 / -sys 0.1.25
|
||||
SRCREV_ssh2-rs = "afc39c6e7236b87d7ebde21ee4d4743d9437b85f"
|
||||
|
||||
# 0.2.11 / -sys 0.2.14
|
||||
SRCREV_git2-rs = "3a7a990607a766fa65a40b920d70c8289691d2f8"
|
||||
|
||||
SRCREV_FORMAT .= "_curl-rust_curl_ssh2-rs_git2-rs"
|
||||
EXTRA_OECARGO_PATHS = "\
|
||||
${WORKDIR}/curl-rust \
|
||||
${WORKDIR}/ssh2-rs \
|
||||
${WORKDIR}/git2-rs \
|
||||
"
|
||||
|
||||
CARGO_SNAPSHOT = "2015-04-02/cargo-nightly-x86_64-unknown-linux-gnu.tar.gz"
|
||||
SRC_URI[md5sum] = "3d62194d02a9088cd8aae379e9498134"
|
||||
SRC_URI[sha256sum] = "16b6338ba2942989693984ba4dbd057c2801e8805e6da8fa7b781b00e722d117"
|
||||
|
||||
# Used in libgit2-sys's build.rs, needed for pkg-config to be used
|
||||
export LIBGIT2_SYS_USE_PKG_CONFIG = "1"
|
||||
|
||||
# FIXME: we don't actually use these, and shouldn't need to fetch it, but not having it results in:
|
||||
## target/snapshot/bin/cargo build --target x86_64-linux --verbose
|
||||
## Failed to resolve path '/home/cody/obj/y/tmp/work/x86_64-linux/cargo-native/git+gitAUTOINC+0b84923203_9181ea8f4e_8baa8ccb39-r0/curl-rust/curl-sys/curl/.git': No such file or directory
|
||||
|
||||
SRC_URI += "\
|
||||
git://github.com/alexcrichton/curl.git;protocol=https;destsuffix=curl-rust/curl-sys/curl;name=curl;branch=configure \
|
||||
git://github.com/libgit2/libgit2.git;protocol=https;destsuffix=git2-rs/libgit2-sys/libgit2;name=libgit2 \
|
||||
"
|
||||
SRCREV_curl = "9a300aa13e5035a795396e429aa861229424c9dc"
|
||||
SRCREV_libgit2 = "47f37400253210f483d84fb9c2ecf44fb5986849"
|
||||
@@ -1,906 +0,0 @@
|
||||
From d122d57536df9fbfcdfda08b2918dc6e0c6209c0 Mon Sep 17 00:00:00 2001
|
||||
From: Andrew Paseltiner <apaseltiner@gmail.com>
|
||||
Date: Thu, 12 Feb 2015 23:10:07 -0500
|
||||
Subject: [PATCH] update Rust
|
||||
|
||||
---
|
||||
Cargo.lock | 32 ++++++++++++------------
|
||||
src/bin/build.rs | 4 +--
|
||||
src/bin/cargo.rs | 2 +-
|
||||
src/bin/clean.rs | 4 +--
|
||||
src/bin/generate_lockfile.rs | 4 +--
|
||||
src/bin/new.rs | 4 +--
|
||||
src/bin/update.rs | 4 +--
|
||||
src/bin/verify_project.rs | 4 +--
|
||||
src/bin/version.rs | 4 +--
|
||||
src/cargo/lib.rs | 2 +-
|
||||
src/cargo/ops/cargo_new.rs | 4 +--
|
||||
src/cargo/ops/cargo_rustc/engine.rs | 2 +-
|
||||
src/cargo/ops/registry.rs | 4 +--
|
||||
src/cargo/sources/git/utils.rs | 3 ++-
|
||||
src/cargo/util/config.rs | 2 +-
|
||||
src/cargo/util/hex.rs | 5 ++--
|
||||
src/cargo/util/profile.rs | 2 +-
|
||||
src/rustversion.txt | 2 +-
|
||||
tests/support/mod.rs | 2 +-
|
||||
tests/test_cargo.rs | 2 +-
|
||||
tests/test_cargo_compile.rs | 10 ++++----
|
||||
tests/test_cargo_compile_custom_build.rs | 42 ++++++++++++++++----------------
|
||||
tests/test_cargo_compile_git_deps.rs | 24 +++++++++---------
|
||||
tests/test_cargo_compile_plugins.rs | 6 ++---
|
||||
tests/test_cargo_cross_compile.rs | 28 ++++++++++-----------
|
||||
tests/test_cargo_profiles.rs | 6 ++---
|
||||
26 files changed, 103 insertions(+), 105 deletions(-)
|
||||
|
||||
diff --git a/Cargo.lock b/Cargo.lock
|
||||
index 14dd876..629585c 100644
|
||||
--- a/Cargo.lock
|
||||
+++ b/Cargo.lock
|
||||
@@ -4,7 +4,7 @@ version = "0.1.0"
|
||||
dependencies = [
|
||||
"advapi32-sys 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"curl 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "docopt 0.6.36 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "docopt 0.6.37 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"env_logger 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"flate2 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"git2 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@@ -18,8 +18,8 @@ dependencies = [
|
||||
"semver 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tar 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"term 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "time 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "toml 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "time 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "toml 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"url 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
@@ -44,7 +44,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"curl-sys 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "openssl-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "openssl-sys 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"url 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
@@ -55,13 +55,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libc 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libz-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "openssl-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "openssl-sys 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"pkg-config 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "docopt"
|
||||
-version = "0.6.36"
|
||||
+version = "0.6.37"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"regex 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@@ -97,7 +97,7 @@ version = "0.1.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"bitflags 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "libgit2-sys 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "libgit2-sys 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"url 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
@@ -136,13 +136,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "libgit2-sys"
|
||||
-version = "0.1.12"
|
||||
+version = "0.1.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libssh2-sys 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libz-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "openssl-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "pkg-config 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "openssl-sys 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "pkg-config 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -159,7 +159,7 @@ version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libz-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "openssl-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "openssl-sys 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"pkg-config 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
@@ -192,12 +192,12 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "openssl-sys"
|
||||
-version = "0.3.3"
|
||||
+version = "0.3.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"gcc 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libressl-pnacl-sys 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "pkg-config 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "pkg-config 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -207,7 +207,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "pkg-config"
|
||||
-version = "0.2.0"
|
||||
+version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
@@ -255,7 +255,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "time"
|
||||
-version = "0.1.16"
|
||||
+version = "0.1.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"gcc 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@@ -264,7 +264,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "toml"
|
||||
-version = "0.1.16"
|
||||
+version = "0.1.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"rustc-serialize 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
diff --git a/src/bin/build.rs b/src/bin/build.rs
|
||||
index a617f64..0784c04 100644
|
||||
--- a/src/bin/build.rs
|
||||
+++ b/src/bin/build.rs
|
||||
@@ -1,4 +1,4 @@
|
||||
-use std::os;
|
||||
+use std::env;
|
||||
|
||||
use cargo::ops::CompileOptions;
|
||||
use cargo::ops;
|
||||
@@ -47,7 +47,7 @@ the --release flag will use the `release` profile instead.
|
||||
";
|
||||
|
||||
pub fn execute(options: Options, config: &Config) -> CliResult<Option<()>> {
|
||||
- debug!("executing; cmd=cargo-build; args={:?}", os::args());
|
||||
+ debug!("executing; cmd=cargo-build; args={:?}", env::args().collect::<Vec<_>>());
|
||||
config.shell().set_verbose(options.flag_verbose);
|
||||
|
||||
let root = try!(find_root_manifest_for_cwd(options.flag_manifest_path));
|
||||
diff --git a/src/bin/cargo.rs b/src/bin/cargo.rs
|
||||
index 7bf0a11..53c904d 100644
|
||||
--- a/src/bin/cargo.rs
|
||||
+++ b/src/bin/cargo.rs
|
||||
@@ -245,7 +245,7 @@ fn list_command_directory() -> Vec<Path> {
|
||||
dirs.push(path.join("../lib/cargo"));
|
||||
dirs.push(path);
|
||||
}
|
||||
- if let Some(val) = env::var("PATH") {
|
||||
+ if let Some(val) = env::var_os("PATH") {
|
||||
dirs.extend(env::split_paths(&val));
|
||||
}
|
||||
dirs
|
||||
diff --git a/src/bin/clean.rs b/src/bin/clean.rs
|
||||
index dcc013e..a530b9b 100644
|
||||
--- a/src/bin/clean.rs
|
||||
+++ b/src/bin/clean.rs
|
||||
@@ -1,4 +1,4 @@
|
||||
-use std::os;
|
||||
+use std::env;
|
||||
|
||||
use cargo::ops;
|
||||
use cargo::util::{CliResult, CliError, Config};
|
||||
@@ -33,7 +33,7 @@ and its format, see the `cargo help pkgid` command.
|
||||
|
||||
pub fn execute(options: Options, config: &Config) -> CliResult<Option<()>> {
|
||||
config.shell().set_verbose(options.flag_verbose);
|
||||
- debug!("executing; cmd=cargo-clean; args={:?}", os::args());
|
||||
+ debug!("executing; cmd=cargo-clean; args={:?}", env::args().collect::<Vec<_>>());
|
||||
|
||||
let root = try!(find_root_manifest_for_cwd(options.flag_manifest_path));
|
||||
let opts = ops::CleanOptions {
|
||||
diff --git a/src/bin/generate_lockfile.rs b/src/bin/generate_lockfile.rs
|
||||
index a350ab6..d9777ef 100644
|
||||
--- a/src/bin/generate_lockfile.rs
|
||||
+++ b/src/bin/generate_lockfile.rs
|
||||
@@ -1,4 +1,4 @@
|
||||
-use std::os;
|
||||
+use std::env;
|
||||
|
||||
use cargo::ops;
|
||||
use cargo::util::{CliResult, CliError, Config};
|
||||
@@ -23,7 +23,7 @@ Options:
|
||||
";
|
||||
|
||||
pub fn execute(options: Options, config: &Config) -> CliResult<Option<()>> {
|
||||
- debug!("executing; cmd=cargo-generate-lockfile; args={:?}", os::args());
|
||||
+ debug!("executing; cmd=cargo-generate-lockfile; args={:?}", env::args().collect::<Vec<_>>());
|
||||
config.shell().set_verbose(options.flag_verbose);
|
||||
let root = try!(find_root_manifest_for_cwd(options.flag_manifest_path));
|
||||
|
||||
diff --git a/src/bin/new.rs b/src/bin/new.rs
|
||||
index 4126e38..0abff6a 100644
|
||||
--- a/src/bin/new.rs
|
||||
+++ b/src/bin/new.rs
|
||||
@@ -1,4 +1,4 @@
|
||||
-use std::os;
|
||||
+use std::env;
|
||||
|
||||
use cargo::ops;
|
||||
use cargo::util::{CliResult, CliError, Config};
|
||||
@@ -28,7 +28,7 @@ Options:
|
||||
";
|
||||
|
||||
pub fn execute(options: Options, config: &Config) -> CliResult<Option<()>> {
|
||||
- debug!("executing; cmd=cargo-new; args={:?}", os::args());
|
||||
+ debug!("executing; cmd=cargo-new; args={:?}", env::args().collect::<Vec<_>>());
|
||||
config.shell().set_verbose(options.flag_verbose);
|
||||
|
||||
let Options { flag_bin, arg_path, flag_vcs, .. } = options;
|
||||
diff --git a/src/bin/update.rs b/src/bin/update.rs
|
||||
index fa75506..4fdeebf 100644
|
||||
--- a/src/bin/update.rs
|
||||
+++ b/src/bin/update.rs
|
||||
@@ -1,4 +1,4 @@
|
||||
-use std::os;
|
||||
+use std::env;
|
||||
|
||||
use cargo::ops;
|
||||
use cargo::util::{CliResult, CliError, Config};
|
||||
@@ -49,7 +49,7 @@ For more information about package id specifications, see `cargo help pkgid`.
|
||||
";
|
||||
|
||||
pub fn execute(options: Options, config: &Config) -> CliResult<Option<()>> {
|
||||
- debug!("executing; cmd=cargo-update; args={:?}", os::args());
|
||||
+ debug!("executing; cmd=cargo-update; args={:?}", env::args().collect::<Vec<_>>());
|
||||
config.shell().set_verbose(options.flag_verbose);
|
||||
let root = try!(find_root_manifest_for_cwd(options.flag_manifest_path));
|
||||
|
||||
diff --git a/src/bin/verify_project.rs b/src/bin/verify_project.rs
|
||||
index 54f8d6e..816c5e9 100644
|
||||
--- a/src/bin/verify_project.rs
|
||||
+++ b/src/bin/verify_project.rs
|
||||
@@ -1,8 +1,8 @@
|
||||
extern crate toml;
|
||||
|
||||
use std::collections::HashMap;
|
||||
+use std::env;
|
||||
use std::old_io::File;
|
||||
-use std::os;
|
||||
|
||||
use cargo::util::{CliResult, Config};
|
||||
|
||||
@@ -47,6 +47,6 @@ pub fn execute(args: Flags, config: &Config) -> CliResult<Option<Error>> {
|
||||
fn fail(reason: &str, value: &str) -> CliResult<Option<Error>>{
|
||||
let mut h = HashMap::new();
|
||||
h.insert(reason.to_string(), value.to_string());
|
||||
- os::set_exit_status(1);
|
||||
+ env::set_exit_status(1);
|
||||
Ok(Some(h))
|
||||
}
|
||||
diff --git a/src/bin/version.rs b/src/bin/version.rs
|
||||
index e1bc011..b5622f2 100644
|
||||
--- a/src/bin/version.rs
|
||||
+++ b/src/bin/version.rs
|
||||
@@ -1,4 +1,4 @@
|
||||
-use std::os;
|
||||
+use std::env;
|
||||
|
||||
use cargo;
|
||||
use cargo::util::{CliResult, Config};
|
||||
@@ -16,7 +16,7 @@ Options:
|
||||
";
|
||||
|
||||
pub fn execute(_: Options, _: &Config) -> CliResult<Option<()>> {
|
||||
- debug!("executing; cmd=cargo-version; args={:?}", os::args());
|
||||
+ debug!("executing; cmd=cargo-version; args={:?}", env::args().collect::<Vec<_>>());
|
||||
|
||||
println!("{}", cargo::version());
|
||||
|
||||
diff --git a/src/cargo/lib.rs b/src/cargo/lib.rs
|
||||
index 609e1bd..d5737ef 100644
|
||||
--- a/src/cargo/lib.rs
|
||||
+++ b/src/cargo/lib.rs
|
||||
@@ -95,7 +95,7 @@ fn process<V, F>(mut callback: F)
|
||||
let mut shell = shell(true);
|
||||
process_executed((|| {
|
||||
let config = try!(Config::new(&mut shell));
|
||||
- let args: Vec<_> = try!(env::args().map(|s| {
|
||||
+ let args: Vec<_> = try!(env::args_os().map(|s| {
|
||||
s.into_string().map_err(|s| {
|
||||
human(format!("invalid unicode in argument: {:?}", s))
|
||||
})
|
||||
diff --git a/src/cargo/ops/cargo_new.rs b/src/cargo/ops/cargo_new.rs
|
||||
index 09d8318..ae9d5e5 100644
|
||||
--- a/src/cargo/ops/cargo_new.rs
|
||||
+++ b/src/cargo/ops/cargo_new.rs
|
||||
@@ -134,8 +134,8 @@ fn discover_author() -> CargoResult<(String, Option<String>)> {
|
||||
let git_config = git_config.as_ref();
|
||||
let name = git_config.and_then(|g| g.get_str("user.name").ok())
|
||||
.map(|s| s.to_string())
|
||||
- .or_else(|| env::var_string("USER").ok()) // unix
|
||||
- .or_else(|| env::var_string("USERNAME").ok()); // windows
|
||||
+ .or_else(|| env::var("USER").ok()) // unix
|
||||
+ .or_else(|| env::var("USERNAME").ok()); // windows
|
||||
let name = match name {
|
||||
Some(name) => name,
|
||||
None => {
|
||||
diff --git a/src/cargo/ops/cargo_rustc/engine.rs b/src/cargo/ops/cargo_rustc/engine.rs
|
||||
index 5c6a0ef..9d234f8 100644
|
||||
--- a/src/cargo/ops/cargo_rustc/engine.rs
|
||||
+++ b/src/cargo/ops/cargo_rustc/engine.rs
|
||||
@@ -85,7 +85,7 @@ impl CommandPrototype {
|
||||
|
||||
pub fn get_env(&self, var: &str) -> Option<CString> {
|
||||
self.env.get(var).cloned().or_else(|| {
|
||||
- Some(env::var_string(var).ok().map(|s| CString::from_vec(s.into_bytes())))
|
||||
+ Some(env::var(var).ok().map(|s| CString::from_vec(s.into_bytes())))
|
||||
}).and_then(|val| val)
|
||||
}
|
||||
|
||||
diff --git a/src/cargo/ops/registry.rs b/src/cargo/ops/registry.rs
|
||||
index 2461981..59754f2 100644
|
||||
--- a/src/cargo/ops/registry.rs
|
||||
+++ b/src/cargo/ops/registry.rs
|
||||
@@ -191,7 +191,7 @@ pub fn http_proxy(config: &Config) -> CargoResult<Option<String>> {
|
||||
}
|
||||
Err(..) => {}
|
||||
}
|
||||
- Ok(env::var_string("HTTP_PROXY").ok())
|
||||
+ Ok(env::var("HTTP_PROXY").ok())
|
||||
}
|
||||
|
||||
pub fn http_timeout(config: &Config) -> CargoResult<Option<i64>> {
|
||||
@@ -199,7 +199,7 @@ pub fn http_timeout(config: &Config) -> CargoResult<Option<i64>> {
|
||||
Some((s, _)) => return Ok(Some(s)),
|
||||
None => {}
|
||||
}
|
||||
- Ok(env::var_string("HTTP_TIMEOUT").ok().and_then(|s| s.parse().ok()))
|
||||
+ Ok(env::var("HTTP_TIMEOUT").ok().and_then(|s| s.parse().ok()))
|
||||
}
|
||||
|
||||
pub fn registry_login(config: &Config, token: String) -> CargoResult<()> {
|
||||
diff --git a/src/cargo/sources/git/utils.rs b/src/cargo/sources/git/utils.rs
|
||||
index 898f082..9861ed6 100644
|
||||
--- a/src/cargo/sources/git/utils.rs
|
||||
+++ b/src/cargo/sources/git/utils.rs
|
||||
@@ -308,7 +308,8 @@ impl<'a> GitCheckout<'a> {
|
||||
// as the submodule's head, then we can bail out and go to the
|
||||
// next submodule.
|
||||
let head_and_repo = child.open().and_then(|repo| {
|
||||
- Ok((try!(repo.head()).target(), repo))
|
||||
+ let target = try!(repo.head()).target();
|
||||
+ Ok((target, repo))
|
||||
});
|
||||
let repo = match head_and_repo {
|
||||
Ok((head, repo)) => {
|
||||
diff --git a/src/cargo/util/config.rs b/src/cargo/util/config.rs
|
||||
index 217d028..076e68d 100644
|
||||
--- a/src/cargo/util/config.rs
|
||||
+++ b/src/cargo/util/config.rs
|
||||
@@ -380,7 +380,7 @@ impl ConfigValue {
|
||||
}
|
||||
|
||||
fn homedir() -> Option<Path> {
|
||||
- let cargo_home = env::var_string("CARGO_HOME").map(|p| Path::new(p)).ok();
|
||||
+ let cargo_home = env::var("CARGO_HOME").map(|p| Path::new(p)).ok();
|
||||
let user_home = env::home_dir().map(|p| p.join(".cargo"));
|
||||
return cargo_home.or(user_home);
|
||||
}
|
||||
diff --git a/src/cargo/util/hex.rs b/src/cargo/util/hex.rs
|
||||
index 2bce7ea..3e8d962 100644
|
||||
--- a/src/cargo/util/hex.rs
|
||||
+++ b/src/cargo/util/hex.rs
|
||||
@@ -1,12 +1,11 @@
|
||||
-use std::old_io::MemWriter;
|
||||
use std::hash::{Hasher, Hash, SipHasher};
|
||||
|
||||
use rustc_serialize::hex::ToHex;
|
||||
|
||||
pub fn to_hex(num: u64) -> String {
|
||||
- let mut writer = MemWriter::with_capacity(8);
|
||||
+ let mut writer = Vec::with_capacity(8);
|
||||
writer.write_le_u64(num).unwrap(); // this should never fail
|
||||
- writer.get_ref().to_hex()
|
||||
+ writer.to_hex()
|
||||
}
|
||||
|
||||
pub fn short_hash<H: Hash<SipHasher>>(hashable: &H) -> String {
|
||||
diff --git a/src/cargo/util/profile.rs b/src/cargo/util/profile.rs
|
||||
index 9d19c36..100fd2c 100644
|
||||
--- a/src/cargo/util/profile.rs
|
||||
+++ b/src/cargo/util/profile.rs
|
||||
@@ -14,7 +14,7 @@ pub struct Profiler {
|
||||
desc: String,
|
||||
}
|
||||
|
||||
-fn enabled() -> bool { env::var("CARGO_PROFILE").is_some() }
|
||||
+fn enabled() -> bool { env::var_os("CARGO_PROFILE").is_some() }
|
||||
|
||||
pub fn start<T: fmt::Display>(desc: T) -> Profiler {
|
||||
if !enabled() { return Profiler { desc: String::new() } }
|
||||
diff --git a/src/rustversion.txt b/src/rustversion.txt
|
||||
index e2a057d..17cae77 100644
|
||||
--- a/src/rustversion.txt
|
||||
+++ b/src/rustversion.txt
|
||||
@@ -1 +1 @@
|
||||
-2015-02-09
|
||||
+2015-02-12
|
||||
diff --git a/tests/support/mod.rs b/tests/support/mod.rs
|
||||
index 83be295..7c10756 100644
|
||||
--- a/tests/support/mod.rs
|
||||
+++ b/tests/support/mod.rs
|
||||
@@ -227,7 +227,7 @@ impl<T, E: fmt::Display> ErrMsg<T> for Result<T, E> {
|
||||
|
||||
// Path to cargo executables
|
||||
pub fn cargo_dir() -> Path {
|
||||
- env::var_string("CARGO_BIN_PATH").map(Path::new).ok()
|
||||
+ env::var("CARGO_BIN_PATH").map(Path::new).ok()
|
||||
.or_else(|| env::current_exe().ok().map(|s| s.dir_path()))
|
||||
.unwrap_or_else(|| {
|
||||
panic!("CARGO_BIN_PATH wasn't set. Cannot continue running test")
|
||||
diff --git a/tests/test_cargo.rs b/tests/test_cargo.rs
|
||||
index b4b1abd..64e4c75 100644
|
||||
--- a/tests/test_cargo.rs
|
||||
+++ b/tests/test_cargo.rs
|
||||
@@ -25,7 +25,7 @@ fn fake_executable(proj: ProjectBuilder, dir: &Path, name: &str) -> ProjectBuild
|
||||
}
|
||||
|
||||
fn path() -> Vec<Path> {
|
||||
- env::split_paths(&env::var("PATH").unwrap_or(OsString::new())).collect()
|
||||
+ env::split_paths(&env::var_os("PATH").unwrap_or(OsString::new())).collect()
|
||||
}
|
||||
|
||||
test!(list_commands_looks_at_path {
|
||||
diff --git a/tests/test_cargo_compile.rs b/tests/test_cargo_compile.rs
|
||||
index 20fcab8..9c5b934 100644
|
||||
--- a/tests/test_cargo_compile.rs
|
||||
+++ b/tests/test_cargo_compile.rs
|
||||
@@ -1259,7 +1259,7 @@ test!(freshness_ignores_excluded {
|
||||
exclude = ["src/b*.rs"]
|
||||
"#)
|
||||
.file("build.rs", "fn main() {}")
|
||||
- .file("src/lib.rs", "pub fn bar() -> int { 1 }");
|
||||
+ .file("src/lib.rs", "pub fn bar() -> i32 { 1 }");
|
||||
foo.build();
|
||||
foo.root().move_into_the_past().unwrap();
|
||||
|
||||
@@ -1297,15 +1297,15 @@ test!(rebuild_preserves_out_dir {
|
||||
use std::old_io::File;
|
||||
|
||||
fn main() {
|
||||
- let path = Path::new(env::var_string("OUT_DIR").unwrap()).join("foo");
|
||||
- if env::var("FIRST").is_some() {
|
||||
+ let path = Path::new(env::var("OUT_DIR").unwrap()).join("foo");
|
||||
+ if env::var_os("FIRST").is_some() {
|
||||
File::create(&path).unwrap();
|
||||
} else {
|
||||
File::create(&path).unwrap();
|
||||
}
|
||||
}
|
||||
"#)
|
||||
- .file("src/lib.rs", "pub fn bar() -> int { 1 }");
|
||||
+ .file("src/lib.rs", "pub fn bar() -> i32 { 1 }");
|
||||
foo.build();
|
||||
foo.root().move_into_the_past().unwrap();
|
||||
|
||||
@@ -1335,7 +1335,7 @@ test!(dep_no_libs {
|
||||
[dependencies.bar]
|
||||
path = "bar"
|
||||
"#)
|
||||
- .file("src/lib.rs", "pub fn bar() -> int { 1 }")
|
||||
+ .file("src/lib.rs", "pub fn bar() -> i32 { 1 }")
|
||||
.file("bar/Cargo.toml", r#"
|
||||
[package]
|
||||
name = "bar"
|
||||
diff --git a/tests/test_cargo_compile_custom_build.rs b/tests/test_cargo_compile_custom_build.rs
|
||||
index b110b86..4ef727b 100644
|
||||
--- a/tests/test_cargo_compile_custom_build.rs
|
||||
+++ b/tests/test_cargo_compile_custom_build.rs
|
||||
@@ -79,32 +79,32 @@ test!(custom_build_env_vars {
|
||||
use std::env;
|
||||
use std::old_io::fs::PathExtensions;
|
||||
fn main() {{
|
||||
- let _target = env::var_string("TARGET").unwrap();
|
||||
+ let _target = env::var("TARGET").unwrap();
|
||||
|
||||
- let _ncpus = env::var_string("NUM_JOBS").unwrap();
|
||||
+ let _ncpus = env::var("NUM_JOBS").unwrap();
|
||||
|
||||
- let out = env::var_string("CARGO_MANIFEST_DIR").unwrap();
|
||||
+ let out = env::var("CARGO_MANIFEST_DIR").unwrap();
|
||||
let p1 = Path::new(out);
|
||||
let cwd = env::current_dir().unwrap();
|
||||
let p2 = cwd.join(Path::new(file!()).dir_path().dir_path());
|
||||
assert!(p1 == p2, "{{}} != {{}}", p1.display(), p2.display());
|
||||
|
||||
- let opt = env::var_string("OPT_LEVEL").unwrap();
|
||||
+ let opt = env::var("OPT_LEVEL").unwrap();
|
||||
assert_eq!(opt.as_slice(), "0");
|
||||
|
||||
- let opt = env::var_string("PROFILE").unwrap();
|
||||
+ let opt = env::var("PROFILE").unwrap();
|
||||
assert_eq!(opt.as_slice(), "compile");
|
||||
|
||||
- let debug = env::var_string("DEBUG").unwrap();
|
||||
+ let debug = env::var("DEBUG").unwrap();
|
||||
assert_eq!(debug.as_slice(), "true");
|
||||
|
||||
- let out = env::var_string("OUT_DIR").unwrap();
|
||||
+ let out = env::var("OUT_DIR").unwrap();
|
||||
assert!(out.as_slice().starts_with(r"{0}"));
|
||||
assert!(Path::new(out).is_dir());
|
||||
|
||||
- let _host = env::var_string("HOST").unwrap();
|
||||
+ let _host = env::var("HOST").unwrap();
|
||||
|
||||
- let _feat = env::var_string("CARGO_FEATURE_FOO").unwrap();
|
||||
+ let _feat = env::var("CARGO_FEATURE_FOO").unwrap();
|
||||
}}
|
||||
"#,
|
||||
p.root().join("target").join("build").display());
|
||||
@@ -269,8 +269,8 @@ test!(overrides_and_links {
|
||||
.file("build.rs", r#"
|
||||
use std::env;
|
||||
fn main() {
|
||||
- assert_eq!(env::var_string("DEP_FOO_FOO").unwrap().as_slice(), "bar");
|
||||
- assert_eq!(env::var_string("DEP_FOO_BAR").unwrap().as_slice(), "baz");
|
||||
+ assert_eq!(env::var("DEP_FOO_FOO").unwrap().as_slice(), "bar");
|
||||
+ assert_eq!(env::var("DEP_FOO_BAR").unwrap().as_slice(), "baz");
|
||||
}
|
||||
"#)
|
||||
.file(".cargo/config", format!(r#"
|
||||
@@ -342,8 +342,8 @@ test!(links_passes_env_vars {
|
||||
.file("build.rs", r#"
|
||||
use std::env;
|
||||
fn main() {
|
||||
- assert_eq!(env::var_string("DEP_FOO_FOO").unwrap().as_slice(), "bar");
|
||||
- assert_eq!(env::var_string("DEP_FOO_BAR").unwrap().as_slice(), "baz");
|
||||
+ assert_eq!(env::var("DEP_FOO_FOO").unwrap().as_slice(), "bar");
|
||||
+ assert_eq!(env::var("DEP_FOO_BAR").unwrap().as_slice(), "baz");
|
||||
}
|
||||
"#)
|
||||
.file("a/Cargo.toml", r#"
|
||||
@@ -441,8 +441,8 @@ test!(rebuild_continues_to_pass_env_vars {
|
||||
.file("build.rs", r#"
|
||||
use std::env;
|
||||
fn main() {
|
||||
- assert_eq!(env::var_string("DEP_FOO_FOO").unwrap().as_slice(), "bar");
|
||||
- assert_eq!(env::var_string("DEP_FOO_BAR").unwrap().as_slice(), "baz");
|
||||
+ assert_eq!(env::var("DEP_FOO_FOO").unwrap().as_slice(), "bar");
|
||||
+ assert_eq!(env::var("DEP_FOO_BAR").unwrap().as_slice(), "baz");
|
||||
}
|
||||
"#);
|
||||
|
||||
@@ -727,7 +727,7 @@ test!(out_dir_is_preserved {
|
||||
use std::env;
|
||||
use std::old_io::File;
|
||||
fn main() {
|
||||
- let out = env::var_string("OUT_DIR").unwrap();
|
||||
+ let out = env::var("OUT_DIR").unwrap();
|
||||
File::create(&Path::new(out).join("foo")).unwrap();
|
||||
}
|
||||
"#);
|
||||
@@ -742,7 +742,7 @@ test!(out_dir_is_preserved {
|
||||
use std::env;
|
||||
use std::old_io::File;
|
||||
fn main() {
|
||||
- let out = env::var_string("OUT_DIR").unwrap();
|
||||
+ let out = env::var("OUT_DIR").unwrap();
|
||||
File::open(&Path::new(out).join("foo")).unwrap();
|
||||
}
|
||||
"#).unwrap();
|
||||
@@ -808,7 +808,7 @@ test!(code_generation {
|
||||
use std::old_io::File;
|
||||
|
||||
fn main() {
|
||||
- let dst = Path::new(env::var_string("OUT_DIR").unwrap());
|
||||
+ let dst = Path::new(env::var("OUT_DIR").unwrap());
|
||||
let mut f = File::create(&dst.join("hello.rs")).unwrap();
|
||||
f.write_str("
|
||||
pub fn message() -> &'static str {
|
||||
@@ -972,9 +972,9 @@ test!(test_a_lib_with_a_build_command {
|
||||
use std::old_io::File;
|
||||
|
||||
fn main() {
|
||||
- let out = Path::new(env::var_string("OUT_DIR").unwrap());
|
||||
+ let out = Path::new(env::var("OUT_DIR").unwrap());
|
||||
File::create(&out.join("foo.rs")).write_str("
|
||||
- fn foo() -> int { 1 }
|
||||
+ fn foo() -> i32 { 1 }
|
||||
").unwrap();
|
||||
}
|
||||
"#);
|
||||
@@ -1062,7 +1062,7 @@ test!(build_script_with_dynamic_native_dependency {
|
||||
use std::env;
|
||||
|
||||
fn main() {
|
||||
- let src = Path::new(env::var_string("SRC").unwrap());
|
||||
+ let src = Path::new(env::var("SRC").unwrap());
|
||||
println!("cargo:rustc-flags=-L {}", src.dir_path().display());
|
||||
}
|
||||
"#)
|
||||
diff --git a/tests/test_cargo_compile_git_deps.rs b/tests/test_cargo_compile_git_deps.rs
|
||||
index 5777e1a..11a152f 100644
|
||||
--- a/tests/test_cargo_compile_git_deps.rs
|
||||
+++ b/tests/test_cargo_compile_git_deps.rs
|
||||
@@ -461,7 +461,7 @@ test!(two_revs_same_deps {
|
||||
version = "0.0.0"
|
||||
authors = []
|
||||
"#)
|
||||
- .file("src/lib.rs", "pub fn bar() -> int { 1 }")
|
||||
+ .file("src/lib.rs", "pub fn bar() -> i32 { 1 }")
|
||||
}).unwrap();
|
||||
|
||||
let repo = git2::Repository::open(&bar.root()).unwrap();
|
||||
@@ -469,7 +469,7 @@ test!(two_revs_same_deps {
|
||||
|
||||
// Commit the changes and make sure we trigger a recompile
|
||||
File::create(&bar.root().join("src/lib.rs")).write_str(r#"
|
||||
- pub fn bar() -> int { 2 }
|
||||
+ pub fn bar() -> i32 { 2 }
|
||||
"#).unwrap();
|
||||
add(&repo);
|
||||
let rev2 = commit(&repo);
|
||||
@@ -511,7 +511,7 @@ test!(two_revs_same_deps {
|
||||
"#, bar.url(), rev2).as_slice())
|
||||
.file("src/lib.rs", r#"
|
||||
extern crate bar;
|
||||
- pub fn baz() -> int { bar::bar() }
|
||||
+ pub fn baz() -> i32 { bar::bar() }
|
||||
"#);
|
||||
|
||||
baz.build();
|
||||
@@ -860,7 +860,7 @@ test!(stale_cached_version {
|
||||
version = "0.0.0"
|
||||
authors = []
|
||||
"#)
|
||||
- .file("src/lib.rs", "pub fn bar() -> int { 1 }")
|
||||
+ .file("src/lib.rs", "pub fn bar() -> i32 { 1 }")
|
||||
}).unwrap();
|
||||
|
||||
// Update the git database in the cache with the current state of the git
|
||||
@@ -887,7 +887,7 @@ test!(stale_cached_version {
|
||||
// Update the repo, and simulate someone else updating the lockfile and then
|
||||
// us pulling it down.
|
||||
File::create(&bar.root().join("src/lib.rs")).write_str(r#"
|
||||
- pub fn bar() -> int { 1 + 0 }
|
||||
+ pub fn bar() -> i32 { 1 + 0 }
|
||||
"#).unwrap();
|
||||
let repo = git2::Repository::open(&bar.root()).unwrap();
|
||||
add(&repo);
|
||||
@@ -1090,7 +1090,7 @@ test!(git_build_cmd_freshness {
|
||||
build = "build.rs"
|
||||
"#)
|
||||
.file("build.rs", "fn main() {}")
|
||||
- .file("src/lib.rs", "pub fn bar() -> int { 1 }")
|
||||
+ .file("src/lib.rs", "pub fn bar() -> i32 { 1 }")
|
||||
.file(".gitignore", "
|
||||
src/bar.rs
|
||||
")
|
||||
@@ -1166,7 +1166,7 @@ test!(git_repo_changing_no_rebuild {
|
||||
version = "0.5.0"
|
||||
authors = ["wycats@example.com"]
|
||||
"#)
|
||||
- .file("src/lib.rs", "pub fn bar() -> int { 1 }")
|
||||
+ .file("src/lib.rs", "pub fn bar() -> i32 { 1 }")
|
||||
}).unwrap();
|
||||
|
||||
// Lock p1 to the first rev in the git repo
|
||||
@@ -1193,7 +1193,7 @@ test!(git_repo_changing_no_rebuild {
|
||||
|
||||
// Make a commit to lock p2 to a different rev
|
||||
File::create(&bar.root().join("src/lib.rs")).write_str(r#"
|
||||
- pub fn bar() -> int { 2 }
|
||||
+ pub fn bar() -> i32 { 2 }
|
||||
"#).unwrap();
|
||||
let repo = git2::Repository::open(&bar.root()).unwrap();
|
||||
add(&repo);
|
||||
@@ -1256,7 +1256,7 @@ test!(git_dep_build_cmd {
|
||||
name = "bar"
|
||||
"#)
|
||||
.file("bar/src/bar.rs.in", r#"
|
||||
- pub fn gimme() -> int { 0 }
|
||||
+ pub fn gimme() -> i32 { 0 }
|
||||
"#)
|
||||
.file("bar/build.rs", r#"
|
||||
use std::old_io::fs;
|
||||
@@ -1278,7 +1278,7 @@ test!(git_dep_build_cmd {
|
||||
|
||||
// Touching bar.rs.in should cause the `build` command to run again.
|
||||
let mut file = fs::File::create(&p.root().join("bar/src/bar.rs.in")).unwrap();
|
||||
- file.write_str(r#"pub fn gimme() -> int { 1 }"#).unwrap();
|
||||
+ file.write_str(r#"pub fn gimme() -> i32 { 1 }"#).unwrap();
|
||||
drop(file);
|
||||
|
||||
assert_that(p.process(cargo_dir().join("cargo")).arg("build"),
|
||||
@@ -1297,7 +1297,7 @@ test!(fetch_downloads {
|
||||
version = "0.5.0"
|
||||
authors = ["wycats@example.com"]
|
||||
"#)
|
||||
- .file("src/lib.rs", "pub fn bar() -> int { 1 }")
|
||||
+ .file("src/lib.rs", "pub fn bar() -> i32 { 1 }")
|
||||
}).unwrap();
|
||||
|
||||
let p = project("p1")
|
||||
@@ -1569,7 +1569,7 @@ test!(update_one_source_updates_all_packages_in_that_git_source {
|
||||
|
||||
// Just be sure to change a file
|
||||
File::create(&dep.root().join("src/lib.rs")).write_str(r#"
|
||||
- pub fn bar() -> int { 2 }
|
||||
+ pub fn bar() -> i32 { 2 }
|
||||
"#).unwrap();
|
||||
add(&repo);
|
||||
commit(&repo);
|
||||
diff --git a/tests/test_cargo_compile_plugins.rs b/tests/test_cargo_compile_plugins.rs
|
||||
index 853038f..ca44a4d 100644
|
||||
--- a/tests/test_cargo_compile_plugins.rs
|
||||
+++ b/tests/test_cargo_compile_plugins.rs
|
||||
@@ -23,14 +23,14 @@ test!(plugin_to_the_max {
|
||||
"#)
|
||||
.file("src/main.rs", r#"
|
||||
#![feature(plugin)]
|
||||
- #[plugin] #[no_link] extern crate bar;
|
||||
+ #![plugin(bar)]
|
||||
extern crate foo_lib;
|
||||
|
||||
fn main() { foo_lib::foo(); }
|
||||
"#)
|
||||
.file("src/foo_lib.rs", r#"
|
||||
#![feature(plugin)]
|
||||
- #[plugin] #[no_link] extern crate bar;
|
||||
+ #![plugin(bar)]
|
||||
|
||||
pub fn foo() {}
|
||||
"#);
|
||||
@@ -122,7 +122,7 @@ test!(plugin_with_dynamic_native_dependency {
|
||||
"#)
|
||||
.file("src/main.rs", r#"
|
||||
#![feature(plugin)]
|
||||
- #[plugin] #[no_link] extern crate bar;
|
||||
+ #![plugin(bar)]
|
||||
|
||||
fn main() {}
|
||||
"#)
|
||||
diff --git a/tests/test_cargo_cross_compile.rs b/tests/test_cargo_cross_compile.rs
|
||||
index a2d53e0..cf6b9a5 100644
|
||||
--- a/tests/test_cargo_cross_compile.rs
|
||||
+++ b/tests/test_cargo_cross_compile.rs
|
||||
@@ -12,7 +12,7 @@ fn setup() {
|
||||
|
||||
fn disabled() -> bool {
|
||||
// First, disable if ./configure requested so
|
||||
- match env::var_string("CFG_DISABLE_CROSS_TESTS") {
|
||||
+ match env::var("CFG_DISABLE_CROSS_TESTS") {
|
||||
Ok(ref s) if s.as_slice() == "1" => return true,
|
||||
_ => {}
|
||||
}
|
||||
@@ -44,7 +44,7 @@ test!(simple_cross {
|
||||
"#)
|
||||
.file("build.rs", format!(r#"
|
||||
fn main() {{
|
||||
- assert_eq!(std::env::var_string("TARGET").unwrap().as_slice(), "{}");
|
||||
+ assert_eq!(std::env::var("TARGET").unwrap().as_slice(), "{}");
|
||||
}}
|
||||
"#, alternate()).as_slice())
|
||||
.file("src/main.rs", r#"
|
||||
@@ -119,8 +119,7 @@ test!(plugin_deps {
|
||||
"#)
|
||||
.file("src/main.rs", r#"
|
||||
#![feature(plugin)]
|
||||
- #[plugin] #[no_link]
|
||||
- extern crate bar;
|
||||
+ #![plugin(bar)]
|
||||
extern crate baz;
|
||||
fn main() {
|
||||
assert_eq!(bar!(), baz::baz());
|
||||
@@ -155,7 +154,7 @@ test!(plugin_deps {
|
||||
|
||||
fn expand_bar(cx: &mut ExtCtxt, sp: Span, tts: &[TokenTree])
|
||||
-> Box<MacResult + 'static> {
|
||||
- MacExpr::new(quote_expr!(cx, 1i))
|
||||
+ MacExpr::new(quote_expr!(cx, 1))
|
||||
}
|
||||
"#);
|
||||
let baz = project("baz")
|
||||
@@ -165,7 +164,7 @@ test!(plugin_deps {
|
||||
version = "0.0.1"
|
||||
authors = []
|
||||
"#)
|
||||
- .file("src/lib.rs", "pub fn baz() -> int { 1 }");
|
||||
+ .file("src/lib.rs", "pub fn baz() -> i32 { 1 }");
|
||||
bar.build();
|
||||
baz.build();
|
||||
|
||||
@@ -197,8 +196,7 @@ test!(plugin_to_the_max {
|
||||
"#)
|
||||
.file("src/main.rs", r#"
|
||||
#![feature(plugin)]
|
||||
- #[plugin] #[no_link]
|
||||
- extern crate bar;
|
||||
+ #![plugin(bar)]
|
||||
extern crate baz;
|
||||
fn main() {
|
||||
assert_eq!(bar!(), baz::baz());
|
||||
@@ -320,7 +318,7 @@ test!(plugin_with_extra_dylib_dep {
|
||||
"#)
|
||||
.file("src/main.rs", r#"
|
||||
#![feature(plugin)]
|
||||
- #[plugin] #[no_link] extern crate bar;
|
||||
+ #![plugin(bar)]
|
||||
|
||||
fn main() {}
|
||||
"#);
|
||||
@@ -362,7 +360,7 @@ test!(plugin_with_extra_dylib_dep {
|
||||
name = "baz"
|
||||
crate_type = ["dylib"]
|
||||
"#)
|
||||
- .file("src/lib.rs", "pub fn baz() -> int { 1 }");
|
||||
+ .file("src/lib.rs", "pub fn baz() -> i32 { 1 }");
|
||||
bar.build();
|
||||
baz.build();
|
||||
|
||||
@@ -464,8 +462,8 @@ test!(cross_with_a_build_script {
|
||||
.file("build.rs", format!(r#"
|
||||
use std::env;
|
||||
fn main() {{
|
||||
- assert_eq!(env::var_string("TARGET").unwrap().as_slice(), "{0}");
|
||||
- let mut path = Path::new(env::var_string("OUT_DIR").unwrap());
|
||||
+ assert_eq!(env::var("TARGET").unwrap().as_slice(), "{0}");
|
||||
+ let mut path = Path::new(env::var("OUT_DIR").unwrap());
|
||||
assert_eq!(path.filename().unwrap(), b"out");
|
||||
path.pop();
|
||||
assert!(path.filename().unwrap().starts_with(b"foo-"));
|
||||
@@ -530,7 +528,7 @@ test!(build_script_needed_for_host_and_target {
|
||||
.file("d1/build.rs", r#"
|
||||
use std::env;
|
||||
fn main() {
|
||||
- let target = env::var_string("TARGET").unwrap();
|
||||
+ let target = env::var("TARGET").unwrap();
|
||||
println!("cargo:rustc-flags=-L /path/to/{}", target);
|
||||
}
|
||||
"#)
|
||||
@@ -643,9 +641,9 @@ test!(build_script_only_host {
|
||||
use std::env;
|
||||
|
||||
fn main() {
|
||||
- assert!(env::var_string("OUT_DIR").unwrap()
|
||||
+ assert!(env::var("OUT_DIR").unwrap()
|
||||
.contains("target/build/d1-"),
|
||||
- "bad: {:?}", env::var_string("OUT_DIR"));
|
||||
+ "bad: {:?}", env::var("OUT_DIR"));
|
||||
}
|
||||
"#);
|
||||
|
||||
diff --git a/tests/test_cargo_profiles.rs b/tests/test_cargo_profiles.rs
|
||||
index b71eadb..827393f 100644
|
||||
--- a/tests/test_cargo_profiles.rs
|
||||
+++ b/tests/test_cargo_profiles.rs
|
||||
@@ -1,4 +1,4 @@
|
||||
-use std::os;
|
||||
+use std::env;
|
||||
use std::old_path;
|
||||
|
||||
use support::{project, execs};
|
||||
@@ -110,6 +110,6 @@ test!(top_level_overrides_deps {
|
||||
dir = p.root().display(),
|
||||
url = p.url(),
|
||||
sep = old_path::SEP,
|
||||
- prefix = os::consts::DLL_PREFIX,
|
||||
- suffix = os::consts::DLL_SUFFIX).as_slice()));
|
||||
+ prefix = env::consts::DLL_PREFIX,
|
||||
+ suffix = env::consts::DLL_SUFFIX).as_slice()));
|
||||
});
|
||||
--
|
||||
2.3.0
|
||||
|
||||
@@ -1,138 +0,0 @@
|
||||
From f32fa685610399739a2584ae02653753a372d6ed Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Fri, 13 Feb 2015 15:24:16 -0500
|
||||
Subject: [PATCH] update pkg versions
|
||||
|
||||
---
|
||||
Cargo.lock | 32 ++++++++++++++++----------------
|
||||
1 file changed, 16 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/Cargo.lock b/Cargo.lock
|
||||
index 14dd876..629585c 100644
|
||||
--- a/Cargo.lock
|
||||
+++ b/Cargo.lock
|
||||
@@ -4,7 +4,7 @@ version = "0.1.0"
|
||||
dependencies = [
|
||||
"advapi32-sys 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"curl 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "docopt 0.6.36 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "docopt 0.6.37 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"env_logger 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"flate2 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"git2 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@@ -18,8 +18,8 @@ dependencies = [
|
||||
"semver 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"tar 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"term 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "time 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "toml 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "time 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "toml 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"url 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"winapi 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
@@ -44,7 +44,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"curl-sys 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "openssl-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "openssl-sys 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"url 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
@@ -55,13 +55,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libc 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libz-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "openssl-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "openssl-sys 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"pkg-config 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "docopt"
|
||||
-version = "0.6.36"
|
||||
+version = "0.6.37"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"regex 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@@ -97,7 +97,7 @@ version = "0.1.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"bitflags 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "libgit2-sys 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "libgit2-sys 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"url 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
@@ -136,13 +136,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "libgit2-sys"
|
||||
-version = "0.1.12"
|
||||
+version = "0.1.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libssh2-sys 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libz-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "openssl-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "pkg-config 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "openssl-sys 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "pkg-config 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -159,7 +159,7 @@ version = "0.1.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"libz-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "openssl-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "openssl-sys 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"pkg-config 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
@@ -192,12 +192,12 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "openssl-sys"
|
||||
-version = "0.3.3"
|
||||
+version = "0.3.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"gcc 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libressl-pnacl-sys 2.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
- "pkg-config 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
+ "pkg-config 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -207,7 +207,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
name = "pkg-config"
|
||||
-version = "0.2.0"
|
||||
+version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
|
||||
[[package]]
|
||||
@@ -255,7 +255,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "time"
|
||||
-version = "0.1.16"
|
||||
+version = "0.1.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"gcc 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
@@ -264,7 +264,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "toml"
|
||||
-version = "0.1.16"
|
||||
+version = "0.1.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"rustc-serialize 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
--
|
||||
2.3.0
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
From 797df37f3a9b377db475f3d2eae09fcbb90d2e4f Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 25 Nov 2014 11:50:28 -0500
|
||||
Subject: [PATCH 1/2] curl-sys: avoid explicitly linking in openssl. If it is
|
||||
needed, pkgconfig will pull it in
|
||||
|
||||
---
|
||||
curl-sys/Cargo.toml | 19 -------------------
|
||||
curl-sys/lib.rs | 2 --
|
||||
2 files changed, 21 deletions(-)
|
||||
|
||||
diff --git a/curl-sys/Cargo.toml b/curl-sys/Cargo.toml
|
||||
index 6e99e16..50d1101 100644
|
||||
--- a/curl-sys/Cargo.toml
|
||||
+++ b/curl-sys/Cargo.toml
|
||||
@@ -18,23 +18,4 @@ path = "lib.rs"
|
||||
[dependencies]
|
||||
libz-sys = "0.1.0"
|
||||
libc = "0.1"
|
||||
-
|
||||
-# Unix platforms use OpenSSL for now to provide SSL functionality
|
||||
-[target.i686-apple-darwin.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-apple-darwin.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.i686-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.arm-unknown-linux-gnueabihf.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.aarch64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.i686-unknown-freebsd.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-freebsd.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-bitrig.dependencies]
|
||||
openssl-sys = "0.6.0"
|
||||
diff --git a/curl-sys/lib.rs b/curl-sys/lib.rs
|
||||
index 7cae355..a2d58ea 100644
|
||||
--- a/curl-sys/lib.rs
|
||||
+++ b/curl-sys/lib.rs
|
||||
@@ -1,8 +1,6 @@
|
||||
#![allow(non_camel_case_types, raw_pointer_derive)]
|
||||
|
||||
extern crate libc;
|
||||
-#[cfg(not(target_env = "msvc"))] extern crate libz_sys;
|
||||
-#[cfg(unix)] extern crate openssl_sys;
|
||||
|
||||
use libc::{c_void, c_int, c_char, c_uint, c_long};
|
||||
|
||||
--
|
||||
2.4.3
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
From 625b2491eca17e78fdec374f8e83ec00fcca5fc8 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 25 Nov 2014 12:26:48 -0500
|
||||
Subject: [PATCH 2/2] remove per-triple deps on openssl-sys
|
||||
|
||||
---
|
||||
Cargo.toml | 21 +--------------------
|
||||
1 file changed, 1 insertion(+), 20 deletions(-)
|
||||
|
||||
diff --git a/Cargo.toml b/Cargo.toml
|
||||
index 16b72c3..68235ae 100644
|
||||
--- a/Cargo.toml
|
||||
+++ b/Cargo.toml
|
||||
@@ -12,30 +12,11 @@ url = "0.2.0"
|
||||
log = "0.3.0"
|
||||
libc = "0.1"
|
||||
curl-sys = { path = "curl-sys", version = "0.1.0" }
|
||||
+openssl-sys = "0.6.0"
|
||||
|
||||
[dev-dependencies]
|
||||
env_logger = "0.3.0"
|
||||
|
||||
-# Unix platforms use OpenSSL for now to provide SSL functionality
|
||||
-[target.i686-apple-darwin.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-apple-darwin.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.i686-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.arm-unknown-linux-gnueabihf.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.aarch64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.i686-unknown-freebsd.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-freebsd.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-bitrig.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-
|
||||
[[test]]
|
||||
|
||||
name = "test"
|
||||
--
|
||||
2.4.3
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
From aa1bea8387b6108ca2cd60ad71e8d354d8790d62 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Mon, 10 Nov 2014 15:06:29 -0500
|
||||
Subject: [PATCH] Add generic openssl-sys dep
|
||||
|
||||
---
|
||||
libgit2-sys/Cargo.toml | 36 ++----------------------------------
|
||||
1 file changed, 2 insertions(+), 34 deletions(-)
|
||||
|
||||
diff --git a/libgit2-sys/Cargo.toml b/libgit2-sys/Cargo.toml
|
||||
index 9c0aa6c..d95d07e 100644
|
||||
--- a/libgit2-sys/Cargo.toml
|
||||
+++ b/libgit2-sys/Cargo.toml
|
||||
@@ -16,40 +16,8 @@ description = "Native bindings to the libgit2 library"
|
||||
[dependencies]
|
||||
libssh2-sys = "0.1.0"
|
||||
libc = "0.1"
|
||||
+openssl-sys = "0.6.0"
|
||||
+libz-sys = "0.1.0"
|
||||
|
||||
[build-dependencies]
|
||||
pkg-config = "0.3"
|
||||
-
|
||||
-[target.i686-apple-darwin.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
-[target.x86_64-apple-darwin.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
-[target.i686-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
-[target.x86_64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
-[target.aarch64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
-[target.arm-unknown-linux-gnueabihf.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
-[target.i686-unknown-freebsd.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
-[target.x86_64-unknown-freebsd.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
-[target.x86_64-unknown-bitrig.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
-[target.x86_64-unknown-openbsd.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
-[target.x86_64-unknown-dragonfly.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-libz-sys = "0.1.0"
|
||||
--
|
||||
2.4.3
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
From a1ba6ce6f54e3b2b0c3e05043a015bc845d24025 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 26 May 2015 22:10:18 -0400
|
||||
Subject: [PATCH 2/3] libgit2-sys: avoid the build script, it is a disaster
|
||||
|
||||
---
|
||||
libgit2-sys/build.rs | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/libgit2-sys/build.rs b/libgit2-sys/build.rs
|
||||
index d624a63..9b8b98c 100644
|
||||
--- a/libgit2-sys/build.rs
|
||||
+++ b/libgit2-sys/build.rs
|
||||
@@ -15,6 +15,9 @@ macro_rules! t {
|
||||
}
|
||||
|
||||
fn main() {
|
||||
+ pkg_config::find_library("libgit2").unwrap();
|
||||
+ return;
|
||||
+
|
||||
register_dep("SSH2");
|
||||
register_dep("OPENSSL");
|
||||
|
||||
--
|
||||
2.4.3
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
From ce3e8e83be261ed7cf0a62dc8e66361588329ba2 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 26 May 2015 22:06:57 -0400
|
||||
Subject: [PATCH 3/3] bump libssh2 to fix build with nightly
|
||||
|
||||
---
|
||||
libgit2-sys/Cargo.toml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libgit2-sys/Cargo.toml b/libgit2-sys/Cargo.toml
|
||||
index d95d07e..992ea7a 100644
|
||||
--- a/libgit2-sys/Cargo.toml
|
||||
+++ b/libgit2-sys/Cargo.toml
|
||||
@@ -14,7 +14,7 @@ description = "Native bindings to the libgit2 library"
|
||||
path = "lib.rs"
|
||||
|
||||
[dependencies]
|
||||
-libssh2-sys = "0.1.0"
|
||||
+libssh2-sys = "0.1.23"
|
||||
libc = "0.1"
|
||||
openssl-sys = "0.6.0"
|
||||
libz-sys = "0.1.0"
|
||||
--
|
||||
2.4.3
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
From b45c6ed5524690603a1888dff21556b7f42db474 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Mon, 1 Dec 2014 10:51:31 -0500
|
||||
Subject: [PATCH] Unconditionally depend on openssl-sys
|
||||
|
||||
---
|
||||
libssh2-sys/Cargo.toml | 22 ----------------------
|
||||
1 file changed, 22 deletions(-)
|
||||
|
||||
diff --git a/libssh2-sys/Cargo.toml b/libssh2-sys/Cargo.toml
|
||||
index 501bba5..db8d21a 100644
|
||||
--- a/libssh2-sys/Cargo.toml
|
||||
+++ b/libssh2-sys/Cargo.toml
|
||||
@@ -15,28 +15,6 @@ path = "lib.rs"
|
||||
[dependencies]
|
||||
libz-sys = "0.1.0"
|
||||
libc = "0.1"
|
||||
-
|
||||
-[target.i686-apple-darwin.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-apple-darwin.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.i686-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.aarch64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.arm-unknown-linux-gnueabihf.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.i686-unknown-freebsd.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-freebsd.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-dragonfly.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-bitrig.dependencies]
|
||||
-openssl-sys = "0.6.0"
|
||||
-[target.x86_64-unknown-openbsd.dependencies]
|
||||
openssl-sys = "0.6.0"
|
||||
|
||||
[build-dependencies]
|
||||
--
|
||||
2.4.3
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
From 89bd1de30bad2e6bee062f287c454e4a87e11056 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Sat, 15 Nov 2014 20:12:48 -0500
|
||||
Subject: [PATCH 1/8] platform.mk: avoid choking on i586
|
||||
|
||||
---
|
||||
mk/platform.mk | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/mk/platform.mk b/mk/platform.mk
|
||||
index 9545a1f..80fb0bb 100644
|
||||
--- a/mk/platform.mk
|
||||
+++ b/mk/platform.mk
|
||||
@@ -14,7 +14,9 @@
|
||||
# would create a variable HOST_i686-darwin-macos with the value
|
||||
# i386.
|
||||
define DEF_HOST_VAR
|
||||
- HOST_$(1) = $(subst i686,i386,$(word 1,$(subst -, ,$(1))))
|
||||
+ HOST_$(1) = $(subst i686,i386,\
|
||||
+ $(subst i586,i386,\
|
||||
+ $(word 1,$(subst -, ,$(1)))))
|
||||
endef
|
||||
$(foreach t,$(CFG_TARGET),$(eval $(call DEF_HOST_VAR,$(t))))
|
||||
$(foreach t,$(CFG_TARGET),$(info cfg: host for $(t) is $(HOST_$(t))))
|
||||
--
|
||||
2.4.3
|
||||
|
||||
@@ -1,109 +0,0 @@
|
||||
From 6ed2ad4e243f31e5d9e9fb49e2ce16d2920884c5 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 2/8] 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 | 14 +++++++++++---
|
||||
3 files changed, 20 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
|
||||
index b999929..3e9743e 100644
|
||||
--- a/src/librustc/session/config.rs
|
||||
+++ b/src/librustc/session/config.rs
|
||||
@@ -37,7 +37,7 @@ use getopts;
|
||||
use std::collections::HashMap;
|
||||
use std::env;
|
||||
use std::fmt;
|
||||
-use std::path::PathBuf;
|
||||
+use std::path::{Path, PathBuf};
|
||||
|
||||
use llvm;
|
||||
|
||||
@@ -665,8 +665,8 @@ pub fn build_configuration(sess: &Session) -> ast::CrateConfig {
|
||||
v
|
||||
}
|
||||
|
||||
-pub fn build_target_config(opts: &Options, sp: &SpanHandler) -> Config {
|
||||
- let target = match Target::search(&opts.target_triple) {
|
||||
+pub fn build_target_config(sysroot: &Path, opts: &Options, sp: &SpanHandler) -> Config {
|
||||
+ let target = match Target::search(sysroot, &opts.target_triple[..]) {
|
||||
Ok(t) => t,
|
||||
Err(e) => {
|
||||
sp.handler().fatal(&format!("Error loading target specification: {}", e));
|
||||
diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs
|
||||
index 7a8ce1b..cb85d2e 100644
|
||||
--- a/src/librustc/session/mod.rs
|
||||
+++ b/src/librustc/session/mod.rs
|
||||
@@ -370,14 +370,18 @@ pub fn build_session_(sopts: config::Options,
|
||||
local_crate_source_file: Option<PathBuf>,
|
||||
span_diagnostic: diagnostic::SpanHandler)
|
||||
-> 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) => {
|
||||
span_diagnostic.handler()
|
||||
.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::new_parse_sess_special_handler(span_diagnostic);
|
||||
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 c5f1882..1888fbd 100644
|
||||
--- a/src/librustc_back/target/mod.rs
|
||||
+++ b/src/librustc_back/target/mod.rs
|
||||
@@ -49,6 +49,8 @@ use serialize::json::Json;
|
||||
use std::default::Default;
|
||||
use std::io::prelude::*;
|
||||
use syntax::{diagnostic, abi};
|
||||
+use std::borrow::ToOwned;
|
||||
+use std::path::Path;
|
||||
|
||||
mod android_base;
|
||||
mod apple_base;
|
||||
@@ -298,12 +300,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 = try!(File::open(path).map_err(|e| e.to_string()));
|
||||
@@ -390,9 +393,14 @@ impl Target {
|
||||
let target_path = env::var_os("RUST_TARGET_PATH")
|
||||
.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.4.3
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
From 0e78aab532c652b6ee8f8929d7d25de5d7c0d2e9 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 3/8] 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 | 19 +++++++++++--------
|
||||
1 file changed, 11 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/mk/main.mk b/mk/main.mk
|
||||
index 4aa8d7f..af2ddf0 100644
|
||||
--- a/mk/main.mk
|
||||
+++ b/mk/main.mk
|
||||
@@ -370,21 +370,22 @@ define SREQ
|
||||
# Destinations of artifacts for the host compiler
|
||||
HROOT$(1)_H_$(3) = $(3)/stage$(1)
|
||||
HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
|
||||
-ifeq ($$(CFG_WINDOWSY_$(3)),1)
|
||||
-HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)
|
||||
-else
|
||||
-ifeq ($(1),0)
|
||||
-HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/lib
|
||||
-else
|
||||
HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)
|
||||
-endif
|
||||
-endif
|
||||
|
||||
# Destinations of artifacts for target architectures
|
||||
TROOT$(1)_T_$(2)_H_$(3) = $$(HLIB$(1)_H_$(3))/rustlib/$(2)
|
||||
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))
|
||||
@@ -498,6 +499,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))
|
||||
|
||||
PERF_STAGE$(1)_T_$(2)_H_$(3) := \
|
||||
@@ -506,6 +508,7 @@ PERF_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.4.3
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
From 54abdace19bc6a855ae122bd16a5eb82d2f223ee 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 4/8] 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 d9c66e2..585206d 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.4.3
|
||||
|
||||
@@ -1,362 +0,0 @@
|
||||
From 2fa205f59bd2ab4f9a2356073b18b8a8f0ee6787 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Mon, 24 Nov 2014 13:10:15 -0500
|
||||
Subject: [PATCH 5/8] configure: support --bindir, and extend libdir to
|
||||
non-blessed dirs
|
||||
|
||||
Adds --bindir, and:
|
||||
|
||||
Allows --bindir and --libdir to have multiple elements in their paths
|
||||
relative to sysroot, and allows libdir to end in an arbitrary directory
|
||||
(previously it was limited to lib, lib32, and lib64).
|
||||
|
||||
Note that this assumes absolute paths start with '/', which may break
|
||||
windows platforms
|
||||
---
|
||||
configure | 50 ++++++++++++++++------
|
||||
mk/host.mk | 6 ++-
|
||||
mk/main.mk | 11 +++++
|
||||
mk/perf.mk | 4 +-
|
||||
mk/prepare.mk | 4 +-
|
||||
src/librustc/metadata/filesearch.rs | 84 ++++++++++++++-----------------------
|
||||
src/librustc_trans/back/link.rs | 3 +-
|
||||
7 files changed, 91 insertions(+), 71 deletions(-)
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 5e02d07..287d066 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -323,6 +323,31 @@ envopt() {
|
||||
fi
|
||||
}
|
||||
|
||||
+abspath () {
|
||||
+ case "$1" in
|
||||
+ /*) echo "$1" ;;
|
||||
+ *) echo "$PWD/$1" ;;
|
||||
+ esac
|
||||
+}
|
||||
+
|
||||
+relpath () {
|
||||
+ local src=$(abspath "$1")
|
||||
+ local dst=$(abspath "$2")
|
||||
+ local common=$src
|
||||
+ local result=
|
||||
+
|
||||
+ # Start by checking if the whole src is common, then strip off pack
|
||||
+ # components until we find the common element.
|
||||
+ while [ "${dst#"$common"}" = "$dst" ]; do
|
||||
+ common=$(dirname "$common")
|
||||
+ result="../$result"
|
||||
+ done
|
||||
+
|
||||
+ local down="${dst#"$common"}"
|
||||
+ result="${result}${down#/}"
|
||||
+ echo "$result"
|
||||
+}
|
||||
+
|
||||
to_llvm_triple() {
|
||||
case $1 in
|
||||
i686-w64-mingw32) echo i686-pc-windows-gnu ;;
|
||||
@@ -607,6 +632,8 @@ putvar CFG_BUILD # Yes, this creates a duplicate entry, but the last one wins.
|
||||
CFG_HOST=$(to_llvm_triple $CFG_HOST)
|
||||
CFG_TARGET=$(to_llvm_triple $CFG_TARGET)
|
||||
|
||||
+CFG_LIBDIR_RELATIVE=lib
|
||||
+
|
||||
# On windows we just store the libraries in the bin directory because
|
||||
# there's no rpath. This is where the build system itself puts libraries;
|
||||
# --libdir is used to configure the installation directory.
|
||||
@@ -614,23 +641,21 @@ CFG_TARGET=$(to_llvm_triple $CFG_TARGET)
|
||||
if [ "$CFG_OSTYPE" = "pc-windows-gnu" ]
|
||||
then
|
||||
CFG_LIBDIR_RELATIVE=bin
|
||||
-else
|
||||
- CFG_LIBDIR_RELATIVE=lib
|
||||
fi
|
||||
|
||||
-valopt libdir "${CFG_PREFIX}/${CFG_LIBDIR_RELATIVE}" "install libraries (do not set it on windows platform)"
|
||||
+valopt libdir "${CFG_PREFIX}/${CFG_LIBDIR_RELATIVE}" "install libraries"
|
||||
|
||||
-case "$CFG_LIBDIR" in
|
||||
- "$CFG_PREFIX"/*) CAT_INC=2;;
|
||||
- "$CFG_PREFIX"*) CAT_INC=1;;
|
||||
- *)
|
||||
- err "libdir must begin with the prefix. Use --prefix to set it accordingly.";;
|
||||
-esac
|
||||
+CFG_BINDIR_RELATIVE=bin
|
||||
+valopt bindir "${CFG_PREFIX}/${CFG_BINDIR_RELATIVE}" "install binaries"
|
||||
|
||||
-CFG_LIBDIR_RELATIVE=`echo ${CFG_LIBDIR} | cut -c$((${#CFG_PREFIX}+${CAT_INC}))-`
|
||||
+# Determine libdir and bindir relative to prefix
|
||||
+step_msg "calculating relative paths to prefix = ${CFG_PREFIX}"
|
||||
+CFG_BINDIR_RELATIVE=$(relpath "${CFG_PREFIX}" "${CFG_BINDIR}")
|
||||
+CFG_LIBDIR_RELATIVE=$(relpath "${CFG_PREFIX}" "${CFG_LIBDIR}")
|
||||
|
||||
-if [ "$CFG_OSTYPE" = "pc-windows-gnu" ] && [ "$CFG_LIBDIR_RELATIVE" != "bin" ]; then
|
||||
- err "libdir on windows should be set to 'bin'"
|
||||
+if [ "$CFG_OSTYPE" = "pc-windows-gnu" ] \
|
||||
+ && [ "$CFG_LIBDIR_RELATIVE" != "$CFG_BINDIR_RELATIVE" ]; then
|
||||
+ err "Windows builds currently require that LIBDIR == BINDIR (we have libdir{$CFG_LIBDIR_RELATIVE} != bindir{$CFG_BINDIR_RELATIVE} )"
|
||||
fi
|
||||
|
||||
if [ $HELP -eq 1 ]
|
||||
@@ -1475,6 +1500,7 @@ putvar CFG_PREFIX
|
||||
putvar CFG_HOST
|
||||
putvar CFG_TARGET
|
||||
putvar CFG_LIBDIR_RELATIVE
|
||||
+putvar CFG_BINDIR_RELATIVE
|
||||
putvar CFG_DISABLE_MANAGE_SUBMODULES
|
||||
putvar CFG_ANDROID_CROSS_PATH
|
||||
putvar CFG_MANDIR
|
||||
diff --git a/mk/host.mk b/mk/host.mk
|
||||
index 59a0095..b8e8345 100644
|
||||
--- a/mk/host.mk
|
||||
+++ b/mk/host.mk
|
||||
@@ -59,9 +59,13 @@ endef
|
||||
# $(4) - the host triple (same as $(3))
|
||||
define CP_HOST_STAGE_N
|
||||
|
||||
-ifneq ($(CFG_LIBDIR_RELATIVE),bin)
|
||||
$$(HLIB$(2)_H_$(4))/:
|
||||
@mkdir -p $$@
|
||||
+
|
||||
+# Avoid redefinition warnings if libdir==bindir
|
||||
+ifneq ($(HBIN$(2)_H_$(4)),$(HLIB$(2)_H_$(4)))
|
||||
+$$(HBIN$(2)_H_$(4))/:
|
||||
+ @mkdir -p $$@
|
||||
endif
|
||||
|
||||
endef
|
||||
diff --git a/mk/main.mk b/mk/main.mk
|
||||
index af2ddf0..15a59be 100644
|
||||
--- a/mk/main.mk
|
||||
+++ b/mk/main.mk
|
||||
@@ -339,7 +339,9 @@ export CFG_RELEASE_CHANNEL
|
||||
export CFG_LLVM_ROOT
|
||||
export CFG_PREFIX
|
||||
export CFG_LIBDIR
|
||||
+export CFG_BINDIR
|
||||
export CFG_LIBDIR_RELATIVE
|
||||
+export CFG_BINDIR_RELATIVE
|
||||
export CFG_DISABLE_INJECT_STD_VERSION
|
||||
ifdef CFG_DISABLE_UNSTABLE_FEATURES
|
||||
CFG_INFO := $(info cfg: disabling unstable features (CFG_DISABLE_UNSTABLE_FEATURES))
|
||||
@@ -369,7 +371,16 @@ define SREQ
|
||||
|
||||
# Destinations of artifacts for the host compiler
|
||||
HROOT$(1)_H_$(3) = $(3)/stage$(1)
|
||||
+
|
||||
+ifeq ($(1)-$(3),0-$$(CFG_BUILD))
|
||||
+# stage0 relative paths are fixed so we can bootstrap from snapshots
|
||||
+# (downloaded snapshots drop their rustc in HROOT/bin)
|
||||
+# libdir discrepancy is worked around with RUSTFLAGS below.
|
||||
HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
|
||||
+else
|
||||
+HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_BINDIR_RELATIVE)
|
||||
+endif
|
||||
+
|
||||
HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)
|
||||
|
||||
# Destinations of artifacts for target architectures
|
||||
diff --git a/mk/perf.mk b/mk/perf.mk
|
||||
index 16cbaab..f8a354c 100644
|
||||
--- a/mk/perf.mk
|
||||
+++ b/mk/perf.mk
|
||||
@@ -10,13 +10,13 @@
|
||||
|
||||
|
||||
ifdef CFG_PERF_TOOL
|
||||
-rustc-perf$(X): $(CFG_BUILD)/stage2/bin/rustc$(X_$(CFG_BUILD))
|
||||
+rustc-perf$(X): $(CFG_BUILD)/stage2/$(CFG_BINDIR_RELATIVE)/rustc$(X_$(CFG_BUILD))
|
||||
@$(call E, perf compile: $@)
|
||||
$(PERF_STAGE2_T_$(CFG_BUILD)_H_$(CFG_BUILD)) \
|
||||
-o $@ $(COMPILER_CRATE) >rustc-perf.err 2>&1
|
||||
$(Q)rm -f $(LIBRUSTC_GLOB)
|
||||
else
|
||||
-rustc-perf$(X): $(CFG_BUILD)/stage2/bin/rustc$(X_$(CFG_BUILD))
|
||||
+rustc-perf$(X): $(CFG_BUILD)/stage2/$(CFG_BINDIR_RELATIVE)/rustc$(X_$(CFG_BUILD))
|
||||
$(Q)touch $@
|
||||
endif
|
||||
|
||||
diff --git a/mk/prepare.mk b/mk/prepare.mk
|
||||
index 1ae6a61..e463727 100644
|
||||
--- a/mk/prepare.mk
|
||||
+++ b/mk/prepare.mk
|
||||
@@ -168,10 +168,10 @@ INSTALL_DEBUGGER_SCRIPT_COMMANDS=$(if $(findstring windows,$(1)),\
|
||||
define DEF_PREPARE
|
||||
|
||||
prepare-base-$(1): PREPARE_SOURCE_DIR=$$(PREPARE_HOST)/stage$$(PREPARE_STAGE)
|
||||
-prepare-base-$(1): PREPARE_SOURCE_BIN_DIR=$$(PREPARE_SOURCE_DIR)/bin
|
||||
+prepare-base-$(1): PREPARE_SOURCE_BIN_DIR=$$(PREPARE_SOURCE_DIR)/$$(CFG_BINDIR_RELATIVE)
|
||||
prepare-base-$(1): PREPARE_SOURCE_LIB_DIR=$$(PREPARE_SOURCE_DIR)/$$(CFG_LIBDIR_RELATIVE)
|
||||
prepare-base-$(1): PREPARE_SOURCE_MAN_DIR=$$(S)/man
|
||||
-prepare-base-$(1): PREPARE_DEST_BIN_DIR=$$(PREPARE_DEST_DIR)/bin
|
||||
+prepare-base-$(1): PREPARE_DEST_BIN_DIR=$$(PREPARE_DEST_DIR)/$$(CFG_BINDIR_RELATIVE)
|
||||
prepare-base-$(1): PREPARE_DEST_LIB_DIR=$$(PREPARE_DEST_DIR)/$$(CFG_LIBDIR_RELATIVE)
|
||||
prepare-base-$(1): PREPARE_DEST_MAN_DIR=$$(PREPARE_DEST_DIR)/share/man/man1
|
||||
prepare-base-$(1): prepare-everything-$(1)
|
||||
diff --git a/src/librustc/metadata/filesearch.rs b/src/librustc/metadata/filesearch.rs
|
||||
index 311ab1c..1b03b1a 100644
|
||||
--- a/src/librustc/metadata/filesearch.rs
|
||||
+++ b/src/librustc/metadata/filesearch.rs
|
||||
@@ -68,8 +68,7 @@ impl<'a> FileSearch<'a> {
|
||||
if !found {
|
||||
let rustpath = rust_path();
|
||||
for path in &rustpath {
|
||||
- let tlib_path = make_rustpkg_lib_path(
|
||||
- self.sysroot, path, self.triple);
|
||||
+ let tlib_path = make_rustpkg_lib_path(path, self.triple);
|
||||
debug!("is {} in visited_dirs? {}", tlib_path.display(),
|
||||
visited_dirs.contains(&tlib_path));
|
||||
|
||||
@@ -96,7 +95,7 @@ impl<'a> FileSearch<'a> {
|
||||
where F: FnMut(&Path, PathKind) -> FileMatch
|
||||
{
|
||||
self.for_each_lib_search_path(|lib_search_path, kind| {
|
||||
- debug!("searching {}", lib_search_path.display());
|
||||
+ info!("searching {}", lib_search_path.display());
|
||||
match fs::read_dir(lib_search_path) {
|
||||
Ok(files) => {
|
||||
let files = files.filter_map(|p| p.ok().map(|s| s.path()))
|
||||
@@ -157,7 +156,7 @@ impl<'a> FileSearch<'a> {
|
||||
// Returns a list of directories where target-specific tool binaries are located.
|
||||
pub fn get_tools_search_paths(&self) -> Vec<PathBuf> {
|
||||
let mut p = PathBuf::from(self.sysroot);
|
||||
- p.push(&find_libdir(self.sysroot));
|
||||
+ p.push(libdir_str());
|
||||
p.push(&rustlibdir());
|
||||
p.push(&self.triple);
|
||||
p.push("bin");
|
||||
@@ -165,8 +164,8 @@ impl<'a> FileSearch<'a> {
|
||||
}
|
||||
}
|
||||
|
||||
-pub fn relative_target_lib_path(sysroot: &Path, target_triple: &str) -> PathBuf {
|
||||
- let mut p = PathBuf::from(&find_libdir(sysroot));
|
||||
+pub fn relative_target_lib_path(target_triple: &str) -> PathBuf {
|
||||
+ let mut p = PathBuf::from(&libdir_str());
|
||||
assert!(p.is_relative());
|
||||
p.push(&rustlibdir());
|
||||
p.push(target_triple);
|
||||
@@ -176,17 +175,28 @@ pub fn relative_target_lib_path(sysroot: &Path, target_triple: &str) -> PathBuf
|
||||
|
||||
fn make_target_lib_path(sysroot: &Path,
|
||||
target_triple: &str) -> PathBuf {
|
||||
- sysroot.join(&relative_target_lib_path(sysroot, target_triple))
|
||||
+ sysroot.join(&relative_target_lib_path(target_triple))
|
||||
}
|
||||
|
||||
-fn make_rustpkg_lib_path(sysroot: &Path,
|
||||
- dir: &Path,
|
||||
+fn make_rustpkg_lib_path(dir: &Path,
|
||||
triple: &str) -> PathBuf {
|
||||
- let mut p = dir.join(&find_libdir(sysroot));
|
||||
+ let mut p = dir.join(libdir_str());
|
||||
p.push(triple);
|
||||
p
|
||||
}
|
||||
|
||||
+pub fn bindir_relative_str() -> &'static str {
|
||||
+ env!("CFG_BINDIR_RELATIVE")
|
||||
+}
|
||||
+
|
||||
+pub fn bindir_relative_path() -> PathBuf {
|
||||
+ PathBuf::from(bindir_relative_str())
|
||||
+}
|
||||
+
|
||||
+pub fn libdir_str() -> &'static str {
|
||||
+ env!("CFG_LIBDIR_RELATIVE")
|
||||
+}
|
||||
+
|
||||
pub fn get_or_default_sysroot() -> PathBuf {
|
||||
// Follow symlinks. If the resolved path is relative, make it absolute.
|
||||
fn canonicalize(path: Option<PathBuf>) -> Option<PathBuf> {
|
||||
@@ -202,7 +212,18 @@ pub fn get_or_default_sysroot() -> PathBuf {
|
||||
}
|
||||
|
||||
match canonicalize(env::current_exe().ok()) {
|
||||
- Some(mut p) => { p.pop(); p.pop(); p }
|
||||
+ Some(mut p) => {
|
||||
+ // Remove the exe name
|
||||
+ p.pop();
|
||||
+ let mut rel = bindir_relative_path();
|
||||
+
|
||||
+ // Remove a number of elements equal to the number of elements in the bindir relative
|
||||
+ // path
|
||||
+ while rel.pop() {
|
||||
+ p.pop();
|
||||
+ }
|
||||
+ p
|
||||
+ }
|
||||
None => panic!("can't determine value for sysroot")
|
||||
}
|
||||
}
|
||||
@@ -257,47 +278,6 @@ pub fn rust_path() -> Vec<PathBuf> {
|
||||
env_rust_path
|
||||
}
|
||||
|
||||
-// The name of the directory rustc expects libraries to be located.
|
||||
-// On Unix should be "lib", on windows "bin"
|
||||
-#[cfg(unix)]
|
||||
-fn find_libdir(sysroot: &Path) -> String {
|
||||
- // FIXME: This is a quick hack to make the rustc binary able to locate
|
||||
- // Rust libraries in Linux environments where libraries might be installed
|
||||
- // to lib64/lib32. This would be more foolproof by basing the sysroot off
|
||||
- // of the directory where librustc is located, rather than where the rustc
|
||||
- // binary is.
|
||||
- //If --libdir is set during configuration to the value other than
|
||||
- // "lib" (i.e. non-default), this value is used (see issue #16552).
|
||||
-
|
||||
- match option_env!("CFG_LIBDIR_RELATIVE") {
|
||||
- Some(libdir) if libdir != "lib" => return libdir.to_string(),
|
||||
- _ => if sysroot.join(&primary_libdir_name()).join(&rustlibdir()).exists() {
|
||||
- return primary_libdir_name();
|
||||
- } else {
|
||||
- return secondary_libdir_name();
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- #[cfg(target_pointer_width = "64")]
|
||||
- fn primary_libdir_name() -> String {
|
||||
- "lib64".to_string()
|
||||
- }
|
||||
-
|
||||
- #[cfg(target_pointer_width = "32")]
|
||||
- fn primary_libdir_name() -> String {
|
||||
- "lib32".to_string()
|
||||
- }
|
||||
-
|
||||
- fn secondary_libdir_name() -> String {
|
||||
- "lib".to_string()
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-#[cfg(windows)]
|
||||
-fn find_libdir(_sysroot: &Path) -> String {
|
||||
- "bin".to_string()
|
||||
-}
|
||||
-
|
||||
// The name of rustc's own place to organize libraries.
|
||||
// Used to be "rustc", now the default is "rustlib"
|
||||
pub fn rustlibdir() -> String {
|
||||
diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs
|
||||
index 38ad909..2f2ba16 100644
|
||||
--- a/src/librustc_trans/back/link.rs
|
||||
+++ b/src/librustc_trans/back/link.rs
|
||||
@@ -1037,11 +1037,10 @@ fn link_args(cmd: &mut Command,
|
||||
// where extern libraries might live, based on the
|
||||
// addl_lib_search_paths
|
||||
if sess.opts.cg.rpath {
|
||||
- let sysroot = sess.sysroot();
|
||||
let target_triple = &sess.opts.target_triple;
|
||||
let mut get_install_prefix_lib_path = || {
|
||||
let install_prefix = option_env!("CFG_PREFIX").expect("CFG_PREFIX");
|
||||
- let tlib = filesearch::relative_target_lib_path(sysroot, target_triple);
|
||||
+ let tlib = filesearch::relative_target_lib_path(target_triple);
|
||||
let mut path = PathBuf::from(install_prefix);
|
||||
path.push(&tlib);
|
||||
|
||||
--
|
||||
2.4.3
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
From 5364ecd0cdf0bcc815d89180d525b4b60a47219e 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 6/8] 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 f2435b6..4261387 100644
|
||||
--- a/src/libstd/thread/local.rs
|
||||
+++ b/src/libstd/thread/local.rs
|
||||
@@ -397,7 +397,7 @@ mod imp {
|
||||
#[linkage = "extern_weak"]
|
||||
static __cxa_thread_atexit_impl: *const ();
|
||||
}
|
||||
- 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.4.3
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
From 378cc683eb8012dc847dc581b57fd10c84a37ae2 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 7/8] 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 | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/mk/install.mk b/mk/install.mk
|
||||
index cabc97a..273bb0e 100644
|
||||
--- a/mk/install.mk
|
||||
+++ b/mk/install.mk
|
||||
@@ -16,9 +16,9 @@ else
|
||||
$(Q)$(MAKE) prepare_install
|
||||
endif
|
||||
ifeq ($(CFG_DISABLE_DOCS),)
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)"
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths
|
||||
endif
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)"
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths
|
||||
# Remove tmp files because it's a decent amount of disk space
|
||||
$(Q)rm -R tmp/dist
|
||||
|
||||
@@ -32,9 +32,9 @@ else
|
||||
$(Q)$(MAKE) prepare_uninstall
|
||||
endif
|
||||
ifeq ($(CFG_DISABLE_DOCS),)
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)"
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths
|
||||
endif
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)"
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths
|
||||
# Remove tmp files because it's a decent amount of disk space
|
||||
$(Q)rm -R tmp/dist
|
||||
|
||||
--
|
||||
2.4.3
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
From 79db300ba81f7f8deccd1c2627cd5a25f11d4b82 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 26 May 2015 12:09:36 -0400
|
||||
Subject: [PATCH 8/8] install: disable ldconfig
|
||||
|
||||
---
|
||||
mk/install.mk | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/mk/install.mk b/mk/install.mk
|
||||
index 273bb0e..58cfc99 100644
|
||||
--- a/mk/install.mk
|
||||
+++ b/mk/install.mk
|
||||
@@ -16,9 +16,9 @@ else
|
||||
$(Q)$(MAKE) prepare_install
|
||||
endif
|
||||
ifeq ($(CFG_DISABLE_DOCS),)
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths --disable-ldconfig
|
||||
endif
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths --disable-ldconfig
|
||||
# Remove tmp files because it's a decent amount of disk space
|
||||
$(Q)rm -R tmp/dist
|
||||
|
||||
@@ -32,9 +32,9 @@ else
|
||||
$(Q)$(MAKE) prepare_uninstall
|
||||
endif
|
||||
ifeq ($(CFG_DISABLE_DOCS),)
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths --disable-ldconfig
|
||||
endif
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths --disable-ldconfig
|
||||
# Remove tmp files because it's a decent amount of disk space
|
||||
$(Q)rm -R tmp/dist
|
||||
|
||||
--
|
||||
2.4.3
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
From 02936deefb786a244c98ec2293e6b85ecfc85cdb Mon Sep 17 00:00:00 2001
|
||||
From: Steven Walter <swalter@lexmark.com>
|
||||
Date: Mon, 15 Jun 2015 11:35:47 -0400
|
||||
Subject: [PATCH] src/rt/arch/i386/morestack.S: call rust_stack_exhausted via
|
||||
plt
|
||||
|
||||
This prevents a relocation in the text section. Text relocations are
|
||||
incompatible with hardened kernels.
|
||||
|
||||
https://github.com/rust-lang/rust/issues/5714
|
||||
---
|
||||
src/rt/arch/i386/morestack.S | 5 ++---
|
||||
1 file changed, 2 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/rt/arch/i386/morestack.S b/src/rt/arch/i386/morestack.S
|
||||
index 2f03251..98fdfdf 100644
|
||||
--- a/src/rt/arch/i386/morestack.S
|
||||
+++ b/src/rt/arch/i386/morestack.S
|
||||
@@ -75,7 +75,7 @@
|
||||
#else
|
||||
#if defined(__linux__) || defined(__FreeBSD__)
|
||||
#define MORESTACK __morestack
|
||||
-#define EXHAUSTED rust_stack_exhausted
|
||||
+#define EXHAUSTED rust_stack_exhausted@plt
|
||||
#else
|
||||
#define MORESTACK ___morestack
|
||||
#define EXHAUSTED _rust_stack_exhausted
|
||||
@@ -83,7 +83,6 @@
|
||||
#endif
|
||||
|
||||
.globl MORESTACK
|
||||
-.globl EXHAUSTED
|
||||
|
||||
// FIXME: What about __WIN32__?
|
||||
#if defined(__linux__) || defined(__FreeBSD__)
|
||||
@@ -138,7 +137,7 @@ MORESTACK:
|
||||
|
||||
// re-align the stack
|
||||
subl $12,%esp
|
||||
- calll EXHAUSTED
|
||||
+ call EXHAUSTED
|
||||
// the exhaustion function guarantees that it can't return
|
||||
|
||||
.cfi_endproc
|
||||
--
|
||||
1.9.1
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
From 9db9d253355cc0e9e885bb1e63b054e318f9395a Mon Sep 17 00:00:00 2001
|
||||
From: Steven Walter <swalter@lexmark.com>
|
||||
Date: Tue, 7 Jul 2015 14:57:42 -0400
|
||||
Subject: [PATCH] Remove crate metadata from symbol hashing
|
||||
|
||||
---
|
||||
src/librustc_trans/back/link.rs | 3 ---
|
||||
1 file changed, 3 deletions(-)
|
||||
|
||||
diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs
|
||||
index 2f2ba16..ea3e897 100644
|
||||
--- a/src/librustc_trans/back/link.rs
|
||||
+++ b/src/librustc_trans/back/link.rs
|
||||
@@ -205,9 +205,4 @@ fn symbol_hash<'tcx>(tcx: &ty::ctxt<'tcx>,
|
||||
symbol_hasher.input_str(&link_meta.crate_name);
|
||||
- symbol_hasher.input_str("-");
|
||||
- symbol_hasher.input_str(link_meta.crate_hash.as_str());
|
||||
- for meta in &*tcx.sess.crate_metadata.borrow() {
|
||||
- symbol_hasher.input_str(&meta[..]);
|
||||
- }
|
||||
symbol_hasher.input_str("-");
|
||||
symbol_hasher.input_str(&encoder::encoded_ty(tcx, t));
|
||||
// Prefix with 'h' so that it never blends into adjacent digits
|
||||
--
|
||||
1.9.1
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
From 776929187d56bd9417532c47d856bf781b08e95f Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Sat, 15 Nov 2014 20:12:48 -0500
|
||||
Subject: [PATCH 01/10] platform.mk: avoid choking on i586
|
||||
|
||||
---
|
||||
mk/platform.mk | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/mk/platform.mk b/mk/platform.mk
|
||||
index 8a5e58c..e2c3d8f 100644
|
||||
--- a/mk/platform.mk
|
||||
+++ b/mk/platform.mk
|
||||
@@ -14,7 +14,9 @@
|
||||
# would create a variable HOST_i686-darwin-macos with the value
|
||||
# i386.
|
||||
define DEF_HOST_VAR
|
||||
- HOST_$(1) = $(subst i686,i386,$(word 1,$(subst -, ,$(1))))
|
||||
+ HOST_$(1) = $(subst i686,i386,\
|
||||
+ $(subst i586,i386,\
|
||||
+ $(word 1,$(subst -, ,$(1)))))
|
||||
endef
|
||||
$(foreach t,$(CFG_TARGET),$(eval $(call DEF_HOST_VAR,$(t))))
|
||||
$(foreach t,$(CFG_TARGET),$(info cfg: host for $(t) is $(HOST_$(t))))
|
||||
--
|
||||
2.5.0
|
||||
|
||||
@@ -1,109 +0,0 @@
|
||||
From f3966aca0080e8718660137c697ff6856929087a 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/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 | 14 +++++++++++---
|
||||
3 files changed, 20 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
|
||||
index c6ce3a2..51152c7 100644
|
||||
--- a/src/librustc/session/config.rs
|
||||
+++ b/src/librustc/session/config.rs
|
||||
@@ -38,7 +38,7 @@ use getopts;
|
||||
use std::collections::HashMap;
|
||||
use std::env;
|
||||
use std::fmt;
|
||||
-use std::path::PathBuf;
|
||||
+use std::path::{Path, PathBuf};
|
||||
|
||||
use llvm;
|
||||
|
||||
@@ -651,8 +651,8 @@ pub fn build_configuration(sess: &Session) -> ast::CrateConfig {
|
||||
v
|
||||
}
|
||||
|
||||
-pub fn build_target_config(opts: &Options, sp: &SpanHandler) -> Config {
|
||||
- let target = match Target::search(&opts.target_triple) {
|
||||
+pub fn build_target_config(sysroot: &Path, opts: &Options, sp: &SpanHandler) -> Config {
|
||||
+ let target = match Target::search(sysroot, &opts.target_triple[..]) {
|
||||
Ok(t) => t,
|
||||
Err(e) => {
|
||||
sp.handler().fatal(&format!("Error loading target specification: {}", e));
|
||||
diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs
|
||||
index 6b5f587..4432440 100644
|
||||
--- a/src/librustc/session/mod.rs
|
||||
+++ b/src/librustc/session/mod.rs
|
||||
@@ -381,14 +381,18 @@ pub fn build_session_(sopts: config::Options,
|
||||
local_crate_source_file: Option<PathBuf>,
|
||||
span_diagnostic: diagnostic::SpanHandler)
|
||||
-> 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) => {
|
||||
span_diagnostic.handler()
|
||||
.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);
|
||||
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 402fbcd..a211b84 100644
|
||||
--- a/src/librustc_back/target/mod.rs
|
||||
+++ b/src/librustc_back/target/mod.rs
|
||||
@@ -49,6 +49,8 @@ use serialize::json::Json;
|
||||
use std::default::Default;
|
||||
use std::io::prelude::*;
|
||||
use syntax::{diagnostic, abi};
|
||||
+use std::borrow::ToOwned;
|
||||
+use std::path::Path;
|
||||
|
||||
mod android_base;
|
||||
mod apple_base;
|
||||
@@ -306,12 +308,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 = try!(File::open(path).map_err(|e| e.to_string()));
|
||||
@@ -400,9 +403,14 @@ impl Target {
|
||||
let target_path = env::var_os("RUST_TARGET_PATH")
|
||||
.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.5.0
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
From 2bc2e872f7b97e67456dd9dd5563611fe0f15ada 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/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 | 19 +++++++++++--------
|
||||
1 file changed, 11 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/mk/main.mk b/mk/main.mk
|
||||
index 8983a63..98024bf 100644
|
||||
--- a/mk/main.mk
|
||||
+++ b/mk/main.mk
|
||||
@@ -370,21 +370,22 @@ define SREQ
|
||||
# Destinations of artifacts for the host compiler
|
||||
HROOT$(1)_H_$(3) = $(3)/stage$(1)
|
||||
HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
|
||||
-ifeq ($$(CFG_WINDOWSY_$(3)),1)
|
||||
-HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)
|
||||
-else
|
||||
-ifeq ($(1),0)
|
||||
-HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/lib
|
||||
-else
|
||||
HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)
|
||||
-endif
|
||||
-endif
|
||||
|
||||
# Destinations of artifacts for target architectures
|
||||
TROOT$(1)_T_$(2)_H_$(3) = $$(HLIB$(1)_H_$(3))/rustlib/$(2)
|
||||
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))
|
||||
@@ -496,6 +497,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))
|
||||
|
||||
PERF_STAGE$(1)_T_$(2)_H_$(3) := \
|
||||
@@ -504,6 +506,7 @@ PERF_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.5.0
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
From 3572e79ac46629bafcfd8d4a19b2904031ce113c 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/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 d9c66e2..585206d 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.5.0
|
||||
|
||||
@@ -1,362 +0,0 @@
|
||||
From e5177f4dfdce566fb8e59211d2c2b530e3920203 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Mon, 24 Nov 2014 13:10:15 -0500
|
||||
Subject: [PATCH 05/10] configure: support --bindir, and extend libdir to
|
||||
non-blessed dirs
|
||||
|
||||
Adds --bindir, and:
|
||||
|
||||
Allows --bindir and --libdir to have multiple elements in their paths
|
||||
relative to sysroot, and allows libdir to end in an arbitrary directory
|
||||
(previously it was limited to lib, lib32, and lib64).
|
||||
|
||||
Note that this assumes absolute paths start with '/', which may break
|
||||
windows platforms
|
||||
---
|
||||
configure | 49 ++++++++++++++++------
|
||||
mk/host.mk | 6 ++-
|
||||
mk/main.mk | 11 +++++
|
||||
mk/perf.mk | 4 +-
|
||||
mk/prepare.mk | 4 +-
|
||||
src/librustc/metadata/filesearch.rs | 84 ++++++++++++++-----------------------
|
||||
src/librustc_trans/back/link.rs | 3 +-
|
||||
7 files changed, 90 insertions(+), 71 deletions(-)
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index bfd2798..c07a517 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -323,6 +323,31 @@ envopt() {
|
||||
fi
|
||||
}
|
||||
|
||||
+abspath () {
|
||||
+ case "$1" in
|
||||
+ /*) echo "$1" ;;
|
||||
+ *) echo "$PWD/$1" ;;
|
||||
+ esac
|
||||
+}
|
||||
+
|
||||
+relpath () {
|
||||
+ local src=$(abspath "$1")
|
||||
+ local dst=$(abspath "$2")
|
||||
+ local common=$src
|
||||
+ local result=
|
||||
+
|
||||
+ # Start by checking if the whole src is common, then strip off pack
|
||||
+ # components until we find the common element.
|
||||
+ while [ "${dst#"$common"}" = "$dst" ]; do
|
||||
+ common=$(dirname "$common")
|
||||
+ result="../$result"
|
||||
+ done
|
||||
+
|
||||
+ local down="${dst#"$common"}"
|
||||
+ result="${result}${down#/}"
|
||||
+ echo "$result"
|
||||
+}
|
||||
+
|
||||
to_llvm_triple() {
|
||||
case $1 in
|
||||
i686-w64-mingw32) echo i686-pc-windows-gnu ;;
|
||||
@@ -609,6 +634,8 @@ putvar CFG_BUILD # Yes, this creates a duplicate entry, but the last one wins.
|
||||
CFG_HOST=$(to_llvm_triple $CFG_HOST)
|
||||
CFG_TARGET=$(to_llvm_triple $CFG_TARGET)
|
||||
|
||||
+CFG_LIBDIR_RELATIVE=lib
|
||||
+
|
||||
# On windows we just store the libraries in the bin directory because
|
||||
# there's no rpath. This is where the build system itself puts libraries;
|
||||
# --libdir is used to configure the installation directory.
|
||||
@@ -616,24 +643,21 @@ CFG_TARGET=$(to_llvm_triple $CFG_TARGET)
|
||||
if [ "$CFG_OSTYPE" = "pc-windows-gnu" ] || [ "$CFG_OSTYPE" = "pc-windows-msvc" ]
|
||||
then
|
||||
CFG_LIBDIR_RELATIVE=bin
|
||||
-else
|
||||
- CFG_LIBDIR_RELATIVE=lib
|
||||
fi
|
||||
|
||||
-valopt libdir "${CFG_PREFIX}/${CFG_LIBDIR_RELATIVE}" "install libraries (do not set it on windows platform)"
|
||||
+valopt libdir "${CFG_PREFIX}/${CFG_LIBDIR_RELATIVE}" "install libraries"
|
||||
|
||||
-case "$CFG_LIBDIR" in
|
||||
- "$CFG_PREFIX"/*) CAT_INC=2;;
|
||||
- "$CFG_PREFIX"*) CAT_INC=1;;
|
||||
- *)
|
||||
- err "libdir must begin with the prefix. Use --prefix to set it accordingly.";;
|
||||
-esac
|
||||
+CFG_BINDIR_RELATIVE=bin
|
||||
+valopt bindir "${CFG_PREFIX}/${CFG_BINDIR_RELATIVE}" "install binaries"
|
||||
|
||||
-CFG_LIBDIR_RELATIVE=`echo ${CFG_LIBDIR} | cut -c$((${#CFG_PREFIX}+${CAT_INC}))-`
|
||||
+# Determine libdir and bindir relative to prefix
|
||||
+step_msg "calculating relative paths to prefix = ${CFG_PREFIX}"
|
||||
+CFG_BINDIR_RELATIVE=$(relpath "${CFG_PREFIX}" "${CFG_BINDIR}")
|
||||
+CFG_LIBDIR_RELATIVE=$(relpath "${CFG_PREFIX}" "${CFG_LIBDIR}")
|
||||
|
||||
if ( [ "$CFG_OSTYPE" = "pc-windows-gnu" ] || [ "$CFG_OSTYPE" = "pc-windows-msvc" ] ) \
|
||||
- && [ "$CFG_LIBDIR_RELATIVE" != "bin" ]; then
|
||||
- err "libdir on windows should be set to 'bin'"
|
||||
+ && [ "$CFG_LIBDIR_RELATIVE" != "$CFG_BINDIR_RELATIVE" ]; then
|
||||
+ err "Windows builds currently require that LIBDIR == BINDIR (we have libdir{$CFG_LIBDIR_RELATIVE} != bindir{$CFG_BINDIR_RELATIVE} )"
|
||||
fi
|
||||
|
||||
if [ $HELP -eq 1 ]
|
||||
@@ -1583,6 +1607,7 @@ putvar CFG_PREFIX
|
||||
putvar CFG_HOST
|
||||
putvar CFG_TARGET
|
||||
putvar CFG_LIBDIR_RELATIVE
|
||||
+putvar CFG_BINDIR_RELATIVE
|
||||
putvar CFG_DISABLE_MANAGE_SUBMODULES
|
||||
putvar CFG_ANDROID_CROSS_PATH
|
||||
putvar CFG_MANDIR
|
||||
diff --git a/mk/host.mk b/mk/host.mk
|
||||
index 59a0095..b8e8345 100644
|
||||
--- a/mk/host.mk
|
||||
+++ b/mk/host.mk
|
||||
@@ -59,9 +59,13 @@ endef
|
||||
# $(4) - the host triple (same as $(3))
|
||||
define CP_HOST_STAGE_N
|
||||
|
||||
-ifneq ($(CFG_LIBDIR_RELATIVE),bin)
|
||||
$$(HLIB$(2)_H_$(4))/:
|
||||
@mkdir -p $$@
|
||||
+
|
||||
+# Avoid redefinition warnings if libdir==bindir
|
||||
+ifneq ($(HBIN$(2)_H_$(4)),$(HLIB$(2)_H_$(4)))
|
||||
+$$(HBIN$(2)_H_$(4))/:
|
||||
+ @mkdir -p $$@
|
||||
endif
|
||||
|
||||
endef
|
||||
diff --git a/mk/main.mk b/mk/main.mk
|
||||
index 98024bf..73fb58b 100644
|
||||
--- a/mk/main.mk
|
||||
+++ b/mk/main.mk
|
||||
@@ -339,7 +339,9 @@ export CFG_RELEASE_CHANNEL
|
||||
export CFG_LLVM_ROOT
|
||||
export CFG_PREFIX
|
||||
export CFG_LIBDIR
|
||||
+export CFG_BINDIR
|
||||
export CFG_LIBDIR_RELATIVE
|
||||
+export CFG_BINDIR_RELATIVE
|
||||
export CFG_DISABLE_INJECT_STD_VERSION
|
||||
ifdef CFG_DISABLE_UNSTABLE_FEATURES
|
||||
CFG_INFO := $(info cfg: disabling unstable features (CFG_DISABLE_UNSTABLE_FEATURES))
|
||||
@@ -369,7 +371,16 @@ define SREQ
|
||||
|
||||
# Destinations of artifacts for the host compiler
|
||||
HROOT$(1)_H_$(3) = $(3)/stage$(1)
|
||||
+
|
||||
+ifeq ($(1)-$(3),0-$$(CFG_BUILD))
|
||||
+# stage0 relative paths are fixed so we can bootstrap from snapshots
|
||||
+# (downloaded snapshots drop their rustc in HROOT/bin)
|
||||
+# libdir discrepancy is worked around with RUSTFLAGS below.
|
||||
HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
|
||||
+else
|
||||
+HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_BINDIR_RELATIVE)
|
||||
+endif
|
||||
+
|
||||
HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)
|
||||
|
||||
# Destinations of artifacts for target architectures
|
||||
diff --git a/mk/perf.mk b/mk/perf.mk
|
||||
index 16cbaab..f8a354c 100644
|
||||
--- a/mk/perf.mk
|
||||
+++ b/mk/perf.mk
|
||||
@@ -10,13 +10,13 @@
|
||||
|
||||
|
||||
ifdef CFG_PERF_TOOL
|
||||
-rustc-perf$(X): $(CFG_BUILD)/stage2/bin/rustc$(X_$(CFG_BUILD))
|
||||
+rustc-perf$(X): $(CFG_BUILD)/stage2/$(CFG_BINDIR_RELATIVE)/rustc$(X_$(CFG_BUILD))
|
||||
@$(call E, perf compile: $@)
|
||||
$(PERF_STAGE2_T_$(CFG_BUILD)_H_$(CFG_BUILD)) \
|
||||
-o $@ $(COMPILER_CRATE) >rustc-perf.err 2>&1
|
||||
$(Q)rm -f $(LIBRUSTC_GLOB)
|
||||
else
|
||||
-rustc-perf$(X): $(CFG_BUILD)/stage2/bin/rustc$(X_$(CFG_BUILD))
|
||||
+rustc-perf$(X): $(CFG_BUILD)/stage2/$(CFG_BINDIR_RELATIVE)/rustc$(X_$(CFG_BUILD))
|
||||
$(Q)touch $@
|
||||
endif
|
||||
|
||||
diff --git a/mk/prepare.mk b/mk/prepare.mk
|
||||
index fe619cc..b8aa0cb 100644
|
||||
--- a/mk/prepare.mk
|
||||
+++ b/mk/prepare.mk
|
||||
@@ -186,10 +186,10 @@ INSTALL_DEBUGGER_SCRIPT_COMMANDS=$(if $(findstring windows,$(1)),\
|
||||
define DEF_PREPARE
|
||||
|
||||
prepare-base-$(1): PREPARE_SOURCE_DIR=$$(PREPARE_HOST)/stage$$(PREPARE_STAGE)
|
||||
-prepare-base-$(1): PREPARE_SOURCE_BIN_DIR=$$(PREPARE_SOURCE_DIR)/bin
|
||||
+prepare-base-$(1): PREPARE_SOURCE_BIN_DIR=$$(PREPARE_SOURCE_DIR)/$$(CFG_BINDIR_RELATIVE)
|
||||
prepare-base-$(1): PREPARE_SOURCE_LIB_DIR=$$(PREPARE_SOURCE_DIR)/$$(CFG_LIBDIR_RELATIVE)
|
||||
prepare-base-$(1): PREPARE_SOURCE_MAN_DIR=$$(S)/man
|
||||
-prepare-base-$(1): PREPARE_DEST_BIN_DIR=$$(PREPARE_DEST_DIR)/bin
|
||||
+prepare-base-$(1): PREPARE_DEST_BIN_DIR=$$(PREPARE_DEST_DIR)/$$(CFG_BINDIR_RELATIVE)
|
||||
prepare-base-$(1): PREPARE_DEST_LIB_DIR=$$(PREPARE_DEST_DIR)/$$(CFG_LIBDIR_RELATIVE)
|
||||
prepare-base-$(1): PREPARE_DEST_MAN_DIR=$$(PREPARE_DEST_DIR)/share/man/man1
|
||||
prepare-base-$(1): prepare-everything-$(1)
|
||||
diff --git a/src/librustc/metadata/filesearch.rs b/src/librustc/metadata/filesearch.rs
|
||||
index 311ab1c..1b03b1a 100644
|
||||
--- a/src/librustc/metadata/filesearch.rs
|
||||
+++ b/src/librustc/metadata/filesearch.rs
|
||||
@@ -68,8 +68,7 @@ impl<'a> FileSearch<'a> {
|
||||
if !found {
|
||||
let rustpath = rust_path();
|
||||
for path in &rustpath {
|
||||
- let tlib_path = make_rustpkg_lib_path(
|
||||
- self.sysroot, path, self.triple);
|
||||
+ let tlib_path = make_rustpkg_lib_path(path, self.triple);
|
||||
debug!("is {} in visited_dirs? {}", tlib_path.display(),
|
||||
visited_dirs.contains(&tlib_path));
|
||||
|
||||
@@ -96,7 +95,7 @@ impl<'a> FileSearch<'a> {
|
||||
where F: FnMut(&Path, PathKind) -> FileMatch
|
||||
{
|
||||
self.for_each_lib_search_path(|lib_search_path, kind| {
|
||||
- debug!("searching {}", lib_search_path.display());
|
||||
+ info!("searching {}", lib_search_path.display());
|
||||
match fs::read_dir(lib_search_path) {
|
||||
Ok(files) => {
|
||||
let files = files.filter_map(|p| p.ok().map(|s| s.path()))
|
||||
@@ -157,7 +156,7 @@ impl<'a> FileSearch<'a> {
|
||||
// Returns a list of directories where target-specific tool binaries are located.
|
||||
pub fn get_tools_search_paths(&self) -> Vec<PathBuf> {
|
||||
let mut p = PathBuf::from(self.sysroot);
|
||||
- p.push(&find_libdir(self.sysroot));
|
||||
+ p.push(libdir_str());
|
||||
p.push(&rustlibdir());
|
||||
p.push(&self.triple);
|
||||
p.push("bin");
|
||||
@@ -165,8 +164,8 @@ impl<'a> FileSearch<'a> {
|
||||
}
|
||||
}
|
||||
|
||||
-pub fn relative_target_lib_path(sysroot: &Path, target_triple: &str) -> PathBuf {
|
||||
- let mut p = PathBuf::from(&find_libdir(sysroot));
|
||||
+pub fn relative_target_lib_path(target_triple: &str) -> PathBuf {
|
||||
+ let mut p = PathBuf::from(&libdir_str());
|
||||
assert!(p.is_relative());
|
||||
p.push(&rustlibdir());
|
||||
p.push(target_triple);
|
||||
@@ -176,17 +175,28 @@ pub fn relative_target_lib_path(sysroot: &Path, target_triple: &str) -> PathBuf
|
||||
|
||||
fn make_target_lib_path(sysroot: &Path,
|
||||
target_triple: &str) -> PathBuf {
|
||||
- sysroot.join(&relative_target_lib_path(sysroot, target_triple))
|
||||
+ sysroot.join(&relative_target_lib_path(target_triple))
|
||||
}
|
||||
|
||||
-fn make_rustpkg_lib_path(sysroot: &Path,
|
||||
- dir: &Path,
|
||||
+fn make_rustpkg_lib_path(dir: &Path,
|
||||
triple: &str) -> PathBuf {
|
||||
- let mut p = dir.join(&find_libdir(sysroot));
|
||||
+ let mut p = dir.join(libdir_str());
|
||||
p.push(triple);
|
||||
p
|
||||
}
|
||||
|
||||
+pub fn bindir_relative_str() -> &'static str {
|
||||
+ env!("CFG_BINDIR_RELATIVE")
|
||||
+}
|
||||
+
|
||||
+pub fn bindir_relative_path() -> PathBuf {
|
||||
+ PathBuf::from(bindir_relative_str())
|
||||
+}
|
||||
+
|
||||
+pub fn libdir_str() -> &'static str {
|
||||
+ env!("CFG_LIBDIR_RELATIVE")
|
||||
+}
|
||||
+
|
||||
pub fn get_or_default_sysroot() -> PathBuf {
|
||||
// Follow symlinks. If the resolved path is relative, make it absolute.
|
||||
fn canonicalize(path: Option<PathBuf>) -> Option<PathBuf> {
|
||||
@@ -202,7 +212,18 @@ pub fn get_or_default_sysroot() -> PathBuf {
|
||||
}
|
||||
|
||||
match canonicalize(env::current_exe().ok()) {
|
||||
- Some(mut p) => { p.pop(); p.pop(); p }
|
||||
+ Some(mut p) => {
|
||||
+ // Remove the exe name
|
||||
+ p.pop();
|
||||
+ let mut rel = bindir_relative_path();
|
||||
+
|
||||
+ // Remove a number of elements equal to the number of elements in the bindir relative
|
||||
+ // path
|
||||
+ while rel.pop() {
|
||||
+ p.pop();
|
||||
+ }
|
||||
+ p
|
||||
+ }
|
||||
None => panic!("can't determine value for sysroot")
|
||||
}
|
||||
}
|
||||
@@ -257,47 +278,6 @@ pub fn rust_path() -> Vec<PathBuf> {
|
||||
env_rust_path
|
||||
}
|
||||
|
||||
-// The name of the directory rustc expects libraries to be located.
|
||||
-// On Unix should be "lib", on windows "bin"
|
||||
-#[cfg(unix)]
|
||||
-fn find_libdir(sysroot: &Path) -> String {
|
||||
- // FIXME: This is a quick hack to make the rustc binary able to locate
|
||||
- // Rust libraries in Linux environments where libraries might be installed
|
||||
- // to lib64/lib32. This would be more foolproof by basing the sysroot off
|
||||
- // of the directory where librustc is located, rather than where the rustc
|
||||
- // binary is.
|
||||
- //If --libdir is set during configuration to the value other than
|
||||
- // "lib" (i.e. non-default), this value is used (see issue #16552).
|
||||
-
|
||||
- match option_env!("CFG_LIBDIR_RELATIVE") {
|
||||
- Some(libdir) if libdir != "lib" => return libdir.to_string(),
|
||||
- _ => if sysroot.join(&primary_libdir_name()).join(&rustlibdir()).exists() {
|
||||
- return primary_libdir_name();
|
||||
- } else {
|
||||
- return secondary_libdir_name();
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- #[cfg(target_pointer_width = "64")]
|
||||
- fn primary_libdir_name() -> String {
|
||||
- "lib64".to_string()
|
||||
- }
|
||||
-
|
||||
- #[cfg(target_pointer_width = "32")]
|
||||
- fn primary_libdir_name() -> String {
|
||||
- "lib32".to_string()
|
||||
- }
|
||||
-
|
||||
- fn secondary_libdir_name() -> String {
|
||||
- "lib".to_string()
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-#[cfg(windows)]
|
||||
-fn find_libdir(_sysroot: &Path) -> String {
|
||||
- "bin".to_string()
|
||||
-}
|
||||
-
|
||||
// The name of rustc's own place to organize libraries.
|
||||
// Used to be "rustc", now the default is "rustlib"
|
||||
pub fn rustlibdir() -> String {
|
||||
diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs
|
||||
index 6b8b59d..6e03f3c 100644
|
||||
--- a/src/librustc_trans/back/link.rs
|
||||
+++ b/src/librustc_trans/back/link.rs
|
||||
@@ -997,11 +997,10 @@ fn link_args(cmd: &mut Linker,
|
||||
// where extern libraries might live, based on the
|
||||
// addl_lib_search_paths
|
||||
if sess.opts.cg.rpath {
|
||||
- let sysroot = sess.sysroot();
|
||||
let target_triple = &sess.opts.target_triple;
|
||||
let mut get_install_prefix_lib_path = || {
|
||||
let install_prefix = option_env!("CFG_PREFIX").expect("CFG_PREFIX");
|
||||
- let tlib = filesearch::relative_target_lib_path(sysroot, target_triple);
|
||||
+ let tlib = filesearch::relative_target_lib_path(target_triple);
|
||||
let mut path = PathBuf::from(install_prefix);
|
||||
path.push(&tlib);
|
||||
|
||||
--
|
||||
2.5.0
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
From df6d2377c215240cd27f9ed3da500a09ea9da370 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/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 6056334..e79bd8b 100644
|
||||
--- a/src/libstd/thread/local.rs
|
||||
+++ b/src/libstd/thread/local.rs
|
||||
@@ -337,7 +337,7 @@ mod imp {
|
||||
#[linkage = "extern_weak"]
|
||||
static __cxa_thread_atexit_impl: *const ();
|
||||
}
|
||||
- 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.5.0
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
From 622a5811ed511ea29080cc42a74fe50f308ce91e 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/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 | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/mk/install.mk b/mk/install.mk
|
||||
index cabc97a..273bb0e 100644
|
||||
--- a/mk/install.mk
|
||||
+++ b/mk/install.mk
|
||||
@@ -16,9 +16,9 @@ else
|
||||
$(Q)$(MAKE) prepare_install
|
||||
endif
|
||||
ifeq ($(CFG_DISABLE_DOCS),)
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)"
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths
|
||||
endif
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)"
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths
|
||||
# Remove tmp files because it's a decent amount of disk space
|
||||
$(Q)rm -R tmp/dist
|
||||
|
||||
@@ -32,9 +32,9 @@ else
|
||||
$(Q)$(MAKE) prepare_uninstall
|
||||
endif
|
||||
ifeq ($(CFG_DISABLE_DOCS),)
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)"
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths
|
||||
endif
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)"
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths
|
||||
# Remove tmp files because it's a decent amount of disk space
|
||||
$(Q)rm -R tmp/dist
|
||||
|
||||
--
|
||||
2.5.0
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
From cc039d1c87a417297d8c2b9ee86a3a6d9bf9ae91 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 26 May 2015 12:09:36 -0400
|
||||
Subject: [PATCH 08/10] install: disable ldconfig
|
||||
|
||||
---
|
||||
mk/install.mk | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/mk/install.mk b/mk/install.mk
|
||||
index 273bb0e..58cfc99 100644
|
||||
--- a/mk/install.mk
|
||||
+++ b/mk/install.mk
|
||||
@@ -16,9 +16,9 @@ else
|
||||
$(Q)$(MAKE) prepare_install
|
||||
endif
|
||||
ifeq ($(CFG_DISABLE_DOCS),)
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths --disable-ldconfig
|
||||
endif
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" "$(MAYBE_DISABLE_VERIFY)" --disable-rewrite-paths --disable-ldconfig
|
||||
# Remove tmp files because it's a decent amount of disk space
|
||||
$(Q)rm -R tmp/dist
|
||||
|
||||
@@ -32,9 +32,9 @@ else
|
||||
$(Q)$(MAKE) prepare_uninstall
|
||||
endif
|
||||
ifeq ($(CFG_DISABLE_DOCS),)
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(DOC_PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths --disable-ldconfig
|
||||
endif
|
||||
- $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths
|
||||
+ $(Q)cd tmp/empty_dir && sh ../../tmp/dist/$(PKG_NAME)-$(CFG_BUILD)/install.sh --uninstall --prefix="$(DESTDIR)$(CFG_PREFIX)" --libdir="$(DESTDIR)$(CFG_LIBDIR)" --mandir="$(DESTDIR)$(CFG_MANDIR)" --disable-rewrite-paths --disable-ldconfig
|
||||
# Remove tmp files because it's a decent amount of disk space
|
||||
$(Q)rm -R tmp/dist
|
||||
|
||||
--
|
||||
2.5.0
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
From ec110b1823638d3ddbedc29e176c1b6dd9a4a9e2 Mon Sep 17 00:00:00 2001
|
||||
From: Steven Walter <swalter@lexmark.com>
|
||||
Date: Tue, 7 Jul 2015 14:57:42 -0400
|
||||
Subject: [PATCH 09/10] Remove crate metadata from symbol hashing
|
||||
|
||||
---
|
||||
src/librustc_trans/back/link.rs | 5 -----
|
||||
1 file changed, 5 deletions(-)
|
||||
|
||||
diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs
|
||||
index 6e03f3c..9a5efba 100644
|
||||
--- a/src/librustc_trans/back/link.rs
|
||||
+++ b/src/librustc_trans/back/link.rs
|
||||
@@ -204,11 +204,6 @@ fn symbol_hash<'tcx>(tcx: &ty::ctxt<'tcx>,
|
||||
symbol_hasher.reset();
|
||||
symbol_hasher.input_str(&link_meta.crate_name);
|
||||
symbol_hasher.input_str("-");
|
||||
- symbol_hasher.input_str(link_meta.crate_hash.as_str());
|
||||
- for meta in tcx.sess.crate_metadata.borrow().iter() {
|
||||
- symbol_hasher.input_str(&meta[..]);
|
||||
- }
|
||||
- symbol_hasher.input_str("-");
|
||||
symbol_hasher.input_str(&encoder::encoded_ty(tcx, t));
|
||||
// Prefix with 'h' so that it never blends into adjacent digits
|
||||
let mut hash = String::from("h");
|
||||
--
|
||||
2.5.0
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
From 64679c95a8f1fcc27702a0ada730d1fd320ab307 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Wed, 26 Aug 2015 11:21:36 -0400
|
||||
Subject: [PATCH 10/10] mk: tell rustc that we're only looking for native libs
|
||||
in the LLVM_LIBDIR
|
||||
|
||||
This fixes the case where we try to re-build & re-install rust to the
|
||||
same prefix (without uninstalling) while using an llvm-root that is the
|
||||
same as the prefix.
|
||||
|
||||
Without this, builds like that fail with:
|
||||
'error: multiple dylib candidates for `std` found'
|
||||
|
||||
See https://github.com/jmesmon/meta-rust/issues/6 for some details.
|
||||
|
||||
May also be related to #20342.
|
||||
---
|
||||
mk/main.mk | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/mk/main.mk b/mk/main.mk
|
||||
index 73fb58b..4075c24 100644
|
||||
--- a/mk/main.mk
|
||||
+++ b/mk/main.mk
|
||||
@@ -294,7 +294,7 @@ LLVM_VERSION_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --version)
|
||||
LLVM_BINDIR_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --bindir)
|
||||
LLVM_INCDIR_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --includedir)
|
||||
LLVM_LIBDIR_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --libdir)
|
||||
-LLVM_LIBDIR_RUSTFLAGS_$(1)=-L "$$(LLVM_LIBDIR_$(1))"
|
||||
+LLVM_LIBDIR_RUSTFLAGS_$(1)=-L native="$$(LLVM_LIBDIR_$(1))"
|
||||
LLVM_LIBS_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --libs $$(LLVM_COMPONENTS))
|
||||
LLVM_LDFLAGS_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --ldflags)
|
||||
ifeq ($$(findstring freebsd,$(1)),freebsd)
|
||||
--
|
||||
2.5.0
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
From 6d0905573f38d0fbdde74848c0cd7cdbb603c238 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Sat, 15 Nov 2014 20:12:48 -0500
|
||||
Subject: [PATCH 01/10] platform.mk: avoid choking on i586
|
||||
|
||||
---
|
||||
mk/platform.mk | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/mk/platform.mk b/mk/platform.mk
|
||||
index 60fe22c..9c57656 100644
|
||||
--- a/mk/platform.mk
|
||||
+++ b/mk/platform.mk
|
||||
@@ -14,7 +14,9 @@
|
||||
# would create a variable HOST_i686-darwin-macos with the value
|
||||
# i386.
|
||||
define DEF_HOST_VAR
|
||||
- HOST_$(1) = $(subst i686,i386,$(word 1,$(subst -, ,$(1))))
|
||||
+ HOST_$(1) = $(subst i686,i386,\
|
||||
+ $(subst i586,i386,\
|
||||
+ $(word 1,$(subst -, ,$(1)))))
|
||||
endef
|
||||
$(foreach t,$(CFG_TARGET),$(eval $(call DEF_HOST_VAR,$(t))))
|
||||
$(foreach t,$(CFG_TARGET),$(info cfg: host for $(t) is $(HOST_$(t))))
|
||||
--
|
||||
2.5.1
|
||||
|
||||
@@ -1,109 +0,0 @@
|
||||
From e9d46f8cb10eec1f8ee19ed2aab385d17ec85757 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/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 | 14 +++++++++++---
|
||||
3 files changed, 20 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
|
||||
index c5db7cd..2b9069f 100644
|
||||
--- a/src/librustc/session/config.rs
|
||||
+++ b/src/librustc/session/config.rs
|
||||
@@ -38,7 +38,7 @@ use getopts;
|
||||
use std::collections::HashMap;
|
||||
use std::env;
|
||||
use std::fmt;
|
||||
-use std::path::PathBuf;
|
||||
+use std::path::{Path, PathBuf};
|
||||
|
||||
use llvm;
|
||||
|
||||
@@ -655,8 +655,8 @@ pub fn build_configuration(sess: &Session) -> ast::CrateConfig {
|
||||
v
|
||||
}
|
||||
|
||||
-pub fn build_target_config(opts: &Options, sp: &SpanHandler) -> Config {
|
||||
- let target = match Target::search(&opts.target_triple) {
|
||||
+pub fn build_target_config(sysroot: &Path, opts: &Options, sp: &SpanHandler) -> Config {
|
||||
+ let target = match Target::search(sysroot, &opts.target_triple[..]) {
|
||||
Ok(t) => t,
|
||||
Err(e) => {
|
||||
sp.handler().fatal(&format!("Error loading target specification: {}", e));
|
||||
diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs
|
||||
index 99a58f0..d25e476 100644
|
||||
--- a/src/librustc/session/mod.rs
|
||||
+++ b/src/librustc/session/mod.rs
|
||||
@@ -385,14 +385,18 @@ pub fn build_session_(sopts: config::Options,
|
||||
local_crate_source_file: Option<PathBuf>,
|
||||
span_diagnostic: diagnostic::SpanHandler)
|
||||
-> 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) => {
|
||||
span_diagnostic.handler()
|
||||
.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);
|
||||
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 ce05a88..1d1ff70 100644
|
||||
--- a/src/librustc_back/target/mod.rs
|
||||
+++ b/src/librustc_back/target/mod.rs
|
||||
@@ -49,6 +49,8 @@ use serialize::json::Json;
|
||||
use std::default::Default;
|
||||
use std::io::prelude::*;
|
||||
use syntax::{diagnostic, abi};
|
||||
+use std::borrow::ToOwned;
|
||||
+use std::path::Path;
|
||||
|
||||
mod android_base;
|
||||
mod apple_base;
|
||||
@@ -320,12 +322,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 = try!(File::open(path).map_err(|e| e.to_string()));
|
||||
@@ -417,9 +420,14 @@ impl Target {
|
||||
let target_path = env::var_os("RUST_TARGET_PATH")
|
||||
.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.5.1
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
From e468926e5e331dc6a68be5d0731a331940bd0199 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/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 | 19 +++++++++++--------
|
||||
1 file changed, 11 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/mk/main.mk b/mk/main.mk
|
||||
index 99b0797..d907628 100644
|
||||
--- a/mk/main.mk
|
||||
+++ b/mk/main.mk
|
||||
@@ -369,21 +369,22 @@ define SREQ
|
||||
# Destinations of artifacts for the host compiler
|
||||
HROOT$(1)_H_$(3) = $(3)/stage$(1)
|
||||
HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
|
||||
-ifeq ($$(CFG_WINDOWSY_$(3)),1)
|
||||
-HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)
|
||||
-else
|
||||
-ifeq ($(1),0)
|
||||
-HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/lib
|
||||
-else
|
||||
HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)
|
||||
-endif
|
||||
-endif
|
||||
|
||||
# Destinations of artifacts for target architectures
|
||||
TROOT$(1)_T_$(2)_H_$(3) = $$(HLIB$(1)_H_$(3))/rustlib/$(2)
|
||||
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))
|
||||
@@ -495,6 +496,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))
|
||||
|
||||
PERF_STAGE$(1)_T_$(2)_H_$(3) := \
|
||||
@@ -503,6 +505,7 @@ PERF_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.5.1
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user