]> gitweb.factorcode.org Git - factor.git/blob - extra/mason/build/build.factor
mason.build: use absolute-path instead
[factor.git] / extra / mason / build / build.factor
1 ! Copyright (C) 2008, 2011 Eduardo Cavazos, Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: arrays calendar combinators continuations io.backend
4 io.directories io.pathnames kernel mason.child mason.cleanup
5 mason.common mason.config mason.docs mason.git mason.notify
6 mason.platform mason.release mason.updates namespaces sequences
7 ;
8 IN: mason.build
9
10 : create-build-dir ( -- )
11     now datestamp stamp set
12     build-dir make-directory ;
13
14 : enter-build-dir  ( -- )
15     "Building in directory " build-dir append print-timestamp
16     build-dir set-current-directory ;
17
18 : clone-source ( -- )
19     "Cloning GIT repository" print-timestamp
20     "git" "clone" builds-dir get "factor" append-path absolute-path 3array
21     short-running-process ;
22
23 : copy-image ( -- )
24     builds-dir get target-boot-image-name append-path
25     [ "." copy-file-into ] [ "factor" copy-file-into ] bi ;
26
27 : save-git-id ( -- )
28     "factor" [ git-id ] with-directory {
29         [ "git-id" to-file ]
30         [ "factor/git-id" to-file ]
31         [ current-git-id set ]
32         [ notify-begin-build ]
33     } cleave ;
34
35 : begin-build ( -- )
36     clone-source
37     copy-image
38     save-git-id ;
39
40 : do-build ( -- )
41     create-build-dir
42     enter-build-dir
43     [
44         begin-build
45         build-child
46         [ notify-report ] [
47             status-clean eq?
48             [ notify-upload upload-docs release ] when
49         ] bi
50         notify-finish
51         finish-build
52     ] [ cleanup-build ] finally
53     notify-idle ;
54
55 MAIN: do-build