Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitfff5a54

Browse files
committed
ci: Merge sdist and wheel building workflows
This allows verifying that wheels can be installed after building, andthat the sdist can be built into a wheel without a second workflow.Also simplify some of the checking scripts.
1 parentf6a781f commitfff5a54

File tree

6 files changed

+111
-124
lines changed

6 files changed

+111
-124
lines changed

‎.github/workflows/cibuildsdist.yml

Lines changed: 0 additions & 74 deletions
This file was deleted.

‎.github/workflows/cibuildwheel.yml

Lines changed: 78 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,59 @@ permissions:
2222
contents:read
2323

2424
jobs:
25+
build_sdist:
26+
if:|
27+
github.event_name == 'push' ||
28+
github.event_name == 'pull_request' && (
29+
(
30+
github.event.action == 'labeled' &&
31+
github.event.label.name == 'CI: Run cibuildwheel'
32+
) ||
33+
contains(github.event.pull_request.labels.*.name,
34+
'CI: Run cibuildwheel')
35+
)
36+
name:Build sdist
37+
runs-on:ubuntu-20.04
38+
outputs:
39+
SDIST_NAME:${{ steps.sdist.outputs.SDIST_NAME }}
40+
41+
steps:
42+
-uses:actions/checkout@v3
43+
with:
44+
fetch-depth:0
45+
46+
-uses:actions/setup-python@v4
47+
name:Install Python
48+
with:
49+
python-version:3.9
50+
51+
# Something changed somewhere that prevents the downloaded-at-build-time
52+
# licenses from being included in built wheels, so pre-download them so
53+
# that they exist before the build and are included.
54+
-name:Pre-download bundled licenses
55+
run:>
56+
curl -Lo LICENSE/LICENSE_QHULL
57+
https://github.com/qhull/qhull/raw/2020.2/COPYING.txt
58+
59+
-name:Install dependencies
60+
run:python -m pip install build twine
61+
62+
-name:Build sdist
63+
id:sdist
64+
run:|
65+
python -m build --sdist
66+
python ci/export_sdist_name.py
67+
68+
-name:Check README rendering for PyPI
69+
run:twine check dist/*
70+
71+
-name:Upload sdist result
72+
uses:actions/upload-artifact@v3
73+
with:
74+
name:sdist
75+
path:dist/*.tar.gz
76+
if-no-files-found:error
77+
2578
build_wheels:
2679
if:|
2780
github.event_name == 'push' ||
@@ -30,21 +83,31 @@ jobs:
3083
github.event.action == 'labeled' &&
3184
github.event.label.name == 'CI: Run cibuildwheel'
3285
) ||
33-
contains(github.event.pull_request.labels.*.name, 'CI: Run cibuildwheel')
86+
contains(github.event.pull_request.labels.*.name,
87+
'CI: Run cibuildwheel')
3488
)
89+
needs:build_sdist
3590
name:Build wheels on ${{ matrix.os }}
3691
runs-on:${{ matrix.os }}
3792
env:
3893
CIBW_BEFORE_BUILD:>-
3994
pip install certifi oldest-supported-numpy &&
40-
git clean -fxdbuild
95+
rm -rf {package}/build
4196
CIBW_BEFORE_BUILD_WINDOWS:>-
4297
pip install certifi delvewheel oldest-supported-numpy &&
43-
git clean -fxdbuild
98+
rm -rf {package}/build
4499
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS:>-
45100
delvewheel repair -w {dest_dir} {wheel}
101+
CIBW_AFTER_BUILD:>-
102+
twine check {wheel} &&
103+
python {package}/ci/check_wheel_licenses.py {wheel}
46104
CIBW_MANYLINUX_X86_64_IMAGE:manylinux2014
47105
CIBW_SKIP:"*-musllinux*"
106+
CIBW_TEST_COMMAND:>-
107+
python {package}/ci/check_version_number.py
108+
# Apple Silicon machines are not available for testing, so silence the
109+
# warning from cibuildwheel. Remove the skip when they're available.
110+
CIBW_TEST_SKIP:"*-macosx_arm64 *-macosx_universal2:arm64"
48111
MACOSX_DEPLOYMENT_TARGET:"10.12"
49112
MPL_DISABLE_FH4:"yes"
50113
strategy:
@@ -66,47 +129,45 @@ jobs:
66129
with:
67130
platforms:arm64
68131

69-
-uses:actions/checkout@v3
132+
-name:Download sdist
133+
uses:actions/download-artifact@v3
70134
with:
71-
fetch-depth:0
72-
73-
# Something changed somewhere that prevents the downloaded-at-build-time
74-
# licenses from being included in built wheels, so pre-download them so
75-
# that they exist before the build and are included.
76-
-name:Pre-download bundled licenses
77-
run:>
78-
curl -Lo LICENSE/LICENSE_QHULL
79-
https://github.com/qhull/qhull/raw/2020.2/COPYING.txt
135+
name:sdist
136+
path:dist/
80137

81138
-name:Build wheels for CPython 3.11
82139
uses:pypa/cibuildwheel@v2.13.0
140+
with:
141+
package-dir:dist/${{ needs.build_sdist.outputs.SDIST_NAME }}
83142
env:
84143
CIBW_BUILD:"cp311-*"
85144
CIBW_ARCHS:${{ matrix.cibw_archs }}
86145

87146
-name:Build wheels for CPython 3.10
88147
uses:pypa/cibuildwheel@v2.13.0
148+
with:
149+
package-dir:dist/${{ needs.build_sdist.outputs.SDIST_NAME }}
89150
env:
90151
CIBW_BUILD:"cp310-*"
91152
CIBW_ARCHS:${{ matrix.cibw_archs }}
92153

93154
-name:Build wheels for CPython 3.9
94155
uses:pypa/cibuildwheel@v2.13.0
156+
with:
157+
package-dir:dist/${{ needs.build_sdist.outputs.SDIST_NAME }}
95158
env:
96159
CIBW_BUILD:"cp39-*"
97160
CIBW_ARCHS:${{ matrix.cibw_archs }}
98161

99162
-name:Build wheels for PyPy
100163
uses:pypa/cibuildwheel@v2.13.0
164+
with:
165+
package-dir:dist/${{ needs.build_sdist.outputs.SDIST_NAME }}
101166
env:
102167
CIBW_BUILD:"pp39-*"
103168
CIBW_ARCHS:${{ matrix.cibw_archs }}
104169
if:matrix.cibw_archs != 'aarch64'
105170

106-
-name:Validate that LICENSE files are included in wheels
107-
run:|
108-
python3 ./ci/check_wheel_licenses.py
109-
110171
-uses:actions/upload-artifact@v3
111172
with:
112173
name:wheels

‎ci/check_version_number.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,11 @@
99
$ pip install dist/matplotlib*.whl for wheel
1010
$ ./ci/check_version_number.py
1111
"""
12-
importmatplotlib
13-
1412
importsys
1513

16-
EXIT_SUCCESS=0
17-
EXIT_FAILURE=1
14+
importmatplotlib
1815

1916

2017
print(f"Version{matplotlib.__version__} installed")
2118
ifmatplotlib.__version__[0]=="0":
22-
sys.exit(EXIT_FAILURE)
23-
sys.exit(EXIT_SUCCESS)
19+
sys.exit("Version incorrectly starts with 0")

‎ci/check_wheel_licenses.py

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,33 @@
11
#!/usr/bin/env python3
22

33
"""
4-
Check that all .whl files in the dist folder have the correct LICENSE files
5-
included.
4+
Check that all specified .whl files have the correct LICENSE files included.
65
76
To run:
8-
$ python3setup.py bdist_wheel
9-
$ ./ci/check_wheel_licenses.py
7+
$ python3-m build --wheel
8+
$ ./ci/check_wheel_licenses.py dist/*.whl
109
"""
1110

1211
frompathlibimportPath
1312
importsys
1413
importzipfile
1514

16-
EXIT_SUCCESS=0
17-
EXIT_FAILURE=1
15+
16+
iflen(sys.argv)<=1:
17+
sys.exit('At least one wheel must be specified in command-line arguments.')
1818

1919
project_dir=Path(__file__).parent.resolve().parent
20-
dist_dir=project_dir/'dist'
2120
license_dir=project_dir/'LICENSE'
2221

2322
license_file_names= {path.nameforpathinsorted(license_dir.glob('*'))}
24-
forwheelindist_dir.glob('*.whl'):
23+
forwheelinsys.argv[1:]:
2524
print(f'Checking LICENSE files in:{wheel}')
2625
withzipfile.ZipFile(wheel)asf:
2726
wheel_license_file_names= {Path(path).name
2827
forpathinsorted(f.namelist())
2928
if'.dist-info/LICENSE'inpath}
3029
ifnot (len(wheel_license_file_names)and
3130
wheel_license_file_names.issuperset(license_file_names)):
32-
print(f'LICENSE file(s) missing:\n'
33-
f'{wheel_license_file_names} !=\n'
34-
f'{license_file_names}')
35-
sys.exit(EXIT_FAILURE)
36-
sys.exit(EXIT_SUCCESS)
31+
sys.exit(f'LICENSE file(s) missing:\n'
32+
f'{wheel_license_file_names} !=\n'
33+
f'{license_file_names}')

‎ci/export_sdist_name.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!/usr/bin/env python3
2+
3+
"""
4+
Determine the name of the sdist and export to GitHub output named SDIST_NAME.
5+
6+
To run:
7+
$ python3 -m build --sdist
8+
$ ./ci/determine_sdist_name.py
9+
"""
10+
importos
11+
frompathlibimportPath
12+
importsys
13+
14+
15+
paths= [p.nameforpinPath("dist").glob("*.tar.gz")]
16+
iflen(paths)!=1:
17+
sys.exit(f"Only a single sdist is supported, but found:{paths}")
18+
19+
print(paths[0])
20+
withopen(os.environ["GITHUB_OUTPUT"],"a")asf:
21+
f.write(f"SDIST_NAME={paths[0]}\n")

‎ci/silence

Lines changed: 0 additions & 14 deletions
This file was deleted.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp