Skip to content

Commit 5129ce0

Browse files
committed
Add listenfd.
1 parent 1c71989 commit 5129ce0

File tree

1 file changed

+120
-1
lines changed

1 file changed

+120
-1
lines changed

.github/workflows/test-users.yml

Lines changed: 120 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,125 @@ name: Test rustix's users
55
on: workflow_dispatch
66

77
jobs:
8+
listenfd:
9+
name: listenfd ported to rustix
10+
runs-on: ${{ matrix.os }}
11+
strategy:
12+
matrix:
13+
build: [ubuntu, i686-linux, aarch64-linux, powerpc64le-linux, riscv64-linux, arm-linux, macos-11]
14+
include:
15+
- build: ubuntu
16+
os: ubuntu-latest
17+
rust: nightly
18+
- build: i686-linux
19+
os: ubuntu-latest
20+
rust: nightly
21+
target: i686-unknown-linux-gnu
22+
gcc_package: gcc-i686-linux-gnu
23+
gcc: i686-linux-gnu-gcc
24+
libc_package: libc-dev-i386-cross
25+
- build: aarch64-linux
26+
os: ubuntu-latest
27+
rust: nightly
28+
target: aarch64-unknown-linux-gnu
29+
gcc_package: gcc-aarch64-linux-gnu
30+
gcc: aarch64-linux-gnu-gcc
31+
qemu: qemu-aarch64 -L /usr/aarch64-linux-gnu
32+
qemu_target: aarch64-linux-user
33+
- build: powerpc64le-linux
34+
os: ubuntu-latest
35+
rust: nightly
36+
target: powerpc64le-unknown-linux-gnu
37+
gcc_package: gcc-powerpc64le-linux-gnu
38+
gcc: powerpc64le-linux-gnu-gcc
39+
qemu: qemu-ppc64le -L /usr/powerpc64le-linux-gnu
40+
qemu_target: ppc64le-linux-user
41+
- build: riscv64-linux
42+
os: ubuntu-latest
43+
rust: nightly
44+
target: riscv64gc-unknown-linux-gnu
45+
gcc_package: gcc-riscv64-linux-gnu
46+
gcc: riscv64-linux-gnu-gcc
47+
qemu: qemu-riscv64 -L /usr/riscv64-linux-gnu
48+
qemu_target: riscv64-linux-user
49+
- build: arm-linux
50+
os: ubuntu-latest
51+
rust: nightly
52+
target: armv5te-unknown-linux-gnueabi
53+
gcc_package: gcc-arm-linux-gnueabi
54+
gcc: arm-linux-gnueabi-gcc
55+
qemu: qemu-arm -L /usr/arm-linux-gnueabi
56+
qemu_target: arm-linux-user
57+
- build: macos-11
58+
os: macos-11
59+
rust: nightly
60+
steps:
61+
- uses: actions/checkout@v2
62+
- uses: ./.github/actions/install-rust
63+
with:
64+
toolchain: ${{ matrix.rust }}
65+
- uses: actions/checkout@v2
66+
with:
67+
repository: sunfishcode/rust-listenfd
68+
path: rust-listenfd
69+
- uses: actions/checkout@v2
70+
with:
71+
repository: davidedelpapa/thttp
72+
path: thttp
73+
74+
- name: Configure Cargo target
75+
run: |
76+
echo CARGO_BUILD_TARGET=${{ matrix.target }} >> $GITHUB_ENV
77+
rustup target add ${{ matrix.target }}
78+
if: matrix.target != ''
79+
80+
- name: Install cross-compilation tools
81+
run: |
82+
set -ex
83+
sudo apt-get update
84+
sudo apt-get install -y ${{ matrix.gcc_package }} ninja-build
85+
upcase=$(echo ${{ matrix.target }} | awk '{ print toupper($0) }' | sed 's/-/_/g')
86+
echo CARGO_TARGET_${upcase}_LINKER=${{ matrix.gcc }} >> $GITHUB_ENV
87+
if: matrix.gcc_package != '' && matrix.os == 'ubuntu-latest'
88+
89+
- name: Install cross-compilation libraries
90+
run: |
91+
set -ex
92+
sudo apt-get update
93+
sudo apt-get install -y ${{ matrix.libc_package }}
94+
if: matrix.libc_package != '' && matrix.os == 'ubuntu-latest'
95+
96+
- name: Install qemu
97+
run: |
98+
set -ex
99+
# Download and build qemu from source since the most recent release is
100+
# way faster at arm emulation than the current version github actions'
101+
# ubuntu image uses. Disable as much as we can to get it to build
102+
# quickly.
103+
cd
104+
curl https://download.qemu.org/qemu-6.1.0.tar.xz | tar xJf -
105+
cd qemu-6.1.0
106+
./configure --target-list=${{ matrix.qemu_target }} --prefix=$HOME/qemu --disable-tools --disable-slirp --disable-fdt --disable-capstone --disable-docs
107+
make -j$(nproc) install
108+
109+
# Configure Cargo for cross compilation and tell it how it can run
110+
# cross executables
111+
upcase=$(echo ${{ matrix.target }} | awk '{ print toupper($0) }' | sed 's/-/_/g')
112+
echo CARGO_TARGET_${upcase}_RUNNER=$HOME/qemu/bin/${{ matrix.qemu }} >> $GITHUB_ENV
113+
if: matrix.qemu != '' && matrix.os == 'ubuntu-latest'
114+
115+
- run: cargo install systemfd
116+
117+
- run: cd rust-listenfd && echo '[patch.crates-io]' >> Cargo.toml
118+
- run: cd rust-listenfd && echo 'rustix = { path = ".." }' >> Cargo.toml
119+
120+
- run: cd thttp && echo '[patch.crates-io]' >> Cargo.toml
121+
- run: cd thttp && echo 'listenfd = { path = "../rust-listenfd" }' >> Cargo.toml
122+
123+
- run: cd thttp && systemfd --no-pid -s http::0.0.0.0:5052 -- cargo run &
124+
- run: wget http://127.0.0.1:5052/Cargo.toml
125+
- run: diff -u Cargo.toml Cargo.toml.1
126+
8127
async-io:
9128
name: async-io ported to rustix
10129
runs-on: ${{ matrix.os }}
@@ -774,7 +893,7 @@ jobs:
774893
toolchain: ${{ matrix.rust }}
775894
- uses: actions/checkout@v2
776895
with:
777-
repository: cgwalters/cap-std-ext
896+
repository: coreos/cap-std-ext
778897
path: cap-std-ext
779898

780899
- name: Configure Cargo target

0 commit comments

Comments
 (0)