|
1 | 1 | @echo off |
2 | | - |
3 | | -rem echo ****************************************************** |
4 | | -rem echo Cloning MLCommons from %MLC_GIT_URL% with branch %MLC_GIT_CHECKOUT% %MLC_GIT_DEPTH% %MLC_GIT_RECURSE_SUBMODULES% ... |
5 | | - |
6 | | -rem git clone %MLC_GIT_RECURSE_SUBMODULES% %MLC_GIT_URL% %MLC_GIT_DEPTH% inference |
7 | | -rem cd inference |
8 | | -rem git checkout -b "%MLC_GIT_CHECKOUT%" |
9 | | -rem |
10 | | - |
11 | | -rem Next line allows ERRORLEVEL inside if statements! |
12 | 2 | setlocal enabledelayedexpansion |
13 | 3 |
|
14 | | -set CUR_DIR=%cd% |
15 | | -set SCRIPT_DIR=%MLC_TMP_CURRENT_SCRIPT_PATH% |
| 4 | +set "CUR_DIR=%CD%" |
| 5 | +echo %CUR_DIR% |
| 6 | +set "SCRIPT_DIR=%MLC_TMP_CURRENT_SCRIPT_PATH%" |
| 7 | +set "ENV_OUT_FILE=%CUR_DIR%\tmp-run-env.out" |
16 | 8 |
|
17 | | -set folder=%MLC_GIT_CHECKOUT_FOLDER% |
| 9 | +set "folder=%MLC_GIT_CHECKOUT_FOLDER%" |
18 | 10 |
|
19 | 11 | if not exist "%MLC_TMP_GIT_PATH%" ( |
| 12 | + if exist "%folder%" ( |
| 13 | + echo rmdir /s /q "%folder%" |
| 14 | + rmdir /s /q "%folder%" |
| 15 | + ) |
| 16 | + echo ****************************************************** |
| 17 | + echo Current directory: %CUR_DIR% |
| 18 | + echo. |
| 19 | + echo Cloning %MLC_GIT_REPO_NAME% from %MLC_GIT_URL% |
| 20 | + echo. |
| 21 | + echo %MLC_GIT_CLONE_CMD% |
| 22 | + echo. |
| 23 | + |
| 24 | + %MLC_GIT_CLONE_CMD% |
| 25 | + |
| 26 | + :: Retry clone once on failure |
| 27 | + if ERRORLEVEL 1 ( |
| 28 | + if exist "%folder%" rmdir /s /q "%folder%" |
| 29 | + %MLC_GIT_CLONE_CMD% |
| 30 | + if ERRORLEVEL 1 exit /b !ERRORLEVEL! |
| 31 | + ) |
| 32 | + |
| 33 | + :: /d ensures drive letter changes if necessary |
| 34 | + cd /d "%folder%" |
20 | 35 |
|
21 | | - if exist "%folder%" ( |
22 | | - rmdir /S /Q "%folder%" rem Use rmdir instead of deltree |
23 | | - ) |
24 | | - |
25 | | - echo ****************************************************** |
26 | | - echo Current directory: %CUR_DIR% |
27 | | - echo. |
28 | | - echo Cloning %MLC_GIT_REPO_NAME% from %MLC_GIT_URL% |
29 | | - echo. |
30 | | - echo "%MLC_GIT_CLONE_CMD%" |
31 | | - echo. |
32 | | - |
33 | | - %MLC_GIT_CLONE_CMD% |
34 | | - IF !ERRORLEVEL! NEQ 0 EXIT !ERRORLEVEL! |
35 | | - |
36 | | - cd "%folder%" |
37 | | - |
38 | | - if not "%MLC_GIT_SHA%" == "" ( |
39 | | - echo. |
40 | | - echo. |
41 | | - git checkout "%MLC_GIT_CHECKOUT%" |
42 | | - IF !ERRORLEVEL! NEQ 0 EXIT !ERRORLEVEL! |
43 | | - ) |
| 36 | + if not "%MLC_GIT_SHA%"=="" ( |
| 37 | + echo. |
| 38 | + echo git checkout -b %MLC_GIT_SHA% %MLC_GIT_SHA% |
| 39 | + git checkout -b %MLC_GIT_SHA% %MLC_GIT_SHA% |
| 40 | + if ERRORLEVEL 1 exit /b !ERRORLEVEL! |
44 | 41 |
|
| 42 | + ) else if not "%MLC_GIT_CHECKOUT_TAG%"=="" ( |
| 43 | + echo. |
| 44 | + echo git fetch --all --tags |
| 45 | + git fetch --all --tags |
| 46 | + echo git checkout tags/%MLC_GIT_CHECKOUT_TAG% -b %MLC_GIT_CHECKOUT_TAG% |
| 47 | + git checkout tags/%MLC_GIT_CHECKOUT_TAG% -b %MLC_GIT_CHECKOUT_TAG% |
| 48 | + if ERRORLEVEL 1 exit /b !ERRORLEVEL! |
| 49 | + ) |
45 | 50 | ) else ( |
46 | | - cd "%folder%" |
| 51 | + cd /d "%folder%" |
47 | 52 | ) |
48 | 53 |
|
49 | | -if not "%MLC_GIT_SUBMODULES%" == "" ( |
50 | | - for /F %%s in ("%MLC_GIT_SUBMODULES%") do ( |
| 54 | +:: --------------------------------------------------------- |
| 55 | +:: Capture Checkout & SHA information |
| 56 | +:: --------------------------------------------------------- |
| 57 | +:: Determine the active branch name |
| 58 | +for /f "delims=" %%i in ('git rev-parse --abbrev-ref HEAD') do set "ACTUAL_CHECKOUT=%%i" |
| 59 | + |
| 60 | +:: Fallback to detached HEAD hash |
| 61 | +if "%ACTUAL_CHECKOUT%"=="HEAD" ( |
| 62 | + for /f "delims=" %%i in ('git rev-parse HEAD') do set "ACTUAL_CHECKOUT=%%i" |
| 63 | +) |
| 64 | + |
| 65 | +for /f "delims=" %%i in ('git rev-parse HEAD') do set "CURRENT_SHA=%%i" |
| 66 | + |
| 67 | +:: Write to out file (No space before >> prevents trailing spaces in value) |
| 68 | +echo MLC_GIT_CHECKOUT=!ACTUAL_CHECKOUT!>>"%ENV_OUT_FILE%" |
| 69 | +echo MLC_GIT_SHA=!CURRENT_SHA!>>"%ENV_OUT_FILE%" |
| 70 | + |
| 71 | +:: --------------------------------------------------------- |
| 72 | +:: Apply PR, Cherry-picks, and Patches |
| 73 | +:: --------------------------------------------------------- |
| 74 | +if not "%MLC_GIT_PR_TO_APPLY%"=="" ( |
51 | 75 | echo. |
52 | | - echo Initializing submodule %%s |
53 | | - git submodule update --init %%s |
54 | | - IF !ERRORLEVEL! NEQ 0 EXIT !ERRORLEVEL! |
55 | | - ) |
| 76 | + echo Fetching from %MLC_GIT_PR_TO_APPLY% |
| 77 | + git fetch origin %MLC_GIT_PR_TO_APPLY%:tmp-apply |
| 78 | + |
| 79 | + :: Log the PR applied |
| 80 | + echo MLC_GIT_APPLIED_PR=%MLC_GIT_PR_TO_APPLY%>>"%ENV_OUT_FILE%" |
56 | 81 | ) |
57 | 82 |
|
58 | | -if "%MLC_GIT_PATCH%" == "yes" ( |
59 | | - for %%x in (%MLC_GIT_PATCH_FILEPATHS%) do ( |
60 | | - echo. |
61 | | - echo Applying patch %%x ... |
62 | | - git apply %%x |
63 | | - IF !ERRORLEVEL! NEQ 0 EXIT !ERRORLEVEL! |
64 | | - ) |
| 83 | +if not "%MLC_GIT_CHERRYPICKS%"=="" ( |
| 84 | + :: Log the cherry-picks applied |
| 85 | + echo MLC_GIT_APPLIED_CHERRYPICKS=%MLC_GIT_CHERRYPICKS%>>"%ENV_OUT_FILE%" |
| 86 | + |
| 87 | + :: Replace semicolons with quoted spaces to safely loop in Windows |
| 88 | + set "CPS="%MLC_GIT_CHERRYPICKS:;=" "%"" |
| 89 | + for %%c in (!CPS!) do ( |
| 90 | + echo. |
| 91 | + echo Applying cherrypick %%~c |
| 92 | + git cherry-pick -n %%~c |
| 93 | + if ERRORLEVEL 1 exit /b !ERRORLEVEL! |
| 94 | + ) |
65 | 95 | ) |
66 | 96 |
|
67 | | -cd "%CUR_DIR%" |
| 97 | +if not "%MLC_GIT_SUBMODULES%"=="" ( |
| 98 | + set "SUBS="%MLC_GIT_SUBMODULES:;=" "%"" |
| 99 | + for %%s in (!SUBS!) do ( |
| 100 | + echo. |
| 101 | + echo Initializing submodule %%~s |
| 102 | + git submodule update --init --recursive --checkout --force "%%~s" |
| 103 | + if ERRORLEVEL 1 exit /b !ERRORLEVEL! |
| 104 | + ) |
| 105 | +) |
68 | 106 |
|
69 | | -exit /b 0 |
| 107 | +if "%MLC_GIT_PATCH%"=="yes" ( |
| 108 | + :: Log the patches applied |
| 109 | + echo MLC_GIT_APPLIED_PATCHES=%MLC_GIT_PATCH_FILEPATHS%>>"%ENV_OUT_FILE%" |
| 110 | + |
| 111 | + set "PATCHES="%MLC_GIT_PATCH_FILEPATHS:;=" "%"" |
| 112 | + for %%p in (!PATCHES!) do ( |
| 113 | + echo. |
| 114 | + echo Applying patch %%~p |
| 115 | + git apply "%%~p" |
| 116 | + if ERRORLEVEL 1 exit /b !ERRORLEVEL! |
| 117 | + ) |
| 118 | +) |
70 | 119 |
|
| 120 | +cd /d "%CUR_DIR%" |
0 commit comments