mason: add support for forcing a build across the farm by reading a counter value from the server
							parent
							
								
									67a828f0f7
								
							
						
					
					
						commit
						2cba7fd727
					
				| 
						 | 
				
			
			@ -73,7 +73,7 @@ SYMBOL: next-email-time
 | 
			
		|||
    [
 | 
			
		||||
        builds/factor [
 | 
			
		||||
            check-disk-space
 | 
			
		||||
            update-code
 | 
			
		||||
            update-sources
 | 
			
		||||
            build? [ build ] [ 5 minutes sleep ] if
 | 
			
		||||
        ] with-directory
 | 
			
		||||
    ] [
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,17 +1,19 @@
 | 
			
		|||
! Copyright (C) 2008, 2010 Eduardo Cavazos, Slava Pestov.
 | 
			
		||||
! See http://factorcode.org/license.txt for BSD license.
 | 
			
		||||
USING: bootstrap.image.download init io.directories io.launcher
 | 
			
		||||
kernel namespaces mason.common mason.platform ;
 | 
			
		||||
USING: bootstrap.image.download http.client init io.directories
 | 
			
		||||
io.launcher kernel math.parser namespaces mason.config
 | 
			
		||||
mason.common mason.platform ;
 | 
			
		||||
IN: mason.updates
 | 
			
		||||
 | 
			
		||||
SYMBOLS: latest-git-id latest-boot-image ;
 | 
			
		||||
SYMBOLS: last-git-id last-boot-image ;
 | 
			
		||||
TUPLE: sources git-id boot-image counter ;
 | 
			
		||||
 | 
			
		||||
C: <sources> sources
 | 
			
		||||
 | 
			
		||||
SYMBOLS: latest-sources last-built-sources ;
 | 
			
		||||
 | 
			
		||||
[
 | 
			
		||||
    f latest-git-id set-global
 | 
			
		||||
    f latest-boot-image set-global
 | 
			
		||||
    f last-git-id set-global
 | 
			
		||||
    f last-boot-image set-global
 | 
			
		||||
    f latest-sources set-global
 | 
			
		||||
    f last-built-sources set-global
 | 
			
		||||
] "mason.updates" add-startup-hook
 | 
			
		||||
 | 
			
		||||
: git-pull-cmd ( -- cmd )
 | 
			
		||||
| 
						 | 
				
			
			@ -23,31 +25,26 @@ SYMBOLS: last-git-id last-boot-image ;
 | 
			
		|||
        "master"
 | 
			
		||||
    } ;
 | 
			
		||||
 | 
			
		||||
: update-source ( -- )
 | 
			
		||||
: latest-git-id ( -- git-id )
 | 
			
		||||
    git-pull-cmd short-running-process
 | 
			
		||||
    git-id latest-git-id set-global ;
 | 
			
		||||
    git-id ;
 | 
			
		||||
 | 
			
		||||
: update-boot-image ( -- )
 | 
			
		||||
: latest-boot-image ( -- boot-image )
 | 
			
		||||
    boot-image-name
 | 
			
		||||
    [ maybe-download-image drop ]
 | 
			
		||||
    [ file-checksum latest-boot-image set-global ] bi ;
 | 
			
		||||
    [ maybe-download-image drop ] [ file-checksum ] bi ;
 | 
			
		||||
 | 
			
		||||
: update-code ( -- )
 | 
			
		||||
    update-source
 | 
			
		||||
    update-boot-image ;
 | 
			
		||||
: latest-counter ( -- counter )
 | 
			
		||||
    counter-url http-get nip string>number ;
 | 
			
		||||
 | 
			
		||||
: new-source-available? ( -- ? )
 | 
			
		||||
    last-git-id get-global latest-git-id get-global = not ;
 | 
			
		||||
 | 
			
		||||
: new-image-available? ( -- ? )
 | 
			
		||||
    last-boot-image get-global latest-boot-image get-global = not ;
 | 
			
		||||
: update-sources ( -- )
 | 
			
		||||
    latest-git-id latest-boot-image latest-counter <sources>
 | 
			
		||||
    latest-sources set-global ;
 | 
			
		||||
 | 
			
		||||
: build? ( -- ? )
 | 
			
		||||
    new-source-available? new-image-available? or ;
 | 
			
		||||
    latest-sources get-global last-built-sources get-global = not ;
 | 
			
		||||
 | 
			
		||||
: finish-build ( -- )
 | 
			
		||||
    #! If the build completed (successfully or not) without
 | 
			
		||||
    #! mason crashing or being killed, don't build this git ID
 | 
			
		||||
    #! and boot image hash again.
 | 
			
		||||
    latest-git-id get-global last-git-id set-global
 | 
			
		||||
    latest-boot-image get-global last-boot-image set-global ;
 | 
			
		||||
    latest-sources get-global last-built-sources set-global ;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue