Compare commits
328 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8fc9aeb087 | ||
|
|
1b59fd4590 | ||
|
|
09605d2ea5 | ||
|
|
ab86e0a068 | ||
|
|
494d879a1d | ||
|
|
b4877e0be0 | ||
|
|
3773dbcebd | ||
|
|
02db606a96 | ||
|
|
25ee517ae2 | ||
|
|
031fc5406e | ||
|
|
920db7b045 | ||
|
|
0048ea8253 | ||
|
|
e0180c565e | ||
|
|
b637307219 | ||
|
|
742cd5c095 | ||
|
|
53cbdb566d | ||
|
|
2a9ee78d08 | ||
|
|
3638b7da88 | ||
|
|
08c385c922 | ||
|
|
2c89770123 | ||
|
|
d9e32f6288 | ||
|
|
250230e292 | ||
|
|
c06069fdaa | ||
|
|
e492b2d86f | ||
|
|
2932b399a5 | ||
|
|
ae08e553b8 | ||
|
|
439dea8664 | ||
|
|
a4302679bb | ||
|
|
64c625f119 | ||
|
|
191cd91817 | ||
|
|
da00d57cda | ||
|
|
57a202ac53 | ||
|
|
51eba75155 | ||
|
|
33904e6514 | ||
|
|
0fffd992ee | ||
|
|
7a8876558b | ||
|
|
cb5a599f02 | ||
|
|
9a035fe272 | ||
|
|
013b210033 | ||
|
|
3f3aa9a6bb | ||
|
|
f31b044c53 | ||
|
|
30dcb2d61f | ||
|
|
6f399bbd90 | ||
|
|
81f9357b58 | ||
|
|
7a261d5d14 | ||
|
|
81a4d79c06 | ||
|
|
f8b9103477 | ||
|
|
83ad3d415f | ||
|
|
38a017d9de | ||
|
|
4434790fc2 | ||
|
|
c1e1921e03 | ||
|
|
029f1ea6a6 | ||
|
|
9937659804 | ||
|
|
920328c8d8 | ||
|
|
4e96013677 | ||
|
|
341a3c77bb | ||
|
|
d59c590245 | ||
|
|
87e8d50abd | ||
|
|
53c9aabda3 | ||
|
|
b53374d793 | ||
|
|
7feed5d36c | ||
|
|
1b944013b8 | ||
|
|
81d4b4c820 | ||
|
|
26609f46d9 | ||
|
|
71538c8762 | ||
|
|
c976184935 | ||
|
|
d15e66ae93 | ||
|
|
2c34da11f0 | ||
|
|
dd7aa2e952 | ||
|
|
0025cebb12 | ||
|
|
3ab7542844 | ||
|
|
b163a89399 | ||
|
|
0ee328aa26 | ||
|
|
c90c9b071a | ||
|
|
3e73030c51 | ||
|
|
9c0a1059be | ||
|
|
a31a4070d3 | ||
|
|
1d64f9075a | ||
|
|
433b7214ad | ||
|
|
80c30c3017 | ||
|
|
1cb40bd3c2 | ||
|
|
805503686f | ||
|
|
a6c629733c | ||
|
|
1c18023894 | ||
|
|
d5ab20d23b | ||
|
|
b7eacc0996 | ||
|
|
1936904ad3 | ||
|
|
5dda6c427a | ||
|
|
c72b2dda3a | ||
|
|
47de35e153 | ||
|
|
e2979482dc | ||
|
|
a679b6f4c2 | ||
|
|
8da0936aa8 | ||
|
|
a59ddd90d2 | ||
|
|
fa5cdb0de4 | ||
|
|
e5ee880894 | ||
|
|
a673320995 | ||
|
|
2a4bb8966a | ||
|
|
cb4f8294d4 | ||
|
|
7ff669d8ce | ||
|
|
25a20987fb | ||
|
|
4b151fa804 | ||
|
|
8cfc3c9826 | ||
|
|
aec6519e23 | ||
|
|
f56fd4ec68 | ||
|
|
7afffa083c | ||
|
|
53bfa32489 | ||
|
|
2822b50c04 | ||
|
|
2e085dda43 | ||
|
|
8a44baed44 | ||
|
|
318fb46863 | ||
|
|
b7f9c1d0d7 | ||
|
|
7f235b6f89 | ||
|
|
647b976da2 | ||
|
|
d2ff87ca55 | ||
|
|
8d3f79f217 | ||
|
|
be88d857a6 | ||
|
|
2c7321dac6 | ||
|
|
b84c61eb85 | ||
|
|
dd0fc89389 | ||
|
|
afcb58e5b9 | ||
|
|
40a6bd8a8d | ||
|
|
c023edd985 | ||
|
|
6ed6a09a99 | ||
|
|
3b783652cc | ||
|
|
a012a1027d | ||
|
|
8ef8b39681 | ||
|
|
646fecee8a | ||
|
|
e4d25b9808 | ||
|
|
1a3625364c | ||
|
|
ea97549161 | ||
|
|
d0dc19aa78 | ||
|
|
4a763a2301 | ||
|
|
5c7f51b6ad | ||
|
|
d8d77be129 | ||
|
|
dbf68d40b3 | ||
|
|
a754e6c5d6 | ||
|
|
837b63596d | ||
|
|
2668f6afd3 | ||
|
|
e5c2a4085f | ||
|
|
72aa4ef3ab | ||
|
|
0f950f5e33 | ||
|
|
10fb698a79 | ||
|
|
186ec59085 | ||
|
|
71895ec5a4 | ||
|
|
5cda04c7c2 | ||
|
|
5d1ada0c97 | ||
|
|
11aed43748 | ||
|
|
1cb2ad5543 | ||
|
|
0b5ea8beb0 | ||
|
|
412987892c | ||
|
|
afccedc43c | ||
|
|
150b1591d6 | ||
|
|
2c4a666b68 | ||
|
|
c5ff05d1e9 | ||
|
|
2f323e1e9e | ||
|
|
9487b089ea | ||
|
|
bcbe02f6ac | ||
|
|
2afc6ecef2 | ||
|
|
4ca5b781dc | ||
|
|
164bc5f20a | ||
|
|
03f492ab35 | ||
|
|
84710b341b | ||
|
|
4a88247046 | ||
|
|
0d03c206c3 | ||
|
|
9a077b21d0 | ||
|
|
0621067c56 | ||
|
|
723e24bd9d | ||
|
|
f2f17c58b0 | ||
|
|
68046d42b8 | ||
|
|
f4517aaba8 | ||
|
|
fa0aebc070 | ||
|
|
b3d1b589ee | ||
|
|
cb383b0d90 | ||
|
|
9952633163 | ||
|
|
d537c62b4e | ||
|
|
16d015a481 | ||
|
|
8b7d6201b6 | ||
|
|
e7c10de555 | ||
|
|
e357f4e5d5 | ||
|
|
9ecc36acb5 | ||
|
|
4110f1d92a | ||
|
|
496b75fa1f | ||
|
|
e4fdc0e8f7 | ||
|
|
bf01840f5b | ||
|
|
1b00814593 | ||
|
|
68d6bce609 | ||
|
|
969467c029 | ||
|
|
665213a13d | ||
|
|
4c9068bd09 | ||
|
|
3b9251e732 | ||
|
|
ea613e2ae2 | ||
|
|
e660179c55 | ||
|
|
318a4c6f25 | ||
|
|
c7fc7986c2 | ||
|
|
50828f8af2 | ||
|
|
adf3f10036 | ||
|
|
446d28d6e1 | ||
|
|
b15ba05ea8 | ||
|
|
f54025fed9 | ||
|
|
f317737fae | ||
|
|
e04d99bf38 | ||
|
|
6b060617cd | ||
|
|
99ec7396f6 | ||
|
|
f81fbebaeb | ||
|
|
5a9933dd46 | ||
|
|
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 |
48
.github/workflows/main.yml
vendored
Normal file
48
.github/workflows/main.yml
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
on: [pull_request]
|
||||
jobs:
|
||||
build:
|
||||
env:
|
||||
YOCTO_VERSION: 3.2.3
|
||||
YOCTO_BRANCH: gatesgarth
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
path: 'meta-rust'
|
||||
- name: Fetch poky
|
||||
run: |
|
||||
mv poky/build/sstate-cache . || true
|
||||
rm -rf poky meta-openembedded
|
||||
git clone -b yocto-$YOCTO_VERSION --single-branch git://git.yoctoproject.org/poky
|
||||
git clone -b $YOCTO_BRANCH --single-branch git://git.openembedded.org/meta-openembedded
|
||||
- name: Configure build
|
||||
run: |
|
||||
cd poky
|
||||
. oe-init-build-env
|
||||
mv ../../sstate-cache . || true
|
||||
bitbake-layers add-layer ../../meta-openembedded/meta-oe
|
||||
bitbake-layers add-layer ../../meta-rust
|
||||
echo 'PARALLEL_MAKE_pn-rust-llvm-native = "-j2"' >> conf/local.conf
|
||||
echo 'TOOLCHAIN_HOST_TASK_append = " packagegroup-rust-cross-canadian-${MACHINE}"' >> conf/local.conf
|
||||
echo "SSTATE_MIRRORS = \"file://.* http://sstate.yoctoproject.org/$YOCTO_VERSION/PATH;downloadfilename=PATH \\n\"" >> conf/local.conf
|
||||
echo 'PREFERRED_PROVIDER_virtual/kernel = "linux-dummy"' >> conf/local.conf
|
||||
- name: Run bitbake
|
||||
run: |
|
||||
cd poky
|
||||
. oe-init-build-env
|
||||
bitbake rust-hello-world
|
||||
- name: Test SDK
|
||||
run: |
|
||||
SDK_DIR=$PWD/sdk-test
|
||||
cd poky
|
||||
. oe-init-build-env
|
||||
bitbake core-image-minimal -c populate_sdk
|
||||
rm -rf $SDK_DIR
|
||||
./$(find ./tmp/deploy/sdk/ -name '*.sh') -d $SDK_DIR -y
|
||||
. $(find $SDK_DIR -name 'environment-setup-*')
|
||||
PROG=hello
|
||||
rm -rf $PROG
|
||||
cargo new $PROG
|
||||
cd $PROG
|
||||
cargo build
|
||||
file $(find ./target -name $PROG)
|
||||
7
Jenkinsfile
vendored
7
Jenkinsfile
vendored
@@ -1,4 +1,4 @@
|
||||
def targets = [ 'qemux86', 'qemux86-64', 'qemuarm', 'qemuarm64' ]
|
||||
def targets = [ 'qemux86', 'qemux86-64', 'qemuarm', 'qemuarm64', 'qemumips' ]
|
||||
|
||||
def machine_builds = [:]
|
||||
|
||||
@@ -15,7 +15,7 @@ for (int i = 0; i < targets.size(); i++) {
|
||||
sh "./scripts/setup-env.sh"
|
||||
}
|
||||
stage("fetch $machine") {
|
||||
sh "GIT_LOCAL_REF_DIR=/srv/git-cache/ ./scripts/fetch.sh morty"
|
||||
sh "GIT_LOCAL_REF_DIR=/srv/git-cache/ ./scripts/fetch.sh master"
|
||||
}
|
||||
stage("build $machine") {
|
||||
sh "MACHINE=${machine} ./scripts/build.sh"
|
||||
@@ -24,6 +24,9 @@ for (int i = 0; i < targets.size(); i++) {
|
||||
echo "Caught: ${e}"
|
||||
throw e
|
||||
} finally {
|
||||
stage("push build cache $machine") {
|
||||
sh "./scripts/publish-build-cache.sh master"
|
||||
}
|
||||
stage("cleanup $machine") {
|
||||
sh "./scripts/cleanup-env.sh"
|
||||
deleteDir()
|
||||
|
||||
42
README.md
42
README.md
@@ -5,17 +5,20 @@ This OpenEmbedded layer provides the rust compiler, tools for building packages
|
||||
|
||||
## What works:
|
||||
|
||||
- Building rust-native, rust-cross, rust-hello-world, cargo-native
|
||||
- Building `rust-native` and `cargo-native`
|
||||
- Building Rust based projects with Cargo for the TARGET
|
||||
- e.g. `rustfmt` which is used by the CI system
|
||||
- `-buildsdk` and `-crosssdk` packages
|
||||
|
||||
## What doesn't:
|
||||
|
||||
- Using anything but x86_64 as the build environment
|
||||
- Probably some of the untested things
|
||||
- rust (built for target) [issue #81](https://github.com/meta-rust/meta-rust/issues/81)
|
||||
|
||||
## What's untested:
|
||||
|
||||
- rust (built for target)
|
||||
- cargo (built for target)
|
||||
|
||||
|
||||
## Building a rust package
|
||||
|
||||
@@ -25,44 +28,29 @@ rust packages do), then it's especially easy. Otherwise you should probably
|
||||
get the code building in cargo first.
|
||||
|
||||
Once your package builds in cargo, you can use
|
||||
[cargo-bitbake](https://github.com/cardoe/cargo-bitbake) to generate a bitbake
|
||||
[cargo-bitbake](https://github.com/meta-rust/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.
|
||||
|
||||
## Common issues when packaging things using cargo
|
||||
|
||||
You may run into errors similar to:
|
||||
|
||||
```
|
||||
| src/lib.rs:12:1: 12:35 error: can't find crate for `ffi`
|
||||
| src/lib.rs:12 extern crate "openssl-sys" as ffi;
|
||||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
```
|
||||
|
||||
Where a "-sys" crate (or other crate) is not found. These are typically caused
|
||||
by a crate's Cargo.toml including triplet-specific dependencies and then using
|
||||
the crate based on a feature (most often, `#[cfg(unix)]`). Until cargo and it's
|
||||
ecosystem get their act together, you'll need to supply patches to the
|
||||
misbehaving packages. See `recipies/cargo/cargo_*.bb` for an example of how to
|
||||
do this.
|
||||
NOTE: You will have to edit the generated recipe based on the comments
|
||||
contained within it
|
||||
|
||||
## TODO
|
||||
|
||||
- -crosssdk and -buildsdk packages
|
||||
- Upstream local rustc patches for libdir and bindir support
|
||||
|
||||
## Pitfalls
|
||||
|
||||
- TARGET_SYS _must_ be different from BUILD_SYS. This is due to the way configuration options are tracked for different targets.
|
||||
- TARGET_SYS _must_ be different from BUILD_SYS. This is due to the way Rust configuration options are tracked for different targets. This is the reason we use the Yocto triples instead of the native Rust triples. See [rust-lang/cargo#3349](https://github.com/rust-lang/cargo/issues/3349).
|
||||
|
||||
## Dependencies
|
||||
|
||||
On the host:
|
||||
unknown
|
||||
- Any `-sys` packages your project might need must have RDEPENDs for
|
||||
the native library.
|
||||
|
||||
On the target:
|
||||
unknown
|
||||
- Any `-sys` packages your project might need must have RDEPENDs for
|
||||
the native library.
|
||||
|
||||
## Maintainer(s) & Patch policy
|
||||
|
||||
@@ -74,6 +62,8 @@ All new patches against rust, rust-llvm, and cargo must have referenced
|
||||
upstream issues or PRs opened or an explanation why the patch cannot be
|
||||
upstreamed. This cooresponds to the OpenEmbedded policy for other meta layers.
|
||||
|
||||
More info can be seen on the wiki.
|
||||
|
||||
## Copyright
|
||||
|
||||
MIT OR Apache-2.0 - Same as rust
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
# add crate fetch support
|
||||
inherit crate-fetch
|
||||
inherit rust-common
|
||||
##
|
||||
## Purpose:
|
||||
## This class is used by any recipes that are built using
|
||||
## Cargo.
|
||||
|
||||
inherit cargo_common
|
||||
|
||||
# the binary we will use
|
||||
CARGO = "cargo"
|
||||
|
||||
# Where we download our registry and dependencies to
|
||||
export CARGO_HOME = "${WORKDIR}/cargo_home"
|
||||
|
||||
# We need cargo to compile for the target
|
||||
BASEDEPENDS_append = " cargo-native"
|
||||
|
||||
@@ -15,78 +15,39 @@ BASEDEPENDS_append = " cargo-native"
|
||||
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}"
|
||||
# Enable build separation
|
||||
B = "${WORKDIR}/build"
|
||||
|
||||
# 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"
|
||||
# The directory of the Cargo.toml relative to the root directory, per default
|
||||
# assume there's a Cargo.toml directly in the root directory
|
||||
CARGO_SRC_DIR ??= ""
|
||||
|
||||
cargo_do_configure () {
|
||||
mkdir -p ${CARGO_HOME}
|
||||
echo "paths = [" > ${CARGO_HOME}/config
|
||||
|
||||
for p in ${EXTRA_OECARGO_PATHS}; do
|
||||
printf "\"%s\"\n" "$p"
|
||||
done | sed -e 's/$/,/' >> ${CARGO_HOME}/config
|
||||
echo "]" >> ${CARGO_HOME}/config
|
||||
|
||||
# Point cargo at our local mirror of the registry
|
||||
cat <<- EOF >> ${CARGO_HOME}/config
|
||||
[source.bitbake]
|
||||
directory = "${CARGO_HOME}/bitbake"
|
||||
|
||||
[source.crates-io]
|
||||
replace-with = "bitbake"
|
||||
local-registry = "/nonexistant"
|
||||
EOF
|
||||
|
||||
echo "[target.${HOST_SYS}]" >> ${CARGO_HOME}/config
|
||||
echo "linker = '${RUST_TARGET_CCLD}'" >> ${CARGO_HOME}/config
|
||||
if [ "${HOST_SYS}" != "${BUILD_SYS}" ]; then
|
||||
echo "[target.${BUILD_SYS}]" >> ${CARGO_HOME}/config
|
||||
echo "linker = '${RUST_BUILD_CCLD}'" >> ${CARGO_HOME}/config
|
||||
fi
|
||||
}
|
||||
# The actual path to the Cargo.toml
|
||||
MANIFEST_PATH ??= "${S}/${CARGO_SRC_DIR}/Cargo.toml"
|
||||
|
||||
RUSTFLAGS ??= ""
|
||||
CARGO_BUILD_FLAGS = "-v --target ${HOST_SYS} --release"
|
||||
BUILD_MODE = "${@['--release', ''][d.getVar('DEBUG_BUILD') == '1']}"
|
||||
CARGO_BUILD_FLAGS = "-v --target ${HOST_SYS} ${BUILD_MODE} --manifest-path=${MANIFEST_PATH}"
|
||||
|
||||
# This is based on the content of CARGO_BUILD_FLAGS and generally will need to
|
||||
# change if CARGO_BUILD_FLAGS changes.
|
||||
CARGO_TARGET_SUBDIR="${HOST_SYS}/release"
|
||||
BUILD_DIR = "${@['release', 'debug'][d.getVar('DEBUG_BUILD') == '1']}"
|
||||
CARGO_TARGET_SUBDIR="${HOST_SYS}/${BUILD_DIR}"
|
||||
oe_cargo_build () {
|
||||
export RUSTFLAGS="${RUSTFLAGS}"
|
||||
bbnote "cargo = $(which cargo)"
|
||||
bbnote "rustc = $(which rustc)"
|
||||
export RUST_TARGET_PATH="${RUST_TARGET_PATH}"
|
||||
bbnote "cargo = $(which ${CARGO})"
|
||||
bbnote "rustc = $(which ${RUSTC})"
|
||||
bbnote "${CARGO} build ${CARGO_BUILD_FLAGS} $@"
|
||||
"${CARGO}" build ${CARGO_BUILD_FLAGS} "$@"
|
||||
}
|
||||
|
||||
oe_cargo_fix_env () {
|
||||
export CC="${RUST_TARGET_CC}"
|
||||
export CFLAGS="${CFLAGS}"
|
||||
export AR="${AR}"
|
||||
export TARGET_CC="${RUST_TARGET_CC}"
|
||||
export TARGET_CFLAGS="${CFLAGS}"
|
||||
export TARGET_AR="${AR}"
|
||||
export HOST_CC="${RUST_BUILD_CC}"
|
||||
export HOST_CFLAGS="${BUILD_CFLAGS}"
|
||||
export HOST_AR="${BUILD_AR}"
|
||||
}
|
||||
|
||||
EXTRA_OECARGO_PATHS ??= ""
|
||||
|
||||
do_compile[progress] = "outof:\s+(\d+)/(\d+)"
|
||||
cargo_do_compile () {
|
||||
# prevent cargo from trying to fetch down new data
|
||||
mkdir -p "${WORKDIR}/cargo_home/registry/index/github.com-1ecc6299db9ec823"
|
||||
touch "${WORKDIR}/cargo_home/registry/index/github.com-1ecc6299db9ec823/.cargo-index-lock"
|
||||
|
||||
oe_cargo_fix_env
|
||||
oe_cargo_build
|
||||
}
|
||||
@@ -94,19 +55,35 @@ cargo_do_compile () {
|
||||
cargo_do_install () {
|
||||
local have_installed=false
|
||||
for tgt in "${B}/target/${CARGO_TARGET_SUBDIR}/"*; do
|
||||
if [[ $tgt == *.so || $tgt == *.rlib ]]; then
|
||||
case $tgt in
|
||||
*.so|*.rlib)
|
||||
install -d "${D}${rustlibdir}"
|
||||
install -m755 "$tgt" "${D}${rustlibdir}"
|
||||
have_installed=true
|
||||
elif [ -f "$tgt" ] && [ -x "$tgt" ]; then
|
||||
install -d "${D}${bindir}"
|
||||
install -m755 "$tgt" "${D}${bindir}"
|
||||
have_installed=true
|
||||
fi
|
||||
;;
|
||||
*examples)
|
||||
if [ -d "$tgt" ]; then
|
||||
for example in "$tgt/"*; do
|
||||
if [ -f "$example" ] && [ -x "$example" ]; then
|
||||
install -d "${D}${bindir}"
|
||||
install -m755 "$example" "${D}${bindir}"
|
||||
have_installed=true
|
||||
fi
|
||||
done
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
if [ -f "$tgt" ] && [ -x "$tgt" ]; then
|
||||
install -d "${D}${bindir}"
|
||||
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_configure do_compile do_install
|
||||
EXPORT_FUNCTIONS do_compile do_install
|
||||
|
||||
129
classes/cargo_common.bbclass
Normal file
129
classes/cargo_common.bbclass
Normal file
@@ -0,0 +1,129 @@
|
||||
##
|
||||
## 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"
|
||||
|
||||
# Don't instruct cargo to use crates downloaded by bitbake. Some rust packages,
|
||||
# for example the rust compiler itself, come with their own vendored sources.
|
||||
# Specifying two [source.crates-io] will not work.
|
||||
CARGO_DISABLE_BITBAKE_VENDORING ?= "0"
|
||||
|
||||
# Used by libstd-rs to point to the vendor dir included in rustc src
|
||||
CARGO_VENDORING_DIRECTORY ?= "${CARGO_HOME}/bitbake"
|
||||
|
||||
CARGO_RUST_TARGET_CCLD ?= "${RUST_TARGET_CCLD}"
|
||||
cargo_common_do_configure () {
|
||||
mkdir -p ${CARGO_HOME}/bitbake
|
||||
|
||||
cat <<- EOF > ${CARGO_HOME}/config
|
||||
# EXTRA_OECARGO_PATHS
|
||||
paths = [
|
||||
$(for p in ${EXTRA_OECARGO_PATHS}; do echo \"$p\",; done)
|
||||
]
|
||||
EOF
|
||||
|
||||
cat <<- EOF >> ${CARGO_HOME}/config
|
||||
|
||||
# Local mirror vendored by bitbake
|
||||
[source.bitbake]
|
||||
directory = "${CARGO_VENDORING_DIRECTORY}"
|
||||
EOF
|
||||
|
||||
if [ -z "${EXTERNALSRC}" ] && [ ${CARGO_DISABLE_BITBAKE_VENDORING} = "0" ]; then
|
||||
cat <<- EOF >> ${CARGO_HOME}/config
|
||||
|
||||
[source.crates-io]
|
||||
replace-with = "bitbake"
|
||||
local-registry = "/nonexistant"
|
||||
EOF
|
||||
fi
|
||||
|
||||
cat <<- EOF >> ${CARGO_HOME}/config
|
||||
|
||||
[http]
|
||||
# Multiplexing can't be enabled because http2 can't be enabled
|
||||
# in curl-native without dependency loops
|
||||
multiplexing = false
|
||||
|
||||
# Ignore the hard coded and incorrect path to certificates
|
||||
cainfo = "${STAGING_ETCDIR_NATIVE}/ssl/certs/ca-certificates.crt"
|
||||
|
||||
EOF
|
||||
|
||||
if [ -n "${http_proxy}" ]; then
|
||||
echo "proxy = \"${http_proxy}\"" >> ${CARGO_HOME}/config
|
||||
fi
|
||||
|
||||
cat <<- EOF >> ${CARGO_HOME}/config
|
||||
|
||||
# HOST_SYS
|
||||
[target.${HOST_SYS}]
|
||||
linker = "${CARGO_RUST_TARGET_CCLD}"
|
||||
EOF
|
||||
|
||||
if [ "${HOST_SYS}" != "${BUILD_SYS}" ]; then
|
||||
cat <<- EOF >> ${CARGO_HOME}/config
|
||||
|
||||
# BUILD_SYS
|
||||
[target.${BUILD_SYS}]
|
||||
linker = "${RUST_BUILD_CCLD}"
|
||||
EOF
|
||||
fi
|
||||
|
||||
# Put build output in build directory preferred by bitbake instead of
|
||||
# inside source directory unless they are the same
|
||||
if [ "${B}" != "${S}" ]; then
|
||||
cat <<- EOF >> ${CARGO_HOME}/config
|
||||
|
||||
[build]
|
||||
# Use out of tree build destination to avoid poluting the source tree
|
||||
target-dir = "${B}/target"
|
||||
EOF
|
||||
fi
|
||||
|
||||
cat <<- EOF >> ${CARGO_HOME}/config
|
||||
|
||||
[term]
|
||||
progress.when = 'always'
|
||||
progress.width = 80
|
||||
EOF
|
||||
}
|
||||
|
||||
oe_cargo_fix_env () {
|
||||
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
|
||||
@@ -1,10 +1,8 @@
|
||||
inherit rust
|
||||
|
||||
DEPENDS_append = " patchelf-native"
|
||||
RDEPENDS_${PN} += "${RUSTLIB_DEP}"
|
||||
RDEPENDS_${PN}_append_class-target = " ${RUSTLIB_DEP}"
|
||||
|
||||
RUSTFLAGS += "-C crate_hash=${BB_TASKHASH}"
|
||||
RUSTC_ARCHFLAGS += "-C opt-level=3 -g -L ${STAGING_DIR_HOST}/${rustlibdir}"
|
||||
RUSTC_ARCHFLAGS += "-C opt-level=3 -g -L ${STAGING_DIR_HOST}/${rustlibdir} -C linker=${RUST_TARGET_CCLD}"
|
||||
EXTRA_OEMAKE += 'RUSTC_ARCHFLAGS="${RUSTC_ARCHFLAGS}"'
|
||||
|
||||
# Some libraries alias with the standard library but libstd is configured to
|
||||
@@ -17,9 +15,9 @@ OVERLAP_LIBS = "\
|
||||
rand \
|
||||
"
|
||||
def get_overlap_deps(d):
|
||||
deps = d.getVar("DEPENDS", True).split()
|
||||
deps = d.getVar("DEPENDS").split()
|
||||
overlap_deps = []
|
||||
for o in d.getVar("OVERLAP_LIBS", True).split():
|
||||
for o in d.getVar("OVERLAP_LIBS").split():
|
||||
l = len([o for dep in deps if (o + '-rs' in dep)])
|
||||
if l > 0:
|
||||
overlap_deps.append(o)
|
||||
@@ -31,13 +29,51 @@ OVERLAP_DEPS = "${@get_overlap_deps(d)}"
|
||||
RUSTC_PREFER_DYNAMIC = "-C prefer-dynamic"
|
||||
RUSTC_FLAGS += "${RUSTC_PREFER_DYNAMIC}"
|
||||
|
||||
CRATE_NAME ?= "${@d.getVar('BPN', True).replace('-rs', '').replace('-', '_')}"
|
||||
CRATE_NAME ?= "${@d.getVar('BPN').replace('-rs', '').replace('-', '_')}"
|
||||
BINNAME ?= "${BPN}"
|
||||
LIBNAME ?= "lib${CRATE_NAME}-rs"
|
||||
CRATE_TYPE ?= "dylib"
|
||||
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
|
||||
@@ -57,22 +93,22 @@ 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 () {
|
||||
[ "${CRATE_TYPE}" == "dylib" ] && suffix=so || suffix=rlib
|
||||
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}.$suffix"
|
||||
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 ${LIBNAME}.$suffix \
|
||||
-o ${@libfilename(d)} \
|
||||
--crate-name=${CRATE_NAME} --crate-type=${CRATE_TYPE} \
|
||||
"$@"
|
||||
}
|
||||
@@ -80,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() {
|
||||
@@ -101,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 RUNPATH | grep -q rustlib || continue
|
||||
echo "Set rpath:" "$f"
|
||||
patchelf --set-rpath '$ORIGIN:'${rustlibdir}:${rustlib} "$f"
|
||||
done
|
||||
}
|
||||
PACKAGE_PREPROCESS_FUNCS += "do_rust_bin_fixups"
|
||||
|
||||
|
||||
@@ -1,15 +1,55 @@
|
||||
# Common variables used by all Rust builds
|
||||
export rustlibdir = "${libdir}/rust"
|
||||
FILES_${PN} += "${rustlibdir}/*.so"
|
||||
FILES_${PN}-dev += "${rustlibdir}/*.rlib"
|
||||
FILES_${PN}-dev += "${rustlibdir}/*.rlib ${rustlibdir}/*.rmeta"
|
||||
FILES_${PN}-dbg += "${rustlibdir}/.debug"
|
||||
|
||||
RUSTLIB = "-L ${STAGING_LIBDIR}/rust"
|
||||
RUSTFLAGS += "-C rpath ${RUSTLIB}"
|
||||
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
|
||||
|
||||
def target_is_armv7(d):
|
||||
'''Determine if target is armv7'''
|
||||
# TUNE_FEATURES may include arm* even if the target is not arm
|
||||
# in the case of *-native packages
|
||||
if d.getVar('TARGET_ARCH') != 'arm':
|
||||
return False
|
||||
|
||||
feat = d.getVar('TUNE_FEATURES')
|
||||
feat = frozenset(feat.split())
|
||||
mach_overrides = d.getVar('MACHINEOVERRIDES')
|
||||
mach_overrides = frozenset(mach_overrides.split(':'))
|
||||
|
||||
v7=frozenset(['armv7a', 'armv7r', 'armv7m', 'armv7ve'])
|
||||
if mach_overrides.isdisjoint(v7) and feat.isdisjoint(v7):
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
# Responsible for taking Yocto triples and converting it to Rust triples
|
||||
|
||||
def rust_base_triple(d, thing):
|
||||
'''
|
||||
Mangle bitbake's *_SYS into something that rust might support (see
|
||||
@@ -18,11 +58,16 @@ def rust_base_triple(d, thing):
|
||||
Note that os is assumed to be some linux form
|
||||
'''
|
||||
|
||||
arch = d.getVar('{}_ARCH'.format(thing), True)
|
||||
# The llvm-target for armv7 is armv7-unknown-linux-gnueabihf
|
||||
if thing == "TARGET" and target_is_armv7(d):
|
||||
arch = "armv7"
|
||||
else:
|
||||
arch = d.getVar('{}_ARCH'.format(thing))
|
||||
|
||||
# All the Yocto targets are Linux and are 'unknown'
|
||||
vendor = "-unknown"
|
||||
os = d.getVar('{}_OS'.format(thing), True)
|
||||
libc = d.getVar('TCLIBC', True)
|
||||
os = d.getVar('{}_OS'.format(thing))
|
||||
libc = determine_libc(d, thing)
|
||||
|
||||
# Prefix with a dash and convert glibc -> gnu
|
||||
if libc == "glibc":
|
||||
@@ -74,9 +119,11 @@ RUST_TARGET_SYS = "${@rust_base_triple(d, 'TARGET')}"
|
||||
# use those commands based on the prefix.
|
||||
WRAPPER_DIR = "${WORKDIR}/wrapper"
|
||||
RUST_BUILD_CC = "${WRAPPER_DIR}/build-rust-cc"
|
||||
RUST_BUILD_CXX = "${WRAPPER_DIR}/build-rust-cxx"
|
||||
RUST_BUILD_CCLD = "${WRAPPER_DIR}/build-rust-ccld"
|
||||
RUST_BUILD_AR = "${WRAPPER_DIR}/build-rust-ar"
|
||||
RUST_TARGET_CC = "${WRAPPER_DIR}/target-rust-cc"
|
||||
RUST_TARGET_CXX = "${WRAPPER_DIR}/target-rust-cxx"
|
||||
RUST_TARGET_CCLD = "${WRAPPER_DIR}/target-rust-ccld"
|
||||
RUST_TARGET_AR = "${WRAPPER_DIR}/target-rust-ar"
|
||||
|
||||
@@ -86,30 +133,41 @@ create_wrapper () {
|
||||
|
||||
cat <<- EOF > "${file}"
|
||||
#!/bin/sh
|
||||
$@ "\$@"
|
||||
exec $@ "\$@"
|
||||
EOF
|
||||
chmod +x "${file}"
|
||||
}
|
||||
|
||||
export WRAPPER_TARGET_CC = "${CC}"
|
||||
export WRAPPER_TARGET_CXX = "${CXX}"
|
||||
export WRAPPER_TARGET_CCLD = "${CCLD}"
|
||||
export WRAPPER_TARGET_LDFLAGS = "${LDFLAGS}"
|
||||
export WRAPPER_TARGET_AR = "${AR}"
|
||||
|
||||
# compiler is used by gcc-rs
|
||||
# linker is used by rustc/cargo
|
||||
# archiver is used by the build of libstd-rs
|
||||
do_rust_create_wrappers () {
|
||||
mkdir -p "${WRAPPER_DIR}"
|
||||
|
||||
# Yocto Build / Rust Host compiler
|
||||
# Yocto Build / Rust Host C compiler
|
||||
create_wrapper "${RUST_BUILD_CC}" "${BUILD_CC}"
|
||||
# Yocto Build / Rust Host C++ compiler
|
||||
create_wrapper "${RUST_BUILD_CXX}" "${BUILD_CXX}"
|
||||
# Yocto Build / Rust Host linker
|
||||
create_wrapper "${RUST_BUILD_CCLD}" "${BUILD_CCLD}" "${BUILD_LDFLAGS}"
|
||||
# Yocto Build / Rust Host archiver
|
||||
create_wrapper "${RUST_BUILD_AR}" "${BUILD_AR}"
|
||||
|
||||
# Yocto Target / Rust Target compiler
|
||||
create_wrapper "${RUST_TARGET_CC}" "${CC}"
|
||||
# Yocto Target / Rust Target C compiler
|
||||
create_wrapper "${RUST_TARGET_CC}" "${WRAPPER_TARGET_CC}"
|
||||
# Yocto Target / Rust Target C++ compiler
|
||||
create_wrapper "${RUST_TARGET_CXX}" "${WRAPPER_TARGET_CXX}"
|
||||
# Yocto Target / Rust Target linker
|
||||
create_wrapper "${RUST_TARGET_CCLD}" "${CCLD}" "${LDFLAGS}"
|
||||
create_wrapper "${RUST_TARGET_CCLD}" "${WRAPPER_TARGET_CCLD}" "${WRAPPER_TARGET_LDFLAGS}"
|
||||
# Yocto Target / Rust Target archiver
|
||||
create_wrapper "${RUST_TARGET_AR}" "${AR}"
|
||||
create_wrapper "${RUST_TARGET_AR}" "${WRAPPER_TARGET_AR}"
|
||||
|
||||
}
|
||||
|
||||
addtask rust_create_wrappers before do_configure after do_patch
|
||||
|
||||
@@ -8,8 +8,8 @@ def rust_base_dep(d):
|
||||
# Taken from meta/classes/base.bbclass `base_dep_prepend` and modified to
|
||||
# use rust instead of gcc
|
||||
deps = ""
|
||||
if not d.getVar('INHIBIT_DEFAULT_RUST_DEPS', True):
|
||||
if (d.getVar('HOST_SYS', True) != d.getVar('BUILD_SYS', True)):
|
||||
if not d.getVar('INHIBIT_DEFAULT_RUST_DEPS'):
|
||||
if (d.getVar('HOST_SYS') != d.getVar('BUILD_SYS')):
|
||||
deps += " virtual/${TARGET_PREFIX}rust ${RUSTLIB_DEP}"
|
||||
else:
|
||||
deps += " rust-native"
|
||||
@@ -42,3 +42,4 @@ rustlib_suffix="${TUNE_ARCH}${TARGET_VENDOR}-${TARGET_OS}/rustlib/${HOST_SYS}/li
|
||||
rustlib_src="${prefix}/lib/${rustlib_suffix}"
|
||||
# Host sysroot standard library path
|
||||
rustlib="${libdir}/${rustlib_suffix}"
|
||||
rustlib_class-native="${libdir}/rustlib/${BUILD_SYS}/lib"
|
||||
|
||||
@@ -8,12 +8,11 @@ BBFILES ?= ""
|
||||
BBLAYERS ?= " \
|
||||
##OEROOT##/meta-rust \
|
||||
##OEROOT##/meta \
|
||||
##OEROOT##/meta-yocto \
|
||||
##OEROOT##/meta-poky \
|
||||
##OEROOT##/meta-yocto-bsp \
|
||||
##OEROOT##/meta-openembedded/meta-oe \
|
||||
##OEROOT##/meta-openembedded/meta-networking \
|
||||
##OEROOT##/meta-openembedded/meta-python \
|
||||
##OEROOT##/meta-openembedded/meta-ruby \
|
||||
"
|
||||
BBLAYERS_NON_REMOVABLE ?= " \
|
||||
##OEROOT##/meta \
|
||||
|
||||
13
conf/distro/include/rust_versions.inc
Normal file
13
conf/distro/include/rust_versions.inc
Normal file
@@ -0,0 +1,13 @@
|
||||
# include this in your distribution to easily switch between versions
|
||||
# just by changing RUST_VERSION variable
|
||||
|
||||
RUST_VERSION ?= "1.49.0"
|
||||
|
||||
PREFERRED_VERSION_cargo ?= "${RUST_VERSION}"
|
||||
PREFERRED_VERSION_cargo-native ?= "${RUST_VERSION}"
|
||||
PREFERRED_VERSION_libstd-rs ?= "${RUST_VERSION}"
|
||||
PREFERRED_VERSION_rust ?= "${RUST_VERSION}"
|
||||
PREFERRED_VERSION_rust-cross-${TARGET_ARCH} ?= "${RUST_VERSION}"
|
||||
PREFERRED_VERSION_rust-llvm ?= "${RUST_VERSION}"
|
||||
PREFERRED_VERSION_rust-llvm-native ?= "${RUST_VERSION}"
|
||||
PREFERRED_VERSION_rust-native ?= "${RUST_VERSION}"
|
||||
@@ -8,5 +8,8 @@ BBFILE_COLLECTIONS += "rust-layer"
|
||||
BBFILE_PATTERN_rust-layer := "^${LAYERDIR}/"
|
||||
BBFILE_PRIORITY_rust-layer = "7"
|
||||
|
||||
LAYERDEPENDS_rust-layer = "core openembedded-layer"
|
||||
LAYERSERIES_COMPAT_rust-layer = "rocko sumo thud warrior zeus dunfell gatesgarth hardknott"
|
||||
|
||||
# Override security flags
|
||||
require conf/distro/include/rust_security_flags.inc
|
||||
|
||||
@@ -220,7 +220,7 @@ BB_DISKMON_DIRS = "\
|
||||
#file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \
|
||||
#file://.* file:///some/local/dir/sstate/PATH"
|
||||
|
||||
SSTATE_MIRRORS ?= "file://.* http://build-cache.asterius.io/sstate/PATH;downloadfilename=PATH \n"
|
||||
SSTATE_MIRRORS ?= "file://.* http://build-cache.asterius.io/master/sstate-cache/PATH;downloadfilename=PATH \n"
|
||||
|
||||
SOURCE_MIRROR_URL ?= "http://build-cache.asterius.io/downloads/"
|
||||
INHERIT += "own-mirrors rm_work"
|
||||
|
||||
114
lib/crate.py
114
lib/crate.py
@@ -35,21 +35,6 @@ class Crate(Wget):
|
||||
|
||||
"""Class to fetch crates via wget"""
|
||||
|
||||
def _cargo_path(self, rootdir, component):
|
||||
# TODO: make this less brittle
|
||||
# This can go away entirely once we can build a cargo that supports source-replacement
|
||||
repo = "github.com-1ecc6299db9ec823"
|
||||
return os.path.join(rootdir, "cargo_home", "registry", component, repo)
|
||||
|
||||
def _cargo_src_path(self, rootdir):
|
||||
return self._cargo_path(rootdir, "src")
|
||||
|
||||
def _cargo_index_path(self, rootdir):
|
||||
return self._cargo_path(rootdir, "index")
|
||||
|
||||
def _cargo_cache_path(self, rootdir):
|
||||
return self._cargo_path(rootdir, "cache")
|
||||
|
||||
def _cargo_bitbake_path(self, rootdir):
|
||||
return os.path.join(rootdir, "cargo_home", "bitbake")
|
||||
|
||||
@@ -57,7 +42,7 @@ class Crate(Wget):
|
||||
"""
|
||||
Check to see if a given url is for this fetcher
|
||||
"""
|
||||
return ud.type in ['crate', 'crate-index']
|
||||
return ud.type in ['crate']
|
||||
|
||||
def recommends_checksum(self, urldata):
|
||||
return False
|
||||
@@ -69,8 +54,6 @@ class Crate(Wget):
|
||||
|
||||
if ud.type == 'crate':
|
||||
self._crate_urldata_init(ud, d)
|
||||
elif ud.type == 'crate-index':
|
||||
self._index_urldata_init(ud, d)
|
||||
|
||||
super(Crate, self).urldata_init(ud, d)
|
||||
|
||||
@@ -102,71 +85,15 @@ class Crate(Wget):
|
||||
|
||||
logger.debug(2, "Fetching %s to %s" % (ud.url, ud.parm['downloadfilename']))
|
||||
|
||||
def _index_urldata_init(self, ud, d):
|
||||
"""
|
||||
Sets up the download for the cargo index
|
||||
"""
|
||||
|
||||
# URL syntax is: crate-index://REV
|
||||
# break the URL apart by /
|
||||
parts = ud.url.split('/')
|
||||
if len(parts) != 4:
|
||||
raise bb.fetch2.ParameterError("Invalid URL: Must be crate-index://HOST/REV", ud.url)
|
||||
|
||||
# last field is the rev
|
||||
rev = parts[3]
|
||||
host = parts[2]
|
||||
|
||||
if host == 'crates.io':
|
||||
host = 'github.com/rust-lang/crates.io-index'
|
||||
|
||||
ud.url = "https://%s/archive/%s.tar.gz" % (host, rev)
|
||||
ud.parm['downloadfilename'] = 'cargo-index-%s.tar.gz' % rev
|
||||
ud.parm['name'] = "index"
|
||||
|
||||
logger.debug(2, "Fetching crate index %s" % ud.url)
|
||||
|
||||
def unpack(self, ud, rootdir, d):
|
||||
"""
|
||||
Uses the crate to build the necessary paths for cargo to utilize it
|
||||
"""
|
||||
if ud.type == 'crate-index':
|
||||
return self._index_unpack(ud, rootdir, d)
|
||||
elif ud.type == 'crate':
|
||||
if ud.type == 'crate':
|
||||
return self._crate_unpack(ud, rootdir, d)
|
||||
else:
|
||||
super(Crate, self).unpack(ud, rootdir, d)
|
||||
|
||||
def _index_unpack(self, ud, rootdir, d):
|
||||
"""
|
||||
Unpacks the index
|
||||
"""
|
||||
thefile = ud.localpath
|
||||
|
||||
cargo_index = self._cargo_index_path(rootdir)
|
||||
|
||||
cmd = "tar -xz --no-same-owner --strip-components 1 -f %s -C %s" % (thefile, cargo_index)
|
||||
|
||||
# change to the rootdir to unpack but save the old working dir
|
||||
save_cwd = os.getcwd()
|
||||
os.chdir(rootdir)
|
||||
|
||||
# ensure we've got these paths made
|
||||
bb.utils.mkdirhier(cargo_index)
|
||||
|
||||
# path it
|
||||
path = d.getVar('PATH', True)
|
||||
if path:
|
||||
cmd = "PATH=\"%s\" %s" % (path, cmd)
|
||||
bb.note("Unpacking %s to %s/" % (thefile, cargo_index))
|
||||
|
||||
ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True)
|
||||
|
||||
os.chdir(save_cwd)
|
||||
|
||||
if ret != 0:
|
||||
raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), ud.url)
|
||||
|
||||
def _crate_unpack(self, ud, rootdir, d):
|
||||
"""
|
||||
Unpacks a crate
|
||||
@@ -180,12 +107,10 @@ class Crate(Wget):
|
||||
save_cwd = os.getcwd()
|
||||
os.chdir(rootdir)
|
||||
|
||||
pn = d.getVar('BPN', True)
|
||||
pn = d.getVar('BPN')
|
||||
if pn == ud.parm.get('name'):
|
||||
cmd = "tar -xz --no-same-owner -f %s" % thefile
|
||||
else:
|
||||
self._crate_unpack_old_layout(ud, rootdir, d)
|
||||
|
||||
cargo_bitbake = self._cargo_bitbake_path(rootdir)
|
||||
|
||||
cmd = "tar -xz --no-same-owner -f %s -C %s" % (thefile, cargo_bitbake)
|
||||
@@ -202,7 +127,7 @@ class Crate(Wget):
|
||||
metadata['package'] = tarhash
|
||||
|
||||
# path it
|
||||
path = d.getVar('PATH', True)
|
||||
path = d.getVar('PATH')
|
||||
if path:
|
||||
cmd = "PATH=\"%s\" %s" % (path, cmd)
|
||||
bb.note("Unpacking %s to %s/" % (thefile, os.getcwd()))
|
||||
@@ -222,34 +147,3 @@ class Crate(Wget):
|
||||
mdpath = os.path.join(bbpath, cratepath, mdfile)
|
||||
with open(mdpath, "w") as f:
|
||||
json.dump(metadata, f)
|
||||
|
||||
|
||||
def _crate_unpack_old_layout(self, ud, rootdir, d):
|
||||
"""
|
||||
Unpacks a crate in the old location that tried to emulate
|
||||
the Cargo registry layout.
|
||||
"""
|
||||
thefile = ud.localpath
|
||||
|
||||
cargo_src = self._cargo_src_path(rootdir)
|
||||
cargo_cache = self._cargo_cache_path(rootdir)
|
||||
|
||||
cmd = "tar -xz --no-same-owner -f %s -C %s" % (thefile, cargo_src)
|
||||
|
||||
# ensure we've got these paths made
|
||||
bb.utils.mkdirhier(cargo_cache)
|
||||
bb.utils.mkdirhier(cargo_src)
|
||||
|
||||
bb.note("Copying %s to %s/" % (thefile, cargo_cache))
|
||||
shutil.copy(thefile, cargo_cache)
|
||||
|
||||
# path it
|
||||
path = d.getVar('PATH', True)
|
||||
if path:
|
||||
cmd = "PATH=\"%s\" %s" % (path, cmd)
|
||||
bb.note("Unpacking %s to %s/" % (thefile, os.getcwd()))
|
||||
|
||||
ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True)
|
||||
|
||||
if ret != 0:
|
||||
raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), ud.url)
|
||||
|
||||
@@ -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,24 +0,0 @@
|
||||
DESCRIPTION = "A macro to generate structures which behave like bitflags."
|
||||
HOMEPAGE = "https://github.com/rust-lang-nursery/bitflags"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "\
|
||||
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
|
||||
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
|
||||
"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
SRC_URI = "git://github.com/rust-lang-nursery/bitflags.git;protocol=https"
|
||||
SRCREV = "41aa413a7c30d70b93b44ab5447276c381ef249e"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
LIB_SRC = "${S}/src/lib.rs"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
DESCRIPTION = "A (mostly) pure-Rust implementation of various common cryptographic algorithms."
|
||||
HOMEPAGE = "https://github.com/DaGenix/rust-crypto/"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "\
|
||||
file://LICENSE-MIT;md5=4311034aa04489226c1fc3f816dbfb5a \
|
||||
file://LICENSE-APACHE;md5=a02fef6dccf840318474c108a8281b77 \
|
||||
"
|
||||
DEPENDS = "\
|
||||
libc-rs \
|
||||
time-rs \
|
||||
rand-rs \
|
||||
rustc-serialize-rs \
|
||||
"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
SRC_URI = "git://github.com/DaGenix/rust-crypto.git;protocol=https"
|
||||
SRCREV = "5571cb41690b9cee12025192393ea7df0eddc21b"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -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,19 +0,0 @@
|
||||
DESCRIPTION = "A copy of libstd's debug builders for use before they stabilize"
|
||||
HOMEPAGE = "https://github.com/sfackler/rust-debug-builders"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "file://Cargo.toml;md5=97a131dc4ae910d242387f2c9d1a2ce8"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
SRC_URI = "git://github.com/sfackler/rust-debug-builders.git;protocol=https"
|
||||
SRCREV = "c6943b72c7808ddaa151d08b824525cc7420cb9b"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -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,23 +0,0 @@
|
||||
DESCRIPTION = "A macro for declaring lazily evaluated statics in Rust."
|
||||
HOMEPAGE = "https://github.com/rust-lang-nursery/lazy-static.rs"
|
||||
LICENSE = "MIT"
|
||||
LIC_FILES_CHKSUM = "\
|
||||
file://LICENSE;md5=5795ddb4df1d696d439b6667081cffc9 \
|
||||
"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
SRC_URI = "git://github.com/rust-lang-nursery/lazy-static.rs.git;protocol=https"
|
||||
SRCREV = "ffe65c818474f863945ca535c0e53f3b8b848ff7"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
LIB_SRC = "${S}/src/lib.rs"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -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=362255802eb5aa87810d12ddf3cfedb4 \
|
||||
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
|
||||
"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
SRC_URI = "git://github.com/rust-lang/libc.git;protocol=https"
|
||||
SRCREV = "f54b9c90ee68889181472d4d4a5dd9e43d0e5318"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
LIB_SRC = "${S}/src/lib.rs"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib --cfg feature='"cargo-build"'
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -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,20 +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 = "4f9a13f95e6e00f2847c093c56b41b9c1d58d3c4"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
require num.inc
|
||||
|
||||
DEPENDS += "num-traits"
|
||||
|
||||
LIB_SRC = "${S}/integer/src/lib.rs"
|
||||
@@ -1,6 +0,0 @@
|
||||
require num.inc
|
||||
|
||||
DEPENDS += "num-traits"
|
||||
DEPENDS += "num-integer"
|
||||
|
||||
LIB_SRC = "${S}/iter/src/lib.rs"
|
||||
@@ -1,3 +0,0 @@
|
||||
require num.inc
|
||||
|
||||
LIB_SRC = "${S}/traits/src/lib.rs"
|
||||
@@ -1,22 +0,0 @@
|
||||
DESCRIPTION = "A collection of numeric types and traits for Rust, including bigint, complex, rational, range iterators, generic integers, and more!"
|
||||
HOMEPAGE = "https://github.com/rust-num/num"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "\
|
||||
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
|
||||
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
|
||||
"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
SRC_URI = "git://github.com/rust-num/num.git;protocol=https"
|
||||
SRCREV = "d9f08cb148cc686ec407c1e42fbd4536cde6ac82"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
require num.inc
|
||||
|
||||
DEPENDS += "\
|
||||
num-traits \
|
||||
num-integer \
|
||||
num-iter \
|
||||
"
|
||||
|
||||
LIB_SRC = "${S}/src/lib.rs"
|
||||
@@ -0,0 +1,18 @@
|
||||
SUMMARY = "Host SDK package for Rust cross canadian toolchain"
|
||||
PN = "packagegroup-rust-cross-canadian-${MACHINE}"
|
||||
|
||||
inherit cross-canadian packagegroup
|
||||
|
||||
PACKAGEGROUP_DISABLE_COMPLEMENTARY = "1"
|
||||
|
||||
RUST="rust-cross-canadian-${TRANSLATED_TARGET_ARCH}"
|
||||
CARGO="cargo-cross-canadian-${TRANSLATED_TARGET_ARCH}"
|
||||
RUST_TOOLS="rust-tools-cross-canadian-${TRANSLATED_TARGET_ARCH}"
|
||||
|
||||
RDEPENDS_${PN} = " \
|
||||
${@all_multilib_tune_values(d, 'RUST')} \
|
||||
${@all_multilib_tune_values(d, 'CARGO')} \
|
||||
rust-cross-canadian-src \
|
||||
${@all_multilib_tune_values(d, 'RUST_TOOLS')} \
|
||||
"
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
DESCRIPTION = "Random number generators and other randomness functionality."
|
||||
HOMEPAGE = "https://github.com/rust-lang/rand"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "\
|
||||
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
|
||||
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
|
||||
"
|
||||
DEPENDS = "libc-rs"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
SRC_URI = "git://github.com/rust-lang/rand.git;protocol=https"
|
||||
SRCREV = "f872fda5fb8fb899a837ee9eee0332076a8f5300"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -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,5 +0,0 @@
|
||||
DESCRIPTION = "A regular expression parser"
|
||||
|
||||
require regex.inc
|
||||
|
||||
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,22 +0,0 @@
|
||||
DESCRIPTION = "Generic serialization/deserialization support"
|
||||
HOMEPAGE = "https://github.com/rust-lang/rustc-serialize"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "\
|
||||
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
|
||||
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
|
||||
"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
SRC_URI = "git://github.com/rust-lang/rustc-serialize.git;protocol=https"
|
||||
SRCREV = "64b38a1f31a9af6eabf2894437aa5ccc3e457e68"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -1,26 +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 () {
|
||||
rm -rf time_helpers.o libtimehelpers.a
|
||||
${CC} ${S}/src/time_helpers.c -fPIC -c -o time_helpers.o
|
||||
${AR} rcs libtime_helpers.a time_helpers.o
|
||||
oe_compile_rust_lib -L native=$PWD -l static=time_helpers
|
||||
}
|
||||
|
||||
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,22 +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"
|
||||
DEPENDS += "libc-rs"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
SRC_URI = "git://github.com/dcuddeback/libudev-rs.git;protocol=https"
|
||||
SRCREV = "3da791245f206d0cf5a856531c574b8646b0f059"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -1,22 +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"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -1,22 +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 = "c49163f87d4d109ec21bcf8f8c51db560ed31b22"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
RUSTC_FLAGS += "-ludev"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
DESCRIPTION = "Unix domain socket bindings for Rust"
|
||||
HOMEPAGE = "https://github.com/sfackler/rust-unix-socket"
|
||||
LICENSE = "MIT"
|
||||
LIC_FILES_CHKSUM = "file://LICENSE;md5=bde86283c1fd74e84ebc3cf6dd7011d0"
|
||||
DEPENDS = "libc-rs debug-builders-rs"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
SRC_URI = "git://github.com/sfackler/rust-unix-socket.git;protocol=https"
|
||||
SRCREV = "d0f47ae888267a718072c3be5eed42ba1f637097"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
31
recipes-devtools/cargo/cargo-1.49.0/0001-Disable-http2.patch
Normal file
31
recipes-devtools/cargo/cargo-1.49.0/0001-Disable-http2.patch
Normal file
@@ -0,0 +1,31 @@
|
||||
From 7f8a197af9c33d0575187663f796f882064136dc Mon Sep 17 00:00:00 2001
|
||||
From: Johan Anderholm <johan.anderholm@gmail.com>
|
||||
Date: Sun, 27 Jan 2019 10:19:00 +0100
|
||||
Subject: [PATCH] Disable http2
|
||||
|
||||
http2 requires that curl is build with nghttp2 which in turn depends on
|
||||
many dependencies and ultimately a dependency loop in the case of
|
||||
curl-native. As long as multiplexing is disabled in cargo this should
|
||||
be fine.
|
||||
|
||||
Upstream-Status: Inappropriate
|
||||
---
|
||||
Cargo.toml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Cargo.toml b/Cargo.toml
|
||||
index fde0a3188..a4a51939a 100644
|
||||
--- a/Cargo.toml
|
||||
+++ b/Cargo.toml
|
||||
@@ -25,7 +25,7 @@ cargo-platform = { path = "crates/cargo-platform", version = "0.1.1" }
|
||||
crates-io = { path = "crates/crates-io", version = "0.31.1" }
|
||||
crossbeam-utils = "0.8"
|
||||
crypto-hash = "0.3.1"
|
||||
-curl = { version = "0.4.23", features = ["http2"] }
|
||||
+curl = { version = "0.4.23" }
|
||||
curl-sys = "0.4.22"
|
||||
env_logger = "0.8.1"
|
||||
pretty_env_logger = { version = "0.4", optional = true }
|
||||
--
|
||||
2.28.0
|
||||
|
||||
73
recipes-devtools/cargo/cargo-1.49.0/riscv-march.patch
Normal file
73
recipes-devtools/cargo/cargo-1.49.0/riscv-march.patch
Normal file
@@ -0,0 +1,73 @@
|
||||
Add suppor for riscv64 and riscv32 musl targets
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
--- a/vendor/cc/src/lib.rs
|
||||
+++ b/vendor/cc/src/lib.rs
|
||||
@@ -2361,6 +2361,7 @@ impl Build {
|
||||
"riscv-none-embed",
|
||||
]),
|
||||
"riscv64gc-unknown-linux-gnu" => Some("riscv64-linux-gnu"),
|
||||
+ "riscv64gc-unknown-linux-musl" => Some("riscv64-linux-musl"),
|
||||
"s390x-unknown-linux-gnu" => Some("s390x-linux-gnu"),
|
||||
"sparc-unknown-linux-gnu" => Some("sparc-linux-gnu"),
|
||||
"sparc64-unknown-linux-gnu" => Some("sparc64-linux-gnu"),
|
||||
--- a/compiler/rustc_target/src/spec/mod.rs
|
||||
+++ b/compiler/rustc_target/src/spec/mod.rs
|
||||
@@ -641,9 +641,11 @@ supported_targets! {
|
||||
("riscv32imc-unknown-none-elf", riscv32imc_unknown_none_elf),
|
||||
("riscv32imac-unknown-none-elf", riscv32imac_unknown_none_elf),
|
||||
("riscv32gc-unknown-linux-gnu", riscv32gc_unknown_linux_gnu),
|
||||
+ ("riscv32gc-unknown-linux-musl", riscv32gc_unknown_linux_musl),
|
||||
("riscv64imac-unknown-none-elf", riscv64imac_unknown_none_elf),
|
||||
("riscv64gc-unknown-none-elf", riscv64gc_unknown_none_elf),
|
||||
("riscv64gc-unknown-linux-gnu", riscv64gc_unknown_linux_gnu),
|
||||
+ ("riscv64gc-unknown-linux-musl", riscv64gc_unknown_linux_musl),
|
||||
|
||||
("aarch64-unknown-none", aarch64_unknown_none),
|
||||
("aarch64-unknown-none-softfloat", aarch64_unknown_none_softfloat),
|
||||
--- /dev/null
|
||||
+++ b/compiler/rustc_target/src/spec/riscv32gc_unknown_linux_musl.rs
|
||||
@@ -0,0 +1,19 @@
|
||||
+use crate::spec::{CodeModel, Target, TargetOptions};
|
||||
+
|
||||
+pub fn target() -> Target {
|
||||
+ Target {
|
||||
+ llvm_target: "riscv32-unknown-linux-musl".to_string(),
|
||||
+ pointer_width: 32,
|
||||
+ data_layout: "e-m:e-p:32:32-i64:64-n32-S128".to_string(),
|
||||
+ arch: "riscv32".to_string(),
|
||||
+ options: TargetOptions {
|
||||
+ unsupported_abis: super::riscv_base::unsupported_abis(),
|
||||
+ code_model: Some(CodeModel::Medium),
|
||||
+ cpu: "generic-rv32".to_string(),
|
||||
+ features: "+m,+a,+f,+d,+c".to_string(),
|
||||
+ llvm_abiname: "ilp32d".to_string(),
|
||||
+ max_atomic_width: Some(32),
|
||||
+ ..super::linux_musl_base::opts()
|
||||
+ },
|
||||
+ }
|
||||
+}
|
||||
--- /dev/null
|
||||
+++ b/compiler/rustc_target/src/spec/riscv64gc_unknown_linux_musl.rs
|
||||
@@ -0,0 +1,19 @@
|
||||
+use crate::spec::{CodeModel, Target, TargetOptions};
|
||||
+
|
||||
+pub fn target() -> Target {
|
||||
+ Target {
|
||||
+ llvm_target: "riscv64-unknown-linux-musl".to_string(),
|
||||
+ pointer_width: 64,
|
||||
+ data_layout: "e-m:e-p:64:64-i64:64-i128:128-n64-S128".to_string(),
|
||||
+ arch: "riscv64".to_string(),
|
||||
+ options: TargetOptions {
|
||||
+ unsupported_abis: super::riscv_base::unsupported_abis(),
|
||||
+ code_model: Some(CodeModel::Medium),
|
||||
+ cpu: "generic-rv64".to_string(),
|
||||
+ features: "+m,+a,+f,+d,+c".to_string(),
|
||||
+ llvm_abiname: "lp64d".to_string(),
|
||||
+ max_atomic_width: Some(64),
|
||||
+ ..super::linux_musl_base::opts()
|
||||
+ },
|
||||
+ }
|
||||
+}
|
||||
37
recipes-devtools/cargo/cargo-1.49.0/rv64gc.patch
Normal file
37
recipes-devtools/cargo/cargo-1.49.0/rv64gc.patch
Normal file
@@ -0,0 +1,37 @@
|
||||
--- a/vendor/cc-1.0.60/.cargo-checksum.json
|
||||
+++ b/vendor/cc-1.0.60/.cargo-checksum.json
|
||||
@@ -1 +1 @@
|
||||
-{"files":{"Cargo.lock":"30b9e23f97015aea3eed3e17c6d76d565c2924efec8bdae64c899080847afe89","Cargo.toml":"f6f22b69df3df57c58373cdee72b22218ffa030bc375b36632660037dd72c866","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"51405d284d2e0620db62c655c652fc0ec84f20c1cb30529227355c9575a9e6dd","src/bin/gcc-shim.rs":"b77907875029494b6288841c3aed2e4939ed40708c7f597fca5c9e2570490ca6","src/com.rs":"bcdaf1c28b71e6ef889c6b08d1ce9d7c0761344a677f523bc4c3cd297957f804","src/lib.rs":"903c5f2f5dd0cc7d04f99f605a95e6abde8b38156fd4e73eefc58493f55a4e5a","src/registry.rs":"3cc1b5a50879fa751572878ae1d0afbfc960c11665258492754b2c8bccb0ff5d","src/setup_config.rs":"7014103587d3382eac599cb76f016e2609b8140970861b2237982d1db24af265","src/winapi.rs":"ea8b7edbb9ff87957254f465c2334e714c5d6b3b19a8d757c48ea7ca0881c50c","src/windows_registry.rs":"52afe8554f577c87841c48ddee3ba7ffe70a00129e1d6eeb2ec0efb3d2b9aa11","tests/cc_env.rs":"e02b3b0824ad039b47e4462c5ef6dbe6c824c28e7953af94a0f28f7b5158042e","tests/cflags.rs":"57f06eb5ce1557e5b4a032d0c4673e18fbe6f8d26c1deb153126e368b96b41b3","tests/cxxflags.rs":"c2c6c6d8a0d7146616fa1caed26876ee7bc9fcfffd525eb4743593cade5f3371","tests/support/mod.rs":"16274867f23871e9b07614eda4c7344da13d1751fed63d4f633857e40be86394","tests/test.rs":"65c073e0e2cf4aa0433066102788e9f57442719e6f32f5ad5248aa7132bb4597"},"package":"ef611cc68ff783f18535d77ddd080185275713d852c4f5cbb6122c462a7a825c"}
|
||||
\ No newline at end of file
|
||||
+{"files":{"Cargo.lock":"30b9e23f97015aea3eed3e17c6d76d565c2924efec8bdae64c899080847afe89","Cargo.toml":"f6f22b69df3df57c58373cdee72b22218ffa030bc375b36632660037dd72c866","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"51405d284d2e0620db62c655c652fc0ec84f20c1cb30529227355c9575a9e6dd","src/bin/gcc-shim.rs":"b77907875029494b6288841c3aed2e4939ed40708c7f597fca5c9e2570490ca6","src/com.rs":"bcdaf1c28b71e6ef889c6b08d1ce9d7c0761344a677f523bc4c3cd297957f804","src/lib.rs":"2788af2bdf425f267b33bc524f3e627851b52422e38f480a7e39eb834264fd73","src/registry.rs":"3cc1b5a50879fa751572878ae1d0afbfc960c11665258492754b2c8bccb0ff5d","src/setup_config.rs":"7014103587d3382eac599cb76f016e2609b8140970861b2237982d1db24af265","src/winapi.rs":"ea8b7edbb9ff87957254f465c2334e714c5d6b3b19a8d757c48ea7ca0881c50c","src/windows_registry.rs":"52afe8554f577c87841c48ddee3ba7ffe70a00129e1d6eeb2ec0efb3d2b9aa11","tests/cc_env.rs":"e02b3b0824ad039b47e4462c5ef6dbe6c824c28e7953af94a0f28f7b5158042e","tests/cflags.rs":"57f06eb5ce1557e5b4a032d0c4673e18fbe6f8d26c1deb153126e368b96b41b3","tests/cxxflags.rs":"c2c6c6d8a0d7146616fa1caed26876ee7bc9fcfffd525eb4743593cade5f3371","tests/support/mod.rs":"16274867f23871e9b07614eda4c7344da13d1751fed63d4f633857e40be86394","tests/test.rs":"65c073e0e2cf4aa0433066102788e9f57442719e6f32f5ad5248aa7132bb4597"},"package":"ef611cc68ff783f18535d77ddd080185275713d852c4f5cbb6122c462a7a825c"}
|
||||
--- a/vendor/cc-1.0.60/src/lib.rs
|
||||
+++ b/vendor/cc-1.0.60/src/lib.rs
|
||||
@@ -1639,14 +1639,17 @@ impl Build {
|
||||
let mut parts = target.split('-');
|
||||
if let Some(arch) = parts.next() {
|
||||
let arch = &arch[5..];
|
||||
- cmd.args.push(("-march=rv".to_owned() + arch).into());
|
||||
if target.contains("linux") && arch.starts_with("64") {
|
||||
+ cmd.args.push(("-march=rv64gc").into());
|
||||
cmd.args.push("-mabi=lp64d".into());
|
||||
} else if target.contains("linux") && arch.starts_with("32") {
|
||||
+ cmd.args.push(("-march=rv32gc").into());
|
||||
cmd.args.push("-mabi=ilp32d".into());
|
||||
} else if arch.starts_with("64") {
|
||||
+ cmd.args.push(("-march=rv".to_owned() + arch).into());
|
||||
cmd.args.push("-mabi=lp64".into());
|
||||
} else {
|
||||
+ cmd.args.push(("-march=rv".to_owned() + arch).into());
|
||||
cmd.args.push("-mabi=ilp32".into());
|
||||
}
|
||||
cmd.args.push("-mcmodel=medany".into());
|
||||
@@ -2332,6 +2335,9 @@ impl Build {
|
||||
"riscv-none-embed",
|
||||
]),
|
||||
"riscv64gc-unknown-linux-gnu" => Some("riscv64-linux-gnu"),
|
||||
+ "riscv32gc-unknown-linux-gnu" => Some("riscv32-linux-gnu"),
|
||||
+ "riscv64gc-unknown-linux-musl" => Some("riscv64-linux-musl"),
|
||||
+ "riscv32gc-unknown-linux-musl" => Some("riscv32-linux-musl"),
|
||||
"s390x-unknown-linux-gnu" => Some("s390x-linux-gnu"),
|
||||
"sparc-unknown-linux-gnu" => Some("sparc-linux-gnu"),
|
||||
"sparc64-unknown-linux-gnu" => Some("sparc64-linux-gnu"),
|
||||
28
recipes-devtools/cargo/cargo-1.51.0/0001-Disable-http2.patch
Normal file
28
recipes-devtools/cargo/cargo-1.51.0/0001-Disable-http2.patch
Normal file
@@ -0,0 +1,28 @@
|
||||
From 9844e63845da6cdafa485ad1ad3c99eaaa80312d Mon Sep 17 00:00:00 2001
|
||||
From: Johan Anderholm <johan.anderholm@gmail.com>
|
||||
Date: Sun, 27 Jan 2019 10:19:00 +0100
|
||||
Subject: [PATCH] Disable http2
|
||||
|
||||
http2 requires that curl is build with nghttp2 which in turn depends on
|
||||
many dependencies and ultimately a dependency loop in the case of
|
||||
curl-native. As long as multiplexing is disabled in cargo this should
|
||||
be fine.
|
||||
|
||||
Upstream-Status: Inappropriate
|
||||
---
|
||||
Cargo.toml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Cargo.toml b/Cargo.toml
|
||||
index 8a144a4..c4f856e 100644
|
||||
--- a/Cargo.toml
|
||||
+++ b/Cargo.toml
|
||||
@@ -25,7 +25,7 @@ cargo-platform = { path = "crates/cargo-platform", version = "0.1.1" }
|
||||
crates-io = { path = "crates/crates-io", version = "0.33.0" }
|
||||
crossbeam-utils = "0.8"
|
||||
crypto-hash = "0.3.1"
|
||||
-curl = { version = "0.4.23", features = ["http2"] }
|
||||
+curl = { version = "0.4.23" }
|
||||
curl-sys = "0.4.22"
|
||||
env_logger = "0.8.1"
|
||||
pretty_env_logger = { version = "0.4", optional = true }
|
||||
73
recipes-devtools/cargo/cargo-1.51.0/riscv-march.patch
Normal file
73
recipes-devtools/cargo/cargo-1.51.0/riscv-march.patch
Normal file
@@ -0,0 +1,73 @@
|
||||
Add suppor for riscv64 and riscv32 musl targets
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
--- a/vendor/cc/src/lib.rs
|
||||
+++ b/vendor/cc/src/lib.rs
|
||||
@@ -2361,6 +2361,7 @@ impl Build {
|
||||
"riscv-none-embed",
|
||||
]),
|
||||
"riscv64gc-unknown-linux-gnu" => Some("riscv64-linux-gnu"),
|
||||
+ "riscv64gc-unknown-linux-musl" => Some("riscv64-linux-musl"),
|
||||
"s390x-unknown-linux-gnu" => Some("s390x-linux-gnu"),
|
||||
"sparc-unknown-linux-gnu" => Some("sparc-linux-gnu"),
|
||||
"sparc64-unknown-linux-gnu" => Some("sparc64-linux-gnu"),
|
||||
--- a/compiler/rustc_target/src/spec/mod.rs
|
||||
+++ b/compiler/rustc_target/src/spec/mod.rs
|
||||
@@ -641,9 +641,11 @@ supported_targets! {
|
||||
("riscv32imc-unknown-none-elf", riscv32imc_unknown_none_elf),
|
||||
("riscv32imac-unknown-none-elf", riscv32imac_unknown_none_elf),
|
||||
("riscv32gc-unknown-linux-gnu", riscv32gc_unknown_linux_gnu),
|
||||
+ ("riscv32gc-unknown-linux-musl", riscv32gc_unknown_linux_musl),
|
||||
("riscv64imac-unknown-none-elf", riscv64imac_unknown_none_elf),
|
||||
("riscv64gc-unknown-none-elf", riscv64gc_unknown_none_elf),
|
||||
("riscv64gc-unknown-linux-gnu", riscv64gc_unknown_linux_gnu),
|
||||
+ ("riscv64gc-unknown-linux-musl", riscv64gc_unknown_linux_musl),
|
||||
|
||||
("aarch64-unknown-none", aarch64_unknown_none),
|
||||
("aarch64-unknown-none-softfloat", aarch64_unknown_none_softfloat),
|
||||
--- /dev/null
|
||||
+++ b/compiler/rustc_target/src/spec/riscv32gc_unknown_linux_musl.rs
|
||||
@@ -0,0 +1,19 @@
|
||||
+use crate::spec::{CodeModel, Target, TargetOptions};
|
||||
+
|
||||
+pub fn target() -> Target {
|
||||
+ Target {
|
||||
+ llvm_target: "riscv32-unknown-linux-musl".to_string(),
|
||||
+ pointer_width: 32,
|
||||
+ data_layout: "e-m:e-p:32:32-i64:64-n32-S128".to_string(),
|
||||
+ arch: "riscv32".to_string(),
|
||||
+ options: TargetOptions {
|
||||
+ unsupported_abis: super::riscv_base::unsupported_abis(),
|
||||
+ code_model: Some(CodeModel::Medium),
|
||||
+ cpu: "generic-rv32".to_string(),
|
||||
+ features: "+m,+a,+f,+d,+c".to_string(),
|
||||
+ llvm_abiname: "ilp32d".to_string(),
|
||||
+ max_atomic_width: Some(32),
|
||||
+ ..super::linux_musl_base::opts()
|
||||
+ },
|
||||
+ }
|
||||
+}
|
||||
--- /dev/null
|
||||
+++ b/compiler/rustc_target/src/spec/riscv64gc_unknown_linux_musl.rs
|
||||
@@ -0,0 +1,19 @@
|
||||
+use crate::spec::{CodeModel, Target, TargetOptions};
|
||||
+
|
||||
+pub fn target() -> Target {
|
||||
+ Target {
|
||||
+ llvm_target: "riscv64-unknown-linux-musl".to_string(),
|
||||
+ pointer_width: 64,
|
||||
+ data_layout: "e-m:e-p:64:64-i64:64-i128:128-n64-S128".to_string(),
|
||||
+ arch: "riscv64".to_string(),
|
||||
+ options: TargetOptions {
|
||||
+ unsupported_abis: super::riscv_base::unsupported_abis(),
|
||||
+ code_model: Some(CodeModel::Medium),
|
||||
+ cpu: "generic-rv64".to_string(),
|
||||
+ features: "+m,+a,+f,+d,+c".to_string(),
|
||||
+ llvm_abiname: "lp64d".to_string(),
|
||||
+ max_atomic_width: Some(64),
|
||||
+ ..super::linux_musl_base::opts()
|
||||
+ },
|
||||
+ }
|
||||
+}
|
||||
37
recipes-devtools/cargo/cargo-1.51.0/rv64gc.patch
Normal file
37
recipes-devtools/cargo/cargo-1.51.0/rv64gc.patch
Normal file
@@ -0,0 +1,37 @@
|
||||
--- a/vendor/cc-1.0.60/.cargo-checksum.json
|
||||
+++ b/vendor/cc-1.0.60/.cargo-checksum.json
|
||||
@@ -1 +1 @@
|
||||
-{"files":{"Cargo.lock":"30b9e23f97015aea3eed3e17c6d76d565c2924efec8bdae64c899080847afe89","Cargo.toml":"f6f22b69df3df57c58373cdee72b22218ffa030bc375b36632660037dd72c866","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"51405d284d2e0620db62c655c652fc0ec84f20c1cb30529227355c9575a9e6dd","src/bin/gcc-shim.rs":"b77907875029494b6288841c3aed2e4939ed40708c7f597fca5c9e2570490ca6","src/com.rs":"bcdaf1c28b71e6ef889c6b08d1ce9d7c0761344a677f523bc4c3cd297957f804","src/lib.rs":"903c5f2f5dd0cc7d04f99f605a95e6abde8b38156fd4e73eefc58493f55a4e5a","src/registry.rs":"3cc1b5a50879fa751572878ae1d0afbfc960c11665258492754b2c8bccb0ff5d","src/setup_config.rs":"7014103587d3382eac599cb76f016e2609b8140970861b2237982d1db24af265","src/winapi.rs":"ea8b7edbb9ff87957254f465c2334e714c5d6b3b19a8d757c48ea7ca0881c50c","src/windows_registry.rs":"52afe8554f577c87841c48ddee3ba7ffe70a00129e1d6eeb2ec0efb3d2b9aa11","tests/cc_env.rs":"e02b3b0824ad039b47e4462c5ef6dbe6c824c28e7953af94a0f28f7b5158042e","tests/cflags.rs":"57f06eb5ce1557e5b4a032d0c4673e18fbe6f8d26c1deb153126e368b96b41b3","tests/cxxflags.rs":"c2c6c6d8a0d7146616fa1caed26876ee7bc9fcfffd525eb4743593cade5f3371","tests/support/mod.rs":"16274867f23871e9b07614eda4c7344da13d1751fed63d4f633857e40be86394","tests/test.rs":"65c073e0e2cf4aa0433066102788e9f57442719e6f32f5ad5248aa7132bb4597"},"package":"ef611cc68ff783f18535d77ddd080185275713d852c4f5cbb6122c462a7a825c"}
|
||||
\ No newline at end of file
|
||||
+{"files":{"Cargo.lock":"30b9e23f97015aea3eed3e17c6d76d565c2924efec8bdae64c899080847afe89","Cargo.toml":"f6f22b69df3df57c58373cdee72b22218ffa030bc375b36632660037dd72c866","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"51405d284d2e0620db62c655c652fc0ec84f20c1cb30529227355c9575a9e6dd","src/bin/gcc-shim.rs":"b77907875029494b6288841c3aed2e4939ed40708c7f597fca5c9e2570490ca6","src/com.rs":"bcdaf1c28b71e6ef889c6b08d1ce9d7c0761344a677f523bc4c3cd297957f804","src/lib.rs":"2788af2bdf425f267b33bc524f3e627851b52422e38f480a7e39eb834264fd73","src/registry.rs":"3cc1b5a50879fa751572878ae1d0afbfc960c11665258492754b2c8bccb0ff5d","src/setup_config.rs":"7014103587d3382eac599cb76f016e2609b8140970861b2237982d1db24af265","src/winapi.rs":"ea8b7edbb9ff87957254f465c2334e714c5d6b3b19a8d757c48ea7ca0881c50c","src/windows_registry.rs":"52afe8554f577c87841c48ddee3ba7ffe70a00129e1d6eeb2ec0efb3d2b9aa11","tests/cc_env.rs":"e02b3b0824ad039b47e4462c5ef6dbe6c824c28e7953af94a0f28f7b5158042e","tests/cflags.rs":"57f06eb5ce1557e5b4a032d0c4673e18fbe6f8d26c1deb153126e368b96b41b3","tests/cxxflags.rs":"c2c6c6d8a0d7146616fa1caed26876ee7bc9fcfffd525eb4743593cade5f3371","tests/support/mod.rs":"16274867f23871e9b07614eda4c7344da13d1751fed63d4f633857e40be86394","tests/test.rs":"65c073e0e2cf4aa0433066102788e9f57442719e6f32f5ad5248aa7132bb4597"},"package":"ef611cc68ff783f18535d77ddd080185275713d852c4f5cbb6122c462a7a825c"}
|
||||
--- a/vendor/cc-1.0.60/src/lib.rs
|
||||
+++ b/vendor/cc-1.0.60/src/lib.rs
|
||||
@@ -1639,14 +1639,17 @@ impl Build {
|
||||
let mut parts = target.split('-');
|
||||
if let Some(arch) = parts.next() {
|
||||
let arch = &arch[5..];
|
||||
- cmd.args.push(("-march=rv".to_owned() + arch).into());
|
||||
if target.contains("linux") && arch.starts_with("64") {
|
||||
+ cmd.args.push(("-march=rv64gc").into());
|
||||
cmd.args.push("-mabi=lp64d".into());
|
||||
} else if target.contains("linux") && arch.starts_with("32") {
|
||||
+ cmd.args.push(("-march=rv32gc").into());
|
||||
cmd.args.push("-mabi=ilp32d".into());
|
||||
} else if arch.starts_with("64") {
|
||||
+ cmd.args.push(("-march=rv".to_owned() + arch).into());
|
||||
cmd.args.push("-mabi=lp64".into());
|
||||
} else {
|
||||
+ cmd.args.push(("-march=rv".to_owned() + arch).into());
|
||||
cmd.args.push("-mabi=ilp32".into());
|
||||
}
|
||||
cmd.args.push("-mcmodel=medany".into());
|
||||
@@ -2332,6 +2335,9 @@ impl Build {
|
||||
"riscv-none-embed",
|
||||
]),
|
||||
"riscv64gc-unknown-linux-gnu" => Some("riscv64-linux-gnu"),
|
||||
+ "riscv32gc-unknown-linux-gnu" => Some("riscv32-linux-gnu"),
|
||||
+ "riscv64gc-unknown-linux-musl" => Some("riscv64-linux-musl"),
|
||||
+ "riscv32gc-unknown-linux-musl" => Some("riscv32-linux-musl"),
|
||||
"s390x-unknown-linux-gnu" => Some("s390x-linux-gnu"),
|
||||
"sparc-unknown-linux-gnu" => Some("sparc-linux-gnu"),
|
||||
"sparc64-unknown-linux-gnu" => Some("sparc64-linux-gnu"),
|
||||
74
recipes-devtools/cargo/cargo-cross-canadian.inc
Normal file
74
recipes-devtools/cargo/cargo-cross-canadian.inc
Normal file
@@ -0,0 +1,74 @@
|
||||
SUMMARY = "Cargo, a package manager for Rust cross canadian flavor."
|
||||
|
||||
RUST_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config"
|
||||
|
||||
HOST_SYS = "${HOST_ARCH}-unknown-linux-gnu"
|
||||
CARGO_RUST_TARGET_CCLD = "${RUST_BUILD_CCLD}"
|
||||
|
||||
require recipes-devtools/rust/rust-common.inc
|
||||
require cargo.inc
|
||||
|
||||
CARGO = "${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo"
|
||||
BASEDEPENDS_remove = "cargo-native"
|
||||
|
||||
export RUST_TARGET_PATH="${WORKDIR}/targets/"
|
||||
|
||||
RUSTLIB = " \
|
||||
-L ${STAGING_DIR_NATIVE}/${SDKPATHNATIVE}/usr/lib/${TARGET_SYS}/rustlib/${HOST_SYS}/lib \
|
||||
"
|
||||
|
||||
DEPENDS += "rust-native \
|
||||
rust-cross-canadian-${TRANSLATED_TARGET_ARCH} \
|
||||
virtual/nativesdk-${HOST_PREFIX}compilerlibs \
|
||||
nativesdk-openssl nativesdk-zlib \
|
||||
virtual/nativesdk-libc \
|
||||
"
|
||||
|
||||
inherit cross-canadian
|
||||
|
||||
PN = "cargo-cross-canadian-${TRANSLATED_TARGET_ARCH}"
|
||||
|
||||
LLVM_TARGET[x86_64] = "${RUST_HOST_SYS}"
|
||||
|
||||
python do_rust_gen_targets () {
|
||||
wd = d.getVar('WORKDIR') + '/targets/'
|
||||
|
||||
rust_gen_target(d, 'BUILD', wd, "", "generic", d.getVar('BUILD_ARCH'))
|
||||
rust_gen_target(d, 'HOST', wd, "", "generic", d.getVar('HOST_ARCH'))
|
||||
}
|
||||
|
||||
do_compile_prepend () {
|
||||
PKG_CONFIG_PATH="${RECIPE_SYSROOT_NATIVE}/usr/lib/pkgconfig:${PKG_CONFIG_PATH}"
|
||||
}
|
||||
|
||||
do_install () {
|
||||
SYS_BINDIR=$(dirname ${D}${bindir})
|
||||
install -d "${SYS_BINDIR}"
|
||||
install -m 755 "${B}/target/${CARGO_TARGET_SUBDIR}/cargo" "${SYS_BINDIR}"
|
||||
for i in ${SYS_BINDIR}/*; do
|
||||
chrpath -r "\$ORIGIN/../lib" ${i}
|
||||
done
|
||||
|
||||
ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
|
||||
mkdir "${ENV_SETUP_DIR}"
|
||||
ENV_SETUP_SH="${ENV_SETUP_DIR}/cargo.sh"
|
||||
cat <<- EOF > "${ENV_SETUP_SH}"
|
||||
export CARGO_HOME="\$OECORE_TARGET_SYSROOT/home/cargo"
|
||||
mkdir -p "\$CARGO_HOME"
|
||||
# Init the default target once, it might be otherwise user modified.
|
||||
if [ ! -f "\$CARGO_HOME/config" ]; then
|
||||
touch "\$CARGO_HOME/config"
|
||||
echo "[build]" >> "\$CARGO_HOME/config"
|
||||
echo 'target = "'${TARGET_SYS}'"' >> "\$CARGO_HOME/config"
|
||||
fi
|
||||
|
||||
# Keep the below off as long as HTTP/2 is disabled.
|
||||
export CARGO_HTTP_MULTIPLEXING=false
|
||||
|
||||
export CARGO_HTTP_CAINFO="\$OECORE_NATIVE_SYSROOT/etc/ssl/certs/ca-certificates.crt"
|
||||
EOF
|
||||
}
|
||||
|
||||
PKG_SYS_BINDIR = "${SDKPATHNATIVE}/usr/bin"
|
||||
FILES_${PN} += "${base_prefix}/environment-setup.d ${PKG_SYS_BINDIR}"
|
||||
|
||||
6
recipes-devtools/cargo/cargo-cross-canadian_1.49.0.bb
Normal file
6
recipes-devtools/cargo/cargo-cross-canadian_1.49.0.bb
Normal file
@@ -0,0 +1,6 @@
|
||||
require recipes-devtools/rust/rust-source-${PV}.inc
|
||||
require recipes-devtools/rust/rust-snapshot-${PV}.inc
|
||||
|
||||
FILESEXTRAPATHS_prepend := "${THISDIR}/cargo-${PV}:"
|
||||
|
||||
require cargo-cross-canadian.inc
|
||||
6
recipes-devtools/cargo/cargo-cross-canadian_1.51.0.bb
Normal file
6
recipes-devtools/cargo/cargo-cross-canadian_1.51.0.bb
Normal file
@@ -0,0 +1,6 @@
|
||||
require recipes-devtools/rust/rust-source-${PV}.inc
|
||||
require recipes-devtools/rust/rust-snapshot-${PV}.inc
|
||||
|
||||
FILESEXTRAPATHS_prepend := "${THISDIR}/cargo-${PV}:"
|
||||
|
||||
require cargo-cross-canadian.inc
|
||||
@@ -1,4 +0,0 @@
|
||||
|
||||
CARGO_SNAPSHOT = "2016-09-01/cargo-nightly-x86_64-unknown-linux-gnu.tar.gz;downloadfilename=cargo-nightly-x86_64-unknown-linux-gnu-2016-09-01.tar.gz"
|
||||
SRC_URI[md5sum] = "d41ebf79290a7c9c9e5df87cb27e5091"
|
||||
SRC_URI[sha256sum] = "365e5cad79512d244b8ced32f8e5b86a710fc6c17f0d0f5f744b8058ef6dc756"
|
||||
@@ -1,59 +1,51 @@
|
||||
inherit cargo
|
||||
inherit patch
|
||||
|
||||
SUMMARY = "Cargo downloads your Rust project's dependencies and builds your project"
|
||||
HOMEPAGE = "http://crates.io"
|
||||
SECTION = "devel"
|
||||
SUMMARY ?= "Cargo, a package manager for Rust."
|
||||
HOMEPAGE = "https://crates.io"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
SECTION = "devel"
|
||||
|
||||
DEPENDS = "openssl zlib libgit2 curl ca-certificates libssh2"
|
||||
DEPENDS = "openssl zlib curl ca-certificates libssh2"
|
||||
|
||||
CARGO_INDEX_COMMIT = "6127fc24b0b6fe73fe4d339817fbf000b9a798a2"
|
||||
|
||||
SRC_URI = "\
|
||||
http://static-rust-lang-org.s3.amazonaws.com/cargo-dist/${CARGO_SNAPSHOT} \
|
||||
crate-index://crates.io/${CARGO_INDEX_COMMIT} \
|
||||
LIC_FILES_CHKSUM = " \
|
||||
file://LICENSE-MIT;md5=b377b220f43d747efdec40d69fcaa69d \
|
||||
file://LICENSE-APACHE;md5=71b224ca933f0676e26d5c2e2271331c \
|
||||
file://LICENSE-THIRD-PARTY;md5=f257ad009884cb88a3a87d6920e7180a \
|
||||
"
|
||||
|
||||
B = "${S}"
|
||||
SRC_URI += "file://0001-Disable-http2.patch"
|
||||
|
||||
# Used in libgit2-sys's build.rs, needed for pkg-config to be used
|
||||
export LIBGIT2_SYS_USE_PKG_CONFIG = "1"
|
||||
S = "${RUSTSRC}/src/tools/cargo"
|
||||
CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor"
|
||||
|
||||
# cargo's configure doesn't recognize --disable-static, so remove it.
|
||||
DISABLE_STATIC = ""
|
||||
inherit cargo
|
||||
|
||||
do_configure () {
|
||||
"${S}/configure" \
|
||||
"--prefix=${prefix}" \
|
||||
"--build=${BUILD_SYS}" \
|
||||
"--host=${HOST_SYS}" \
|
||||
"--target=${TARGET_SYS}" \
|
||||
"--localstatedir=${localstatedir}" \
|
||||
"--sysconfdir=${sysconfdir}" \
|
||||
"--datadir=${datadir}" \
|
||||
"--infodir=${infodir}" \
|
||||
"--mandir=${mandir}" \
|
||||
"--libdir=${libdir}" \
|
||||
"--disable-verify-install" \
|
||||
${EXTRA_OECONF} \
|
||||
|| die "Could not configure cargo"
|
||||
|
||||
cargo_do_configure
|
||||
do_cargo_setup_snapshot () {
|
||||
${WORKDIR}/rust-snapshot-components/${CARGO_SNAPSHOT}/install.sh --prefix="${WORKDIR}/${CARGO_SNAPSHOT}" --disable-ldconfig
|
||||
}
|
||||
|
||||
do_compile () {
|
||||
oe_cargo_fix_env
|
||||
addtask cargo_setup_snapshot after do_unpack before do_configure
|
||||
do_cargo_setup_snapshot[dirs] += "${WORKDIR}/${CARGO_SNAPSHOT}"
|
||||
|
||||
rm -rf target/snapshot
|
||||
mkdir -p target
|
||||
cp -R ${WORKDIR}/cargo-nightly-x86_64-unknown-linux-gnu/cargo target/snapshot
|
||||
|
||||
oe_runmake VERBOSE=1
|
||||
do_compile_prepend () {
|
||||
export RUSTC_BOOTSTRAP="1"
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_runmake prepare-image-${TARGET_SYS} IMGDIR_${TARGET_SYS}="${D}${prefix}"
|
||||
install -d "${D}${bindir}"
|
||||
install -m 755 "${B}/target/${CARGO_TARGET_SUBDIR}/cargo" "${D}${bindir}"
|
||||
}
|
||||
|
||||
BBCLASSEXTEND = "native"
|
||||
# Disabled due to incompatibility with libgit2 0.28.x (https://github.com/rust-lang/git2-rs/issues/458, https://bugs.gentoo.org/707746#c1)
|
||||
# as shipped by Yocto Dunfell.
|
||||
# According to https://github.com/rust-lang/git2-rs/issues/458#issuecomment-522567539, there are no compatibility guarantees between
|
||||
# libgit2-sys and arbitrary system libgit2 versions, so better keep this turned off.
|
||||
#export LIBGIT2_SYS_USE_PKG_CONFIG = "1"
|
||||
|
||||
# Needed for pkg-config to be used
|
||||
export LIBSSH2_SYS_USE_PKG_CONFIG = "1"
|
||||
|
||||
BBCLASSEXTEND = "native nativesdk"
|
||||
|
||||
# When building cargo-native we don't have cargo-native to use and depend on,
|
||||
# so we must use the locally set up snapshot to bootstrap the build.
|
||||
BASEDEPENDS_remove_class-native = "cargo-native"
|
||||
CARGO_class-native = "${WORKDIR}/${CARGO_SNAPSHOT}/bin/cargo"
|
||||
|
||||
@@ -1,105 +0,0 @@
|
||||
require cargo-snapshot.inc
|
||||
require cargo.inc
|
||||
|
||||
SRC_URI += " \
|
||||
git://github.com/rust-lang/cargo.git;protocol=https;name=cargo \
|
||||
file://0001-disable-cargo-snapshot-fetch.patch \
|
||||
file://0001-Never-update-the-registry-index.patch \
|
||||
crate://crates.io/advapi32-sys/0.1.2 \
|
||||
crate://crates.io/bufstream/0.1.1 \
|
||||
crate://crates.io/crossbeam/0.2.8 \
|
||||
crate://crates.io/docopt/0.6.78 \
|
||||
crate://crates.io/env_logger/0.3.2 \
|
||||
crate://crates.io/filetime/0.1.10 \
|
||||
crate://crates.io/flate2/0.2.13 \
|
||||
crate://crates.io/fs2/0.2.3 \
|
||||
crate://crates.io/glob/0.2.11 \
|
||||
crate://crates.io/hamcrest/0.1.0 \
|
||||
crate://crates.io/kernel32-sys/0.2.1 \
|
||||
crate://crates.io/libc/0.2.8 \
|
||||
crate://crates.io/log/0.3.5 \
|
||||
crate://crates.io/num_cpus/0.2.11 \
|
||||
crate://crates.io/regex/0.1.58 \
|
||||
crate://crates.io/rustc-serialize/0.3.18 \
|
||||
crate://crates.io/tar/0.4.5 \
|
||||
crate://crates.io/tempdir/0.3.4 \
|
||||
crate://crates.io/term/0.4.4 \
|
||||
crate://crates.io/toml/0.1.28 \
|
||||
crate://crates.io/url/1.1.0 \
|
||||
crate://crates.io/winapi/0.2.6 \
|
||||
crate://crates.io/semver/0.2.3 \
|
||||
crate://crates.io/regex-syntax/0.3.0 \
|
||||
crate://crates.io/utf8-ranges/0.1.3 \
|
||||
crate://crates.io/gcc/0.3.26 \
|
||||
crate://crates.io/unicode-normalization/0.1.2 \
|
||||
crate://crates.io/libz-sys/1.0.2 \
|
||||
crate://crates.io/rand/0.3.14 \
|
||||
crate://crates.io/user32-sys/0.1.2 \
|
||||
crate://crates.io/idna/0.1.0 \
|
||||
crate://crates.io/strsim/0.3.0 \
|
||||
crate://crates.io/matches/0.1.2 \
|
||||
crate://crates.io/cmake/0.1.16 \
|
||||
crate://crates.io/gdi32-sys/0.1.1 \
|
||||
crate://crates.io/bitflags/0.1.1 \
|
||||
crate://crates.io/unicode-bidi/0.2.3 \
|
||||
crate://crates.io/pkg-config/0.3.8 \
|
||||
crate://crates.io/winapi-build/0.1.1 \
|
||||
crate://crates.io/memchr/0.1.10 \
|
||||
crate://crates.io/pnacl-build-helper/1.4.10 \
|
||||
crate://crates.io/nom/1.2.2 \
|
||||
crate://crates.io/num/0.1.31 \
|
||||
crate://crates.io/uuid/0.2.3 \
|
||||
crate://crates.io/aho-corasick/0.5.1 \
|
||||
crate://crates.io/libressl-pnacl-sys/2.1.6 \
|
||||
crate://crates.io/miniz-sys/0.1.7 \
|
||||
crate://crates.io/openssl-sys/0.7.8 \
|
||||
crate://crates.io/url/0.5.10 \
|
||||
"
|
||||
# Compatible with Rust 1.10.0
|
||||
# https://static.rust-lang.org/dist/channel-rust-1.10.0.toml
|
||||
SRCREV_cargo = "259324cd8f9bb6e1068a3a2b77685e90fda3e3b6"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
LIC_FILES_CHKSUM ="\
|
||||
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
|
||||
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
|
||||
file://LICENSE-THIRD-PARTY;md5=892ea68b169e69cfe75097fc38a15b56 \
|
||||
"
|
||||
|
||||
## curl-rust
|
||||
SRC_URI += "\
|
||||
git://github.com/carllerche/curl-rust.git;protocol=https;destsuffix=curl-rust;name=curl-rust \
|
||||
file://curl-rust/0001-curl-sys-avoid-explicitly-linking-in-openssl.patch;patchdir=../curl-rust \
|
||||
file://curl-rust/0002-remove-per-triple-deps-on-openssl-sys.patch;patchdir=../curl-rust \
|
||||
"
|
||||
|
||||
# 0.2.19 / -sys 0.1.34
|
||||
SRCREV_curl-rust = "45b8cb56fbed45f828f96bdd8c286b2b3a8a26cb"
|
||||
|
||||
SRCREV_FORMAT .= "_curl-rust"
|
||||
EXTRA_OECARGO_PATHS += "${WORKDIR}/curl-rust"
|
||||
|
||||
## ssh2-rs
|
||||
SRC_URI += "\
|
||||
git://github.com/alexcrichton/ssh2-rs.git;protocol=https;name=ssh2-rs;destsuffix=ssh2-rs \
|
||||
file://ssh2-rs/0001-libssh2-sys-avoid-explicitly-linking-in-openssl.patch;patchdir=../ssh2-rs \
|
||||
"
|
||||
|
||||
# 0.2.11 / -sys 0.1.37
|
||||
SRCREV_ssh2-rs = "ced77751cb780d0725a3411bd588c5a26ea79953"
|
||||
|
||||
SRCREV_FORMAT .= "_ssh2-rs"
|
||||
EXTRA_OECARGO_PATHS += "${WORKDIR}/ssh2-rs"
|
||||
|
||||
## git2-rs
|
||||
SRC_URI += "\
|
||||
git://github.com/alexcrichton/git2-rs.git;protocol=https;name=git2-rs;destsuffix=git2-rs \
|
||||
file://git2-rs/0001-libgit2-sys-avoid-blessed-triples.patch;patchdir=../git2-rs \
|
||||
"
|
||||
|
||||
# 0.4.3 / -sys 0.4.2
|
||||
SRCREV_git2-rs = "cd14fc7801e70d3b26a4e7e5d94785af1f7e9e58"
|
||||
|
||||
SRCREV_FORMAT .= "_git2-rs"
|
||||
EXTRA_OECARGO_PATHS += "${WORKDIR}/git2-rs"
|
||||
@@ -1,86 +0,0 @@
|
||||
require cargo-snapshot.inc
|
||||
require cargo.inc
|
||||
|
||||
SRC_URI += " \
|
||||
git://github.com/rust-lang/cargo.git;protocol=https;name=cargo \
|
||||
crate://crates.io/advapi32-sys/0.2.0 \
|
||||
crate://crates.io/aho-corasick/0.5.2 \
|
||||
crate://crates.io/bitflags/0.1.1 \
|
||||
crate://crates.io/bitflags/0.7.0 \
|
||||
crate://crates.io/bufstream/0.1.2 \
|
||||
crate://crates.io/cfg-if/0.1.0 \
|
||||
crate://crates.io/cmake/0.1.17 \
|
||||
crate://crates.io/crossbeam/0.2.9 \
|
||||
crate://crates.io/curl-sys/0.2.1 \
|
||||
crate://crates.io/curl/0.3.2 \
|
||||
crate://crates.io/docopt/0.6.82 \
|
||||
crate://crates.io/env_logger/0.3.4 \
|
||||
crate://crates.io/filetime/0.1.10 \
|
||||
crate://crates.io/flate2/0.2.14 \
|
||||
crate://crates.io/fs2/0.2.5 \
|
||||
crate://crates.io/gcc/0.3.32 \
|
||||
crate://crates.io/gdi32-sys/0.2.0 \
|
||||
crate://crates.io/git2-curl/0.5.0 \
|
||||
crate://crates.io/git2/0.4.4 \
|
||||
crate://crates.io/glob/0.2.11 \
|
||||
crate://crates.io/hamcrest/0.1.0 \
|
||||
crate://crates.io/idna/0.1.0 \
|
||||
crate://crates.io/kernel32-sys/0.2.2 \
|
||||
crate://crates.io/lazy_static/0.2.1 \
|
||||
crate://crates.io/libc/0.2.15 \
|
||||
crate://crates.io/libgit2-sys/0.4.5 \
|
||||
crate://crates.io/libressl-pnacl-sys/2.1.6 \
|
||||
crate://crates.io/libssh2-sys/0.1.38 \
|
||||
crate://crates.io/libz-sys/1.0.5 \
|
||||
crate://crates.io/log/0.3.6 \
|
||||
crate://crates.io/matches/0.1.2 \
|
||||
crate://crates.io/memchr/0.1.11 \
|
||||
crate://crates.io/miniz-sys/0.1.7 \
|
||||
crate://crates.io/miow/0.1.3 \
|
||||
crate://crates.io/net2/0.2.26 \
|
||||
crate://crates.io/nom/1.2.4 \
|
||||
crate://crates.io/num-bigint/0.1.33 \
|
||||
crate://crates.io/num-complex/0.1.33 \
|
||||
crate://crates.io/num-integer/0.1.32 \
|
||||
crate://crates.io/num-iter/0.1.32 \
|
||||
crate://crates.io/num-rational/0.1.32 \
|
||||
crate://crates.io/num-traits/0.1.34 \
|
||||
crate://crates.io/num/0.1.34 \
|
||||
crate://crates.io/num_cpus/1.0.0 \
|
||||
crate://crates.io/openssl-sys-extras/0.7.14 \
|
||||
crate://crates.io/openssl-sys/0.7.14 \
|
||||
crate://crates.io/openssl/0.7.14 \
|
||||
crate://crates.io/pkg-config/0.3.8 \
|
||||
crate://crates.io/pnacl-build-helper/1.4.10 \
|
||||
crate://crates.io/rand/0.3.14 \
|
||||
crate://crates.io/regex-syntax/0.3.4 \
|
||||
crate://crates.io/regex/0.1.73 \
|
||||
crate://crates.io/rustc-serialize/0.3.19 \
|
||||
crate://crates.io/semver/0.2.3 \
|
||||
crate://crates.io/strsim/0.3.0 \
|
||||
crate://crates.io/tar/0.4.8 \
|
||||
crate://crates.io/tempdir/0.3.5 \
|
||||
crate://crates.io/term/0.4.4 \
|
||||
crate://crates.io/thread-id/2.0.0 \
|
||||
crate://crates.io/thread_local/0.2.6 \
|
||||
crate://crates.io/toml/0.2.0 \
|
||||
crate://crates.io/unicode-bidi/0.2.3 \
|
||||
crate://crates.io/unicode-normalization/0.1.2 \
|
||||
crate://crates.io/url/1.2.0 \
|
||||
crate://crates.io/user32-sys/0.2.0 \
|
||||
crate://crates.io/utf8-ranges/0.1.3 \
|
||||
crate://crates.io/winapi-build/0.1.1 \
|
||||
crate://crates.io/winapi/0.2.8 \
|
||||
crate://crates.io/ws2_32-sys/0.2.1 \
|
||||
"
|
||||
# Compatible with Rust 1.12.1
|
||||
# https://static.rust-lang.org/dist/channel-rust-1.12.1.toml
|
||||
SRCREV_cargo = "109cb7c33d426044d141457049bd0fffaca1327c"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
LIC_FILES_CHKSUM ="\
|
||||
file://LICENSE-MIT;md5=362255802eb5aa87810d12ddf3cfedb4 \
|
||||
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
|
||||
file://LICENSE-THIRD-PARTY;md5=892ea68b169e69cfe75097fc38a15b56 \
|
||||
"
|
||||
7
recipes-devtools/cargo/cargo_1.49.0.bb
Normal file
7
recipes-devtools/cargo/cargo_1.49.0.bb
Normal file
@@ -0,0 +1,7 @@
|
||||
require recipes-devtools/rust/rust-source-${PV}.inc
|
||||
require recipes-devtools/rust/rust-snapshot-${PV}.inc
|
||||
require cargo.inc
|
||||
|
||||
SRC_URI += "file://riscv-march.patch;patchdir=../../.."
|
||||
SRC_URI += "file://rv64gc.patch;patchdir=../../.."
|
||||
|
||||
6
recipes-devtools/cargo/cargo_1.51.0.bb
Normal file
6
recipes-devtools/cargo/cargo_1.51.0.bb
Normal file
@@ -0,0 +1,6 @@
|
||||
require recipes-devtools/rust/rust-source-${PV}.inc
|
||||
require recipes-devtools/rust/rust-snapshot-${PV}.inc
|
||||
require cargo.inc
|
||||
|
||||
SRC_URI += "file://riscv-march.patch;patchdir=../../.."
|
||||
SRC_URI += "file://rv64gc.patch;patchdir=../../.."
|
||||
@@ -1,88 +0,0 @@
|
||||
From 27df8ab04275dfd715d1756fc517bb0323f1b210 Mon Sep 17 00:00:00 2001
|
||||
From: Steven Walter <stevenrwalter@gmail.com>
|
||||
Date: Fri, 2 Sep 2016 14:02:03 -0400
|
||||
Subject: [PATCH] Never update the registry index
|
||||
|
||||
Bitbake will fetch the index for us so that we needn't do network IO
|
||||
during a build
|
||||
---
|
||||
src/cargo/ops/cargo_run.rs | 2 +-
|
||||
src/cargo/sources/registry.rs | 34 +---------------------------------
|
||||
2 files changed, 2 insertions(+), 34 deletions(-)
|
||||
|
||||
diff --git a/src/cargo/ops/cargo_run.rs b/src/cargo/ops/cargo_run.rs
|
||||
index 6764118..379b98b 100644
|
||||
--- a/src/cargo/ops/cargo_run.rs
|
||||
+++ b/src/cargo/ops/cargo_run.rs
|
||||
@@ -1,7 +1,7 @@
|
||||
use std::path::Path;
|
||||
|
||||
use ops::{self, CompileFilter};
|
||||
-use util::{self, CargoResult, process, ProcessError};
|
||||
+use util::{self, CargoResult, ProcessError};
|
||||
use core::Package;
|
||||
|
||||
pub fn run(manifest_path: &Path,
|
||||
diff --git a/src/cargo/sources/registry.rs b/src/cargo/sources/registry.rs
|
||||
index 614d654..a0c7fe6 100644
|
||||
--- a/src/cargo/sources/registry.rs
|
||||
+++ b/src/cargo/sources/registry.rs
|
||||
@@ -166,7 +166,6 @@ use std::path::{PathBuf, Path};
|
||||
|
||||
use curl::http;
|
||||
use flate2::read::GzDecoder;
|
||||
-use git2;
|
||||
use rustc_serialize::hex::ToHex;
|
||||
use rustc_serialize::json;
|
||||
use tar::Archive;
|
||||
@@ -174,7 +173,7 @@ use url::Url;
|
||||
|
||||
use core::{Source, SourceId, PackageId, Package, Summary, Registry};
|
||||
use core::dependency::{Dependency, DependencyInner, Kind};
|
||||
-use sources::{PathSource, git};
|
||||
+use sources::PathSource;
|
||||
use util::{CargoResult, Config, internal, ChainError, ToUrl, human};
|
||||
use util::{hex, Sha256, paths, Filesystem, FileLock};
|
||||
use ops;
|
||||
@@ -464,38 +463,7 @@ impl<'cfg> RegistrySource<'cfg> {
|
||||
|
||||
/// Actually perform network operations to update the registry
|
||||
fn do_update(&mut self) -> CargoResult<()> {
|
||||
- if self.updated {
|
||||
- return Ok(())
|
||||
- }
|
||||
- try!(self.checkout_path.create_dir());
|
||||
- let lock = try!(self.checkout_path.open_rw(Path::new(INDEX_LOCK),
|
||||
- self.config,
|
||||
- "the registry index"));
|
||||
- let path = lock.path().parent().unwrap();
|
||||
-
|
||||
- try!(self.config.shell().status("Updating",
|
||||
- format!("registry `{}`", self.source_id.url())));
|
||||
- let repo = try!(git2::Repository::open(path).or_else(|_| {
|
||||
- let _ = lock.remove_siblings();
|
||||
- git2::Repository::init(path)
|
||||
- }));
|
||||
-
|
||||
- // git fetch origin
|
||||
- let url = self.source_id.url().to_string();
|
||||
- let refspec = "refs/heads/*:refs/remotes/origin/*";
|
||||
-
|
||||
- try!(git::fetch(&repo, &url, refspec, &self.config).chain_error(|| {
|
||||
- internal(format!("failed to fetch `{}`", url))
|
||||
- }));
|
||||
-
|
||||
- // git reset --hard origin/master
|
||||
- let reference = "refs/remotes/origin/master";
|
||||
- let oid = try!(repo.refname_to_id(reference));
|
||||
- trace!("[{}] updating to rev {}", self.source_id, oid);
|
||||
- let object = try!(repo.find_object(oid, None));
|
||||
- try!(repo.reset(&object, git2::ResetType::Hard, None));
|
||||
self.updated = true;
|
||||
- self.cache.clear();
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
From 7ae8ea6523c943cc819eadea011ce4f783e40764 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Wed, 3 Feb 2016 15:59:48 -0500
|
||||
Subject: [PATCH] disable cargo snapshot fetch
|
||||
|
||||
---
|
||||
Makefile.in | 4 ----
|
||||
1 file changed, 4 deletions(-)
|
||||
|
||||
diff --git a/Makefile.in b/Makefile.in
|
||||
index fadcb4b..a8da630 100644
|
||||
--- a/Makefile.in
|
||||
+++ b/Makefile.in
|
||||
@@ -103,10 +103,6 @@ test-unit-$(1): $$(CARGO)
|
||||
endef
|
||||
$(foreach target,$(CFG_TARGET),$(eval $(call CARGO_TARGET,$(target))))
|
||||
|
||||
-$(TARGET_ROOT)/snapshot/bin/cargo$(X): $(S)src/snapshots.txt
|
||||
- $(CFG_PYTHON) $(S)src/etc/dl-snapshot.py $(CFG_BUILD)
|
||||
- touch $@
|
||||
-
|
||||
|
||||
# === Tests
|
||||
|
||||
--
|
||||
2.8.2
|
||||
|
||||
@@ -1,75 +0,0 @@
|
||||
From 8f82cc69e50e7c8e48a2e20b7061483a28bd0d7f Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Sat, 12 Dec 2015 22:36:26 -0500
|
||||
Subject: [PATCH 1/2] curl-sys: avoid explicitly linking in openssl
|
||||
|
||||
linking libcurl with libssl is handled by pkg-config, not us
|
||||
This also allows non-blessed triples to work.
|
||||
---
|
||||
curl-sys/Cargo.toml | 38 --------------------------------------
|
||||
curl-sys/lib.rs | 2 --
|
||||
2 files changed, 40 deletions(-)
|
||||
|
||||
diff --git a/curl-sys/Cargo.toml b/curl-sys/Cargo.toml
|
||||
index 24bc4fa..dd56209 100644
|
||||
--- a/curl-sys/Cargo.toml
|
||||
+++ b/curl-sys/Cargo.toml
|
||||
@@ -19,42 +19,4 @@ path = "lib.rs"
|
||||
[dependencies]
|
||||
libz-sys = ">= 0"
|
||||
libc = "0.2"
|
||||
-
|
||||
-[target."cfg(all(unix, not(target_os = \"macos\")))".dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-
|
||||
-# Unix platforms use OpenSSL for now to provide SSL functionality
|
||||
-[target.i686-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.i586-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.i686-linux-android.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.x86_64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.x86_64-unknown-linux-musl.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.arm-unknown-linux-gnueabihf.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.armv7-unknown-linux-gnueabihf.dependencies]
|
||||
openssl-sys = "0.7.0"
|
||||
-[target.arm-linux-androideabi.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.aarch64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.powerpc-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.powerpc64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.powerpc64le-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.i686-unknown-freebsd.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.x86_64-unknown-freebsd.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.x86_64-unknown-bitrig.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.x86_64-unknown-openbsd.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.x86_64-unknown-dragonfly.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
diff --git a/curl-sys/lib.rs b/curl-sys/lib.rs
|
||||
index 7990bd6..eb6c27a 100644
|
||||
--- a/curl-sys/lib.rs
|
||||
+++ b/curl-sys/lib.rs
|
||||
@@ -3,8 +3,6 @@
|
||||
extern crate libc;
|
||||
#[cfg(not(target_env = "msvc"))]
|
||||
extern crate libz_sys;
|
||||
-#[cfg(all(unix, not(target_os = "macos")))]
|
||||
-extern crate openssl_sys;
|
||||
|
||||
use libc::{c_void, c_int, c_char, c_uint, c_long};
|
||||
|
||||
--
|
||||
2.9.2
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
From eb23b1b6f749102e3db92b73a5e55ec6ad688524 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Sat, 12 Dec 2015 22:40:33 -0500
|
||||
Subject: [PATCH 2/2] remove per triple deps on openssl-sys
|
||||
|
||||
---
|
||||
Cargo.toml | 40 +---------------------------------------
|
||||
1 file changed, 1 insertion(+), 39 deletions(-)
|
||||
|
||||
diff --git a/Cargo.toml b/Cargo.toml
|
||||
index 5f6cf87..0c87156 100644
|
||||
--- a/Cargo.toml
|
||||
+++ b/Cargo.toml
|
||||
@@ -12,49 +12,11 @@ url = ">= 0.5, < 2.0"
|
||||
log = "0.3.0"
|
||||
libc = "0.2"
|
||||
curl-sys = { path = "curl-sys", version = "0.1.0" }
|
||||
+openssl-sys = "0.7.0"
|
||||
|
||||
[dev-dependencies]
|
||||
env_logger = "0.3.0"
|
||||
|
||||
-# Unix platforms use OpenSSL for now to provide SSL functionality
|
||||
-[target."cfg(all(unix, not(target_os = \"macos\")))".dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-
|
||||
-[target.i686-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.i586-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.i686-linux-android.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.x86_64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.x86_64-unknown-linux-musl.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.arm-unknown-linux-gnueabihf.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.armv7-unknown-linux-gnueabihf.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.arm-linux-androideabi.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.aarch64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.powerpc-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.powerpc64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.powerpc64le-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.i686-unknown-freebsd.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.x86_64-unknown-freebsd.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.x86_64-unknown-bitrig.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.x86_64-unknown-openbsd.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.x86_64-unknown-dragonfly.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-
|
||||
[[test]]
|
||||
|
||||
name = "test"
|
||||
--
|
||||
2.9.2
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
From 308fd350907fba13f68dcdb8e48040582466cae6 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Sat, 12 Dec 2015 22:53:37 -0500
|
||||
Subject: [PATCH] libgit2-sys: avoid blessed triples
|
||||
|
||||
---
|
||||
libgit2-sys/Cargo.toml | 33 +--------------------------------
|
||||
1 file changed, 1 insertion(+), 32 deletions(-)
|
||||
|
||||
diff --git a/libgit2-sys/Cargo.toml b/libgit2-sys/Cargo.toml
|
||||
index 2395314..29000ef 100644
|
||||
--- a/libgit2-sys/Cargo.toml
|
||||
+++ b/libgit2-sys/Cargo.toml
|
||||
@@ -17,44 +17,13 @@ path = "lib.rs"
|
||||
libssh2-sys = { version = ">= 0", optional = true }
|
||||
libc = "0.2"
|
||||
libz-sys = ">= 0"
|
||||
+openssl-sys = "0.7.0"
|
||||
|
||||
[build-dependencies]
|
||||
pkg-config = "0.3"
|
||||
cmake = "0.1.2"
|
||||
gcc = "0.3"
|
||||
|
||||
-[target."cfg(all(unix, not(target_os = \"macos\")))".dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-
|
||||
-[target.i686-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.i586-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.x86_64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.x86_64-unknown-linux-musl.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.aarch64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.powerpc64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.powerpc64le-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.arm-unknown-linux-gnueabihf.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.armv7-unknown-linux-gnueabihf.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.i686-unknown-freebsd.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.x86_64-unknown-freebsd.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.x86_64-unknown-bitrig.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.x86_64-unknown-openbsd.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.x86_64-unknown-dragonfly.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-
|
||||
[features]
|
||||
ssh = ["libssh2-sys"]
|
||||
https = []
|
||||
--
|
||||
2.9.2
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
From 65f07216c2c7a341cf13c35ecc1a781d7a489511 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Sat, 12 Dec 2015 22:44:14 -0500
|
||||
Subject: [PATCH] libssh2-sys: avoid explicitly linking in openssl
|
||||
|
||||
---
|
||||
libssh2-sys/Cargo.toml | 33 ---------------------------------
|
||||
libssh2-sys/lib.rs | 2 --
|
||||
2 files changed, 35 deletions(-)
|
||||
|
||||
diff --git a/libssh2-sys/Cargo.toml b/libssh2-sys/Cargo.toml
|
||||
index c4e006d..175be77 100644
|
||||
--- a/libssh2-sys/Cargo.toml
|
||||
+++ b/libssh2-sys/Cargo.toml
|
||||
@@ -19,39 +19,6 @@ libc = "0.2"
|
||||
[target."cfg(unix)".dependencies]
|
||||
openssl-sys = ">= 0"
|
||||
|
||||
-[target.i686-apple-darwin.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.x86_64-apple-darwin.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.i686-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.i586-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.x86_64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.aarch64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.powerpc64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.powerpc64le-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.x86_64-unknown-linux-musl.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.arm-unknown-linux-gnueabihf.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.armv7-unknown-linux-gnueabihf.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.i686-unknown-freebsd.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.x86_64-unknown-freebsd.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.x86_64-unknown-dragonfly.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.x86_64-unknown-bitrig.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.x86_64-unknown-openbsd.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-
|
||||
[build-dependencies]
|
||||
pkg-config = "0.3"
|
||||
cmake = "0.1.2"
|
||||
diff --git a/libssh2-sys/lib.rs b/libssh2-sys/lib.rs
|
||||
index 02fd203..3ca1806 100644
|
||||
--- a/libssh2-sys/lib.rs
|
||||
+++ b/libssh2-sys/lib.rs
|
||||
@@ -4,8 +4,6 @@
|
||||
extern crate libc;
|
||||
|
||||
extern crate libz_sys;
|
||||
-#[cfg(unix)]
|
||||
-extern crate openssl_sys;
|
||||
|
||||
use libc::{c_int, size_t, c_void, c_char, c_long, c_uchar, c_uint, c_ulong};
|
||||
use libc::ssize_t;
|
||||
--
|
||||
2.8.2
|
||||
|
||||
@@ -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,30 +0,0 @@
|
||||
SUMMARY = "Rust compiler run-time"
|
||||
HOMEPAGE = "http://www.rust-lang.org"
|
||||
SECTION = "devel"
|
||||
LICENSE = "MIT"
|
||||
LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=27b14ab4ce08d04c3a9a5f0ed7997362"
|
||||
|
||||
SRC_URI = "\
|
||||
https://static.rust-lang.org/dist/rustc-${PV}-src.tar.gz;name=rust \
|
||||
"
|
||||
|
||||
require rust-source-${PV}.inc
|
||||
|
||||
S = "${WORKDIR}/rustc-${PV}/src/compiler-rt"
|
||||
|
||||
do_compile () {
|
||||
oe_runmake -C ${S} \
|
||||
ProjSrcRoot="${S}" \
|
||||
ProjObjRoot="${B}" \
|
||||
CC="${CC}" \
|
||||
AR="${AR}" \
|
||||
RANLIB="${RANLIB}" \
|
||||
CFLAGS="${CFLAGS}" \
|
||||
TargetTriple=${HOST_SYS} \
|
||||
triple-builtins
|
||||
}
|
||||
|
||||
do_install () {
|
||||
mkdir -p ${D}${libdir}
|
||||
cp triple/builtins/libcompiler_rt.a ${D}${libdir}/libcompiler-rt.a
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
SUMMARY = "Rust compiler run-time"
|
||||
HOMEPAGE = "http://www.rust-lang.org"
|
||||
SECTION = "devel"
|
||||
LICENSE = "MIT"
|
||||
LIC_FILES_CHKSUM = "file://src/compiler-rt/LICENSE.TXT;md5=bf24bca27049b52e9738451aa55771d4"
|
||||
|
||||
require rust.inc
|
||||
require rust-source-${PV}.inc
|
||||
|
||||
DEPENDS += "rust-llvm-native (=${PV})"
|
||||
|
||||
S = "${WORKDIR}/rustc-${PV}"
|
||||
|
||||
DISABLE_STATIC = ""
|
||||
INHIBIT_DEFAULT_RUST_DEPS = "1"
|
||||
|
||||
do_compile () {
|
||||
oe_runmake ${TARGET_SYS}/rt/libcompiler-rt.a
|
||||
}
|
||||
|
||||
do_install () {
|
||||
mkdir -p ${D}${libdir}
|
||||
cp ${TARGET_SYS}/rt/libcompiler-rt.a ${D}${libdir}/libcompiler-rt.a
|
||||
}
|
||||
@@ -0,0 +1,904 @@
|
||||
From 23aa6dfba4f2745800d89f9ee67d390465c76bfa Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Wed, 17 Feb 2021 00:32:57 -0800
|
||||
Subject: [PATCH 1/4] Add base definitions for riscv64 + musl
|
||||
|
||||
https://github.com/rust-lang/libc/pull/1994/commits/030a07761f61f3293d53752e60edbd330a9d718d
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
.../src/unix/linux_like/linux/musl/b64/mod.rs | 3 +
|
||||
.../linux_like/linux/musl/b64/riscv64/mod.rs | 867 ++++++++++++++++++
|
||||
2 files changed, 870 insertions(+)
|
||||
create mode 100644 vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
|
||||
|
||||
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs
|
||||
index 62abee00d..78e805b15 100644
|
||||
--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs
|
||||
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/mod.rs
|
||||
@@ -164,6 +164,9 @@ cfg_if! {
|
||||
} else if #[cfg(any(target_arch = "x86_64"))] {
|
||||
mod x86_64;
|
||||
pub use self::x86_64::*;
|
||||
+ } else if #[cfg(any(target_arch = "riscv64"))] {
|
||||
+ mod riscv64;
|
||||
+ pub use self::riscv64::*;
|
||||
} else {
|
||||
// Unknown target_arch
|
||||
}
|
||||
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
|
||||
new file mode 100644
|
||||
index 000000000..14bae11d0
|
||||
--- /dev/null
|
||||
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
|
||||
@@ -0,0 +1,867 @@
|
||||
+//! RISC-V-specific definitions for 64-bit linux-like values
|
||||
+
|
||||
+pub type c_char = u8;
|
||||
+pub type c_long = i64;
|
||||
+pub type c_ulong = u64;
|
||||
+pub type wchar_t = ::c_int;
|
||||
+
|
||||
+pub type nlink_t = ::c_uint;
|
||||
+pub type blksize_t = ::c_int;
|
||||
+pub type fsblkcnt64_t = ::c_ulong;
|
||||
+pub type fsfilcnt64_t = ::c_ulong;
|
||||
+pub type suseconds_t = i64;
|
||||
+pub type __u64 = ::c_ulonglong;
|
||||
+
|
||||
+s! {
|
||||
+ pub struct pthread_attr_t {
|
||||
+ __size: [::c_ulong; 7],
|
||||
+ }
|
||||
+
|
||||
+ pub struct stat {
|
||||
+ pub st_dev: ::dev_t,
|
||||
+ pub st_ino: ::ino_t,
|
||||
+ pub st_mode: ::mode_t,
|
||||
+ pub st_nlink: ::nlink_t,
|
||||
+ pub st_uid: ::uid_t,
|
||||
+ pub st_gid: ::gid_t,
|
||||
+ pub st_rdev: ::dev_t,
|
||||
+ pub __pad1: ::dev_t,
|
||||
+ pub st_size: ::off_t,
|
||||
+ pub st_blksize: ::blksize_t,
|
||||
+ pub __pad2: ::c_int,
|
||||
+ pub st_blocks: ::blkcnt_t,
|
||||
+ pub st_atime: ::time_t,
|
||||
+ pub st_atime_nsec: ::c_long,
|
||||
+ pub st_mtime: ::time_t,
|
||||
+ pub st_mtime_nsec: ::c_long,
|
||||
+ pub st_ctime: ::time_t,
|
||||
+ pub st_ctime_nsec: ::c_long,
|
||||
+ __unused: [::c_int; 2usize],
|
||||
+ }
|
||||
+
|
||||
+ pub struct stat64 {
|
||||
+ pub st_dev: ::dev_t,
|
||||
+ pub st_ino: ::ino64_t,
|
||||
+ pub st_mode: ::mode_t,
|
||||
+ pub st_nlink: ::nlink_t,
|
||||
+ pub st_uid: ::uid_t,
|
||||
+ pub st_gid: ::gid_t,
|
||||
+ pub st_rdev: ::dev_t,
|
||||
+ pub __pad1: ::dev_t,
|
||||
+ pub st_size: ::off64_t,
|
||||
+ pub st_blksize: ::blksize_t,
|
||||
+ pub __pad2: ::c_int,
|
||||
+ pub st_blocks: ::blkcnt_t,
|
||||
+ pub st_atime: ::time_t,
|
||||
+ pub st_atime_nsec: ::c_long,
|
||||
+ pub st_mtime: ::time_t,
|
||||
+ pub st_mtime_nsec: ::c_long,
|
||||
+ pub st_ctime: ::time_t,
|
||||
+ pub st_ctime_nsec: ::c_long,
|
||||
+ __unused: [::c_int; 2],
|
||||
+ }
|
||||
+
|
||||
+ pub struct statfs {
|
||||
+ pub f_type: ::c_long,
|
||||
+ pub f_bsize: ::c_long,
|
||||
+ pub f_blocks: ::fsblkcnt_t,
|
||||
+ pub f_bfree: ::fsblkcnt_t,
|
||||
+ pub f_bavail: ::fsblkcnt_t,
|
||||
+ pub f_files: ::fsfilcnt_t,
|
||||
+ pub f_ffree: ::fsfilcnt_t,
|
||||
+ pub f_fsid: ::fsid_t,
|
||||
+ pub f_namelen: ::c_long,
|
||||
+ pub f_frsize: ::c_long,
|
||||
+ pub f_flags: ::c_long,
|
||||
+ pub f_spare: [::c_long; 4],
|
||||
+ }
|
||||
+
|
||||
+ pub struct statfs64 {
|
||||
+ pub f_type: ::c_long,
|
||||
+ pub f_bsize: ::c_long,
|
||||
+ pub f_blocks: ::fsblkcnt64_t,
|
||||
+ pub f_bfree: ::fsblkcnt64_t,
|
||||
+ pub f_bavail: ::fsblkcnt64_t,
|
||||
+ pub f_files: ::fsfilcnt64_t,
|
||||
+ pub f_ffree: ::fsfilcnt64_t,
|
||||
+ pub f_fsid: ::fsid_t,
|
||||
+ pub f_namelen: ::c_long,
|
||||
+ pub f_frsize: ::c_long,
|
||||
+ pub f_flags: ::c_long,
|
||||
+ pub f_spare: [::c_long; 4],
|
||||
+ }
|
||||
+
|
||||
+ pub struct statvfs {
|
||||
+ pub f_bsize: ::c_ulong,
|
||||
+ pub f_frsize: ::c_ulong,
|
||||
+ pub f_blocks: ::fsblkcnt_t,
|
||||
+ pub f_bfree: ::fsblkcnt_t,
|
||||
+ pub f_bavail: ::fsblkcnt_t,
|
||||
+ pub f_files: ::fsfilcnt_t,
|
||||
+ pub f_ffree: ::fsfilcnt_t,
|
||||
+ pub f_favail: ::fsfilcnt_t,
|
||||
+ pub f_fsid: ::c_ulong,
|
||||
+ pub f_flag: ::c_ulong,
|
||||
+ pub f_namemax: ::c_ulong,
|
||||
+ pub __f_spare: [::c_int; 6],
|
||||
+ }
|
||||
+
|
||||
+ pub struct statvfs64 {
|
||||
+ pub f_bsize: ::c_ulong,
|
||||
+ pub f_frsize: ::c_ulong,
|
||||
+ pub f_blocks: ::fsblkcnt64_t,
|
||||
+ pub f_bfree: ::fsblkcnt64_t,
|
||||
+ pub f_bavail: ::fsblkcnt64_t,
|
||||
+ pub f_files: ::fsfilcnt64_t,
|
||||
+ pub f_ffree: ::fsfilcnt64_t,
|
||||
+ pub f_favail: ::fsfilcnt64_t,
|
||||
+ pub f_fsid: ::c_ulong,
|
||||
+ pub f_flag: ::c_ulong,
|
||||
+ pub f_namemax: ::c_ulong,
|
||||
+ pub __f_spare: [::c_int; 6],
|
||||
+ }
|
||||
+
|
||||
+ pub struct siginfo_t {
|
||||
+ pub si_signo: ::c_int,
|
||||
+ pub si_errno: ::c_int,
|
||||
+ pub si_code: ::c_int,
|
||||
+ #[doc(hidden)]
|
||||
+ #[deprecated(
|
||||
+ since="0.2.54",
|
||||
+ note="Please leave a comment on \
|
||||
+ https://github.com/rust-lang/libc/pull/1316 if you're using \
|
||||
+ this field"
|
||||
+ )]
|
||||
+ pub _pad: [::c_int; 29],
|
||||
+ _align: [u64; 0],
|
||||
+ }
|
||||
+
|
||||
+ pub struct stack_t {
|
||||
+ pub ss_sp: *mut ::c_void,
|
||||
+ pub ss_flags: ::c_int,
|
||||
+ pub ss_size: ::size_t,
|
||||
+ }
|
||||
+
|
||||
+ pub struct sigaction {
|
||||
+ pub sa_sigaction: ::sighandler_t,
|
||||
+ pub sa_mask: ::sigset_t,
|
||||
+ pub sa_flags: ::c_int,
|
||||
+ pub sa_restorer: ::Option<unsafe extern "C" fn()>,
|
||||
+ }
|
||||
+
|
||||
+ pub struct ipc_perm {
|
||||
+ pub __key: ::key_t,
|
||||
+ pub uid: ::uid_t,
|
||||
+ pub gid: ::gid_t,
|
||||
+ pub cuid: ::uid_t,
|
||||
+ pub cgid: ::gid_t,
|
||||
+ pub mode: ::c_ushort,
|
||||
+ __pad1: ::c_ushort,
|
||||
+ pub __seq: ::c_ushort,
|
||||
+ __pad2: ::c_ushort,
|
||||
+ __unused1: ::c_ulong,
|
||||
+ __unused2: ::c_ulong,
|
||||
+ }
|
||||
+
|
||||
+ pub struct shmid_ds {
|
||||
+ pub shm_perm: ::ipc_perm,
|
||||
+ pub shm_segsz: ::size_t,
|
||||
+ pub shm_atime: ::time_t,
|
||||
+ pub shm_dtime: ::time_t,
|
||||
+ pub shm_ctime: ::time_t,
|
||||
+ pub shm_cpid: ::pid_t,
|
||||
+ pub shm_lpid: ::pid_t,
|
||||
+ pub shm_nattch: ::shmatt_t,
|
||||
+ __unused5: ::c_ulong,
|
||||
+ __unused6: ::c_ulong,
|
||||
+ }
|
||||
+
|
||||
+ pub struct flock {
|
||||
+ pub l_type: ::c_short,
|
||||
+ pub l_whence: ::c_short,
|
||||
+ pub l_start: ::off_t,
|
||||
+ pub l_len: ::off_t,
|
||||
+ pub l_pid: ::pid_t,
|
||||
+ }
|
||||
+
|
||||
+ pub struct flock64 {
|
||||
+ pub l_type: ::c_short,
|
||||
+ pub l_whence: ::c_short,
|
||||
+ pub l_start: ::off64_t,
|
||||
+ pub l_len: ::off64_t,
|
||||
+ pub l_pid: ::pid_t,
|
||||
+ }
|
||||
+
|
||||
+ pub struct ip_mreqn {
|
||||
+ pub imr_multiaddr: ::in_addr,
|
||||
+ pub imr_address: ::in_addr,
|
||||
+ pub imr_ifindex: ::c_int,
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+pub const POSIX_FADV_DONTNEED: ::c_int = 4;
|
||||
+pub const POSIX_FADV_NOREUSE: ::c_int = 5;
|
||||
+pub const VEOF: usize = 4;
|
||||
+pub const RTLD_DEEPBIND: ::c_int = 0x8;
|
||||
+pub const RTLD_GLOBAL: ::c_int = 0x100;
|
||||
+pub const RTLD_NOLOAD: ::c_int = 0x4;
|
||||
+pub const TIOCGSOFTCAR: ::c_ulong = 21529;
|
||||
+pub const TIOCSSOFTCAR: ::c_ulong = 21530;
|
||||
+pub const TIOCGRS485: ::c_int = 21550;
|
||||
+pub const TIOCSRS485: ::c_int = 21551;
|
||||
+pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
|
||||
+pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
|
||||
+pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
|
||||
+pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
|
||||
+pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
|
||||
+pub const O_APPEND: ::c_int = 1024;
|
||||
+pub const O_CREAT: ::c_int = 64;
|
||||
+pub const O_EXCL: ::c_int = 128;
|
||||
+pub const O_NOCTTY: ::c_int = 256;
|
||||
+pub const O_NONBLOCK: ::c_int = 2048;
|
||||
+pub const O_SYNC: ::c_int = 1052672;
|
||||
+pub const O_RSYNC: ::c_int = 1052672;
|
||||
+pub const O_DSYNC: ::c_int = 4096;
|
||||
+pub const O_FSYNC: ::c_int = 1052672;
|
||||
+pub const O_NOATIME: ::c_int = 262144;
|
||||
+pub const O_PATH: ::c_int = 2097152;
|
||||
+pub const O_TMPFILE: ::c_int = 4259840;
|
||||
+pub const MAP_GROWSDOWN: ::c_int = 256;
|
||||
+pub const EDEADLK: ::c_int = 35;
|
||||
+pub const ENAMETOOLONG: ::c_int = 36;
|
||||
+pub const ENOLCK: ::c_int = 37;
|
||||
+pub const ENOSYS: ::c_int = 38;
|
||||
+pub const ENOTEMPTY: ::c_int = 39;
|
||||
+pub const ELOOP: ::c_int = 40;
|
||||
+pub const ENOMSG: ::c_int = 42;
|
||||
+pub const EIDRM: ::c_int = 43;
|
||||
+pub const ECHRNG: ::c_int = 44;
|
||||
+pub const EL2NSYNC: ::c_int = 45;
|
||||
+pub const EL3HLT: ::c_int = 46;
|
||||
+pub const EL3RST: ::c_int = 47;
|
||||
+pub const ELNRNG: ::c_int = 48;
|
||||
+pub const EUNATCH: ::c_int = 49;
|
||||
+pub const ENOCSI: ::c_int = 50;
|
||||
+pub const EL2HLT: ::c_int = 51;
|
||||
+pub const EBADE: ::c_int = 52;
|
||||
+pub const EBADR: ::c_int = 53;
|
||||
+pub const EXFULL: ::c_int = 54;
|
||||
+pub const ENOANO: ::c_int = 55;
|
||||
+pub const EBADRQC: ::c_int = 56;
|
||||
+pub const EBADSLT: ::c_int = 57;
|
||||
+pub const EMULTIHOP: ::c_int = 72;
|
||||
+pub const EOVERFLOW: ::c_int = 75;
|
||||
+pub const ENOTUNIQ: ::c_int = 76;
|
||||
+pub const EBADFD: ::c_int = 77;
|
||||
+pub const EBADMSG: ::c_int = 74;
|
||||
+pub const EREMCHG: ::c_int = 78;
|
||||
+pub const ELIBACC: ::c_int = 79;
|
||||
+pub const ELIBBAD: ::c_int = 80;
|
||||
+pub const ELIBSCN: ::c_int = 81;
|
||||
+pub const ELIBMAX: ::c_int = 82;
|
||||
+pub const ELIBEXEC: ::c_int = 83;
|
||||
+pub const EILSEQ: ::c_int = 84;
|
||||
+pub const ERESTART: ::c_int = 85;
|
||||
+pub const ESTRPIPE: ::c_int = 86;
|
||||
+pub const EUSERS: ::c_int = 87;
|
||||
+pub const ENOTSOCK: ::c_int = 88;
|
||||
+pub const EDESTADDRREQ: ::c_int = 89;
|
||||
+pub const EMSGSIZE: ::c_int = 90;
|
||||
+pub const EPROTOTYPE: ::c_int = 91;
|
||||
+pub const ENOPROTOOPT: ::c_int = 92;
|
||||
+pub const EPROTONOSUPPORT: ::c_int = 93;
|
||||
+pub const ESOCKTNOSUPPORT: ::c_int = 94;
|
||||
+pub const EOPNOTSUPP: ::c_int = 95;
|
||||
+pub const EPFNOSUPPORT: ::c_int = 96;
|
||||
+pub const EAFNOSUPPORT: ::c_int = 97;
|
||||
+pub const EADDRINUSE: ::c_int = 98;
|
||||
+pub const EADDRNOTAVAIL: ::c_int = 99;
|
||||
+pub const ENETDOWN: ::c_int = 100;
|
||||
+pub const ENETUNREACH: ::c_int = 101;
|
||||
+pub const ENETRESET: ::c_int = 102;
|
||||
+pub const ECONNABORTED: ::c_int = 103;
|
||||
+pub const ECONNRESET: ::c_int = 104;
|
||||
+pub const ENOBUFS: ::c_int = 105;
|
||||
+pub const EISCONN: ::c_int = 106;
|
||||
+pub const ENOTCONN: ::c_int = 107;
|
||||
+pub const ESHUTDOWN: ::c_int = 108;
|
||||
+pub const ETOOMANYREFS: ::c_int = 109;
|
||||
+pub const ETIMEDOUT: ::c_int = 110;
|
||||
+pub const ECONNREFUSED: ::c_int = 111;
|
||||
+pub const EHOSTDOWN: ::c_int = 112;
|
||||
+pub const EHOSTUNREACH: ::c_int = 113;
|
||||
+pub const EALREADY: ::c_int = 114;
|
||||
+pub const EINPROGRESS: ::c_int = 115;
|
||||
+pub const ESTALE: ::c_int = 116;
|
||||
+pub const EDQUOT: ::c_int = 122;
|
||||
+pub const ENOMEDIUM: ::c_int = 123;
|
||||
+pub const EMEDIUMTYPE: ::c_int = 124;
|
||||
+pub const ECANCELED: ::c_int = 125;
|
||||
+pub const ENOKEY: ::c_int = 126;
|
||||
+pub const EKEYEXPIRED: ::c_int = 127;
|
||||
+pub const EKEYREVOKED: ::c_int = 128;
|
||||
+pub const EKEYREJECTED: ::c_int = 129;
|
||||
+pub const EOWNERDEAD: ::c_int = 130;
|
||||
+pub const ENOTRECOVERABLE: ::c_int = 131;
|
||||
+pub const EHWPOISON: ::c_int = 133;
|
||||
+pub const ERFKILL: ::c_int = 132;
|
||||
+pub const SOL_SOCKET: ::c_int = 1;
|
||||
+pub const SO_REUSEADDR: ::c_int = 2;
|
||||
+pub const SO_TYPE: ::c_int = 3;
|
||||
+pub const SO_ERROR: ::c_int = 4;
|
||||
+pub const SO_DONTROUTE: ::c_int = 5;
|
||||
+pub const SO_BROADCAST: ::c_int = 6;
|
||||
+pub const SO_SNDBUF: ::c_int = 7;
|
||||
+pub const SO_RCVBUF: ::c_int = 8;
|
||||
+pub const SO_SNDBUFFORCE: ::c_int = 32;
|
||||
+pub const SO_RCVBUFFORCE: ::c_int = 33;
|
||||
+pub const SO_KEEPALIVE: ::c_int = 9;
|
||||
+pub const SO_OOBINLINE: ::c_int = 10;
|
||||
+pub const SO_NO_CHECK: ::c_int = 11;
|
||||
+pub const SO_PRIORITY: ::c_int = 12;
|
||||
+pub const SO_LINGER: ::c_int = 13;
|
||||
+pub const SO_BSDCOMPAT: ::c_int = 14;
|
||||
+pub const SO_REUSEPORT: ::c_int = 15;
|
||||
+pub const SO_PASSCRED: ::c_int = 16;
|
||||
+pub const SO_PEERCRED: ::c_int = 17;
|
||||
+pub const SO_RCVLOWAT: ::c_int = 18;
|
||||
+pub const SO_SNDLOWAT: ::c_int = 19;
|
||||
+pub const SO_RCVTIMEO: ::c_int = 20;
|
||||
+pub const SO_SNDTIMEO: ::c_int = 21;
|
||||
+pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22;
|
||||
+pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23;
|
||||
+pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24;
|
||||
+pub const SO_BINDTODEVICE: ::c_int = 25;
|
||||
+pub const SO_ATTACH_FILTER: ::c_int = 26;
|
||||
+pub const SO_DETACH_FILTER: ::c_int = 27;
|
||||
+pub const SO_GET_FILTER: ::c_int = 26;
|
||||
+pub const SO_PEERNAME: ::c_int = 28;
|
||||
+pub const SO_TIMESTAMP: ::c_int = 29;
|
||||
+pub const SO_ACCEPTCONN: ::c_int = 30;
|
||||
+pub const SO_PEERSEC: ::c_int = 31;
|
||||
+pub const SO_PASSSEC: ::c_int = 34;
|
||||
+pub const SO_TIMESTAMPNS: ::c_int = 35;
|
||||
+pub const SCM_TIMESTAMPNS: ::c_int = 35;
|
||||
+pub const SO_MARK: ::c_int = 36;
|
||||
+pub const SO_PROTOCOL: ::c_int = 38;
|
||||
+pub const SO_DOMAIN: ::c_int = 39;
|
||||
+pub const SO_RXQ_OVFL: ::c_int = 40;
|
||||
+pub const SO_WIFI_STATUS: ::c_int = 41;
|
||||
+pub const SCM_WIFI_STATUS: ::c_int = 41;
|
||||
+pub const SO_PEEK_OFF: ::c_int = 42;
|
||||
+pub const SO_NOFCS: ::c_int = 43;
|
||||
+pub const SO_LOCK_FILTER: ::c_int = 44;
|
||||
+pub const SO_SELECT_ERR_QUEUE: ::c_int = 45;
|
||||
+pub const SO_BUSY_POLL: ::c_int = 46;
|
||||
+pub const SO_MAX_PACING_RATE: ::c_int = 47;
|
||||
+pub const SO_BPF_EXTENSIONS: ::c_int = 48;
|
||||
+pub const SO_INCOMING_CPU: ::c_int = 49;
|
||||
+pub const SO_ATTACH_BPF: ::c_int = 50;
|
||||
+pub const SO_DETACH_BPF: ::c_int = 27;
|
||||
+pub const SOCK_STREAM: ::c_int = 1;
|
||||
+pub const SOCK_DGRAM: ::c_int = 2;
|
||||
+pub const SA_ONSTACK: ::c_int = 134217728;
|
||||
+pub const SA_SIGINFO: ::c_int = 4;
|
||||
+pub const SA_NOCLDWAIT: ::c_int = 2;
|
||||
+pub const SIGTTIN: ::c_int = 21;
|
||||
+pub const SIGTTOU: ::c_int = 22;
|
||||
+pub const SIGXCPU: ::c_int = 24;
|
||||
+pub const SIGXFSZ: ::c_int = 25;
|
||||
+pub const SIGVTALRM: ::c_int = 26;
|
||||
+pub const SIGPROF: ::c_int = 27;
|
||||
+pub const SIGWINCH: ::c_int = 28;
|
||||
+pub const SIGCHLD: ::c_int = 17;
|
||||
+pub const SIGBUS: ::c_int = 7;
|
||||
+pub const SIGUSR1: ::c_int = 10;
|
||||
+pub const SIGUSR2: ::c_int = 12;
|
||||
+pub const SIGCONT: ::c_int = 18;
|
||||
+pub const SIGSTOP: ::c_int = 19;
|
||||
+pub const SIGTSTP: ::c_int = 20;
|
||||
+pub const SIGURG: ::c_int = 23;
|
||||
+pub const SIGIO: ::c_int = 29;
|
||||
+pub const SIGSYS: ::c_int = 31;
|
||||
+pub const SIGSTKFLT: ::c_int = 16;
|
||||
+pub const SIGPOLL: ::c_int = 29;
|
||||
+pub const SIGPWR: ::c_int = 30;
|
||||
+pub const SIG_SETMASK: ::c_int = 2;
|
||||
+pub const SIG_BLOCK: ::c_int = 0;
|
||||
+pub const SIG_UNBLOCK: ::c_int = 1;
|
||||
+pub const POLLWRNORM: ::c_short = 256;
|
||||
+pub const POLLWRBAND: ::c_short = 512;
|
||||
+pub const O_ASYNC: ::c_int = 8192;
|
||||
+pub const O_NDELAY: ::c_int = 2048;
|
||||
+pub const PTRACE_DETACH: ::c_uint = 17;
|
||||
+pub const EFD_NONBLOCK: ::c_int = 2048;
|
||||
+pub const F_GETLK: ::c_int = 5;
|
||||
+pub const F_GETOWN: ::c_int = 9;
|
||||
+pub const F_SETOWN: ::c_int = 8;
|
||||
+pub const F_SETLK: ::c_int = 6;
|
||||
+pub const F_SETLKW: ::c_int = 7;
|
||||
+pub const F_RDLCK: ::c_int = 0;
|
||||
+pub const F_WRLCK: ::c_int = 1;
|
||||
+pub const F_UNLCK: ::c_int = 2;
|
||||
+pub const F_OFD_GETLK: ::c_int = 36;
|
||||
+pub const F_OFD_SETLK: ::c_int = 37;
|
||||
+pub const F_OFD_SETLKW: ::c_int = 38;
|
||||
+pub const SFD_NONBLOCK: ::c_int = 2048;
|
||||
+pub const TCSANOW: ::c_int = 0;
|
||||
+pub const TCSADRAIN: ::c_int = 1;
|
||||
+pub const TCSAFLUSH: ::c_int = 2;
|
||||
+pub const TIOCLINUX: ::c_ulong = 21532;
|
||||
+pub const TIOCGSERIAL: ::c_ulong = 21534;
|
||||
+pub const TIOCEXCL: ::c_ulong = 21516;
|
||||
+pub const TIOCNXCL: ::c_ulong = 21517;
|
||||
+pub const TIOCSCTTY: ::c_ulong = 21518;
|
||||
+pub const TIOCSTI: ::c_ulong = 21522;
|
||||
+pub const TIOCMGET: ::c_ulong = 21525;
|
||||
+pub const TIOCMBIS: ::c_ulong = 21526;
|
||||
+pub const TIOCMBIC: ::c_ulong = 21527;
|
||||
+pub const TIOCMSET: ::c_ulong = 21528;
|
||||
+pub const TIOCCONS: ::c_ulong = 21533;
|
||||
+pub const TIOCM_ST: ::c_int = 8;
|
||||
+pub const TIOCM_SR: ::c_int = 16;
|
||||
+pub const TIOCM_CTS: ::c_int = 32;
|
||||
+pub const TIOCM_CAR: ::c_int = 64;
|
||||
+pub const TIOCM_RNG: ::c_int = 128;
|
||||
+pub const TIOCM_DSR: ::c_int = 256;
|
||||
+pub const SFD_CLOEXEC: ::c_int = 524288;
|
||||
+pub const NCCS: usize = 32;
|
||||
+pub const O_TRUNC: ::c_int = 512;
|
||||
+pub const O_CLOEXEC: ::c_int = 524288;
|
||||
+pub const EBFONT: ::c_int = 59;
|
||||
+pub const ENOSTR: ::c_int = 60;
|
||||
+pub const ENODATA: ::c_int = 61;
|
||||
+pub const ETIME: ::c_int = 62;
|
||||
+pub const ENOSR: ::c_int = 63;
|
||||
+pub const ENONET: ::c_int = 64;
|
||||
+pub const ENOPKG: ::c_int = 65;
|
||||
+pub const EREMOTE: ::c_int = 66;
|
||||
+pub const ENOLINK: ::c_int = 67;
|
||||
+pub const EADV: ::c_int = 68;
|
||||
+pub const ESRMNT: ::c_int = 69;
|
||||
+pub const ECOMM: ::c_int = 70;
|
||||
+pub const EPROTO: ::c_int = 71;
|
||||
+pub const EDOTDOT: ::c_int = 73;
|
||||
+pub const SA_NODEFER: ::c_int = 1073741824;
|
||||
+pub const SA_RESETHAND: ::c_int = -2147483648;
|
||||
+pub const SA_RESTART: ::c_int = 268435456;
|
||||
+pub const SA_NOCLDSTOP: ::c_int = 1;
|
||||
+pub const EPOLL_CLOEXEC: ::c_int = 524288;
|
||||
+pub const EFD_CLOEXEC: ::c_int = 524288;
|
||||
+pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
|
||||
+pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
|
||||
+pub const O_DIRECT: ::c_int = 16384;
|
||||
+pub const O_DIRECTORY: ::c_int = 65536;
|
||||
+pub const O_NOFOLLOW: ::c_int = 131072;
|
||||
+pub const MAP_HUGETLB: ::c_int = 262144;
|
||||
+pub const MAP_LOCKED: ::c_int = 8192;
|
||||
+pub const MAP_NORESERVE: ::c_int = 16384;
|
||||
+pub const MAP_ANON: ::c_int = 32;
|
||||
+pub const MAP_ANONYMOUS: ::c_int = 32;
|
||||
+pub const MAP_DENYWRITE: ::c_int = 2048;
|
||||
+pub const MAP_EXECUTABLE: ::c_int = 4096;
|
||||
+pub const MAP_POPULATE: ::c_int = 32768;
|
||||
+pub const MAP_NONBLOCK: ::c_int = 65536;
|
||||
+pub const MAP_STACK: ::c_int = 131072;
|
||||
+pub const MAP_SYNC : ::c_int = 0x080000;
|
||||
+pub const EDEADLOCK: ::c_int = 35;
|
||||
+pub const EUCLEAN: ::c_int = 117;
|
||||
+pub const ENOTNAM: ::c_int = 118;
|
||||
+pub const ENAVAIL: ::c_int = 119;
|
||||
+pub const EISNAM: ::c_int = 120;
|
||||
+pub const EREMOTEIO: ::c_int = 121;
|
||||
+pub const FIOCLEX: ::c_ulong = 21585;
|
||||
+pub const FIONCLEX: ::c_ulong = 21584;
|
||||
+pub const FIONBIO: ::c_ulong = 21537;
|
||||
+pub const MCL_CURRENT: ::c_int = 1;
|
||||
+pub const MCL_FUTURE: ::c_int = 2;
|
||||
+pub const SIGSTKSZ: ::size_t = 8192;
|
||||
+pub const MINSIGSTKSZ: ::size_t = 2048;
|
||||
+pub const CBAUD: ::tcflag_t = 4111;
|
||||
+pub const TAB1: ::tcflag_t = 2048;
|
||||
+pub const TAB2: ::tcflag_t = 4096;
|
||||
+pub const TAB3: ::tcflag_t = 6144;
|
||||
+pub const CR1: ::tcflag_t = 512;
|
||||
+pub const CR2: ::tcflag_t = 1024;
|
||||
+pub const CR3: ::tcflag_t = 1536;
|
||||
+pub const FF1: ::tcflag_t = 32768;
|
||||
+pub const BS1: ::tcflag_t = 8192;
|
||||
+pub const VT1: ::tcflag_t = 16384;
|
||||
+pub const VWERASE: usize = 14;
|
||||
+pub const VREPRINT: usize = 12;
|
||||
+pub const VSUSP: usize = 10;
|
||||
+pub const VSTART: usize = 8;
|
||||
+pub const VSTOP: usize = 9;
|
||||
+pub const VDISCARD: usize = 13;
|
||||
+pub const VTIME: usize = 5;
|
||||
+pub const IXON: ::tcflag_t = 1024;
|
||||
+pub const IXOFF: ::tcflag_t = 4096;
|
||||
+pub const ONLCR: ::tcflag_t = 4;
|
||||
+pub const CSIZE: ::tcflag_t = 48;
|
||||
+pub const CS6: ::tcflag_t = 16;
|
||||
+pub const CS7: ::tcflag_t = 32;
|
||||
+pub const CS8: ::tcflag_t = 48;
|
||||
+pub const CSTOPB: ::tcflag_t = 64;
|
||||
+pub const CREAD: ::tcflag_t = 128;
|
||||
+pub const PARENB: ::tcflag_t = 256;
|
||||
+pub const PARODD: ::tcflag_t = 512;
|
||||
+pub const HUPCL: ::tcflag_t = 1024;
|
||||
+pub const CLOCAL: ::tcflag_t = 2048;
|
||||
+pub const ECHOKE: ::tcflag_t = 2048;
|
||||
+pub const ECHOE: ::tcflag_t = 16;
|
||||
+pub const ECHOK: ::tcflag_t = 32;
|
||||
+pub const ECHONL: ::tcflag_t = 64;
|
||||
+pub const ECHOPRT: ::tcflag_t = 1024;
|
||||
+pub const ECHOCTL: ::tcflag_t = 512;
|
||||
+pub const ISIG: ::tcflag_t = 1;
|
||||
+pub const ICANON: ::tcflag_t = 2;
|
||||
+pub const PENDIN: ::tcflag_t = 16384;
|
||||
+pub const NOFLSH: ::tcflag_t = 128;
|
||||
+pub const CIBAUD: ::tcflag_t = 269418496;
|
||||
+pub const CBAUDEX: ::tcflag_t = 4096;
|
||||
+pub const VSWTC: usize = 7;
|
||||
+pub const OLCUC: ::tcflag_t = 2;
|
||||
+pub const NLDLY: ::tcflag_t = 256;
|
||||
+pub const CRDLY: ::tcflag_t = 1536;
|
||||
+pub const TABDLY: ::tcflag_t = 6144;
|
||||
+pub const BSDLY: ::tcflag_t = 8192;
|
||||
+pub const FFDLY: ::tcflag_t = 32768;
|
||||
+pub const VTDLY: ::tcflag_t = 16384;
|
||||
+pub const XTABS: ::tcflag_t = 6144;
|
||||
+pub const B0: ::speed_t = 0;
|
||||
+pub const B50: ::speed_t = 1;
|
||||
+pub const B75: ::speed_t = 2;
|
||||
+pub const B110: ::speed_t = 3;
|
||||
+pub const B134: ::speed_t = 4;
|
||||
+pub const B150: ::speed_t = 5;
|
||||
+pub const B200: ::speed_t = 6;
|
||||
+pub const B300: ::speed_t = 7;
|
||||
+pub const B600: ::speed_t = 8;
|
||||
+pub const B1200: ::speed_t = 9;
|
||||
+pub const B1800: ::speed_t = 10;
|
||||
+pub const B2400: ::speed_t = 11;
|
||||
+pub const B4800: ::speed_t = 12;
|
||||
+pub const B9600: ::speed_t = 13;
|
||||
+pub const B19200: ::speed_t = 14;
|
||||
+pub const B38400: ::speed_t = 15;
|
||||
+pub const EXTA: ::speed_t = 14;
|
||||
+pub const EXTB: ::speed_t = 15;
|
||||
+pub const B57600: ::speed_t = 4097;
|
||||
+pub const B115200: ::speed_t = 4098;
|
||||
+pub const B230400: ::speed_t = 4099;
|
||||
+pub const B460800: ::speed_t = 4100;
|
||||
+pub const B500000: ::speed_t = 4101;
|
||||
+pub const B576000: ::speed_t = 4102;
|
||||
+pub const B921600: ::speed_t = 4103;
|
||||
+pub const B1000000: ::speed_t = 4104;
|
||||
+pub const B1152000: ::speed_t = 4105;
|
||||
+pub const B1500000: ::speed_t = 4106;
|
||||
+pub const B2000000: ::speed_t = 4107;
|
||||
+pub const B2500000: ::speed_t = 4108;
|
||||
+pub const B3000000: ::speed_t = 4109;
|
||||
+pub const B3500000: ::speed_t = 4110;
|
||||
+pub const B4000000: ::speed_t = 4111;
|
||||
+pub const VEOL: usize = 11;
|
||||
+pub const VEOL2: usize = 16;
|
||||
+pub const VMIN: usize = 6;
|
||||
+pub const IEXTEN: ::tcflag_t = 32768;
|
||||
+pub const TOSTOP: ::tcflag_t = 256;
|
||||
+pub const FLUSHO: ::tcflag_t = 4096;
|
||||
+pub const EXTPROC: ::tcflag_t = 65536;
|
||||
+pub const TCGETS: ::c_ulong = 21505;
|
||||
+pub const TCSETS: ::c_ulong = 21506;
|
||||
+pub const TCSETSW: ::c_ulong = 21507;
|
||||
+pub const TCSETSF: ::c_ulong = 21508;
|
||||
+pub const TCGETA: ::c_ulong = 21509;
|
||||
+pub const TCSETA: ::c_ulong = 21510;
|
||||
+pub const TCSETAW: ::c_ulong = 21511;
|
||||
+pub const TCSETAF: ::c_ulong = 21512;
|
||||
+pub const TCSBRK: ::c_ulong = 21513;
|
||||
+pub const TCXONC: ::c_ulong = 21514;
|
||||
+pub const TCFLSH: ::c_ulong = 21515;
|
||||
+pub const TIOCINQ: ::c_ulong = 21531;
|
||||
+pub const TIOCGPGRP: ::c_ulong = 21519;
|
||||
+pub const TIOCSPGRP: ::c_ulong = 21520;
|
||||
+pub const TIOCOUTQ: ::c_ulong = 21521;
|
||||
+pub const TIOCGWINSZ: ::c_ulong = 21523;
|
||||
+pub const TIOCSWINSZ: ::c_ulong = 21524;
|
||||
+pub const FIONREAD: ::c_ulong = 21531;
|
||||
+pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
|
||||
+pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
|
||||
+pub const SYS_read: ::c_long = 63;
|
||||
+pub const SYS_write: ::c_long = 64;
|
||||
+pub const SYS_close: ::c_long = 57;
|
||||
+pub const SYS_fstat: ::c_long = 80;
|
||||
+pub const SYS_lseek: ::c_long = 62;
|
||||
+pub const SYS_mmap: ::c_long = 222;
|
||||
+pub const SYS_mprotect: ::c_long = 226;
|
||||
+pub const SYS_munmap: ::c_long = 215;
|
||||
+pub const SYS_brk: ::c_long = 214;
|
||||
+pub const SYS_rt_sigaction: ::c_long = 134;
|
||||
+pub const SYS_rt_sigprocmask: ::c_long = 135;
|
||||
+pub const SYS_rt_sigreturn: ::c_long = 139;
|
||||
+pub const SYS_ioctl: ::c_long = 29;
|
||||
+pub const SYS_pread64: ::c_long = 67;
|
||||
+pub const SYS_pwrite64: ::c_long = 68;
|
||||
+pub const SYS_readv: ::c_long = 65;
|
||||
+pub const SYS_writev: ::c_long = 66;
|
||||
+pub const SYS_sched_yield: ::c_long = 124;
|
||||
+pub const SYS_mremap: ::c_long = 216;
|
||||
+pub const SYS_msync: ::c_long = 227;
|
||||
+pub const SYS_mincore: ::c_long = 232;
|
||||
+pub const SYS_madvise: ::c_long = 233;
|
||||
+pub const SYS_shmget: ::c_long = 194;
|
||||
+pub const SYS_shmat: ::c_long = 196;
|
||||
+pub const SYS_shmctl: ::c_long = 195;
|
||||
+pub const SYS_dup: ::c_long = 23;
|
||||
+pub const SYS_nanosleep: ::c_long = 101;
|
||||
+pub const SYS_getitimer: ::c_long = 102;
|
||||
+pub const SYS_setitimer: ::c_long = 103;
|
||||
+pub const SYS_getpid: ::c_long = 172;
|
||||
+pub const SYS_sendfile: ::c_long = 71;
|
||||
+pub const SYS_socket: ::c_long = 198;
|
||||
+pub const SYS_connect: ::c_long = 203;
|
||||
+pub const SYS_accept: ::c_long = 202;
|
||||
+pub const SYS_sendto: ::c_long = 206;
|
||||
+pub const SYS_recvfrom: ::c_long = 207;
|
||||
+pub const SYS_sendmsg: ::c_long = 211;
|
||||
+pub const SYS_recvmsg: ::c_long = 212;
|
||||
+pub const SYS_shutdown: ::c_long = 210;
|
||||
+pub const SYS_bind: ::c_long = 200;
|
||||
+pub const SYS_listen: ::c_long = 201;
|
||||
+pub const SYS_getsockname: ::c_long = 204;
|
||||
+pub const SYS_getpeername: ::c_long = 205;
|
||||
+pub const SYS_socketpair: ::c_long = 199;
|
||||
+pub const SYS_setsockopt: ::c_long = 208;
|
||||
+pub const SYS_getsockopt: ::c_long = 209;
|
||||
+pub const SYS_clone: ::c_long = 220;
|
||||
+pub const SYS_execve: ::c_long = 221;
|
||||
+pub const SYS_exit: ::c_long = 93;
|
||||
+pub const SYS_wait4: ::c_long = 260;
|
||||
+pub const SYS_kill: ::c_long = 129;
|
||||
+pub const SYS_uname: ::c_long = 160;
|
||||
+pub const SYS_semget: ::c_long = 190;
|
||||
+pub const SYS_semop: ::c_long = 193;
|
||||
+pub const SYS_semctl: ::c_long = 191;
|
||||
+pub const SYS_shmdt: ::c_long = 197;
|
||||
+pub const SYS_msgget: ::c_long = 186;
|
||||
+pub const SYS_msgsnd: ::c_long = 189;
|
||||
+pub const SYS_msgrcv: ::c_long = 188;
|
||||
+pub const SYS_msgctl: ::c_long = 187;
|
||||
+pub const SYS_fcntl: ::c_long = 25;
|
||||
+pub const SYS_flock: ::c_long = 32;
|
||||
+pub const SYS_fsync: ::c_long = 82;
|
||||
+pub const SYS_fdatasync: ::c_long = 83;
|
||||
+pub const SYS_truncate: ::c_long = 45;
|
||||
+pub const SYS_ftruncate: ::c_long = 46;
|
||||
+pub const SYS_getcwd: ::c_long = 17;
|
||||
+pub const SYS_chdir: ::c_long = 49;
|
||||
+pub const SYS_fchdir: ::c_long = 50;
|
||||
+pub const SYS_fchmod: ::c_long = 52;
|
||||
+pub const SYS_fchown: ::c_long = 55;
|
||||
+pub const SYS_umask: ::c_long = 166;
|
||||
+pub const SYS_gettimeofday: ::c_long = 169;
|
||||
+pub const SYS_getrlimit: ::c_long = 163;
|
||||
+pub const SYS_getrusage: ::c_long = 165;
|
||||
+pub const SYS_sysinfo: ::c_long = 179;
|
||||
+pub const SYS_times: ::c_long = 153;
|
||||
+pub const SYS_ptrace: ::c_long = 117;
|
||||
+pub const SYS_getuid: ::c_long = 174;
|
||||
+pub const SYS_syslog: ::c_long = 116;
|
||||
+pub const SYS_getgid: ::c_long = 176;
|
||||
+pub const SYS_setuid: ::c_long = 146;
|
||||
+pub const SYS_setgid: ::c_long = 144;
|
||||
+pub const SYS_geteuid: ::c_long = 175;
|
||||
+pub const SYS_getegid: ::c_long = 177;
|
||||
+pub const SYS_setpgid: ::c_long = 154;
|
||||
+pub const SYS_getppid: ::c_long = 173;
|
||||
+pub const SYS_setsid: ::c_long = 157;
|
||||
+pub const SYS_setreuid: ::c_long = 145;
|
||||
+pub const SYS_setregid: ::c_long = 143;
|
||||
+pub const SYS_getgroups: ::c_long = 158;
|
||||
+pub const SYS_setgroups: ::c_long = 159;
|
||||
+pub const SYS_setresuid: ::c_long = 147;
|
||||
+pub const SYS_getresuid: ::c_long = 148;
|
||||
+pub const SYS_setresgid: ::c_long = 149;
|
||||
+pub const SYS_getresgid: ::c_long = 150;
|
||||
+pub const SYS_getpgid: ::c_long = 155;
|
||||
+pub const SYS_setfsuid: ::c_long = 151;
|
||||
+pub const SYS_setfsgid: ::c_long = 152;
|
||||
+pub const SYS_getsid: ::c_long = 156;
|
||||
+pub const SYS_capget: ::c_long = 90;
|
||||
+pub const SYS_capset: ::c_long = 91;
|
||||
+pub const SYS_rt_sigpending: ::c_long = 136;
|
||||
+pub const SYS_rt_sigtimedwait: ::c_long = 137;
|
||||
+pub const SYS_rt_sigqueueinfo: ::c_long = 138;
|
||||
+pub const SYS_rt_sigsuspend: ::c_long = 133;
|
||||
+pub const SYS_sigaltstack: ::c_long = 132;
|
||||
+pub const SYS_personality: ::c_long = 92;
|
||||
+pub const SYS_statfs: ::c_long = 43;
|
||||
+pub const SYS_fstatfs: ::c_long = 44;
|
||||
+pub const SYS_getpriority: ::c_long = 141;
|
||||
+pub const SYS_setpriority: ::c_long = 140;
|
||||
+pub const SYS_sched_setparam: ::c_long = 118;
|
||||
+pub const SYS_sched_getparam: ::c_long = 121;
|
||||
+pub const SYS_sched_setscheduler: ::c_long = 119;
|
||||
+pub const SYS_sched_getscheduler: ::c_long = 120;
|
||||
+pub const SYS_sched_get_priority_max: ::c_long = 125;
|
||||
+pub const SYS_sched_get_priority_min: ::c_long = 126;
|
||||
+pub const SYS_sched_rr_get_interval: ::c_long = 127;
|
||||
+pub const SYS_mlock: ::c_long = 228;
|
||||
+pub const SYS_munlock: ::c_long = 229;
|
||||
+pub const SYS_mlockall: ::c_long = 230;
|
||||
+pub const SYS_munlockall: ::c_long = 231;
|
||||
+pub const SYS_vhangup: ::c_long = 58;
|
||||
+pub const SYS_pivot_root: ::c_long = 41;
|
||||
+pub const SYS_prctl: ::c_long = 167;
|
||||
+pub const SYS_adjtimex: ::c_long = 171;
|
||||
+pub const SYS_setrlimit: ::c_long = 164;
|
||||
+pub const SYS_chroot: ::c_long = 51;
|
||||
+pub const SYS_sync: ::c_long = 81;
|
||||
+pub const SYS_acct: ::c_long = 89;
|
||||
+pub const SYS_settimeofday: ::c_long = 170;
|
||||
+pub const SYS_mount: ::c_long = 40;
|
||||
+pub const SYS_umount2: ::c_long = 39;
|
||||
+pub const SYS_swapon: ::c_long = 224;
|
||||
+pub const SYS_swapoff: ::c_long = 225;
|
||||
+pub const SYS_reboot: ::c_long = 142;
|
||||
+pub const SYS_sethostname: ::c_long = 161;
|
||||
+pub const SYS_setdomainname: ::c_long = 162;
|
||||
+pub const SYS_init_module: ::c_long = 105;
|
||||
+pub const SYS_delete_module: ::c_long = 106;
|
||||
+pub const SYS_quotactl: ::c_long = 60;
|
||||
+pub const SYS_nfsservctl: ::c_long = 42;
|
||||
+pub const SYS_gettid: ::c_long = 178;
|
||||
+pub const SYS_readahead: ::c_long = 213;
|
||||
+pub const SYS_setxattr: ::c_long = 5;
|
||||
+pub const SYS_lsetxattr: ::c_long = 6;
|
||||
+pub const SYS_fsetxattr: ::c_long = 7;
|
||||
+pub const SYS_getxattr: ::c_long = 8;
|
||||
+pub const SYS_lgetxattr: ::c_long = 9;
|
||||
+pub const SYS_fgetxattr: ::c_long = 10;
|
||||
+pub const SYS_listxattr: ::c_long = 11;
|
||||
+pub const SYS_llistxattr: ::c_long = 12;
|
||||
+pub const SYS_flistxattr: ::c_long = 13;
|
||||
+pub const SYS_removexattr: ::c_long = 14;
|
||||
+pub const SYS_lremovexattr: ::c_long = 15;
|
||||
+pub const SYS_fremovexattr: ::c_long = 16;
|
||||
+pub const SYS_tkill: ::c_long = 130;
|
||||
+pub const SYS_futex: ::c_long = 98;
|
||||
+pub const SYS_sched_setaffinity: ::c_long = 122;
|
||||
+pub const SYS_sched_getaffinity: ::c_long = 123;
|
||||
+pub const SYS_io_setup: ::c_long = 0;
|
||||
+pub const SYS_io_destroy: ::c_long = 1;
|
||||
+pub const SYS_io_getevents: ::c_long = 4;
|
||||
+pub const SYS_io_submit: ::c_long = 2;
|
||||
+pub const SYS_io_cancel: ::c_long = 3;
|
||||
+pub const SYS_lookup_dcookie: ::c_long = 18;
|
||||
+pub const SYS_remap_file_pages: ::c_long = 234;
|
||||
+pub const SYS_getdents64: ::c_long = 61;
|
||||
+pub const SYS_set_tid_address: ::c_long = 96;
|
||||
+pub const SYS_restart_syscall: ::c_long = 128;
|
||||
+pub const SYS_semtimedop: ::c_long = 192;
|
||||
+pub const SYS_fadvise64: ::c_long = 223;
|
||||
+pub const SYS_timer_create: ::c_long = 107;
|
||||
+pub const SYS_timer_settime: ::c_long = 110;
|
||||
+pub const SYS_timer_gettime: ::c_long = 108;
|
||||
+pub const SYS_timer_getoverrun: ::c_long = 109;
|
||||
+pub const SYS_timer_delete: ::c_long = 111;
|
||||
+pub const SYS_clock_settime: ::c_long = 112;
|
||||
+pub const SYS_clock_gettime: ::c_long = 113;
|
||||
+pub const SYS_clock_getres: ::c_long = 114;
|
||||
+pub const SYS_clock_nanosleep: ::c_long = 115;
|
||||
+pub const SYS_exit_group: ::c_long = 94;
|
||||
+pub const SYS_epoll_ctl: ::c_long = 21;
|
||||
+pub const SYS_tgkill: ::c_long = 131;
|
||||
+pub const SYS_mbind: ::c_long = 235;
|
||||
+pub const SYS_set_mempolicy: ::c_long = 237;
|
||||
+pub const SYS_get_mempolicy: ::c_long = 236;
|
||||
+pub const SYS_mq_open: ::c_long = 180;
|
||||
+pub const SYS_mq_unlink: ::c_long = 181;
|
||||
+pub const SYS_mq_timedsend: ::c_long = 182;
|
||||
+pub const SYS_mq_timedreceive: ::c_long = 183;
|
||||
+pub const SYS_mq_notify: ::c_long = 184;
|
||||
+pub const SYS_mq_getsetattr: ::c_long = 185;
|
||||
+pub const SYS_kexec_load: ::c_long = 104;
|
||||
+pub const SYS_waitid: ::c_long = 95;
|
||||
+pub const SYS_add_key: ::c_long = 217;
|
||||
+pub const SYS_request_key: ::c_long = 218;
|
||||
+pub const SYS_keyctl: ::c_long = 219;
|
||||
+pub const SYS_ioprio_set: ::c_long = 30;
|
||||
+pub const SYS_ioprio_get: ::c_long = 31;
|
||||
+pub const SYS_inotify_add_watch: ::c_long = 27;
|
||||
+pub const SYS_inotify_rm_watch: ::c_long = 28;
|
||||
+pub const SYS_migrate_pages: ::c_long = 238;
|
||||
+pub const SYS_openat: ::c_long = 56;
|
||||
+pub const SYS_mkdirat: ::c_long = 34;
|
||||
+pub const SYS_mknodat: ::c_long = 33;
|
||||
+pub const SYS_fchownat: ::c_long = 54;
|
||||
+pub const SYS_newfstatat: ::c_long = 79;
|
||||
+pub const SYS_unlinkat: ::c_long = 35;
|
||||
+pub const SYS_linkat: ::c_long = 37;
|
||||
+pub const SYS_symlinkat: ::c_long = 36;
|
||||
+pub const SYS_readlinkat: ::c_long = 78;
|
||||
+pub const SYS_fchmodat: ::c_long = 53;
|
||||
+pub const SYS_faccessat: ::c_long = 48;
|
||||
+pub const SYS_pselect6: ::c_long = 72;
|
||||
+pub const SYS_ppoll: ::c_long = 73;
|
||||
+pub const SYS_unshare: ::c_long = 97;
|
||||
+pub const SYS_set_robust_list: ::c_long = 99;
|
||||
+pub const SYS_get_robust_list: ::c_long = 100;
|
||||
+pub const SYS_splice: ::c_long = 76;
|
||||
+pub const SYS_tee: ::c_long = 77;
|
||||
+pub const SYS_sync_file_range: ::c_long = 84;
|
||||
+pub const SYS_vmsplice: ::c_long = 75;
|
||||
+pub const SYS_move_pages: ::c_long = 239;
|
||||
+pub const SYS_utimensat: ::c_long = 88;
|
||||
+pub const SYS_epoll_pwait: ::c_long = 22;
|
||||
+pub const SYS_timerfd_create: ::c_long = 85;
|
||||
+pub const SYS_fallocate: ::c_long = 47;
|
||||
+pub const SYS_timerfd_settime: ::c_long = 86;
|
||||
+pub const SYS_timerfd_gettime: ::c_long = 87;
|
||||
+pub const SYS_accept4: ::c_long = 242;
|
||||
+pub const SYS_signalfd4: ::c_long = 74;
|
||||
+pub const SYS_eventfd2: ::c_long = 19;
|
||||
+pub const SYS_epoll_create1: ::c_long = 20;
|
||||
+pub const SYS_dup3: ::c_long = 24;
|
||||
+pub const SYS_pipe2: ::c_long = 59;
|
||||
+pub const SYS_inotify_init1: ::c_long = 26;
|
||||
+pub const SYS_preadv: ::c_long = 69;
|
||||
+pub const SYS_pwritev: ::c_long = 70;
|
||||
+pub const SYS_rt_tgsigqueueinfo: ::c_long = 240;
|
||||
+pub const SYS_perf_event_open: ::c_long = 241;
|
||||
+pub const SYS_recvmmsg: ::c_long = 243;
|
||||
+pub const SYS_fanotify_init: ::c_long = 262;
|
||||
+pub const SYS_fanotify_mark: ::c_long = 263;
|
||||
+pub const SYS_prlimit64: ::c_long = 261;
|
||||
+pub const SYS_name_to_handle_at: ::c_long = 264;
|
||||
+pub const SYS_open_by_handle_at: ::c_long = 265;
|
||||
+pub const SYS_clock_adjtime: ::c_long = 266;
|
||||
+pub const SYS_syncfs: ::c_long = 267;
|
||||
+pub const SYS_sendmmsg: ::c_long = 269;
|
||||
+pub const SYS_setns: ::c_long = 268;
|
||||
+pub const SYS_getcpu: ::c_long = 168;
|
||||
+pub const SYS_process_vm_readv: ::c_long = 270;
|
||||
+pub const SYS_process_vm_writev: ::c_long = 271;
|
||||
+pub const SYS_kcmp: ::c_long = 272;
|
||||
+pub const SYS_finit_module: ::c_long = 273;
|
||||
+pub const SYS_sched_setattr: ::c_long = 274;
|
||||
+pub const SYS_sched_getattr: ::c_long = 275;
|
||||
+pub const SYS_renameat2: ::c_long = 276;
|
||||
+pub const SYS_seccomp: ::c_long = 277;
|
||||
+pub const SYS_getrandom: ::c_long = 278;
|
||||
+pub const SYS_memfd_create: ::c_long = 279;
|
||||
+pub const SYS_bpf: ::c_long = 280;
|
||||
+pub const SYS_execveat: ::c_long = 281;
|
||||
+pub const SYS_userfaultfd: ::c_long = 282;
|
||||
+pub const SYS_membarrier: ::c_long = 283;
|
||||
+pub const SYS_mlock2: ::c_long = 284;
|
||||
+pub const SYS_copy_file_range: ::c_long = 285;
|
||||
+pub const SYS_preadv2: ::c_long = 286;
|
||||
+pub const SYS_pwritev2: ::c_long = 287;
|
||||
+pub const SYS_pkey_mprotect: ::c_long = 288;
|
||||
+pub const SYS_pkey_alloc: ::c_long = 289;
|
||||
+pub const SYS_pkey_free: ::c_long = 290;
|
||||
+pub const SYS_statx: ::c_long = 291;
|
||||
+pub const SYS_pidfd_open: ::c_long = 434;
|
||||
+pub const SYS_clone3: ::c_long = 435;
|
||||
--
|
||||
2.30.1
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
From 2f418ff6fbe1dbdd2f56b3e208f3da6d71c0a7e4 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Wed, 17 Feb 2021 00:34:05 -0800
|
||||
Subject: [PATCH 2/4] FIXUP: linux/musl/mod.rs: add riscv64 to b64 set
|
||||
|
||||
https://github.com/rust-lang/libc/pull/1994/commits/30070c822be2ef399b2ba38cdc1d72ac694d65a3
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
vendor/libc/src/unix/linux_like/linux/musl/mod.rs | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/mod.rs
|
||||
index 0d427ae38..d7eb212f7 100644
|
||||
--- a/vendor/libc/src/unix/linux_like/linux/musl/mod.rs
|
||||
+++ b/vendor/libc/src/unix/linux_like/linux/musl/mod.rs
|
||||
@@ -601,7 +601,8 @@ cfg_if! {
|
||||
if #[cfg(any(target_arch = "x86_64",
|
||||
target_arch = "aarch64",
|
||||
target_arch = "mips64",
|
||||
- target_arch = "powerpc64"))] {
|
||||
+ target_arch = "powerpc64",
|
||||
+ target_arch = "riscv64"))] {
|
||||
mod b64;
|
||||
pub use self::b64::*;
|
||||
} else if #[cfg(any(target_arch = "x86",
|
||||
--
|
||||
2.30.1
|
||||
|
||||
@@ -0,0 +1,740 @@
|
||||
From f6a2f444d9deae167f4c939c6e874744986744a1 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Wed, 17 Feb 2021 00:34:56 -0800
|
||||
Subject: [PATCH 3/4] FIXUP Correct definitions to match musl
|
||||
|
||||
https://github.com/rust-lang/libc/pull/1994/commits/5f6a4d9745c79c81be63c708515ab116786554a3
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
.../linux_like/linux/musl/b64/riscv64/mod.rs | 708 ++++++++----------
|
||||
1 file changed, 311 insertions(+), 397 deletions(-)
|
||||
|
||||
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
|
||||
index 14bae11d0..c37190cca 100644
|
||||
--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
|
||||
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
|
||||
@@ -191,403 +191,8 @@ s! {
|
||||
pub l_len: ::off64_t,
|
||||
pub l_pid: ::pid_t,
|
||||
}
|
||||
-
|
||||
- pub struct ip_mreqn {
|
||||
- pub imr_multiaddr: ::in_addr,
|
||||
- pub imr_address: ::in_addr,
|
||||
- pub imr_ifindex: ::c_int,
|
||||
- }
|
||||
}
|
||||
|
||||
-pub const POSIX_FADV_DONTNEED: ::c_int = 4;
|
||||
-pub const POSIX_FADV_NOREUSE: ::c_int = 5;
|
||||
-pub const VEOF: usize = 4;
|
||||
-pub const RTLD_DEEPBIND: ::c_int = 0x8;
|
||||
-pub const RTLD_GLOBAL: ::c_int = 0x100;
|
||||
-pub const RTLD_NOLOAD: ::c_int = 0x4;
|
||||
-pub const TIOCGSOFTCAR: ::c_ulong = 21529;
|
||||
-pub const TIOCSSOFTCAR: ::c_ulong = 21530;
|
||||
-pub const TIOCGRS485: ::c_int = 21550;
|
||||
-pub const TIOCSRS485: ::c_int = 21551;
|
||||
-pub const RLIMIT_RSS: ::__rlimit_resource_t = 5;
|
||||
-pub const RLIMIT_AS: ::__rlimit_resource_t = 9;
|
||||
-pub const RLIMIT_MEMLOCK: ::__rlimit_resource_t = 8;
|
||||
-pub const RLIMIT_NOFILE: ::__rlimit_resource_t = 7;
|
||||
-pub const RLIMIT_NPROC: ::__rlimit_resource_t = 6;
|
||||
-pub const O_APPEND: ::c_int = 1024;
|
||||
-pub const O_CREAT: ::c_int = 64;
|
||||
-pub const O_EXCL: ::c_int = 128;
|
||||
-pub const O_NOCTTY: ::c_int = 256;
|
||||
-pub const O_NONBLOCK: ::c_int = 2048;
|
||||
-pub const O_SYNC: ::c_int = 1052672;
|
||||
-pub const O_RSYNC: ::c_int = 1052672;
|
||||
-pub const O_DSYNC: ::c_int = 4096;
|
||||
-pub const O_FSYNC: ::c_int = 1052672;
|
||||
-pub const O_NOATIME: ::c_int = 262144;
|
||||
-pub const O_PATH: ::c_int = 2097152;
|
||||
-pub const O_TMPFILE: ::c_int = 4259840;
|
||||
-pub const MAP_GROWSDOWN: ::c_int = 256;
|
||||
-pub const EDEADLK: ::c_int = 35;
|
||||
-pub const ENAMETOOLONG: ::c_int = 36;
|
||||
-pub const ENOLCK: ::c_int = 37;
|
||||
-pub const ENOSYS: ::c_int = 38;
|
||||
-pub const ENOTEMPTY: ::c_int = 39;
|
||||
-pub const ELOOP: ::c_int = 40;
|
||||
-pub const ENOMSG: ::c_int = 42;
|
||||
-pub const EIDRM: ::c_int = 43;
|
||||
-pub const ECHRNG: ::c_int = 44;
|
||||
-pub const EL2NSYNC: ::c_int = 45;
|
||||
-pub const EL3HLT: ::c_int = 46;
|
||||
-pub const EL3RST: ::c_int = 47;
|
||||
-pub const ELNRNG: ::c_int = 48;
|
||||
-pub const EUNATCH: ::c_int = 49;
|
||||
-pub const ENOCSI: ::c_int = 50;
|
||||
-pub const EL2HLT: ::c_int = 51;
|
||||
-pub const EBADE: ::c_int = 52;
|
||||
-pub const EBADR: ::c_int = 53;
|
||||
-pub const EXFULL: ::c_int = 54;
|
||||
-pub const ENOANO: ::c_int = 55;
|
||||
-pub const EBADRQC: ::c_int = 56;
|
||||
-pub const EBADSLT: ::c_int = 57;
|
||||
-pub const EMULTIHOP: ::c_int = 72;
|
||||
-pub const EOVERFLOW: ::c_int = 75;
|
||||
-pub const ENOTUNIQ: ::c_int = 76;
|
||||
-pub const EBADFD: ::c_int = 77;
|
||||
-pub const EBADMSG: ::c_int = 74;
|
||||
-pub const EREMCHG: ::c_int = 78;
|
||||
-pub const ELIBACC: ::c_int = 79;
|
||||
-pub const ELIBBAD: ::c_int = 80;
|
||||
-pub const ELIBSCN: ::c_int = 81;
|
||||
-pub const ELIBMAX: ::c_int = 82;
|
||||
-pub const ELIBEXEC: ::c_int = 83;
|
||||
-pub const EILSEQ: ::c_int = 84;
|
||||
-pub const ERESTART: ::c_int = 85;
|
||||
-pub const ESTRPIPE: ::c_int = 86;
|
||||
-pub const EUSERS: ::c_int = 87;
|
||||
-pub const ENOTSOCK: ::c_int = 88;
|
||||
-pub const EDESTADDRREQ: ::c_int = 89;
|
||||
-pub const EMSGSIZE: ::c_int = 90;
|
||||
-pub const EPROTOTYPE: ::c_int = 91;
|
||||
-pub const ENOPROTOOPT: ::c_int = 92;
|
||||
-pub const EPROTONOSUPPORT: ::c_int = 93;
|
||||
-pub const ESOCKTNOSUPPORT: ::c_int = 94;
|
||||
-pub const EOPNOTSUPP: ::c_int = 95;
|
||||
-pub const EPFNOSUPPORT: ::c_int = 96;
|
||||
-pub const EAFNOSUPPORT: ::c_int = 97;
|
||||
-pub const EADDRINUSE: ::c_int = 98;
|
||||
-pub const EADDRNOTAVAIL: ::c_int = 99;
|
||||
-pub const ENETDOWN: ::c_int = 100;
|
||||
-pub const ENETUNREACH: ::c_int = 101;
|
||||
-pub const ENETRESET: ::c_int = 102;
|
||||
-pub const ECONNABORTED: ::c_int = 103;
|
||||
-pub const ECONNRESET: ::c_int = 104;
|
||||
-pub const ENOBUFS: ::c_int = 105;
|
||||
-pub const EISCONN: ::c_int = 106;
|
||||
-pub const ENOTCONN: ::c_int = 107;
|
||||
-pub const ESHUTDOWN: ::c_int = 108;
|
||||
-pub const ETOOMANYREFS: ::c_int = 109;
|
||||
-pub const ETIMEDOUT: ::c_int = 110;
|
||||
-pub const ECONNREFUSED: ::c_int = 111;
|
||||
-pub const EHOSTDOWN: ::c_int = 112;
|
||||
-pub const EHOSTUNREACH: ::c_int = 113;
|
||||
-pub const EALREADY: ::c_int = 114;
|
||||
-pub const EINPROGRESS: ::c_int = 115;
|
||||
-pub const ESTALE: ::c_int = 116;
|
||||
-pub const EDQUOT: ::c_int = 122;
|
||||
-pub const ENOMEDIUM: ::c_int = 123;
|
||||
-pub const EMEDIUMTYPE: ::c_int = 124;
|
||||
-pub const ECANCELED: ::c_int = 125;
|
||||
-pub const ENOKEY: ::c_int = 126;
|
||||
-pub const EKEYEXPIRED: ::c_int = 127;
|
||||
-pub const EKEYREVOKED: ::c_int = 128;
|
||||
-pub const EKEYREJECTED: ::c_int = 129;
|
||||
-pub const EOWNERDEAD: ::c_int = 130;
|
||||
-pub const ENOTRECOVERABLE: ::c_int = 131;
|
||||
-pub const EHWPOISON: ::c_int = 133;
|
||||
-pub const ERFKILL: ::c_int = 132;
|
||||
-pub const SOL_SOCKET: ::c_int = 1;
|
||||
-pub const SO_REUSEADDR: ::c_int = 2;
|
||||
-pub const SO_TYPE: ::c_int = 3;
|
||||
-pub const SO_ERROR: ::c_int = 4;
|
||||
-pub const SO_DONTROUTE: ::c_int = 5;
|
||||
-pub const SO_BROADCAST: ::c_int = 6;
|
||||
-pub const SO_SNDBUF: ::c_int = 7;
|
||||
-pub const SO_RCVBUF: ::c_int = 8;
|
||||
-pub const SO_SNDBUFFORCE: ::c_int = 32;
|
||||
-pub const SO_RCVBUFFORCE: ::c_int = 33;
|
||||
-pub const SO_KEEPALIVE: ::c_int = 9;
|
||||
-pub const SO_OOBINLINE: ::c_int = 10;
|
||||
-pub const SO_NO_CHECK: ::c_int = 11;
|
||||
-pub const SO_PRIORITY: ::c_int = 12;
|
||||
-pub const SO_LINGER: ::c_int = 13;
|
||||
-pub const SO_BSDCOMPAT: ::c_int = 14;
|
||||
-pub const SO_REUSEPORT: ::c_int = 15;
|
||||
-pub const SO_PASSCRED: ::c_int = 16;
|
||||
-pub const SO_PEERCRED: ::c_int = 17;
|
||||
-pub const SO_RCVLOWAT: ::c_int = 18;
|
||||
-pub const SO_SNDLOWAT: ::c_int = 19;
|
||||
-pub const SO_RCVTIMEO: ::c_int = 20;
|
||||
-pub const SO_SNDTIMEO: ::c_int = 21;
|
||||
-pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22;
|
||||
-pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23;
|
||||
-pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24;
|
||||
-pub const SO_BINDTODEVICE: ::c_int = 25;
|
||||
-pub const SO_ATTACH_FILTER: ::c_int = 26;
|
||||
-pub const SO_DETACH_FILTER: ::c_int = 27;
|
||||
-pub const SO_GET_FILTER: ::c_int = 26;
|
||||
-pub const SO_PEERNAME: ::c_int = 28;
|
||||
-pub const SO_TIMESTAMP: ::c_int = 29;
|
||||
-pub const SO_ACCEPTCONN: ::c_int = 30;
|
||||
-pub const SO_PEERSEC: ::c_int = 31;
|
||||
-pub const SO_PASSSEC: ::c_int = 34;
|
||||
-pub const SO_TIMESTAMPNS: ::c_int = 35;
|
||||
-pub const SCM_TIMESTAMPNS: ::c_int = 35;
|
||||
-pub const SO_MARK: ::c_int = 36;
|
||||
-pub const SO_PROTOCOL: ::c_int = 38;
|
||||
-pub const SO_DOMAIN: ::c_int = 39;
|
||||
-pub const SO_RXQ_OVFL: ::c_int = 40;
|
||||
-pub const SO_WIFI_STATUS: ::c_int = 41;
|
||||
-pub const SCM_WIFI_STATUS: ::c_int = 41;
|
||||
-pub const SO_PEEK_OFF: ::c_int = 42;
|
||||
-pub const SO_NOFCS: ::c_int = 43;
|
||||
-pub const SO_LOCK_FILTER: ::c_int = 44;
|
||||
-pub const SO_SELECT_ERR_QUEUE: ::c_int = 45;
|
||||
-pub const SO_BUSY_POLL: ::c_int = 46;
|
||||
-pub const SO_MAX_PACING_RATE: ::c_int = 47;
|
||||
-pub const SO_BPF_EXTENSIONS: ::c_int = 48;
|
||||
-pub const SO_INCOMING_CPU: ::c_int = 49;
|
||||
-pub const SO_ATTACH_BPF: ::c_int = 50;
|
||||
-pub const SO_DETACH_BPF: ::c_int = 27;
|
||||
-pub const SOCK_STREAM: ::c_int = 1;
|
||||
-pub const SOCK_DGRAM: ::c_int = 2;
|
||||
-pub const SA_ONSTACK: ::c_int = 134217728;
|
||||
-pub const SA_SIGINFO: ::c_int = 4;
|
||||
-pub const SA_NOCLDWAIT: ::c_int = 2;
|
||||
-pub const SIGTTIN: ::c_int = 21;
|
||||
-pub const SIGTTOU: ::c_int = 22;
|
||||
-pub const SIGXCPU: ::c_int = 24;
|
||||
-pub const SIGXFSZ: ::c_int = 25;
|
||||
-pub const SIGVTALRM: ::c_int = 26;
|
||||
-pub const SIGPROF: ::c_int = 27;
|
||||
-pub const SIGWINCH: ::c_int = 28;
|
||||
-pub const SIGCHLD: ::c_int = 17;
|
||||
-pub const SIGBUS: ::c_int = 7;
|
||||
-pub const SIGUSR1: ::c_int = 10;
|
||||
-pub const SIGUSR2: ::c_int = 12;
|
||||
-pub const SIGCONT: ::c_int = 18;
|
||||
-pub const SIGSTOP: ::c_int = 19;
|
||||
-pub const SIGTSTP: ::c_int = 20;
|
||||
-pub const SIGURG: ::c_int = 23;
|
||||
-pub const SIGIO: ::c_int = 29;
|
||||
-pub const SIGSYS: ::c_int = 31;
|
||||
-pub const SIGSTKFLT: ::c_int = 16;
|
||||
-pub const SIGPOLL: ::c_int = 29;
|
||||
-pub const SIGPWR: ::c_int = 30;
|
||||
-pub const SIG_SETMASK: ::c_int = 2;
|
||||
-pub const SIG_BLOCK: ::c_int = 0;
|
||||
-pub const SIG_UNBLOCK: ::c_int = 1;
|
||||
-pub const POLLWRNORM: ::c_short = 256;
|
||||
-pub const POLLWRBAND: ::c_short = 512;
|
||||
-pub const O_ASYNC: ::c_int = 8192;
|
||||
-pub const O_NDELAY: ::c_int = 2048;
|
||||
-pub const PTRACE_DETACH: ::c_uint = 17;
|
||||
-pub const EFD_NONBLOCK: ::c_int = 2048;
|
||||
-pub const F_GETLK: ::c_int = 5;
|
||||
-pub const F_GETOWN: ::c_int = 9;
|
||||
-pub const F_SETOWN: ::c_int = 8;
|
||||
-pub const F_SETLK: ::c_int = 6;
|
||||
-pub const F_SETLKW: ::c_int = 7;
|
||||
-pub const F_RDLCK: ::c_int = 0;
|
||||
-pub const F_WRLCK: ::c_int = 1;
|
||||
-pub const F_UNLCK: ::c_int = 2;
|
||||
-pub const F_OFD_GETLK: ::c_int = 36;
|
||||
-pub const F_OFD_SETLK: ::c_int = 37;
|
||||
-pub const F_OFD_SETLKW: ::c_int = 38;
|
||||
-pub const SFD_NONBLOCK: ::c_int = 2048;
|
||||
-pub const TCSANOW: ::c_int = 0;
|
||||
-pub const TCSADRAIN: ::c_int = 1;
|
||||
-pub const TCSAFLUSH: ::c_int = 2;
|
||||
-pub const TIOCLINUX: ::c_ulong = 21532;
|
||||
-pub const TIOCGSERIAL: ::c_ulong = 21534;
|
||||
-pub const TIOCEXCL: ::c_ulong = 21516;
|
||||
-pub const TIOCNXCL: ::c_ulong = 21517;
|
||||
-pub const TIOCSCTTY: ::c_ulong = 21518;
|
||||
-pub const TIOCSTI: ::c_ulong = 21522;
|
||||
-pub const TIOCMGET: ::c_ulong = 21525;
|
||||
-pub const TIOCMBIS: ::c_ulong = 21526;
|
||||
-pub const TIOCMBIC: ::c_ulong = 21527;
|
||||
-pub const TIOCMSET: ::c_ulong = 21528;
|
||||
-pub const TIOCCONS: ::c_ulong = 21533;
|
||||
-pub const TIOCM_ST: ::c_int = 8;
|
||||
-pub const TIOCM_SR: ::c_int = 16;
|
||||
-pub const TIOCM_CTS: ::c_int = 32;
|
||||
-pub const TIOCM_CAR: ::c_int = 64;
|
||||
-pub const TIOCM_RNG: ::c_int = 128;
|
||||
-pub const TIOCM_DSR: ::c_int = 256;
|
||||
-pub const SFD_CLOEXEC: ::c_int = 524288;
|
||||
-pub const NCCS: usize = 32;
|
||||
-pub const O_TRUNC: ::c_int = 512;
|
||||
-pub const O_CLOEXEC: ::c_int = 524288;
|
||||
-pub const EBFONT: ::c_int = 59;
|
||||
-pub const ENOSTR: ::c_int = 60;
|
||||
-pub const ENODATA: ::c_int = 61;
|
||||
-pub const ETIME: ::c_int = 62;
|
||||
-pub const ENOSR: ::c_int = 63;
|
||||
-pub const ENONET: ::c_int = 64;
|
||||
-pub const ENOPKG: ::c_int = 65;
|
||||
-pub const EREMOTE: ::c_int = 66;
|
||||
-pub const ENOLINK: ::c_int = 67;
|
||||
-pub const EADV: ::c_int = 68;
|
||||
-pub const ESRMNT: ::c_int = 69;
|
||||
-pub const ECOMM: ::c_int = 70;
|
||||
-pub const EPROTO: ::c_int = 71;
|
||||
-pub const EDOTDOT: ::c_int = 73;
|
||||
-pub const SA_NODEFER: ::c_int = 1073741824;
|
||||
-pub const SA_RESETHAND: ::c_int = -2147483648;
|
||||
-pub const SA_RESTART: ::c_int = 268435456;
|
||||
-pub const SA_NOCLDSTOP: ::c_int = 1;
|
||||
-pub const EPOLL_CLOEXEC: ::c_int = 524288;
|
||||
-pub const EFD_CLOEXEC: ::c_int = 524288;
|
||||
-pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
|
||||
-pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
|
||||
-pub const O_DIRECT: ::c_int = 16384;
|
||||
-pub const O_DIRECTORY: ::c_int = 65536;
|
||||
-pub const O_NOFOLLOW: ::c_int = 131072;
|
||||
-pub const MAP_HUGETLB: ::c_int = 262144;
|
||||
-pub const MAP_LOCKED: ::c_int = 8192;
|
||||
-pub const MAP_NORESERVE: ::c_int = 16384;
|
||||
-pub const MAP_ANON: ::c_int = 32;
|
||||
-pub const MAP_ANONYMOUS: ::c_int = 32;
|
||||
-pub const MAP_DENYWRITE: ::c_int = 2048;
|
||||
-pub const MAP_EXECUTABLE: ::c_int = 4096;
|
||||
-pub const MAP_POPULATE: ::c_int = 32768;
|
||||
-pub const MAP_NONBLOCK: ::c_int = 65536;
|
||||
-pub const MAP_STACK: ::c_int = 131072;
|
||||
-pub const MAP_SYNC : ::c_int = 0x080000;
|
||||
-pub const EDEADLOCK: ::c_int = 35;
|
||||
-pub const EUCLEAN: ::c_int = 117;
|
||||
-pub const ENOTNAM: ::c_int = 118;
|
||||
-pub const ENAVAIL: ::c_int = 119;
|
||||
-pub const EISNAM: ::c_int = 120;
|
||||
-pub const EREMOTEIO: ::c_int = 121;
|
||||
-pub const FIOCLEX: ::c_ulong = 21585;
|
||||
-pub const FIONCLEX: ::c_ulong = 21584;
|
||||
-pub const FIONBIO: ::c_ulong = 21537;
|
||||
-pub const MCL_CURRENT: ::c_int = 1;
|
||||
-pub const MCL_FUTURE: ::c_int = 2;
|
||||
-pub const SIGSTKSZ: ::size_t = 8192;
|
||||
-pub const MINSIGSTKSZ: ::size_t = 2048;
|
||||
-pub const CBAUD: ::tcflag_t = 4111;
|
||||
-pub const TAB1: ::tcflag_t = 2048;
|
||||
-pub const TAB2: ::tcflag_t = 4096;
|
||||
-pub const TAB3: ::tcflag_t = 6144;
|
||||
-pub const CR1: ::tcflag_t = 512;
|
||||
-pub const CR2: ::tcflag_t = 1024;
|
||||
-pub const CR3: ::tcflag_t = 1536;
|
||||
-pub const FF1: ::tcflag_t = 32768;
|
||||
-pub const BS1: ::tcflag_t = 8192;
|
||||
-pub const VT1: ::tcflag_t = 16384;
|
||||
-pub const VWERASE: usize = 14;
|
||||
-pub const VREPRINT: usize = 12;
|
||||
-pub const VSUSP: usize = 10;
|
||||
-pub const VSTART: usize = 8;
|
||||
-pub const VSTOP: usize = 9;
|
||||
-pub const VDISCARD: usize = 13;
|
||||
-pub const VTIME: usize = 5;
|
||||
-pub const IXON: ::tcflag_t = 1024;
|
||||
-pub const IXOFF: ::tcflag_t = 4096;
|
||||
-pub const ONLCR: ::tcflag_t = 4;
|
||||
-pub const CSIZE: ::tcflag_t = 48;
|
||||
-pub const CS6: ::tcflag_t = 16;
|
||||
-pub const CS7: ::tcflag_t = 32;
|
||||
-pub const CS8: ::tcflag_t = 48;
|
||||
-pub const CSTOPB: ::tcflag_t = 64;
|
||||
-pub const CREAD: ::tcflag_t = 128;
|
||||
-pub const PARENB: ::tcflag_t = 256;
|
||||
-pub const PARODD: ::tcflag_t = 512;
|
||||
-pub const HUPCL: ::tcflag_t = 1024;
|
||||
-pub const CLOCAL: ::tcflag_t = 2048;
|
||||
-pub const ECHOKE: ::tcflag_t = 2048;
|
||||
-pub const ECHOE: ::tcflag_t = 16;
|
||||
-pub const ECHOK: ::tcflag_t = 32;
|
||||
-pub const ECHONL: ::tcflag_t = 64;
|
||||
-pub const ECHOPRT: ::tcflag_t = 1024;
|
||||
-pub const ECHOCTL: ::tcflag_t = 512;
|
||||
-pub const ISIG: ::tcflag_t = 1;
|
||||
-pub const ICANON: ::tcflag_t = 2;
|
||||
-pub const PENDIN: ::tcflag_t = 16384;
|
||||
-pub const NOFLSH: ::tcflag_t = 128;
|
||||
-pub const CIBAUD: ::tcflag_t = 269418496;
|
||||
-pub const CBAUDEX: ::tcflag_t = 4096;
|
||||
-pub const VSWTC: usize = 7;
|
||||
-pub const OLCUC: ::tcflag_t = 2;
|
||||
-pub const NLDLY: ::tcflag_t = 256;
|
||||
-pub const CRDLY: ::tcflag_t = 1536;
|
||||
-pub const TABDLY: ::tcflag_t = 6144;
|
||||
-pub const BSDLY: ::tcflag_t = 8192;
|
||||
-pub const FFDLY: ::tcflag_t = 32768;
|
||||
-pub const VTDLY: ::tcflag_t = 16384;
|
||||
-pub const XTABS: ::tcflag_t = 6144;
|
||||
-pub const B0: ::speed_t = 0;
|
||||
-pub const B50: ::speed_t = 1;
|
||||
-pub const B75: ::speed_t = 2;
|
||||
-pub const B110: ::speed_t = 3;
|
||||
-pub const B134: ::speed_t = 4;
|
||||
-pub const B150: ::speed_t = 5;
|
||||
-pub const B200: ::speed_t = 6;
|
||||
-pub const B300: ::speed_t = 7;
|
||||
-pub const B600: ::speed_t = 8;
|
||||
-pub const B1200: ::speed_t = 9;
|
||||
-pub const B1800: ::speed_t = 10;
|
||||
-pub const B2400: ::speed_t = 11;
|
||||
-pub const B4800: ::speed_t = 12;
|
||||
-pub const B9600: ::speed_t = 13;
|
||||
-pub const B19200: ::speed_t = 14;
|
||||
-pub const B38400: ::speed_t = 15;
|
||||
-pub const EXTA: ::speed_t = 14;
|
||||
-pub const EXTB: ::speed_t = 15;
|
||||
-pub const B57600: ::speed_t = 4097;
|
||||
-pub const B115200: ::speed_t = 4098;
|
||||
-pub const B230400: ::speed_t = 4099;
|
||||
-pub const B460800: ::speed_t = 4100;
|
||||
-pub const B500000: ::speed_t = 4101;
|
||||
-pub const B576000: ::speed_t = 4102;
|
||||
-pub const B921600: ::speed_t = 4103;
|
||||
-pub const B1000000: ::speed_t = 4104;
|
||||
-pub const B1152000: ::speed_t = 4105;
|
||||
-pub const B1500000: ::speed_t = 4106;
|
||||
-pub const B2000000: ::speed_t = 4107;
|
||||
-pub const B2500000: ::speed_t = 4108;
|
||||
-pub const B3000000: ::speed_t = 4109;
|
||||
-pub const B3500000: ::speed_t = 4110;
|
||||
-pub const B4000000: ::speed_t = 4111;
|
||||
-pub const VEOL: usize = 11;
|
||||
-pub const VEOL2: usize = 16;
|
||||
-pub const VMIN: usize = 6;
|
||||
-pub const IEXTEN: ::tcflag_t = 32768;
|
||||
-pub const TOSTOP: ::tcflag_t = 256;
|
||||
-pub const FLUSHO: ::tcflag_t = 4096;
|
||||
-pub const EXTPROC: ::tcflag_t = 65536;
|
||||
-pub const TCGETS: ::c_ulong = 21505;
|
||||
-pub const TCSETS: ::c_ulong = 21506;
|
||||
-pub const TCSETSW: ::c_ulong = 21507;
|
||||
-pub const TCSETSF: ::c_ulong = 21508;
|
||||
-pub const TCGETA: ::c_ulong = 21509;
|
||||
-pub const TCSETA: ::c_ulong = 21510;
|
||||
-pub const TCSETAW: ::c_ulong = 21511;
|
||||
-pub const TCSETAF: ::c_ulong = 21512;
|
||||
-pub const TCSBRK: ::c_ulong = 21513;
|
||||
-pub const TCXONC: ::c_ulong = 21514;
|
||||
-pub const TCFLSH: ::c_ulong = 21515;
|
||||
-pub const TIOCINQ: ::c_ulong = 21531;
|
||||
-pub const TIOCGPGRP: ::c_ulong = 21519;
|
||||
-pub const TIOCSPGRP: ::c_ulong = 21520;
|
||||
-pub const TIOCOUTQ: ::c_ulong = 21521;
|
||||
-pub const TIOCGWINSZ: ::c_ulong = 21523;
|
||||
-pub const TIOCSWINSZ: ::c_ulong = 21524;
|
||||
-pub const FIONREAD: ::c_ulong = 21531;
|
||||
-pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
|
||||
-pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
|
||||
pub const SYS_read: ::c_long = 63;
|
||||
pub const SYS_write: ::c_long = 64;
|
||||
pub const SYS_close: ::c_long = 57;
|
||||
@@ -863,5 +468,314 @@ pub const SYS_pkey_mprotect: ::c_long = 288;
|
||||
pub const SYS_pkey_alloc: ::c_long = 289;
|
||||
pub const SYS_pkey_free: ::c_long = 290;
|
||||
pub const SYS_statx: ::c_long = 291;
|
||||
-pub const SYS_pidfd_open: ::c_long = 434;
|
||||
-pub const SYS_clone3: ::c_long = 435;
|
||||
+
|
||||
+pub const O_APPEND: ::c_int = 1024;
|
||||
+pub const O_DIRECT: ::c_int = 0x4000;
|
||||
+pub const O_DIRECTORY: ::c_int = 0x10000;
|
||||
+pub const O_LARGEFILE: ::c_int = 0;
|
||||
+pub const O_NOFOLLOW: ::c_int = 0x20000;
|
||||
+pub const O_CREAT: ::c_int = 64;
|
||||
+pub const O_EXCL: ::c_int = 128;
|
||||
+pub const O_NOCTTY: ::c_int = 256;
|
||||
+pub const O_NONBLOCK: ::c_int = 2048;
|
||||
+pub const O_SYNC: ::c_int = 1052672;
|
||||
+pub const O_RSYNC: ::c_int = 1052672;
|
||||
+pub const O_DSYNC: ::c_int = 4096;
|
||||
+pub const O_ASYNC: ::c_int = 0x2000;
|
||||
+
|
||||
+pub const TIOCGRS485: ::c_int = 0x542E;
|
||||
+pub const TIOCSRS485: ::c_int = 0x542F;
|
||||
+
|
||||
+pub const SIGSTKSZ: ::size_t = 8192;
|
||||
+pub const MINSIGSTKSZ: ::size_t = 2048;
|
||||
+
|
||||
+pub const ENAMETOOLONG: ::c_int = 36;
|
||||
+pub const ENOLCK: ::c_int = 37;
|
||||
+pub const ENOSYS: ::c_int = 38;
|
||||
+pub const ENOTEMPTY: ::c_int = 39;
|
||||
+pub const ELOOP: ::c_int = 40;
|
||||
+pub const ENOMSG: ::c_int = 42;
|
||||
+pub const EIDRM: ::c_int = 43;
|
||||
+pub const ECHRNG: ::c_int = 44;
|
||||
+pub const EL2NSYNC: ::c_int = 45;
|
||||
+pub const EL3HLT: ::c_int = 46;
|
||||
+pub const EL3RST: ::c_int = 47;
|
||||
+pub const ELNRNG: ::c_int = 48;
|
||||
+pub const EUNATCH: ::c_int = 49;
|
||||
+pub const ENOCSI: ::c_int = 50;
|
||||
+pub const EL2HLT: ::c_int = 51;
|
||||
+pub const EBADE: ::c_int = 52;
|
||||
+pub const EBADR: ::c_int = 53;
|
||||
+pub const EXFULL: ::c_int = 54;
|
||||
+pub const ENOANO: ::c_int = 55;
|
||||
+pub const EBADRQC: ::c_int = 56;
|
||||
+pub const EBADSLT: ::c_int = 57;
|
||||
+pub const EMULTIHOP: ::c_int = 72;
|
||||
+pub const EOVERFLOW: ::c_int = 75;
|
||||
+pub const ENOTUNIQ: ::c_int = 76;
|
||||
+pub const EBADFD: ::c_int = 77;
|
||||
+pub const EBADMSG: ::c_int = 74;
|
||||
+pub const EREMCHG: ::c_int = 78;
|
||||
+pub const ELIBACC: ::c_int = 79;
|
||||
+pub const ELIBBAD: ::c_int = 80;
|
||||
+pub const ELIBSCN: ::c_int = 81;
|
||||
+pub const ELIBMAX: ::c_int = 82;
|
||||
+pub const ELIBEXEC: ::c_int = 83;
|
||||
+pub const EILSEQ: ::c_int = 84;
|
||||
+pub const ERESTART: ::c_int = 85;
|
||||
+pub const ESTRPIPE: ::c_int = 86;
|
||||
+pub const EUSERS: ::c_int = 87;
|
||||
+pub const ENOTSOCK: ::c_int = 88;
|
||||
+pub const EDESTADDRREQ: ::c_int = 89;
|
||||
+pub const EMSGSIZE: ::c_int = 90;
|
||||
+pub const EPROTOTYPE: ::c_int = 91;
|
||||
+pub const ENOPROTOOPT: ::c_int = 92;
|
||||
+pub const EPROTONOSUPPORT: ::c_int = 93;
|
||||
+pub const ESOCKTNOSUPPORT: ::c_int = 94;
|
||||
+pub const EOPNOTSUPP: ::c_int = 95;
|
||||
+pub const EPFNOSUPPORT: ::c_int = 96;
|
||||
+pub const EAFNOSUPPORT: ::c_int = 97;
|
||||
+pub const EADDRINUSE: ::c_int = 98;
|
||||
+pub const EADDRNOTAVAIL: ::c_int = 99;
|
||||
+pub const ENETDOWN: ::c_int = 100;
|
||||
+pub const ENETUNREACH: ::c_int = 101;
|
||||
+pub const ENETRESET: ::c_int = 102;
|
||||
+pub const ECONNABORTED: ::c_int = 103;
|
||||
+pub const ECONNRESET: ::c_int = 104;
|
||||
+pub const ENOBUFS: ::c_int = 105;
|
||||
+pub const EISCONN: ::c_int = 106;
|
||||
+pub const ENOTCONN: ::c_int = 107;
|
||||
+pub const ESHUTDOWN: ::c_int = 108;
|
||||
+pub const ETOOMANYREFS: ::c_int = 109;
|
||||
+pub const ETIMEDOUT: ::c_int = 110;
|
||||
+pub const ECONNREFUSED: ::c_int = 111;
|
||||
+pub const EHOSTDOWN: ::c_int = 112;
|
||||
+pub const EHOSTUNREACH: ::c_int = 113;
|
||||
+pub const EALREADY: ::c_int = 114;
|
||||
+pub const EINPROGRESS: ::c_int = 115;
|
||||
+pub const ESTALE: ::c_int = 116;
|
||||
+pub const EDQUOT: ::c_int = 122;
|
||||
+pub const ENOMEDIUM: ::c_int = 123;
|
||||
+pub const EMEDIUMTYPE: ::c_int = 124;
|
||||
+pub const ECANCELED: ::c_int = 125;
|
||||
+pub const ENOKEY: ::c_int = 126;
|
||||
+pub const EKEYEXPIRED: ::c_int = 127;
|
||||
+pub const EKEYREVOKED: ::c_int = 128;
|
||||
+pub const EKEYREJECTED: ::c_int = 129;
|
||||
+pub const EOWNERDEAD: ::c_int = 130;
|
||||
+pub const ENOTRECOVERABLE: ::c_int = 131;
|
||||
+pub const EHWPOISON: ::c_int = 133;
|
||||
+pub const ERFKILL: ::c_int = 132;
|
||||
+
|
||||
+pub const SA_ONSTACK: ::c_int = 0x08000000;
|
||||
+pub const SA_SIGINFO: ::c_int = 0x00000004;
|
||||
+pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
|
||||
+
|
||||
+pub const SIGCHLD: ::c_int = 17;
|
||||
+pub const SIGBUS: ::c_int = 7;
|
||||
+pub const SIGTTIN: ::c_int = 21;
|
||||
+pub const SIGTTOU: ::c_int = 22;
|
||||
+pub const SIGXCPU: ::c_int = 24;
|
||||
+pub const SIGXFSZ: ::c_int = 25;
|
||||
+pub const SIGVTALRM: ::c_int = 26;
|
||||
+pub const SIGPROF: ::c_int = 27;
|
||||
+pub const SIGWINCH: ::c_int = 28;
|
||||
+pub const SIGUSR1: ::c_int = 10;
|
||||
+pub const SIGUSR2: ::c_int = 12;
|
||||
+pub const SIGCONT: ::c_int = 18;
|
||||
+pub const SIGSTOP: ::c_int = 19;
|
||||
+pub const SIGTSTP: ::c_int = 20;
|
||||
+pub const SIGURG: ::c_int = 23;
|
||||
+pub const SIGIO: ::c_int = 29;
|
||||
+pub const SIGSYS: ::c_int = 31;
|
||||
+pub const SIGSTKFLT: ::c_int = 16;
|
||||
+pub const SIGPOLL: ::c_int = 29;
|
||||
+pub const SIGPWR: ::c_int = 30;
|
||||
+pub const SIG_SETMASK: ::c_int = 2;
|
||||
+pub const SIG_BLOCK: ::c_int = 0x000000;
|
||||
+pub const SIG_UNBLOCK: ::c_int = 0x01;
|
||||
+
|
||||
+pub const F_GETLK: ::c_int = 5;
|
||||
+pub const F_GETOWN: ::c_int = 9;
|
||||
+pub const F_SETLK: ::c_int = 6;
|
||||
+pub const F_SETLKW: ::c_int = 7;
|
||||
+pub const F_SETOWN: ::c_int = 8;
|
||||
+pub const F_OFD_GETLK: ::c_int = 36;
|
||||
+pub const F_OFD_SETLK: ::c_int = 37;
|
||||
+pub const F_OFD_SETLKW: ::c_int = 38;
|
||||
+
|
||||
+pub const VEOF: usize = 4;
|
||||
+
|
||||
+pub const POLLWRNORM: ::c_short = 0x100;
|
||||
+pub const POLLWRBAND: ::c_short = 0x200;
|
||||
+
|
||||
+pub const SOCK_STREAM: ::c_int = 1;
|
||||
+pub const SOCK_DGRAM: ::c_int = 2;
|
||||
+pub const SOL_SOCKET: ::c_int = 1;
|
||||
+pub const SO_REUSEADDR: ::c_int = 2;
|
||||
+pub const SO_TYPE: ::c_int = 3;
|
||||
+pub const SO_ERROR: ::c_int = 4;
|
||||
+pub const SO_DONTROUTE: ::c_int = 5;
|
||||
+pub const SO_BROADCAST: ::c_int = 6;
|
||||
+pub const SO_SNDBUF: ::c_int = 7;
|
||||
+pub const SO_RCVBUF: ::c_int = 8;
|
||||
+pub const SO_KEEPALIVE: ::c_int = 9;
|
||||
+pub const SO_OOBINLINE: ::c_int = 10;
|
||||
+pub const SO_NO_CHECK: ::c_int = 11;
|
||||
+pub const SO_PRIORITY: ::c_int = 12;
|
||||
+pub const SO_LINGER: ::c_int = 13;
|
||||
+pub const SO_BSDCOMPAT: ::c_int = 14;
|
||||
+pub const SO_REUSEPORT: ::c_int = 15;
|
||||
+pub const SO_ACCEPTCONN: ::c_int = 30;
|
||||
+pub const SO_SNDBUFFORCE: ::c_int = 32;
|
||||
+pub const SO_RCVBUFFORCE: ::c_int = 33;
|
||||
+pub const SO_PROTOCOL: ::c_int = 38;
|
||||
+pub const SO_DOMAIN: ::c_int = 39;
|
||||
+
|
||||
+pub const MAP_ANON: ::c_int = 0x0020;
|
||||
+pub const MAP_GROWSDOWN: ::c_int = 0x0100;
|
||||
+pub const MAP_DENYWRITE: ::c_int = 0x0800;
|
||||
+pub const MAP_EXECUTABLE: ::c_int = 0x01000;
|
||||
+pub const MAP_LOCKED: ::c_int = 0x02000;
|
||||
+pub const MAP_NORESERVE: ::c_int = 0x04000;
|
||||
+pub const MAP_POPULATE: ::c_int = 0x08000;
|
||||
+pub const MAP_NONBLOCK: ::c_int = 0x010000;
|
||||
+pub const MAP_STACK: ::c_int = 0x020000;
|
||||
+pub const MAP_HUGETLB: ::c_int = 0x040000;
|
||||
+pub const MAP_SYNC : ::c_int = 0x080000;
|
||||
+
|
||||
+pub const RLIMIT_NLIMITS: ::c_int = 15;
|
||||
+pub const TIOCINQ: ::c_int = ::FIONREAD;
|
||||
+pub const MCL_CURRENT: ::c_int = 0x0001;
|
||||
+pub const MCL_FUTURE: ::c_int = 0x0002;
|
||||
+pub const CBAUD: ::tcflag_t = 0o0010017;
|
||||
+pub const TAB1: ::c_int = 0x00000800;
|
||||
+pub const TAB2: ::c_int = 0x00001000;
|
||||
+pub const TAB3: ::c_int = 0x00001800;
|
||||
+pub const CR1: ::c_int = 0x00000200;
|
||||
+pub const CR2: ::c_int = 0x00000400;
|
||||
+pub const CR3: ::c_int = 0x00000600;
|
||||
+pub const FF1: ::c_int = 0x00008000;
|
||||
+pub const BS1: ::c_int = 0x00002000;
|
||||
+pub const VT1: ::c_int = 0x00004000;
|
||||
+pub const VWERASE: usize = 14;
|
||||
+pub const VREPRINT: usize = 12;
|
||||
+pub const VSUSP: usize = 10;
|
||||
+pub const VSTART: usize = 8;
|
||||
+pub const VSTOP: usize = 9;
|
||||
+pub const VDISCARD: usize = 13;
|
||||
+pub const VTIME: usize = 5;
|
||||
+pub const IXON: ::tcflag_t = 0x00000400;
|
||||
+pub const IXOFF: ::tcflag_t = 0x00001000;
|
||||
+pub const ONLCR: ::tcflag_t = 0x4;
|
||||
+pub const CSIZE: ::tcflag_t = 0x00000030;
|
||||
+pub const CS6: ::tcflag_t = 0x00000010;
|
||||
+pub const CS7: ::tcflag_t = 0x00000020;
|
||||
+pub const CS8: ::tcflag_t = 0x00000030;
|
||||
+pub const CSTOPB: ::tcflag_t = 0x00000040;
|
||||
+pub const CREAD: ::tcflag_t = 0x00000080;
|
||||
+pub const PARENB: ::tcflag_t = 0x00000100;
|
||||
+pub const PARODD: ::tcflag_t = 0x00000200;
|
||||
+pub const HUPCL: ::tcflag_t = 0x00000400;
|
||||
+pub const CLOCAL: ::tcflag_t = 0x00000800;
|
||||
+pub const ECHOKE: ::tcflag_t = 0x00000800;
|
||||
+pub const ECHOE: ::tcflag_t = 0x00000010;
|
||||
+pub const ECHOK: ::tcflag_t = 0x00000020;
|
||||
+pub const ECHONL: ::tcflag_t = 0x00000040;
|
||||
+pub const ECHOPRT: ::tcflag_t = 0x00000400;
|
||||
+pub const ECHOCTL: ::tcflag_t = 0x00000200;
|
||||
+pub const ISIG: ::tcflag_t = 0x00000001;
|
||||
+pub const ICANON: ::tcflag_t = 0x00000002;
|
||||
+pub const PENDIN: ::tcflag_t = 0x00004000;
|
||||
+pub const NOFLSH: ::tcflag_t = 0x00000080;
|
||||
+pub const CIBAUD: ::tcflag_t = 0o02003600000;
|
||||
+pub const CBAUDEX: ::tcflag_t = 0o010000;
|
||||
+pub const VSWTC: usize = 7;
|
||||
+pub const OLCUC: ::tcflag_t = 0o000002;
|
||||
+pub const NLDLY: ::tcflag_t = 0o000400;
|
||||
+pub const CRDLY: ::tcflag_t = 0o003000;
|
||||
+pub const TABDLY: ::tcflag_t = 0o014000;
|
||||
+pub const BSDLY: ::tcflag_t = 0o020000;
|
||||
+pub const FFDLY: ::tcflag_t = 0o100000;
|
||||
+pub const VTDLY: ::tcflag_t = 0o040000;
|
||||
+pub const XTABS: ::tcflag_t = 0o014000;
|
||||
+pub const B57600: ::speed_t = 0o010001;
|
||||
+pub const B115200: ::speed_t = 0o010002;
|
||||
+pub const B230400: ::speed_t = 0o010003;
|
||||
+pub const B460800: ::speed_t = 0o010004;
|
||||
+pub const B500000: ::speed_t = 0o010005;
|
||||
+pub const B576000: ::speed_t = 0o010006;
|
||||
+pub const B921600: ::speed_t = 0o010007;
|
||||
+pub const B1000000: ::speed_t = 0o010010;
|
||||
+pub const B1152000: ::speed_t = 0o010011;
|
||||
+pub const B1500000: ::speed_t = 0o010012;
|
||||
+pub const B2000000: ::speed_t = 0o010013;
|
||||
+pub const B2500000: ::speed_t = 0o010014;
|
||||
+pub const B3000000: ::speed_t = 0o010015;
|
||||
+pub const B3500000: ::speed_t = 0o010016;
|
||||
+pub const B4000000: ::speed_t = 0o010017;
|
||||
+
|
||||
+pub const FIOCLEX: ::c_int = 0x5451;
|
||||
+pub const FIONCLEX: ::c_int = 0x5450;
|
||||
+pub const FIONBIO: ::c_int = 0x5421;
|
||||
+pub const EDEADLK: ::c_int = 35;
|
||||
+pub const EDEADLOCK: ::c_int = EDEADLK;
|
||||
+pub const SO_PASSCRED: ::c_int = 16;
|
||||
+pub const SO_PEERCRED: ::c_int = 17;
|
||||
+pub const SO_RCVLOWAT: ::c_int = 18;
|
||||
+pub const SO_SNDLOWAT: ::c_int = 19;
|
||||
+pub const SO_RCVTIMEO: ::c_int = 20;
|
||||
+pub const SO_SNDTIMEO: ::c_int = 21;
|
||||
+pub const EXTPROC: ::tcflag_t = 0x00010000;
|
||||
+pub const VEOL: usize = 11;
|
||||
+pub const VEOL2: usize = 16;
|
||||
+pub const VMIN: usize = 6;
|
||||
+pub const IEXTEN: ::tcflag_t = 0x00008000;
|
||||
+pub const TOSTOP: ::tcflag_t = 0x00000100;
|
||||
+pub const FLUSHO: ::tcflag_t = 0x00001000;
|
||||
+pub const TCGETS: ::c_int = 0x5401;
|
||||
+pub const TCSETS: ::c_int = 0x5402;
|
||||
+pub const TCSETSW: ::c_int = 0x5403;
|
||||
+pub const TCSETSF: ::c_int = 0x5404;
|
||||
+pub const TCGETA: ::c_int = 0x5405;
|
||||
+pub const TCSETA: ::c_int = 0x5406;
|
||||
+pub const TCSETAW: ::c_int = 0x5407;
|
||||
+pub const TCSETAF: ::c_int = 0x5408;
|
||||
+pub const TCSBRK: ::c_int = 0x5409;
|
||||
+pub const TCXONC: ::c_int = 0x540A;
|
||||
+pub const TCFLSH: ::c_int = 0x540B;
|
||||
+pub const TIOCGSOFTCAR: ::c_int = 0x5419;
|
||||
+pub const TIOCSSOFTCAR: ::c_int = 0x541A;
|
||||
+pub const TIOCLINUX: ::c_int = 0x541C;
|
||||
+pub const TIOCGSERIAL: ::c_int = 0x541E;
|
||||
+pub const TIOCEXCL: ::c_int = 0x540C;
|
||||
+pub const TIOCNXCL: ::c_int = 0x540D;
|
||||
+pub const TIOCSCTTY: ::c_int = 0x540E;
|
||||
+pub const TIOCGPGRP: ::c_int = 0x540F;
|
||||
+pub const TIOCSPGRP: ::c_int = 0x5410;
|
||||
+pub const TIOCOUTQ: ::c_int = 0x5411;
|
||||
+pub const TIOCSTI: ::c_int = 0x5412;
|
||||
+pub const TIOCGWINSZ: ::c_int = 0x5413;
|
||||
+pub const TIOCSWINSZ: ::c_int = 0x5414;
|
||||
+pub const TIOCMGET: ::c_int = 0x5415;
|
||||
+pub const TIOCMBIS: ::c_int = 0x5416;
|
||||
+pub const TIOCMBIC: ::c_int = 0x5417;
|
||||
+pub const TIOCMSET: ::c_int = 0x5418;
|
||||
+pub const FIONREAD: ::c_int = 0x541B;
|
||||
+pub const TIOCCONS: ::c_int = 0x541D;
|
||||
+
|
||||
+pub const TIOCM_LE: ::c_int = 0x001;
|
||||
+pub const TIOCM_DTR: ::c_int = 0x002;
|
||||
+pub const TIOCM_RTS: ::c_int = 0x004;
|
||||
+pub const TIOCM_ST: ::c_int = 0x008;
|
||||
+pub const TIOCM_SR: ::c_int = 0x010;
|
||||
+pub const TIOCM_CTS: ::c_int = 0x020;
|
||||
+pub const TIOCM_CAR: ::c_int = 0x040;
|
||||
+pub const TIOCM_RNG: ::c_int = 0x080;
|
||||
+pub const TIOCM_DSR: ::c_int = 0x100;
|
||||
+pub const TIOCM_CD: ::c_int = TIOCM_CAR;
|
||||
+pub const TIOCM_RI: ::c_int = TIOCM_RNG;
|
||||
+
|
||||
+extern "C" {
|
||||
+ pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;
|
||||
+}
|
||||
--
|
||||
2.30.1
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
73
recipes-devtools/rust/files/riscv-march.patch
Normal file
73
recipes-devtools/rust/files/riscv-march.patch
Normal file
@@ -0,0 +1,73 @@
|
||||
Add suppor for riscv64 and riscv32 musl targets
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
--- a/vendor/cc/src/lib.rs
|
||||
+++ b/vendor/cc/src/lib.rs
|
||||
@@ -2361,6 +2361,7 @@ impl Build {
|
||||
"riscv-none-embed",
|
||||
]),
|
||||
"riscv64gc-unknown-linux-gnu" => Some("riscv64-linux-gnu"),
|
||||
+ "riscv64gc-unknown-linux-musl" => Some("riscv64-linux-musl"),
|
||||
"s390x-unknown-linux-gnu" => Some("s390x-linux-gnu"),
|
||||
"sparc-unknown-linux-gnu" => Some("sparc-linux-gnu"),
|
||||
"sparc64-unknown-linux-gnu" => Some("sparc64-linux-gnu"),
|
||||
--- a/compiler/rustc_target/src/spec/mod.rs
|
||||
+++ b/compiler/rustc_target/src/spec/mod.rs
|
||||
@@ -641,9 +641,11 @@ supported_targets! {
|
||||
("riscv32imc-unknown-none-elf", riscv32imc_unknown_none_elf),
|
||||
("riscv32imac-unknown-none-elf", riscv32imac_unknown_none_elf),
|
||||
("riscv32gc-unknown-linux-gnu", riscv32gc_unknown_linux_gnu),
|
||||
+ ("riscv32gc-unknown-linux-musl", riscv32gc_unknown_linux_musl),
|
||||
("riscv64imac-unknown-none-elf", riscv64imac_unknown_none_elf),
|
||||
("riscv64gc-unknown-none-elf", riscv64gc_unknown_none_elf),
|
||||
("riscv64gc-unknown-linux-gnu", riscv64gc_unknown_linux_gnu),
|
||||
+ ("riscv64gc-unknown-linux-musl", riscv64gc_unknown_linux_musl),
|
||||
|
||||
("aarch64-unknown-none", aarch64_unknown_none),
|
||||
("aarch64-unknown-none-softfloat", aarch64_unknown_none_softfloat),
|
||||
--- /dev/null
|
||||
+++ b/compiler/rustc_target/src/spec/riscv32gc_unknown_linux_musl.rs
|
||||
@@ -0,0 +1,19 @@
|
||||
+use crate::spec::{CodeModel, Target, TargetOptions};
|
||||
+
|
||||
+pub fn target() -> Target {
|
||||
+ Target {
|
||||
+ llvm_target: "riscv32-unknown-linux-musl".to_string(),
|
||||
+ pointer_width: 32,
|
||||
+ data_layout: "e-m:e-p:32:32-i64:64-n32-S128".to_string(),
|
||||
+ arch: "riscv32".to_string(),
|
||||
+ options: TargetOptions {
|
||||
+ unsupported_abis: super::riscv_base::unsupported_abis(),
|
||||
+ code_model: Some(CodeModel::Medium),
|
||||
+ cpu: "generic-rv32".to_string(),
|
||||
+ features: "+m,+a,+f,+d,+c".to_string(),
|
||||
+ llvm_abiname: "ilp32d".to_string(),
|
||||
+ max_atomic_width: Some(32),
|
||||
+ ..super::linux_musl_base::opts()
|
||||
+ },
|
||||
+ }
|
||||
+}
|
||||
--- /dev/null
|
||||
+++ b/compiler/rustc_target/src/spec/riscv64gc_unknown_linux_musl.rs
|
||||
@@ -0,0 +1,19 @@
|
||||
+use crate::spec::{CodeModel, Target, TargetOptions};
|
||||
+
|
||||
+pub fn target() -> Target {
|
||||
+ Target {
|
||||
+ llvm_target: "riscv64-unknown-linux-musl".to_string(),
|
||||
+ pointer_width: 64,
|
||||
+ data_layout: "e-m:e-p:64:64-i64:64-i128:128-n64-S128".to_string(),
|
||||
+ arch: "riscv64".to_string(),
|
||||
+ options: TargetOptions {
|
||||
+ unsupported_abis: super::riscv_base::unsupported_abis(),
|
||||
+ code_model: Some(CodeModel::Medium),
|
||||
+ cpu: "generic-rv64".to_string(),
|
||||
+ features: "+m,+a,+f,+d,+c".to_string(),
|
||||
+ llvm_abiname: "lp64d".to_string(),
|
||||
+ max_atomic_width: Some(64),
|
||||
+ ..super::linux_musl_base::opts()
|
||||
+ },
|
||||
+ }
|
||||
+}
|
||||
@@ -1,45 +0,0 @@
|
||||
From 69b65762ccdf459143fc273a39b0a0e0c6d8fe3e Mon Sep 17 00:00:00 2001
|
||||
From: Steven Walter <swalter@lexmark.com>
|
||||
Date: Mon, 2 May 2016 19:57:46 -0400
|
||||
Subject: [PATCH 01/11] Add config for musl-based arm builds
|
||||
|
||||
---
|
||||
mk/cfg/arm-unknown-linux-musleabi.mk | 26 ++++++++++++++++++++++++++
|
||||
1 file changed, 26 insertions(+)
|
||||
create mode 100644 mk/cfg/arm-unknown-linux-musleabi.mk
|
||||
|
||||
diff --git a/mk/cfg/arm-unknown-linux-musleabi.mk b/mk/cfg/arm-unknown-linux-musleabi.mk
|
||||
new file mode 100644
|
||||
index 0000000..2485bd9
|
||||
--- /dev/null
|
||||
+++ b/mk/cfg/arm-unknown-linux-musleabi.mk
|
||||
@@ -0,0 +1,26 @@
|
||||
+# arm-unknown-linux-musleabi configuration
|
||||
+CROSS_PREFIX_arm-unknown-linux-musleabi=arm-linux-musleabi-
|
||||
+CC_arm-unknown-linux-musleabi=gcc
|
||||
+CXX_arm-unknown-linux-musleabi=g++
|
||||
+CPP_arm-unknown-linux-musleabi=gcc -E
|
||||
+AR_arm-unknown-linux-musleabi=ar
|
||||
+CFG_LIB_NAME_arm-unknown-linux-musleabi=lib$(1).so
|
||||
+CFG_STATIC_LIB_NAME_arm-unknown-linux-musleabi=lib$(1).a
|
||||
+CFG_LIB_GLOB_arm-unknown-linux-musleabi=lib$(1)-*.so
|
||||
+CFG_LIB_DSYM_GLOB_arm-unknown-linux-musleabi=lib$(1)-*.dylib.dSYM
|
||||
+CFG_JEMALLOC_CFLAGS_arm-unknown-linux-musleabi := -D__arm__ $(CFLAGS)
|
||||
+CFG_GCCISH_CFLAGS_arm-unknown-linux-musleabi := -Wall -g -fPIC -D__arm__ $(CFLAGS)
|
||||
+CFG_GCCISH_CXXFLAGS_arm-unknown-linux-musleabi := -fno-rtti $(CXXFLAGS)
|
||||
+CFG_GCCISH_LINK_FLAGS_arm-unknown-linux-musleabi := -shared -fPIC -g
|
||||
+CFG_GCCISH_DEF_FLAG_arm-unknown-linux-musleabi := -Wl,--export-dynamic,--dynamic-list=
|
||||
+CFG_LLC_FLAGS_arm-unknown-linux-musleabi :=
|
||||
+CFG_INSTALL_NAME_arm-unknown-linux-musleabi =
|
||||
+CFG_EXE_SUFFIX_arm-unknown-linux-musleabi :=
|
||||
+CFG_WINDOWSY_arm-unknown-linux-musleabi :=
|
||||
+CFG_UNIXY_arm-unknown-linux-musleabi := 1
|
||||
+CFG_LDPATH_arm-unknown-linux-musleabi :=
|
||||
+CFG_RUN_arm-unknown-linux-musleabi=$(2)
|
||||
+CFG_RUN_TARG_arm-unknown-linux-musleabi=$(call CFG_RUN_arm-unknown-linux-musleabi,,$(2))
|
||||
+RUSTC_FLAGS_arm-unknown-linux-musleabi :=
|
||||
+RUSTC_CROSS_FLAGS_arm-unknown-linux-musleabi :=
|
||||
+CFG_GNU_TRIPLE_arm-unknown-linux-musleabi := arm-unknown-linux-musleabi
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -1,107 +0,0 @@
|
||||
From 0535c75086a9c170d8d4d99b3030d9136ea6e2c7 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 18 Nov 2014 01:40:21 -0500
|
||||
Subject: [PATCH 02/11] Target: add default target.json path:
|
||||
$libdir/rust/targets
|
||||
|
||||
---
|
||||
src/librustc/session/config.rs | 6 +++---
|
||||
src/librustc/session/mod.rs | 8 ++++++--
|
||||
src/librustc_back/target/mod.rs | 13 +++++++++++--
|
||||
3 files changed, 20 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
|
||||
index da5555d..6cd0ea9 100644
|
||||
--- a/src/librustc/session/config.rs
|
||||
+++ b/src/librustc/session/config.rs
|
||||
@@ -35,7 +35,7 @@ use getopts;
|
||||
use std::collections::HashMap;
|
||||
use std::env;
|
||||
use std::fmt;
|
||||
-use std::path::PathBuf;
|
||||
+use std::path::{Path, PathBuf};
|
||||
|
||||
pub struct Config {
|
||||
pub target: Target,
|
||||
@@ -787,8 +787,8 @@ pub fn build_configuration(sess: &Session) -> ast::CrateConfig {
|
||||
v
|
||||
}
|
||||
|
||||
-pub fn build_target_config(opts: &Options, sp: &Handler) -> Config {
|
||||
- let target = match Target::search(&opts.target_triple) {
|
||||
+pub fn build_target_config(sysroot: &Path, opts: &Options, sp: &Handler) -> Config {
|
||||
+ let target = match Target::search(sysroot, &opts.target_triple[..]) {
|
||||
Ok(t) => t,
|
||||
Err(e) => {
|
||||
panic!(sp.fatal(&format!("Error loading target specification: {}", e)));
|
||||
diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs
|
||||
index 907241d..d0e3743 100644
|
||||
--- a/src/librustc/session/mod.rs
|
||||
+++ b/src/librustc/session/mod.rs
|
||||
@@ -470,13 +470,17 @@ pub fn build_session_(sopts: config::Options,
|
||||
codemap: Rc<codemap::CodeMap>,
|
||||
cstore: Rc<for<'a> CrateStore<'a>>)
|
||||
-> Session {
|
||||
- let host = match Target::search(config::host_triple()) {
|
||||
+ let sysroot = match sopts.maybe_sysroot {
|
||||
+ Some(ref x) => PathBuf::from(x),
|
||||
+ None => filesearch::get_or_default_sysroot()
|
||||
+ };
|
||||
+ let host = match Target::search(&sysroot, config::host_triple()) {
|
||||
Ok(t) => t,
|
||||
Err(e) => {
|
||||
panic!(span_diagnostic.fatal(&format!("Error loading host specification: {}", e)));
|
||||
}
|
||||
};
|
||||
- let target_cfg = config::build_target_config(&sopts, &span_diagnostic);
|
||||
+ let target_cfg = config::build_target_config(&sysroot, &sopts, &span_diagnostic);
|
||||
let p_s = parse::ParseSess::with_span_handler(span_diagnostic, codemap);
|
||||
let default_sysroot = match sopts.maybe_sysroot {
|
||||
Some(_) => None,
|
||||
diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs
|
||||
index 2163a8a..38607f0 100644
|
||||
--- a/src/librustc_back/target/mod.rs
|
||||
+++ b/src/librustc_back/target/mod.rs
|
||||
@@ -48,6 +48,8 @@ use serialize::json::Json;
|
||||
use std::default::Default;
|
||||
use std::io::prelude::*;
|
||||
use syntax::abi::Abi;
|
||||
+use std::borrow::ToOwned;
|
||||
+use std::path::Path;
|
||||
|
||||
mod android_base;
|
||||
mod apple_base;
|
||||
@@ -477,12 +479,13 @@ impl Target {
|
||||
///
|
||||
/// The error string could come from any of the APIs called, including
|
||||
/// filesystem access and JSON decoding.
|
||||
- pub fn search(target: &str) -> Result<Target, String> {
|
||||
+ pub fn search(sysroot: &Path, target: &str) -> Result<Target, String> {
|
||||
use std::env;
|
||||
use std::ffi::OsString;
|
||||
use std::fs::File;
|
||||
use std::path::{Path, PathBuf};
|
||||
use serialize::json;
|
||||
+ use std::iter::IntoIterator;
|
||||
|
||||
fn load_file(path: &Path) -> Result<Target, String> {
|
||||
let mut f = File::open(path).map_err(|e| e.to_string())?;
|
||||
@@ -513,8 +516,14 @@ impl Target {
|
||||
.unwrap_or(OsString::new());
|
||||
|
||||
// FIXME 16351: add a sane default search path?
|
||||
+ let mut default_path = sysroot.to_owned();
|
||||
+ default_path.push(env!("CFG_LIBDIR_RELATIVE"));
|
||||
+ default_path.push("rustlib");
|
||||
|
||||
- for dir in env::split_paths(&target_path) {
|
||||
+ let paths = env::split_paths(&target_path)
|
||||
+ .chain(Some(default_path).into_iter());
|
||||
+
|
||||
+ for dir in paths {
|
||||
let p = dir.join(&path);
|
||||
if p.is_file() {
|
||||
return load_file(&p);
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
From 4290b8f28222824a558ac4471d26fe88b2889a5b Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 18 Nov 2014 14:52:56 -0500
|
||||
Subject: [PATCH 03/11] mk: for stage0, use RUSTFLAGS to override target libs
|
||||
dir
|
||||
|
||||
Setting HLIB specially for stage0 (and even more specially for windows)
|
||||
also affects the location we place TLIB. To keep the TLIBs we build in
|
||||
the place requested by configure, use '-L' and '--sysroot' to point
|
||||
stage0-rustc at the appropriate location.
|
||||
---
|
||||
mk/main.mk | 29 ++++++++++++-----------------
|
||||
1 file changed, 12 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/mk/main.mk b/mk/main.mk
|
||||
index c47020c..fcf1409 100644
|
||||
--- a/mk/main.mk
|
||||
+++ b/mk/main.mk
|
||||
@@ -403,32 +403,26 @@ define SREQ
|
||||
HROOT$(1)_H_$(3) = $(3)/stage$(1)
|
||||
HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
|
||||
|
||||
-ifeq ($$(CFG_WINDOWSY_$(3)),1)
|
||||
-# On Windows we always store host runtime libraries in the 'bin' directory because
|
||||
-# there's no rpath. Target libraries go under $CFG_LIBDIR_RELATIVE (usually 'lib').
|
||||
-HLIB_RELATIVE$(1)_H_$(3) = bin
|
||||
-TROOT$(1)_T_$(2)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)/rustlib/$(2)
|
||||
-# Remove the next 3 lines after a snapshot
|
||||
-ifeq ($(1),0)
|
||||
-RUSTFLAGS_STAGE0 += -L $$(TROOT$(1)_T_$(2)_H_$(3))/lib
|
||||
-endif
|
||||
-
|
||||
-else
|
||||
-
|
||||
-ifeq ($(1),0)
|
||||
-HLIB_RELATIVE$(1)_H_$(3) = lib
|
||||
-else
|
||||
HLIB_RELATIVE$(1)_H_$(3) = $$(CFG_LIBDIR_RELATIVE)
|
||||
-endif
|
||||
+
|
||||
TROOT$(1)_T_$(2)_H_$(3) = $$(HLIB$(1)_H_$(3))/rustlib/$(2)
|
||||
|
||||
-endif
|
||||
HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(HLIB_RELATIVE$(1)_H_$(3))
|
||||
|
||||
# Destinations of artifacts for target architectures
|
||||
TBIN$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/bin
|
||||
TLIB$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/lib
|
||||
|
||||
+# Don't trust stage0, be explicit about libraries
|
||||
+# TODO: rather than specifying sysroot, we really want to tell which libdir to
|
||||
+# use (ie: the dir containing 'rustlib'). This would allow us to avoid
|
||||
+# passing the '-L' options.
|
||||
+ifeq ($(1),0)
|
||||
+RUSTFLAGS_S_$(1)_T_$(2)_H_$(3) += --sysroot "$$(HROOT$(1)_H_$(3))" \
|
||||
+ -L "$$(TLIB$(1)_T_$(2)_H_$(3))"
|
||||
+endif
|
||||
+
|
||||
+
|
||||
# Preqrequisites for using the stageN compiler
|
||||
ifeq ($(1),0)
|
||||
HSREQ$(1)_H_$(3) = $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3))
|
||||
@@ -536,6 +530,7 @@ STAGE$(1)_T_$(2)_H_$(3) := \
|
||||
$$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \
|
||||
--cfg $$(CFGFLAG$(1)_T_$(2)_H_$(3)) \
|
||||
$$(CFG_RUSTC_FLAGS) $$(EXTRAFLAGS_STAGE$(1)) --target=$(2)) \
|
||||
+ $$(RUSTFLAGS_S_$(1)_T_$(2)_H_$(3)) \
|
||||
$$(RUSTC_FLAGS_$(2))
|
||||
|
||||
endef
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
From 06b8c4bc8f7056d604d8ef4d699273cc1dd39025 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 18 Nov 2014 13:48:14 -0500
|
||||
Subject: [PATCH 04/11] mk: add missing CFG_LIBDIR_RELATIVE
|
||||
|
||||
---
|
||||
mk/grammar.mk | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/mk/grammar.mk b/mk/grammar.mk
|
||||
index 0d527bd..926f247 100644
|
||||
--- a/mk/grammar.mk
|
||||
+++ b/mk/grammar.mk
|
||||
@@ -11,8 +11,8 @@
|
||||
BG = $(CFG_BUILD_DIR)/grammar/
|
||||
SG = $(S)src/grammar/
|
||||
B = $(CFG_BUILD_DIR)/$(CFG_BUILD)/stage2/
|
||||
-L = $(B)lib/rustlib/$(CFG_BUILD)/lib
|
||||
-LD = $(CFG_BUILD)/stage2/lib/rustlib/$(CFG_BUILD)/lib/
|
||||
+L = $(B)$(CFG_LIBDIR_RELATIVE)/rustlib/$(CFG_BUILD)/lib
|
||||
+LD = $(CFG_BUILD)/stage2/$(CFG_LIBDIR_RELATIVE)/rustlib/$(CFG_BUILD)/lib/
|
||||
RUSTC = $(STAGE2_T_$(CFG_BUILD)_H_$(CFG_BUILD))
|
||||
ifeq ($(CFG_OSTYPE),apple-darwin)
|
||||
FLEX_LDFLAGS=-ll
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
From f7441b3080088d8131d106c59c3543b22c9e8211 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Wed, 3 Dec 2014 19:15:19 -0500
|
||||
Subject: [PATCH 06/11] std/thread_local: workaround for NULL __dso_handle
|
||||
|
||||
---
|
||||
src/libstd/thread/local.rs | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/libstd/thread/local.rs b/src/libstd/thread/local.rs
|
||||
index 6b54ec8..5b41b75 100644
|
||||
--- a/src/libstd/thread/local.rs
|
||||
+++ b/src/libstd/thread/local.rs
|
||||
@@ -346,7 +346,7 @@ pub mod elf {
|
||||
#[linkage = "extern_weak"]
|
||||
static __cxa_thread_atexit_impl: *const libc::c_void;
|
||||
}
|
||||
- if !__cxa_thread_atexit_impl.is_null() {
|
||||
+ if !__cxa_thread_atexit_impl.is_null() && !__dso_handle.is_null() {
|
||||
type F = unsafe extern fn(dtor: unsafe extern fn(*mut u8),
|
||||
arg: *mut u8,
|
||||
dso_handle: *mut u8) -> libc::c_int;
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
From a73a748cd73920380ae1f069be91ff833e99d003 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Mon, 2 Mar 2015 13:34:59 -0500
|
||||
Subject: [PATCH 07/11] mk/install: use disable-rewrite-paths
|
||||
|
||||
This stops the install scripts from doing work we've already handled.
|
||||
|
||||
Path rewriting is only useful for prepackaged binary installers.
|
||||
---
|
||||
mk/install.mk | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/mk/install.mk b/mk/install.mk
|
||||
index d2e5449..e67650b 100644
|
||||
--- a/mk/install.mk
|
||||
+++ b/mk/install.mk
|
||||
@@ -12,7 +12,9 @@ RUN_INSTALLER = cd tmp/empty_dir && \
|
||||
sh ../../tmp/dist/$(1)/install.sh \
|
||||
--prefix="$(DESTDIR)$(CFG_PREFIX)" \
|
||||
--libdir="$(DESTDIR)$(CFG_LIBDIR)" \
|
||||
- --mandir="$(DESTDIR)$(CFG_MANDIR)"
|
||||
+ --mandir="$(DESTDIR)$(CFG_MANDIR)" \
|
||||
+ "$(MAYBE_DISABLE_VERIFY)" \
|
||||
+ --disable-rewrite-paths
|
||||
|
||||
install:
|
||||
ifeq (root user, $(USER) $(patsubst %,user,$(SUDO_USER)))
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
From 042a5df36597c2c6c23900667ae1b4299279092f Mon Sep 17 00:00:00 2001
|
||||
From: Steven Walter <swalter@lexmark.com>
|
||||
Date: Wed, 18 Nov 2015 08:33:26 -0500
|
||||
Subject: [PATCH 08/11] Allow overriding crate_hash with -C crate_hash
|
||||
|
||||
The current crate hash is not stable from run-to-run. This causes
|
||||
problems with bitbake; it needs a guarantee that every build with the
|
||||
same input will generate compatible output, otherwise sstate won't work.
|
||||
Using -C crate_hash, we can do that by using the bitbake input hash to
|
||||
determine the crate hash; the bitbake input hash will be stable, but
|
||||
still different for different rust recipes.
|
||||
---
|
||||
src/librustc/session/config.rs | 2 ++
|
||||
src/librustc_trans/back/link.rs | 12 +++++++++++-
|
||||
2 files changed, 13 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
|
||||
index 6cd0ea9..f90398d 100644
|
||||
--- a/src/librustc/session/config.rs
|
||||
+++ b/src/librustc/session/config.rs
|
||||
@@ -585,6 +585,8 @@ options! {CodegenOptions, CodegenSetter, basic_codegen_options,
|
||||
"choose the code model to use (llc -code-model for details)"),
|
||||
metadata: Vec<String> = (Vec::new(), parse_list,
|
||||
"metadata to mangle symbol names with"),
|
||||
+ crate_hash: String = ("".to_string(), parse_string,
|
||||
+ "override crate hash with given value"),
|
||||
extra_filename: String = ("".to_string(), parse_string,
|
||||
"extra data to put in each output filename"),
|
||||
codegen_units: usize = (1, parse_uint,
|
||||
diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs
|
||||
index 222d447..e951476 100644
|
||||
--- a/src/librustc_trans/back/link.rs
|
||||
+++ b/src/librustc_trans/back/link.rs
|
||||
@@ -125,12 +125,22 @@ pub fn find_crate_name(sess: Option<&Session>,
|
||||
|
||||
}
|
||||
|
||||
+use std::hash::{Hasher, SipHasher};
|
||||
+use rustc::hir::svh::Svh;
|
||||
+
|
||||
pub fn build_link_meta<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
|
||||
name: &str)
|
||||
-> LinkMeta {
|
||||
+ let crate_hash = if tcx.sess.opts.cg.crate_hash != "" {
|
||||
+ let mut state = SipHasher::new();
|
||||
+ state.write(tcx.sess.opts.cg.crate_hash.as_bytes());
|
||||
+ Svh::new(state.finish())
|
||||
+ } else {
|
||||
+ tcx.calculate_krate_hash()
|
||||
+ };
|
||||
let r = LinkMeta {
|
||||
crate_name: name.to_owned(),
|
||||
- crate_hash: tcx.calculate_krate_hash(),
|
||||
+ crate_hash: crate_hash,
|
||||
};
|
||||
info!("{:?}", r);
|
||||
return r;
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
From 44ee7a68f44132ebe32ac486355945131c7a2b83 Mon Sep 17 00:00:00 2001
|
||||
From: Steven Walter <swalter@lexmark.com>
|
||||
Date: Wed, 18 Nov 2015 08:41:17 -0500
|
||||
Subject: [PATCH 09/11] mk/platform.mk: pass -C crate_hash to builds
|
||||
|
||||
bitbake recipe will export FORCE_CRATE_HASH
|
||||
---
|
||||
mk/platform.mk | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/mk/platform.mk b/mk/platform.mk
|
||||
index c264462..b959d59 100644
|
||||
--- a/mk/platform.mk
|
||||
+++ b/mk/platform.mk
|
||||
@@ -181,6 +181,7 @@ define CFG_MAKE_TOOLCHAIN
|
||||
AR_$(1)=$(CROSS_PREFIX_$(1))$(AR_$(1))
|
||||
LINK_$(1)=$(CROSS_PREFIX_$(1))$(LINK_$(1))
|
||||
RUSTC_CROSS_FLAGS_$(1)=-C linker=$$(call FIND_COMPILER,$$(LINK_$(1))) \
|
||||
+ -C crate_hash=$(FORCE_CRATE_HASH) \
|
||||
-C ar=$$(call FIND_COMPILER,$$(AR_$(1))) $(RUSTC_CROSS_FLAGS_$(1))
|
||||
|
||||
RUSTC_FLAGS_$(1)=$$(RUSTC_CROSS_FLAGS_$(1)) $(RUSTC_FLAGS_$(1))
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
From 9c76c93de35fb45ed18e75827649e299d8c4e94e Mon Sep 17 00:00:00 2001
|
||||
From: Eduard Burtescu <edy.burt@gmail.com>
|
||||
Date: Sun, 14 Aug 2016 11:16:28 +0300
|
||||
Subject: [PATCH 11/11] Get rid of the .note interpretation of rustc dylib
|
||||
metadata.
|
||||
|
||||
---
|
||||
src/librustc_metadata/loader.rs | 41 ++++++++++++++++++-----------------------
|
||||
src/librustc_trans/base.rs | 13 ++++++++++---
|
||||
2 files changed, 28 insertions(+), 26 deletions(-)
|
||||
|
||||
diff --git a/src/librustc_metadata/loader.rs b/src/librustc_metadata/loader.rs
|
||||
index dc10391..9430b70 100644
|
||||
--- a/src/librustc_metadata/loader.rs
|
||||
+++ b/src/librustc_metadata/loader.rs
|
||||
@@ -875,34 +875,29 @@ fn get_metadata_section_imp(target: &Target, flavor: CrateFlavor, filename: &Pat
|
||||
}
|
||||
|
||||
pub fn meta_section_name(target: &Target) -> &'static str {
|
||||
+ // Historical note:
|
||||
+ //
|
||||
+ // When using link.exe it was seen that the section name `.note.rustc`
|
||||
+ // was getting shortened to `.note.ru`, and according to the PE and COFF
|
||||
+ // specification:
|
||||
+ //
|
||||
+ // > Executable images do not use a string table and do not support
|
||||
+ // > section names longer than 8 characters
|
||||
+ //
|
||||
+ // https://msdn.microsoft.com/en-us/library/windows/hardware/gg463119.aspx
|
||||
+ //
|
||||
+ // As a result, we choose a slightly shorter name! As to why
|
||||
+ // `.note.rustc` works on MinGW, that's another good question...
|
||||
+
|
||||
if target.options.is_like_osx {
|
||||
- "__DATA,__note.rustc"
|
||||
- } else if target.options.is_like_msvc {
|
||||
- // When using link.exe it was seen that the section name `.note.rustc`
|
||||
- // was getting shortened to `.note.ru`, and according to the PE and COFF
|
||||
- // specification:
|
||||
- //
|
||||
- // > Executable images do not use a string table and do not support
|
||||
- // > section names longer than 8 characters
|
||||
- //
|
||||
- // https://msdn.microsoft.com/en-us/library/windows/hardware/gg463119.aspx
|
||||
- //
|
||||
- // As a result, we choose a slightly shorter name! As to why
|
||||
- // `.note.rustc` works on MinGW, that's another good question...
|
||||
- ".rustc"
|
||||
+ "__DATA,.rustc"
|
||||
} else {
|
||||
- ".note.rustc"
|
||||
+ ".rustc"
|
||||
}
|
||||
}
|
||||
|
||||
-pub fn read_meta_section_name(target: &Target) -> &'static str {
|
||||
- if target.options.is_like_osx {
|
||||
- "__note.rustc"
|
||||
- } else if target.options.is_like_msvc {
|
||||
- ".rustc"
|
||||
- } else {
|
||||
- ".note.rustc"
|
||||
- }
|
||||
+pub fn read_meta_section_name(_target: &Target) -> &'static str {
|
||||
+ ".rustc"
|
||||
}
|
||||
|
||||
// A diagnostic function for dumping crate metadata to an output stream
|
||||
diff --git a/src/librustc_trans/base.rs b/src/librustc_trans/base.rs
|
||||
index d4f0786..93c9d1a 100644
|
||||
--- a/src/librustc_trans/base.rs
|
||||
+++ b/src/librustc_trans/base.rs
|
||||
@@ -2523,10 +2523,17 @@ pub fn write_metadata<'a, 'tcx>(cx: &SharedCrateContext<'a, 'tcx>,
|
||||
};
|
||||
unsafe {
|
||||
llvm::LLVMSetInitializer(llglobal, llconst);
|
||||
- let name =
|
||||
+ let section_name =
|
||||
cx.tcx().sess.cstore.metadata_section_name(&cx.sess().target.target);
|
||||
- let name = CString::new(name).unwrap();
|
||||
- llvm::LLVMSetSection(llglobal, name.as_ptr())
|
||||
+ let name = CString::new(section_name).unwrap();
|
||||
+ llvm::LLVMSetSection(llglobal, name.as_ptr());
|
||||
+
|
||||
+ // Also generate a .section directive to force no
|
||||
+ // flags, at least for ELF outputs, so that the
|
||||
+ // metadata doesn't get loaded into memory.
|
||||
+ let directive = format!(".section {}", section_name);
|
||||
+ let directive = CString::new(directive).unwrap();
|
||||
+ llvm::LLVMSetModuleInlineAsm(cx.metadata_llmod(), directive.as_ptr())
|
||||
}
|
||||
return metadata;
|
||||
}
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -1,107 +0,0 @@
|
||||
From bb2d8649b2b344e0bb4b1cf94135378831735557 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 18 Nov 2014 01:40:21 -0500
|
||||
Subject: [PATCH 01/10] Target: add default target.json path:
|
||||
$libdir/rust/targets
|
||||
|
||||
---
|
||||
src/librustc/session/config.rs | 6 +++---
|
||||
src/librustc/session/mod.rs | 8 ++++++--
|
||||
src/librustc_back/target/mod.rs | 13 +++++++++++--
|
||||
3 files changed, 20 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
|
||||
index e988ddc..563f3ac 100644
|
||||
--- a/src/librustc/session/config.rs
|
||||
+++ b/src/librustc/session/config.rs
|
||||
@@ -42,7 +42,7 @@ use std::env;
|
||||
use std::fmt;
|
||||
use std::hash::{Hasher, SipHasher};
|
||||
use std::iter::FromIterator;
|
||||
-use std::path::PathBuf;
|
||||
+use std::path::{Path, PathBuf};
|
||||
|
||||
pub struct Config {
|
||||
pub target: Target,
|
||||
@@ -1011,8 +1011,8 @@ pub fn build_configuration(sess: &Session,
|
||||
v
|
||||
}
|
||||
|
||||
-pub fn build_target_config(opts: &Options, sp: &Handler) -> Config {
|
||||
- let target = match Target::search(&opts.target_triple) {
|
||||
+pub fn build_target_config(sysroot: &Path, opts: &Options, sp: &Handler) -> Config {
|
||||
+ let target = match Target::search(sysroot, &opts.target_triple[..]) {
|
||||
Ok(t) => t,
|
||||
Err(e) => {
|
||||
sp.struct_fatal(&format!("Error loading target specification: {}", e))
|
||||
diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs
|
||||
index c71253a..13b4e05 100644
|
||||
--- a/src/librustc/session/mod.rs
|
||||
+++ b/src/librustc/session/mod.rs
|
||||
@@ -395,13 +395,17 @@ pub fn build_session_(sopts: config::Options,
|
||||
codemap: Rc<codemap::CodeMap>,
|
||||
cstore: Rc<for<'a> CrateStore<'a>>)
|
||||
-> Session {
|
||||
- let host = match Target::search(config::host_triple()) {
|
||||
+ let sysroot = match sopts.maybe_sysroot {
|
||||
+ Some(ref x) => PathBuf::from(x),
|
||||
+ None => filesearch::get_or_default_sysroot()
|
||||
+ };
|
||||
+ let host = match Target::search(&sysroot, config::host_triple()) {
|
||||
Ok(t) => t,
|
||||
Err(e) => {
|
||||
panic!(span_diagnostic.fatal(&format!("Error loading host specification: {}", e)));
|
||||
}
|
||||
};
|
||||
- let target_cfg = config::build_target_config(&sopts, &span_diagnostic);
|
||||
+ let target_cfg = config::build_target_config(&sysroot, &sopts, &span_diagnostic);
|
||||
let p_s = parse::ParseSess::with_span_handler(span_diagnostic, codemap);
|
||||
let default_sysroot = match sopts.maybe_sysroot {
|
||||
Some(_) => None,
|
||||
diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs
|
||||
index 18686e3..d439b59 100644
|
||||
--- a/src/librustc_back/target/mod.rs
|
||||
+++ b/src/librustc_back/target/mod.rs
|
||||
@@ -49,6 +49,8 @@ use std::collections::BTreeMap;
|
||||
use std::default::Default;
|
||||
use std::io::prelude::*;
|
||||
use syntax::abi::Abi;
|
||||
+use std::borrow::ToOwned;
|
||||
+use std::path::Path;
|
||||
|
||||
mod android_base;
|
||||
mod apple_base;
|
||||
@@ -541,12 +543,13 @@ impl Target {
|
||||
///
|
||||
/// The error string could come from any of the APIs called, including
|
||||
/// filesystem access and JSON decoding.
|
||||
- pub fn search(target: &str) -> Result<Target, String> {
|
||||
+ pub fn search(sysroot: &Path, target: &str) -> Result<Target, String> {
|
||||
use std::env;
|
||||
use std::ffi::OsString;
|
||||
use std::fs::File;
|
||||
use std::path::{Path, PathBuf};
|
||||
use serialize::json;
|
||||
+ use std::iter::IntoIterator;
|
||||
|
||||
fn load_file(path: &Path) -> Result<Target, String> {
|
||||
let mut f = File::open(path).map_err(|e| e.to_string())?;
|
||||
@@ -577,8 +580,14 @@ impl Target {
|
||||
.unwrap_or(OsString::new());
|
||||
|
||||
// FIXME 16351: add a sane default search path?
|
||||
+ let mut default_path = sysroot.to_owned();
|
||||
+ default_path.push(env!("CFG_LIBDIR_RELATIVE"));
|
||||
+ default_path.push("rustlib");
|
||||
|
||||
- for dir in env::split_paths(&target_path) {
|
||||
+ let paths = env::split_paths(&target_path)
|
||||
+ .chain(Some(default_path).into_iter());
|
||||
+
|
||||
+ for dir in paths {
|
||||
let p = dir.join(&path);
|
||||
if p.is_file() {
|
||||
return load_file(&p);
|
||||
--
|
||||
2.10.0
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
From 0829743c109a147213d06d38052662a5f2b0dd9b Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 18 Nov 2014 14:52:56 -0500
|
||||
Subject: [PATCH 02/10] mk: for stage0, use RUSTFLAGS to override target libs
|
||||
dir
|
||||
|
||||
Setting HLIB specially for stage0 (and even more specially for windows)
|
||||
also affects the location we place TLIB. To keep the TLIBs we build in
|
||||
the place requested by configure, use '-L' and '--sysroot' to point
|
||||
stage0-rustc at the appropriate location.
|
||||
---
|
||||
mk/main.mk | 29 ++++++++++++-----------------
|
||||
1 file changed, 12 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/mk/main.mk b/mk/main.mk
|
||||
index 90d3563..cdcbdf2 100644
|
||||
--- a/mk/main.mk
|
||||
+++ b/mk/main.mk
|
||||
@@ -420,32 +420,26 @@ define SREQ
|
||||
HROOT$(1)_H_$(3) = $(3)/stage$(1)
|
||||
HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
|
||||
|
||||
-ifeq ($$(CFG_WINDOWSY_$(3)),1)
|
||||
-# On Windows we always store host runtime libraries in the 'bin' directory because
|
||||
-# there's no rpath. Target libraries go under $CFG_LIBDIR_RELATIVE (usually 'lib').
|
||||
-HLIB_RELATIVE$(1)_H_$(3) = bin
|
||||
-TROOT$(1)_T_$(2)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)/rustlib/$(2)
|
||||
-# Remove the next 3 lines after a snapshot
|
||||
-ifeq ($(1),0)
|
||||
-RUSTFLAGS_STAGE0 += -L $$(TROOT$(1)_T_$(2)_H_$(3))/lib
|
||||
-endif
|
||||
-
|
||||
-else
|
||||
-
|
||||
-ifeq ($(1),0)
|
||||
-HLIB_RELATIVE$(1)_H_$(3) = lib
|
||||
-else
|
||||
HLIB_RELATIVE$(1)_H_$(3) = $$(CFG_LIBDIR_RELATIVE)
|
||||
-endif
|
||||
+
|
||||
TROOT$(1)_T_$(2)_H_$(3) = $$(HLIB$(1)_H_$(3))/rustlib/$(2)
|
||||
|
||||
-endif
|
||||
HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(HLIB_RELATIVE$(1)_H_$(3))
|
||||
|
||||
# Destinations of artifacts for target architectures
|
||||
TBIN$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/bin
|
||||
TLIB$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/lib
|
||||
|
||||
+# Don't trust stage0, be explicit about libraries
|
||||
+# TODO: rather than specifying sysroot, we really want to tell which libdir to
|
||||
+# use (ie: the dir containing 'rustlib'). This would allow us to avoid
|
||||
+# passing the '-L' options.
|
||||
+ifeq ($(1),0)
|
||||
+RUSTFLAGS_S_$(1)_T_$(2)_H_$(3) += --sysroot "$$(HROOT$(1)_H_$(3))" \
|
||||
+ -L "$$(TLIB$(1)_T_$(2)_H_$(3))"
|
||||
+endif
|
||||
+
|
||||
+
|
||||
# Preqrequisites for using the stageN compiler
|
||||
ifeq ($(1),0)
|
||||
HSREQ$(1)_H_$(3) = $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3))
|
||||
@@ -558,6 +552,7 @@ STAGE$(1)_T_$(2)_H_$(3) := \
|
||||
$$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \
|
||||
--cfg $$(CFGFLAG$(1)_T_$(2)_H_$(3)) \
|
||||
$$(CFG_RUSTC_FLAGS) $$(EXTRAFLAGS_STAGE$(1)) --target=$(2)) \
|
||||
+ $$(RUSTFLAGS_S_$(1)_T_$(2)_H_$(3)) \
|
||||
$$(RUSTC_FLAGS_$(2))
|
||||
|
||||
endef
|
||||
--
|
||||
2.10.0
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
From 128503bf447e82b9e99bea8ef83294a6446036b5 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 18 Nov 2014 13:48:14 -0500
|
||||
Subject: [PATCH 03/10] mk: add missing CFG_LIBDIR_RELATIVE
|
||||
|
||||
---
|
||||
mk/grammar.mk | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/mk/grammar.mk b/mk/grammar.mk
|
||||
index 0d527bd..926f247 100644
|
||||
--- a/mk/grammar.mk
|
||||
+++ b/mk/grammar.mk
|
||||
@@ -11,8 +11,8 @@
|
||||
BG = $(CFG_BUILD_DIR)/grammar/
|
||||
SG = $(S)src/grammar/
|
||||
B = $(CFG_BUILD_DIR)/$(CFG_BUILD)/stage2/
|
||||
-L = $(B)lib/rustlib/$(CFG_BUILD)/lib
|
||||
-LD = $(CFG_BUILD)/stage2/lib/rustlib/$(CFG_BUILD)/lib/
|
||||
+L = $(B)$(CFG_LIBDIR_RELATIVE)/rustlib/$(CFG_BUILD)/lib
|
||||
+LD = $(CFG_BUILD)/stage2/$(CFG_LIBDIR_RELATIVE)/rustlib/$(CFG_BUILD)/lib/
|
||||
RUSTC = $(STAGE2_T_$(CFG_BUILD)_H_$(CFG_BUILD))
|
||||
ifeq ($(CFG_OSTYPE),apple-darwin)
|
||||
FLEX_LDFLAGS=-ll
|
||||
--
|
||||
2.10.0
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
From d73ce5d99346812fcf063a87b4efac54c263737d Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Wed, 3 Dec 2014 19:15:19 -0500
|
||||
Subject: [PATCH 05/10] std/thread_local: workaround for NULL __dso_handle
|
||||
|
||||
---
|
||||
src/libstd/thread/local.rs | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/libstd/thread/local.rs b/src/libstd/thread/local.rs
|
||||
index 152b977..3c62862 100644
|
||||
--- a/src/libstd/thread/local.rs
|
||||
+++ b/src/libstd/thread/local.rs
|
||||
@@ -380,7 +380,7 @@ pub mod elf {
|
||||
#[linkage = "extern_weak"]
|
||||
static __cxa_thread_atexit_impl: *const libc::c_void;
|
||||
}
|
||||
- if !__cxa_thread_atexit_impl.is_null() {
|
||||
+ if !__cxa_thread_atexit_impl.is_null() && !__dso_handle.is_null() {
|
||||
type F = unsafe extern fn(dtor: unsafe extern fn(*mut u8),
|
||||
arg: *mut u8,
|
||||
dso_handle: *mut u8) -> libc::c_int;
|
||||
--
|
||||
2.10.0
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
From f8d4b1ea925789bca1aa6261017d63f5efa95c0f Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Mon, 2 Mar 2015 13:34:59 -0500
|
||||
Subject: [PATCH 06/10] mk/install: use disable-rewrite-paths
|
||||
|
||||
This stops the install scripts from doing work we've already handled.
|
||||
|
||||
Path rewriting is only useful for prepackaged binary installers.
|
||||
---
|
||||
mk/install.mk | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/mk/install.mk b/mk/install.mk
|
||||
index d2e5449..e67650b 100644
|
||||
--- a/mk/install.mk
|
||||
+++ b/mk/install.mk
|
||||
@@ -12,7 +12,9 @@ RUN_INSTALLER = cd tmp/empty_dir && \
|
||||
sh ../../tmp/dist/$(1)/install.sh \
|
||||
--prefix="$(DESTDIR)$(CFG_PREFIX)" \
|
||||
--libdir="$(DESTDIR)$(CFG_LIBDIR)" \
|
||||
- --mandir="$(DESTDIR)$(CFG_MANDIR)"
|
||||
+ --mandir="$(DESTDIR)$(CFG_MANDIR)" \
|
||||
+ "$(MAYBE_DISABLE_VERIFY)" \
|
||||
+ --disable-rewrite-paths
|
||||
|
||||
install:
|
||||
ifeq (root user, $(USER) $(patsubst %,user,$(SUDO_USER)))
|
||||
--
|
||||
2.10.0
|
||||
|
||||
@@ -1,65 +0,0 @@
|
||||
From 2a42d59c3671f3ab68d8ff49c46240842aff6eb6 Mon Sep 17 00:00:00 2001
|
||||
From: Steven Walter <swalter@lexmark.com>
|
||||
Date: Wed, 18 Nov 2015 08:33:26 -0500
|
||||
Subject: [PATCH 07/10] Allow overriding crate_hash with -C crate_hash
|
||||
|
||||
The current crate hash is not stable from run-to-run. This causes
|
||||
problems with bitbake; it needs a guarantee that every build with the
|
||||
same input will generate compatible output, otherwise sstate won't work.
|
||||
Using -C crate_hash, we can do that by using the bitbake input hash to
|
||||
determine the crate hash; the bitbake input hash will be stable, but
|
||||
still different for different rust recipes.
|
||||
|
||||
Upstream-Status: not-appropriate
|
||||
|
||||
Upstream wants to fix it's actual object generation here. See
|
||||
https://github.com/rust-lang/rust/issues/34902 (and others) for details.
|
||||
---
|
||||
src/librustc/session/config.rs | 2 ++
|
||||
src/librustc_trans/back/link.rs | 12 +++++++++++-
|
||||
2 files changed, 13 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
|
||||
index 563f3ac..52a5130 100644
|
||||
--- a/src/librustc/session/config.rs
|
||||
+++ b/src/librustc/session/config.rs
|
||||
@@ -804,6 +804,8 @@ options! {CodegenOptions, CodegenSetter, basic_codegen_options,
|
||||
"choose the code model to use (rustc --print code-models for details)"),
|
||||
metadata: Vec<String> = (Vec::new(), parse_list, [TRACKED],
|
||||
"metadata to mangle symbol names with"),
|
||||
+ crate_hash: String = ("".to_string(), parse_string, [TRACKED],
|
||||
+ "override crate hash with given value"),
|
||||
extra_filename: String = ("".to_string(), parse_string, [UNTRACKED],
|
||||
"extra data to put in each output filename"),
|
||||
codegen_units: usize = (1, parse_uint, [UNTRACKED],
|
||||
diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs
|
||||
index 3cf2500..0e48063 100644
|
||||
--- a/src/librustc_trans/back/link.rs
|
||||
+++ b/src/librustc_trans/back/link.rs
|
||||
@@ -125,12 +125,22 @@ pub fn find_crate_name(sess: Option<&Session>,
|
||||
|
||||
}
|
||||
|
||||
+use std::hash::{Hasher, SipHasher};
|
||||
+use rustc::hir::svh::Svh;
|
||||
+
|
||||
pub fn build_link_meta<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
|
||||
name: &str)
|
||||
-> LinkMeta {
|
||||
+ let crate_hash = if tcx.sess.opts.cg.crate_hash != "" {
|
||||
+ let mut state = SipHasher::new();
|
||||
+ state.write(tcx.sess.opts.cg.crate_hash.as_bytes());
|
||||
+ Svh::new(state.finish())
|
||||
+ } else {
|
||||
+ tcx.calculate_krate_hash()
|
||||
+ };
|
||||
let r = LinkMeta {
|
||||
crate_name: name.to_owned(),
|
||||
- crate_hash: tcx.calculate_krate_hash(),
|
||||
+ crate_hash: crate_hash,
|
||||
};
|
||||
info!("{:?}", r);
|
||||
return r;
|
||||
--
|
||||
2.10.0
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
From 174ae38bcc197658dd0ad6bcdae2bb06112e68a2 Mon Sep 17 00:00:00 2001
|
||||
From: Steven Walter <swalter@lexmark.com>
|
||||
Date: Wed, 18 Nov 2015 08:41:17 -0500
|
||||
Subject: [PATCH 08/10] mk/platform.mk: pass -C crate_hash to builds
|
||||
|
||||
bitbake recipe will export FORCE_CRATE_HASH
|
||||
|
||||
Upstream-Status: not-appropriate
|
||||
---
|
||||
mk/platform.mk | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/mk/platform.mk b/mk/platform.mk
|
||||
index d601cab..0b5e9f2 100644
|
||||
--- a/mk/platform.mk
|
||||
+++ b/mk/platform.mk
|
||||
@@ -181,6 +181,7 @@ define CFG_MAKE_TOOLCHAIN
|
||||
AR_$(1)=$(CROSS_PREFIX_$(1))$(AR_$(1))
|
||||
LINK_$(1)=$(CROSS_PREFIX_$(1))$(LINK_$(1))
|
||||
RUSTC_CROSS_FLAGS_$(1)=-C linker=$$(call FIND_COMPILER,$$(LINK_$(1))) \
|
||||
+ -C crate_hash=$(FORCE_CRATE_HASH) \
|
||||
-C ar=$$(call FIND_COMPILER,$$(AR_$(1))) $(RUSTC_CROSS_FLAGS_$(1))
|
||||
|
||||
RUSTC_FLAGS_$(1)=$$(RUSTC_CROSS_FLAGS_$(1)) $(RUSTC_FLAGS_$(1))
|
||||
--
|
||||
2.10.0
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
From c7daec775a917d9e3017bc35ea7d88cc9418f181 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Mon, 2 Mar 2015 13:27:49 -0500
|
||||
Subject: [PATCH] add option to disable rewriting of install paths
|
||||
|
||||
This is intended for use by rust & cargo's `make install`, as in that
|
||||
case:
|
||||
|
||||
- these paths are typically built into the pre-install layout already
|
||||
- attempting to do the replacement will be incorrect subdirectory
|
||||
cases (ie: libdir=lib/foo)
|
||||
---
|
||||
install-template.sh | 21 ++++++++++++---------
|
||||
1 file changed, 12 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/install-template.sh b/install-template.sh
|
||||
index 042b955..4ecf430 100644
|
||||
--- a/install-template.sh
|
||||
+++ b/install-template.sh
|
||||
@@ -618,16 +618,18 @@ install_components() {
|
||||
# Decide the destination of the file
|
||||
local _file_install_path="$_dest_prefix/$_file"
|
||||
|
||||
- if echo "$_file" | grep "^lib/" > /dev/null
|
||||
- then
|
||||
- local _f="$(echo "$_file" | sed 's/^lib\///')"
|
||||
- _file_install_path="$CFG_LIBDIR/$_f"
|
||||
- fi
|
||||
+ if [ -n "${CFG_REWRITE_PATHS-}" ]; then
|
||||
+ if echo "$_file" | grep "^lib/" > /dev/null
|
||||
+ then
|
||||
+ local _f="$(echo "$_file" | sed 's/^lib\///')"
|
||||
+ _file_install_path="$CFG_LIBDIR/$_f"
|
||||
+ fi
|
||||
|
||||
- if echo "$_file" | grep "^share/man/" > /dev/null
|
||||
- then
|
||||
- local _f="$(echo "$_file" | sed 's/^share\/man\///')"
|
||||
- _file_install_path="$CFG_MANDIR/$_f"
|
||||
+ if echo "$_file" | grep "^share/man/" > /dev/null
|
||||
+ then
|
||||
+ local _f="$(echo "$_file" | sed 's/^share\/man\///')"
|
||||
+ _file_install_path="$CFG_MANDIR/$_f"
|
||||
+ fi
|
||||
fi
|
||||
|
||||
# Make sure there's a directory for it
|
||||
@@ -810,6 +812,7 @@ valopt mandir "$CFG_DESTDIR_PREFIX/share/man" "install man pages in PATH"
|
||||
opt ldconfig 1 "run ldconfig after installation (Linux only)"
|
||||
opt verify 1 "obsolete"
|
||||
flag verbose "run with verbose output"
|
||||
+opt rewrite-paths 1 "rewrite install paths for libdir & mandir"
|
||||
|
||||
if [ $HELP -eq 1 ]
|
||||
then
|
||||
--
|
||||
2.4.1
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
From c7daec775a917d9e3017bc35ea7d88cc9418f181 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Mon, 2 Mar 2015 13:27:49 -0500
|
||||
Subject: [PATCH] add option to disable rewriting of install paths
|
||||
|
||||
This is intended for use by rust & cargo's `make install`, as in that
|
||||
case:
|
||||
|
||||
- these paths are typically built into the pre-install layout already
|
||||
- attempting to do the replacement will be incorrect subdirectory
|
||||
cases (ie: libdir=lib/foo)
|
||||
---
|
||||
install-template.sh | 21 ++++++++++++---------
|
||||
1 file changed, 12 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/install-template.sh b/install-template.sh
|
||||
index 042b955..4ecf430 100644
|
||||
--- a/install-template.sh
|
||||
+++ b/install-template.sh
|
||||
@@ -618,16 +618,18 @@ install_components() {
|
||||
# Decide the destination of the file
|
||||
local _file_install_path="$_dest_prefix/$_file"
|
||||
|
||||
- if echo "$_file" | grep "^lib/" > /dev/null
|
||||
- then
|
||||
- local _f="$(echo "$_file" | sed 's/^lib\///')"
|
||||
- _file_install_path="$CFG_LIBDIR/$_f"
|
||||
- fi
|
||||
+ if [ -n "${CFG_REWRITE_PATHS-}" ]; then
|
||||
+ if echo "$_file" | grep "^lib/" > /dev/null
|
||||
+ then
|
||||
+ local _f="$(echo "$_file" | sed 's/^lib\///')"
|
||||
+ _file_install_path="$CFG_LIBDIR/$_f"
|
||||
+ fi
|
||||
|
||||
- if echo "$_file" | grep "^share/man/" > /dev/null
|
||||
- then
|
||||
- local _f="$(echo "$_file" | sed 's/^share\/man\///')"
|
||||
- _file_install_path="$CFG_MANDIR/$_f"
|
||||
+ if echo "$_file" | grep "^share/man/" > /dev/null
|
||||
+ then
|
||||
+ local _f="$(echo "$_file" | sed 's/^share\/man\///')"
|
||||
+ _file_install_path="$CFG_MANDIR/$_f"
|
||||
+ fi
|
||||
fi
|
||||
|
||||
# Make sure there's a directory for it
|
||||
@@ -810,6 +812,7 @@ valopt mandir "$CFG_DESTDIR_PREFIX/share/man" "install man pages in PATH"
|
||||
opt ldconfig 1 "run ldconfig after installation (Linux only)"
|
||||
opt verify 1 "obsolete"
|
||||
flag verbose "run with verbose output"
|
||||
+opt rewrite-paths 1 "rewrite install paths for libdir & mandir"
|
||||
|
||||
if [ $HELP -eq 1 ]
|
||||
then
|
||||
--
|
||||
2.4.1
|
||||
|
||||
37
recipes-devtools/rust/files/rv64gc.patch
Normal file
37
recipes-devtools/rust/files/rv64gc.patch
Normal file
@@ -0,0 +1,37 @@
|
||||
--- a/vendor/cc-1.0.60/.cargo-checksum.json
|
||||
+++ b/vendor/cc-1.0.60/.cargo-checksum.json
|
||||
@@ -1 +1 @@
|
||||
-{"files":{"Cargo.lock":"30b9e23f97015aea3eed3e17c6d76d565c2924efec8bdae64c899080847afe89","Cargo.toml":"f6f22b69df3df57c58373cdee72b22218ffa030bc375b36632660037dd72c866","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"51405d284d2e0620db62c655c652fc0ec84f20c1cb30529227355c9575a9e6dd","src/bin/gcc-shim.rs":"b77907875029494b6288841c3aed2e4939ed40708c7f597fca5c9e2570490ca6","src/com.rs":"bcdaf1c28b71e6ef889c6b08d1ce9d7c0761344a677f523bc4c3cd297957f804","src/lib.rs":"903c5f2f5dd0cc7d04f99f605a95e6abde8b38156fd4e73eefc58493f55a4e5a","src/registry.rs":"3cc1b5a50879fa751572878ae1d0afbfc960c11665258492754b2c8bccb0ff5d","src/setup_config.rs":"7014103587d3382eac599cb76f016e2609b8140970861b2237982d1db24af265","src/winapi.rs":"ea8b7edbb9ff87957254f465c2334e714c5d6b3b19a8d757c48ea7ca0881c50c","src/windows_registry.rs":"52afe8554f577c87841c48ddee3ba7ffe70a00129e1d6eeb2ec0efb3d2b9aa11","tests/cc_env.rs":"e02b3b0824ad039b47e4462c5ef6dbe6c824c28e7953af94a0f28f7b5158042e","tests/cflags.rs":"57f06eb5ce1557e5b4a032d0c4673e18fbe6f8d26c1deb153126e368b96b41b3","tests/cxxflags.rs":"c2c6c6d8a0d7146616fa1caed26876ee7bc9fcfffd525eb4743593cade5f3371","tests/support/mod.rs":"16274867f23871e9b07614eda4c7344da13d1751fed63d4f633857e40be86394","tests/test.rs":"65c073e0e2cf4aa0433066102788e9f57442719e6f32f5ad5248aa7132bb4597"},"package":"ef611cc68ff783f18535d77ddd080185275713d852c4f5cbb6122c462a7a825c"}
|
||||
\ No newline at end of file
|
||||
+{"files":{"Cargo.lock":"30b9e23f97015aea3eed3e17c6d76d565c2924efec8bdae64c899080847afe89","Cargo.toml":"f6f22b69df3df57c58373cdee72b22218ffa030bc375b36632660037dd72c866","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"51405d284d2e0620db62c655c652fc0ec84f20c1cb30529227355c9575a9e6dd","src/bin/gcc-shim.rs":"b77907875029494b6288841c3aed2e4939ed40708c7f597fca5c9e2570490ca6","src/com.rs":"bcdaf1c28b71e6ef889c6b08d1ce9d7c0761344a677f523bc4c3cd297957f804","src/lib.rs":"2788af2bdf425f267b33bc524f3e627851b52422e38f480a7e39eb834264fd73","src/registry.rs":"3cc1b5a50879fa751572878ae1d0afbfc960c11665258492754b2c8bccb0ff5d","src/setup_config.rs":"7014103587d3382eac599cb76f016e2609b8140970861b2237982d1db24af265","src/winapi.rs":"ea8b7edbb9ff87957254f465c2334e714c5d6b3b19a8d757c48ea7ca0881c50c","src/windows_registry.rs":"52afe8554f577c87841c48ddee3ba7ffe70a00129e1d6eeb2ec0efb3d2b9aa11","tests/cc_env.rs":"e02b3b0824ad039b47e4462c5ef6dbe6c824c28e7953af94a0f28f7b5158042e","tests/cflags.rs":"57f06eb5ce1557e5b4a032d0c4673e18fbe6f8d26c1deb153126e368b96b41b3","tests/cxxflags.rs":"c2c6c6d8a0d7146616fa1caed26876ee7bc9fcfffd525eb4743593cade5f3371","tests/support/mod.rs":"16274867f23871e9b07614eda4c7344da13d1751fed63d4f633857e40be86394","tests/test.rs":"65c073e0e2cf4aa0433066102788e9f57442719e6f32f5ad5248aa7132bb4597"},"package":"ef611cc68ff783f18535d77ddd080185275713d852c4f5cbb6122c462a7a825c"}
|
||||
--- a/vendor/cc-1.0.60/src/lib.rs
|
||||
+++ b/vendor/cc-1.0.60/src/lib.rs
|
||||
@@ -1639,14 +1639,17 @@ impl Build {
|
||||
let mut parts = target.split('-');
|
||||
if let Some(arch) = parts.next() {
|
||||
let arch = &arch[5..];
|
||||
- cmd.args.push(("-march=rv".to_owned() + arch).into());
|
||||
if target.contains("linux") && arch.starts_with("64") {
|
||||
+ cmd.args.push(("-march=rv64gc").into());
|
||||
cmd.args.push("-mabi=lp64d".into());
|
||||
} else if target.contains("linux") && arch.starts_with("32") {
|
||||
+ cmd.args.push(("-march=rv32gc").into());
|
||||
cmd.args.push("-mabi=ilp32d".into());
|
||||
} else if arch.starts_with("64") {
|
||||
+ cmd.args.push(("-march=rv".to_owned() + arch).into());
|
||||
cmd.args.push("-mabi=lp64".into());
|
||||
} else {
|
||||
+ cmd.args.push(("-march=rv".to_owned() + arch).into());
|
||||
cmd.args.push("-mabi=ilp32".into());
|
||||
}
|
||||
cmd.args.push("-mcmodel=medany".into());
|
||||
@@ -2332,6 +2335,9 @@ impl Build {
|
||||
"riscv-none-embed",
|
||||
]),
|
||||
"riscv64gc-unknown-linux-gnu" => Some("riscv64-linux-gnu"),
|
||||
+ "riscv32gc-unknown-linux-gnu" => Some("riscv32-linux-gnu"),
|
||||
+ "riscv64gc-unknown-linux-musl" => Some("riscv64-linux-musl"),
|
||||
+ "riscv32gc-unknown-linux-musl" => Some("riscv32-linux-musl"),
|
||||
"s390x-unknown-linux-gnu" => Some("s390x-linux-gnu"),
|
||||
"sparc-unknown-linux-gnu" => Some("sparc-linux-gnu"),
|
||||
"sparc64-unknown-linux-gnu" => Some("sparc64-linux-gnu"),
|
||||
40
recipes-devtools/rust/libstd-rs.inc
Normal file
40
recipes-devtools/rust/libstd-rs.inc
Normal file
@@ -0,0 +1,40 @@
|
||||
SUMMARY = "Rust standard libaries"
|
||||
HOMEPAGE = "http://www.rust-lang.org"
|
||||
SECTION = "devel"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "file://../../COPYRIGHT;md5=93a95682d51b4cb0a633a97046940ef0"
|
||||
|
||||
RUSTLIB_DEP = ""
|
||||
inherit cargo
|
||||
|
||||
DEPENDS_append_libc-musl = " libunwind"
|
||||
# rv32 does not have libunwind ported yet
|
||||
DEPENDS_remove_riscv32 = "libunwind"
|
||||
DEPENDS_remove_riscv64 = "libunwind"
|
||||
|
||||
# Embed bitcode in order to allow compiling both with and without LTO
|
||||
RUSTFLAGS += "-Cembed-bitcode=yes"
|
||||
# Needed so cargo can find libbacktrace
|
||||
RUSTFLAGS += "-L ${STAGING_LIBDIR} -C link-arg=-Wl,-soname,libstd.so"
|
||||
|
||||
S = "${RUSTSRC}/src/libstd"
|
||||
|
||||
CARGO_FEATURES ?= "panic-unwind backtrace"
|
||||
CARGO_BUILD_FLAGS += "--features '${CARGO_FEATURES}'"
|
||||
CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor"
|
||||
|
||||
do_compile_prepend () {
|
||||
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 -f ${B}/${TARGET_SYS}/${BUILD_DIR}/deps/*.d
|
||||
cp ${B}/${TARGET_SYS}/${BUILD_DIR}/deps/* ${D}${rustlibdir}
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
SUMMARY = "Rust standard libaries"
|
||||
HOMEPAGE = "http://www.rust-lang.org"
|
||||
SECTION = "devel"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
LIC_FILES_CHKSUM ="file://COPYRIGHT;md5=43e1f1fb9c0ee3af66693d8c4fecafa8"
|
||||
|
||||
SRC_URI = "\
|
||||
https://static.rust-lang.org/dist/rustc-${PV}-src.tar.gz;name=rust \
|
||||
"
|
||||
|
||||
require rust-source-${PV}.inc
|
||||
|
||||
S = "${WORKDIR}/rustc-${PV}"
|
||||
|
||||
CARGO_INDEX_COMMIT = "6127fc24b0b6fe73fe4d339817fbf000b9a798a2"
|
||||
|
||||
SRC_URI += "\
|
||||
crate://crates.io/gcc/0.3.26 \
|
||||
crate-index://crates.io/${CARGO_INDEX_COMMIT} \
|
||||
"
|
||||
|
||||
DEPENDS += "compiler-rt (=${PV})"
|
||||
|
||||
RUSTLIB_DEP = ""
|
||||
inherit cargo
|
||||
|
||||
# Needed so cargo can find libbacktrace
|
||||
RUSTFLAGS += "-L ${STAGING_LIBDIR}"
|
||||
|
||||
S = "${WORKDIR}/rustc-${PV}"
|
||||
|
||||
do_compile_prepend () {
|
||||
cd ${S}/src/rustc/std_shim
|
||||
export CARGO_TARGET_DIR="${B}"
|
||||
export RUSTC_BOOTSTRAP_KEY="${RS_KEY}"
|
||||
}
|
||||
|
||||
do_install () {
|
||||
mkdir -p ${D}${rustlibdir}
|
||||
cp ${B}/${TARGET_SYS}/release/deps/* ${D}${rustlibdir}
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
SUMMARY = "Rust standard libaries"
|
||||
HOMEPAGE = "http://www.rust-lang.org"
|
||||
SECTION = "devel"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
LIC_FILES_CHKSUM ="file://COPYRIGHT;md5=43e1f1fb9c0ee3af66693d8c4fecafa8"
|
||||
|
||||
require rust-source-${PV}.inc
|
||||
|
||||
S = "${WORKDIR}/rustc-${PV}"
|
||||
|
||||
CARGO_INDEX_COMMIT = "6127fc24b0b6fe73fe4d339817fbf000b9a798a2"
|
||||
|
||||
SRC_URI += "\
|
||||
crate://crates.io/gcc/0.3.27 \
|
||||
crate-index://crates.io/${CARGO_INDEX_COMMIT} \
|
||||
"
|
||||
|
||||
DEPENDS += "compiler-rt (=${PV})"
|
||||
|
||||
RUSTLIB_DEP = ""
|
||||
inherit cargo
|
||||
|
||||
# Needed so cargo can find libbacktrace
|
||||
RUSTFLAGS += "-L ${STAGING_LIBDIR}"
|
||||
|
||||
S = "${WORKDIR}/rustc-${PV}"
|
||||
|
||||
do_compile_prepend () {
|
||||
cd ${S}/src/rustc/std_shim
|
||||
export CARGO_TARGET_DIR="${B}"
|
||||
export RUSTC_BOOTSTRAP_KEY="${RS_KEY}"
|
||||
}
|
||||
|
||||
do_install () {
|
||||
mkdir -p ${D}${rustlibdir}
|
||||
cp ${B}/${TARGET_SYS}/release/deps/* ${D}${rustlibdir}
|
||||
}
|
||||
12
recipes-devtools/rust/libstd-rs_1.49.0.bb
Normal file
12
recipes-devtools/rust/libstd-rs_1.49.0.bb
Normal file
@@ -0,0 +1,12 @@
|
||||
require rust-source-${PV}.inc
|
||||
require libstd-rs.inc
|
||||
|
||||
SRC_URI += "file://riscv-march.patch;patchdir=../../ \
|
||||
file://rv64gc.patch;patchdir=../../ \
|
||||
file://0001-Add-base-definitions-for-riscv64-musl.patch;patchdir=../../ \
|
||||
file://0002-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set.patch;patchdir=../../ \
|
||||
file://0003-FIXUP-Correct-definitions-to-match-musl.patch;patchdir=../../ \
|
||||
file://0004-Update-checksums-for-modified-files.patch;patchdir=../../ \
|
||||
"
|
||||
# libstd moved from src/libstd to library/std in 1.47+
|
||||
S = "${RUSTSRC}/library/std"
|
||||
12
recipes-devtools/rust/libstd-rs_1.51.0.bb
Normal file
12
recipes-devtools/rust/libstd-rs_1.51.0.bb
Normal file
@@ -0,0 +1,12 @@
|
||||
require rust-source-${PV}.inc
|
||||
require libstd-rs.inc
|
||||
|
||||
SRC_URI += "file://riscv-march.patch;patchdir=../../ \
|
||||
file://rv64gc.patch;patchdir=../../ \
|
||||
file://0001-Add-base-definitions-for-riscv64-musl.patch;patchdir=../../ \
|
||||
file://0002-FIXUP-linux-musl-mod.rs-add-riscv64-to-b64-set.patch;patchdir=../../ \
|
||||
file://0003-FIXUP-Correct-definitions-to-match-musl.patch;patchdir=../../ \
|
||||
file://0004-Update-1.51.0-checksums-for-modified-files.patch;patchdir=../../ \
|
||||
"
|
||||
# libstd moved from src/libstd to library/std in 1.47+
|
||||
S = "${RUSTSRC}/library/std"
|
||||
346
recipes-devtools/rust/rust-common.inc
Normal file
346
recipes-devtools/rust/rust-common.inc
Normal file
@@ -0,0 +1,346 @@
|
||||
|
||||
# Right now this is focused on arm-specific tune features.
|
||||
# We get away with this for now as one can only use x86-64 as the build host
|
||||
# (not arm).
|
||||
# Note that TUNE_FEATURES is _always_ refering to the target, so we really
|
||||
# don't want to use this for the host/build.
|
||||
def llvm_features_from_tune(d):
|
||||
f = []
|
||||
feat = d.getVar('TUNE_FEATURES')
|
||||
if not feat:
|
||||
return []
|
||||
feat = frozenset(feat.split())
|
||||
|
||||
mach_overrides = d.getVar('MACHINEOVERRIDES')
|
||||
mach_overrides = frozenset(mach_overrides.split(':'))
|
||||
|
||||
if 'vfpv4' in feat:
|
||||
f.append("+vfp4")
|
||||
if 'vfpv3' in feat:
|
||||
f.append("+vfp3")
|
||||
if 'vfpv3d16' in feat:
|
||||
f.append("+d16")
|
||||
|
||||
if 'vfpv2' in feat or 'vfp' in feat:
|
||||
f.append("+vfp2")
|
||||
|
||||
if 'neon' in feat:
|
||||
f.append("+neon")
|
||||
|
||||
if 'mips32' in feat:
|
||||
f.append("+mips32")
|
||||
|
||||
if 'mips32r2' in feat:
|
||||
f.append("+mips32r2")
|
||||
|
||||
if target_is_armv7(d):
|
||||
f.append('+v7')
|
||||
|
||||
if ('armv6' in mach_overrides) or ('armv6' in feat):
|
||||
f.append("+v6")
|
||||
if 'armv5te' in feat:
|
||||
f.append("+strict-align")
|
||||
f.append("+v5te")
|
||||
elif 'armv5' in feat:
|
||||
f.append("+strict-align")
|
||||
f.append("+v5")
|
||||
|
||||
if ('armv4' in mach_overrides) or ('armv4' in feat):
|
||||
f.append("+strict-align")
|
||||
|
||||
if 'dsp' in feat:
|
||||
f.append("+dsp")
|
||||
|
||||
if 'thumb' in feat:
|
||||
if d.getVar('ARM_THUMB_OPT') == "thumb":
|
||||
if target_is_armv7(d):
|
||||
f.append('+thumb2')
|
||||
f.append("+thumb-mode")
|
||||
|
||||
if 'cortexa5' in feat:
|
||||
f.append("+a5")
|
||||
if 'cortexa7' in feat:
|
||||
f.append("+a7")
|
||||
if 'cortexa9' in feat:
|
||||
f.append("+a9")
|
||||
if 'cortexa15' in feat:
|
||||
f.append("+a15")
|
||||
if 'cortexa17' in feat:
|
||||
f.append("+a17")
|
||||
if ('riscv64' in feat) or ('riscv32' in feat):
|
||||
f.append("+a,+c,+d,+f,+m")
|
||||
return f
|
||||
|
||||
# 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"
|
||||
|
||||
## armv7-unknown-linux-gnueabihf
|
||||
DATA_LAYOUT[armv7] = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
|
||||
LLVM_TARGET[armv7] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[armv7] = "little"
|
||||
TARGET_POINTER_WIDTH[armv7] = "32"
|
||||
TARGET_C_INT_WIDTH[armv7] = "32"
|
||||
MAX_ATOMIC_WIDTH[armv7] = "64"
|
||||
FEATURES[armv7] = "+v7,+vfp2,+thumb2"
|
||||
|
||||
## aarch64-unknown-linux-{gnu, musl}
|
||||
DATA_LAYOUT[aarch64] = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
|
||||
LLVM_TARGET[aarch64] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[aarch64] = "little"
|
||||
TARGET_POINTER_WIDTH[aarch64] = "64"
|
||||
TARGET_C_INT_WIDTH[aarch64] = "32"
|
||||
MAX_ATOMIC_WIDTH[aarch64] = "128"
|
||||
|
||||
## x86_64-unknown-linux-{gnu, musl}
|
||||
DATA_LAYOUT[x86_64] = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
LLVM_TARGET[x86_64] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[x86_64] = "little"
|
||||
TARGET_POINTER_WIDTH[x86_64] = "64"
|
||||
TARGET_C_INT_WIDTH[x86_64] = "32"
|
||||
MAX_ATOMIC_WIDTH[x86_64] = "64"
|
||||
|
||||
## i686-unknown-linux-{gnu, musl}
|
||||
DATA_LAYOUT[i686] = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
|
||||
LLVM_TARGET[i686] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[i686] = "little"
|
||||
TARGET_POINTER_WIDTH[i686] = "32"
|
||||
TARGET_C_INT_WIDTH[i686] = "32"
|
||||
MAX_ATOMIC_WIDTH[i686] = "64"
|
||||
|
||||
## XXX: a bit of a hack so qemux86 builds, clone of i686-unknown-linux-{gnu, musl} above
|
||||
DATA_LAYOUT[i586] = "e-m:e-p:32:32-f64:32:64-f80:32-n8:16:32-S128"
|
||||
LLVM_TARGET[i586] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[i586] = "little"
|
||||
TARGET_POINTER_WIDTH[i586] = "32"
|
||||
TARGET_C_INT_WIDTH[i586] = "32"
|
||||
MAX_ATOMIC_WIDTH[i586] = "64"
|
||||
|
||||
## mips-unknown-linux-{gnu, musl}
|
||||
DATA_LAYOUT[mips] = "E-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
|
||||
LLVM_TARGET[mips] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[mips] = "big"
|
||||
TARGET_POINTER_WIDTH[mips] = "32"
|
||||
TARGET_C_INT_WIDTH[mips] = "32"
|
||||
MAX_ATOMIC_WIDTH[mips] = "32"
|
||||
|
||||
## mipsel-unknown-linux-{gnu, musl}
|
||||
DATA_LAYOUT[mipsel] = "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64"
|
||||
LLVM_TARGET[mipsel] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[mipsel] = "little"
|
||||
TARGET_POINTER_WIDTH[mipsel] = "32"
|
||||
TARGET_C_INT_WIDTH[mipsel] = "32"
|
||||
MAX_ATOMIC_WIDTH[mipsel] = "32"
|
||||
|
||||
## mips64-unknown-linux-{gnu, musl}
|
||||
DATA_LAYOUT[mips64] = "E-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128"
|
||||
LLVM_TARGET[mips64] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[mips64] = "big"
|
||||
TARGET_POINTER_WIDTH[mips64] = "64"
|
||||
TARGET_C_INT_WIDTH[mips64] = "64"
|
||||
MAX_ATOMIC_WIDTH[mips64] = "64"
|
||||
|
||||
## mips64el-unknown-linux-{gnu, musl}
|
||||
DATA_LAYOUT[mips64el] = "e-m:e-i8:8:32-i16:16:32-i64:64-n32:64-S128"
|
||||
LLVM_TARGET[mips64el] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[mips64el] = "little"
|
||||
TARGET_POINTER_WIDTH[mips64el] = "64"
|
||||
TARGET_C_INT_WIDTH[mips64el] = "64"
|
||||
MAX_ATOMIC_WIDTH[mips64el] = "64"
|
||||
|
||||
## powerpc-unknown-linux-{gnu, musl}
|
||||
DATA_LAYOUT[powerpc] = "E-m:e-p:32:32-i64:64-n32"
|
||||
LLVM_TARGET[powerpc] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[powerpc] = "big"
|
||||
TARGET_POINTER_WIDTH[powerpc] = "32"
|
||||
TARGET_C_INT_WIDTH[powerpc] = "32"
|
||||
MAX_ATOMIC_WIDTH[powerpc] = "32"
|
||||
|
||||
## powerpc64le-unknown-linux-{gnu, musl}
|
||||
DATA_LAYOUT[powerpc64le] = "e-m:e-i64:64-n32:64-v256:256:256-v512:512:512"
|
||||
LLVM_TARGET[powerpc64le] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[powerpc64le] = "little"
|
||||
TARGET_POINTER_WIDTH[powerpc64le] = "64"
|
||||
TARGET_C_INT_WIDTH[powerpc64le] = "64"
|
||||
MAX_ATOMIC_WIDTH[powerpc64le] = "64"
|
||||
|
||||
## riscv32-unknown-linux-{gnu, musl}
|
||||
DATA_LAYOUT[riscv32] = "e-m:e-p:32:32-i64:64-n32-S128"
|
||||
LLVM_TARGET[riscv32] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[riscv32] = "little"
|
||||
TARGET_POINTER_WIDTH[riscv32] = "32"
|
||||
TARGET_C_INT_WIDTH[riscv32] = "32"
|
||||
MAX_ATOMIC_WIDTH[riscv32] = "32"
|
||||
|
||||
## riscv64-unknown-linux-{gnu, musl}
|
||||
DATA_LAYOUT[riscv64] = "e-m:e-p:64:64-i64:64-i128:128-n64-S128"
|
||||
LLVM_TARGET[riscv64] = "${RUST_TARGET_SYS}"
|
||||
TARGET_ENDIAN[riscv64] = "little"
|
||||
TARGET_POINTER_WIDTH[riscv64] = "64"
|
||||
TARGET_C_INT_WIDTH[riscv64] = "64"
|
||||
MAX_ATOMIC_WIDTH[riscv64] = "64"
|
||||
|
||||
def sys_for(d, thing):
|
||||
return d.getVar('{}_SYS'.format(thing))
|
||||
|
||||
def prefix_for(d, thing):
|
||||
return d.getVar('{}_PREFIX'.format(thing))
|
||||
|
||||
# Convert a normal arch (HOST_ARCH, TARGET_ARCH, BUILD_ARCH, etc) to something
|
||||
# rust's internals won't choke on.
|
||||
def arch_to_rust_target_arch(arch):
|
||||
if arch == "i586" or arch == "i686":
|
||||
return "x86"
|
||||
elif arch == "mipsel":
|
||||
return "mips"
|
||||
elif arch == "mip64sel":
|
||||
return "mips64"
|
||||
elif arch == "armv7":
|
||||
return "arm"
|
||||
else:
|
||||
return arch
|
||||
|
||||
# generates our target CPU value
|
||||
def llvm_cpu(d):
|
||||
cpu = d.getVar('PACKAGE_ARCH')
|
||||
target = d.getVar('TRANSLATED_TARGET_ARCH')
|
||||
|
||||
trans = {}
|
||||
trans['corei7-64'] = "corei7"
|
||||
trans['core2-32'] = "core2"
|
||||
trans['x86-64'] = "x86-64"
|
||||
trans['i686'] = "i686"
|
||||
trans['i586'] = "i586"
|
||||
trans['powerpc'] = "powerpc"
|
||||
trans['mips64'] = "mips64"
|
||||
trans['mips64el'] = "mips64"
|
||||
trans['riscv64'] = "generic-rv64"
|
||||
trans['riscv32'] = "generic-rv32"
|
||||
|
||||
if target in ["mips", "mipsel"]:
|
||||
feat = frozenset(d.getVar('TUNE_FEATURES').split())
|
||||
if "mips32r2" in feat:
|
||||
trans['mipsel'] = "mips32r2"
|
||||
trans['mips'] = "mips32r2"
|
||||
elif "mips32" in feat:
|
||||
trans['mipsel'] = "mips32"
|
||||
trans['mips'] = "mips32"
|
||||
|
||||
try:
|
||||
return trans[cpu]
|
||||
except:
|
||||
return trans.get(target, "generic")
|
||||
|
||||
TARGET_LLVM_CPU="${@llvm_cpu(d)}"
|
||||
TARGET_LLVM_FEATURES = "${@llvm_features(d)}"
|
||||
|
||||
# class-native implies TARGET=HOST, and TUNE_FEATURES only describes the real
|
||||
# (original) target.
|
||||
TARGET_LLVM_FEATURES_class-native = "${@','.join(llvm_features_from_cc_arch(d))}"
|
||||
|
||||
def rust_gen_target(d, thing, wd, features, cpu, arch):
|
||||
import json
|
||||
sys = sys_for(d, thing)
|
||||
prefix = prefix_for(d, thing)
|
||||
|
||||
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'] = int(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"
|
||||
if "riscv64" in tspec['llvm-target']:
|
||||
tspec['llvm-abiname'] = "lp64d"
|
||||
if "riscv32" in tspec['llvm-target']:
|
||||
tspec['llvm-abiname'] = "ilp32d"
|
||||
tspec['vendor'] = "unknown"
|
||||
tspec['target-family'] = "unix"
|
||||
tspec['linker'] = "{}{}gcc".format(d.getVar('CCACHE'), prefix)
|
||||
tspec['ar'] = "{}ar".format(prefix)
|
||||
tspec['cpu'] = cpu
|
||||
if features != "":
|
||||
tspec['features'] = features
|
||||
tspec['dynamic-linking'] = True
|
||||
tspec['executables'] = True
|
||||
tspec['linker-is-gnu'] = True
|
||||
tspec['linker-flavor'] = "gcc"
|
||||
tspec['has-rpath'] = True
|
||||
tspec['has-elf-tls'] = True
|
||||
tspec['position-independent-executables'] = True
|
||||
tspec['panic-strategy'] = d.getVar("RUST_PANIC_STRATEGY")
|
||||
|
||||
# write out the target spec json file
|
||||
with open(wd + sys + '.json', 'w') as f:
|
||||
json.dump(tspec, f, indent=4)
|
||||
|
||||
python do_rust_gen_targets () {
|
||||
wd = d.getVar('WORKDIR') + '/targets/'
|
||||
build_arch = d.getVar('BUILD_ARCH')
|
||||
rust_gen_target(d, 'BUILD', wd, "", "generic", build_arch)
|
||||
}
|
||||
|
||||
addtask rust_gen_targets after do_patch before do_compile
|
||||
do_rust_gen_targets[dirs] += "${WORKDIR}/targets"
|
||||
|
||||
53
recipes-devtools/rust/rust-cross-canadian-common.inc
Normal file
53
recipes-devtools/rust/rust-cross-canadian-common.inc
Normal file
@@ -0,0 +1,53 @@
|
||||
|
||||
RUST_ALTERNATE_EXE_PATH = "${STAGING_LIBDIR_NATIVE}/llvm-rust/bin/llvm-config"
|
||||
|
||||
require rust-target.inc
|
||||
|
||||
inherit cross-canadian
|
||||
|
||||
DEPENDS += " \
|
||||
virtual/${HOST_PREFIX}gcc-crosssdk \
|
||||
virtual/nativesdk-libc rust-llvm-native \
|
||||
virtual/${TARGET_PREFIX}compilerlibs \
|
||||
virtual/nativesdk-${HOST_PREFIX}compilerlibs \
|
||||
gcc-cross-${TARGET_ARCH} \
|
||||
"
|
||||
|
||||
# The host tools are likely not to be able to do the necessary operation on
|
||||
# the target architecturea. Alternatively one could check compatibility
|
||||
# between host/target.
|
||||
EXCLUDE_FROM_SHLIBS_${RUSTLIB_TARGET_PN} = "1"
|
||||
|
||||
DEBUG_PREFIX_MAP = "-fdebug-prefix-map=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR} \
|
||||
-fdebug-prefix-map=${STAGING_DIR_HOST}= \
|
||||
-fdebug-prefix-map=${STAGING_DIR_NATIVE}= \
|
||||
"
|
||||
|
||||
LLVM_TARGET[x86_64] = "${RUST_HOST_SYS}"
|
||||
python do_rust_gen_targets () {
|
||||
wd = d.getVar('WORKDIR') + '/targets/'
|
||||
rust_gen_target(d, 'TARGET', wd, d.getVar('TARGET_LLVM_FEATURES') or "", d.getVar('TARGET_LLVM_CPU'), d.getVar('TARGET_ARCH'))
|
||||
rust_gen_target(d, 'HOST', wd, "", "generic", d.getVar('HOST_ARCH'))
|
||||
rust_gen_target(d, 'BUILD', wd, "", "generic", d.getVar('BUILD_ARCH'))
|
||||
}
|
||||
|
||||
INHIBIT_DEFAULT_RUST_DEPS = "1"
|
||||
|
||||
export WRAPPER_TARGET_CC = "${CCACHE}${TARGET_PREFIX}gcc --sysroot=${STAGING_DIR_TARGET} ${TARGET_CC_ARCH} ${SECURITY_NOPIE_CFLAGS}"
|
||||
export WRAPPER_TARGET_CXX = "${CCACHE}${TARGET_PREFIX}g++ --sysroot=${STAGING_DIR_TARGET} ${TARGET_CC_ARCH} ${SECURITY_NOPIE_CFLAGS}"
|
||||
export WRAPPER_TARGET_CCLD = "${TARGET_PREFIX}gcc --sysroot=${STAGING_DIR_TARGET} ${TARGET_CC_ARCH} ${SECURITY_NOPIE_CFLAGS}"
|
||||
export WRAPPER_TARGET_LDFLAGS = "${TARGET_LDFLAGS}"
|
||||
export WRAPPER_TARGET_AR = "${TARGET_PREFIX}ar"
|
||||
|
||||
python do_configure_prepend() {
|
||||
targets = [d.getVar("TARGET_SYS", True), "{}-unknown-linux-gnu".format(d.getVar("HOST_ARCH", True))]
|
||||
hosts = ["{}-unknown-linux-gnu".format(d.getVar("HOST_ARCH", True))]
|
||||
}
|
||||
|
||||
INSANE_SKIP_${RUSTLIB_TARGET_PN} = "file-rdeps arch ldflags"
|
||||
SKIP_FILEDEPS_${RUSTLIB_TARGET_PN} = "1"
|
||||
|
||||
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
|
||||
INHIBIT_PACKAGE_STRIP = "1"
|
||||
INHIBIT_SYSROOT_STRIP = "1"
|
||||
|
||||
78
recipes-devtools/rust/rust-cross-canadian.inc
Normal file
78
recipes-devtools/rust/rust-cross-canadian.inc
Normal file
@@ -0,0 +1,78 @@
|
||||
|
||||
require rust-cross-canadian-common.inc
|
||||
|
||||
RUSTLIB_TARGET_PN = "rust-cross-canadian-rustlib-target-${TRANSLATED_TARGET_ARCH}"
|
||||
RUSTLIB_HOST_PN = "rust-cross-canadian-rustlib-host-${TRANSLATED_TARGET_ARCH}"
|
||||
RUSTLIB_SRC_PN = "rust-cross-canadian-src"
|
||||
RUSTLIB_PKGS = "${RUSTLIB_SRC_PN} ${RUSTLIB_TARGET_PN} ${RUSTLIB_HOST_PN}"
|
||||
PN = "rust-cross-canadian-${TRANSLATED_TARGET_ARCH}"
|
||||
|
||||
PACKAGES = "${RUSTLIB_PKGS} ${PN}"
|
||||
RDEPENDS_${PN} += "${RUSTLIB_PKGS}"
|
||||
|
||||
# The default behaviour of x.py changed in 1.47+ so now we need to
|
||||
# explicitly ask for the stage 2 compiler to be assembled.
|
||||
do_compile () {
|
||||
rust_runx build --stage 2
|
||||
}
|
||||
|
||||
do_install () {
|
||||
# Rust requires /usr/lib to contain the libs.
|
||||
# Similar story is with /usr/bin ruquiring `lib` to be at the same level.
|
||||
# The required structure is retained for simplicity.
|
||||
SYS_LIBDIR=$(dirname ${D}${libdir})
|
||||
SYS_BINDIR=$(dirname ${D}${bindir})
|
||||
RUSTLIB_DIR=${SYS_LIBDIR}/${TARGET_SYS}/rustlib
|
||||
|
||||
install -d "${SYS_BINDIR}"
|
||||
cp build/${SNAPSHOT_BUILD_SYS}/stage2/bin/* ${SYS_BINDIR}
|
||||
for i in ${SYS_BINDIR}/*; do
|
||||
chrpath -r "\$ORIGIN/../lib" ${i}
|
||||
done
|
||||
|
||||
install -d "${D}${libdir}"
|
||||
cp -pRd build/${SNAPSHOT_BUILD_SYS}/stage2/lib/${TARGET_SYS}/*.so ${SYS_LIBDIR}
|
||||
cp -pRd build/${SNAPSHOT_BUILD_SYS}/stage2/lib/${TARGET_SYS}/rustlib ${RUSTLIB_DIR}
|
||||
|
||||
for i in ${SYS_LIBDIR}/*.so; do
|
||||
chrpath -r "\$ORIGIN/../lib" ${i}
|
||||
done
|
||||
for i in ${RUSTLIB_DIR}/*/lib/*.so; do
|
||||
chrpath -d ${i}
|
||||
done
|
||||
|
||||
install -m 0644 "${WORKDIR}/targets/${TARGET_SYS}.json" "${RUSTLIB_DIR}"
|
||||
|
||||
SRC_DIR=${RUSTLIB_DIR}/src/rust
|
||||
install -d ${SRC_DIR}/src/llvm-project
|
||||
cp -R --no-dereference build/${SNAPSHOT_BUILD_SYS}/stage2/lib/rustlib/src/rust/src/llvm-project/libunwind ${SRC_DIR}/src/llvm-project
|
||||
cp -R --no-dereference build/${SNAPSHOT_BUILD_SYS}/stage2/lib/rustlib/src/rust/library ${SRC_DIR}
|
||||
cp --no-dereference build/${SNAPSHOT_BUILD_SYS}/stage2/lib/rustlib/src/rust/Cargo.lock ${SRC_DIR}
|
||||
# Remove executable bit from any files so then SDK doesn't try to relocate.
|
||||
chmod -R -x+X ${SRC_DIR}
|
||||
|
||||
ENV_SETUP_DIR=${D}${base_prefix}/environment-setup.d
|
||||
mkdir "${ENV_SETUP_DIR}"
|
||||
ENV_SETUP_SH="${ENV_SETUP_DIR}/rust.sh"
|
||||
|
||||
cat <<- EOF > "${ENV_SETUP_SH}"
|
||||
export RUSTFLAGS="--sysroot=\$OECORE_NATIVE_SYSROOT/usr -C link-arg=--sysroot=\$OECORE_TARGET_SYSROOT -L\$OECORE_NATIVE_SYSROOT/usr/lib/${TARGET_SYS}/rustlib/${TARGET_SYS}/lib"
|
||||
export RUST_TARGET_PATH="\$OECORE_NATIVE_SYSROOT/usr/lib/${TARGET_SYS}/rustlib"
|
||||
EOF
|
||||
|
||||
chown -R root.root ${D}
|
||||
}
|
||||
|
||||
PKG_SYS_LIBDIR = "${SDKPATHNATIVE}/usr/lib"
|
||||
PKG_SYS_BINDIR = "${SDKPATHNATIVE}/usr/bin"
|
||||
PKG_RUSTLIB_DIR = "${PKG_SYS_LIBDIR}/${TARGET_SYS}/rustlib"
|
||||
FILES_${PN} = "${PKG_SYS_LIBDIR}/*.so ${PKG_SYS_BINDIR} ${base_prefix}/environment-setup.d"
|
||||
FILES_${RUSTLIB_TARGET_PN} = "${PKG_RUSTLIB_DIR}/${TARGET_SYS} ${PKG_RUSTLIB_DIR}/${TARGET_SYS}.json"
|
||||
FILES_${RUSTLIB_HOST_PN} = "${PKG_RUSTLIB_DIR}/${BUILD_ARCH}-unknown-linux-gnu"
|
||||
FILES_${RUSTLIB_SRC_PN} = "${PKG_RUSTLIB_DIR}/src"
|
||||
|
||||
SUMMARY_${RUSTLIB_TARGET_PN} = "Rust cross canadian libaries for ${TARGET_SYS}"
|
||||
SUMMARY_${RUSTLIB_HOST_PN} = "Rust cross canadian libaries for ${HOST_SYS}"
|
||||
SUMMARY_${RUSTLIB_SRC_PN} = "Rust standard library sources for cross canadian toolchain"
|
||||
SUMMARY_${PN} = "Rust crost canadian compiler"
|
||||
|
||||
9
recipes-devtools/rust/rust-cross-canadian_1.49.0.bb
Normal file
9
recipes-devtools/rust/rust-cross-canadian_1.49.0.bb
Normal file
@@ -0,0 +1,9 @@
|
||||
require rust-cross-canadian.inc
|
||||
require rust-source-${PV}.inc
|
||||
require rust-snapshot-${PV}.inc
|
||||
|
||||
FILESEXTRAPATHS_prepend := "${THISDIR}/rust:"
|
||||
|
||||
SRC_URI += " \
|
||||
file://0001-rustc_target-Fix-dash-vs-underscore-mismatches-in-op.patch \
|
||||
"
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user