164 lines
5.8 KiB
Batchfile
164 lines
5.8 KiB
Batchfile
@ECHO OFF
|
|
SETLOCAL
|
|
SET EL=0
|
|
|
|
ECHO ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %~f0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
IF /I "%msvs_version%"=="" ECHO msvs_version unset, defaulting to 2017 && SET msvs_version=2017
|
|
|
|
SET PATH=%CD%;%PATH%
|
|
IF NOT "%NODE_RUNTIME%"=="" SET "TOOLSET_ARGS=%TOOLSET_ARGS% --runtime=%NODE_RUNTIME%"
|
|
IF NOT "%NODE_RUNTIME_VERSION%"=="" SET "TOOLSET_ARGS=%TOOLSET_ARGS% --target=%NODE_RUNTIME_VERSION%"
|
|
|
|
ECHO APPVEYOR^: %APPVEYOR%
|
|
ECHO nodejs_version^: %nodejs_version%
|
|
ECHO platform^: %platform%
|
|
ECHO msvs_version^: %msvs_version%
|
|
ECHO TOOLSET_ARGS^: %TOOLSET_ARGS%
|
|
|
|
ECHO activating VS command prompt
|
|
:: NOTE this call makes the x64 -> X64
|
|
IF /I "%platform%"=="x64" ECHO x64 && CALL "C:\Program Files (x86)\Microsoft Visual Studio\%msvs_version%\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
|
|
IF /I "%platform%"=="x86" ECHO x86 && CALL "C:\Program Files (x86)\Microsoft Visual Studio\%msvs_version%\Community\VC\Auxiliary\Build\vcvarsall.bat" x86
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
|
|
ECHO using compiler^: && CALL cl
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
|
|
ECHO using MSBuild^: && CALL msbuild /version && ECHO.
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
|
|
ECHO downloading/installing node
|
|
powershell Update-NodeJsInstallation (Get-NodeJsLatestBuild $env:nodejs_version) $env:PLATFORM
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
|
|
ECHO available node.exe^:
|
|
call where node
|
|
ECHO available npm^:
|
|
call where npm
|
|
|
|
ECHO node^: && call node -v
|
|
call node -e "console.log(' - arch:',process.arch,'\n - argv:',process.argv,'\n - execPath:',process.execPath)"
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
|
|
ECHO npm^: && CALL npm -v
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
|
|
ECHO ===== where npm puts stuff START ============
|
|
ECHO npm root && CALL npm root
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
ECHO npm root -g && CALL npm root -g
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
|
|
ECHO npm bin && CALL npm bin
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
ECHO npm bin -g && CALL npm bin -g
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
|
|
SET NPM_BIN_DIR=
|
|
FOR /F "tokens=*" %%i in ('CALL npm bin -g') DO SET NPM_BIN_DIR=%%i
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
IF /I "%NPM_BIN_DIR%"=="%CD%" ECHO ERROR npm bin -g equals local directory && SET ERRORLEVEL=1 && GOTO ERROR
|
|
ECHO ===== where npm puts stuff END ============
|
|
|
|
IF "%nodejs_version:~0,1%"=="4" CALL npm install node-gyp@3.x
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
IF "%nodejs_version:~0,1%"=="5" CALL npm install node-gyp@3.x
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
|
|
::Need to force update node-gyp to v6+ for electron v6 and v5
|
|
ECHO ===== conditional node-gyp upgrade START ============
|
|
:: Find the folder to install the node-gyp in
|
|
SET npm_in_nodejs_dir="%ProgramFiles%\nodejs\node_modules\npm"
|
|
ECHO npm_in_nodejs_dir^: %npm_in_nodejs_dir%
|
|
IF /I "%platform%"=="x86" SET npm_in_nodejs_dir="%ProgramFiles(x86)%\nodejs\node_modules\npm"
|
|
ECHO npm_in_nodejs_dir^: %npm_in_nodejs_dir%
|
|
:: Set boolean whether the update has to happen
|
|
SET "needs_patch="
|
|
IF DEFINED NODE_RUNTIME_VERSION (
|
|
ECHO NODE_RUNTIME_VERSION_REDUCED^: %NODE_RUNTIME_VERSION:~0,1%
|
|
IF "%NODE_RUNTIME_VERSION:~0,1%"=="1" SET "needs_patch=y"
|
|
IF "%NODE_RUNTIME_VERSION:~0,1%"=="2" SET "needs_patch=y"
|
|
IF "%NODE_RUNTIME_VERSION:~0,1%"=="3" SET "needs_patch=y"
|
|
IF "%NODE_RUNTIME_VERSION:~0,1%"=="4" SET "needs_patch=y"
|
|
IF "%NODE_RUNTIME_VERSION:~0,1%"=="5" SET "needs_patch=y"
|
|
IF "%NODE_RUNTIME_VERSION:~0,1%"=="6" SET "needs_patch=y"
|
|
)
|
|
:: Check if electron and install
|
|
ECHO NODE_RUNTIME^: %NODE_RUNTIME%
|
|
IF DEFINED needs_patch CALL npm install --prefix %npm_in_nodejs_dir% node-gyp@6.x
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
ECHO ===== conditional node-gyp upgrade END ============
|
|
|
|
CALL npm install --build-from-source --msvs_version=%msvs_version% %TOOLSET_ARGS% --loglevel=http
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
|
|
FOR /F "tokens=*" %%i in ('"CALL node_modules\.bin\node-pre-gyp reveal module %TOOLSET_ARGS% --silent"') DO SET MODULE=%%i
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
FOR /F "tokens=*" %%i in ('node -e "console.log(process.execPath)"') DO SET NODE_EXE=%%i
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
|
|
dumpbin /DEPENDENTS "%NODE_EXE%"
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
dumpbin /DEPENDENTS "%MODULE%"
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
|
|
|
|
IF "%NODE_RUNTIME%"=="electron" GOTO CHECK_ELECTRON_TEST_ERRORLEVEL
|
|
|
|
::skipping check for errorlevel npm test result when using io.js
|
|
::@springmeyer: how to proceed?
|
|
IF NOT "%nodejs_version%"=="1.8.1" IF NOT "%nodejs_version%"=="2.0.0" GOTO CHECK_NPM_TEST_ERRORLEVEL
|
|
|
|
ECHO calling npm test
|
|
CALL npm test
|
|
ECHO ==========================================
|
|
ECHO ==========================================
|
|
ECHO ==========================================
|
|
|
|
GOTO NPM_TEST_FINISHED
|
|
|
|
|
|
:CHECK_ELECTRON_TEST_ERRORLEVEL
|
|
ECHO installing electron
|
|
CALL npm install -g "electron@%NODE_RUNTIME_VERSION%"
|
|
ECHO installing electron-mocha
|
|
IF "%nodejs_version%" LEQ 6 CALL npm install -g "electron-mocha@7"
|
|
IF "%nodejs_version%" GTR 6 CALL npm install -g "electron-mocha"
|
|
ECHO preparing tests
|
|
CALL electron "test/support/createdb-electron.js"
|
|
DEL "test\support\createdb-electron.js"
|
|
ECHO calling electron-mocha
|
|
CALL electron-mocha -R spec --timeout 480000
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
GOTO NPM_TEST_FINISHED
|
|
|
|
|
|
:CHECK_NPM_TEST_ERRORLEVEL
|
|
ECHO calling npm test
|
|
CALL npm test
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
|
|
:NPM_TEST_FINISHED
|
|
CALL node_modules\.bin\node-pre-gyp rebuild --msvs_version=%msvs_version% %TOOLSET_ARGS%
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
ECHO packaging for node-gyp
|
|
CALL node_modules\.bin\node-pre-gyp package %TOOLSET_ARGS%
|
|
::make commit message env var shorter
|
|
SET CM=%APPVEYOR_REPO_COMMIT_MESSAGE%
|
|
IF NOT "%CM%" == "%CM:[publish binary]=%" (ECHO publishing && CALL node_modules\.bin\node-pre-gyp --msvs_version=%msvs_version% publish %TOOLSET_ARGS%) ELSE (ECHO not publishing)
|
|
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
|
|
|
|
GOTO DONE
|
|
|
|
|
|
|
|
:ERROR
|
|
ECHO ~~~~~~~~~~~~~~~~~~~~~~ ERROR %~f0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
ECHO ERRORLEVEL^: %ERRORLEVEL%
|
|
SET EL=%ERRORLEVEL%
|
|
|
|
:DONE
|
|
ECHO ~~~~~~~~~~~~~~~~~~~~~~ DONE %~f0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
EXIT /b %EL%
|