vs2017: Patch retry mechanism into meson git calls (#6078)

This commit is contained in:
Khairul Azhar Kasmiran 2026-03-24 13:45:14 +08:00 committed by GitHub
parent 3247c3e97f
commit 2c306c53ce
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 38 additions and 4 deletions

View file

@ -74,17 +74,18 @@ install:
# Download required packages
- cmd: if defined BUILD_DIR ( %PYTHON%\python.exe -m pip install --upgrade pip)
- cmd: if defined BUILD_DIR ( %PYTHON%\python.exe -m pip install --upgrade certifi pip-system-certs)
- cmd: if defined BUILD_DIR ( %PYTHON%\python.exe -m pip install meson ninja PyYAML tomli)
- cmd: if defined BUILD_DIR ( %PYTHON%\python.exe -m pip install meson==1.10.2 ninja PyYAML tomli)
# Build scripts
# Meson patched on vs2017-based images to work around git network issues
build_script:
- appveyor AddMessage "Compiling rizin %RZ_VERSION% (%builder%)"
- cmd: if %builder% == vs2017_64 ( set "PATH=C:\mingw\bin;C:\mingw\msys\1.0\bin;%PYTHON%;%PATH%" && call "%VSVARSALLPATH2017%" x64 && %PYTHON%\Scripts\meson setup --buildtype=release --prefix="%CD%\%DIST_FOLDER%" --default-library=static -Db_vscrt=static_from_buildtype build && %PYTHON%\Scripts\ninja -C build install && 7z a %ARTIFACT_ZIP% %DIST_FOLDER% )
- cmd: if %builder% == vs2017_64 ( patch %PYTHON%\Lib\site-packages\mesonbuild\utils\universal.py patches\meson-git-retry.patch && set "PATH=C:\mingw\bin;C:\mingw\msys\1.0\bin;%PYTHON%;%PATH%" && call "%VSVARSALLPATH2017%" x64 && %PYTHON%\Scripts\meson setup --buildtype=release --prefix="%CD%\%DIST_FOLDER%" --default-library=static -Db_vscrt=static_from_buildtype build && %PYTHON%\Scripts\ninja -C build install && 7z a %ARTIFACT_ZIP% %DIST_FOLDER% )
- cmd: if %builder% == vs2022_64 ( choco install mingw && refreshenv && set "PATH=C:\mingw\bin;C:\mingw\msys\1.0\bin;%PYTHON%;%PATH%" && call "%VSVARSALLPATH2022%" x64 && %PYTHON%\Scripts\meson setup --buildtype=release --prefix="%CD%\%DIST_FOLDER%" --default-library=static -Db_vscrt=static_from_buildtype build && %PYTHON%\Scripts\ninja -C build install && 7z a %ARTIFACT_ZIP% %DIST_FOLDER% )
- cmd: if %builder% == vs2017_64_dyn ( set "PATH=C:\mingw\bin;C:\mingw\msys\1.0\bin;%PYTHON%;%PATH%" && call "%VSVARSALLPATH2017%" x64 && %PYTHON%\Scripts\meson setup --buildtype=release --prefix="%CD%\%DIST_FOLDER%" build && %PYTHON%\Scripts\ninja -C build install && 7z a %ARTIFACT_ZIP% %DIST_FOLDER% )
- cmd: if %builder% == vs2017_64_dyn ( patch %PYTHON%\Lib\site-packages\mesonbuild\utils\universal.py patches\meson-git-retry.patch && set "PATH=C:\mingw\bin;C:\mingw\msys\1.0\bin;%PYTHON%;%PATH%" && call "%VSVARSALLPATH2017%" x64 && %PYTHON%\Scripts\meson setup --buildtype=release --prefix="%CD%\%DIST_FOLDER%" build && %PYTHON%\Scripts\ninja -C build install && 7z a %ARTIFACT_ZIP% %DIST_FOLDER% )
- cmd: if %builder% == clang_cl_64_dyn ( set "PATH=C:\mingw\bin;C:\mingw\msys\1.0\bin;%PYTHON%;%PATH%" && call "%VSVARSALLPATH2019%" x64 && set CC=clang-cl && %PYTHON%\Scripts\meson setup --buildtype=release --prefix="%CD%\%DIST_FOLDER%" build && %PYTHON%\Scripts\ninja -C build install && 7z a %ARTIFACT_ZIP% %DIST_FOLDER% )

View file

@ -332,3 +332,9 @@ path = ["test/prj/**.rzdb", "test/prj/**.rzdb.gz"]
precedence = "aggregate"
SPDX-FileCopyrightText = "2020 RizinOrg <info@rizin.re>"
SPDX-License-Identifier = "LGPL-3.0-only"
[[annotations]]
path = "patches/**"
precedence = "aggregate"
SPDX-FileCopyrightText = "2026 RizinOrg <info@rizin.re>"
SPDX-License-Identifier = "LGPL-3.0-only"

View file

@ -1509,7 +1509,7 @@ RZ_IPI RzCmdStatus rz_cmd_eval_color_set_random_palette_handler(RzCore *core, in
RZ_IPI RzCmdStatus rz_cmd_eval_color_set_colorful_palette_handler(RzCore *core, int argc, const char **argv);
// "eco"
RZ_IPI RzCmdStatus rz_cmd_eval_color_load_theme_handler(RzCore *core, int argc, const char **argv, RzCmdStateOutput *state);
RZ_IPI RZ_OWN char **rz_core_autocomplete_rotate_theme(RzCore *core);
RZ_IPI char **rz_core_autocomplete_rotate_theme(RzCore *core);
// "eco."
RZ_IPI RzCmdStatus rz_cmd_eval_color_list_current_theme_handler(RzCore *core, int argc, const char **argv);
// "ecoo"

View file

@ -0,0 +1,27 @@
diff --git a/mesonbuild/utils/universal.py b/mesonbuild/utils/universal.py
index e251695dd..0507066f3 100644
--- a/mesonbuild/utils/universal.py
+++ b/mesonbuild/utils/universal.py
@@ -205,9 +205,19 @@ GIT = shutil.which('git')
def git(cmd: T.List[str], workingdir: StrOrBytesPath, check: bool = False, **kwargs: T.Any) -> T.Tuple[subprocess.Popen[str], str, str]:
assert GIT is not None, 'Callers should make sure it exists'
cmd = [GIT, *cmd]
- p, o, e = Popen_safe(cmd, cwd=workingdir, **kwargs)
- if check and p.returncode != 0:
- raise GitException('Git command failed: ' + str(cmd), e)
+ retries = 0
+ while True:
+ try:
+ p, o, e = Popen_safe(cmd, cwd=workingdir, **kwargs)
+ if check and p.returncode != 0:
+ raise GitException('Git command failed: ' + str(cmd), e)
+ break
+ except GitException:
+ if retries == 5:
+ raise
+ else:
+ retries += 1
+ mlog.warning(f'Retry {retries} for {str(cmd)}')
return p, o, e
def quiet_git(cmd: T.List[str], workingdir: StrOrBytesPath, check: bool = False) -> T.Tuple[bool, str]: