Skip to content

Commit bf04942

Browse files
committed
Refactor CI
Add more targets
1 parent 1151e01 commit bf04942

File tree

17 files changed

+197
-108
lines changed

17 files changed

+197
-108
lines changed

.github/workflows/runtest.yml

+8-6
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@ name: Run Test
22
on:
33
workflow_call:
44
inputs:
5-
arch:
6-
required: true
7-
type: string
85
target:
96
required: true
107
type: string
@@ -33,10 +30,15 @@ jobs:
3330
toolchain: ${{ inputs.channel }}
3431
default: true
3532
target: ${{ inputs.target }}
33+
components: clippy
3634

3735
- run: echo "RUSTFLAGS=-C target-feature=${{ inputs.target-features }}" >> $GITHUB_ENV
38-
shell: bash
36+
37+
- name: Clippy
38+
run: cargo clippy --target ${{ inputs.target }} ${{ inputs.extra-features }} --no-deps -- -D clippy::pedantic
3939

4040
- name: Test
41-
run: ./ci/run-docker.sh ${{ inputs.arch }} ${{ inputs.target }} ${{ inputs.extra-features }}
42-
shell: bash
41+
run: ci/run-docker.sh ${{ inputs.target }} ${{ inputs.extra-features }}
42+
43+
- name: Doc
44+
run: cargo doc --target ${{ inputs.target }} ${{ inputs.extra-features }} --no-deps

.github/workflows/rust.yml

+53-94
Original file line numberDiff line numberDiff line change
@@ -14,156 +14,115 @@ jobs:
1414
steps:
1515
- uses: actions/checkout@v4
1616

17+
- run: rustup update --no-self-update
18+
1719
- name: Rustfmt Check
1820
run: cargo fmt --all --check
1921

20-
clippy:
21-
name: Clippy Check of ${{ matrix.impl.name }}
22-
runs-on: ubuntu-latest
23-
24-
strategy:
25-
matrix:
26-
impl:
27-
- name: AES-NI
28-
target: x86_64-unknown-linux-gnu
29-
caps: X86_64_UNKNOWN_LINUX_GNU
30-
target-features: +sse4.1,+aes
31-
- name: AES-NI with VAES
32-
target: x86_64-unknown-linux-gnu
33-
caps: X86_64_UNKNOWN_LINUX_GNU
34-
target-features: +vaes
35-
extra-features: --features=nightly
36-
- name: AES-NI with VAES and AVX-512
37-
target: x86_64-unknown-linux-gnu
38-
caps: X86_64_UNKNOWN_LINUX_GNU
39-
target-features: +vaes,+avx512f
40-
extra-features: --features=nightly
41-
- name: Neon
42-
target: aarch64-unknown-linux-gnu
43-
caps: AARCH64_UNKNOWN_LINUX_GNU
44-
target-features: +aes
45-
- name: ARMv8
46-
target: armv7-unknown-linux-gnueabihf
47-
caps: ARMV7_UNKNOWN_LINUX_GNUEABIHF
48-
target-features: +v8,+aes
49-
extra-features: --features=nightly
50-
- name: RV64
51-
target: riscv64gc-unknown-linux-gnu
52-
caps: RISCV64GC_UNKNOWN_LINUX_GNU
53-
target-features: +zkne,+zknd
54-
- name: RV32
55-
target: riscv32i-unknown-none-elf
56-
caps: RISCV32I_UNKNOWN_NONE_ELF
57-
target-features: +zkne,+zknd
58-
- name: Software
59-
target: x86_64-unknown-linux-gnu
60-
caps: X86_64_UNKNOWN_LINUX_GNU
61-
target-features: ''
62-
- name: Constant-Time
63-
target: x86_64-unknown-linux-gnu
64-
caps: X86_64_UNKNOWN_LINUX_GNU
65-
target-features: ''
66-
extra-features: --features=constant-time
67-
steps:
68-
- uses: actions/checkout@v3
69-
70-
- run: ${{ format('echo "CARGO_TARGET_{0}_RUSTFLAGS=-C target-feature={1}" >> $GITHUB_ENV', matrix.impl.caps, matrix.impl.target-features) }}
71-
72-
- name: Install Rust
73-
uses: actions-rs/toolchain@v1
74-
with:
75-
toolchain: nightly
76-
target: ${{ matrix.impl.target }}
77-
components: clippy
78-
profile: minimal
79-
override: true
80-
81-
- name: Clippy Check
82-
run: cargo clippy --target ${{ matrix.impl.target }} ${{ matrix.impl.extra-features }} --no-deps -- -D clippy::pedantic
83-
8422
test-aesni:
8523
strategy:
24+
fail-fast: false
8625
matrix:
8726
channel: [ stable, beta, nightly ]
88-
name: Test of AESNI with ${{ matrix.channel }}
27+
target:
28+
- x86_64-unknown-linux-gnu
29+
- i686-unknown-linux-gnu
30+
- x86_64-unknown-linux-gnux32
8931
uses: ./.github/workflows/runtest.yml
9032
with:
91-
arch: x86_64
92-
target: x86_64-unknown-linux-gnu
33+
target: ${{ matrix.target }}
9334
channel: ${{ matrix.channel }}
9435
target-features: +sse4.1,+aes
9536

