Show More
@@ -0,0 +1,35 | |||||
|
1 | #!/bin/sh | |||
|
2 | ||||
|
3 | # This is a convenience script to build all of the wheels outside of the CI | |||
|
4 | # system. It requires the cibuildwheel package to be installed, and the | |||
|
5 | # executable on PATH, as well as `msgfmt` from gettext, which can be installed | |||
|
6 | # with `brew` as follows: | |||
|
7 | # | |||
|
8 | # $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" | |||
|
9 | # $ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile | |||
|
10 | # <logout> | |||
|
11 | # $ brew install gettext | |||
|
12 | # | |||
|
13 | # A system-wide installation of the version of python corresponding to each | |||
|
14 | # wheel is required. They can be installed by this script by setting `CI=true` | |||
|
15 | # in the environment before running it, and providing the `sudo` password when | |||
|
16 | # prompted. | |||
|
17 | ||||
|
18 | set -e | |||
|
19 | ||||
|
20 | # Build translations; requires msgfmt on PATH. | |||
|
21 | export MERCURIAL_SETUP_FORCE_TRANSLATIONS=1 | |||
|
22 | ||||
|
23 | if ! which msgfmt 2>/dev/null 1>/dev/null; then | |||
|
24 | echo "msgfmt executable not found" >&2 | |||
|
25 | exit 1 | |||
|
26 | fi | |||
|
27 | ||||
|
28 | # Prevent building pypy wheels, which is broken. | |||
|
29 | export CIBW_SKIP=pp* | |||
|
30 | ||||
|
31 | export CIBW_ARCHS=universal2 | |||
|
32 | ||||
|
33 | # TODO: purge the repo? | |||
|
34 | ||||
|
35 | cibuildwheel --output-dir dist/wheels |
@@ -0,0 +1,37 | |||||
|
1 | @echo off | |||
|
2 | ||||
|
3 | REM - This is a convenience script to build all of the wheels outside of the CI | |||
|
4 | REM - system. It requires the cibuildwheel package to be installed, and the | |||
|
5 | REM - executable on PATH, as well as `msgfmt.exe` from gettext and the x86, | |||
|
6 | REM - amd64, and arm64 compilers from VS BuildTools. These can be obtained by | |||
|
7 | REM - running `contrib/install-windows-dependencies.ps1`. | |||
|
8 | ||||
|
9 | REM - None of the variable set here live past this script exiting. | |||
|
10 | setlocal | |||
|
11 | ||||
|
12 | REM - Build translations; requires msgfmt.exe on PATH. | |||
|
13 | set MERCURIAL_SETUP_FORCE_TRANSLATIONS=1 | |||
|
14 | ||||
|
15 | REM - Prevent building pypy wheels, which is broken. | |||
|
16 | set CIBW_SKIP=pp* | |||
|
17 | ||||
|
18 | REM - Disable warning about not being able to test without an arm64 runner. | |||
|
19 | set CIBW_TEST_SKIP=*-win_arm64 | |||
|
20 | ||||
|
21 | ||||
|
22 | REM - arm64 support starts with py39, but the first arm64 installer wasn't | |||
|
23 | REM - available until py311, so skip arm64 on the older, EOL versions. | |||
|
24 | set CIBW_ARCHS=x86 AMD64 | |||
|
25 | set CIBW_BUILD=cp38-* cp39-* cp310-* | |||
|
26 | ||||
|
27 | cibuildwheel --output-dir dist/wheels | |||
|
28 | ||||
|
29 | if %errorlevel% neq 0 exit /b %errorlevel% | |||
|
30 | ||||
|
31 | ||||
|
32 | set CIBW_ARCHS=x86 AMD64 ARM64 | |||
|
33 | set CIBW_BUILD=cp311-* cp312-* cp313-* | |||
|
34 | ||||
|
35 | cibuildwheel --output-dir dist/wheels | |||
|
36 | ||||
|
37 | if %errorlevel% neq 0 exit /b %errorlevel% |
@@ -268,3 +268,4 11a9e2fc0caf0800625612e374139e4d825349a6 | |||||
268 | eae3ec345e5e62e653de32a87a70f6fa7241afde 0 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 |
@@ -284,3 +284,4 11a9e2fc0caf0800625612e374139e4d825349a6 | |||||
284 | eae3ec345e5e62e653de32a87a70f6fa7241afde 6.8.2 |
|
284 | eae3ec345e5e62e653de32a87a70f6fa7241afde 6.8.2 | |
285 | dc97e8670decc9925c2f570bdca636778184b199 6.9rc0 |
|
285 | dc97e8670decc9925c2f570bdca636778184b199 6.9rc0 | |
286 | 31d45a1cbc479ac73fc8b355abe99e090eb6c747 6.9rc1 |
|
286 | 31d45a1cbc479ac73fc8b355abe99e090eb6c747 6.9rc1 | |
|
287 | b267c5764cc6b804c619a42067405f27e8705beb 6.9 |
@@ -226,12 +226,14 packaging_targets := \ | |||||
226 | fedora \ |
|
226 | fedora \ | |
227 | linux-wheels \ |
|
227 | linux-wheels \ | |
228 | linux-wheels-x86_64 \ |
|
228 | linux-wheels-x86_64 \ | |
|
229 | linux-wheels-x86_64-musl \ | |||
229 | linux-wheels-i686 \ |
|
230 | linux-wheels-i686 \ | |
|
231 | linux-wheels-i686-musl \ | |||
230 | ppa |
|
232 | ppa | |
231 |
|
233 | |||
232 | # Forward packaging targets for convenience. |
|
234 | # Forward packaging targets for convenience. | |
233 | $(packaging_targets): |
|
235 | $(packaging_targets): | |
234 | $(MAKE) -C contrib/packaging $@ |
|
236 | $(MAKE) -C contrib/packaging $(MAKEFLAGS) $@ | |
235 |
|
237 | |||
236 | osx: |
|
238 | osx: | |
237 | rm -rf build/mercurial |
|
239 | rm -rf build/mercurial |
@@ -20,6 +20,7 workflow: | |||||
20 | when: always |
|
20 | when: always | |
21 |
|
21 | |||
22 | stages: |
|
22 | stages: | |
|
23 | - nightly-trigger | |||
23 | - build |
|
24 | - build | |
24 | - checks |
|
25 | - checks | |
25 | - tests |
|
26 | - tests | |
@@ -31,6 +32,14 stages: | |||||
31 | image: registry.heptapod.net/mercurial/ci-images/mercurial-core:$HG_CI_IMAGE_TAG |
|
32 | image: registry.heptapod.net/mercurial/ci-images/mercurial-core:$HG_CI_IMAGE_TAG | |
32 |
|
33 | |||
33 | variables: |
|
34 | variables: | |
|
35 | # to debug use: | |||
|
36 | # | |||
|
37 | # RE_BRANCH: '/^topic/.+/.+$/' | |||
|
38 | # RE_TOPIC: '/^xxx/' | |||
|
39 | # | |||
|
40 | # Instead of the two following lines: | |||
|
41 | RE_BRANCH: '/^branch/.+$/' | |||
|
42 | RE_TOPIC: '/^topic/.+/.+$/' | |||
34 | PYTHON: python |
|
43 | PYTHON: python | |
35 | HG_CI_IMAGE_TAG: "v2.1" |
|
44 | HG_CI_IMAGE_TAG: "v2.1" | |
36 | # a directory dedicated to creating files and temporary clone |
|
45 | # a directory dedicated to creating files and temporary clone | |
@@ -48,6 +57,17 variables: | |||||
48 | # starting. |
|
57 | # starting. | |
49 | needs: [] |
|
58 | needs: [] | |
50 |
|
59 | |||
|
60 | # dummy job that serve dependencies purpose | |||
|
61 | .dummy: | |||
|
62 | # smallest I know of | |||
|
63 | image: busybox | |||
|
64 | variables: | |||
|
65 | GIT_STRATEGY: none | |||
|
66 | CI_CLEVER_CLOUD_FLAVOR: "XS" | |||
|
67 | script: | |||
|
68 | - echo 'nothing to see here' | |||
|
69 | ||||
|
70 | ||||
51 | # a dummy job that only serve to trigger others |
|
71 | # a dummy job that only serve to trigger others | |
52 | # |
|
72 | # | |
53 | # This is useful for two reasons: |
|
73 | # This is useful for two reasons: | |
@@ -55,15 +75,21 variables: | |||||
55 | # - manual starting job cannot make the pipeline "fails" and block a merge, |
|
75 | # - manual starting job cannot make the pipeline "fails" and block a merge, | |
56 | # while "on_success" job depending on manual trigger works fine in that regard. |
|
76 | # while "on_success" job depending on manual trigger works fine in that regard. | |
57 | .trigger: |
|
77 | .trigger: | |
58 |
extends: |
|
78 | extends: | |
59 | # smallest I know of |
|
79 | - .all | |
60 | image: busybox |
|
80 | - .dummy | |
61 | when: manual |
|
81 | when: manual | |
62 | variables: |
|
82 | ||
63 | GIT_STRATEGY: none |
|
83 | ||
64 | CI_CLEVER_CLOUD_FLAVOR: "XS" |
|
84 | trigger-nightly-build: | |
65 | script: |
|
85 | extends: .trigger | |
66 | - echo 'nothing to see here' |
|
86 | stage: nightly-trigger | |
|
87 | rules: | |||
|
88 | - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH | |||
|
89 | when: manual | |||
|
90 | allow_failure: true | |||
|
91 | - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC | |||
|
92 | when: never | |||
67 |
|
93 | |||
68 | .build-wheel: |
|
94 | .build-wheel: | |
69 | extends: .all |
|
95 | extends: .all | |
@@ -86,6 +112,8 variables: | |||||
86 | - wheels/ |
|
112 | - wheels/ | |
87 | expire_in: 1 week |
|
113 | expire_in: 1 week | |
88 |
|
114 | |||
|
115 | ||||
|
116 | # build linux wheel for amd64 | |||
89 | build-c-wheel: |
|
117 | build-c-wheel: | |
90 | extends: .build-wheel |
|
118 | extends: .build-wheel | |
91 | variables: |
|
119 | variables: | |
@@ -100,6 +128,115 build-c-wheel: | |||||
100 | - cp312-cp312 |
|
128 | - cp312-cp312 | |
101 | - cp313-cp313 |
|
129 | - cp313-cp313 | |
102 |
|
130 | |||
|
131 | trigger-wheel-musl: | |||
|
132 | extends: .trigger | |||
|
133 | stage: build | |||
|
134 | rules: | |||
|
135 | - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH | |||
|
136 | when: never | |||
|
137 | - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC | |||
|
138 | when: manual | |||
|
139 | allow_failure: true | |||
|
140 | ||||
|
141 | build-c-wheel-musl: | |||
|
142 | extends: build-c-wheel | |||
|
143 | image: "registry.heptapod.net/mercurial/ci-images/core-wheel-x86_64-musl-c:v3.0" | |||
|
144 | rules: | |||
|
145 | - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH | |||
|
146 | needs: | |||
|
147 | - trigger-nightly-build | |||
|
148 | - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC | |||
|
149 | needs: | |||
|
150 | - "trigger-wheel-musl" | |||
|
151 | ||||
|
152 | trigger-wheel-i686: | |||
|
153 | extends: .trigger | |||
|
154 | stage: build | |||
|
155 | rules: | |||
|
156 | - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH | |||
|
157 | when: never | |||
|
158 | - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC | |||
|
159 | when: manual | |||
|
160 | allow_failure: true | |||
|
161 | ||||
|
162 | build-c-wheel-i686: | |||
|
163 | extends: build-c-wheel | |||
|
164 | image: "registry.heptapod.net/mercurial/ci-images/core-wheel-i686-c:v3.0" | |||
|
165 | rules: | |||
|
166 | - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH | |||
|
167 | needs: | |||
|
168 | - trigger-nightly-build | |||
|
169 | - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC | |||
|
170 | needs: | |||
|
171 | - "trigger-wheel-i686" | |||
|
172 | ||||
|
173 | trigger-wheel-i686-musl: | |||
|
174 | extends: .trigger | |||
|
175 | stage: build | |||
|
176 | rules: | |||
|
177 | - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH | |||
|
178 | when: never | |||
|
179 | - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC | |||
|
180 | when: manual | |||
|
181 | allow_failure: true | |||
|
182 | ||||
|
183 | build-c-wheel-i686-musl: | |||
|
184 | extends: build-c-wheel | |||
|
185 | image: "registry.heptapod.net/mercurial/ci-images/core-wheel-i686-musl-c:v3.0" | |||
|
186 | rules: | |||
|
187 | - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH | |||
|
188 | needs: | |||
|
189 | - trigger-nightly-build | |||
|
190 | - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC | |||
|
191 | needs: | |||
|
192 | - "trigger-wheel-i686-musl" | |||
|
193 | ||||
|
194 | trigger-wheel-arm64: | |||
|
195 | extends: .trigger | |||
|
196 | stage: build | |||
|
197 | rules: | |||
|
198 | - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH | |||
|
199 | when: never | |||
|
200 | - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC | |||
|
201 | when: manual | |||
|
202 | allow_failure: true | |||
|
203 | ||||
|
204 | build-c-wheel-arm64: | |||
|
205 | extends: build-c-wheel | |||
|
206 | image: "registry.heptapod.net/mercurial/ci-images/core-wheel-arm64-c:v3.0" | |||
|
207 | tags: | |||
|
208 | - arm64 | |||
|
209 | rules: | |||
|
210 | - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH | |||
|
211 | needs: | |||
|
212 | - trigger-nightly-build | |||
|
213 | - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC | |||
|
214 | needs: | |||
|
215 | - "trigger-wheel-arm64" | |||
|
216 | ||||
|
217 | trigger-wheel-arm64-musl: | |||
|
218 | extends: .trigger | |||
|
219 | stage: build | |||
|
220 | rules: | |||
|
221 | - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH | |||
|
222 | when: never | |||
|
223 | - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC | |||
|
224 | when: manual | |||
|
225 | allow_failure: true | |||
|
226 | ||||
|
227 | build-c-wheel-arm64-musl: | |||
|
228 | extends: build-c-wheel | |||
|
229 | image: "registry.heptapod.net/mercurial/ci-images/core-wheel-arm64-musl-c:v3.0" | |||
|
230 | tags: | |||
|
231 | - arm64 | |||
|
232 | rules: | |||
|
233 | - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH | |||
|
234 | needs: | |||
|
235 | - trigger-nightly-build | |||
|
236 | - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC | |||
|
237 | needs: | |||
|
238 | - "trigger-wheel-arm64-musl" | |||
|
239 | ||||
103 | .runtests: |
|
240 | .runtests: | |
104 | extends: .all |
|
241 | extends: .all | |
105 | stage: tests |
|
242 | stage: tests | |
@@ -225,12 +362,18 test-chg: | |||||
225 | trigger-pycompat: |
|
362 | trigger-pycompat: | |
226 | extends: .trigger |
|
363 | extends: .trigger | |
227 | stage: py-version-compat |
|
364 | stage: py-version-compat | |
|
365 | rules: | |||
|
366 | - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH | |||
|
367 | when: on_success | |||
|
368 | needs: | |||
|
369 | - trigger-nightly-build | |||
|
370 | - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC | |||
|
371 | when: manual | |||
|
372 | allow_failure: true | |||
228 |
|
373 | |||
229 | .test-c-pycompat: |
|
374 | .test-c-pycompat: | |
230 | extends: .test-c |
|
375 | extends: .test-c | |
231 | stage: py-version-compat |
|
376 | stage: py-version-compat | |
232 | needs: |
|
|||
233 | - trigger-pycompat |
|
|||
234 | variables: |
|
377 | variables: | |
235 | WHEEL_TYPE: "c" |
|
378 | WHEEL_TYPE: "c" | |
236 |
|
379 | |||
@@ -242,6 +385,7 test-3.8-c: | |||||
242 | variables: |
|
385 | variables: | |
243 | PYTHON: python3.8 |
|
386 | PYTHON: python3.8 | |
244 | needs: |
|
387 | needs: | |
|
388 | - job: trigger-pycompat | |||
245 | - job: build-c-wheel |
|
389 | - job: build-c-wheel | |
246 | parallel: |
|
390 | parallel: | |
247 | matrix: |
|
391 | matrix: | |
@@ -252,6 +396,7 test-3.12-c: | |||||
252 | variables: |
|
396 | variables: | |
253 | PYTHON: python3.12 |
|
397 | PYTHON: python3.12 | |
254 | needs: |
|
398 | needs: | |
|
399 | - job: trigger-pycompat | |||
255 | - job: build-c-wheel |
|
400 | - job: build-c-wheel | |
256 | parallel: |
|
401 | parallel: | |
257 | matrix: |
|
402 | matrix: | |
@@ -270,6 +415,7 test-3.13-c: | |||||
270 | variables: |
|
415 | variables: | |
271 | PYTHON: python3.13 |
|
416 | PYTHON: python3.13 | |
272 | needs: |
|
417 | needs: | |
|
418 | - job: trigger-pycompat | |||
273 | - job: build-c-wheel |
|
419 | - job: build-c-wheel | |
274 | parallel: |
|
420 | parallel: | |
275 | matrix: |
|
421 | matrix: | |
@@ -319,6 +465,12 check-pytype: | |||||
319 | trigger-wheel-windows: |
|
465 | trigger-wheel-windows: | |
320 | extends: .trigger |
|
466 | extends: .trigger | |
321 | stage: build |
|
467 | stage: build | |
|
468 | rules: | |||
|
469 | - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH | |||
|
470 | when: never | |||
|
471 | - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC | |||
|
472 | when: manual | |||
|
473 | allow_failure: true | |||
322 |
|
474 | |||
323 | build-c-wheel-windows: |
|
475 | build-c-wheel-windows: | |
324 | extends: .windows |
|
476 | extends: .windows | |
@@ -326,7 +478,13 build-c-wheel-windows: | |||||
326 | # wait for someone to click on "trigger-wheel-windows" |
|
478 | # wait for someone to click on "trigger-wheel-windows" | |
327 | when: on_success |
|
479 | when: on_success | |
328 | needs: |
|
480 | needs: | |
329 | - "trigger-wheel-windows" |
|
481 | rules: | |
|
482 | - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH | |||
|
483 | needs: | |||
|
484 | - trigger-nightly-build | |||
|
485 | - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC | |||
|
486 | needs: | |||
|
487 | - "trigger-wheel-windows" | |||
330 | variables: |
|
488 | variables: | |
331 | MERCURIAL_SETUP_FORCE_TRANSLATIONS: "1" |
|
489 | MERCURIAL_SETUP_FORCE_TRANSLATIONS: "1" | |
332 | script: |
|
490 | script: | |
@@ -444,7 +602,13 macos: | |||||
444 | # The weird directory structure match the one we use for Linux to deal with the |
|
602 | # The weird directory structure match the one we use for Linux to deal with the | |
445 | # multiple jobs. (all this might be unnecessary) |
|
603 | # multiple jobs. (all this might be unnecessary) | |
446 | build-c-wheel-macos: |
|
604 | build-c-wheel-macos: | |
447 | when: manual # avoid overloading the CI by default |
|
605 | rules: | |
|
606 | - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH | |||
|
607 | needs: | |||
|
608 | - trigger-nightly-build | |||
|
609 | - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC | |||
|
610 | when: manual # avoid overloading the CI by default | |||
|
611 | allow_failure: true | |||
448 | stage: build |
|
612 | stage: build | |
449 | tags: |
|
613 | tags: | |
450 | - macos |
|
614 | - macos | |
@@ -464,6 +628,74 build-c-wheel-macos: | |||||
464 | - wheels |
|
628 | - wheels | |
465 | expire_in: 1 week |
|
629 | expire_in: 1 week | |
466 |
|
630 | |||
|
631 | ||||
|
632 | .nightly_build_step: | |||
|
633 | extends: .all | |||
|
634 | stage: upload | |||
|
635 | rules: | |||
|
636 | - if: '$CI_COMMIT_BRANCH =~ $RE_BRANCH' | |||
|
637 | # note that at the time of writing this, this job depends on multiple | |||
|
638 | # manual one. So it will not run by default, but will automatically run | |||
|
639 | # if the manual jobs are triggered. | |||
|
640 | # | |||
|
641 | # Also beware that "on_success" will ignore failure of manual test we | |||
|
642 | # directly depends on. This currently relevant for the "test-3.x-c" | |||
|
643 | # tests. | |||
|
644 | when: on_success | |||
|
645 | - if: '$CI_COMMIT_BRANCH =~ $RE_TOPIC' | |||
|
646 | when: never | |||
|
647 | ||||
|
648 | # a dummy job that gather greatly parallel object into one. | |||
|
649 | # | |||
|
650 | # It exists because gitlab-ci has a "50 jobs" limit on "needs" entries. | |||
|
651 | # (yes, this is sad) | |||
|
652 | # | |||
|
653 | .sink: | |||
|
654 | extends: | |||
|
655 | - .nightly_build_step | |||
|
656 | - .dummy | |||
|
657 | ||||
|
658 | test-result-linux: | |||
|
659 | extends: .sink | |||
|
660 | needs: | |||
|
661 | - test-c | |||
|
662 | - test-3.8-c | |||
|
663 | - test-3.12-c | |||
|
664 | - test-3.13-c | |||
|
665 | ||||
|
666 | test-result-macos: | |||
|
667 | extends: .sink | |||
|
668 | needs: | |||
|
669 | - macos | |||
|
670 | ||||
|
671 | test-result-windows: | |||
|
672 | extends: .sink | |||
|
673 | needs: | |||
|
674 | - windows | |||
|
675 | ||||
|
676 | wheel-result-linux: | |||
|
677 | extends: .sink | |||
|
678 | needs: | |||
|
679 | - build-c-wheel | |||
|
680 | - build-c-wheel-musl | |||
|
681 | - build-c-wheel-i686 | |||
|
682 | - build-c-wheel-i686-musl | |||
|
683 | - build-c-wheel-arm64 | |||
|
684 | - build-c-wheel-arm64-musl | |||
|
685 | artifacts: | |||
|
686 | paths: | |||
|
687 | - wheels | |||
|
688 | expire_in: 1 week | |||
|
689 | ||||
|
690 | wheel-result-windows: | |||
|
691 | extends: .sink | |||
|
692 | needs: | |||
|
693 | - build-c-wheel-windows | |||
|
694 | artifacts: | |||
|
695 | paths: | |||
|
696 | - wheels | |||
|
697 | expire_in: 1 week | |||
|
698 | ||||
467 | # Upload nightly build wheel on the heptapod registry on test success |
|
699 | # Upload nightly build wheel on the heptapod registry on test success | |
468 | # |
|
700 | # | |
469 | # At the time this task is added, since the mac wheels are built on shell |
|
701 | # At the time this task is added, since the mac wheels are built on shell | |
@@ -474,38 +706,17 build-c-wheel-macos: | |||||
474 | # have to prevent the CI token to upload to the registry and have dedicated |
|
706 | # have to prevent the CI token to upload to the registry and have dedicated | |
475 | # credential accessible only from protected branches. |
|
707 | # credential accessible only from protected branches. | |
476 | upload-wheel-nightly: |
|
708 | upload-wheel-nightly: | |
477 |
extends: . |
|
709 | extends: .nightly_build_step | |
478 | image: "registry.heptapod.net/mercurial/ci-images/twine:v3.0" |
|
710 | image: "registry.heptapod.net/mercurial/ci-images/twine:v3.0" | |
479 | stage: upload |
|
|||
480 | # because we don't want to upload only half of a wheel |
|
711 | # because we don't want to upload only half of a wheel | |
481 | interruptible: false |
|
712 | interruptible: false | |
482 | rules: |
|
|||
483 | - if: $CI_COMMIT_BRANCH =~ /^branch\/.*/ |
|
|||
484 | # note that at the time of writing this, this job depends on multiple |
|
|||
485 | # manual one. So it will not run by default, but will automatically run |
|
|||
486 | # if the manual jobs are triggered. |
|
|||
487 | # |
|
|||
488 | # Also beware that "on_success" will ignore failure of manual test we |
|
|||
489 | # directly depends on. This currently relevant for the "test-3.x-c" |
|
|||
490 | # tests. |
|
|||
491 | when: on_success |
|
|||
492 | - if: $CI_COMMIT_BRANCH =~ /^topic\/.*/ |
|
|||
493 | when: never |
|
|||
494 | # if you need to test this, make it |
|
|||
495 | # when: manual |
|
|||
496 | # allow_failure: true |
|
|||
497 | needs: |
|
713 | needs: | |
498 | - build-c-wheel |
|
714 | - wheel-result-linux | |
|
715 | - wheel-result-windows | |||
499 | - build-c-wheel-macos |
|
716 | - build-c-wheel-macos | |
500 | - build-c-wheel-windows |
|
717 | - test-result-linux | |
501 | - test-c |
|
718 | - test-result-macos | |
502 | - macos |
|
719 | - test-result-windows | |
503 | # if we also requires windows to be happy, reach the "50 needed jobs" limit. |
|
|||
504 | # So we need some intermediate job to reduce the number. |
|
|||
505 | # - windows |
|
|||
506 | - test-3.8-c |
|
|||
507 | - test-3.12-c |
|
|||
508 | - test-3.13-c |
|
|||
509 | # It would be nice to be able to restrict that a bit to protected branch only |
|
720 | # It would be nice to be able to restrict that a bit to protected branch only | |
510 | variables: |
|
721 | variables: | |
511 | TWINE_USERNAME: gitlab-ci-token |
|
722 | TWINE_USERNAME: gitlab-ci-token |
@@ -183,7 +183,7 function Install-Dependencies($prefix) { | |||||
183 | Install-Python3 "Python 3.13 64-bit" ${prefix}\assets\python313-x64.exe ${prefix}\python313-x64 ${pip} |
|
183 | Install-Python3 "Python 3.13 64-bit" ${prefix}\assets\python313-x64.exe ${prefix}\python313-x64 ${pip} | |
184 |
|
184 | |||
185 | Write-Output "installing Visual Studio 2017 Build Tools and SDKs" |
|
185 | Write-Output "installing Visual Studio 2017 Build Tools and SDKs" | |
186 | Invoke-Process ${prefix}\assets\vs_buildtools.exe "--quiet --wait --norestart --nocache --channelUri https://aka.ms/vs/15/release/channel --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.Windows10SDK.17763 --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.Windows10SDK --add Microsoft.VisualStudio.Component.VC.140" |
|
186 | Invoke-Process ${prefix}\assets\vs_buildtools.exe "--quiet --wait --norestart --nocache --channelUri https://aka.ms/vs/15/release/channel --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.Windows10SDK.17763 --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Component.Windows10SDK --add Microsoft.VisualStudio.Component.VC.140 --add Microsoft.VisualStudio.Component.VC.Tools.ARM64" | |
187 |
|
187 | |||
188 | Write-Output "installing PyOxidizer" |
|
188 | Write-Output "installing PyOxidizer" | |
189 | Invoke-Process msiexec.exe "/i ${prefix}\assets\PyOxidizer.msi /l* ${prefix}\assets\PyOxidizer.log /quiet" |
|
189 | Invoke-Process msiexec.exe "/i ${prefix}\assets\PyOxidizer.msi /l* ${prefix}\assets\PyOxidizer.log /quiet" |
@@ -45,8 +45,10 help: | |||||
45 | @echo 'linux-wheels' |
|
45 | @echo 'linux-wheels' | |
46 | @echo ' Build Linux manylinux wheels using Docker.' |
|
46 | @echo ' Build Linux manylinux wheels using Docker.' | |
47 | @echo '' |
|
47 | @echo '' | |
48 | @echo 'linux-wheels-{x86_64, i686}' |
|
48 | @echo 'linux-wheels-{x86_64, i686}{,-musl}' | |
49 | @echo ' Build Linux manylinux wheels for a specific architecture using Docker' |
|
49 | @echo ' Build Linux manylinux wheels for a specific architecture using Docker' | |
|
50 | @echo ' The -musl variants is suitable for system using "musl" instead of "glibc", | |||
|
51 | @echo ' for example: Alpine linux.' | |||
50 | @echo '' |
|
52 | @echo '' | |
51 | @echo 'deb' |
|
53 | @echo 'deb' | |
52 |
@echo |
|
54 | @echo ' Build a Debian package locally targeting the current system' | |
@@ -125,12 +127,24 endef | |||||
125 | $(foreach release,$(RHEL_RELEASES),$(eval $(call rhel_targets,$(release)))) |
|
127 | $(foreach release,$(RHEL_RELEASES),$(eval $(call rhel_targets,$(release)))) | |
126 |
|
128 | |||
127 | .PHONY: linux-wheels |
|
129 | .PHONY: linux-wheels | |
128 | linux-wheels: linux-wheels-x86_64 linux-wheels-i686 |
|
130 | linux-wheels: linux-wheels-x86_64 linux-wheels-x86_64-musl linux-wheels-i686 linux-wheels-i686-musl | |
|
131 | ||||
|
132 | img_reg="registry.heptapod.net/mercurial/ci-images" | |||
|
133 | img_tag="v3.0" | |||
|
134 | whl_sh="/src/contrib/packaging/build-linux-wheels.sh" | |||
129 |
|
135 | |||
130 | .PHONY: linux-wheels-x86_64 |
|
136 | .PHONY: linux-wheels-x86_64 | |
131 | linux-wheels-x86_64: |
|
137 | linux-wheels-x86_64: | |
132 | docker run --rm -ti -v `pwd`/../..:/src registry.heptapod.net/mercurial/ci-images/core-wheel-x86_64-c:v3.0 /src/contrib/packaging/build-linux-wheels.sh |
|
138 | docker run --rm -ti -v `pwd`/../..:/src $(img_reg)/core-wheel-x86_64-c:$(img_tag) $(whl_sh) | |
|
139 | ||||
|
140 | .PHONY: linux-wheels-x86_64-musl | |||
|
141 | linux-wheels-x86_64-musl: | |||
|
142 | docker run --rm -ti -v `pwd`/../..:/src $(img_reg)/core-wheel-x86_64-musl-c:$(img_tag) $(whl_sh) | |||
133 |
|
143 | |||
134 | .PHONY: linux-wheels-i686 |
|
144 | .PHONY: linux-wheels-i686 | |
135 | linux-wheels-i686: |
|
145 | linux-wheels-i686: | |
136 | docker run -e "HGTEST_JOBS=$(shell nproc)" --rm -ti -v `pwd`/../..:/src quay.io/pypa/manylinux1_i686 linux32 /src/contrib/packaging/build-linux-wheels.sh |
|
146 | docker run --rm -ti -v `pwd`/../..:/src $(img_reg)/core-wheel-i686-c:$(img_tag) $(whl_sh) | |
|
147 | ||||
|
148 | .PHONY: linux-wheels-i686-musl | |||
|
149 | linux-wheels-i686-musl: | |||
|
150 | docker run --rm -ti -v `pwd`/../..:/src $(img_reg)/core-wheel-i686-musl-c:$(img_tag) $(whl_sh) |
@@ -20,14 +20,17 export MERCURIAL_SETUP_FORCE_TRANSLATION | |||||
20 | # therefor not compatible. |
|
20 | # therefor not compatible. | |
21 | cp -r /src/ /tmp/src/ |
|
21 | cp -r /src/ /tmp/src/ | |
22 | cd /tmp/src/ |
|
22 | cd /tmp/src/ | |
23 | hg purge --all --no-confirm |
|
23 | # clear potentially cached artifact from the host | |
|
24 | # (we could narrow this purge probably) | |||
|
25 | hg purge \ | |||
|
26 | --ignored \ | |||
|
27 | --no-confirm | |||
24 |
|
28 | |||
25 | export HGRCPATH=/tmp/build-config.rc |
|
29 | ||
26 | cat << EOF > $HGRCPATH |
|
30 | if [ ! -e /src/dist/ ]; then | |
27 | [trusted] |
|
31 | mkdir -p /src/dist | |
28 | users=* |
|
32 | chown `stat /src/ -c %u:%g` /src/dist/ | |
29 | groups=* |
|
33 | fi | |
30 | EOF |
|
|||
31 |
|
34 | |||
32 | for py in $PYTHON_TARGETS; do |
|
35 | for py in $PYTHON_TARGETS; do | |
33 | echo 'build wheel for' $py |
|
36 | echo 'build wheel for' $py | |
@@ -39,6 +42,6 for py in $PYTHON_TARGETS; do | |||||
39 | contrib/build-one-linux-wheel.sh $py $tmp_wd |
|
42 | contrib/build-one-linux-wheel.sh $py $tmp_wd | |
40 | # fix the owner back to the repository owner |
|
43 | # fix the owner back to the repository owner | |
41 | chown `stat /src/ -c %u:%g` $tmp_wd/*.whl |
|
44 | chown `stat /src/ -c %u:%g` $tmp_wd/*.whl | |
42 | mv $tmp_wd/*.whl /src/dist |
|
45 | mv $tmp_wd/*.whl /src/dist/ | |
43 | done |
|
46 | done | |
44 |
|
47 |
@@ -1,6 +1,23 | |||||
1 | Mercurial can be augmented with Rust extensions for speeding up certain |
|
1 | Mercurial can be augmented with Rust extensions for speeding up certain | |
2 | operations. |
|
2 | operations. | |
3 |
|
3 | |||
|
4 | Word of Caution | |||
|
5 | =============== | |||
|
6 | ||||
|
7 | Using the Rust extension might result in the use of various repository formats | |||
|
8 | that are not supported by non-Rust mercurial. When using a Mercurial | |||
|
9 | without Rust support on the same repositories, you might need to downgrade your | |||
|
10 | repository formats and/or activate cripplingly slow paths for compatibility. | |||
|
11 | For details, see: | |||
|
12 | ||||
|
13 | - :hg:`help config.format.use-persistent-nodemap` | |||
|
14 | - :hg:`help config.format.use-dirstate-v2` | |||
|
15 | ||||
|
16 | In addition, while the tests are run with the Rust code, there might be | |||
|
17 | subtle undetected divergences from the historical non-Rust code. So keep | |||
|
18 | your eyes open and report any oddity. Rust is not considered a first class | |||
|
19 | citizen to the project yet. | |||
|
20 | ||||
4 | Compatibility |
|
21 | Compatibility | |
5 | ============= |
|
22 | ============= | |
6 |
|
23 | |||
@@ -9,6 +26,9 MacOS, FreeBSD and other UNIX-likes have | |||||
9 | mileage may vary, but by all means do give us feedback or signal your interest |
|
26 | mileage may vary, but by all means do give us feedback or signal your interest | |
10 | for better support. |
|
27 | for better support. | |
11 |
|
28 | |||
|
29 | For compatibility with non-Rust version of Mercurial check the previous "Word of | |||
|
30 | Caution" section. | |||
|
31 | ||||
12 | No Rust extensions are available for Windows at this time. |
|
32 | No Rust extensions are available for Windows at this time. | |
13 |
|
33 | |||
14 | Features |
|
34 | Features | |
@@ -49,13 +69,19 Using pip | |||||
49 |
|
69 | |||
50 | Users of `pip` can install the Rust extensions with the following command:: |
|
70 | Users of `pip` can install the Rust extensions with the following command:: | |
51 |
|
71 | |||
52 | $ pip install mercurial --global-option --rust --no-use-pep517 |
|
72 | $ pip install mercurial \ | |
|
73 | --global-option \ | |||
|
74 | --rust \ | |||
|
75 | --no-use-pep517 \ | |||
|
76 | --no-binary mercurial | |||
53 |
|
77 | |||
54 | `--no-use-pep517` is here to tell `pip` to preserve backwards compatibility with |
|
78 | `--no-use-pep517` is here to tell `pip` to preserve backwards compatibility with | |
55 | the legacy `setup.py` system. Mercurial has not yet migrated its complex setup |
|
79 | the legacy `setup.py` system. Mercurial has not yet migrated its complex setup | |
56 | to the new system, so we still need this to add compiled extensions. |
|
80 | to the new system, so we still need this to add compiled extensions. | |
57 |
|
81 | |||
58 | This might take a couple of minutes because you're compiling everything. |
|
82 | `--no-binary` is there to tell pip to not use the pre-compiled wheels that are | |
|
83 | missing rust support. This might take a couple of minutes because you're | |||
|
84 | compiling everything. | |||
59 |
|
85 | |||
60 | See the "Checking for Rust" section to see if the install succeeded. |
|
86 | See the "Checking for Rust" section to see if the install succeeded. | |
61 |
|
87 |
@@ -1,89 +1,21 | |||||
1 |
= Mercurial 6.9 |
|
1 | = Mercurial 6.9 = | |
2 |
|
||||
3 | /!\ These are release notes for a release candidate version. Any and all points can be reverted before the final release. |
|
|||
4 |
|
2 | |||
5 | * streamclone: disable the volatile file open handle optimization on Windows |
|
3 | == Backwards Compatibility Changes == | |
6 | * rust-update: make `update_from_null` respect `worker.numcpu` config option |
|
|||
7 | * rust-update: handle SIGINT from long-running update threads |
|
|||
8 | * rust-cpython: add a TODO about repo reuse |
|
|||
9 | * pytype: add relative timestamp to the output if `ts` is available |
|
|||
10 | * hgweb: skip logging ConnectionAbortedError |
|
|||
11 |
|
||||
12 | Below are many, many changes that have to do with building/testing wheels, |
|
|||
13 | adding some sharding to the CI and MacOS + Windows compatibility work: |
|
|||
14 |
|
4 | |||
15 | * run-tests: don't use shell call for subprocess |
|
5 | * This release drops support for Python 3.6 and 3.7. | |
16 | * run-tests: add a --hg-wheel options to test a pre-built wheel |
|
6 | * Starting with this release and hopefully for the forseeable future, | |
17 | * ci: unify the way `check-pytype` inherit the common setting |
|
7 | we are now building wheels for most architectures. | |
18 | * ci: split the jobs on more stage |
|
8 | /!\ Note that for Rust users installing via `pip` or `pipx`, you will need | |
19 | * ci: build a wheel and use it to run c tests |
|
9 | to specify `--no-binary` to continue using Rust since we do not yet package | |
20 | * tests: stabilize `test-extdiff.t` on macOS |
|
10 | the Rust compilation in our wheels. We plan on fixing this for 7.0. | |
21 | * tests: disable `test-git-interop.t` with a requirements directive |
|
11 | * Python 3.13 changed how it handles docstrings (namely removing uniform | |
22 | * tests: disable a section of `test-hgrc.t` that may hit a zeroconf bug |
|
12 | leading whitespace for every line), which forced us to align the | |
23 | * ci: add a runner for Windows 10 |
|
13 | representation of our help text with this new behavior across all versions. | |
24 | * tests: treat `select` as a built-in module on Windows |
|
14 | Due to this and a lack of time and expertise from contributors, a lot of | |
25 | * tests: disable a section of `test-paths.t` that may hit a zeroconf bug |
|
15 | existing translations could be missing. The effort of i18n in general has | |
26 | * tests: conditionalize missing output in test-racy-mutations.t on Windows |
|
16 | died down many years ago, but if this matters to you, feel free to send | |
27 | * tests: add a "missing" tests for manifest content in test-racy-mutations.t |
|
17 | your contributions. | |
28 | * tests: bump the wait timeouts in test-racy-mutations.t |
|
|||
29 | * test-install: use the global hg for the install step |
|
|||
30 | * test-install: glob instance of "python" in warning |
|
|||
31 | * ci: pre-adjust some identation |
|
|||
32 | * setup: add a way to force the setup to translate (or fail) |
|
|||
33 | * ci: use smaller VM to build wheel |
|
|||
34 | * ci: use a pre-setup many-linux image to build wheel |
|
|||
35 | * ci: build (and use) wheel for all supported version |
|
|||
36 | * ci: automatically compute the python tag we use to identify tag |
|
|||
37 | * run-tests: install wheel using --prefix instead of --user |
|
|||
38 | * pycompat: drop some now useless workaround for makedirs |
|
|||
39 | * wheel: build mac os wheel through the CI |
|
|||
40 | * ci: use the macos wheel to run tests |
|
|||
41 | * ci: use extends instead of <<: *x |
|
|||
42 | * ci: move some variables closer to their usage |
|
|||
43 | * ci: rationalize variable usage |
|
|||
44 | * ci: abstract the of absolute /tmp/ path |
|
|||
45 | * ci: move the "tempory work dir" to "concurrency-safe" location |
|
|||
46 | * ci: adjust the starting port range to runner concurrency |
|
|||
47 | * ci: have the mac test run if you trigger building the mac wheel |
|
|||
48 | * run-tests: implement crude sharding support |
|
|||
49 | * ci: shard the test run on mac os X |
|
|||
50 | * dev-version: change the scheme of non tagged version |
|
|||
51 | * wheel: enforce that translation being build for macos wheel |
|
|||
52 | * run-tests: focus on listing the selected test for the shard tests |
|
|||
53 | * run-tests: cleanup the "output" directory after the related tests |
|
|||
54 | * tests: drop PYTHONPATH manipulation in test-pushvars.t |
|
|||
55 | * windows: work around argument size limitation in test-bookmarks-pushpull.t |
|
|||
56 | * windows: adjust PYTHONPATH update in test-status-color.t |
|
|||
57 | * ci: use a concurrency safe TMP dir on Windows |
|
|||
58 | * ci: again common element into a `.windows` template |
|
|||
59 | * ci: split the windows runtest invocation into more granular variables |
|
|||
60 | * windows: skip test-clonebundles-autogen.t in the CI |
|
|||
61 | * ci: adjust port range on windows too |
|
|||
62 | * windows: simply rely on the PATH adjustment to find python.exe in tests |
|
|||
63 | * wheel: assign CIBW_SKIP globally |
|
|||
64 | * wheel: make --hg-wheel works on Windows |
|
|||
65 | * wheel: build Windows wheels too |
|
|||
66 | * wheel: explicitly list built architecture |
|
|||
67 | * wheel: test the built wheel in the windows tests |
|
|||
68 | * ci: shard the tests on windows too |
|
|||
69 | * wheel: enforce that translation being build for windows wheel |
|
|||
70 | * setup: remote a debug statement that slipped through |
|
|||
71 | * setup: factor version computation in a function |
|
|||
72 | * setup: use the same code to compute tag from archive |
|
|||
73 | * wheel: add a platform level to the wheel directories |
|
|||
74 | * wheel: add a job uploading nightly build |
|
|||
75 | * wheels: factor the core of Linux wheel building into a script |
|
|||
76 | * wheels: update the Linux wheels make target |
|
|||
77 | * clone: properly exclude rev-branch-cache from post clone cache warming |
|
|||
78 | * setup: make sure Rust build its extension for the right python |
|
|||
79 | * setup: preserve version part after the "+" on Windows |
|
|||
80 | * wheel: build windows wheel for ARM64 too |
|
|||
81 | * ci: adds a trigger for all pycompat jobs |
|
|||
82 | * ci: let the Windows runner decide how many job they want to run |
|
|||
83 |
|
18 | |||
84 | = Mercurial 6.9rc0 = |
|
|||
85 |
|
||||
86 | /!\ These are release notes for a release candidate version. Any and all points can be reverted before the final release. |
|
|||
87 |
|
19 | |||
88 | == New Features == |
|
20 | == New Features == | |
89 |
|
21 | |||
@@ -153,11 +85,9 adding some sharding to the CI and MacOS | |||||
153 | * doc: generate separate commands/topics/extension pages |
|
85 | * doc: generate separate commands/topics/extension pages | |
154 | * extdiff: don't run gui programs when in a cli-only environment |
|
86 | * extdiff: don't run gui programs when in a cli-only environment | |
155 | * clonebundles: stop shell quoting `HGCB_BUNDLE_BASENAME` environment variable |
|
87 | * clonebundles: stop shell quoting `HGCB_BUNDLE_BASENAME` environment variable | |
156 | * rev-branch-cache: disable mmapping by default on Windows |
|
88 | * streamclone: disable the volatile file open handle optimization on Windows | |
157 |
|
89 | * pytype: add relative timestamp to the output if `ts` is available | ||
158 | == Backwards Compatibility Changes == |
|
90 | * hgweb: skip logging ConnectionAbortedError | |
159 |
|
||||
160 | * This release drops support for Python 3.6 and 3.7. |
|
|||
161 |
|
91 | |||
162 | == Internal API Changes == |
|
92 | == Internal API Changes == | |
163 |
|
93 | |||
@@ -175,3 +105,94 adding some sharding to the CI and MacOS | |||||
175 | * A whole bunch of typing improvements, which in turn found many bugs |
|
105 | * A whole bunch of typing improvements, which in turn found many bugs | |
176 | * Test suite improvements |
|
106 | * Test suite improvements | |
177 | * Various packaging improvements |
|
107 | * Various packaging improvements | |
|
108 | ||||
|
109 | Below are many, many changes that have to do with building/testing wheels, | |||
|
110 | adding some sharding to the CI and MacOS + Windows compatibility work: | |||
|
111 | ||||
|
112 | * ci: abstract the branch matching regexp | |||
|
113 | * ci: add "sink" for parallel tests | |||
|
114 | * ci: for branches, use a single trigger | |||
|
115 | * packaging: explain why we purge while building wheels | |||
|
116 | * wheels: rely on the image config to be able to access the repository | |||
|
117 | * packaging: remove the i686 wheel from the linux-wheels target | |||
|
118 | * packaging: propagate the make option to packaging target | |||
|
119 | * packaging: factor the linux-wheels-x86_64 a bit | |||
|
120 | * wheel: add a target for amdx86_64-musl wheels | |||
|
121 | * wheel: also build the musl wheel in the ci | |||
|
122 | * wheel: reintroduce the building of i686 wheel | |||
|
123 | * wheels: also build the i686 wheel in the CI | |||
|
124 | * contrib: install the arm64 compiler tools in the Windows dependency script | |||
|
125 | * contrib: add a bat file to build all of the wheels on Windows | |||
|
126 | * wheels: remove deprecated blacklist | |||
|
127 | * wheels: make sure we create the `dist/` directory in the make target | |||
|
128 | * contrib: add a script to build all of the wheels on macOS | |||
|
129 | * wheel: also build wheel for linux arm64 in the CI | |||
|
130 | * ci: add sink for wheels too | |||
|
131 | * run-tests: don't use shell call for subprocess | |||
|
132 | * run-tests: add a --hg-wheel options to test a pre-built wheel | |||
|
133 | * ci: unify the way `check-pytype` inherit the common setting | |||
|
134 | * ci: split the jobs on more stage | |||
|
135 | * ci: build a wheel and use it to run c tests | |||
|
136 | * tests: stabilize `test-extdiff.t` on macOS | |||
|
137 | * tests: disable `test-git-interop.t` with a requirements directive | |||
|
138 | * tests: disable a section of `test-hgrc.t` that may hit a zeroconf bug | |||
|
139 | * ci: add a runner for Windows 10 | |||
|
140 | * tests: treat `select` as a built-in module on Windows | |||
|
141 | * tests: disable a section of `test-paths.t` that may hit a zeroconf bug | |||
|
142 | * tests: conditionalize missing output in test-racy-mutations.t on Windows | |||
|
143 | * tests: add a "missing" tests for manifest content in test-racy-mutations.t | |||
|
144 | * tests: bump the wait timeouts in test-racy-mutations.t | |||
|
145 | * test-install: use the global hg for the install step | |||
|
146 | * test-install: glob instance of "python" in warning | |||
|
147 | * ci: pre-adjust some identation | |||
|
148 | * setup: add a way to force the setup to translate (or fail) | |||
|
149 | * ci: use smaller VM to build wheel | |||
|
150 | * ci: use a pre-setup many-linux image to build wheel | |||
|
151 | * ci: build (and use) wheel for all supported version | |||
|
152 | * ci: automatically compute the python tag we use to identify tag | |||
|
153 | * run-tests: install wheel using --prefix instead of --user | |||
|
154 | * pycompat: drop some now useless workaround for makedirs | |||
|
155 | * wheel: build mac os wheel through the CI | |||
|
156 | * ci: use the macos wheel to run tests | |||
|
157 | * ci: use extends instead of <<: *x | |||
|
158 | * ci: move some variables closer to their usage | |||
|
159 | * ci: rationalize variable usage | |||
|
160 | * ci: abstract the of absolute /tmp/ path | |||
|
161 | * ci: move the "tempory work dir" to "concurrency-safe" location | |||
|
162 | * ci: adjust the starting port range to runner concurrency | |||
|
163 | * ci: have the mac test run if you trigger building the mac wheel | |||
|
164 | * run-tests: implement crude sharding support | |||
|
165 | * ci: shard the test run on mac os X | |||
|
166 | * dev-version: change the scheme of non tagged version | |||
|
167 | * wheel: enforce that translation being build for macos wheel | |||
|
168 | * run-tests: focus on listing the selected test for the shard tests | |||
|
169 | * run-tests: cleanup the "output" directory after the related tests | |||
|
170 | * tests: drop PYTHONPATH manipulation in test-pushvars.t | |||
|
171 | * windows: work around argument size limitation in test-bookmarks-pushpull.t | |||
|
172 | * windows: adjust PYTHONPATH update in test-status-color.t | |||
|
173 | * ci: use a concurrency safe TMP dir on Windows | |||
|
174 | * ci: again common element into a `.windows` template | |||
|
175 | * ci: split the windows runtest invocation into more granular variables | |||
|
176 | * windows: skip test-clonebundles-autogen.t in the CI | |||
|
177 | * ci: adjust port range on windows too | |||
|
178 | * windows: simply rely on the PATH adjustment to find python.exe in tests | |||
|
179 | * wheel: assign CIBW_SKIP globally | |||
|
180 | * wheel: make --hg-wheel works on Windows | |||
|
181 | * wheel: build Windows wheels too | |||
|
182 | * wheel: explicitly list built architecture | |||
|
183 | * wheel: test the built wheel in the windows tests | |||
|
184 | * ci: shard the tests on windows too | |||
|
185 | * wheel: enforce that translation being build for windows wheel | |||
|
186 | * setup: remote a debug statement that slipped through | |||
|
187 | * setup: factor version computation in a function | |||
|
188 | * setup: use the same code to compute tag from archive | |||
|
189 | * wheel: add a platform level to the wheel directories | |||
|
190 | * wheel: add a job uploading nightly build | |||
|
191 | * wheels: factor the core of Linux wheel building into a script | |||
|
192 | * wheels: update the Linux wheels make target | |||
|
193 | * clone: properly exclude rev-branch-cache from post clone cache warming | |||
|
194 | * setup: make sure Rust build its extension for the right python | |||
|
195 | * setup: preserve version part after the "+" on Windows | |||
|
196 | * wheel: build windows wheel for ARM64 too | |||
|
197 | * ci: adds a trigger for all pycompat jobs | |||
|
198 | * ci: let the Windows runner decide how many job they want to run |
@@ -385,10 +385,10 pub fn run(invocation: &crate::CliInvoca | |||||
385 | })?; |
|
385 | })?; | |
386 | let working_directory_vfs = repo.working_directory_vfs(); |
|
386 | let working_directory_vfs = repo.working_directory_vfs(); | |
387 | let store_vfs = repo.store_vfs(); |
|
387 | let store_vfs = repo.store_vfs(); | |
388 |
let |
|
388 | let filelog_open_options = default_revlog_options( | |
389 | repo.config(), |
|
389 | repo.config(), | |
390 | repo.requirements(), |
|
390 | repo.requirements(), | |
391 |
RevlogType:: |
|
391 | RevlogType::Filelog, | |
392 | )?; |
|
392 | )?; | |
393 | let res: Vec<_> = take(&mut ds_status.unsure) |
|
393 | let res: Vec<_> = take(&mut ds_status.unsure) | |
394 | .into_par_iter() |
|
394 | .into_par_iter() | |
@@ -403,7 +403,7 pub fn run(invocation: &crate::CliInvoca | |||||
403 | check_exec, |
|
403 | check_exec, | |
404 | &manifest, |
|
404 | &manifest, | |
405 | &to_check.path, |
|
405 | &to_check.path, | |
406 |
|
|
406 | filelog_open_options, | |
407 | ) { |
|
407 | ) { | |
408 | Err(HgError::IoError { .. }) => { |
|
408 | Err(HgError::IoError { .. }) => { | |
409 | // IO errors most likely stem from the file being |
|
409 | // IO errors most likely stem from the file being |
@@ -93,5 +93,6 Keep python3 tests sorted: | |||||
93 | Keep Windows line endings in check |
|
93 | Keep Windows line endings in check | |
94 |
|
94 | |||
95 | $ testrepohg files 'set:eol(dos)' |
|
95 | $ testrepohg files 'set:eol(dos)' | |
|
96 | contrib/packaging/build-windows-wheels.bat | |||
96 | contrib/win32/hg.bat |
|
97 | contrib/win32/hg.bat | |
97 | contrib/win32/mercurial.ini |
|
98 | contrib/win32/mercurial.ini |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
General Comments 0
You need to be logged in to leave comments.
Login now