Skip to content

Commit 1699e54

Browse files
authored
Merge pull request #609 from dhellmann/build-parallel
add build-parallel command
2 parents f4cb469 + 2921470 commit 1699e54

17 files changed

Lines changed: 757 additions & 11 deletions

.github/workflows/test.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ jobs:
8888
- bootstrap_skip_constraints
8989
- build
9090
- build_order
91+
- build_parallel
9192
- build_sequence_git_url
9293
- build_steps
9394
- build_settings

.mergify.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ pull_request_rules:
5050
- check-success=e2e (3.11, 1.75, bootstrap_skip_constraints, ubuntu-latest)
5151
- check-success=e2e (3.11, 1.75, build, ubuntu-latest)
5252
- check-success=e2e (3.11, 1.75, build_order, ubuntu-latest)
53+
- check-success=e2e (3.11, 1.75, build_parallel, ubuntu-latest)
5354
- check-success=e2e (3.11, 1.75, build_sequence_git_url, ubuntu-latest)
5455
- check-success=e2e (3.11, 1.75, build_settings, ubuntu-latest)
5556
- check-success=e2e (3.11, 1.75, build_steps, ubuntu-latest)
@@ -94,6 +95,8 @@ pull_request_rules:
9495
- check-success=e2e (3.12, 1.75, build, ubuntu-latest)
9596
- check-success=e2e (3.12, 1.75, build_order, macos-latest)
9697
- check-success=e2e (3.12, 1.75, build_order, ubuntu-latest)
98+
- check-success=e2e (3.12, 1.75, build_parallel, macos-latest)
99+
- check-success=e2e (3.12, 1.75, build_parallel, ubuntu-latest)
97100
- check-success=e2e (3.12, 1.75, build_sequence_git_url, macos-latest)
98101
- check-success=e2e (3.12, 1.75, build_sequence_git_url, ubuntu-latest)
99102
- check-success=e2e (3.12, 1.75, build_settings, macos-latest)

e2e/build-parallel/cython.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
build_options:
2+
exclusive_build: True

e2e/build-parallel/graph.json