9637
test-aesni-vaes:
97-
name: Test of AESNI with VAES
38+
strategy:
39+
fail-fast: false
40+
matrix:
41+
target:
42+
- x86_64-unknown-linux-gnu
43+
- i686-unknown-linux-gnu
44+
- x86_64-unknown-linux-gnux32
9845
uses: ./.github/workflows/runtest.yml
9946
with:
100-
arch: x86_64
101-
target: x86_64-unknown-linux-gnu
47+
target: ${{ matrix.target }}
10248
channel: nightly
10349
target-features: +vaes
10450
extra-features: --features=nightly
10551

10652
test-aesni-vaes-avx512:
107-
name: Test of AESNI with VAES and AVX512F
53+
strategy:
54+
fail-fast: false
55+
matrix:
56+
target:
57+
- x86_64-unknown-linux-gnu
58+
- i686-unknown-linux-gnu
59+
- x86_64-unknown-linux-gnux32
10860
uses: ./.github/workflows/runtest.yml
10961
with:
110-
arch: x86_64
111-
target: x86_64-unknown-linux-gnu
62+
target: ${{ matrix.target }}
11263
channel: nightly
11364
target-features: +vaes,+avx512f
11465
extra-features: --features=nightly
11566

11667
test-neon:
11768
strategy:
69+
fail-fast: false
11870
matrix:
11971
channel: [ stable, beta, nightly ]
120-
name: Test of Neon on AArch64 with ${{ matrix.channel }}
12172
uses: ./.github/workflows/runtest.yml
12273
with:
123-
arch: aarch64
12474
target: aarch64-unknown-linux-gnu
12575
channel: ${{ matrix.channel }}
12676
target-features: +aes
12777

12878
test-armv8:
129-
name: Test of Neon on ARMv8
79+
strategy:
80+
fail-fast: false
81+
matrix:
82+
target:
83+
- armv7-unknown-linux-gnueabihf
84+
- armv7-unknown-linux-gnueabi
85+
- thumbv7neon-unknown-linux-gnueabihf
13086
uses: ./.github/workflows/runtest.yml
13187
with:
132-
arch: arm
13388
target: armv7-unknown-linux-gnueabihf
13489
channel: nightly
13590
target-features: +v8,+aes
13691
extra-features: --features=nightly
13792

13893
test-riscv64:
139-
name: Test of RiscV-64
14094
uses: ./.github/workflows/runtest.yml
14195
with:
142-
arch: riscv64
14396
target: riscv64gc-unknown-linux-gnu
14497
channel: nightly
14598
target-features: +zkne,+zknd
14699
extra-features: --features=nightly
147100

