|
| 1 | +@ECHO OFF |
| 2 | +SETLOCAL |
| 3 | +SET EL=0 |
| 4 | + |
| 5 | +ECHO ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %~f0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 6 | + |
| 7 | +SET PATH=%CD%;%PATH% |
| 8 | +SET msvs_version=2013 |
| 9 | +IF "%msvs_toolset"=="14" SET msvs_version=2015 |
| 10 | + |
| 11 | +ECHO APPVEYOR^: %APPVEYOR% |
| 12 | +ECHO nodejs_version^: %nodejs_version% |
| 13 | +ECHO platform^: %platform% |
| 14 | +ECHO msvs_toolset^: %msvs_toolset% |
| 15 | +ECHO msvs_version^: %msvs_version% |
| 16 | +ECHO TOOLSET_ARGS^: %TOOLSET_ARGS% |
| 17 | + |
| 18 | + |
| 19 | +ECHO activating VS command prompt |
| 20 | +IF /I "%platform%"=="x64" ECHO x64 && CALL "C:\Program Files (x86)\Microsoft Visual Studio %msvs_toolset%.0\VC\vcvarsall.bat" amd64 |
| 21 | +IF /I "%platform%"=="x86" ECHO x86 && CALL "C:\Program Files (x86)\Microsoft Visual Studio %msvs_toolset%.0\VC\vcvarsall.bat" x86 |
| 22 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 23 | + |
| 24 | +ECHO using compiler^: && cl |
| 25 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 26 | + |
| 27 | +ECHO using MSBuild^: && msbuild /version && ECHO. |
| 28 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 29 | + |
| 30 | + |
| 31 | +ECHO downloading/installing node |
| 32 | +::only use Install-Product when using VS2013 |
| 33 | +::IF /I "%APPVEYOR%"=="True" IF /I "%msvs_toolset%"=="12" powershell Install-Product node $env:nodejs_version $env:Platform |
| 34 | +::TESTING: |
| 35 | +::always install (get npm matching node), but delete installed programfiles node.exe afterwards for VS2015 (using custom node.exe) |
| 36 | +IF /I "%APPVEYOR%"=="True" powershell Install-Product node $env:nodejs_version $env:Platform |
| 37 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 38 | + |
| 39 | +IF /I "%msvs_toolset%"=="12" GOTO NODE_INSTALLED |
| 40 | + |
| 41 | + |
| 42 | +::custom node for VS2015 |
| 43 | +SET ARCHPATH= |
| 44 | +IF "%platform%"=="x64" (SET ARCHPATH=x64/) |
| 45 | +SET NODE_URL=https://mapbox.s3.amazonaws.com/node-cpp11/v%nodejs_version%/%ARCHPATH%node.exe |
| 46 | +ECHO downloading node^: %NODE_URL% |
| 47 | +powershell Invoke-WebRequest "${env:NODE_URL}" -OutFile node.exe |
| 48 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 49 | + |
| 50 | +ECHO deleting node ... |
| 51 | +SET NODE_EXE_PRG=%ProgramFiles%\nodejs\node.exe |
| 52 | +IF EXIST "%NODE_EXE_PRG%" ECHO found %NODE_EXE_PRG%, deleting... && DEL /F "%NODE_EXE_PRG%" |
| 53 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 54 | +SET NODE_EXE_PRG=%ProgramFiles(x86)%\nodejs\node.exe |
| 55 | +IF EXIST "%NODE_EXE_PRG%" ECHO found %NODE_EXE_PRG%, deleting... && DEL /F "%NODE_EXE_PRG%" |
| 56 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 57 | + |
| 58 | + |
| 59 | +:NODE_INSTALLED |
| 60 | + |
| 61 | +ECHO available node.exe^: |
| 62 | +where node |
| 63 | +ECHO available npm^: |
| 64 | +where npm |
| 65 | + |
| 66 | +ECHO node^: && node -v |
| 67 | +node -e "console.log(process.argv,process.execPath)" |
| 68 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 69 | + |
| 70 | +ECHO npm^: && CALL npm -v |
| 71 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 72 | + |
| 73 | +ECHO ===== where npm puts stuff START ============ |
| 74 | +ECHO npm root && CALL npm root |
| 75 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 76 | +ECHO npm root -g && CALL npm root -g |
| 77 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 78 | + |
| 79 | +ECHO npm bin && CALL npm bin |
| 80 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 81 | +ECHO npm bin -g && CALL npm bin -g |
| 82 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 83 | + |
| 84 | +SET NPM_BIN_DIR= |
| 85 | +FOR /F "tokens=*" %%i in ('CALL npm bin -g') DO SET NPM_BIN_DIR=%%i |
| 86 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 87 | +IF /I "%NPM_BIN_DIR%"=="%CD%" ECHO ERROR npm bin -g equals local directory && SET ERRORLEVEL=1 && GOTO ERROR |
| 88 | +ECHO ===== where npm puts stuff END ============ |
| 89 | + |
| 90 | + |
| 91 | +ECHO installing node-gyp |
| 92 | +CALL npm install -g node-gyp |
| 93 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 94 | + |
| 95 | +CALL npm install --build-from-source --msvs_version=%msvs_version% %TOOLSET_ARGS% --loglevel=http |
| 96 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 97 | + |
| 98 | +FOR /F "tokens=*" %%i in ('CALL node_modules\.bin\node-pre-gyp reveal module --silent') DO SET MODULE=%%i |
| 99 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 100 | +FOR /F "tokens=*" %%i in ('node -e "console.log(process.execPath)"') DO SET NODE_EXE=%%i |
| 101 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 102 | + |
| 103 | +dumpbin /DEPENDENTS "%NODE_EXE%" |
| 104 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 105 | +dumpbin /DEPENDENTS "%MODULE%" |
| 106 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 107 | + |
| 108 | +ECHO calling npm test |
| 109 | +CALL npm test |
| 110 | +IF %ERRORLEVEL% NEQ 0 GOTO ERROR |
| 111 | + |
| 112 | + |
| 113 | +CALL node_modules\.bin\node-pre-gyp package %TOOLSET_ARGS% |
| 114 | +::make commit message env var shorter |
| 115 | +SET CM=%APPVEYOR_REPO_COMMIT_MESSAGE% |
| 116 | +IF NOT "%CM%" == "%CM:[publish binary]=%" (ECHO publishing && CALL node-pre-gyp --msvs_version=2015 unpublish publish %TOOLSET_ARGS%) ELSE (ECHO not publishing) |
| 117 | + |
| 118 | +GOTO DONE |
| 119 | + |
| 120 | + |
| 121 | + |
| 122 | +:ERROR |
| 123 | +ECHO ~~~~~~~~~~~~~~~~~~~~~~ ERROR %~f0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 124 | +ECHO ERRORLEVEL^: %ERRORLEVEL% |
| 125 | +SET EL=%ERRORLEVEL% |
| 126 | + |
| 127 | +:DONE |
| 128 | +ECHO ~~~~~~~~~~~~~~~~~~~~~~ DONE %~f0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 129 | + |
| 130 | +EXIT /b %EL% |
0 commit comments