Lines changed: 311 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,311 @@
1+
{
2+
"": {
3+
"download_url": "",
4+
"pre_built": false,
5+
"version": "0",
6+
"canonicalized_name": "",
7+
"edges": [
8+
{
9+
"key": "imapautofiler==1.14.0",
10+
"req_type": "toplevel",
11+
"req": "imapautofiler==1.14.0"
12+
}
13+
]
14+
},
15+
"imapautofiler==1.14.0": {
16+
"download_url": "https://files.pythonhosted.org/packages/e5/ac/5715b2616657b06dab8e44fc51d51d8736ef0ba758e479cba9343254fba5/imapautofiler-1.14.0.tar.gz#sha256=dae2edb315994a906bcea3d8bf372adfd62805e7ada8e3a0a3d032595a600d89",
17+
"pre_built": false,
18+
"version": "1.14.0",
19+
"canonicalized_name": "imapautofiler",
20+
"edges": [
21+
{
22+
"key": "setuptools==80.8.0",
23+
"req_type": "build-system",
24+
"req": "setuptools"
25+
},
26+
{
27+
"key": "setuptools-scm==8.3.1",
28+
"req_type": "build-system",
29+
"req": "setuptools_scm[toml]>=6.2"
30+
},
31+
{
32+
"key": "pyyaml==6.0.2",
33+
"req_type": "install",
34+
"req": "PyYAML>=3.11"
35+
},
36+
{
37+
"key": "imapclient==3.0.1",
38+
"req_type": "install",
39+
"req": "imapclient>=2.2.0"
40+
},
41+
{
42+
"key": "jinja2==3.1.6",
43+
"req_type": "install",
44+
"req": "jinja2>=2.11.2"
45+
},
46+
{
47+
"key": "keyring==25.6.0",
48+
"req_type": "install",
49+
"req": "keyring>=10.0.0"
50+
}
51+
]
52+
},
53+
"keyring==25.6.0": {
54+
"download_url": "https://files.pythonhosted.org/packages/70/09/d904a6e96f76ff214be59e7aa6ef7190008f52a0ab6689760a98de0bf37d/keyring-25.6.0.tar.gz#sha256=0b39998aa941431eb3d9b0d4b2460bc773b9df6fed7621c2dfb291a7e0187a66",
55+
"pre_built": false,
56+
"version": "25.6.0",
57+
"canonicalized_name": "keyring",
58+
"edges": [
59+
{
60+
"key": "setuptools==80.8.0",
61+
"req_type": "build-system",
62+
"req": "setuptools>=61.2"
63+
},
64+
{
65+
"key": "setuptools-scm==8.3.1",
66+
"req_type": "build-system",
67+
"req": "setuptools_scm[toml]>=3.4.1"
68+
},
69+
{
70+
"key": "jaraco-classes==3.4.0",
71+
"req_type": "install",
72+
"req": "jaraco.classes"
73+
},
74+
{
75+
"key": "jaraco-context==6.0.1",
76+
"req_type": "install",
77+
"req": "jaraco.context"
78+
},
79+
{
80+
"key": "jaraco-functools==4.1.0",
81+
"req_type": "install",
82+
"req": "jaraco.functools"
83+
}
84+
]
85+
},
86+
"jaraco-functools==4.1.0": {
87+
"download_url": "https://files.pythonhosted.org/packages/ab/23/9894b3df5d0a6eb44611c36aec777823fc2e07740dabbd0b810e19594013/jaraco_functools-4.1.0.tar.gz#sha256=70f7e0e2ae076498e212562325e805204fc092d7b4c17e0e86c959e249701a9d",
88+
"pre_built": false,
89+
"version": "4.1.0",
90+
"canonicalized_name": "jaraco-functools",
91+
"edges": [
92+
{
93+
"key": "setuptools==80.8.0",
94+
"req_type": "build-system",
95+
"req": "setuptools>=61.2"
96+
},
97+
{
98+
"key": "setuptools-scm==8.3.1",
99+
"req_type": "build-system",
100+
"req": "setuptools_scm[toml]>=3.4.1"
101+
},
102+
{
103+
"key": "more-itertools==10.7.0",
104+
"req_type": "install",
105+
"req": "more_itertools"
106+
}
107+
]
108+
},
109+
"more-itertools==10.7.0": {
110+
"download_url": "https://files.pythonhosted.org/packages/ce/a0/834b0cebabbfc7e311f30b46c8188790a37f89fc8d756660346fe5abfd09/more_itertools-10.7.0.tar.gz#sha256=9fddd5403be01a94b204faadcff459ec3568cf110265d3c54323e1e866ad29d3",
111+
"pre_built": false,
112+
"version": "10.7.0",
113+
"canonicalized_name": "more-itertools",
114+
"edges": [
115+
{
116+
"key": "flit-core==3.12.0",
117+
"req_type": "build-system",
118+
"req": "flit_core<4,>=3.2"
119+
}
120+
]
121+
},
122+
"flit-core==3.12.0": {
123+
"download_url": "https://files.pythonhosted.org/packages/69/59/b6fc2188dfc7ea4f936cd12b49d707f66a1cb7a1d2c16172963534db741b/flit_core-3.12.0.tar.gz#sha256=18f63100d6f94385c6ed57a72073443e1a71a4acb4339491615d0f16d6ff01b2",
124+
"pre_built": false,
125+
"version": "3.12.0",
126+
"canonicalized_name": "flit-core",
127+
"edges": []
128+
},
129+
"setuptools-scm==8.3.1": {
130+
"download_url": "https://files.pythonhosted.org/packages/b9/19/7ae64b70b2429c48c3a7a4ed36f50f94687d3bfcd0ae2f152367b6410dff/setuptools_scm-8.3.1.tar.gz#sha256=3d555e92b75dacd037d32bafdf94f97af51ea29ae8c7b234cf94b7a5bd242a63",
131+
"pre_built": false,
132+
"version": "8.3.1",
133+
"canonicalized_name": "setuptools-scm",
134+
"edges": [
135+
{
136+
"key": "setuptools==80.8.0",
137+
"req_type": "build-system",
138+
"req": "setuptools>=61"
139+
},
140+
{
141+
"key": "packaging==25.0",
142+
"req_type": "build-system",
143+
"req": "packaging>=20"
144+
},
145+
{
146+
"key": "setuptools==80.8.0",
147+
"req_type": "build-system",
148+
"req": "setuptools"
149+
}
150+
]
151+
},
152+
"setuptools==80.8.0": {
153+
"download_url": "https://files.pythonhosted.org/packages/8d/d2/ec1acaaff45caed5c2dedb33b67055ba9d4e96b091094df90762e60135fe/setuptools-80.8.0.tar.gz#sha256=49f7af965996f26d43c8ae34539c8d99c5042fbff34302ea151eaa9c207cd257",
154+
"pre_built": false,
155+
"version": "80.8.0",
156+
"canonicalized_name": "setuptools",
157+
"edges": []
158+
},
159+
"packaging==25.0": {
160+
"download_url": "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz#sha256=d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f",
161+
"pre_built": false,
162+
"version": "25.0",
163+
"canonicalized_name": "packaging",
164+
"edges": [
165+
{
166+
"key": "flit-core==3.12.0",
167+
"req_type": "build-system",
168+
"req": "flit_core>=3.3"
169+
}
170+
]
171+
},
172+
"jaraco-context==6.0.1": {
173+
"download_url": "https://files.pythonhosted.org/packages/df/ad/f3777b81bf0b6e7bc7514a1656d3e637b2e8e15fab2ce3235730b3e7a4e6/jaraco_context-6.0.1.tar.gz#sha256=9bae4ea555cf0b14938dc0aee7c9f32ed303aa20a3b73e7dc80111628792d1b3",
174+
"pre_built": false,
175+
"version": "6.0.1",
176+
"canonicalized_name": "jaraco-context",
177+
"edges": [
178+
{
179+
"key": "setuptools==80.8.0",
180+
"req_type": "build-system",
181+
"req": "setuptools>=61.2"
182+
},
183+
{
184+
"key": "setuptools-scm==8.3.1",
185+
"req_type": "build-system",
186+
"req": "setuptools_scm[toml]>=3.4.1"
187+
}
188+
]
189+
},
190+
"jaraco-classes==3.4.0": {
191+
"download_url": "https://files.pythonhosted.org/packages/06/c0/ed4a27bc5571b99e3cff68f8a9fa5b56ff7df1c2251cc715a652ddd26402/jaraco.classes-3.4.0.tar.gz#sha256=47a024b51d0239c0dd8c8540c6c7f484be3b8fcf0b2d85c13825780d3b3f3acd",
192+
"pre_built": false,
193+
"version": "3.4.0",
194+
"canonicalized_name": "jaraco-classes",
195+
"edges": [
196+
{
197+
"key": "setuptools==80.8.0",
198+
"req_type": "build-system",
199+
"req": "setuptools>=56"
200+
},
201+
{
202+
"key": "setuptools-scm==8.3.1",
203+
"req_type": "build-system",
204+
"req": "setuptools_scm[toml]>=3.4.1"
205+
},
206+
{
207+
"key": "more-itertools==10.7.0",
208+
"req_type": "install",
209+
"req": "more_itertools"
210+
}
211+
]
212+
},
213+
"jinja2==3.1.6": {
214+
"download_url": "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz#sha256=0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d",
215+
"pre_built": false,
216+
"version": "3.1.6",
217+
"canonicalized_name": "jinja2",
218+
"edges": [
219+
{
220+
"key": "flit-core==3.12.0",
221+
"req_type": "build-system",
222+
"req": "flit_core<4"
223+
},
224+
{
225+
"key": "markupsafe==3.0.2",
226+
"req_type": "install",
227+
"req": "MarkupSafe>=2.0"
228+
}
229+
]
230+
},
231+
"markupsafe==3.0.2": {
232+
"download_url": "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz#sha256=ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0",
233+
"pre_built": false,
234+
"version": "3.0.2",
235+
"canonicalized_name": "markupsafe",
236+
"edges": [
237+
{
238+
"key": "setuptools==80.8.0",
239+
"req_type": "build-system",
240+
"req": "setuptools>=70.1"
241+
}
242+
]
243+
},
244+
"imapclient==3.0.1": {
245+
"download_url": "https://files.pythonhosted.org/packages/b6/63/0eea51c9c263c18021cdc5866def55c98393f3bd74bbb8e3053e36f0f81a/IMAPClient-3.0.1.zip#sha256=78e6d62fbfbbe233e1f0e0e993160fd665eb1fd35973acddc61c15719b22bc02",
246+
"pre_built": false,
247+
"version": "3.0.1",
248+
"canonicalized_name": "imapclient",
249+
"edges": [
250+
{
251+
"key": "setuptools==80.8.0",
252+
"req_type": "build-system",
253+
"req": "setuptools>=40.8.0"
254+
}
255+
]
256+
},
257+
"pyyaml==6.0.2": {
258+
"download_url": "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz#sha256=d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e",
259+
"pre_built": false,
260+
"version": "6.0.2",
261+
"canonicalized_name": "pyyaml",
262+
"edges": [
263+
{
264+
"key": "cython==3.1.1",
265+
"req_type": "build-system",
266+
"req": "Cython; python_version < \"3.13\""
267+
},
268+
{
269+
"key": "setuptools==80.8.0",
270+
"req_type": "build-system",
271+
"req": "setuptools"
272+
},
273+
{
274+
"key": "wheel==0.46.1",
275+
"req_type": "build-system",
276+
"req": "wheel"
277+
}
278+
]
279+
},
280+
"wheel==0.46.1": {
281+
"download_url": "https://files.pythonhosted.org/packages/fb/62/e90918c4558b002726ab930863c0cbd3e7cf9a7befa1d4a1a240cecdb379/wheel-0.46.1.tar.gz#sha256=fd477efb5da0f7df1d3c76c73c14394002c844451bd63229d8570f376f5e6a38",
282+
"pre_built": false,
283+
"version": "0.46.1",
284+
"canonicalized_name": "wheel",
285+
"edges": [
286+
{
287+
"key": "flit-core==3.12.0",
288+
"req_type": "build-system",
289+
"req": "flit_core<4,>=3.8"
290+
},
291+
{
292+
"key": "packaging==25.0",
293+
"req_type": "build-system",
294+
"req": "packaging>=24.0"
295+
}
296+
]
297+
},
298+
"cython==3.1.1": {
299+
"download_url": "https://files.pythonhosted.org/packages/5b/d3/bb000603e46144db2e5055219bbddcf7ab3b10012fcb342695694fb88141/cython-3.1.1.tar.gz#sha256=505ccd413669d5132a53834d792c707974248088c4f60c497deb1b416e366397",
300+
"pre_built": false,
301+
"version": "3.1.1",
302+
"canonicalized_name": "cython",
303+
"edges": [
304+
{
305+
"key": "setuptools==80.8.0",
306+
"req_type": "build-system",
307+
"req": "setuptools>=40.8.0"
308+
}
309+
]
310+
}
311+
}

