##// END OF EJS Templates
contrib: add a bat file to build all of the wheels on Windows...
Matt Harbison -
r53162:ea9cbb0f stable
parent child Browse files
Show More
@@ -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%
@@ -1,97 +1,98
1 1 #require test-repo
2 2
3 3 $ . "$TESTDIR/helpers-testrepo.sh"
4 4 $ check_code="$TESTDIR"/../contrib/check-code.py
5 5 $ cd "$TESTDIR"/..
6 6
7 7 New errors are not allowed. Warnings are strongly discouraged.
8 8 (The writing "no-che?k-code" is for not skipping this file when checking.)
9 9
10 10 $ testrepohg locate \
11 11 > -X contrib/python-zstandard \
12 12 > -X hgext/fsmonitor/pywatchman \
13 13 > -X mercurial/thirdparty \
14 14 > -X mercurial/pythoncapi_compat.h \
15 15 > | sed 's-\\-/-g' | "$check_code" --warnings --per-file=0 - || false
16 16 Skipping contrib/automation/hgautomation/__init__.py it has no-che?k-code (glob)
17 17 Skipping contrib/automation/hgautomation/aws.py it has no-che?k-code (glob)
18 18 Skipping contrib/automation/hgautomation/cli.py it has no-che?k-code (glob)
19 19 Skipping contrib/automation/hgautomation/linux.py it has no-che?k-code (glob)
20 20 Skipping contrib/automation/hgautomation/pypi.py it has no-che?k-code (glob)
21 21 Skipping contrib/automation/hgautomation/ssh.py it has no-che?k-code (glob)
22 22 Skipping contrib/automation/hgautomation/try_server.py it has no-che?k-code (glob)
23 23 Skipping contrib/automation/hgautomation/windows.py it has no-che?k-code (glob)
24 24 Skipping contrib/automation/hgautomation/winrm.py it has no-che?k-code (glob)
25 25 Skipping contrib/fuzz/FuzzedDataProvider.h it has no-che?k-code (glob)
26 26 Skipping contrib/fuzz/standalone_fuzz_target_runner.cc it has no-che?k-code (glob)
27 27 Skipping contrib/packaging/hgpackaging/cli.py it has no-che?k-code (glob)
28 28 Skipping contrib/packaging/hgpackaging/downloads.py it has no-che?k-code (glob)
29 29 Skipping contrib/packaging/hgpackaging/inno.py it has no-che?k-code (glob)
30 30 Skipping contrib/packaging/hgpackaging/pyoxidizer.py it has no-che?k-code (glob)
31 31 Skipping contrib/packaging/hgpackaging/util.py it has no-che?k-code (glob)
32 32 Skipping contrib/packaging/hgpackaging/wix.py it has no-che?k-code (glob)
33 33 Skipping hgext/fsmonitor/__init__.py it has no-che?k-code (glob)
34 34 Skipping i18n/polib.py it has no-che?k-code (glob)
35 35 Skipping mercurial/statprof.py it has no-che?k-code (glob)
36 36 Skipping tests/testlib/badserverext.py it has no-che?k-code (glob)
37 37
38 38 @commands in debugcommands.py should be in alphabetical order.
39 39
40 40 >>> import re
41 41 >>> commands = []
42 42 >>> with open('mercurial/debugcommands.py', 'rb') as fh:
43 43 ... for line in fh:
44 44 ... m = re.match(br"^@command\('([a-z]+)", line)
45 45 ... if m:
46 46 ... commands.append(m.group(1))
47 47 >>> scommands = list(sorted(commands))
48 48 >>> for i, command in enumerate(scommands):
49 49 ... if command != commands[i]:
50 50 ... print('commands in debugcommands.py not sorted; first differing '
51 51 ... 'command is %s; expected %s' % (commands[i], command))
52 52 ... break
53 53
54 54 Prevent adding new files in the root directory accidentally.
55 55
56 56 $ testrepohg files 'glob:*'
57 57 .arcconfig
58 58 .clang-format
59 59 .editorconfig
60 60 .gitattributes
61 61 .hgignore
62 62 .hgsigs
63 63 .hgtags
64 64 .jshintrc
65 65 CONTRIBUTING
66 66 CONTRIBUTORS
67 67 COPYING
68 68 Makefile
69 69 README.rst
70 70 hg
71 71 hgeditor
72 72 hgweb.cgi
73 73 pyproject.toml
74 74 rustfmt.toml
75 75 setup.py
76 76
77 77 Prevent adding modules which could be shadowed by ancient .so/.dylib.
78 78
79 79 $ testrepohg files \
80 80 > mercurial/base85.py \
81 81 > mercurial/bdiff.py \
82 82 > mercurial/diffhelpers.py \
83 83 > mercurial/mpatch.py \
84 84 > mercurial/osutil.py \
85 85 > mercurial/parsers.py \
86 86 > mercurial/zstd.py
87 87 [1]
88 88
89 89 Keep python3 tests sorted:
90 90 $ sort < contrib/python3-whitelist > $TESTTMP/py3sorted
91 91 $ cmp contrib/python3-whitelist $TESTTMP/py3sorted || echo 'Please sort passing tests!'
92 92
93 93 Keep Windows line endings in check
94 94
95 95 $ testrepohg files 'set:eol(dos)'
96 contrib/packaging/build-windows-wheels.bat
96 97 contrib/win32/hg.bat
97 98 contrib/win32/mercurial.ini
General Comments 0
You need to be logged in to leave comments. Login now