Compare commits
531 Commits
jethro
...
gatesgarth
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bf6705fb7f | ||
|
|
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 | ||
|
|
84d9d2da0a | ||
|
|
1f18869377 | ||
|
|
65ae954a80 | ||
|
|
0340c31a42 | ||
|
|
d364837120 | ||
|
|
43c139f131 | ||
|
|
487e670b9b | ||
|
|
6083dff0b6 | ||
|
|
03496f658f | ||
|
|
9da0d2f687 | ||
|
|
846454281e | ||
|
|
21224d76a0 | ||
|
|
06cc11b2b4 | ||
|
|
1d0e0e8343 | ||
|
|
634498e0ac | ||
|
|
ba428c19bf | ||
|
|
972fbd4582 | ||
|
|
5983744d01 | ||
|
|
95fa6c92a9 | ||
|
|
e414321228 | ||
|
|
07069a1869 | ||
|
|
5985331f33 | ||
|
|
98472fd232 | ||
|
|
f87bb05414 | ||
|
|
2ffd11b9fe | ||
|
|
1bf70b13a7 | ||
|
|
20ac8ea888 | ||
|
|
a387a5fe8f | ||
|
|
689dfe8004 | ||
|
|
864fe95722 | ||
|
|
168396820d | ||
|
|
c9a4db15ea | ||
|
|
3d70f56ae7 | ||
|
|
f4573d9c44 | ||
|
|
c72c88be92 | ||
|
|
7d6fede8ef | ||
|
|
311ea03c1f | ||
|
|
61093e260f | ||
|
|
dfa7dc1bad | ||
|
|
5afc0cc471 | ||
|
|
4e1bda643e | ||
|
|
c98312fd1d | ||
|
|
f366cff864 | ||
|
|
0827bc626b | ||
|
|
b828ccaefe | ||
|
|
19cdae76b8 | ||
|
|
87f67e6d86 | ||
|
|
f748246cae | ||
|
|
d91d726db6 | ||
|
|
957ede76f8 | ||
|
|
5d60f12957 | ||
|
|
0b6b45fbca | ||
|
|
7645b9b331 | ||
|
|
0c266200ad | ||
|
|
d2373244b8 | ||
|
|
0530d30808 | ||
|
|
e4d37ce4f1 | ||
|
|
82bf763c76 | ||
|
|
489fe195e0 | ||
|
|
ed62ea5176 | ||
|
|
8673659f6a | ||
|
|
75f4549859 | ||
|
|
91319e80f8 | ||
|
|
d0663639a0 | ||
|
|
3b28ddab2b | ||
|
|
404cbe3dcc | ||
|
|
ea888066a3 | ||
|
|
e0e7b6cefe | ||
|
|
ae7122c7e6 | ||
|
|
ce9949725c | ||
|
|
bef7c3f07e | ||
|
|
8f809476c0 | ||
|
|
ea040ab01d | ||
|
|
101e818ec5 | ||
|
|
6db046c19d | ||
|
|
e77fbb7f08 | ||
|
|
a97f66224a | ||
|
|
2536080e0b | ||
|
|
1f903865b4 | ||
|
|
7f7b3cd652 | ||
|
|
a1ca1ed06d | ||
|
|
c5b53736b7 | ||
|
|
d716587c26 | ||
|
|
1622af812d | ||
|
|
52cbdd3b24 | ||
|
|
a2c1575132 | ||
|
|
8262f3ac0f | ||
|
|
bf2c4ada41 | ||
|
|
39fd00119c | ||
|
|
1436b99692 | ||
|
|
3b954b38d1 | ||
|
|
41800bdd99 | ||
|
|
9b8d884d6b | ||
|
|
45d540de36 | ||
|
|
1cb0b64537 | ||
|
|
4eb46035c5 | ||
|
|
a78d470ed2 | ||
|
|
237a22fd17 | ||
|
|
e47bf14904 | ||
|
|
79166b9cf0 | ||
|
|
34f213d162 | ||
|
|
2247ad36aa | ||
|
|
fbf59ed6a0 | ||
|
|
e87b2d43b0 | ||
|
|
f31f0c2257 | ||
|
|
1059968d25 | ||
|
|
cb753fc536 | ||
|
|
6902ea276a | ||
|
|
8af5d4f7e9 | ||
|
|
08ac2819f8 | ||
|
|
f89057c0af | ||
|
|
0c54b5727f | ||
|
|
11f0c95763 | ||
|
|
c6ea2fe285 | ||
|
|
c8e2b6166e | ||
|
|
56ac849771 | ||
|
|
df07899855 | ||
|
|
f6c7789c95 | ||
|
|
e2d09d0362 | ||
|
|
e3140137e5 | ||
|
|
d320edc05f | ||
|
|
00429e037b | ||
|
|
da71abbef1 | ||
|
|
12725a2247 | ||
|
|
8d6c809833 | ||
|
|
cc5832d4be | ||
|
|
c4a8abed21 | ||
|
|
62b3ed7895 | ||
|
|
c5978989a7 | ||
|
|
21c12a3c3b | ||
|
|
9864e47b14 | ||
|
|
44bc6fd31f | ||
|
|
5eeb74ed5e | ||
|
|
1df6619559 | ||
|
|
02962e7c70 | ||
|
|
0a1d85272d | ||
|
|
3d0fab8860 | ||
|
|
b708837c7c | ||
|
|
ec3cbddb38 | ||
|
|
af571adabe | ||
|
|
b2e6f98f3e | ||
|
|
15bb60780a | ||
|
|
344fd5eec5 | ||
|
|
8dae8b4f85 | ||
|
|
487205331b | ||
|
|
64074c9e55 | ||
|
|
7c494d94f0 | ||
|
|
03b4c9086e | ||
|
|
7519c8a6b3 | ||
|
|
01f7eb256b | ||
|
|
b139bbc514 | ||
|
|
0992dbb4bc | ||
|
|
210642776c | ||
|
|
46cb45b44d | ||
|
|
e83b706e8e | ||
|
|
1f42bdc679 | ||
|
|
fc9645c15b | ||
|
|
69dd8a8ee3 | ||
|
|
1878ee9a1e | ||
|
|
095b0be0a6 | ||
|
|
8ceb6a47d5 | ||
|
|
2814eb8764 | ||
|
|
a67fbf2223 | ||
|
|
49d94ef0a7 | ||
|
|
d947c2e40e | ||
|
|
85471f88e5 | ||
|
|
d3ee1e59b6 | ||
|
|
1b78a65885 | ||
|
|
310cc353a1 | ||
|
|
5b451ec4af | ||
|
|
27ff9aea20 | ||
|
|
1f17e68d1e | ||
|
|
243fdbd72d | ||
|
|
4e6b8b4eca | ||
|
|
498ad2a6b9 | ||
|
|
8e0b263733 | ||
|
|
395cde5819 | ||
|
|
75c20f0bbc | ||
|
|
7b05b9c7f0 | ||
|
|
a74985c341 | ||
|
|
18c946267e | ||
|
|
9a0ea9bf40 | ||
|
|
8fe8fc5b7b | ||
|
|
d477a68dba | ||
|
|
fe8b755da0 | ||
|
|
825bf74a2e | ||
|
|
5ced950596 | ||
|
|
b13e266124 | ||
|
|
ba16b5c39e | ||
|
|
2fb76952f7 | ||
|
|
0fb90a149c | ||
|
|
95af734ac1 | ||
|
|
8f25a92000 | ||
|
|
91b165427c | ||
|
|
5f701adec8 | ||
|
|
8982df0b5c | ||
|
|
d749cbb98a | ||
|
|
f13ac9d48a | ||
|
|
61d0ab2b9e | ||
|
|
a8cd882676 | ||
|
|
a5bb44819d | ||
|
|
66c8aef3f2 | ||
|
|
347947db41 |
9
.github/ISSUE_TEMPLATE.md
vendored
Normal file
9
.github/ISSUE_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
## Version(s) of meta-rust
|
||||
|
||||
## Version(s) of poky and/or oe-core
|
||||
|
||||
## Expected result
|
||||
|
||||
## Actual result
|
||||
|
||||
## Steps to reproduce
|
||||
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.3.2
|
||||
YOCTO_BRANCH: hardknott
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
path: 'meta-rust'
|
||||
- name: Fetch poky
|
||||
run: |
|
||||
mv poky/build/sstate-cache . || true
|
||||
rm -rf poky meta-openembedded
|
||||
git clone -b $YOCTO_BRANCH --single-branch git://git.yoctoproject.org/poky
|
||||
git clone -b $YOCTO_BRANCH --single-branch git://git.openembedded.org/meta-openembedded
|
||||
- name: Configure build
|
||||
run: |
|
||||
cd poky
|
||||
. oe-init-build-env
|
||||
mv ../../sstate-cache . || true
|
||||
bitbake-layers add-layer ../../meta-openembedded/meta-oe
|
||||
bitbake-layers add-layer ../../meta-rust
|
||||
echo 'PARALLEL_MAKE:pn-rust-llvm-native = "-j2"' >> conf/local.conf
|
||||
echo 'TOOLCHAIN_HOST_TASK:append = " packagegroup-rust-cross-canadian-${MACHINE}"' >> conf/local.conf
|
||||
echo "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)
|
||||
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
*.pyc
|
||||
build/
|
||||
poky/
|
||||
39
Jenkinsfile
vendored
Normal file
39
Jenkinsfile
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
def targets = [ 'qemux86', 'qemux86-64', 'qemuarm', 'qemuarm64', 'qemumips' ]
|
||||
|
||||
def machine_builds = [:]
|
||||
|
||||
for (int i = 0; i < targets.size(); i++) {
|
||||
def machine = targets.get(i)
|
||||
|
||||
machine_builds["$machine"] = {
|
||||
node {
|
||||
try {
|
||||
stage("checkout $machine") {
|
||||
checkout scm
|
||||
}
|
||||
stage("setup-env $machine") {
|
||||
sh "./scripts/setup-env.sh"
|
||||
}
|
||||
stage("fetch $machine") {
|
||||
sh "GIT_LOCAL_REF_DIR=/srv/git-cache/ ./scripts/fetch.sh master"
|
||||
}
|
||||
stage("build $machine") {
|
||||
sh "MACHINE=${machine} ./scripts/build.sh"
|
||||
}
|
||||
} catch (e) {
|
||||
echo "Caught: ${e}"
|
||||
throw e
|
||||
} finally {
|
||||
stage("push build cache $machine") {
|
||||
sh "./scripts/publish-build-cache.sh master"
|
||||
}
|
||||
stage("cleanup $machine") {
|
||||
sh "./scripts/cleanup-env.sh"
|
||||
deleteDir()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
parallel machine_builds
|
||||
65
README.md
65
README.md
@@ -1,68 +1,67 @@
|
||||
## Introduction
|
||||
|
||||
This openembedded layer provides the rust compiler, tools for building packages
|
||||
This OpenEmbedded layer provides the rust compiler, tools for building packages
|
||||
(cargo), and a few example projects.
|
||||
|
||||
## What works:
|
||||
|
||||
- MACHINE="beaglebone" (TARGET_SYS=arm-poky-linux-gnueabi)
|
||||
- Building rust-native, rust-cross, rust-hello-world, cargo-native
|
||||
- Running/using all of these (including rust-hello-world)
|
||||
- Building `rust-native` and `cargo-native`
|
||||
- Building Rust based projects with Cargo for the TARGET
|
||||
- e.g. `rustfmt` which is used by the CI system
|
||||
- `-buildsdk` and `-crosssdk` packages
|
||||
|
||||
## What doesn't:
|
||||
|
||||
- Probably some of the untested things
|
||||
- Using anything but x86_64 as the build environment
|
||||
- rust (built for target) [issue #81](https://github.com/meta-rust/meta-rust/issues/81)
|
||||
|
||||
## What's untested:
|
||||
|
||||
- rust (built for target)
|
||||
- Other TARGETs
|
||||
- cargo (built for target)
|
||||
|
||||
## Common issues when packaging things using cargo
|
||||
## Building a rust package
|
||||
|
||||
You may run into errors similar to:
|
||||
When building a rust package in bitbake, it's usually easiest to build with
|
||||
cargo using cargo.bbclass. If the package already has a Cargo.toml file (most
|
||||
rust packages do), then it's especially easy. Otherwise you should probably
|
||||
get the code building in cargo first.
|
||||
|
||||
```
|
||||
| src/lib.rs:12:1: 12:35 error: can't find crate for `ffi`
|
||||
| src/lib.rs:12 extern crate "openssl-sys" as ffi;
|
||||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
```
|
||||
Once your package builds in cargo, you can use
|
||||
[cargo-bitbake](https://github.com/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.
|
||||
|
||||
Where a "-sys" crate (or other crate) is not found. These are typically caused
|
||||
by a crate's Cargo.toml including triplet-specific dependencies and then using
|
||||
the crate based on a feature (most often, `#[cfg(unix)]`). Until cargo and it's
|
||||
ecosystem get their act together, you'll need to supply patches to the
|
||||
misbehaving packages. See `recipies/cargo/cargo_*.bb` for an example of how to
|
||||
do this.
|
||||
NOTE: You will have to edit the generated recipe based on the comments
|
||||
contained within it
|
||||
|
||||
## TODO
|
||||
|
||||
- -crosssdk and -buildsdk packages
|
||||
- Upstream local rustc patches for libdir and bindir support
|
||||
- add bitbake fetch support for crates.io
|
||||
- add required cargo package registry clones in SRC_URI to prevent the need
|
||||
for network when building.
|
||||
|
||||
## Pitfalls
|
||||
|
||||
- TARGET_SYS _must_ be different from BUILD_SYS. This is due to the way configuration options are tracked for different targets.
|
||||
- TARGET_SYS _must_ be different from BUILD_SYS. This is due to the way Rust configuration options are tracked for different targets. This is the reason we use the Yocto triples instead of the native Rust triples. See [rust-lang/cargo#3349](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
|
||||
|
||||
Open a Pull Request.
|
||||
|
||||
Generally, I try to support the latest master of poky. I'm happy to support
|
||||
older versions too by applying backwards compat patches as long as I don't need
|
||||
to maintain a seperate branch. Of course, others are welcome to create forks to
|
||||
support their individual needs.
|
||||
The master branch supports the latest master of poky. When poky creates releases, we will create a branch with the same name as the poky release. This release branch should always work with that poky release. Note that these release branches will typically be less tested than the master branch.
|
||||
|
||||
All new patches against rust, rust-llvm, and cargo must have referenced
|
||||
upstream issues or PRs opened or an explanation why the patch cannot be
|
||||
upstreamed. This cooresponds to the OpenEmbedded policy for other meta layers.
|
||||
|
||||
More info can be seen on the wiki.
|
||||
|
||||
## Copyright
|
||||
|
||||
|
||||
@@ -1,116 +1,89 @@
|
||||
inherit rust
|
||||
##
|
||||
## Purpose:
|
||||
## This class is used by any recipes that are built using
|
||||
## Cargo.
|
||||
|
||||
CARGO ?= "cargo"
|
||||
export CARGO_HOME = "${WORKDIR}/cargo_home"
|
||||
inherit cargo_common
|
||||
|
||||
def cargo_base_dep(d):
|
||||
deps = ""
|
||||
if not d.getVar('INHIBIT_DEFAULT_DEPS', True) and not d.getVar('INHIBIT_CARGO_DEP', True):
|
||||
deps += " cargo-native"
|
||||
return deps
|
||||
# the binary we will use
|
||||
CARGO = "cargo"
|
||||
|
||||
BASEDEPENDS_append = " ${@cargo_base_dep(d)}"
|
||||
# We need cargo to compile for the target
|
||||
BASEDEPENDS:append = " cargo-native"
|
||||
|
||||
# FIXME: this is a workaround for a misbehavior in cargo when used with quilt.
|
||||
# See https://github.com/rust-lang/cargo/issues/978
|
||||
PATCHTOOL = "patch"
|
||||
|
||||
# Cargo only supports in-tree builds at the moment
|
||||
B = "${S}"
|
||||
# Ensure we get the right rust variant
|
||||
DEPENDS:append:class-target = " virtual/${TARGET_PREFIX}rust ${RUSTLIB_DEP}"
|
||||
DEPENDS:append:class-native = " rust-native"
|
||||
|
||||
# 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 ??= ""
|
||||
|
||||
EXTRA_OECARGO_PATHS ??= ""
|
||||
# The actual path to the Cargo.toml
|
||||
MANIFEST_PATH ??= "${S}/${CARGO_SRC_DIR}/Cargo.toml"
|
||||
|
||||
cargo_do_configure () {
|
||||
# FIXME: we currently make a mess in the directory above us
|
||||
# (${WORKDIR}), which may not be ideal. Look into whether this is
|
||||
# allowed
|
||||
mkdir -p ../.cargo
|
||||
# NOTE: we cannot pass more flags via this interface, the 'linker' is
|
||||
# assumed to be a path to a binary. If flags are needed, a wrapper must
|
||||
# be used.
|
||||
echo "paths = [" >../.cargo/config
|
||||
|
||||
for p in ${EXTRA_OECARGO_PATHS}; do
|
||||
printf "\"%s\"\n" "$p"
|
||||
done | sed -e 's/$/,/' >>../.cargo/config
|
||||
echo "]" >>../.cargo/config
|
||||
}
|
||||
|
||||
rust_cargo_patch () {
|
||||
# FIXME: if there is already an entry for this target, in an existing
|
||||
# cargo/config, this won't work.
|
||||
cd "${S}"
|
||||
cat >>Cargo.toml <<EOF
|
||||
[profile.dev]
|
||||
rpath = true
|
||||
[profile.release]
|
||||
rpath = true
|
||||
EOF
|
||||
}
|
||||
|
||||
# All the rust & cargo ecosystem assume that CC, LD, etc are a path to a single
|
||||
# command. Fixup the ones we give it so that is the case.
|
||||
# XXX: this is hard coded based on meta/conf/bitbake.conf
|
||||
# TODO: we do quite a bit very similar to this in rust.inc, see if it can be
|
||||
# generalized.
|
||||
export RUST_CC = "${CCACHE}${HOST_PREFIX}gcc"
|
||||
export RUST_CFLAGS = "${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} ${CFLAGS}"
|
||||
export RUST_BUILD_CC = "${CCACHE}${BUILD_PREFIX}gcc"
|
||||
export RUST_BUILD_CFLAGS = "${BUILD_CC_ARCH} ${BUILD_CFLAGS}"
|
||||
|
||||
export CARGO_BUILD_FLAGS = "-v --target ${HOST_SYS} --release"
|
||||
RUSTFLAGS ??= ""
|
||||
BUILD_MODE = "${@['--release', ''][d.getVar('DEBUG_BUILD') == '1']}"
|
||||
CARGO_BUILD_FLAGS = "-v --target ${HOST_SYS} ${BUILD_MODE} --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.
|
||||
export CARGO_TARGET_SUBDIR="${HOST_SYS}/release"
|
||||
BUILD_DIR = "${@['release', 'debug'][d.getVar('DEBUG_BUILD') == '1']}"
|
||||
CARGO_TARGET_SUBDIR="${HOST_SYS}/${BUILD_DIR}"
|
||||
oe_cargo_build () {
|
||||
which cargo
|
||||
which rustc
|
||||
bbnote ${CARGO} build ${CARGO_BUILD_FLAGS} "$@"
|
||||
export RUSTFLAGS="${RUSTFLAGS}"
|
||||
export RUST_TARGET_PATH="${RUST_TARGET_PATH}"
|
||||
bbnote "cargo = $(which ${CARGO})"
|
||||
bbnote "rustc = $(which ${RUSTC})"
|
||||
bbnote "${CARGO} build ${CARGO_BUILD_FLAGS} $@"
|
||||
"${CARGO}" build ${CARGO_BUILD_FLAGS} "$@"
|
||||
}
|
||||
|
||||
oe_cargo_fix_env () {
|
||||
export CC="${RUST_CC}"
|
||||
export CFLAGS="${RUST_CFLAGS}"
|
||||
export AR="${AR}"
|
||||
export TARGET_CC="${RUST_CC}"
|
||||
export TARGET_CFLAGS="${RUST_CFLAGS}"
|
||||
export TARGET_AR="${AR}"
|
||||
export HOST_CC="${RUST_BUILD_CC}"
|
||||
export HOST_CFLAGS="${RUST_BUILD_CFLAGS}"
|
||||
export HOST_AR="${BUILD_AR}"
|
||||
}
|
||||
|
||||
do_compile[progress] = "outof:\s+(\d+)/(\d+)"
|
||||
cargo_do_compile () {
|
||||
cd "${B}"
|
||||
oe_cargo_fix_env
|
||||
oe_cargo_build
|
||||
}
|
||||
|
||||
# All but the most simple projects will need to override this.
|
||||
cargo_do_install () {
|
||||
local have_installed=false
|
||||
install -d "${D}${bindir}"
|
||||
for tgt in "${B}/target/${CARGO_TARGET_SUBDIR}/"*; do
|
||||
if [ -f "$tgt" ] && [ -x "$tgt" ]; then
|
||||
install -m755 "$tgt" "${D}${bindir}"
|
||||
case $tgt in
|
||||
*.so|*.rlib)
|
||||
install -d "${D}${rustlibdir}"
|
||||
install -m755 "$tgt" "${D}${rustlibdir}"
|
||||
have_installed=true
|
||||
fi
|
||||
;;
|
||||
*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_compile do_install do_configure
|
||||
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
|
||||
13
classes/crate-fetch.bbclass
Normal file
13
classes/crate-fetch.bbclass
Normal file
@@ -0,0 +1,13 @@
|
||||
#
|
||||
# crate-fetch class
|
||||
#
|
||||
# Registers 'crate' method for Bitbake fetch2.
|
||||
#
|
||||
# Adds support for following format in recipe SRC_URI:
|
||||
# crate://<packagename>/<version>
|
||||
#
|
||||
|
||||
python () {
|
||||
import crate
|
||||
bb.fetch2.methods.append( crate.Crate() )
|
||||
}
|
||||
@@ -1,16 +1,8 @@
|
||||
inherit rust
|
||||
|
||||
RUSTLIB_DEP ?= " rustlib"
|
||||
DEPENDS .= "${RUSTLIB_DEP}"
|
||||
RDEPENDS_${PN} .= "${RUSTLIB_DEP}"
|
||||
DEPENDS += "patchelf-native"
|
||||
RDEPENDS:${PN}:append:class-target = " ${RUSTLIB_DEP}"
|
||||
|
||||
export rustlibdir = "${libdir}/rust"
|
||||
FILES_${PN} += "${rustlibdir}/*.so"
|
||||
FILES_${PN}-dev += "${rustlibdir}/*.rlib"
|
||||
FILES_${PN}-dbg += "${rustlibdir}/.debug"
|
||||
|
||||
RUSTC_ARCHFLAGS += "-C opt-level=3 -g -L ${STAGING_DIR_HOST}/${rustlibdir}"
|
||||
RUSTC_ARCHFLAGS += "-C opt-level=3 -g -L ${STAGING_DIR_HOST}/${rustlibdir} -C linker=${RUST_TARGET_CCLD}"
|
||||
EXTRA_OEMAKE += 'RUSTC_ARCHFLAGS="${RUSTC_ARCHFLAGS}"'
|
||||
|
||||
# Some libraries alias with the standard library but libstd is configured to
|
||||
@@ -23,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)
|
||||
@@ -34,20 +26,54 @@ OVERLAP_DEPS = "${@get_overlap_deps(d)}"
|
||||
|
||||
# Prevents multiple static copies of standard library modules
|
||||
# See https://github.com/rust-lang/rust/issues/19680
|
||||
RUSTC_FLAGS += "-C prefer-dynamic"
|
||||
RUSTC_PREFER_DYNAMIC = "-C prefer-dynamic"
|
||||
RUSTC_FLAGS += "${RUSTC_PREFER_DYNAMIC}"
|
||||
|
||||
rustlib_suffix="${TUNE_ARCH}${TARGET_VENDOR}-${TARGET_OS}/rustlib/${HOST_SYS}/lib"
|
||||
# Native sysroot standard library path
|
||||
rustlib_src="${prefix}/lib/${rustlib_suffix}"
|
||||
# Host sysroot standard library path
|
||||
rustlib="${libdir}/${rustlib_suffix}"
|
||||
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
|
||||
@@ -66,18 +92,23 @@ get_overlap_externs () {
|
||||
do_configure () {
|
||||
}
|
||||
|
||||
oe_runrustc () {
|
||||
export RUST_TARGET_PATH="${RUST_TARGET_PATH}"
|
||||
bbnote ${RUSTC} ${RUSTC_ARCHFLAGS} ${RUSTC_FLAGS} "$@"
|
||||
"${RUSTC}" ${RUSTC_ARCHFLAGS} ${RUSTC_FLAGS} "$@"
|
||||
}
|
||||
|
||||
oe_compile_rust_lib () {
|
||||
[ "${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} \
|
||||
"$@"
|
||||
}
|
||||
@@ -85,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() {
|
||||
@@ -106,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"
|
||||
|
||||
|
||||
174
classes/rust-common.bbclass
Normal file
174
classes/rust-common.bbclass
Normal file
@@ -0,0 +1,174 @@
|
||||
# Common variables used by all Rust builds
|
||||
export rustlibdir = "${libdir}/rust"
|
||||
FILES:${PN} += "${rustlibdir}/*.so"
|
||||
FILES:${PN}-dev += "${rustlibdir}/*.rlib ${rustlibdir}/*.rmeta"
|
||||
FILES:${PN}-dbg += "${rustlibdir}/.debug"
|
||||
|
||||
RUSTLIB = "-L ${STAGING_LIBDIR}/rust"
|
||||
RUST_DEBUG_REMAP = "--remap-path-prefix=${WORKDIR}=/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}"
|
||||
RUSTFLAGS += "${RUSTLIB} ${RUST_DEBUG_REMAP}"
|
||||
RUSTLIB_DEP ?= "libstd-rs"
|
||||
RUST_TARGET_PATH = "${STAGING_LIBDIR_NATIVE}/rustlib"
|
||||
RUST_PANIC_STRATEGY ?= "unwind"
|
||||
|
||||
# Native builds are not effected by TCLIBC. Without this, rust-native
|
||||
# thinks it's "target" (i.e. x86_64-linux) is a musl target.
|
||||
RUST_LIBC = "${TCLIBC}"
|
||||
RUST_LIBC:class-native = "glibc"
|
||||
|
||||
def determine_libc(d, thing):
|
||||
'''Determine which libc something should target'''
|
||||
|
||||
# BUILD is never musl, TARGET may be musl or glibc,
|
||||
# HOST could be musl, but only if a compiler is built to be run on
|
||||
# target in which case HOST_SYS != BUILD_SYS.
|
||||
if thing == 'TARGET':
|
||||
libc = d.getVar('RUST_LIBC')
|
||||
elif thing == 'BUILD' and (d.getVar('HOST_SYS') != d.getVar('BUILD_SYS')):
|
||||
libc = d.getVar('RUST_LIBC')
|
||||
else:
|
||||
libc = d.getVar('RUST_LIBC:class-native')
|
||||
|
||||
return libc
|
||||
|
||||
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
|
||||
rust/mk/cfg/* for a list)
|
||||
|
||||
Note that os is assumed to be some linux form
|
||||
'''
|
||||
|
||||
# The llvm-target for armv7 is armv7-unknown-linux-gnueabihf
|
||||
if thing == "TARGET" and target_is_armv7(d):
|
||||
arch = "armv7"
|
||||
else:
|
||||
arch = d.getVar('{}_ARCH'.format(thing))
|
||||
|
||||
# All the Yocto targets are Linux and are 'unknown'
|
||||
vendor = "-unknown"
|
||||
os = d.getVar('{}_OS'.format(thing))
|
||||
libc = determine_libc(d, thing)
|
||||
|
||||
# Prefix with a dash and convert glibc -> gnu
|
||||
if libc == "glibc":
|
||||
libc = "-gnu"
|
||||
elif libc == "musl":
|
||||
libc = "-musl"
|
||||
|
||||
# Don't double up musl (only appears to be the case on aarch64)
|
||||
if os == "linux-musl":
|
||||
if libc != "-musl":
|
||||
bb.fatal("{}_OS was '{}' but TCLIBC was not 'musl'".format(thing, os))
|
||||
os = "linux"
|
||||
|
||||
# This catches ARM targets and appends the necessary hard float bits
|
||||
if os == "linux-gnueabi" or os == "linux-musleabi":
|
||||
libc = bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'hf', '', d)
|
||||
return arch + vendor + '-' + os + libc
|
||||
|
||||
# Naming explanation
|
||||
# Yocto
|
||||
# - BUILD_SYS - Yocto triple of the build environment
|
||||
# - HOST_SYS - What we're building for in Yocto
|
||||
# - TARGET_SYS - What we're building for in Yocto
|
||||
#
|
||||
# So when building '-native' packages BUILD_SYS == HOST_SYS == TARGET_SYS
|
||||
# When building packages for the image HOST_SYS == TARGET_SYS
|
||||
# This is a gross over simplification as there are other modes but
|
||||
# currently this is all that's supported.
|
||||
#
|
||||
# Rust
|
||||
# - TARGET - the system where the binary will run
|
||||
# - HOST - the system where the binary is being built
|
||||
#
|
||||
# Rust additionally will use two additional cases:
|
||||
# - undecorated (e.g. CC) - equivalent to TARGET
|
||||
# - triple suffix (e.g. CC:x86_64_unknown_linux_gnu) - both
|
||||
# see: https://github.com/alexcrichton/gcc-rs
|
||||
# The way that Rust's internal triples and Yocto triples are mapped together
|
||||
# its likely best to not use the triple suffix due to potential confusion.
|
||||
|
||||
RUST_BUILD_SYS = "${@rust_base_triple(d, 'BUILD')}"
|
||||
RUST_HOST_SYS = "${@rust_base_triple(d, 'HOST')}"
|
||||
RUST_TARGET_SYS = "${@rust_base_triple(d, 'TARGET')}"
|
||||
|
||||
# wrappers to get around the fact that Rust needs a single
|
||||
# binary but Yocto's compiler and linker commands have
|
||||
# arguments. Technically the archiver is always one command but
|
||||
# this is necessary for builds that determine the prefix and then
|
||||
# use those commands based on the prefix.
|
||||
WRAPPER_DIR = "${WORKDIR}/wrapper"
|
||||
RUST_BUILD_CC = "${WRAPPER_DIR}/build-rust-cc"
|
||||
RUST_BUILD_CXX = "${WRAPPER_DIR}/build-rust-cxx"
|
||||
RUST_BUILD_CCLD = "${WRAPPER_DIR}/build-rust-ccld"
|
||||
RUST_BUILD_AR = "${WRAPPER_DIR}/build-rust-ar"
|
||||
RUST_TARGET_CC = "${WRAPPER_DIR}/target-rust-cc"
|
||||
RUST_TARGET_CXX = "${WRAPPER_DIR}/target-rust-cxx"
|
||||
RUST_TARGET_CCLD = "${WRAPPER_DIR}/target-rust-ccld"
|
||||
RUST_TARGET_AR = "${WRAPPER_DIR}/target-rust-ar"
|
||||
|
||||
create_wrapper () {
|
||||
file="$1"
|
||||
shift
|
||||
|
||||
cat <<- EOF > "${file}"
|
||||
#!/bin/sh
|
||||
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 C compiler
|
||||
create_wrapper "${RUST_BUILD_CC}" "${BUILD_CC}"
|
||||
# Yocto Build / Rust Host C++ compiler
|
||||
create_wrapper "${RUST_BUILD_CXX}" "${BUILD_CXX}"
|
||||
# Yocto Build / Rust Host linker
|
||||
create_wrapper "${RUST_BUILD_CCLD}" "${BUILD_CCLD}" "${BUILD_LDFLAGS}"
|
||||
# Yocto Build / Rust Host archiver
|
||||
create_wrapper "${RUST_BUILD_AR}" "${BUILD_AR}"
|
||||
|
||||
# Yocto Target / Rust Target C compiler
|
||||
create_wrapper "${RUST_TARGET_CC}" "${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}" "${WRAPPER_TARGET_CCLD}" "${WRAPPER_TARGET_LDFLAGS}"
|
||||
# Yocto Target / Rust Target archiver
|
||||
create_wrapper "${RUST_TARGET_AR}" "${WRAPPER_TARGET_AR}"
|
||||
|
||||
}
|
||||
|
||||
addtask rust_create_wrappers before do_configure after do_patch
|
||||
do_rust_create_wrappers[dirs] += "${WRAPPER_DIR}"
|
||||
@@ -1,15 +0,0 @@
|
||||
# Rust installer isn't very nice and drops a bunch of junk in our filesystem,
|
||||
# clean it up after the install.
|
||||
|
||||
rust_installer_do_install () {
|
||||
rm ${D}/${libdir}/rustlib/install.log
|
||||
rm ${D}/${libdir}/rustlib/rust-installer-version
|
||||
rm ${D}/${libdir}/rustlib/uninstall.sh
|
||||
rm ${D}/${libdir}/rustlib/components
|
||||
}
|
||||
|
||||
do_install_append () {
|
||||
rust_installer_do_install
|
||||
}
|
||||
|
||||
EXPORT_FUNCTIONS rust_installer_do_install
|
||||
@@ -1,50 +1,21 @@
|
||||
inherit rust-common
|
||||
|
||||
RUSTC = "rustc"
|
||||
|
||||
# FIXME: --sysroot might be needed
|
||||
RUSTC_ARCHFLAGS += "--target=${TARGET_SYS} -C rpath -C crate_hash=${BB_TASKHASH}"
|
||||
RUSTC_ARCHFLAGS += "--target=${HOST_SYS} ${RUSTFLAGS}"
|
||||
|
||||
def rust_base_dep(d):
|
||||
# Taken from meta/classes/base.bbclass `base_dep_prepend` and modified to
|
||||
# use rust instead of gcc
|
||||
deps = ""
|
||||
if not d.getVar('INHIBIT_DEFAULT_RUST_DEPS', True):
|
||||
if (d.getVar('HOST_SYS', True) != d.getVar('BUILD_SYS', True)):
|
||||
deps += " virtual/${TARGET_PREFIX}rust"
|
||||
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"
|
||||
return deps
|
||||
|
||||
DEPENDS_append = " ${@rust_base_dep(d)}"
|
||||
|
||||
def rust_base_triple(d, thing):
|
||||
'''
|
||||
Mangle bitbake's *_SYS into something that rust might support (see
|
||||
rust/mk/cfg/* for a list)
|
||||
|
||||
Note that os is assumed to be some linux form
|
||||
'''
|
||||
|
||||
arch = d.getVar('{}_ARCH'.format(thing), True)
|
||||
vendor = d.getVar('{}_VENDOR'.format(thing), True)
|
||||
os = d.getVar('{}_OS'.format(thing), True)
|
||||
|
||||
vendor = "-unknown"
|
||||
|
||||
if arch.startswith("arm"):
|
||||
if os.endswith("gnueabi"):
|
||||
os += bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'hf', '', d)
|
||||
elif arch.startswith("aarch64"):
|
||||
os = "linux-gnu"
|
||||
elif arch.startswith("x86_64"):
|
||||
os = "linux-gnu"
|
||||
elif arch.startswith("i586"):
|
||||
arch = "i686"
|
||||
os = "linux-gnu"
|
||||
return arch + vendor + '-' + os
|
||||
|
||||
RUST_BUILD_SYS = "${@rust_base_triple(d, 'BUILD')}"
|
||||
RUST_HOST_SYS = "${@rust_base_triple(d, 'HOST')}"
|
||||
RUST_TARGET_SYS = "${@rust_base_triple(d, 'TARGET')}"
|
||||
DEPENDS:append = " ${@rust_base_dep(d)}"
|
||||
|
||||
# BUILD_LDFLAGS
|
||||
# ${STAGING_LIBDIR_NATIVE}
|
||||
@@ -59,23 +30,6 @@ RUST_TARGET_SYS = "${@rust_base_triple(d, 'TARGET')}"
|
||||
# -L${STAGING_BASE_LIBDIR_NATIVE} \
|
||||
#"
|
||||
|
||||
RUST_PATH_NATIVE = "${STAGING_LIBDIR_NATIVE}:${STAGING_BASE_LIBDIR_NATIVE}"
|
||||
|
||||
## Note: the 'rustlib' element of this was a workaround rustc forgetting the
|
||||
## libdir it was built with. It now remembers so this should be unneeded
|
||||
#RUST_PATH_NATIVE .= ":${STAGING_LIBDIR_NATIVE}/${TARGET_SYS}/rustlib/${TARGET_SYS}/lib"
|
||||
|
||||
# FIXME: set based on whether we are native vs cross vs buildsdk, etc
|
||||
#export RUST_PATH ??= "${RUST_PATH_NATIVE}"
|
||||
|
||||
## This is builtin to rustc with the value "$libdir/rust/targets"
|
||||
# RUST_TARGET_PATH = "foo:bar"
|
||||
|
||||
oe_runrustc () {
|
||||
bbnote ${RUSTC} ${RUSTC_ARCHFLAGS} ${RUSTC_FLAGS} "$@"
|
||||
"${RUSTC}" ${RUSTC_ARCHFLAGS} ${RUSTC_FLAGS} "$@"
|
||||
}
|
||||
|
||||
# XXX: for some reason bitbake sets BUILD_* & TARGET_* but uses the bare
|
||||
# variables for HOST. Alias things to make it easier for us.
|
||||
HOST_LDFLAGS ?= "${LDFLAGS}"
|
||||
@@ -83,4 +37,9 @@ HOST_CFLAGS ?= "${CFLAGS}"
|
||||
HOST_CXXFLAGS ?= "${CXXFLAGS}"
|
||||
HOST_CPPFLAGS ?= "${CPPFLAGS}"
|
||||
|
||||
EXTRA_OECONF_remove = "--disable-static"
|
||||
rustlib_suffix="${TUNE_ARCH}${TARGET_VENDOR}-${TARGET_OS}/rustlib/${HOST_SYS}/lib"
|
||||
# Native sysroot standard library path
|
||||
rustlib_src="${prefix}/lib/${rustlib_suffix}"
|
||||
# Host sysroot standard library path
|
||||
rustlib="${libdir}/${rustlib_suffix}"
|
||||
rustlib:class-native="${libdir}/rustlib/${BUILD_SYS}/lib"
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
# In order to share the same source between multiple packages (.bb files), we
|
||||
# unpack and patch the X source here into a shared dir.
|
||||
#
|
||||
# Take a look at gcc-source.inc for the general structure of this
|
||||
|
||||
# We require that "SOURCE_NAME" be set
|
||||
|
||||
# nopackages.bbclass {
|
||||
deltask do_package
|
||||
deltask do_package_write_rpm
|
||||
deltask do_package_write_ipk
|
||||
deltask do_package_write_deb
|
||||
deltask do_package_qa
|
||||
deltask do_packagedata
|
||||
#}
|
||||
|
||||
deltask do_configure
|
||||
deltask do_compile
|
||||
deltask do_install
|
||||
deltask do_populate_sysroot
|
||||
deltask do_populate_lic
|
||||
deltask do_rm_work
|
||||
|
||||
|
||||
# override to get rid of '-native' or other misc
|
||||
# XXX: consider ${PR}
|
||||
PN = "${SOURCE_NAME}-source-${PV}"
|
||||
WORKDIR = "${TMPDIR}/work-shared/${SOURCE_NAME}-${PV}-${PR}"
|
||||
SSTATE_SWSPEC = "sstate:${SOURCE_NAME}::${PV}:${PR}::${SSTATE_VERSION}:"
|
||||
|
||||
STAMP = "${STAMPS_DIR}/work-shared/${SOURCE_NAME}-${PV}-${PR}"
|
||||
STAMPCLEAN = "${STAMPS_DIR}/work-shared/${SOURCE_NAME}-${PV}-*"
|
||||
|
||||
INHIBIT_DEFAULT_DEPS = "1"
|
||||
DEPENDS = ""
|
||||
PACKAGES = ""
|
||||
|
||||
EXCLUDE_FROM_WORLD = "1"
|
||||
@@ -1,3 +0,0 @@
|
||||
S = "${TMPDIR}/work-shared/${SOURCE_NAME}-${PV}-${PR}"
|
||||
|
||||
do_unpack[depends] += "${SOURCE_NAME}-source-${PV}:do_patch"
|
||||
20
conf/bblayers.conf.sample
Normal file
20
conf/bblayers.conf.sample
Normal file
@@ -0,0 +1,20 @@
|
||||
# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
|
||||
# changes incompatibly
|
||||
LCONF_VERSION = "6"
|
||||
|
||||
BBPATH = "${TOPDIR}"
|
||||
BBFILES ?= ""
|
||||
|
||||
BBLAYERS ?= " \
|
||||
##OEROOT##/meta-rust \
|
||||
##OEROOT##/meta \
|
||||
##OEROOT##/meta-poky \
|
||||
##OEROOT##/meta-yocto-bsp \
|
||||
##OEROOT##/meta-openembedded/meta-oe \
|
||||
##OEROOT##/meta-openembedded/meta-networking \
|
||||
##OEROOT##/meta-openembedded/meta-python \
|
||||
"
|
||||
BBLAYERS_NON_REMOVABLE ?= " \
|
||||
##OEROOT##/meta \
|
||||
##OEROOT##/meta-yocto \
|
||||
"
|
||||
@@ -1,5 +1,7 @@
|
||||
# Build errors with PIE options enabled
|
||||
SECURITY_CFLAGS_pn-rust-native = "${SECURITY_NO_PIE_CFLAGS}"
|
||||
SECURITY_CFLAGS_pn-rust-cross-${TARGET_ARCH} = "${SECURITY_NO_PIE_CFLAGS}"
|
||||
SECURITY_CFLAGS_pn-rust = "${SECURITY_NO_PIE_CFLAGS}"
|
||||
SECURITY_CFLAGS_pn-rust-llvm = "${SECURITY_NO_PIE_CFLAGS}"
|
||||
SECURITY_CFLAGS:pn-rust-native = "${SECURITY_NO_PIE_CFLAGS}"
|
||||
SECURITY_CFLAGS:pn-rust-cross-${TARGET_ARCH} = "${SECURITY_NO_PIE_CFLAGS}"
|
||||
SECURITY_CFLAGS:pn-rust = "${SECURITY_NO_PIE_CFLAGS}"
|
||||
SECURITY_CFLAGS:pn-rust-llvm = "${SECURITY_NO_PIE_CFLAGS}"
|
||||
|
||||
SECURITY_LDFLAGS:pn-rust-cross-arm = " -lssp_nonshared -lssp"
|
||||
|
||||
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,7 +8,8 @@ BBFILE_COLLECTIONS += "rust-layer"
|
||||
BBFILE_PATTERN_rust-layer := "^${LAYERDIR}/"
|
||||
BBFILE_PRIORITY_rust-layer = "7"
|
||||
|
||||
LICENSE_PATH += "${LAYERDIR}/files/common-licenses"
|
||||
LAYERDEPENDS_rust-layer = "core openembedded-layer"
|
||||
LAYERSERIES_COMPAT_rust-layer = "dunfell gatesgarth hardknott honister"
|
||||
|
||||
# Override security flags
|
||||
require conf/distro/include/rust_security_flags.inc
|
||||
|
||||
242
conf/local.conf.sample
Normal file
242
conf/local.conf.sample
Normal file
@@ -0,0 +1,242 @@
|
||||
#
|
||||
# This file is your local configuration file and is where all local user settings
|
||||
# are placed. The comments in this file give some guide to the options a new user
|
||||
# to the system might want to change but pretty much any configuration option can
|
||||
# be set in this file. More adventurous users can look at local.conf.extended
|
||||
# which contains other examples of configuration which can be placed in this file
|
||||
# but new users likely won't need any of them initially.
|
||||
#
|
||||
# Lines starting with the '#' character are commented out and in some cases the
|
||||
# default values are provided as comments to show people example syntax. Enabling
|
||||
# the option is a question of removing the # character and making any change to the
|
||||
# variable as required.
|
||||
|
||||
#
|
||||
# Machine Selection
|
||||
#
|
||||
# You need to select a specific machine to target the build with. There are a selection
|
||||
# of emulated machines available which can boot and run in the QEMU emulator:
|
||||
#
|
||||
#MACHINE ?= "qemuarm"
|
||||
#MACHINE ?= "qemuarm64"
|
||||
#MACHINE ?= "qemumips"
|
||||
#MACHINE ?= "qemumips64"
|
||||
#MACHINE ?= "qemuppc"
|
||||
#MACHINE ?= "qemux86"
|
||||
#MACHINE ?= "qemux86-64"
|
||||
#
|
||||
# There are also the following hardware board target machines included for
|
||||
# demonstration purposes:
|
||||
#
|
||||
#MACHINE ?= "beaglebone"
|
||||
#MACHINE ?= "genericx86"
|
||||
#MACHINE ?= "genericx86-64"
|
||||
#MACHINE ?= "mpc8315e-rdb"
|
||||
#MACHINE ?= "edgerouter"
|
||||
#
|
||||
# This sets the default machine to be qemux86 if no other machine is selected:
|
||||
MACHINE ??= "qemux86-64"
|
||||
|
||||
#
|
||||
# Where to place downloads
|
||||
#
|
||||
# During a first build the system will download many different source code tarballs
|
||||
# from various upstream projects. This can take a while, particularly if your network
|
||||
# connection is slow. These are all stored in DL_DIR. When wiping and rebuilding you
|
||||
# can preserve this directory to speed up this part of subsequent builds. This directory
|
||||
# is safe to share between multiple builds on the same machine too.
|
||||
#
|
||||
# The default is a downloads directory under TOPDIR which is the build directory.
|
||||
#
|
||||
#DL_DIR ?= "${TOPDIR}/downloads"
|
||||
|
||||
#
|
||||
# Where to place shared-state files
|
||||
#
|
||||
# BitBake has the capability to accelerate builds based on previously built output.
|
||||
# This is done using "shared state" files which can be thought of as cache objects
|
||||
# and this option determines where those files are placed.
|
||||
#
|
||||
# You can wipe out TMPDIR leaving this directory intact and the build would regenerate
|
||||
# from these files if no changes were made to the configuration. If changes were made
|
||||
# to the configuration, only shared state files where the state was still valid would
|
||||
# be used (done using checksums).
|
||||
#
|
||||
# The default is a sstate-cache directory under TOPDIR.
|
||||
#
|
||||
#SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
|
||||
|
||||
#
|
||||
# Where to place the build output
|
||||
#
|
||||
# This option specifies where the bulk of the building work should be done and
|
||||
# where BitBake should place its temporary files and output. Keep in mind that
|
||||
# this includes the extraction and compilation of many applications and the toolchain
|
||||
# which can use Gigabytes of hard disk space.
|
||||
#
|
||||
# The default is a tmp directory under TOPDIR.
|
||||
#
|
||||
#TMPDIR = "${TOPDIR}/tmp"
|
||||
|
||||
#
|
||||
# Default policy config
|
||||
#
|
||||
# The distribution setting controls which policy settings are used as defaults.
|
||||
# The default value is fine for general Yocto project use, at least initially.
|
||||
# Ultimately when creating custom policy, people will likely end up subclassing
|
||||
# these defaults.
|
||||
#
|
||||
DISTRO ?= "poky"
|
||||
# As an example of a subclass there is a "bleeding" edge policy configuration
|
||||
# where many versions are set to the absolute latest code from the upstream
|
||||
# source control systems. This is just mentioned here as an example, its not
|
||||
# useful to most new users.
|
||||
# DISTRO ?= "poky-bleeding"
|
||||
|
||||
#
|
||||
# Package Management configuration
|
||||
#
|
||||
# This variable lists which packaging formats to enable. Multiple package backends
|
||||
# can be enabled at once and the first item listed in the variable will be used
|
||||
# to generate the root filesystems.
|
||||
# Options are:
|
||||
# - 'package_deb' for debian style deb files
|
||||
# - 'package_ipk' for ipk files are used by opkg (a debian style embedded package manager)
|
||||
# - 'package_rpm' for rpm style packages
|
||||
# E.g.: PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk"
|
||||
# We default to rpm:
|
||||
PACKAGE_CLASSES ?= "package_rpm"
|
||||
|
||||
#
|
||||
# SDK target architecture
|
||||
#
|
||||
# This variable specifies the architecture to build SDK items for and means
|
||||
# you can build the SDK packages for architectures other than the machine you are
|
||||
# running the build on (i.e. building i686 packages on an x86_64 host).
|
||||
# Supported values are i686 and x86_64
|
||||
#SDKMACHINE ?= "i686"
|
||||
|
||||
#
|
||||
# Extra image configuration defaults
|
||||
#
|
||||
# The EXTRA_IMAGE_FEATURES variable allows extra packages to be added to the generated
|
||||
# images. Some of these options are added to certain image types automatically. The
|
||||
# variable can contain the following options:
|
||||
# "dbg-pkgs" - add -dbg packages for all installed packages
|
||||
# (adds symbol information for debugging/profiling)
|
||||
# "dev-pkgs" - add -dev packages for all installed packages
|
||||
# (useful if you want to develop against libs in the image)
|
||||
# "ptest-pkgs" - add -ptest packages for all ptest-enabled packages
|
||||
# (useful if you want to run the package test suites)
|
||||
# "tools-sdk" - add development tools (gcc, make, pkgconfig etc.)
|
||||
# "tools-debug" - add debugging tools (gdb, strace)
|
||||
# "eclipse-debug" - add Eclipse remote debugging support
|
||||
# "tools-profile" - add profiling tools (oprofile, lttng, valgrind)
|
||||
# "tools-testapps" - add useful testing tools (ts_print, aplay, arecord etc.)
|
||||
# "debug-tweaks" - make an image suitable for development
|
||||
# e.g. ssh root access has a blank password
|
||||
# There are other application targets that can be used here too, see
|
||||
# meta/classes/image.bbclass and meta/classes/core-image.bbclass for more details.
|
||||
# We default to enabling the debugging tweaks.
|
||||
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
|
||||
|
||||
#
|
||||
# Additional image features
|
||||
#
|
||||
# The following is a list of additional classes to use when building images which
|
||||
# enable extra features. Some available options which can be included in this variable
|
||||
# are:
|
||||
# - 'buildstats' collect build statistics
|
||||
# - 'image-mklibs' to reduce shared library files size for an image
|
||||
# - 'image-prelink' in order to prelink the filesystem image
|
||||
# - 'image-swab' to perform host system intrusion detection
|
||||
# NOTE: if listing mklibs & prelink both, then make sure mklibs is before prelink
|
||||
# NOTE: mklibs also needs to be explicitly enabled for a given image, see local.conf.extended
|
||||
# image-prelink disabled for now due to issues with IFUNC symbol relocation
|
||||
USER_CLASSES ?= "buildstats image-mklibs"
|
||||
|
||||
#
|
||||
# Runtime testing of images
|
||||
#
|
||||
# The build system can test booting virtual machine images under qemu (an emulator)
|
||||
# after any root filesystems are created and run tests against those images. To
|
||||
# enable this uncomment this line. See classes/testimage(-auto).bbclass for
|
||||
# further details.
|
||||
#TEST_IMAGE = "1"
|
||||
#
|
||||
# Interactive shell configuration
|
||||
#
|
||||
# Under certain circumstances the system may need input from you and to do this it
|
||||
# can launch an interactive shell. It needs to do this since the build is
|
||||
# multithreaded and needs to be able to handle the case where more than one parallel
|
||||
# process may require the user's attention. The default is iterate over the available
|
||||
# terminal types to find one that works.
|
||||
#
|
||||
# Examples of the occasions this may happen are when resolving patches which cannot
|
||||
# be applied, to use the devshell or the kernel menuconfig
|
||||
#
|
||||
# Supported values are auto, gnome, xfce, rxvt, screen, konsole (KDE 3.x only), none
|
||||
# Note: currently, Konsole support only works for KDE 3.x due to the way
|
||||
# newer Konsole versions behave
|
||||
#OE_TERMINAL = "auto"
|
||||
# By default disable interactive patch resolution (tasks will just fail instead):
|
||||
PATCHRESOLVE = "noop"
|
||||
|
||||
#
|
||||
# Disk Space Monitoring during the build
|
||||
#
|
||||
# Monitor the disk space during the build. If there is less that 1GB of space or less
|
||||
# than 100K inodes in any key build location (TMPDIR, DL_DIR, SSTATE_DIR), gracefully
|
||||
# shutdown the build. If there is less that 100MB or 1K inodes, perform a hard abort
|
||||
# of the build. The reason for this is that running completely out of space can corrupt
|
||||
# files and damages the build in ways which may not be easily recoverable.
|
||||
# It's necesary to monitor /tmp, if there is no space left the build will fail
|
||||
# with very exotic errors.
|
||||
BB_DISKMON_DIRS = "\
|
||||
STOPTASKS,${TMPDIR},1G,100K \
|
||||
STOPTASKS,${DL_DIR},1G,100K \
|
||||
STOPTASKS,${SSTATE_DIR},1G,100K \
|
||||
STOPTASKS,/tmp,100M,100K \
|
||||
ABORT,${TMPDIR},100M,1K \
|
||||
ABORT,${DL_DIR},100M,1K \
|
||||
ABORT,${SSTATE_DIR},100M,1K \
|
||||
ABORT,/tmp,10M,1K"
|
||||
|
||||
#
|
||||
# Shared-state files from other locations
|
||||
#
|
||||
# As mentioned above, shared state files are prebuilt cache data objects which can
|
||||
# used to accelerate build time. This variable can be used to configure the system
|
||||
# to search other mirror locations for these objects before it builds the data itself.
|
||||
#
|
||||
# This can be a filesystem directory, or a remote url such as http or ftp. These
|
||||
# would contain the sstate-cache results from previous builds (possibly from other
|
||||
# machines). This variable works like fetcher MIRRORS/PREMIRRORS and points to the
|
||||
# cache locations to check for the shared objects.
|
||||
# NOTE: if the mirror uses the same structure as SSTATE_DIR, you need to add PATH
|
||||
# at the end as shown in the examples below. This will be substituted with the
|
||||
# correct path within the directory structure.
|
||||
#SSTATE_MIRRORS ?= "\
|
||||
#file://.* http://someserver.tld/share/sstate/PATH;downloadfilename=PATH \n \
|
||||
#file://.* file:///some/local/dir/sstate/PATH"
|
||||
|
||||
SSTATE_MIRRORS ?= "file://.* http://build-cache.asterius.io/master/sstate-cache/PATH;downloadfilename=PATH \n"
|
||||
|
||||
SOURCE_MIRROR_URL ?= "http://build-cache.asterius.io/downloads/"
|
||||
INHERIT += "own-mirrors rm_work"
|
||||
|
||||
#
|
||||
# Qemu configuration
|
||||
#
|
||||
# By default qemu will build with a builtin VNC server where graphical output can be
|
||||
# seen. The two lines below enable the SDL backend too. By default libsdl-native will
|
||||
# be built, if you want to use your host's libSDL instead of the minimal libsdl built
|
||||
# by libsdl-native then uncomment the ASSUME_PROVIDED line below.
|
||||
PACKAGECONFIG:append:pn-qemu-native = " sdl"
|
||||
PACKAGECONFIG:append:pn-nativesdk-qemu = " sdl"
|
||||
#ASSUME_PROVIDED += "libsdl-native"
|
||||
|
||||
# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to
|
||||
# track the version of this file when it was generated. This can safely be ignored if
|
||||
# this doesn't mean anything to you.
|
||||
CONF_VERSION = "1"
|
||||
@@ -1,11 +0,0 @@
|
||||
LINKING EXCEPTION
|
||||
|
||||
In addition to the permissions in the GNU General Public License, the authors
|
||||
give you unlimited permission to link the compiled version of this library into
|
||||
combinations with other programs, and to distribute those combinations without
|
||||
any restriction coming from the use of this file. (The General Public License
|
||||
restrictions do apply in other respects; for example, they cover modification
|
||||
of the file, and distribution when not linked into a combined executable.)
|
||||
|
||||
|
||||
insert GPL v2 text here
|
||||
149
lib/crate.py
Normal file
149
lib/crate.py
Normal file
@@ -0,0 +1,149 @@
|
||||
# ex:ts=4:sw=4:sts=4:et
|
||||
# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
|
||||
"""
|
||||
BitBake 'Fetch' implementation for crates.io
|
||||
"""
|
||||
|
||||
# Copyright (C) 2016 Doug Goldstein
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License version 2 as
|
||||
# published by the Free Software Foundation.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
#
|
||||
# Based on functions from the base bb module, Copyright 2003 Holger Schurig
|
||||
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import bb
|
||||
from bb.fetch2 import logger, subprocess_setup, UnpackError
|
||||
from bb.fetch2.wget import Wget
|
||||
|
||||
|
||||
class Crate(Wget):
|
||||
|
||||
"""Class to fetch crates via wget"""
|
||||
|
||||
def _cargo_bitbake_path(self, rootdir):
|
||||
return os.path.join(rootdir, "cargo_home", "bitbake")
|
||||
|
||||
def supports(self, ud, d):
|
||||
"""
|
||||
Check to see if a given url is for this fetcher
|
||||
"""
|
||||
return ud.type in ['crate']
|
||||
|
||||
def recommends_checksum(self, urldata):
|
||||
return False
|
||||
|
||||
def urldata_init(self, ud, d):
|
||||
"""
|
||||
Sets up to download the respective crate from crates.io
|
||||
"""
|
||||
|
||||
if ud.type == 'crate':
|
||||
self._crate_urldata_init(ud, d)
|
||||
|
||||
super(Crate, self).urldata_init(ud, d)
|
||||
|
||||
def _crate_urldata_init(self, ud, d):
|
||||
"""
|
||||
Sets up the download for a crate
|
||||
"""
|
||||
|
||||
# URL syntax is: crate://NAME/VERSION
|
||||
# break the URL apart by /
|
||||
parts = ud.url.split('/')
|
||||
if len(parts) < 5:
|
||||
raise bb.fetch2.ParameterError("Invalid URL: Must be crate://HOST/NAME/VERSION", ud.url)
|
||||
|
||||
# last field is version
|
||||
version = parts[len(parts) - 1]
|
||||
# second to last field is name
|
||||
name = parts[len(parts) - 2]
|
||||
# host (this is to allow custom crate registries to be specified
|
||||
host = '/'.join(parts[2:len(parts) - 2])
|
||||
|
||||
# if using upstream just fix it up nicely
|
||||
if host == 'crates.io':
|
||||
host = 'crates.io/api/v1/crates'
|
||||
|
||||
ud.url = "https://%s/%s/%s/download" % (host, name, version)
|
||||
ud.parm['downloadfilename'] = "%s-%s.crate" % (name, version)
|
||||
ud.parm['name'] = name
|
||||
|
||||
logger.debug(2, "Fetching %s to %s" % (ud.url, ud.parm['downloadfilename']))
|
||||
|
||||
def unpack(self, ud, rootdir, d):
|
||||
"""
|
||||
Uses the crate to build the necessary paths for cargo to utilize it
|
||||
"""
|
||||
if ud.type == 'crate':
|
||||
return self._crate_unpack(ud, rootdir, d)
|
||||
else:
|
||||
super(Crate, self).unpack(ud, rootdir, d)
|
||||
|
||||
def _crate_unpack(self, ud, rootdir, d):
|
||||
"""
|
||||
Unpacks a crate
|
||||
"""
|
||||
thefile = ud.localpath
|
||||
|
||||
# possible metadata we need to write out
|
||||
metadata = {}
|
||||
|
||||
# change to the rootdir to unpack but save the old working dir
|
||||
save_cwd = os.getcwd()
|
||||
os.chdir(rootdir)
|
||||
|
||||
pn = d.getVar('BPN')
|
||||
if pn == ud.parm.get('name'):
|
||||
cmd = "tar -xz --no-same-owner -f %s" % thefile
|
||||
else:
|
||||
cargo_bitbake = self._cargo_bitbake_path(rootdir)
|
||||
|
||||
cmd = "tar -xz --no-same-owner -f %s -C %s" % (thefile, cargo_bitbake)
|
||||
|
||||
# ensure we've got these paths made
|
||||
bb.utils.mkdirhier(cargo_bitbake)
|
||||
|
||||
# generate metadata necessary
|
||||
with open(thefile, 'rb') as f:
|
||||
# get the SHA256 of the original tarball
|
||||
tarhash = hashlib.sha256(f.read()).hexdigest()
|
||||
|
||||
metadata['files'] = {}
|
||||
metadata['package'] = tarhash
|
||||
|
||||
# path it
|
||||
path = d.getVar('PATH')
|
||||
if path:
|
||||
cmd = "PATH=\"%s\" %s" % (path, cmd)
|
||||
bb.note("Unpacking %s to %s/" % (thefile, os.getcwd()))
|
||||
|
||||
ret = subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True)
|
||||
|
||||
os.chdir(save_cwd)
|
||||
|
||||
if ret != 0:
|
||||
raise UnpackError("Unpack command %s failed with return value %s" % (cmd, ret), ud.url)
|
||||
|
||||
# if we have metadata to write out..
|
||||
if len(metadata) > 0:
|
||||
cratepath = os.path.splitext(os.path.basename(thefile))[0]
|
||||
bbpath = self._cargo_bitbake_path(rootdir)
|
||||
mdfile = '.cargo-checksum.json'
|
||||
mdpath = os.path.join(bbpath, cratepath, mdfile)
|
||||
with open(mdpath, "w") as f:
|
||||
json.dump(metadata, f)
|
||||
@@ -1,20 +0,0 @@
|
||||
DESCRIPTION = "Fast multiple substring searching with finite state machines."
|
||||
HOMEPAGE = "https://github.com/BurntSushi/aho-corasick"
|
||||
LICENSE = "MIT"
|
||||
LIC_FILES_CHKSUM = "file://LICENSE-MIT;md5=8d0d0aa488af0ab9aafa3b85a7fc8e12"
|
||||
DEPENDS = "memchr-rs"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
SRC_URI = "git://github.com/BurntSushi/aho-corasick.git;protocol=https"
|
||||
SRCREV = "e1bca33dcc060d587e802320a79cbb035f37f8fa"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -1,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,26 +0,0 @@
|
||||
DESCRIPTION = "A Rust library with native bindings to the types and functions commonly found on various systems, including libc."
|
||||
HOMEPAGE = "https://github.com/rust-lang/libc"
|
||||
LICENSE = "MIT | Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "\
|
||||
file://LICENSE-MIT;md5=615cc94ba6f721c4ed3d6988605e85ca \
|
||||
file://LICENSE-APACHE;md5=1836efb2eb779966696f473ee8540542 \
|
||||
"
|
||||
|
||||
inherit rust-bin
|
||||
|
||||
# SRC_URI = "git://git@github.com:rust-lang/libc.git;protocol=https"
|
||||
# libc lives in rust-lang/rust which is a submodule of rust-lang/libc
|
||||
SRC_URI = "gitsm://github.com/rust-lang/rust.git;protocol=https"
|
||||
SRCREV = "8b7c17db2235a2a3f2c71242b11fc429a8d05a90"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
LIB_SRC = "${S}/src/liblibc/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 = "a91e63378bf6f4bba5c7d88f4fe98efdcb432c99"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
do_compile () {
|
||||
oe_compile_rust_lib
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_install_rust_lib
|
||||
}
|
||||
@@ -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 = "164659b01e6fdb4d9a8e52b7a7451e8174e91821"
|
||||
|
||||
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 = "376f43a4b94dbe411bd9534ab83f02fbcb5a3b04"
|
||||
|
||||
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
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
|
||||
## An excerpt from curl-sys's build script:
|
||||
#export CFLAGS := $(CFLAGS) -fPIC -ffunction-sections -fdata-sections
|
||||
#OPTS := $(OPTS) \
|
||||
# --enable-static=yes \
|
||||
# --enable-shared=no \
|
||||
# --disable-ldap --disable-ldaps --disable-ftp --disable-rtsp \
|
||||
# --disable-dict --disable-telnet --disable-tftp --disable-pop3 \
|
||||
# --disable-imap --disable-smtp --disable-gopher --disable-manual \
|
||||
# --enable-optimize --without-librtmp --without-libidn \
|
||||
# --prefix="$(OUT_DIR)"
|
||||
## Due to how rust links, we need -fPIC. Without it,
|
||||
|
||||
#EXTRA_OECONF_append = " \
|
||||
# --with-zlib \
|
||||
# --enable-static \
|
||||
# --enable-hidden-symbols \
|
||||
#"
|
||||
|
||||
#BUILD_CFLAGS += "-fPIC"
|
||||
#TARGET_CFLAGS += "-fPIC"
|
||||
|
||||
#| note: /usr/bin/ld: .../tmp/work/x86_64-linux/cargo-native/2014-11-07-r0/git/target/x86_64-unknown-linux-gnu/deps/libcurl-f3f9ef32955b72e6.rlib(r-curl-libcurl_la-openssl.o): undefined reference to symbol 'SSL_CTX_set_cipher_list'
|
||||
#| /usr/lib/libssl.so.1.0.0: error adding symbols: DSO missing from command line
|
||||
#DEPENDS_append = "openssl"
|
||||
PACKAGECONFIG = "ipv6"
|
||||
CFLAGS_append = " -fPIC"
|
||||
@@ -1,3 +0,0 @@
|
||||
require libgit2.inc
|
||||
S = "${WORKDIR}/git"
|
||||
SRC_URI = "git://github.com/libgit2/libgit2.git;protocol=https"
|
||||
@@ -1,3 +0,0 @@
|
||||
require libgit2.inc
|
||||
SRC_URI = "https://github.com/libgit2/libgit2/archive/v${PV}.tar.gz"
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
SUMMARY = "the Git linkable library"
|
||||
HOMEPAGE = "http://libgit2.github.com/"
|
||||
LICENSE = "GPL-2.0-with-linking-exception"
|
||||
|
||||
DEPENDS = "zlib"
|
||||
|
||||
inherit cmake
|
||||
|
||||
# CLAR = tests, needs python-native
|
||||
EXTRA_OECMAKE = "\
|
||||
-DTHREADSAFE=ON \
|
||||
-DBUILD_CLAR=OFF \
|
||||
-DSHA1_TYPE="builtin" \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DBUILD_EXAMPLES=OFF \
|
||||
"
|
||||
|
||||
CFLAGS_append .= " -fPIC"
|
||||
|
||||
# Prior to poky commit 60d504b431fa7cdc6ded141def7ae18edb1834e5,
|
||||
# the cmake class did not define CMAKE_AR in the generated toolchain
|
||||
# file. This is needed to support building a static library.
|
||||
# See https://github.com/jmesmon/meta-rust/issues/1
|
||||
OECMAKE_AR ?= "${AR}"
|
||||
cmake_do_generate_toolchain_file_append() {
|
||||
cat >> ${WORKDIR}/toolchain.cmake <<EOF
|
||||
set( CMAKE_AR ${OECMAKE_AR} CACHE FILEPATH "Archiver" )
|
||||
EOF
|
||||
}
|
||||
|
||||
BBCLASSEXTEND = "native"
|
||||
@@ -1,6 +0,0 @@
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=29c24df0df4c2bab5efb8d5a33a73202"
|
||||
|
||||
SRC_URI[md5sum] = "dbf516d18e176bbb131de3efccfee533"
|
||||
SRC_URI[sha256sum] = "c7f1bf99ed8aeba65a485489869e2a50f022f3cd847df85e192fc99fdd6c8b5e"
|
||||
|
||||
require libgit2-release.inc
|
||||
@@ -1,4 +0,0 @@
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=34197a479f637beb9e09e56893f48bc2"
|
||||
SRC_URI[md5sum] = "b7db3ab71dfa19fe1dc7fef76d6af216"
|
||||
SRC_URI[sha256sum] = "c7f5e2d7381dbc4d7e878013d14f9993ae8a41bd23f032718e39ffba57894029"
|
||||
require libgit2-release.inc
|
||||
@@ -1,4 +0,0 @@
|
||||
require libgit2-git.inc
|
||||
SRCREV ?= "47f37400253210f483d84fb9c2ecf44fb5986849"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=5ddd5fb64b24982b32a490dccccdabc5"
|
||||
DEFAULT_PREFERENCE = "-1"
|
||||
@@ -1,2 +0,0 @@
|
||||
# meta-oe/recipes-support/libssh2
|
||||
BBCLASSEXTEND = "native"
|
||||
@@ -1,3 +0,0 @@
|
||||
# cargo tries to build a shared object using several static objects, one of
|
||||
# which includes the contents of zlib (zutil.o as 'libcurl-f3f9ef32955b72e6.rlib(r-z-zutil.o)')
|
||||
CFLAGS_append = " -fPIC"
|
||||
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-01-31/cargo-nightly-x86_64-unknown-linux-gnu.tar.gz"
|
||||
SRC_URI[md5sum] = "52f48780b7cfadc88813766048d4d402"
|
||||
SRC_URI[sha256sum] = "1920e661bab536eba763ff6704a1d62fb20bb0f67d8c5a119e41c49510ea5fa6"
|
||||
@@ -1,66 +1,51 @@
|
||||
INHIBIT_CARGO_DEP = "1"
|
||||
|
||||
inherit cargo
|
||||
inherit patch
|
||||
inherit rust-installer
|
||||
|
||||
SUMMARY = "Cargo downloads your Rust project's dependencies and builds your project"
|
||||
HOMEPAGE = "http://crates.io"
|
||||
SECTION = "devel"
|
||||
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"
|
||||
|
||||
SRC_URI = "\
|
||||
http://static-rust-lang-org.s3.amazonaws.com/cargo-dist/${CARGO_SNAPSHOT} \
|
||||
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"
|
||||
|
||||
PACKAGECONFIG ??= ""
|
||||
S = "${RUSTSRC}/src/tools/cargo"
|
||||
CARGO_VENDORING_DIRECTORY = "${RUSTSRC}/vendor"
|
||||
|
||||
# Note: this does not appear to work very well due to our use of bitbake triples
|
||||
# & rust's use of cooked triples
|
||||
PACKAGECONFIG[rust-snapshot] = "--local-rust-root=${B}/rustc"
|
||||
inherit cargo
|
||||
|
||||
# Used in libgit2-sys's build.rs, needed for pkg-config to be used
|
||||
export LIBGIT2_SYS_USE_PKG_CONFIG = "1"
|
||||
|
||||
do_configure () {
|
||||
${@bb.utils.contains('PACKAGECONFIG', 'rust-snapshot', '${S}/.travis.install.deps.sh', ':', d)}
|
||||
|
||||
"${S}/configure" \
|
||||
"--prefix=${prefix}" \
|
||||
"--build=${BUILD_SYS}" \
|
||||
"--host=${HOST_SYS}" \
|
||||
"--target=${TARGET_SYS}" \
|
||||
"--localstatedir=${localstatedir}" \
|
||||
"--sysconfdir=${sysconfdir}" \
|
||||
"--datadir=${datadir}" \
|
||||
"--infodir=${infodir}" \
|
||||
"--mandir=${mandir}" \
|
||||
"--libdir=${libdir}" \
|
||||
"--disable-verify-install" \
|
||||
${EXTRA_OECONF} \
|
||||
|| die "Could not configure cargo"
|
||||
|
||||
# cargo downloads a cargo snapshot to build itself using cargo, we need
|
||||
# to override it's arch info.
|
||||
cargo_do_configure
|
||||
do_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}/$(basename ${CARGO_SNAPSHOT} .tar.gz)/cargo target/snapshot
|
||||
|
||||
oe_runmake ARGS="--verbose"
|
||||
do_compile:prepend () {
|
||||
export RUSTC_BOOTSTRAP="1"
|
||||
}
|
||||
|
||||
do_install () {
|
||||
oe_runmake DESTDIR="${D}" install
|
||||
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,57 +0,0 @@
|
||||
require cargo-snapshot.inc
|
||||
require cargo.inc
|
||||
|
||||
SRC_URI += " \
|
||||
https://github.com/rust-lang/cargo/archive/${PV}.tar.gz;name=cargo \
|
||||
file://0001-disable-cargo-snapshot-fetch.patch \
|
||||
git://github.com/rust-lang/rust-installer.git;protocol=https;name=rust-installer;destsuffix=${BP}/src/rust-installer \
|
||||
"
|
||||
SRC_URI[cargo.md5sum] = "2089790a4a48de7f8f3cb1afcfa9ec74"
|
||||
SRC_URI[cargo.sha256sum] = "b1067d710e64b66a197294df2fa3dd4fb1d645171eaa517b93d42678bb687338"
|
||||
|
||||
SRCREV_rust-installer = "c37d3747da75c280237dc2d6b925078e69555499"
|
||||
|
||||
S = "${WORKDIR}/${BP}"
|
||||
|
||||
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.14 / -sys 0.1.29
|
||||
SRCREV_curl-rust = "76172b3ebf958fcf0b10d400f19ee02486a80ee7"
|
||||
|
||||
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.10 / -sys 0.1.34
|
||||
SRCREV_ssh2-rs = "00af6ead0c3d4b82e05bee4d9963ef3823bcf524"
|
||||
|
||||
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.3.3 / -sys 0.3.8
|
||||
SRCREV_git2-rs = "19b6873c1fad7dc93c9c2dac4cba339dacf16efa"
|
||||
|
||||
SRCREV_FORMAT .= "_git2-rs"
|
||||
EXTRA_OECARGO_PATHS += "${WORKDIR}/git2-rs"
|
||||
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,27 +0,0 @@
|
||||
From 9652ddba460f30e83f401ab1564656e7787bdea9 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 286a593..9c66486 100644
|
||||
--- a/Makefile.in
|
||||
+++ b/Makefile.in
|
||||
@@ -92,10 +92,6 @@ test-unit-$(1): $$(CARGO)
|
||||
endef
|
||||
$(foreach target,$(CFG_TARGET),$(eval $(call CARGO_TARGET,$(target))))
|
||||
|
||||
-$(TARGET_ROOT)/snapshot/bin/cargo$(X): src/snapshots.txt
|
||||
- $(CFG_PYTHON) src/etc/dl-snapshot.py $(CFG_BUILD)
|
||||
- touch $@
|
||||
-
|
||||
|
||||
# === Tests
|
||||
|
||||
--
|
||||
2.7.0
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
From 6d74b6af6a23e195fc54c81a9bbdb21e7d5b6414 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 | 26 --------------------------
|
||||
curl-sys/lib.rs | 2 --
|
||||
2 files changed, 28 deletions(-)
|
||||
|
||||
diff --git a/curl-sys/Cargo.toml b/curl-sys/Cargo.toml
|
||||
index bf994bf..f153039 100644
|
||||
--- a/curl-sys/Cargo.toml
|
||||
+++ b/curl-sys/Cargo.toml
|
||||
@@ -19,29 +19,3 @@ path = "lib.rs"
|
||||
[dependencies]
|
||||
libz-sys = ">= 0"
|
||||
libc = "0.2"
|
||||
-
|
||||
-# Unix platforms use OpenSSL for now to provide SSL functionality
|
||||
-[target.i686-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.arm-linux-androideabi.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.aarch64-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 be80469..b53b445 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.4.10
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
From 445289f4eacc5c048e4a455bb6d6a6a2b9995e88 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 | 27 +--------------------------
|
||||
1 file changed, 1 insertion(+), 26 deletions(-)
|
||||
|
||||
diff --git a/Cargo.toml b/Cargo.toml
|
||||
index 74f63c8..28aa1fa 100644
|
||||
--- a/Cargo.toml
|
||||
+++ b/Cargo.toml
|
||||
@@ -12,36 +12,11 @@ url = "0.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.i686-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.arm-linux-androideabi.dependencies]
|
||||
-openssl-sys = "0.7.0"
|
||||
-[target.aarch64-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.4.10
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
From 95709b3f5b1495a57043975d7100461feed46b2f 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 | 22 +---------------------
|
||||
1 file changed, 1 insertion(+), 21 deletions(-)
|
||||
|
||||
diff --git a/libgit2-sys/Cargo.toml b/libgit2-sys/Cargo.toml
|
||||
index 15b28d8..3590878 100644
|
||||
--- a/libgit2-sys/Cargo.toml
|
||||
+++ b/libgit2-sys/Cargo.toml
|
||||
@@ -17,32 +17,12 @@ 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"
|
||||
|
||||
-[target.i686-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.arm-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.4.10
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
From be07c11b438550829d82dc844e38806570232cd7 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 | 25 -------------------------
|
||||
libssh2-sys/lib.rs | 2 --
|
||||
2 files changed, 27 deletions(-)
|
||||
|
||||
diff --git a/libssh2-sys/Cargo.toml b/libssh2-sys/Cargo.toml
|
||||
index b9ecec2..78f92ac 100644
|
||||
--- a/libssh2-sys/Cargo.toml
|
||||
+++ b/libssh2-sys/Cargo.toml
|
||||
@@ -18,31 +18,6 @@ libc = "0.2"
|
||||
ws2_32-sys = ">= 0"
|
||||
winapi = "0.2"
|
||||
|
||||
-[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.x86_64-unknown-linux-gnu.dependencies]
|
||||
-openssl-sys = ">= 0"
|
||||
-[target.aarch64-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.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 bb6c46f..40af82f 100644
|
||||
--- a/libssh2-sys/lib.rs
|
||||
+++ b/libssh2-sys/lib.rs
|
||||
@@ -6,8 +6,6 @@ extern crate ws2_32;
|
||||
extern crate winapi;
|
||||
|
||||
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.4.10
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,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,11 +0,0 @@
|
||||
+++ llvm/src/llvm/include/llvm/CodeGen/CommandFlags.h.orig 2016-01-18 19:18:03.847470845 +0000
|
||||
+++ llvm/src/llvm/include/llvm/CodeGen/CommandFlags.h 2016-01-18 19:18:11.211408270 +0000
|
||||
@@ -21,7 +21,7 @@
|
||||
#include "llvm/IR/Intrinsics.h"
|
||||
#include "llvm/IR/Module.h"
|
||||
#include "llvm/MC/MCTargetOptionsCommandFlags.h"
|
||||
-#include "llvm//MC/SubtargetFeature.h"
|
||||
+#include "llvm/MC/SubtargetFeature.h"
|
||||
#include "llvm/Support/CodeGen.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Support/Host.h"
|
||||
@@ -1,27 +0,0 @@
|
||||
From af2eaed835d3b717552ea83e75f4c5e86e614979 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Sat, 15 Nov 2014 20:12:48 -0500
|
||||
Subject: [PATCH 1/9] platform.mk: avoid choking on i586
|
||||
|
||||
---
|
||||
mk/platform.mk | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/mk/platform.mk b/mk/platform.mk
|
||||
index 856a22d..0c90632 100644
|
||||
--- a/mk/platform.mk
|
||||
+++ b/mk/platform.mk
|
||||
@@ -14,7 +14,9 @@
|
||||
# would create a variable HOST_i686-darwin-macos with the value
|
||||
# i386.
|
||||
define DEF_HOST_VAR
|
||||
- HOST_$(1) = $(subst i686,i386,$(word 1,$(subst -, ,$(1))))
|
||||
+ HOST_$(1) = $(subst i686,i386,\
|
||||
+ $(subst i586,i386,\
|
||||
+ $(word 1,$(subst -, ,$(1)))))
|
||||
endef
|
||||
$(foreach t,$(CFG_TARGET),$(eval $(call DEF_HOST_VAR,$(t))))
|
||||
$(foreach t,$(CFG_TARGET),$(info cfg: host for $(t) is $(HOST_$(t))))
|
||||
--
|
||||
2.4.10
|
||||
|
||||
@@ -1,109 +0,0 @@
|
||||
From 632d71477fdecb18852812d86b8e2ee1e33c521b Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 18 Nov 2014 01:40:21 -0500
|
||||
Subject: [PATCH 2/9] Target: add default target.json path:
|
||||
$libdir/rust/targets
|
||||
|
||||
---
|
||||
src/librustc/session/config.rs | 6 +++---
|
||||
src/librustc/session/mod.rs | 8 ++++++--
|
||||
src/librustc_back/target/mod.rs | 14 +++++++++++---
|
||||
3 files changed, 20 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
|
||||
index 7e8104d..ecb38d4 100644
|
||||
--- a/src/librustc/session/config.rs
|
||||
+++ b/src/librustc/session/config.rs
|
||||
@@ -36,7 +36,7 @@ use getopts;
|
||||
use std::collections::HashMap;
|
||||
use std::env;
|
||||
use std::fmt;
|
||||
-use std::path::PathBuf;
|
||||
+use std::path::{Path, PathBuf};
|
||||
|
||||
use llvm;
|
||||
|
||||
@@ -653,8 +653,8 @@ pub fn build_configuration(sess: &Session) -> ast::CrateConfig {
|
||||
v
|
||||
}
|
||||
|
||||
-pub fn build_target_config(opts: &Options, sp: &SpanHandler) -> Config {
|
||||
- let target = match Target::search(&opts.target_triple) {
|
||||
+pub fn build_target_config(sysroot: &Path, opts: &Options, sp: &SpanHandler) -> Config {
|
||||
+ let target = match Target::search(sysroot, &opts.target_triple[..]) {
|
||||
Ok(t) => t,
|
||||
Err(e) => {
|
||||
sp.handler().fatal(&format!("Error loading target specification: {}", e));
|
||||
diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs
|
||||
index 0a1df25..ad223d5 100644
|
||||
--- a/src/librustc/session/mod.rs
|
||||
+++ b/src/librustc/session/mod.rs
|
||||
@@ -412,14 +412,18 @@ pub fn build_session_(sopts: config::Options,
|
||||
local_crate_source_file: Option<PathBuf>,
|
||||
span_diagnostic: diagnostic::SpanHandler)
|
||||
-> Session {
|
||||
- let host = match Target::search(config::host_triple()) {
|
||||
+ let sysroot = match sopts.maybe_sysroot {
|
||||
+ Some(ref x) => PathBuf::from(x),
|
||||
+ None => filesearch::get_or_default_sysroot()
|
||||
+ };
|
||||
+ let host = match Target::search(&sysroot, config::host_triple()) {
|
||||
Ok(t) => t,
|
||||
Err(e) => {
|
||||
span_diagnostic.handler()
|
||||
.fatal(&format!("Error loading host specification: {}", e));
|
||||
}
|
||||
};
|
||||
- let target_cfg = config::build_target_config(&sopts, &span_diagnostic);
|
||||
+ let target_cfg = config::build_target_config(&sysroot, &sopts, &span_diagnostic);
|
||||
let p_s = parse::ParseSess::with_span_handler(span_diagnostic);
|
||||
let default_sysroot = match sopts.maybe_sysroot {
|
||||
Some(_) => None,
|
||||
diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs
|
||||
index 6ae7435..3ffa484 100644
|
||||
--- a/src/librustc_back/target/mod.rs
|
||||
+++ b/src/librustc_back/target/mod.rs
|
||||
@@ -49,6 +49,8 @@ use serialize::json::Json;
|
||||
use std::default::Default;
|
||||
use std::io::prelude::*;
|
||||
use syntax::{diagnostic, abi};
|
||||
+use std::borrow::ToOwned;
|
||||
+use std::path::Path;
|
||||
|
||||
mod android_base;
|
||||
mod apple_base;
|
||||
@@ -346,12 +348,13 @@ impl Target {
|
||||
///
|
||||
/// The error string could come from any of the APIs called, including
|
||||
/// filesystem access and JSON decoding.
|
||||
- pub fn search(target: &str) -> Result<Target, String> {
|
||||
+ pub fn search(sysroot: &Path, target: &str) -> Result<Target, String> {
|
||||
use std::env;
|
||||
use std::ffi::OsString;
|
||||
use std::fs::File;
|
||||
use std::path::{Path, PathBuf};
|
||||
use serialize::json;
|
||||
+ use std::iter::IntoIterator;
|
||||
|
||||
fn load_file(path: &Path) -> Result<Target, String> {
|
||||
let mut f = try!(File::open(path).map_err(|e| e.to_string()));
|
||||
@@ -447,9 +450,14 @@ impl Target {
|
||||
let target_path = env::var_os("RUST_TARGET_PATH")
|
||||
.unwrap_or(OsString::new());
|
||||
|
||||
- // FIXME 16351: add a sane default search path?
|
||||
+ let mut default_path = sysroot.to_owned();
|
||||
+ default_path.push(env!("CFG_LIBDIR_RELATIVE"));
|
||||
+ default_path.push("rustlib");
|
||||
|
||||
- for dir in env::split_paths(&target_path) {
|
||||
+ let paths = env::split_paths(&target_path)
|
||||
+ .chain(Some(default_path).into_iter());
|
||||
+
|
||||
+ for dir in paths {
|
||||
let p = dir.join(&path);
|
||||
if p.is_file() {
|
||||
return load_file(&p);
|
||||
--
|
||||
2.4.10
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
From b544f5bfa38d5932db23214e168988d05cbc5620 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 18 Nov 2014 14:52:56 -0500
|
||||
Subject: [PATCH 3/9] mk: for stage0, use RUSTFLAGS to override target libs dir
|
||||
|
||||
Setting HLIB specially for stage0 (and even more specially for windows)
|
||||
also affects the location we place TLIB. To keep the TLIBs we build in
|
||||
the place requested by configure, use '-L' and '--sysroot' to point
|
||||
stage0-rustc at the appropriate location.
|
||||
---
|
||||
mk/main.mk | 19 +++++++++++--------
|
||||
1 file changed, 11 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/mk/main.mk b/mk/main.mk
|
||||
index 34f8247..896c1df 100644
|
||||
--- a/mk/main.mk
|
||||
+++ b/mk/main.mk
|
||||
@@ -376,21 +376,22 @@ define SREQ
|
||||
# Destinations of artifacts for the host compiler
|
||||
HROOT$(1)_H_$(3) = $(3)/stage$(1)
|
||||
HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
|
||||
-ifeq ($$(CFG_WINDOWSY_$(3)),1)
|
||||
-HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)
|
||||
-else
|
||||
-ifeq ($(1),0)
|
||||
-HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/lib
|
||||
-else
|
||||
HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)
|
||||
-endif
|
||||
-endif
|
||||
|
||||
# Destinations of artifacts for target architectures
|
||||
TROOT$(1)_T_$(2)_H_$(3) = $$(HLIB$(1)_H_$(3))/rustlib/$(2)
|
||||
TBIN$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/bin
|
||||
TLIB$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/lib
|
||||
|
||||
+# Don't trust stage0, be explicit about libraries
|
||||
+# TODO: rather than specifying sysroot, we really want to tell which libdir to
|
||||
+# use (ie: the dir containing 'rustlib'). This would allow us to avoid
|
||||
+# passing the '-L' options.
|
||||
+ifeq ($(1),0)
|
||||
+RUSTFLAGS_S_$(1)_T_$(2)_H_$(3) += --sysroot "$$(HROOT$(1)_H_$(3))" \
|
||||
+ -L "$$(TLIB$(1)_T_$(2)_H_$(3))"
|
||||
+endif
|
||||
+
|
||||
# Preqrequisites for using the stageN compiler
|
||||
ifeq ($(1),0)
|
||||
HSREQ$(1)_H_$(3) = $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3))
|
||||
@@ -502,6 +503,7 @@ STAGE$(1)_T_$(2)_H_$(3) := \
|
||||
$$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \
|
||||
--cfg $$(CFGFLAG$(1)_T_$(2)_H_$(3)) \
|
||||
$$(CFG_RUSTC_FLAGS) $$(EXTRAFLAGS_STAGE$(1)) --target=$(2)) \
|
||||
+ $$(RUSTFLAGS_S_$(1)_T_$(2)_H_$(3)) \
|
||||
$$(RUSTC_FLAGS_$(2))
|
||||
|
||||
PERF_STAGE$(1)_T_$(2)_H_$(3) := \
|
||||
@@ -510,6 +512,7 @@ PERF_STAGE$(1)_T_$(2)_H_$(3) := \
|
||||
$$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \
|
||||
--cfg $$(CFGFLAG$(1)_T_$(2)_H_$(3)) \
|
||||
$$(CFG_RUSTC_FLAGS) $$(EXTRAFLAGS_STAGE$(1)) --target=$(2)) \
|
||||
+ $$(RUSTFLAGS_S_$(1)_T_$(2)_H_$(3)) \
|
||||
$$(RUSTC_FLAGS_$(2))
|
||||
|
||||
endef
|
||||
--
|
||||
2.4.10
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
From 004ddead436887fe99bfa9d0d25f6cdaf9f6148b Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 18 Nov 2014 13:48:14 -0500
|
||||
Subject: [PATCH 4/9] 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.4.10
|
||||
|
||||
@@ -1,362 +0,0 @@
|
||||
From 1197d6ec82df147e8bbe0d42017fe1ee75804369 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Mon, 24 Nov 2014 13:10:15 -0500
|
||||
Subject: [PATCH 5/9] configure: support --bindir, and extend libdir to
|
||||
non-blessed dirs
|
||||
|
||||
Adds --bindir, and:
|
||||
|
||||
Allows --bindir and --libdir to have multiple elements in their paths
|
||||
relative to sysroot, and allows libdir to end in an arbitrary directory
|
||||
(previously it was limited to lib, lib32, and lib64).
|
||||
|
||||
Note that this assumes absolute paths start with '/', which may break
|
||||
windows platforms
|
||||
---
|
||||
configure | 49 ++++++++++++++++------
|
||||
mk/host.mk | 6 ++-
|
||||
mk/main.mk | 11 +++++
|
||||
mk/perf.mk | 4 +-
|
||||
mk/prepare.mk | 4 +-
|
||||
src/librustc/metadata/filesearch.rs | 84 ++++++++++++++-----------------------
|
||||
src/librustc_trans/back/link.rs | 3 +-
|
||||
7 files changed, 90 insertions(+), 71 deletions(-)
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 60d3661..01c447b 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -334,6 +334,31 @@ enable_if_not_disabled() {
|
||||
fi
|
||||
}
|
||||
|
||||
+abspath () {
|
||||
+ case "$1" in
|
||||
+ /*) echo "$1" ;;
|
||||
+ *) echo "$PWD/$1" ;;
|
||||
+ esac
|
||||
+}
|
||||
+
|
||||
+relpath () {
|
||||
+ local src=$(abspath "$1")
|
||||
+ local dst=$(abspath "$2")
|
||||
+ local common=$src
|
||||
+ local result=
|
||||
+
|
||||
+ # Start by checking if the whole src is common, then strip off pack
|
||||
+ # components until we find the common element.
|
||||
+ while [ "${dst#"$common"}" = "$dst" ]; do
|
||||
+ common=$(dirname "$common")
|
||||
+ result="../$result"
|
||||
+ done
|
||||
+
|
||||
+ local down="${dst#"$common"}"
|
||||
+ result="${result}${down#/}"
|
||||
+ echo "$result"
|
||||
+}
|
||||
+
|
||||
to_llvm_triple() {
|
||||
case $1 in
|
||||
i686-w64-mingw32) echo i686-pc-windows-gnu ;;
|
||||
@@ -632,6 +657,8 @@ putvar CFG_BUILD # Yes, this creates a duplicate entry, but the last one wins.
|
||||
CFG_HOST=$(to_llvm_triple $CFG_HOST)
|
||||
CFG_TARGET=$(to_llvm_triple $CFG_TARGET)
|
||||
|
||||
+CFG_LIBDIR_RELATIVE=lib
|
||||
+
|
||||
# On windows we just store the libraries in the bin directory because
|
||||
# there's no rpath. This is where the build system itself puts libraries;
|
||||
# --libdir is used to configure the installation directory.
|
||||
@@ -639,24 +666,21 @@ CFG_TARGET=$(to_llvm_triple $CFG_TARGET)
|
||||
if [ "$CFG_OSTYPE" = "pc-windows-gnu" ] || [ "$CFG_OSTYPE" = "pc-windows-msvc" ]
|
||||
then
|
||||
CFG_LIBDIR_RELATIVE=bin
|
||||
-else
|
||||
- CFG_LIBDIR_RELATIVE=lib
|
||||
fi
|
||||
|
||||
-valopt libdir "${CFG_PREFIX}/${CFG_LIBDIR_RELATIVE}" "install libraries (do not set it on windows platform)"
|
||||
+valopt libdir "${CFG_PREFIX}/${CFG_LIBDIR_RELATIVE}" "install libraries"
|
||||
|
||||
-case "$CFG_LIBDIR" in
|
||||
- "$CFG_PREFIX"/*) CAT_INC=2;;
|
||||
- "$CFG_PREFIX"*) CAT_INC=1;;
|
||||
- *)
|
||||
- err "libdir must begin with the prefix. Use --prefix to set it accordingly.";;
|
||||
-esac
|
||||
+CFG_BINDIR_RELATIVE=bin
|
||||
+valopt bindir "${CFG_PREFIX}/${CFG_BINDIR_RELATIVE}" "install binaries"
|
||||
|
||||
-CFG_LIBDIR_RELATIVE=`echo ${CFG_LIBDIR} | cut -c$((${#CFG_PREFIX}+${CAT_INC}))-`
|
||||
+# Determine libdir and bindir relative to prefix
|
||||
+step_msg "calculating relative paths to prefix = ${CFG_PREFIX}"
|
||||
+CFG_BINDIR_RELATIVE=$(relpath "${CFG_PREFIX}" "${CFG_BINDIR}")
|
||||
+CFG_LIBDIR_RELATIVE=$(relpath "${CFG_PREFIX}" "${CFG_LIBDIR}")
|
||||
|
||||
if ( [ "$CFG_OSTYPE" = "pc-windows-gnu" ] || [ "$CFG_OSTYPE" = "pc-windows-msvc" ] ) \
|
||||
- && [ "$CFG_LIBDIR_RELATIVE" != "bin" ]; then
|
||||
- err "libdir on windows should be set to 'bin'"
|
||||
+ && [ "$CFG_LIBDIR_RELATIVE" != "$CFG_BINDIR_RELATIVE" ]; then
|
||||
+ err "Windows builds currently require that LIBDIR == BINDIR (we have libdir{$CFG_LIBDIR_RELATIVE} != bindir{$CFG_BINDIR_RELATIVE} )"
|
||||
fi
|
||||
|
||||
if [ $HELP -eq 1 ]
|
||||
@@ -1733,6 +1757,7 @@ putvar CFG_PREFIX
|
||||
putvar CFG_HOST
|
||||
putvar CFG_TARGET
|
||||
putvar CFG_LIBDIR_RELATIVE
|
||||
+putvar CFG_BINDIR_RELATIVE
|
||||
putvar CFG_DISABLE_MANAGE_SUBMODULES
|
||||
putvar CFG_AARCH64_LINUX_ANDROID_NDK
|
||||
putvar CFG_ARM_LINUX_ANDROIDEABI_NDK
|
||||
diff --git a/mk/host.mk b/mk/host.mk
|
||||
index 59a0095..b8e8345 100644
|
||||
--- a/mk/host.mk
|
||||
+++ b/mk/host.mk
|
||||
@@ -59,9 +59,13 @@ endef
|
||||
# $(4) - the host triple (same as $(3))
|
||||
define CP_HOST_STAGE_N
|
||||
|
||||
-ifneq ($(CFG_LIBDIR_RELATIVE),bin)
|
||||
$$(HLIB$(2)_H_$(4))/:
|
||||
@mkdir -p $$@
|
||||
+
|
||||
+# Avoid redefinition warnings if libdir==bindir
|
||||
+ifneq ($(HBIN$(2)_H_$(4)),$(HLIB$(2)_H_$(4)))
|
||||
+$$(HBIN$(2)_H_$(4))/:
|
||||
+ @mkdir -p $$@
|
||||
endif
|
||||
|
||||
endef
|
||||
diff --git a/mk/main.mk b/mk/main.mk
|
||||
index 896c1df..ab12166 100644
|
||||
--- a/mk/main.mk
|
||||
+++ b/mk/main.mk
|
||||
@@ -345,7 +345,9 @@ export CFG_RELEASE_CHANNEL
|
||||
export CFG_LLVM_ROOT
|
||||
export CFG_PREFIX
|
||||
export CFG_LIBDIR
|
||||
+export CFG_BINDIR
|
||||
export CFG_LIBDIR_RELATIVE
|
||||
+export CFG_BINDIR_RELATIVE
|
||||
export CFG_DISABLE_INJECT_STD_VERSION
|
||||
ifdef CFG_DISABLE_UNSTABLE_FEATURES
|
||||
CFG_INFO := $(info cfg: disabling unstable features (CFG_DISABLE_UNSTABLE_FEATURES))
|
||||
@@ -375,7 +377,16 @@ define SREQ
|
||||
|
||||
# Destinations of artifacts for the host compiler
|
||||
HROOT$(1)_H_$(3) = $(3)/stage$(1)
|
||||
+
|
||||
+ifeq ($(1)-$(3),0-$$(CFG_BUILD))
|
||||
+# stage0 relative paths are fixed so we can bootstrap from snapshots
|
||||
+# (downloaded snapshots drop their rustc in HROOT/bin)
|
||||
+# libdir discrepancy is worked around with RUSTFLAGS below.
|
||||
HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
|
||||
+else
|
||||
+HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_BINDIR_RELATIVE)
|
||||
+endif
|
||||
+
|
||||
HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/$$(CFG_LIBDIR_RELATIVE)
|
||||
|
||||
# Destinations of artifacts for target architectures
|
||||
diff --git a/mk/perf.mk b/mk/perf.mk
|
||||
index 16cbaab..f8a354c 100644
|
||||
--- a/mk/perf.mk
|
||||
+++ b/mk/perf.mk
|
||||
@@ -10,13 +10,13 @@
|
||||
|
||||
|
||||
ifdef CFG_PERF_TOOL
|
||||
-rustc-perf$(X): $(CFG_BUILD)/stage2/bin/rustc$(X_$(CFG_BUILD))
|
||||
+rustc-perf$(X): $(CFG_BUILD)/stage2/$(CFG_BINDIR_RELATIVE)/rustc$(X_$(CFG_BUILD))
|
||||
@$(call E, perf compile: $@)
|
||||
$(PERF_STAGE2_T_$(CFG_BUILD)_H_$(CFG_BUILD)) \
|
||||
-o $@ $(COMPILER_CRATE) >rustc-perf.err 2>&1
|
||||
$(Q)rm -f $(LIBRUSTC_GLOB)
|
||||
else
|
||||
-rustc-perf$(X): $(CFG_BUILD)/stage2/bin/rustc$(X_$(CFG_BUILD))
|
||||
+rustc-perf$(X): $(CFG_BUILD)/stage2/$(CFG_BINDIR_RELATIVE)/rustc$(X_$(CFG_BUILD))
|
||||
$(Q)touch $@
|
||||
endif
|
||||
|
||||
diff --git a/mk/prepare.mk b/mk/prepare.mk
|
||||
index e263a6d..45590ab 100644
|
||||
--- a/mk/prepare.mk
|
||||
+++ b/mk/prepare.mk
|
||||
@@ -186,10 +186,10 @@ INSTALL_DEBUGGER_SCRIPT_COMMANDS=$(if $(findstring windows,$(1)),\
|
||||
define DEF_PREPARE
|
||||
|
||||
prepare-base-$(1)-%: PREPARE_SOURCE_DIR=$$(PREPARE_HOST)/stage$$(PREPARE_STAGE)
|
||||
-prepare-base-$(1)-%: PREPARE_SOURCE_BIN_DIR=$$(PREPARE_SOURCE_DIR)/bin
|
||||
+prepare-base-$(1)-%: PREPARE_SOURCE_BIN_DIR=$$(PREPARE_SOURCE_DIR)/$$(CFG_BINDIR_RELATIVE)
|
||||
prepare-base-$(1)-%: PREPARE_SOURCE_LIB_DIR=$$(PREPARE_SOURCE_DIR)/$$(CFG_LIBDIR_RELATIVE)
|
||||
prepare-base-$(1)-%: PREPARE_SOURCE_MAN_DIR=$$(S)/man
|
||||
-prepare-base-$(1)-%: PREPARE_DEST_BIN_DIR=$$(PREPARE_DEST_DIR)/bin
|
||||
+prepare-base-$(1)-%: PREPARE_DEST_BIN_DIR=$$(PREPARE_DEST_DIR)/$$(CFG_BINDIR_RELATIVE)
|
||||
prepare-base-$(1)-%: PREPARE_DEST_LIB_DIR=$$(PREPARE_DEST_DIR)/$$(CFG_LIBDIR_RELATIVE)
|
||||
prepare-base-$(1)-%: PREPARE_DEST_MAN_DIR=$$(PREPARE_DEST_DIR)/share/man/man1
|
||||
|
||||
diff --git a/src/librustc/metadata/filesearch.rs b/src/librustc/metadata/filesearch.rs
|
||||
index 311ab1c..1b03b1a 100644
|
||||
--- a/src/librustc/metadata/filesearch.rs
|
||||
+++ b/src/librustc/metadata/filesearch.rs
|
||||
@@ -68,8 +68,7 @@ impl<'a> FileSearch<'a> {
|
||||
if !found {
|
||||
let rustpath = rust_path();
|
||||
for path in &rustpath {
|
||||
- let tlib_path = make_rustpkg_lib_path(
|
||||
- self.sysroot, path, self.triple);
|
||||
+ let tlib_path = make_rustpkg_lib_path(path, self.triple);
|
||||
debug!("is {} in visited_dirs? {}", tlib_path.display(),
|
||||
visited_dirs.contains(&tlib_path));
|
||||
|
||||
@@ -96,7 +95,7 @@ impl<'a> FileSearch<'a> {
|
||||
where F: FnMut(&Path, PathKind) -> FileMatch
|
||||
{
|
||||
self.for_each_lib_search_path(|lib_search_path, kind| {
|
||||
- debug!("searching {}", lib_search_path.display());
|
||||
+ info!("searching {}", lib_search_path.display());
|
||||
match fs::read_dir(lib_search_path) {
|
||||
Ok(files) => {
|
||||
let files = files.filter_map(|p| p.ok().map(|s| s.path()))
|
||||
@@ -157,7 +156,7 @@ impl<'a> FileSearch<'a> {
|
||||
// Returns a list of directories where target-specific tool binaries are located.
|
||||
pub fn get_tools_search_paths(&self) -> Vec<PathBuf> {
|
||||
let mut p = PathBuf::from(self.sysroot);
|
||||
- p.push(&find_libdir(self.sysroot));
|
||||
+ p.push(libdir_str());
|
||||
p.push(&rustlibdir());
|
||||
p.push(&self.triple);
|
||||
p.push("bin");
|
||||
@@ -165,8 +164,8 @@ impl<'a> FileSearch<'a> {
|
||||
}
|
||||
}
|
||||
|
||||
-pub fn relative_target_lib_path(sysroot: &Path, target_triple: &str) -> PathBuf {
|
||||
- let mut p = PathBuf::from(&find_libdir(sysroot));
|
||||
+pub fn relative_target_lib_path(target_triple: &str) -> PathBuf {
|
||||
+ let mut p = PathBuf::from(&libdir_str());
|
||||
assert!(p.is_relative());
|
||||
p.push(&rustlibdir());
|
||||
p.push(target_triple);
|
||||
@@ -176,17 +175,28 @@ pub fn relative_target_lib_path(sysroot: &Path, target_triple: &str) -> PathBuf
|
||||
|
||||
fn make_target_lib_path(sysroot: &Path,
|
||||
target_triple: &str) -> PathBuf {
|
||||
- sysroot.join(&relative_target_lib_path(sysroot, target_triple))
|
||||
+ sysroot.join(&relative_target_lib_path(target_triple))
|
||||
}
|
||||
|
||||
-fn make_rustpkg_lib_path(sysroot: &Path,
|
||||
- dir: &Path,
|
||||
+fn make_rustpkg_lib_path(dir: &Path,
|
||||
triple: &str) -> PathBuf {
|
||||
- let mut p = dir.join(&find_libdir(sysroot));
|
||||
+ let mut p = dir.join(libdir_str());
|
||||
p.push(triple);
|
||||
p
|
||||
}
|
||||
|
||||
+pub fn bindir_relative_str() -> &'static str {
|
||||
+ env!("CFG_BINDIR_RELATIVE")
|
||||
+}
|
||||
+
|
||||
+pub fn bindir_relative_path() -> PathBuf {
|
||||
+ PathBuf::from(bindir_relative_str())
|
||||
+}
|
||||
+
|
||||
+pub fn libdir_str() -> &'static str {
|
||||
+ env!("CFG_LIBDIR_RELATIVE")
|
||||
+}
|
||||
+
|
||||
pub fn get_or_default_sysroot() -> PathBuf {
|
||||
// Follow symlinks. If the resolved path is relative, make it absolute.
|
||||
fn canonicalize(path: Option<PathBuf>) -> Option<PathBuf> {
|
||||
@@ -202,7 +212,18 @@ pub fn get_or_default_sysroot() -> PathBuf {
|
||||
}
|
||||
|
||||
match canonicalize(env::current_exe().ok()) {
|
||||
- Some(mut p) => { p.pop(); p.pop(); p }
|
||||
+ Some(mut p) => {
|
||||
+ // Remove the exe name
|
||||
+ p.pop();
|
||||
+ let mut rel = bindir_relative_path();
|
||||
+
|
||||
+ // Remove a number of elements equal to the number of elements in the bindir relative
|
||||
+ // path
|
||||
+ while rel.pop() {
|
||||
+ p.pop();
|
||||
+ }
|
||||
+ p
|
||||
+ }
|
||||
None => panic!("can't determine value for sysroot")
|
||||
}
|
||||
}
|
||||
@@ -257,47 +278,6 @@ pub fn rust_path() -> Vec<PathBuf> {
|
||||
env_rust_path
|
||||
}
|
||||
|
||||
-// The name of the directory rustc expects libraries to be located.
|
||||
-// On Unix should be "lib", on windows "bin"
|
||||
-#[cfg(unix)]
|
||||
-fn find_libdir(sysroot: &Path) -> String {
|
||||
- // FIXME: This is a quick hack to make the rustc binary able to locate
|
||||
- // Rust libraries in Linux environments where libraries might be installed
|
||||
- // to lib64/lib32. This would be more foolproof by basing the sysroot off
|
||||
- // of the directory where librustc is located, rather than where the rustc
|
||||
- // binary is.
|
||||
- //If --libdir is set during configuration to the value other than
|
||||
- // "lib" (i.e. non-default), this value is used (see issue #16552).
|
||||
-
|
||||
- match option_env!("CFG_LIBDIR_RELATIVE") {
|
||||
- Some(libdir) if libdir != "lib" => return libdir.to_string(),
|
||||
- _ => if sysroot.join(&primary_libdir_name()).join(&rustlibdir()).exists() {
|
||||
- return primary_libdir_name();
|
||||
- } else {
|
||||
- return secondary_libdir_name();
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- #[cfg(target_pointer_width = "64")]
|
||||
- fn primary_libdir_name() -> String {
|
||||
- "lib64".to_string()
|
||||
- }
|
||||
-
|
||||
- #[cfg(target_pointer_width = "32")]
|
||||
- fn primary_libdir_name() -> String {
|
||||
- "lib32".to_string()
|
||||
- }
|
||||
-
|
||||
- fn secondary_libdir_name() -> String {
|
||||
- "lib".to_string()
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-#[cfg(windows)]
|
||||
-fn find_libdir(_sysroot: &Path) -> String {
|
||||
- "bin".to_string()
|
||||
-}
|
||||
-
|
||||
// The name of rustc's own place to organize libraries.
|
||||
// Used to be "rustc", now the default is "rustlib"
|
||||
pub fn rustlibdir() -> String {
|
||||
diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs
|
||||
index 6171ff1..32f41ff 100644
|
||||
--- a/src/librustc_trans/back/link.rs
|
||||
+++ b/src/librustc_trans/back/link.rs
|
||||
@@ -1033,11 +1033,10 @@ fn link_args(cmd: &mut Linker,
|
||||
// where extern libraries might live, based on the
|
||||
// addl_lib_search_paths
|
||||
if sess.opts.cg.rpath {
|
||||
- let sysroot = sess.sysroot();
|
||||
let target_triple = &sess.opts.target_triple;
|
||||
let mut get_install_prefix_lib_path = || {
|
||||
let install_prefix = option_env!("CFG_PREFIX").expect("CFG_PREFIX");
|
||||
- let tlib = filesearch::relative_target_lib_path(sysroot, target_triple);
|
||||
+ let tlib = filesearch::relative_target_lib_path(target_triple);
|
||||
let mut path = PathBuf::from(install_prefix);
|
||||
path.push(&tlib);
|
||||
|
||||
--
|
||||
2.4.10
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
From 68662f758244a476b64b0772d93c7a1731e9d1ad Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Wed, 3 Dec 2014 19:15:19 -0500
|
||||
Subject: [PATCH 6/9] 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 c204f79..b2f6f1d 100644
|
||||
--- a/src/libstd/thread/local.rs
|
||||
+++ b/src/libstd/thread/local.rs
|
||||
@@ -338,7 +338,7 @@ mod imp {
|
||||
#[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.4.10
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
From be3663fcd9ae11a207b3c1649917bfff3c69b1c4 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Mon, 2 Mar 2015 13:34:59 -0500
|
||||
Subject: [PATCH 7/9] 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 8b81702..4fed072 100644
|
||||
--- a/mk/install.mk
|
||||
+++ b/mk/install.mk
|
||||
@@ -12,7 +12,9 @@ RUN_INSALLER = 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.4.10
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
From d7aa5e6824e8658c01f702259eebac02553fb7b8 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Tue, 26 May 2015 12:09:36 -0400
|
||||
Subject: [PATCH 8/9] install: disable ldconfig
|
||||
|
||||
---
|
||||
mk/install.mk | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/mk/install.mk b/mk/install.mk
|
||||
index 4fed072..92e66cd 100644
|
||||
--- a/mk/install.mk
|
||||
+++ b/mk/install.mk
|
||||
@@ -13,8 +13,9 @@ RUN_INSALLER = cd tmp/empty_dir && \
|
||||
--prefix="$(DESTDIR)$(CFG_PREFIX)" \
|
||||
--libdir="$(DESTDIR)$(CFG_LIBDIR)" \
|
||||
--mandir="$(DESTDIR)$(CFG_MANDIR)" \
|
||||
- "$(MAYBE_DISABLE_VERIFY)"
|
||||
- --disable-rewrite-paths
|
||||
+ "$(MAYBE_DISABLE_VERIFY)" \
|
||||
+ --disable-rewrite-paths \
|
||||
+ --disable-ldconfig
|
||||
|
||||
install:
|
||||
ifeq (root user, $(USER) $(patsubst %,user,$(SUDO_USER)))
|
||||
--
|
||||
2.4.10
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
From e6888f9b888911bdbd52e2ee7c37914ee4cee0e2 Mon Sep 17 00:00:00 2001
|
||||
From: Steven Walter <swalter@lexmark.com>
|
||||
Date: Tue, 7 Jul 2015 14:57:42 -0400
|
||||
Subject: [PATCH 9/9] Remove crate metadata from symbol hashing
|
||||
|
||||
---
|
||||
src/librustc_trans/back/link.rs | 5 -----
|
||||
1 file changed, 5 deletions(-)
|
||||
|
||||
diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs
|
||||
index 32f41ff..2a87cd7 100644
|
||||
--- a/src/librustc_trans/back/link.rs
|
||||
+++ b/src/librustc_trans/back/link.rs
|
||||
@@ -212,11 +212,6 @@ fn symbol_hash<'tcx>(tcx: &ty::ctxt<'tcx>,
|
||||
symbol_hasher.reset();
|
||||
symbol_hasher.input_str(&link_meta.crate_name);
|
||||
symbol_hasher.input_str("-");
|
||||
- symbol_hasher.input_str(link_meta.crate_hash.as_str());
|
||||
- for meta in tcx.sess.crate_metadata.borrow().iter() {
|
||||
- symbol_hasher.input_str(&meta[..]);
|
||||
- }
|
||||
- symbol_hasher.input_str("-");
|
||||
symbol_hasher.input(&encoder::encoded_ty(tcx, t));
|
||||
// Prefix with 'h' so that it never blends into adjacent digits
|
||||
let mut hash = String::from("h");
|
||||
--
|
||||
2.4.10
|
||||
|
||||
@@ -1,158 +0,0 @@
|
||||
From 1bd3ab55ce24b2a54e021ba471a5f934b3b9ad6b Mon Sep 17 00:00:00 2001
|
||||
From: Steven Walter <swalter@lexmark.com>
|
||||
Date: Tue, 7 Jul 2015 16:49:44 -0400
|
||||
Subject: [PATCH 10/12] rustc_trans: make .note.rustc look more like debug info
|
||||
|
||||
Mark the global variable as const and private so the resulting section
|
||||
is not flagged as writable and to avoid putting an unnecessary symbol in
|
||||
the dynamic table of shared objects.
|
||||
|
||||
Unfortunately there doesn't seem to be a way to avoid the section being
|
||||
marked SHF_ALLOC when declared as a variable in LLVM. Hack around that
|
||||
by using objcopy to clear the flags on the section before the final
|
||||
link.
|
||||
|
||||
This places the section at the end of the executable so it can be
|
||||
stripped later without rearranging important code/data sections.
|
||||
---
|
||||
mk/platform.mk | 1 +
|
||||
src/librustc/session/config.rs | 2 ++
|
||||
src/librustc_back/target/mod.rs | 4 ++++
|
||||
src/librustc_trans/back/link.rs | 38 ++++++++++++++++++++++++++++++++++++++
|
||||
src/librustc_trans/trans/base.rs | 3 +++
|
||||
5 files changed, 48 insertions(+)
|
||||
|
||||
diff --git a/mk/platform.mk b/mk/platform.mk
|
||||
index 0c90632..4681783 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 objcopy=$$(call FIND_COMPILER,$$(OBJCOPY_$(1))) \
|
||||
-C ar=$$(call FIND_COMPILER,$$(AR_$(1))) $(RUSTC_CROSS_FLAGS_$(1))
|
||||
|
||||
RUSTC_FLAGS_$(1)=$$(RUSTC_CROSS_FLAGS_$(1)) $(RUSTC_FLAGS_$(1))
|
||||
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
|
||||
index ecb38d4..b74b3c4 100644
|
||||
--- a/src/librustc/session/config.rs
|
||||
+++ b/src/librustc/session/config.rs
|
||||
@@ -460,6 +460,8 @@ options! {CodegenOptions, CodegenSetter, basic_codegen_options,
|
||||
CG_OPTIONS, cg_type_desc, cgsetters,
|
||||
ar: Option<String> = (None, parse_opt_string,
|
||||
"tool to assemble archives with"),
|
||||
+ objcopy: Option<String> = (None, parse_opt_string,
|
||||
+ "system objcopy for manipulating objects"),
|
||||
linker: Option<String> = (None, parse_opt_string,
|
||||
"system linker to link outputs with"),
|
||||
link_args: Option<Vec<String>> = (None, parse_opt_list,
|
||||
diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs
|
||||
index 3ffa484..d52e67c 100644
|
||||
--- a/src/librustc_back/target/mod.rs
|
||||
+++ b/src/librustc_back/target/mod.rs
|
||||
@@ -110,6 +110,8 @@ pub struct TargetOptions {
|
||||
/// sysroot folder.
|
||||
pub pre_link_objects: Vec<String>,
|
||||
pub post_link_objects: Vec<String>,
|
||||
+ /// Path to objcopy. Defaults to "objcopy".
|
||||
+ pub objcopy: String,
|
||||
/// Default CPU to pass to LLVM. Corresponds to `llc -mcpu=$cpu`. Defaults
|
||||
/// to "default".
|
||||
pub cpu: String,
|
||||
@@ -198,6 +200,7 @@ impl Default for TargetOptions {
|
||||
ar: option_env!("CFG_DEFAULT_AR").unwrap_or("ar").to_string(),
|
||||
pre_link_args: Vec::new(),
|
||||
post_link_args: Vec::new(),
|
||||
+ objcopy: "objcopy".to_string(),
|
||||
cpu: "generic".to_string(),
|
||||
features: "".to_string(),
|
||||
dynamic_linking: false,
|
||||
@@ -314,6 +317,7 @@ impl Target {
|
||||
key!(cpu);
|
||||
key!(ar);
|
||||
key!(linker);
|
||||
+ key!(objcopy);
|
||||
key!(relocation_model);
|
||||
key!(code_model);
|
||||
key!(dll_prefix);
|
||||
diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs
|
||||
index 2a87cd7..53fa913 100644
|
||||
--- a/src/librustc_trans/back/link.rs
|
||||
+++ b/src/librustc_trans/back/link.rs
|
||||
@@ -393,6 +393,13 @@ fn command_path(sess: &Session) -> OsString {
|
||||
env::join_paths(new_path).unwrap()
|
||||
}
|
||||
|
||||
+pub fn get_objcopy_prog(sess: &Session) -> String {
|
||||
+ match sess.opts.cg.objcopy {
|
||||
+ Some(ref objcopy) => return objcopy.to_string(),
|
||||
+ None => sess.target.target.options.objcopy.clone(),
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
pub fn remove(sess: &Session, path: &Path) {
|
||||
match fs::remove_file(path) {
|
||||
Ok(..) => {}
|
||||
@@ -919,6 +926,34 @@ fn link_natively(sess: &Session, dylib: bool,
|
||||
}
|
||||
}
|
||||
|
||||
+fn fix_meta_section_attributes(sess: &Session, meta_name: &PathBuf) {
|
||||
+ // First, fix up the note section attributes. We want the SHF_ALLOC and
|
||||
+ // SHF_WRITE flags to be unset so the section will get placed near the
|
||||
+ // end along with the debug info. This allows the section to be
|
||||
+ // stripped later without renumbering important sections that
|
||||
+ // contain code and data.
|
||||
+ let objcopy = get_objcopy_prog(sess);
|
||||
+ let mut o_cmd = Command::new(&objcopy);
|
||||
+ o_cmd.arg("--rename-section")
|
||||
+ .arg(".note.rustc=.note.rustc,contents,noload,readonly")
|
||||
+ .arg(&meta_name);
|
||||
+ // Invoke objcopy
|
||||
+ info!("{:?}", o_cmd);
|
||||
+ match o_cmd.status() {
|
||||
+ Ok(exitstatus) => {
|
||||
+ if !exitstatus.success() {
|
||||
+ sess.err(&format!("objcopy failed with exit code {:?}", exitstatus.code()));
|
||||
+ sess.note(&format!("{:?}", &o_cmd));
|
||||
+ }
|
||||
+ },
|
||||
+ Err(exitstatus) => {
|
||||
+ sess.err(&format!("objcopy failed: {}", exitstatus));
|
||||
+ sess.note(&format!("{:?}", &o_cmd));
|
||||
+ }
|
||||
+ }
|
||||
+ sess.abort_if_errors();
|
||||
+}
|
||||
+
|
||||
fn link_args(cmd: &mut Linker,
|
||||
sess: &Session,
|
||||
dylib: bool,
|
||||
@@ -951,6 +986,9 @@ fn link_args(cmd: &mut Linker,
|
||||
// executable. This metadata is in a separate object file from the main
|
||||
// object file, so we link that in here.
|
||||
if dylib {
|
||||
+ let meta_name = outputs.with_extension("metadata.o");
|
||||
+
|
||||
+ fix_meta_section_attributes(sess, &meta_name);
|
||||
cmd.add_object(&outputs.with_extension("metadata.o"));
|
||||
}
|
||||
|
||||
diff --git a/src/librustc_trans/trans/base.rs b/src/librustc_trans/trans/base.rs
|
||||
index 14fea61..df019f7 100644
|
||||
--- a/src/librustc_trans/trans/base.rs
|
||||
+++ b/src/librustc_trans/trans/base.rs
|
||||
@@ -2560,6 +2560,9 @@ pub fn write_metadata(cx: &SharedCrateContext, krate: &hir::Crate,
|
||||
};
|
||||
unsafe {
|
||||
llvm::LLVMSetInitializer(llglobal, llconst);
|
||||
+ llvm::LLVMSetGlobalConstant(llglobal, llvm::True);
|
||||
+ llvm::LLVMSetUnnamedAddr(llglobal, llvm::True);
|
||||
+ llvm::SetLinkage(llglobal, llvm::Linkage::PrivateLinkage);
|
||||
let name = loader::meta_section_name(&cx.sess().target.target);
|
||||
let name = CString::new(name).unwrap();
|
||||
llvm::LLVMSetSection(llglobal, name.as_ptr())
|
||||
--
|
||||
1.9.1
|
||||
|
||||
@@ -1,78 +0,0 @@
|
||||
From 128a81ede6b188637743a37a582b2267a49d0a32 Mon Sep 17 00:00:00 2001
|
||||
From: Steven Walter <swalter@lexmark.com>
|
||||
Date: Wed, 18 Nov 2015 08:33:26 -0500
|
||||
Subject: [PATCH 11/12] 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 | 26 ++++++++++++++++++++++++--
|
||||
2 files changed, 26 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs
|
||||
index b74b3c4..a11cb90 100644
|
||||
--- a/src/librustc/session/config.rs
|
||||
+++ b/src/librustc/session/config.rs
|
||||
@@ -500,6 +500,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 53fa913..83619ae 100644
|
||||
--- a/src/librustc_trans/back/link.rs
|
||||
+++ b/src/librustc_trans/back/link.rs
|
||||
@@ -46,7 +46,7 @@ use std::str;
|
||||
use flate;
|
||||
use serialize::hex::ToHex;
|
||||
use syntax::ast;
|
||||
-use syntax::codemap::Span;
|
||||
+use syntax::codemap::{Span,BytePos,NO_EXPANSION};
|
||||
use syntax::parse::token::{self, InternedString};
|
||||
use syntax::attr::AttrMetaMethods;
|
||||
|
||||
@@ -185,9 +185,31 @@ pub fn find_crate_name(sess: Option<&Session>,
|
||||
|
||||
pub fn build_link_meta(sess: &Session, krate: &hir::Crate,
|
||||
name: &str) -> LinkMeta {
|
||||
+ let crate_hash = if sess.opts.cg.crate_hash != "" {
|
||||
+ let dummy_span = Span {
|
||||
+ lo: BytePos(0),
|
||||
+ hi: BytePos(0),
|
||||
+ expn_id: NO_EXPANSION
|
||||
+ };
|
||||
+ let dummy_module = hir::Mod {
|
||||
+ inner: dummy_span,
|
||||
+ items: vec!()
|
||||
+ };
|
||||
+ let dummy_krate = hir::Crate {
|
||||
+ module: dummy_module,
|
||||
+ attrs: vec!(),
|
||||
+ config: vec!(),
|
||||
+ span: dummy_span,
|
||||
+ exported_macros: vec!()
|
||||
+ };
|
||||
+
|
||||
+ Svh::calculate(&vec!(sess.opts.cg.crate_hash.clone()), &dummy_krate)
|
||||
+ } else {
|
||||
+ Svh::calculate(&sess.opts.cg.metadata, krate)
|
||||
+ };
|
||||
let r = LinkMeta {
|
||||
crate_name: name.to_owned(),
|
||||
- crate_hash: Svh::calculate(&sess.opts.cg.metadata, krate),
|
||||
+ crate_hash: crate_hash,
|
||||
};
|
||||
info!("{:?}", r);
|
||||
return r;
|
||||
--
|
||||
1.9.1
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
From d0fa41075317425b01262dd539c01e87e2eaf5f4 Mon Sep 17 00:00:00 2001
|
||||
From: Steven Walter <swalter@lexmark.com>
|
||||
Date: Wed, 18 Nov 2015 08:41:17 -0500
|
||||
Subject: [PATCH 12/12] 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 4681783..59aa560 100644
|
||||
--- a/mk/platform.mk
|
||||
+++ b/mk/platform.mk
|
||||
@@ -182,6 +182,7 @@ define CFG_MAKE_TOOLCHAIN
|
||||
LINK_$(1)=$(CROSS_PREFIX_$(1))$(LINK_$(1))
|
||||
RUSTC_CROSS_FLAGS_$(1)=-C linker=$$(call FIND_COMPILER,$$(LINK_$(1))) \
|
||||
-C objcopy=$$(call FIND_COMPILER,$$(OBJCOPY_$(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))
|
||||
--
|
||||
1.9.1
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
From 1fbfa088007054c655741e547bb3e72f1d5f1746 Mon Sep 17 00:00:00 2001
|
||||
From: Cody P Schafer <dev@codyps.com>
|
||||
Date: Thu, 4 Feb 2016 10:44:23 -0500
|
||||
Subject: [PATCH] mk: allow changing the platform configuration source
|
||||
directory
|
||||
|
||||
---
|
||||
configure | 4 +++-
|
||||
mk/platform.mk | 2 +-
|
||||
2 files changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 01c447b..0f004cf 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -650,6 +650,7 @@ valopt_nosave local-rust-root "/usr/local" "set prefix for local rust binary"
|
||||
valopt_nosave host "${CFG_BUILD}" "GNUs ./configure syntax LLVM host triples"
|
||||
valopt_nosave target "${CFG_HOST}" "GNUs ./configure syntax LLVM target triples"
|
||||
valopt_nosave mandir "${CFG_PREFIX}/share/man" "install man pages in PATH"
|
||||
+valopt_nosave platform-cfg "${CFG_SRC_DIR}/mk/cfg" "Location platform configuration for non-rust code"
|
||||
|
||||
# Temporarily support old triples until buildbots get updated
|
||||
CFG_BUILD=$(to_llvm_triple $CFG_BUILD)
|
||||
@@ -1110,7 +1111,7 @@ CFG_MANDIR=${CFG_MANDIR%/}
|
||||
CFG_HOST="$(echo $CFG_HOST | tr ',' ' ')"
|
||||
CFG_TARGET="$(echo $CFG_TARGET | tr ',' ' ')"
|
||||
CFG_SUPPORTED_TARGET=""
|
||||
-for target_file in ${CFG_SRC_DIR}mk/cfg/*.mk; do
|
||||
+for target_file in ${CFG_PLATFORM_CFG}/*.mk; do
|
||||
CFG_SUPPORTED_TARGET="${CFG_SUPPORTED_TARGET} $(basename "$target_file" .mk)"
|
||||
done
|
||||
|
||||
@@ -1763,6 +1764,7 @@ putvar CFG_AARCH64_LINUX_ANDROID_NDK
|
||||
putvar CFG_ARM_LINUX_ANDROIDEABI_NDK
|
||||
putvar CFG_I686_LINUX_ANDROID_NDK
|
||||
putvar CFG_MANDIR
|
||||
+putvar CFG_PLATFORM_CFG
|
||||
|
||||
# Avoid spurious warnings from clang by feeding it original source on
|
||||
# ccache-miss rather than preprocessed input.
|
||||
diff --git a/mk/platform.mk b/mk/platform.mk
|
||||
index 59aa560..a964d6f 100644
|
||||
--- a/mk/platform.mk
|
||||
+++ b/mk/platform.mk
|
||||
@@ -112,7 +112,7 @@ $(foreach cvar,CC CXX CPP CFLAGS CXXFLAGS CPPFLAGS, \
|
||||
|
||||
CFG_RLIB_GLOB=lib$(1)-*.rlib
|
||||
|
||||
-include $(wildcard $(CFG_SRC_DIR)mk/cfg/*.mk)
|
||||
+include $(wildcard $(CFG_PLATFORM_CFG)/*.mk)
|
||||
|
||||
define ADD_INSTALLED_OBJECTS
|
||||
INSTALLED_OBJECTS_$(1) += $$(call CFG_STATIC_LIB_NAME_$(1),compiler-rt)
|
||||
--
|
||||
2.7.0
|
||||
|
||||
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}
|
||||
}
|
||||
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"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user