2015-08-05 12:38:25 -04:00
|
|
|
@echo off
|
|
|
|
setlocal
|
|
|
|
|
2018-03-11 01:13:22 -05:00
|
|
|
: Check which branch we are on, or just assume master if we are not in a git repository
|
2017-12-09 02:42:55 -05:00
|
|
|
for /f %%z in ('git rev-parse --abbrev-ref HEAD') do set GIT_BRANCH=%%z
|
2018-03-11 06:46:24 -04:00
|
|
|
if not defined GIT_BRANCH (
|
|
|
|
set GIT_BRANCH=master
|
2018-03-11 01:13:22 -05:00
|
|
|
)
|
2017-12-09 02:42:55 -05:00
|
|
|
|
2015-08-05 12:38:25 -04:00
|
|
|
if "%1"=="/?" (
|
|
|
|
goto usage
|
|
|
|
) else if "%1"=="" (
|
2017-12-09 02:42:55 -05:00
|
|
|
set _bootimage_version=%GIT_BRANCH%
|
2015-08-05 12:38:25 -04:00
|
|
|
) else if "%1"=="latest" (
|
2017-12-09 02:42:55 -05:00
|
|
|
set _bootimage_version=%GIT_BRANCH%
|
2016-03-29 21:44:32 -04:00
|
|
|
) else if "%1"=="update" (
|
2017-12-09 02:42:55 -05:00
|
|
|
set _bootimage_version=%GIT_BRANCH%
|
2015-08-05 12:38:25 -04:00
|
|
|
) else if "%1"=="clean" (
|
|
|
|
set _bootimage_version=clean
|
|
|
|
) else goto usage
|
|
|
|
|
|
|
|
if not exist Nmakefile goto wrongdir
|
|
|
|
|
|
|
|
call cl 2>&1 | find "x86" >nul
|
|
|
|
if not errorlevel 1 (
|
|
|
|
echo x86-32 cl.exe detected.
|
|
|
|
set _target=x86-32
|
|
|
|
set _bootimage=boot.windows-x86.32.image
|
|
|
|
) else (
|
|
|
|
call cl 2>&1 | find "x64" >nul
|
|
|
|
if not errorlevel 1 (
|
|
|
|
echo x86-64 cl.exe detected.
|
|
|
|
set _target=x86-64
|
|
|
|
set _bootimage=boot.windows-x86.64.image
|
|
|
|
) else goto nocl
|
|
|
|
)
|
|
|
|
|
|
|
|
echo Deleting staging images from temp/...
|
|
|
|
del temp\staging.*.image
|
|
|
|
|
2017-09-09 00:32:45 -04:00
|
|
|
echo Updating working copy from %GIT_BRANCH%...
|
2020-01-04 14:47:13 -05:00
|
|
|
call git pull https://github.com/factor/factor %GIT_BRANCH%
|
2015-08-05 12:38:25 -04:00
|
|
|
if errorlevel 1 goto fail
|
|
|
|
|
|
|
|
echo Building vm...
|
|
|
|
nmake /nologo /f Nmakefile clean
|
|
|
|
if errorlevel 1 goto fail
|
2017-09-09 00:32:45 -04:00
|
|
|
|
2015-08-05 12:38:25 -04:00
|
|
|
nmake /nologo /f Nmakefile %_target%
|
|
|
|
if errorlevel 1 goto fail
|
|
|
|
|
|
|
|
echo Fetching %_bootimage_version% boot image...
|
2017-09-09 00:32:45 -04:00
|
|
|
set boot_image_url=http://downloads.factorcode.org/images/%GIT_BRANCH%/%_bootimage% %_bootimage%
|
|
|
|
echo URL: %boot_image_url%
|
|
|
|
cscript /nologo misc\http-get.vbs %boot_image_url% %_bootimage%
|
2015-08-05 12:38:25 -04:00
|
|
|
if errorlevel 1 goto fail
|
|
|
|
|
|
|
|
echo Bootstrapping...
|
|
|
|
.\factor.com -i=%_bootimage%
|
|
|
|
if errorlevel 1 goto fail
|
|
|
|
|
|
|
|
echo Copying fresh factor.image to factor.image.fresh.
|
|
|
|
copy factor.image factor.image.fresh
|
|
|
|
if errorlevel 1 goto fail
|
|
|
|
|
|
|
|
echo Build complete.
|
|
|
|
goto :EOF
|
|
|
|
|
|
|
|
:fail
|
|
|
|
echo Build failed.
|
|
|
|
goto :EOF
|
|
|
|
|
|
|
|
:wrongdir
|
2016-03-15 06:16:33 -04:00
|
|
|
echo build.cmd must be run from the root of the Factor source tree.
|
2015-08-05 12:38:25 -04:00
|
|
|
goto :EOF
|
|
|
|
|
|
|
|
:nocl
|
|
|
|
echo Unable to detect cl.exe target platform.
|
|
|
|
echo Make sure you're running within the Visual Studio or Windows SDK environment.
|
|
|
|
goto :EOF
|
|
|
|
|
|
|
|
:usage
|
2017-09-09 00:32:45 -04:00
|
|
|
echo Usage: build.cmd
|
2015-08-05 12:38:25 -04:00
|
|
|
echo Updates the working copy, cleans and builds the vm using nmake,
|
|
|
|
echo fetches a boot image, and bootstraps factor.
|
2017-09-09 00:32:45 -04:00
|
|
|
echo The branch that bootstraps is the one that is checked out locally.
|
2015-08-05 12:38:25 -04:00
|
|
|
goto :EOF
|