15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ECHO OFF 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM Copyright (c) 2012 The Chromium Authors. All rights reserved. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM Use of this source code is governed by a BSD-style license that can be 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM found in the LICENSE file. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM Copies an installer and symbols from a build directory on a network share 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM into the directory \[out|build]\[Debug|Release] on the current drive. 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM Usage: 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM \\build.share\<path_to_checkout>\src\tools\win\copy-installer.bat 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM By default, the script will copy the Debug build in the tree, falling back 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM to the Release build if one is not found. Similarly, the ninja output 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)REM directory is preferred over the devenv output directory. The x86 build is 16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)REM preferred over the x64 build. Specify any of "out|build", "Debug|Release" 17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)REM (case matters), or "x64" on the command line in any order to influence 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)REM selection. The defaults for location and build type can also be overridden 19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)REM in a given build tree by creating a "copy-installer.cfg" file alongside the 20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)REM .gclient file that sets any of OUTPUT, BUILDTYPE, or ARCH variables. 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM Install Robocopy for superior performance on Windows XP if desired (it is 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM present by default on Vista+). 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SETLOCAL 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM Get the path to the build tree's src directory. 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CALL :_canonicalize "%~dp0..\.." 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SET FROM=%RET% 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM Read local configuration (set OUTPUT and BUILDTYPE there). 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IF EXIST "%FROM%\..\copy-installer.cfg" CALL "%FROM%\..\copy-installer.cfg" 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 34a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)REM Read any of OUTPUT, BUILDTYPE, or ARCH from command line. 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FOR %%a IN (%1 %2) do ( 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IF "%%a"=="out" SET OUTPUT=out 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IF "%%a"=="build" SET OUTPUT=build 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IF "%%a"=="Debug" SET BUILDTYPE=Debug 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IF "%%a"=="Release" SET BUILDTYPE=Release 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)IF "%%s"=="x64" SET ARCH=_x64 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CALL :_find_build 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)IF "%OUTPUT%%BUILDTYPE%%ARCH%"=="" ( 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ECHO No build found to copy. 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EXIT 1 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)SET FROM=%FROM%\%OUTPUT%\%BUILDTYPE%%ARCH% 50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)SET TO=\%OUTPUT%\%BUILDTYPE%%ARCH% 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM Figure out what files to copy based on the component type (shared/static). 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IF EXIST "%FROM%\base.dll" ( 54a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)SET TOCOPY=setup.exe chrome.7z *.dll 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SET ARCHIVETODELETE=chrome.packed.7z 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SET INSTALLER=setup.exe 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)) ELSE ( 5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)SET TOCOPY=mini_installer.exe mini_installer.exe.pdb 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SET INSTALLER=mini_installer.exe 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)SET TOCOPY=%TOCOPY% *.dll.pdb chrome.exe.pdb setup.exe.pdb^ 6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) delegate_execute.exe.pdb 6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CALL :_copyfiles 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM incremental_chrome_dll=1 puts chrome_dll.pdb into the "initial" dir. 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IF EXIST "%FROM%\initial" ( 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SET FROM=%FROM%\initial 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SET TOCOPY=*.pdb 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)CALL :_copyfiles 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM Keeping the old chrome.packed.7z around could cause the new setup.exe to 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM use it instead of the new chrome.7z, delete it to save developers from 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM debugging nightmares! 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IF NOT "%ARCHIVETODELETE%"=="" ( 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IF EXIST "%TO%\%ARCHIVETODELETE%" ( 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ECHO Deleting old/deprecated %ARCHIVETODELETE% 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)del /Q "%TO%\%ARCHIVETODELETE%" 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ECHO Ready to run/debug %TO%\%INSTALLER%. 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GOTO :EOF 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM All labels henceforth are subroutines intended to be invoked by CALL. 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM Canonicalize the first argument, returning it in RET. 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles):_canonicalize 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SET RET=%~f1 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GOTO :EOF 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM Search for a mini_installer.exe in the candidate build outputs. 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles):_find_build 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IF "%OUTPUT%"=="" ( 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SET OUTPUTS=out build 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)) ELSE ( 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SET OUTPUTS=%OUTPUT% 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SET OUTPUT= 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IF "%BUILDTYPE%"=="" ( 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SET BUILDTYPES=Debug Release 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)) ELSE ( 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SET BUILDTYPES=%BUILDTYPE% 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SET BUILDTYPE= 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)) 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FOR %%o IN (%OUTPUTS%) DO ( 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)FOR %%f IN (%BUILDTYPES%) DO ( 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IF EXIST "%FROM%\%%o\%%f\mini_installer.exe" ( 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SET OUTPUT=%%o 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SET BUILDTYPE=%%f 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GOTO :EOF 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)) 117a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)IF EXIST "%FROM%\%%o\%%f_x64\mini_installer.exe" ( 118a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)SET OUTPUT=%%o 119a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)SET BUILDTYPE=%%f 120a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)SET ARCH=_x64 121a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)GOTO :EOF 122a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)) 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)) 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GOTO :EOF 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM Branch to handle copying via robocopy (fast) or xcopy (slow). 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles):_copyfiles 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)robocopy /? 1> nul 2> nul 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IF NOT "%ERRORLEVEL%"=="9009" ( 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)robocopy "%FROM%" "%TO%" %TOCOPY% /MT /XX 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)) ELSE ( 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IF NOT EXIST "%TO%" mkdir "%TO%" 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)call :_xcopy_hack %TOCOPY% 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)) 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GOTO :EOF 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM We can't use a for..in..do loop since we have wildcards, so we make a call 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)REM to this with the files to copy. 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles):_xcopy_hack 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SHIFT 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IF "%0"=="" GOTO :EOF 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)xcopy "%FROM%\%0" "%TO%" /d /y 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GOTO _xcopy_hack 145