148101
test-software:
149102
strategy:
103+
fail-fast: false
150104
matrix:
151105
channel: [ stable, beta, nightly ]
152-
name: Test of Software Implementation with ${{ matrix.channel }}
153-
uses: ./.github/workflows/runtest.yml
154-
with:
155-
arch: x86_64
156-
target: x86_64-unknown-linux-gnu
157-
channel: ${{ matrix.channel }}
158-
159-
test-constant-time:
160-
strategy:
161-
matrix:
162-
channel: [ stable, beta, nightly ]
163-
name: Test of Constant-time Implementation with ${{ matrix.channel }}
106+
target:
107+
- x86_64-unknown-linux-gnu
108+
- i686-unknown-linux-gnu
109+
- x86_64-unknown-linux-gnux32
110+
- aarch64-unknown-linux-gnu
111+
- armv7-unknown-linux-gnueabi
112+
- armv7-unknown-linux-gnueabihf
113+
- thumbv7neon-unknown-linux-gnueabihf
114+
- riscv64gc-unknown-linux-gnu
115+
- powerpc-unknown-linux-gnu
116+
- powerpc64-unknown-linux-gnu
117+
- powerpc64le-unknown-linux-gnu
118+
- s390x-unknown-linux-gnu
119+
- i586-unknown-linux-gnu
120+
- sparc64-unknown-linux-gnu
121+
extra-features:
122+
- ''
123+
- --features=constant-time
164124
uses: ./.github/workflows/runtest.yml
165125
with:
166-
arch: x86_64
167-
target: x86_64-unknown-linux-gnu
126+
target: ${{ matrix.target }}
168127
channel: ${{ matrix.channel }}
169-
extra-features: --features=constant-time
128+
extra-features: ${{ matrix.extra-features }}
File renamed without changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM ubuntu:24.04
2+
RUN apt-get update && apt-get install -y --no-install-recommends \
3+
gcc \
4+
ca-certificates \
5+
libc6-dev \
6+
gcc-arm-linux-gnueabi \
7+
libc6-dev-armel-cross \
8+
qemu-user \
9+
make \
10+
file
11+
12+
ENV CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABI_LINKER=arm-linux-gnueabi-gcc \
13+
CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABI_RUNNER="qemu-arm -L /usr/arm-linux-gnueabi"

ci/docker/arm ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
1010
file
1111

