@@ -47,16 +47,39 @@ jobs:
4747 needs : pre_flight_check
4848 strategy :
4949 matrix :
50- os : [ ubuntu-latest, windows-latest, macos-14 ]
50+ os : [ubuntu-latest, windows-latest, macos-14, ubuntu-24.04-arm ]
5151 qemu : [ '' ]
52+ musl : [ '' ]
5253 include :
5354 # Split ubuntu job for the sake of speed-up
5455 - os : ubuntu-latest
55- qemu : aarch64
56+ qemu : ppc64le
57+ musl : " "
5658 - os : ubuntu-latest
5759 qemu : ppc64le
60+ musl : musllinux
61+ - os : ubuntu-latest
62+ qemu : riscv64
63+ musl : " "
64+ - os : ubuntu-latest
65+ qemu : riscv64
66+ musl : musllinux
5867 - os : ubuntu-latest
5968 qemu : s390x
69+ musl : " "
70+ - os : ubuntu-latest
71+ qemu : s390x
72+ musl : musllinux
73+ - os : ubuntu-latest
74+ qemu : armv7l
75+ musl : " "
76+ - os : ubuntu-latest
77+ qemu : armv7l
78+ musl : musllinux
79+ - os : ubuntu-latest
80+ musl : musllinux
81+ - os : ubuntu-24.04-arm
82+ musl : musllinux
6083 steps :
6184 - name : Checkout
6285 uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
@@ -86,13 +109,48 @@ jobs:
86109 CIBW_ENVIRONMENT : CHARSET_NORMALIZER_USE_MYPYC='1'
87110 CIBW_TEST_REQUIRES : pytest
88111 CIBW_TEST_COMMAND : pytest -c {package} {package}/tests
89- CIBW_SKIP : " cp31?t-*"
112+ CIBW_SKIP : " cp31?t-* ${{ matrix.musl == 'musllinux' && '*manylinux*' || '*musllinux*' }} "
90113 - name : Upload artifacts
91114 uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
92115 with :
93116 name : dist-${{ matrix.os }}-${{ matrix.qemu }}
94117 path : ./wheelhouse/*.whl
95118
119+ checksum :
120+ name : Compute hashes
121+ runs-on : ubuntu-latest
122+ needs :
123+ - build-wheels
124+ - universal-wheel
125+ outputs :
126+ hashes : ${{ steps.compute.outputs.hashes }}
127+ steps :
128+ - uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
129+ - name : Download distributions
130+ uses : actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a
131+ with :
132+ name : dist
133+ path : dist
134+ - name : Collected dists
135+ run : |
136+ tree dist
137+ - name : Generate hashes
138+ id : compute # needs.checksum.outputs.hashes
139+ working-directory : ./dist
140+ run : echo "hashes=$(sha256sum * | base64 -w0)" >> $GITHUB_OUTPUT
141+
142+ provenance :
143+ needs : checksum
144+ uses : slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@f7dd8c54c2067bafc12ca7a55595d5ee9b75204a
145+ permissions :
146+ actions : read
147+ id-token : write
148+ contents : write
149+ with :
150+ base64-subjects : ${{ needs.checksum.outputs.hashes }}
151+ upload-assets : true
152+ compile-generator : true
153+
96154 deploy :
97155 name : 🚀 Deploy to PyPi
98156 runs-on : ubuntu-latest
@@ -101,8 +159,7 @@ jobs:
101159 id-token : write
102160 contents : write
103161 needs :
104- - build-wheels
105- - universal-wheel
162+ - provenance
106163 environment :
107164 name : pypi
108165 url : https://pypi.org/project/charset-normalizer/
0 commit comments