e2e/test_build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ fromager \
4646
build "${DIST}" "${VERSION}" "https://pypi.org/simple"
4747

4848
EXPECTED_FILES="
49-
wheels-repo/build/stevedore-5.2.0-0-py3-none-any.whl
49+
wheels-repo/downloads/stevedore-5.2.0-0-py3-none-any.whl
5050
sdists-repo/downloads/stevedore-5.2.0.tar.gz
5151
sdists-repo/builds/stevedore-5.2.0.tar.gz
5252
sdists-repo/builds/test-output-file.txt

e2e/test_build_order.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ fromager \
3333

3434
find "$OUTDIR/wheels-repo/"
3535

36-
if grep -q "skipping building wheels for stevedore" "$log"; then
36+
if grep -q "skipping building wheel for stevedore" "$log"; then
3737
echo "Found message indicating build of stevedore was skipped" 1>&2
3838
pass=false
3939
fi
@@ -82,7 +82,7 @@ if ! grep -q "skipping builds for versions of packages available" "$log"; then
8282
echo "Did not find message indicating builds would be skipped" 1>&2
8383
pass=false
8484
fi
85-
if ! grep -q "skipping building wheels for stevedore" "$log"; then
85+
if ! grep -q "skipping building wheel for stevedore" "$log"; then
8686
echo "Did not find message indicating build of stevedore was skipped" 1>&2
8787
pass=false
8888
fi
@@ -105,7 +105,7 @@ if ! grep -q "skipping builds for versions of packages available" "$log"; then
105105
echo "Did not find message indicating builds would be skipped" 1>&2
106106
pass=false
107107
fi
108-
if ! grep -q "skipping building wheels for stevedore" "$log"; then
108+
if ! grep -q "skipping building wheel for stevedore" "$log"; then
109109
echo "Did not find message indicating build of stevedore was skipped" 1>&2
110110
pass=false
111111
fi

0 commit comments

Comments
 (0)