You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
240 lines
12 KiB
240 lines
12 KiB
@ECHO OFF
|
|
SETLOCAL
|
|
|
|
set work_dir=%cd%
|
|
if not defined BRANCH set BRANCH=develop
|
|
if not defined PYTHON_ROOT set PYTHON_ROOT=c:\Python27
|
|
if not defined WITH_MKL set WITH_MKL=ON
|
|
if not defined WITH_AVX set WITH_AVX=ON
|
|
if not defined WITH_AVX set WITH_AVX=ON
|
|
if not defined WITH_GPU set WITH_GPU=OFF
|
|
if not defined WITH_TESTING set WITH_TESTING=ON
|
|
if not defined WITH_PYTHON set WITH_PYTHON=ON
|
|
if not defined ON_INFER set ON_INFER=ON
|
|
if not defined WITH_INFERENCE_API_TEST set WITH_INFERENCE_API_TEST=OFF
|
|
if not defined INFERENCE_DEMO_INSTALL_DIR set INFERENCE_DEMO_INSTALL_DIR=d:/.cache/inference_demo
|
|
if not defined THIRD_PARTY_PATH set THIRD_PARTY_PATH=%work_dir:\=/%/build/third_party
|
|
set PYTHON_EXECUTABLE=%PYTHON_ROOT%\python.exe
|
|
dir d:\.cache
|
|
|
|
goto :CASE_%1
|
|
|
|
echo "Usage: paddle_build.bat [OPTION]"
|
|
echo "OPTION:"
|
|
echo "wincheck_mkl: run Windows MKL/GPU/UnitTest CI tasks on Windows"
|
|
echo "wincheck_openbals: run Windows OPENBLAS/CPU CI tasks on Windows"
|
|
exit /b 1
|
|
|
|
:CASE_wincheck_mkl
|
|
call :cmake || goto cmake_error
|
|
call :build || goto build_error
|
|
call :test_whl_pacakage || goto test_whl_pacakage_error
|
|
call :unit_test || goto unit_test_error
|
|
call :test_inference || goto test_inference_error
|
|
call :check_change_of_unittest || goto check_change_of_unittest_error
|
|
goto:success
|
|
|
|
:CASE_wincheck_openblas
|
|
call :cmake || goto cmake_error
|
|
call :build || goto build_error
|
|
call :test_whl_pacakage || goto test_whl_pacakage_error
|
|
goto:success
|
|
|
|
rem ---------------------------------------------------------------------------------------------
|
|
:cmake
|
|
echo ========================================
|
|
echo Step 1. Cmake ...
|
|
echo ========================================
|
|
|
|
mkdir build
|
|
cd /d build
|
|
cmake .. -G "Visual Studio 14 2015 Win64" -DWITH_AVX=%WITH_AVX% -DWITH_GPU=%WITH_GPU% -DWITH_MKL=%WITH_MKL% -DPYTHON_EXECUTABLE=%PYTHON_EXECUTABLE% -DWITH_TESTING=%WITH_TESTING% -DWITH_PYTHON=%WITH_PYTHON% -DCUDA_TOOLKIT_ROOT_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0" -DON_INFER=%ON_INFER% -DTHIRD_PARTY_PATH=%THIRD_PARTY_PATH%
|
|
goto:eof
|
|
|
|
:cmake_error
|
|
exit /b %ERRORLEVEL%
|
|
|
|
rem ---------------------------------------------------------------------------------------------
|
|
:build
|
|
echo ========================================
|
|
echo Step 2. Buile Paddle ...
|
|
echo ========================================
|
|
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
|
|
set build_times=1
|
|
|
|
:build_tp
|
|
echo BUILD THIRD_PARTY %build_times%
|
|
msbuild /m /p:Configuration=Release /verbosity:quiet third_party.vcxproj
|
|
echo BUILD THIRD_PARTY RESULT %ERRORLEVEL%
|
|
if %ERRORLEVEL% NEQ 0 (
|
|
set /a build_times=%build_times%+1
|
|
if %build_times% GTR 3 (
|
|
exit /b 1
|
|
) else (
|
|
goto :build_tp
|
|
)
|
|
)
|
|
|
|
set build_times=1
|
|
:build_paddle
|
|
echo BUILD PADDLE %build_times%
|
|
msbuild /m /p:Configuration=Release /verbosity:quiet paddle.sln
|
|
echo BUILD PADDLE RESULT %ERRORLEVEL%
|
|
if %ERRORLEVEL% NEQ 0 (
|
|
set /a build_times=%build_times%+1
|
|
if %build_times% GTR 2 (
|
|
exit /b 1
|
|
) else (
|
|
goto :build_paddle
|
|
)
|
|
)
|
|
goto:eof
|
|
|
|
:build_error
|
|
exit /b %ERRORLEVEL%
|
|
|
|
rem ---------------------------------------------------------------------------------------------
|
|
:test_whl_pacakage
|
|
echo ========================================
|
|
echo Step 3. Test pip install whl package ...
|
|
echo ========================================
|
|
dir /s /b python\dist\*.whl > whl_file.txt
|
|
set /p PADDLE_WHL_FILE_WIN=< whl_file.txt
|
|
%PYTHON_EXECUTABLE% -m pip install -U %PADDLE_WHL_FILE_WIN%
|
|
echo import paddle.fluid;print(paddle.__version__) > test_whl.py
|
|
%PYTHON_EXECUTABLE% test_whl.py
|
|
goto:eof
|
|
|
|
:test_whl_pacakage_error
|
|
exit /b %ERRORLEVEL%
|
|
|
|
rem ---------------------------------------------------------------------------------------------
|
|
:unit_test
|
|
echo ========================================
|
|
echo Step 4. Running unit tests ...
|
|
echo ========================================
|
|
%PYTHON_EXECUTABLE% -m pip install --upgrade pip
|
|
dir %work_dir%\build\third_party\install\openblas\lib
|
|
dir %work_dir%\build\third_party\install\openblas\bin
|
|
dir %work_dir%\build\third_party\install\zlib\bin
|
|
dir %work_dir%\build\third_party\install\mklml\lib
|
|
dir %work_dir%\build\third_party\install\mkldnn\bin
|
|
dir %work_dir%\build\third_party\install\warpctc\bin
|
|
|
|
set PATH=%work_dir%\build\third_party\install\openblas\lib;%work_dir%\build\third_party\install\openblas\bin;%work_dir%\build\third_party\install\zlib\bin;%work_dir%\build\third_party\install\mklml\lib;%work_dir%\build\third_party\install\mkldnn\bin;%work_dir%\build\third_party\install\warpctc\bin;%PATH%
|
|
ctest.exe --output-on-failure -C Release -j 10
|
|
goto:eof
|
|
|
|
:unit_test_error
|
|
exit /b %ERRORLEVEL%
|
|
|
|
rem ---------------------------------------------------------------------------------------------
|
|
:test_inference
|
|
echo ========================================
|
|
echo Step 5. Testing fluid library for inference ...
|
|
echo ========================================
|
|
if NOT EXIST "d:\.cache\tools" (
|
|
git clone https://github.com/zhouwei25/tools.git d:\.cache\tools
|
|
)
|
|
cd %work_dir%\paddle\fluid\inference\api\demo_ci
|
|
|
|
d:\.cache\tools\busybox64.exe bash run.sh %work_dir:\=/% %WITH_MKL% %WITH_GPU% d:/.cache/inference_demo
|
|
goto:eof
|
|
|
|
:test_inference_error
|
|
exit /b %ERRORLEVEL%
|
|
|
|
rem ---------------------------------------------------------------------------------------------
|
|
:check_change_of_unittest
|
|
echo ========================================
|
|
echo Step 6. Check whether deleting a unit test ...
|
|
echo ========================================
|
|
|
|
set PATH=%PYTHON_ROOT%;%PATH%
|
|
cd /d %work_dir%\build
|
|
echo set -ex> check_change_of_unittest.sh
|
|
echo GITHUB_API_TOKEN=%GITHUB_API_TOKEN% >> check_change_of_unittest.sh
|
|
echo GIT_PR_ID=%AGILE_PULL_ID% >> check_change_of_unittest.sh
|
|
echo BRANCH=%BRANCH%>> check_change_of_unittest.sh
|
|
echo if [ "${GITHUB_API_TOKEN}" == "" ] ^|^| [ "${GIT_PR_ID}" == "" ];then>> check_change_of_unittest.sh
|
|
echo exit 0 >> check_change_of_unittest.sh
|
|
echo fi>> check_change_of_unittest.sh
|
|
echo cat ^<^<EOF>> check_change_of_unittest.sh
|
|
echo ============================================ >> check_change_of_unittest.sh
|
|
echo Generate unit tests.spec of this PR. >> check_change_of_unittest.sh
|
|
echo ============================================ >> check_change_of_unittest.sh
|
|
echo EOF>> check_change_of_unittest.sh
|
|
echo spec_path=$(pwd)/../paddle/fluid/UNITTEST_PR.spec>> check_change_of_unittest.sh
|
|
echo ctest -N ^| awk -F ':' '{print $2}' ^| sed '/^^$/d' ^| sed '$d' ^> ${spec_path}>> check_change_of_unittest.sh
|
|
echo UPSTREAM_URL='https://github.com/PaddlePaddle/Paddle'>> check_change_of_unittest.sh
|
|
echo origin_upstream_url=`git remote -v ^| awk '{print $1, $2}' ^| uniq ^| grep upstream ^| awk '{print $2}'`>> check_change_of_unittest.sh
|
|
echo if [ "$origin_upstream_url" == "" ]; then>> check_change_of_unittest.sh
|
|
echo git remote add upstream $UPSTREAM_URL.git>> check_change_of_unittest.sh
|
|
echo elif [ "$origin_upstream_url" != "$UPSTREAM_URL" ] \>> check_change_of_unittest.sh
|
|
echo ^&^& [ "$origin_upstream_url" != "$UPSTREAM_URL.git" ]; then>> check_change_of_unittest.sh
|
|
echo git remote remove upstream>> check_change_of_unittest.sh
|
|
echo git remote add upstream $UPSTREAM_URL.git>> check_change_of_unittest.sh
|
|
echo fi>> check_change_of_unittest.sh
|
|
echo if [ ! -e "$(pwd)/../.git/refs/remotes/upstream/$BRANCH" ]; then>> check_change_of_unittest.sh
|
|
echo git fetch upstream $BRANCH # develop is not fetched>> check_change_of_unittest.sh
|
|
echo fi>> check_change_of_unittest.sh
|
|
echo git checkout -b origin_pr >> check_change_of_unittest.sh
|
|
echo git checkout -b test_pr -t upstream/$BRANCH >> check_change_of_unittest.sh
|
|
echo cmake .. -G "Visual Studio 14 2015 Win64" -DWITH_AVX=%WITH_AVX% -DWITH_GPU=%WITH_GPU% -DWITH_MKL=%WITH_MKL% -DPYTHON_EXECUTABLE=%PYTHON_EXECUTABLE:\=\\% -DWITH_TESTING=%WITH_TESTING% -DWITH_PYTHON=%WITH_PYTHON% -DCUDA_TOOLKIT_ROOT_DIR="C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0" -DON_INFER=%ON_INFER% -DTHIRD_PARTY_PATH=%THIRD_PARTY_PATH% >> check_change_of_unittest.sh
|
|
echo cat ^<^<EOF>> check_change_of_unittest.sh
|
|
echo ============================================ >> check_change_of_unittest.sh
|
|
echo Generate unit tests.spec of develop. >> check_change_of_unittest.sh
|
|
echo ============================================ >> check_change_of_unittest.sh
|
|
echo EOF>> check_change_of_unittest.sh
|
|
echo spec_path=$(pwd)/../paddle/fluid/UNITTEST_DEV.spec>> check_change_of_unittest.sh
|
|
echo ctest -N ^| awk -F ':' '{print $2}' ^| sed '/^^$/d' ^| sed '$d' ^> ${spec_path}>> check_change_of_unittest.sh
|
|
echo unittest_spec_diff=`python $(pwd)/../tools/diff_unittest.py $(pwd)/../paddle/fluid/UNITTEST_DEV.spec $(pwd)/../paddle/fluid/UNITTEST_PR.spec`>> check_change_of_unittest.sh
|
|
echo if [ "$unittest_spec_diff" != "" ]; then>> check_change_of_unittest.sh
|
|
echo # approval_user_list: XiaoguangHu01 46782768,luotao1 6836917,phlrain 43953930,lanxianghit 47554610, zhouwei25 52485244, kolinwei 22165420>> check_change_of_unittest.sh
|
|
echo approval_line=`curl -H "Authorization: token ${GITHUB_API_TOKEN}" https://api.github.com/repos/PaddlePaddle/Paddle/pulls/${GIT_PR_ID}/reviews?per_page=10000`>> check_change_of_unittest.sh
|
|
echo set +x>> check_change_of_unittest.sh
|
|
echo if [ "$approval_line" != "" ]; then>> check_change_of_unittest.sh
|
|
echo APPROVALS=`echo ${approval_line} ^|python $(pwd)/../tools/check_pr_approval.py 1 22165420 52485244 6836917`>> check_change_of_unittest.sh
|
|
echo echo "current pr ${GIT_PR_ID} got approvals: ${APPROVALS}">> check_change_of_unittest.sh
|
|
echo if [ "${APPROVALS}" == "FALSE" ]; then>> check_change_of_unittest.sh
|
|
echo echo "************************************" >> check_change_of_unittest.sh
|
|
echo echo -e "It is forbidden to disable or delete the unit-test.\n" >> check_change_of_unittest.sh
|
|
echo echo -e "If you must delete it temporarily, please add it to[https://github.com/PaddlePaddle/Paddle/wiki/Temporarily-disabled-Unit-Test]." >> check_change_of_unittest.sh
|
|
echo echo -e "Then you must have one RD (kolinwei(recommended) or zhouwei25) approval for the deletion of unit-test. \n" >> check_change_of_unittest.sh
|
|
echo echo -e "If you have any problems about deleting unit-test, please read the specification [https://github.com/PaddlePaddle/Paddle/wiki/Deleting-unit-test-is-forbidden]. \n" >> check_change_of_unittest.sh
|
|
echo echo -e "Following unit-tests are deleted in this PR: \n ${unittest_spec_diff} \n" >> check_change_of_unittest.sh
|
|
echo echo "************************************" >> check_change_of_unittest.sh
|
|
echo exit 1 >> check_change_of_unittest.sh
|
|
echo fi>> check_change_of_unittest.sh
|
|
echo else>> check_change_of_unittest.sh
|
|
echo exit 1 >> check_change_of_unittest.sh
|
|
echo fi>> check_change_of_unittest.sh
|
|
echo fi>> check_change_of_unittest.sh
|
|
echo git checkout origin_pr >> check_change_of_unittest.sh
|
|
d:\.cache\tools\busybox64.exe bash check_change_of_unittest.sh
|
|
goto:eof
|
|
|
|
:check_change_of_unittest_error
|
|
exit /b %ERRORLEVEL%
|
|
|
|
|
|
rem ---------------------------------------------------------------------------------------------
|
|
:success
|
|
echo ========================================
|
|
echo Clean up environment at the end ...
|
|
echo ========================================
|
|
taskkill /f /im cmake.exe 2>NUL
|
|
taskkill /f /im msbuild.exe 2>NUL
|
|
taskkill /f /im git.exe 2>NUL
|
|
taskkill /f /im cl.exe 2>NUL
|
|
taskkill /f /im lib.exe 2>NUL
|
|
taskkill /f /im link.exe 2>NUL
|
|
taskkill /f /im git-remote-https.exe 2>NUL
|
|
taskkill /f /im vctip.exe 2>NUL
|
|
taskkill /f /im cvtres.exe 2>NUL
|
|
taskkill /f /im rc.exe 2>NUL
|
|
echo Windows CI run successfully!
|
|
exit /b 0
|
|
|
|
ENDLOCAL
|