X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=blobdiff_plain;f=build.cmd;h=49d56dc1c62522d14f0bafa68d70a1407eb0f91f;hp=6d964ec6604f12dc2dbff9265bd739f7a813c94a;hb=HEAD;hpb=2b1dc5a3766368e40a4ba060a6a4370681825d71 diff --git a/build.cmd b/build.cmd index 6d964ec660..1fd1ab54f7 100644 --- a/build.cmd +++ b/build.cmd @@ -1,6 +1,15 @@ @echo off setlocal +goto start + +:download +rem branch url filename +echo Fetching %1 boot image from %2 +cscript /nologo misc\http-get.vbs %2 %3 +exit /b + +:start : Check which branch we are on, or just assume master if we are not in a git repository for /f %%z in ('git rev-parse --abbrev-ref HEAD') do set GIT_BRANCH=%%z if not defined GIT_BRANCH ( @@ -10,13 +19,45 @@ if not defined GIT_BRANCH ( if "%1"=="/?" ( goto usage ) else if "%1"=="" ( - set _bootimage_version=%GIT_BRANCH% + set _git_pull=1 + set _compile_vm=1 + set _bootimage_type=download + set _bootstrap_factor=1 ) else if "%1"=="latest" ( - set _bootimage_version=%GIT_BRANCH% + set _git_pull=1 + set _compile_vm=1 + set _bootimage_type=download + set _bootstrap_factor=1 ) else if "%1"=="update" ( - set _bootimage_version=%GIT_BRANCH% -) else if "%1"=="clean" ( - set _bootimage_version=clean + set _git_pull=1 + set _compile_vm=1 + set _bootimage_type=download + set _bootstrap_factor=1 +) else if "%1"=="compile" ( + set _git_pull=0 + set _compile_vm=1 + set _bootimage_type=current + set _bootstrap_factor=0 +) else if "%1"=="self-bootstrap" ( + set _git_pull=1 + set _compile_vm=0 + set _bootimage_type=make + set _bootstrap_factor=1 +) else if "%1"=="bootstrap" ( + set _git_pull=0 + set _compile_vm=0 + set _bootimage_type=current + set _bootstrap_factor=1 +) else if "%1"=="net-bootstrap" ( + set _git_pull=0 + set _compile_vm=1 + set _bootimage_type=download + set _bootstrap_factor=1 +) else if "%1"=="update-boot-image" ( + set _git_pull=0 + set _compile_vm=0 + set _bootimage_type=download + set _bootstrap_factor=0 ) else goto usage if not exist Nmakefile goto wrongdir @@ -38,30 +79,44 @@ if not errorlevel 1 ( echo Deleting staging images from temp/... del temp\staging.*.image -echo Updating working copy from %GIT_BRANCH%... -call git pull git://factorcode.org/git/factor.git %GIT_BRANCH% -if errorlevel 1 goto fail +if "%_git_pull%"=="1" ( + echo Updating working copy from %GIT_BRANCH%... + call git pull https://github.com/factor/factor %GIT_BRANCH% + if errorlevel 1 goto fail +) -echo Building vm... -nmake /nologo /f Nmakefile clean -if errorlevel 1 goto fail +if "%_compile_vm%"=="1" ( + echo Building vm... + nmake /nologo /f Nmakefile clean + if errorlevel 1 goto fail -nmake /nologo /f Nmakefile %_target% -if errorlevel 1 goto fail + nmake /nologo /f Nmakefile %_target% + if errorlevel 1 goto fail +) -echo Fetching %_bootimage_version% boot image... -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% -if errorlevel 1 goto fail +set _bootimage_url=https://downloads.factorcode.org/images/%GIT_BRANCH%/%_bootimage% +if "%_bootimage_type%"=="download" ( + call :download %GIT_BRANCH% %_bootimage_url% %_bootimage% + if errorlevel 1 ( + echo boot image for branch %GIT_BRANCH% is not on server, trying master instead + call :download master https://downloads.factorcode.org/images/master/%_bootimage% %_bootimage% + ) + if errorlevel 1 goto fail +) else if "%_bootimage_type%"=="make" ( + echo Making boot image... + .\factor.com -run=bootstrap.image %_bootimage% + if errorlevel 1 goto fail +) -echo Bootstrapping... -.\factor.com -i=%_bootimage% -if errorlevel 1 goto fail +if "%_bootstrap_factor%"=="1" ( + 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 Copying fresh factor.image to factor.image.fresh. + copy factor.image factor.image.fresh + if errorlevel 1 goto fail +) echo Build complete. goto :EOF @@ -80,8 +135,16 @@ echo Make sure you're running within the Visual Studio or Windows SDK environmen goto :EOF :usage -echo Usage: build.cmd +echo Usage: build.cmd [command] echo Updates the working copy, cleans and builds the vm using nmake, echo fetches a boot image, and bootstraps factor. +echo: echo The branch that bootstraps is the one that is checked out locally. +echo: +echo compile - recompile vm +echo update - git pull, recompile vm, download a boot image, bootstrap +echo self-bootstrap - git pull, make a boot image, bootstrap +echo bootstrap - existing boot image, bootstrap +echo net-bootstrap - recompile vm, download a boot image, bootstrap +echo update-boot-image - get the boot image for the current branch goto :EOF