1212
ENV CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \
13-
CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-arm -L /usr/arm-linux-gnueabihf"
13+
CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-armhf -L /usr/arm-linux-gnueabihf"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
FROM ubuntu:24.04
2+
RUN apt-get update && apt-get install -y --no-install-recommends \
3+
gcc-multilib \
4+
ca-certificates \
5+
libc6-dev \
6+
make \
7+
file
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM ubuntu:24.04
2+
RUN apt-get update && apt-get install -y --no-install-recommends \
3+
gcc-multilib \
4+
ca-certificates \
5+
libc6-dev \
6+
wget \
7+
xz-utils \
8+
make \
9+
file
10+
11+
RUN wget https://downloadmirror.intel.com/843185/sde-external-9.48.0-2024-11-25-lin.tar.xz
12+
RUN tar -xJf sde-external-9.48.0-2024-11-25-lin.tar.xz
13+
ENV CARGO_TARGET_I686_UNKNOWN_LINUX_GNU_RUNNER="/sde-external-9.48.0-2024-11-25-lin/sde -future --"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM ubuntu:24.04
2+
RUN apt-get update && apt-get install -y --no-install-recommends \
3+
gcc \
4+
ca-certificates \
5+
libc6-dev \
6+
gcc-powerpc-linux-gnu \
7+
libc6-dev-powerpc-cross \
8+
qemu-user \
9+
make \
10+
file
11+
12+
ENV CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_LINKER=powerpc-linux-gnu-gcc \
13+
CARGO_TARGET_POWERPC_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc -L /usr/powerpc-linux-gnu"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM ubuntu:24.04
2+
RUN apt-get update && apt-get install -y --no-install-recommends \
3+
gcc \
4+
ca-certificates \
5+
libc6-dev \
6+
gcc-powerpc64-linux-gnu \
7+
libc6-dev-ppc64-cross \
8+
qemu-user \
9+
make \
10+
file
11+
12+
ENV CARGO_TARGET_POWERPC64_UNKNOWN_LINUX_GNU_LINKER=powerpc64-linux-gnu-gcc \
13+
CARGO_TARGET_POWERPC64_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc64 -L /usr/powerpc64-linux-gnu -cpu power10"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM ubuntu:24.04
2+
RUN apt-get update && apt-get install -y --no-install-recommends \
3+
gcc \
4+
ca-certificates \
5+
libc6-dev \
6+
gcc-powerpc64le-linux-gnu \
7+
libc6-dev-ppc64el-cross \
8+
qemu-user \
9+
make \
10+
file
11+
12+
ENV CARGO_TARGET_POWERPC64LE_UNKNOWN_LINUX_GNU_LINKER=powerpc64le-linux-gnu-gcc \
13+
CARGO_TARGET_POWERPC64LE_UNKNOWN_LINUX_GNU_RUNNER="qemu-ppc64le -L /usr/powerpc64le-linux-gnu -cpu power10"
File renamed without changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM ubuntu:24.04
2+
RUN apt-get update && apt-get install -y --no-install-recommends \
3+
gcc \
4+
ca-certificates \
5+
libc6-dev \
6+
gcc-s390x-linux-gnu \
7+
libc6-dev-s390x-cross \
8+
qemu-user \
9+
make \
10+
file
11+
12+
ENV CARGO_TARGET_S390X_UNKNOWN_LINUX_GNU_LINKER=s390x-linux-gnu-gcc \
13+
CARGO_TARGET_S390X_UNKNOWN_LINUX_GNU_RUNNER="qemu-s390x -L /usr/s390x-linux-gnu"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM ubuntu:24.04
2+
RUN apt-get update && apt-get install -y --no-install-recommends \
3+
gcc \
4+
ca-certificates \
5+
libc6-dev \
6+
gcc-sparc64-linux-gnu \
7+
libc6-dev-sparc64-cross \
8+
qemu-user \
9+
make \
10+
file
11+
12+
ENV CARGO_TARGET_SPARC64_UNKNOWN_LINUX_GNU_LINKER=sparc64-linux-gnu-gcc \
13+
CARGO_TARGET_SPARC64_UNKNOWN_LINUX_GNU_RUNNER="qemu-sparc64 -L /usr/sparc64-linux-gnu"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM ubuntu:24.04
2+
RUN apt-get update && apt-get install -y --no-install-recommends \
3+
gcc \
4+
ca-certificates \
5+
libc6-dev \
6+
gcc-arm-linux-gnueabihf \
7+
libc6-dev-armhf-cross \
8+
qemu-user \
9+
make \
10+
file
11+
12+
ENV CARGO_TARGET_THUMBV7NEON_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \
13+
CARGO_TARGET_THUMBV7NEON_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-armhf -L /usr/arm-linux-gnueabihf"

ci/docker/x86_64 ci/docker/x86_64-unknown-linux-gnu/Dockerfile

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
88
make \
99
file
1010

11-
RUN wget https://downloadmirror.intel.com/823664/sde-external-9.38.0-2024-04-18-lin.tar.xz
12-
RUN tar -xJf sde-external-9.38.0-2024-04-18-lin.tar.xz
13-
ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER="/sde-external-9.38.0-2024-04-18-lin/sde64 -future --"
11+
RUN wget https://downloadmirror.intel.com/843185/sde-external-9.48.0-2024-11-25-lin.tar.xz
12+
RUN tar -xJf sde-external-9.48.0-2024-11-25-lin.tar.xz
13+
ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER="/sde-external-9.48.0-2024-11-25-lin/sde64 -future --"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
FROM ubuntu:24.04
2+
RUN apt-get update && apt-get install -y --no-install-recommends \
3+
gcc \
4+
ca-certificates \
5+
libc6-dev \
6+
gcc-x86-64-linux-gnux32 \
7+
libc6-dev-x32-cross \
8+
wget \
9+
xz-utils \
10+
make \
11+
file
12+
13+
ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNUX32_LINKER=x86-64-linux-gnux32-gcc
14+
15+
RUN wget https://downloadmirror.intel.com/843185/sde-external-9.48.0-2024-11-25-lin.tar.xz
16+
RUN tar -xJf sde-external-9.48.0-2024-11-25-lin.tar.xz
17+
ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNUX32_RUNNER="/sde-external-9.48.0-2024-11-25-lin/sde64 -future --"

0 commit comments

Comments
 (0)