From 6182a161dba6eead4fa91a11cafcbba1732a27d8 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Fri, 7 Nov 2008 22:03:27 -0600 Subject: [PATCH 01/10] support reading 8bit bitmaps, 4bit is blocking on bit-streams --- extra/graphics/bitmap/bitmap.factor | 34 +++++++++++++++++++---------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/extra/graphics/bitmap/bitmap.factor b/extra/graphics/bitmap/bitmap.factor index 651c5f7ca1..4d83300934 100755 --- a/extra/graphics/bitmap/bitmap.factor +++ b/extra/graphics/bitmap/bitmap.factor @@ -5,7 +5,7 @@ USING: alien arrays byte-arrays combinators summary io.backend graphics.viewer io io.binary io.files kernel libc math math.functions namespaces opengl opengl.gl prettyprint sequences strings ui ui.gadgets.panes io.encodings.binary -accessors ; +accessors grouping ; IN: graphics.bitmap ! Currently can only handle 24bit bitmaps. @@ -23,16 +23,25 @@ TUPLE: bitmap magic size reserved offset header-length width swap [ >>array ] [ >>color-index ] bi 24 >>bit-count ; -: raw-bitmap>string ( str n -- str ) +: 8bit>array ( bitmap -- array ) + [ rgb-quads>> 4 [ 3 head-slice ] map ] + [ color-index>> >array ] bi [ swap nth ] with map concat ; + +: 4bit>array ( bitmap -- array ) + [ rgb-quads>> 4 [ 3 head-slice ] map ] + [ color-index>> >array ] bi [ swap nth ] with map concat ; + +: raw-bitmap>array ( bitmap -- array ) + dup bit-count>> { { 32 [ "32bit" throw ] } - { 24 [ ] } + { 24 [ color-index>> ] } { 16 [ "16bit" throw ] } - { 8 [ "8bit" throw ] } - { 4 [ "4bit" throw ] } + { 8 [ 8bit>array ] } + { 4 [ 4bit>array ] } { 2 [ "2bit" throw ] } { 1 [ "1bit" throw ] } - } case ; + } case >byte-array ; ERROR: bitmap-magic ; @@ -72,13 +81,12 @@ M: bitmap-magic summary : load-bitmap ( path -- bitmap ) normalize-path binary [ - T{ bitmap } clone - dup parse-file-header - dup parse-bitmap-header - dup parse-bitmap + bitmap new + dup parse-file-header + dup parse-bitmap-header + dup parse-bitmap ] with-file-reader - dup color-index>> over bit-count>> - raw-bitmap>string >byte-array >>array ; + dup raw-bitmap>array >>array ; : save-bitmap ( bitmap path -- ) binary [ @@ -118,6 +126,8 @@ M: bitmap draw-image ( bitmap -- ) bit-count>> { ! { 32 [ GL_BGRA GL_UNSIGNED_INT_8_8_8_8 ] } ! broken { 24 [ GL_BGR GL_UNSIGNED_BYTE ] } + { 8 [ GL_BGR GL_UNSIGNED_BYTE ] } + { 4 [ GL_BGR GL_UNSIGNED_BYTE ] } } case ] keep array>> glDrawPixels ; From fdbea06e279f71892ecf2354790121d5cf8da559 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 8 Nov 2008 20:40:09 -0600 Subject: [PATCH 02/10] Fix compile warning --- vm/callstack.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vm/callstack.c b/vm/callstack.c index c9466bbbb2..b7e99b418c 100755 --- a/vm/callstack.c +++ b/vm/callstack.c @@ -117,7 +117,7 @@ CELL frame_executing(F_STACK_FRAME *frame) F_STACK_FRAME *frame_successor(F_STACK_FRAME *frame) { if(frame->size == 0) - critical_error("Stack frame has zero size",frame); + critical_error("Stack frame has zero size",(CELL)frame); return (F_STACK_FRAME *)((CELL)frame - frame->size); } From abc3915387c145215dd50f8923796c71c46fd2b3 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 8 Nov 2008 21:06:51 -0600 Subject: [PATCH 03/10] Fix x86-32 VM compilation; was using a 64-bit reg on accident --- vm/cpu-x86.32.S | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vm/cpu-x86.32.S b/vm/cpu-x86.32.S index eec850dc9e..6ddbd52da2 100755 --- a/vm/cpu-x86.32.S +++ b/vm/cpu-x86.32.S @@ -10,7 +10,7 @@ and the callstack top is passed in EDX */ #define DS_REG %esi #define RETURN_REG %eax -#define NV_TEMP_REG %rbx +#define NV_TEMP_REG %ebx #define CELL_SIZE 4 #define STACK_PADDING 12 From f7fe84e5634a4f2c05b019479dfe072a8bb9f457 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 8 Nov 2008 21:40:47 -0600 Subject: [PATCH 04/10] Working on Win64 FFI --- basis/compiler/codegen/codegen.factor | 25 ++++++--- basis/cpu/architecture/architecture.factor | 10 +++- basis/cpu/ppc/linux/linux.factor | 8 ++- basis/cpu/ppc/macosx/macosx.factor | 8 ++- basis/cpu/x86/32/32.factor | 6 +++ basis/cpu/x86/64/64.factor | 63 ++++++---------------- basis/cpu/x86/64/unix/unix.factor | 40 ++++++++++++++ basis/cpu/x86/64/winnt/winnt.factor | 13 ++++- basis/cpu/x86/x86.factor | 12 ++--- 9 files changed, 117 insertions(+), 68 deletions(-) diff --git a/basis/compiler/codegen/codegen.factor b/basis/compiler/codegen/codegen.factor index cab86dcb54..35d4d59253 100644 --- a/basis/compiler/codegen/codegen.factor +++ b/basis/compiler/codegen/codegen.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: namespaces make math math.parser sequences accessors +USING: namespaces make math math.order math.parser sequences accessors kernel kernel.private layouts assocs words summary arrays combinators classes.algebra alien alien.c-types alien.structs alien.strings alien.arrays sets threads libc continuations.private @@ -234,13 +234,26 @@ M: float-regs reg-class-variable drop float-regs ; GENERIC: inc-reg-class ( register-class -- ) -M: reg-class inc-reg-class - dup reg-class-variable inc - fp-shadows-int? [ reg-size stack-params +@ ] [ drop ] if ; +: ?dummy-stack-params ( reg-class -- ) + dummy-stack-params? [ reg-size stack-params +@ ] [ drop ] if ; + +: ?dummy-int-params ( reg-class -- ) + dummy-int-params? [ reg-size cell /i 1 max int-regs +@ ] [ drop ] if ; + +: ?dummy-fp-params ( reg-class -- ) + drop dummy-fp-params? [ float-regs inc ] when ; + +M: int-regs inc-reg-class + [ reg-class-variable inc ] + [ ?dummy-stack-params ] + [ ?dummy-fp-params ] + tri ; M: float-regs inc-reg-class - dup call-next-method - fp-shadows-int? [ reg-size cell /i int-regs +@ ] [ drop ] if ; + [ reg-class-variable inc ] + [ ?dummy-stack-params ] + [ ?dummy-int-params ] + tri ; GENERIC: reg-class-full? ( class -- ? ) diff --git a/basis/cpu/architecture/architecture.factor b/basis/cpu/architecture/architecture.factor index e4fa9419f0..b0b5b048d9 100644 --- a/basis/cpu/architecture/architecture.factor +++ b/basis/cpu/architecture/architecture.factor @@ -146,8 +146,14 @@ HOOK: struct-small-enough? cpu ( heap-size -- ? ) ! Do we pass value structs by value or hidden reference? HOOK: value-structs? cpu ( -- ? ) -! If t, fp parameters are shadowed by dummy int parameters -HOOK: fp-shadows-int? cpu ( -- ? ) +! If t, all parameters are shadowed by dummy stack parameters +HOOK: dummy-stack-params? cpu ( -- ? ) + +! If t, all FP parameters are shadowed by dummy int parameters +HOOK: dummy-int-params? cpu ( -- ? ) + +! If t, all int parameters are shadowed by dummy FP parameters +HOOK: dummy-fp-params? cpu ( -- ? ) HOOK: %prepare-unbox cpu ( -- ) diff --git a/basis/cpu/ppc/linux/linux.factor b/basis/cpu/ppc/linux/linux.factor index d92709a399..c6649c7ad2 100644 --- a/basis/cpu/ppc/linux/linux.factor +++ b/basis/cpu/ppc/linux/linux.factor @@ -14,6 +14,10 @@ M: linux lr-save 1 ; M: float-regs param-regs { 1 2 3 4 5 6 7 8 } ; -M: ppc value-structs? drop f ; +M: ppc value-structs? f ; -M: ppc fp-shadows-int? drop f ; +M: ppc dummy-stack-params? f ; + +M: ppc dummy-int-params? f ; + +M: ppc dummy-fp-params? f ; diff --git a/basis/cpu/ppc/macosx/macosx.factor b/basis/cpu/ppc/macosx/macosx.factor index 1e0a6caca0..bb607d0e44 100644 --- a/basis/cpu/ppc/macosx/macosx.factor +++ b/basis/cpu/ppc/macosx/macosx.factor @@ -15,6 +15,10 @@ M: macosx lr-save 2 ; M: float-regs param-regs { 1 2 3 4 5 6 7 8 9 10 11 12 13 } ; -M: ppc value-structs? drop t ; +M: ppc value-structs? t ; -M: ppc fp-shadows-int? drop t ; +M: ppc dummy-stack-params? t ; + +M: ppc dummy-int-params? t ; + +M: ppc dummy-fp-params? f ; diff --git a/basis/cpu/x86/32/32.factor b/basis/cpu/x86/32/32.factor index 82fa7a012e..f26d76551a 100644 --- a/basis/cpu/x86/32/32.factor +++ b/basis/cpu/x86/32/32.factor @@ -274,6 +274,12 @@ M: x86.32 %callback-return ( n -- ) [ drop 0 ] } cond RET ; +M: x86.32 dummy-stack-params? f ; + +M: x86.32 dummy-int-params? f ; + +M: x86.32 dummy-fp-params? f ; + os windows? [ cell "longlong" c-type (>>align) cell "ulonglong" c-type (>>align) diff --git a/basis/cpu/x86/64/64.factor b/basis/cpu/x86/64/64.factor index d45dd098b8..0d20660021 100644 --- a/basis/cpu/x86/64/64.factor +++ b/basis/cpu/x86/64/64.factor @@ -26,6 +26,7 @@ M: x86.64 temp-reg-2 RCX ; : param-reg-1 int-regs param-regs first ; inline : param-reg-2 int-regs param-regs second ; inline +: param-reg-3 int-regs param-regs third ; inline M: int-regs return-reg drop RAX ; M: float-regs return-reg drop XMM0 ; @@ -40,13 +41,13 @@ M: x86.64 %prologue ( n -- ) M: stack-params %load-param-reg drop - >r R11 swap stack@ MOV - r> stack@ R11 MOV ; + >r R11 swap param@ MOV + r> param@ R11 MOV ; M: stack-params %save-param-reg drop R11 swap next-stack@ MOV - stack@ R11 MOV ; + param@ R11 MOV ; : with-return-regs ( quot -- ) [ @@ -55,37 +56,6 @@ M: stack-params %save-param-reg call ] with-scope ; inline -! The ABI for passing structs by value is pretty messed up -<< "void*" c-type clone "__stack_value" define-primitive-type -stack-params "__stack_value" c-type (>>reg-class) >> - -: struct-types&offset ( struct-type -- pairs ) - fields>> [ - [ type>> ] [ offset>> ] bi 2array - ] map ; - -: split-struct ( pairs -- seq ) - [ - [ 8 mod zero? [ t , ] when , ] assoc-each - ] { } make { t } split harvest ; - -: flatten-small-struct ( c-type -- seq ) - struct-types&offset split-struct [ - [ c-type c-type-reg-class ] map - int-regs swap member? "void*" "double" ? c-type - ] map ; - -: flatten-large-struct ( c-type -- seq ) - heap-size cell align - cell /i "__stack_value" c-type ; - -M: struct-type flatten-value-type ( type -- seq ) - dup heap-size 16 > [ - flatten-large-struct - ] [ - flatten-small-struct - ] if ; - M: x86.64 %prepare-unbox ( -- ) ! First parameter is top of stack param-reg-1 R14 [] MOV @@ -102,7 +72,7 @@ M: x86.64 %unbox-long-long ( n func -- ) : %unbox-struct-field ( c-type i -- ) ! Alien must be in param-reg-1. - param-reg-1 swap cells [+] swap reg-class>> { + R11 swap cells [+] swap reg-class>> { { int-regs [ int-regs get pop swap MOV ] } { double-float-regs [ float-regs get pop swap MOVSD ] } } case ; @@ -110,20 +80,20 @@ M: x86.64 %unbox-long-long ( n func -- ) M: x86.64 %unbox-small-struct ( c-type -- ) ! Alien must be in param-reg-1. "alien_offset" f %alien-invoke - ! Move alien_offset() return value to param-reg-1 so that we don't + ! Move alien_offset() return value to R11 so that we don't ! clobber it. - param-reg-1 RAX MOV + R11 RAX MOV [ - flatten-small-struct [ %unbox-struct-field ] each-index + flatten-value-type [ %unbox-struct-field ] each-index ] with-return-regs ; M: x86.64 %unbox-large-struct ( n c-type -- ) ! Source is in param-reg-1 heap-size ! Load destination address - param-reg-2 rot stack@ LEA + param-reg-2 rot param@ LEA ! Load structure size - RDX swap MOV + param-reg-3 swap MOV ! Copy the struct to the C stack "to_value_struct" f %alien-invoke ; @@ -142,10 +112,7 @@ M: x86.64 %box ( n reg-class func -- ) M: x86.64 %box-long-long ( n func -- ) int-regs swap %box ; -M: x86.64 struct-small-enough? ( size -- ? ) - heap-size 2 cells <= ; - -: box-struct-field@ ( i -- operand ) 1+ cells stack@ ; +: box-struct-field@ ( i -- operand ) 1+ cells param@ ; : %box-struct-field ( c-type i -- ) box-struct-field@ swap reg-class>> { @@ -156,15 +123,15 @@ M: x86.64 struct-small-enough? ( size -- ? ) M: x86.64 %box-small-struct ( c-type -- ) #! Box a <= 16-byte struct. [ - [ flatten-small-struct [ %box-struct-field ] each-index ] - [ RDX swap heap-size MOV ] bi + [ flatten-value-type [ %box-struct-field ] each-index ] + [ param-reg-3 swap heap-size MOV ] bi param-reg-1 0 box-struct-field@ MOV param-reg-2 1 box-struct-field@ MOV "box_small_struct" f %alien-invoke ] with-return-regs ; : struct-return@ ( n -- operand ) - [ stack-frame get params>> ] unless* stack@ ; + [ stack-frame get params>> ] unless* param@ ; M: x86.64 %box-large-struct ( n c-type -- ) ! Struct size is parameter 2 @@ -178,7 +145,7 @@ M: x86.64 %prepare-box-struct ( -- ) ! Compute target address for value struct return RAX f struct-return@ LEA ! Store it as the first parameter - 0 stack@ RAX MOV ; + 0 param@ RAX MOV ; M: x86.64 %prepare-var-args RAX RAX XOR ; diff --git a/basis/cpu/x86/64/unix/unix.factor b/basis/cpu/x86/64/unix/unix.factor index abbd0cf21b..1a65132fab 100644 --- a/basis/cpu/x86/64/unix/unix.factor +++ b/basis/cpu/x86/64/unix/unix.factor @@ -10,3 +10,43 @@ M: float-regs param-regs drop { XMM0 XMM1 XMM2 XMM3 XMM4 XMM5 XMM6 XMM7 } ; M: x86.64 reserved-area-size 0 ; + +! The ABI for passing structs by value is pretty messed up +<< "void*" c-type clone "__stack_value" define-primitive-type +stack-params "__stack_value" c-type (>>reg-class) >> + +: struct-types&offset ( struct-type -- pairs ) + fields>> [ + [ type>> ] [ offset>> ] bi 2array + ] map ; + +: split-struct ( pairs -- seq ) + [ + [ 8 mod zero? [ t , ] when , ] assoc-each + ] { } make { t } split harvest ; + +: flatten-small-struct ( c-type -- seq ) + struct-types&offset split-struct [ + [ c-type c-type-reg-class ] map + int-regs swap member? "void*" "double" ? c-type + ] map ; + +: flatten-large-struct ( c-type -- seq ) + heap-size cell align + cell /i "__stack_value" c-type ; + +M: struct-type flatten-value-type ( type -- seq ) + dup heap-size 16 > [ + flatten-large-struct + ] [ + flatten-small-struct + ] if ; + +M: x86.64 struct-small-enough? ( size -- ? ) + heap-size 2 cells <= ; + +M: x86.64 dummy-stack-params? f ; + +M: x86.64 dummy-int-params? f ; + +M: x86.64 dummy-fp-params? f ; diff --git a/basis/cpu/x86/64/winnt/winnt.factor b/basis/cpu/x86/64/winnt/winnt.factor index d4c092f63d..0124c40877 100644 --- a/basis/cpu/x86/64/winnt/winnt.factor +++ b/basis/cpu/x86/64/winnt/winnt.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel layouts system alien.c-types compiler.cfg.registers -cpu.architecture cpu.x86.assembler cpu.x86 ; +USING: kernel layouts system math alien.c-types +compiler.cfg.registers cpu.architecture cpu.x86.assembler cpu.x86 ; IN: cpu.x86.64.winnt M: int-regs param-regs drop { RCX RDX R8 R9 } ; @@ -10,6 +10,15 @@ M: float-regs param-regs drop { XMM0 XMM1 XMM2 XMM3 } ; M: x86.64 reserved-area-size 4 cells ; +M: x86.64 struct-small-enough? ( size -- ? ) + heap-size cell <= ; + +M: x86.64 dummy-stack-params? f ; + +M: x86.64 dummy-int-params? t ; + +M: x86.64 dummy-fp-params? t ; + << "longlong" "ptrdiff_t" typedef "int" "long" typedef diff --git a/basis/cpu/x86/x86.factor b/basis/cpu/x86/x86.factor index 55675a5e42..4f72fe45e1 100644 --- a/basis/cpu/x86/x86.factor +++ b/basis/cpu/x86/x86.factor @@ -467,6 +467,8 @@ M: x86 %compare-float-branch ( label cc src1 src2 -- ) : stack@ ( n -- op ) stack-reg swap [+] ; +: param@ ( n -- op ) reserved-area-size + stack@ ; + : spill-integer-base ( stack-frame -- n ) [ params>> ] [ return>> ] bi + reserved-area-size + ; @@ -493,16 +495,16 @@ M: x86 %reload-float ( dst n -- ) spill-float@ MOVSD ; M: x86 %loop-entry 16 code-alignment [ NOP ] times ; -M: int-regs %save-param-reg drop >r stack@ r> MOV ; -M: int-regs %load-param-reg drop swap stack@ MOV ; +M: int-regs %save-param-reg drop >r param@ r> MOV ; +M: int-regs %load-param-reg drop swap param@ MOV ; GENERIC: MOVSS/D ( dst src reg-class -- ) M: single-float-regs MOVSS/D drop MOVSS ; M: double-float-regs MOVSS/D drop MOVSD ; -M: float-regs %save-param-reg >r >r stack@ r> r> MOVSS/D ; -M: float-regs %load-param-reg >r swap stack@ r> MOVSS/D ; +M: float-regs %save-param-reg >r >r param@ r> r> MOVSS/D ; +M: float-regs %load-param-reg >r swap param@ r> MOVSS/D ; GENERIC: push-return-reg ( reg-class -- ) GENERIC: load-return-reg ( n reg-class -- ) @@ -518,8 +520,6 @@ M: x86 %prepare-alien-invoke temp-reg-1 2 cells [+] ds-reg MOV temp-reg-1 3 cells [+] rs-reg MOV ; -M: x86 fp-shadows-int? ( -- ? ) f ; - M: x86 value-structs? t ; M: x86 small-enough? ( n -- ? ) From 28e397420d257d4fbd3896b68f72e8b6bb8da8b8 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 8 Nov 2008 21:43:55 -0600 Subject: [PATCH 05/10] Fix USING: --- basis/cpu/x86/64/unix/unix.factor | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/basis/cpu/x86/64/unix/unix.factor b/basis/cpu/x86/64/unix/unix.factor index 1a65132fab..ddb412873a 100644 --- a/basis/cpu/x86/64/unix/unix.factor +++ b/basis/cpu/x86/64/unix/unix.factor @@ -1,7 +1,9 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel layouts system compiler.cfg.registers -cpu.architecture cpu.x86.assembler cpu.x86 ; +USING: accessors arrays sequences math splitting make assocs +kernel layouts system alien.c-types alien.structs +cpu.architecture cpu.x86.assembler cpu.x86 +compiler.codegen compiler.cfg.registers ; IN: cpu.x86.64.unix M: int-regs param-regs drop { RDI RSI RDX RCX R8 R9 } ; From 70d7c0ca20ce976a976240e65ac97f84c32fdf09 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sun, 9 Nov 2008 13:01:03 -0600 Subject: [PATCH 06/10] make hexdump work with byte-arrays --- extra/hexdump/hexdump-tests.factor | 3 +++ extra/hexdump/hexdump.factor | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/extra/hexdump/hexdump-tests.factor b/extra/hexdump/hexdump-tests.factor index 7fb26e10c5..b3c03196f5 100644 --- a/extra/hexdump/hexdump-tests.factor +++ b/extra/hexdump/hexdump-tests.factor @@ -6,3 +6,6 @@ USING: hexdump kernel sequences tools.test ; [ t ] [ 256 [ ] map hexdump "Length: 256, 100h\n00000000h: 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ................\n00000010h: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f ................\n00000020h: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f !\"#$%&'()*+,-./\n00000030h: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 0123456789:;<=>?\n00000040h: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f @ABCDEFGHIJKLMNO\n00000050h: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f PQRSTUVWXYZ[\\]^_\n00000060h: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f `abcdefghijklmno\n00000070h: 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f pqrstuvwxyz{|}~.\n00000080h: 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f ................\n00000090h: 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f ................\n000000a0h: a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 aa ab ac ad ae af ................\n000000b0h: b0 b1 b2 b3 b4 b5 b6 b7 b8 b9 ba bb bc bd be bf ................\n000000c0h: c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf ................\n000000d0h: d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df ................\n000000e0h: e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef ................\n000000f0h: f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff ................\n" = ] unit-test + +[ + "Length: 3, 3h\n00000000h: 01 02 03 ...\n" ] [ B{ 1 2 3 } hexdump ] unit-test diff --git a/extra/hexdump/hexdump.factor b/extra/hexdump/hexdump.factor index b965fb41bb..ecbc2d6169 100644 --- a/extra/hexdump/hexdump.factor +++ b/extra/hexdump/hexdump.factor @@ -21,9 +21,9 @@ IN: hexdump [ >hex-digit ] { } map-as concat 48 CHAR: \s pad-right ; : >ascii ( bytes -- str ) - [ [ printable? ] keep CHAR: . ? ] map ; + [ [ printable? ] keep CHAR: . ? ] "" map-as ; -: write-hex-line ( str lineno -- ) +: write-hex-line ( bytes lineno -- ) write-offset [ >hex-digits write ] [ >ascii write ] bi nl ; PRIVATE> From 429fe85f460face61d8a31fdc12d001e950249c9 Mon Sep 17 00:00:00 2001 From: "U-SLAVA-DFB8FF805\\Slava" Date: Sun, 9 Nov 2008 17:27:39 -0600 Subject: [PATCH 07/10] Fix compile error --- basis/io/windows/files/files.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 basis/io/windows/files/files.factor diff --git a/basis/io/windows/files/files.factor b/basis/io/windows/files/files.factor old mode 100644 new mode 100755 index 3fb8029ee7..3952299543 --- a/basis/io/windows/files/files.factor +++ b/basis/io/windows/files/files.factor @@ -276,7 +276,7 @@ M: winnt file-system-info ( path -- file-system-info ) swap >>type swap >>mount-point ; -: find-first-volume ( word -- string handle ) +: find-first-volume ( -- string handle ) MAX_PATH 1+ dup length dupd FindFirstVolume dup win32-error=0/f From 2bf9a55cead31028ef311b3faf066511b60792ea Mon Sep 17 00:00:00 2001 From: "U-SLAVA-DFB8FF805\\Slava" Date: Sun, 9 Nov 2008 17:27:51 -0600 Subject: [PATCH 08/10] Fix Windows deployment --- basis/tools/deploy/windows/windows.factor | 26 +++++++++++------------ 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/basis/tools/deploy/windows/windows.factor b/basis/tools/deploy/windows/windows.factor index ad1b3cbd84..ec1259c777 100755 --- a/basis/tools/deploy/windows/windows.factor +++ b/basis/tools/deploy/windows/windows.factor @@ -9,16 +9,14 @@ IN: tools.deploy.windows "resource:factor.dll" swap copy-file-into ; : copy-freetype ( bundle-name -- ) - deploy-ui? get [ - { - "resource:freetype6.dll" - "resource:zlib1.dll" - } swap copy-files-into - ] [ drop ] if ; + { + "resource:freetype6.dll" + "resource:zlib1.dll" + } swap copy-files-into ; : create-exe-dir ( vocab bundle-name -- vm ) + dup copy-dll deploy-ui? get [ - dup copy-dll dup copy-freetype dup "" copy-fonts ] when @@ -26,14 +24,14 @@ IN: tools.deploy.windows M: winnt deploy* "resource:" [ - deploy-name over deploy-config at - [ - { + dup deploy-config [ + deploy-name get + [ [ create-exe-dir ] [ image-name ] [ drop ] - [ drop deploy-config ] - } 2cleave make-deploy-image - ] - [ nip open-in-explorer ] 2bi + 2tri namespace make-deploy-image + ] + [ nip open-in-explorer ] 2bi + ] bind ] with-directory ; From 6df7342b812b53a6c15e7ce100251baaef50c63d Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos Date: Mon, 10 Nov 2008 02:10:18 -0600 Subject: [PATCH 09/10] ui.gadgets.scrollers: Nicer version of 'find-scroller*' --- basis/ui/gadgets/scrollers/scrollers.factor | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/basis/ui/gadgets/scrollers/scrollers.factor b/basis/ui/gadgets/scrollers/scrollers.factor index 633e3ad4a8..8c63e15a4d 100644 --- a/basis/ui/gadgets/scrollers/scrollers.factor +++ b/basis/ui/gadgets/scrollers/scrollers.factor @@ -4,7 +4,8 @@ USING: accessors arrays ui.gadgets ui.gadgets.viewports ui.gadgets.frames ui.gadgets.grids ui.gadgets.theme ui.gadgets.sliders ui.gestures kernel math namespaces sequences models models.range models.compose -combinators math.vectors classes.tuple math.geometry.rect ; +combinators math.vectors classes.tuple math.geometry.rect +combinators.short-circuit ; IN: ui.gadgets.scrollers TUPLE: scroller < frame viewport x y follows ; @@ -70,13 +71,10 @@ scroller H{ : relative-scroll-rect ( rect gadget scroller -- newrect ) viewport>> gadget-child relative-loc offset-rect ; -: find-scroller* ( gadget -- scroller ) - dup find-scroller dup [ - 2dup viewport>> gadget-child - swap child? [ nip ] [ 2drop f ] if - ] [ - 2drop f - ] if ; +: find-scroller* ( gadget -- scroller/f ) + dup find-scroller + { [ nip ] [ viewport>> gadget-child swap child? ] [ nip ] } + 2&& ; : scroll>rect ( rect gadget -- ) dup find-scroller* dup [ From 359f177a984e16b25e54b613b9565965453e30d7 Mon Sep 17 00:00:00 2001 From: Eduardo Cavazos Date: Mon, 10 Nov 2008 02:40:14 -0600 Subject: [PATCH 10/10] Remove 'builder' vocabulary (now called 'mason') --- extra/builder/build/build.factor | 46 -------- extra/builder/builder.factor | 21 ---- extra/builder/child/child.factor | 68 ------------ extra/builder/cleanup/cleanup.factor | 26 ----- extra/builder/common/common.factor | 54 ---------- extra/builder/email/email.factor | 24 ----- extra/builder/release/archive/archive.factor | 69 ------------ extra/builder/release/branch/branch.factor | 40 ------- extra/builder/release/release.factor | 27 ----- extra/builder/release/tidy/tidy.factor | 29 ----- extra/builder/release/upload/upload.factor | 54 ---------- extra/builder/report/report.factor | 35 ------ extra/builder/test/test.factor | 35 ------ extra/builder/updates/updates.factor | 31 ------ extra/builder/util/util.factor | 106 ------------------- 15 files changed, 665 deletions(-) delete mode 100644 extra/builder/build/build.factor delete mode 100644 extra/builder/builder.factor delete mode 100644 extra/builder/child/child.factor delete mode 100644 extra/builder/cleanup/cleanup.factor delete mode 100644 extra/builder/common/common.factor delete mode 100644 extra/builder/email/email.factor delete mode 100644 extra/builder/release/archive/archive.factor delete mode 100644 extra/builder/release/branch/branch.factor delete mode 100644 extra/builder/release/release.factor delete mode 100644 extra/builder/release/tidy/tidy.factor delete mode 100644 extra/builder/release/upload/upload.factor delete mode 100644 extra/builder/report/report.factor delete mode 100644 extra/builder/test/test.factor delete mode 100644 extra/builder/updates/updates.factor delete mode 100644 extra/builder/util/util.factor diff --git a/extra/builder/build/build.factor b/extra/builder/build/build.factor deleted file mode 100644 index e9f58980ea..0000000000 --- a/extra/builder/build/build.factor +++ /dev/null @@ -1,46 +0,0 @@ - -USING: io.files io.launcher io.encodings.utf8 prettyprint - builder.util builder.common builder.child builder.release - builder.report builder.email builder.cleanup ; - -IN: builder.build - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: create-build-dir ( -- ) - datestamp >stamp - build-dir make-directory ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: enter-build-dir ( -- ) build-dir set-current-directory ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: clone-builds-factor ( -- ) - { "git" "clone" builds/factor } to-strings try-process ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: record-id ( -- ) - "factor" - [ git-id "../git-id" utf8 [ . ] with-file-writer ] - with-directory ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: build ( -- ) - reset-status - create-build-dir - enter-build-dir - clone-builds-factor - record-id - build-child - release - report - email-report - cleanup ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -MAIN: build \ No newline at end of file diff --git a/extra/builder/builder.factor b/extra/builder/builder.factor deleted file mode 100644 index 29daa8160b..0000000000 --- a/extra/builder/builder.factor +++ /dev/null @@ -1,21 +0,0 @@ - -USING: kernel debugger io.files threads calendar - builder.common - builder.updates - builder.build ; - -IN: builder - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: build-loop ( -- ) - builds-check - [ - builds/factor set-current-directory - new-code-available? [ build ] when - ] - try - 5 minutes sleep - build-loop ; - -MAIN: build-loop \ No newline at end of file diff --git a/extra/builder/child/child.factor b/extra/builder/child/child.factor deleted file mode 100644 index 0f701dfdd7..0000000000 --- a/extra/builder/child/child.factor +++ /dev/null @@ -1,68 +0,0 @@ - -USING: namespaces debugger io.files io.launcher accessors bootstrap.image - calendar builder.util builder.common ; - -IN: builder.child - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: make-clean ( -- ) { gnu-make "clean" } to-strings try-process ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: make-vm ( -- ) - - gnu-make >>command - "../compile-log" >>stdout - +stdout+ >>stderr - try-process ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: builds-factor-image ( -- img ) builds/factor my-boot-image-name append-path ; - -: copy-image ( -- ) - builds-factor-image ".." copy-file-into - builds-factor-image "." copy-file-into ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: boot-cmd ( -- cmd ) - { "./factor" { "-i=" my-boot-image-name } "-no-user-init" } to-strings ; - -: boot ( -- ) - - boot-cmd >>command - +closed+ >>stdin - "../boot-log" >>stdout - +stdout+ >>stderr - 60 minutes >>timeout - try-process ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: test-cmd ( -- cmd ) { "./factor" "-run=builder.test" } ; - -: test ( -- ) - - test-cmd >>command - +closed+ >>stdin - "../test-log" >>stdout - +stdout+ >>stderr - 240 minutes >>timeout - try-process ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: (build-child) ( -- ) - make-clean - make-vm status-vm on - copy-image - boot status-boot on - test status-test on - status on ; - -: build-child ( -- ) - "factor" set-current-directory - [ (build-child) ] try - ".." set-current-directory ; \ No newline at end of file diff --git a/extra/builder/cleanup/cleanup.factor b/extra/builder/cleanup/cleanup.factor deleted file mode 100644 index e601506fb4..0000000000 --- a/extra/builder/cleanup/cleanup.factor +++ /dev/null @@ -1,26 +0,0 @@ - -USING: kernel namespaces io.files io.launcher bootstrap.image - builder.util builder.common ; - -IN: builder.cleanup - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -SYMBOL: builder-debug - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: compress-image ( -- ) { "bzip2" my-boot-image-name } to-strings try-process ; - -: delete-child-factor ( -- ) - build-dir [ { "rm" "-rf" "factor" } try-process ] with-directory ; - -: cleanup ( -- ) - builder-debug get f = - [ - "test-log" delete-file - delete-child-factor - compress-image - ] - when ; - diff --git a/extra/builder/common/common.factor b/extra/builder/common/common.factor deleted file mode 100644 index 474606e451..0000000000 --- a/extra/builder/common/common.factor +++ /dev/null @@ -1,54 +0,0 @@ - -USING: kernel namespaces sequences splitting - io io.files io.launcher io.encodings.utf8 prettyprint - vars builder.util ; - -IN: builder.common - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -SYMBOL: upload-to-factorcode - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -SYMBOL: builds-dir - -: builds ( -- path ) - builds-dir get - home "/builds" append - or ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -VAR: stamp - -: builds/factor ( -- path ) builds "factor" append-path ; -: build-dir ( -- path ) builds stamp> append-path ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: prepare-build-machine ( -- ) - builds make-directory - builds - [ { "git" "clone" "git://factorcode.org/git/factor.git" } try-process ] - with-directory ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: builds-check ( -- ) builds exists? not [ prepare-build-machine ] when ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -SYMBOL: status-vm -SYMBOL: status-boot -SYMBOL: status-test -SYMBOL: status-build -SYMBOL: status-release -SYMBOL: status - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: reset-status ( -- ) - { status-vm status-boot status-test status-build status-release status } - [ off ] - each ; diff --git a/extra/builder/email/email.factor b/extra/builder/email/email.factor deleted file mode 100644 index ecde47f8f7..0000000000 --- a/extra/builder/email/email.factor +++ /dev/null @@ -1,24 +0,0 @@ - -USING: kernel namespaces accessors smtp builder.util builder.common ; - -IN: builder.email - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -SYMBOL: builder-from -SYMBOL: builder-recipients - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: subject-status ( -- str ) status get [ "report" ] [ "error" ] if ; - -: subject ( -- str ) { "builder@" host-name* ": " subject-status } to-string ; - -: email-report ( -- ) - - builder-from get >>from - builder-recipients get >>to - subject >>subject - "report" file>string >>body - send-email ; - diff --git a/extra/builder/release/archive/archive.factor b/extra/builder/release/archive/archive.factor deleted file mode 100644 index 25153436e6..0000000000 --- a/extra/builder/release/archive/archive.factor +++ /dev/null @@ -1,69 +0,0 @@ - -USING: kernel combinators system sequences io.files io.launcher prettyprint - builder.util - builder.common ; - -IN: builder.release.archive - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: base-name ( -- string ) - { "factor" [ os unparse ] cpu- stamp> } to-strings "-" join ; - -: extension ( -- extension ) - { - { [ os winnt? ] [ ".zip" ] } - { [ os macosx? ] [ ".dmg" ] } - { [ os unix? ] [ ".tar.gz" ] } - } - cond ; - -: archive-name ( -- string ) base-name extension append ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: windows-archive-cmd ( -- cmd ) { "zip" "-r" archive-name "factor" } ; - -! : macosx-archive-cmd ( -- cmd ) -! { "hdiutil" "create" -! "-srcfolder" "factor" -! "-fs" "HFS+" -! "-volname" "factor" -! archive-name } ; - -: macosx-archive-cmd ( -- cmd ) - { "mkdir" "dmg-root" } try-process - { "cp" "-r" "factor" "dmg-root" } try-process - { "hdiutil" "create" - "-srcfolder" "dmg-root" - "-fs" "HFS+" - "-volname" "factor" - archive-name } to-strings try-process - { "rm" "-rf" "dmg-root" } try-process - { "true" } ; - -: unix-archive-cmd ( -- cmd ) { "tar" "-cvzf" archive-name "factor" } ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: archive-cmd ( -- cmd ) - { - { [ os windows? ] [ windows-archive-cmd ] } - { [ os macosx? ] [ macosx-archive-cmd ] } - { [ os unix? ] [ unix-archive-cmd ] } - } - cond ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: make-archive ( -- ) archive-cmd to-strings try-process ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: releases ( -- path ) - builds "releases" append-path - dup exists? not - [ dup make-directory ] - when ; - -: save-archive ( -- ) archive-name releases move-file-into ; \ No newline at end of file diff --git a/extra/builder/release/branch/branch.factor b/extra/builder/release/branch/branch.factor deleted file mode 100644 index 6b1266bb45..0000000000 --- a/extra/builder/release/branch/branch.factor +++ /dev/null @@ -1,40 +0,0 @@ - -USING: kernel system namespaces sequences prettyprint io.files io.launcher - bootstrap.image - builder.util - builder.common ; - -IN: builder.release.branch - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: branch-name ( -- string ) "clean-" platform append ; - -: refspec ( -- string ) "master:" branch-name append ; - -: push-to-clean-branch ( -- ) - { "git" "push" "factorcode.org:/git/factor.git" refspec } - to-strings - try-process ; - -: upload-clean-image ( -- ) - { - "scp" - my-boot-image-name - { "factorcode.org:/var/www/factorcode.org/newsite/images/clean/" platform } - } - to-strings - try-process ; - -: (update-clean-branch) ( -- ) - "factor" - [ - push-to-clean-branch - upload-clean-image - ] - with-directory ; - -: update-clean-branch ( -- ) - upload-to-factorcode get - [ (update-clean-branch) ] - when ; diff --git a/extra/builder/release/release.factor b/extra/builder/release/release.factor deleted file mode 100644 index 28ce3e8b35..0000000000 --- a/extra/builder/release/release.factor +++ /dev/null @@ -1,27 +0,0 @@ - -USING: kernel debugger system namespaces sequences splitting combinators - io io.files io.launcher prettyprint bootstrap.image - combinators.cleave - builder.util - builder.common - builder.release.branch - builder.release.tidy - builder.release.archive - builder.release.upload ; - -IN: builder.release - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: (release) ( -- ) - update-clean-branch - tidy - make-archive - upload - save-archive - status-release on ; - -: clean-build? ( -- ? ) - { "load-everything-vocabs" "test-all-vocabs" } [ eval-file empty? ] all? ; - -: release ( -- ) [ clean-build? [ (release) ] when ] try ; \ No newline at end of file diff --git a/extra/builder/release/tidy/tidy.factor b/extra/builder/release/tidy/tidy.factor deleted file mode 100644 index f8f27e75f2..0000000000 --- a/extra/builder/release/tidy/tidy.factor +++ /dev/null @@ -1,29 +0,0 @@ - -USING: kernel system io.files io.launcher builder.util ; - -IN: builder.release.tidy - -: common-files ( -- seq ) - { - "boot.x86.32.image" - "boot.x86.64.image" - "boot.macosx-ppc.image" - "boot.linux-ppc.image" - "vm" - "temp" - "logs" - ".git" - ".gitignore" - "Makefile" - "unmaintained" - "build-support" - } ; - -: remove-common-files ( -- ) - { "rm" "-rf" common-files } to-strings try-process ; - -: remove-factor-app ( -- ) - os macosx? not [ { "rm" "-rf" "Factor.app" } try-process ] when ; - -: tidy ( -- ) - "factor" [ remove-factor-app remove-common-files ] with-directory ; diff --git a/extra/builder/release/upload/upload.factor b/extra/builder/release/upload/upload.factor deleted file mode 100644 index 19d3936fd9..0000000000 --- a/extra/builder/release/upload/upload.factor +++ /dev/null @@ -1,54 +0,0 @@ - -USING: kernel namespaces make sequences arrays io io.files - builder.util - builder.common - builder.release.archive ; - -IN: builder.release.upload - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -SYMBOL: upload-host - -SYMBOL: upload-username - -SYMBOL: upload-directory - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: remote-location ( -- dest ) - upload-directory get platform append ; - -: remote-archive-name ( -- dest ) - remote-location "/" archive-name 3append ; - -: temp-archive-name ( -- dest ) - remote-archive-name ".incomplete" append ; - -: upload-command ( -- args ) - "scp" - archive-name - [ upload-username get % "@" % upload-host get % ":" % temp-archive-name % ] "" make - 3array ; - -: rename-command ( -- args ) - [ - "ssh" , - upload-host get , - "-l" , - upload-username get , - "mv" , - temp-archive-name , - remote-archive-name , - ] { } make ; - -: upload-temp-file ( -- ) - upload-command [ "Error uploading binary to factorcode" print ] run-or-bail ; - -: rename-temp-file ( -- ) - rename-command [ "Error renaming binary on factorcode" print ] run-or-bail ; - -: upload ( -- ) - upload-to-factorcode get - [ upload-temp-file rename-temp-file ] - when ; diff --git a/extra/builder/report/report.factor b/extra/builder/report/report.factor deleted file mode 100644 index 2ac8482a76..0000000000 --- a/extra/builder/report/report.factor +++ /dev/null @@ -1,35 +0,0 @@ - -USING: kernel namespaces debugger system io io.files io.sockets - io.encodings.utf8 prettyprint benchmark - builder.util builder.common ; - -IN: builder.report - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: (report) ( -- ) - - "Build machine: " write host-name print - "CPU: " write cpu . - "OS: " write os . - "Build directory: " write build-dir print - "git id: " write "git-id" eval-file print nl - - status-vm get f = [ "compile-log" cat "vm compile error" throw ] when - status-boot get f = [ "boot-log" 100 cat-n "Boot error" throw ] when - status-test get f = [ "test-log" 100 cat-n "Test error" throw ] when - - "Boot time: " write "boot-time" eval-file milli-seconds>time print - "Load time: " write "load-time" eval-file milli-seconds>time print - "Test time: " write "test-time" eval-file milli-seconds>time print nl - - "Did not pass load-everything: " print "load-everything-vocabs" cat - - "Did not pass test-all: " print "test-all-vocabs" cat - "test-failures" cat - - "help-lint results:" print "help-lint" cat - - "Benchmarks: " print "benchmarks" eval-file benchmarks. ; - -: report ( -- ) "report" utf8 [ [ (report) ] try ] with-file-writer ; \ No newline at end of file diff --git a/extra/builder/test/test.factor b/extra/builder/test/test.factor deleted file mode 100644 index 2a0769f278..0000000000 --- a/extra/builder/test/test.factor +++ /dev/null @@ -1,35 +0,0 @@ - -USING: kernel namespaces assocs - io.files io.encodings.utf8 prettyprint - help.lint - benchmark - tools.time - bootstrap.stage2 - tools.test tools.vocabs - builder.util ; - -IN: builder.test - -: do-load ( -- ) - try-everything keys "../load-everything-vocabs" utf8 [ . ] with-file-writer ; - -: do-tests ( -- ) - run-all-tests - [ keys "../test-all-vocabs" utf8 [ . ] with-file-writer ] - [ "../test-failures" utf8 [ test-failures. ] with-file-writer ] - bi ; - -: do-help-lint ( -- ) - "" run-help-lint "../help-lint" utf8 [ typos. ] with-file-writer ; - -: do-benchmarks ( -- ) - run-benchmarks "../benchmarks" utf8 [ . ] with-file-writer ; - -: do-all ( -- ) - bootstrap-time get "../boot-time" utf8 [ . ] with-file-writer - [ do-load ] benchmark "../load-time" utf8 [ . ] with-file-writer - [ do-tests ] benchmark "../test-time" utf8 [ . ] with-file-writer - do-help-lint - do-benchmarks ; - -MAIN: do-all \ No newline at end of file diff --git a/extra/builder/updates/updates.factor b/extra/builder/updates/updates.factor deleted file mode 100644 index a8184550e0..0000000000 --- a/extra/builder/updates/updates.factor +++ /dev/null @@ -1,31 +0,0 @@ - -USING: kernel io.launcher bootstrap.image bootstrap.image.download - builder.util builder.common ; - -IN: builder.updates - -: git-pull-cmd ( -- cmd ) - { - "git" - "pull" - "--no-summary" - "git://factorcode.org/git/factor.git" - "master" - } ; - -: updates-available? ( -- ? ) - git-id - git-pull-cmd try-process - git-id - = not ; - -: new-image-available? ( -- ? ) - my-boot-image-name need-new-image? - [ download-my-image t ] - [ f ] - if ; - -: new-code-available? ( -- ? ) - updates-available? - new-image-available? - or ; \ No newline at end of file diff --git a/extra/builder/util/util.factor b/extra/builder/util/util.factor deleted file mode 100644 index 32d1e45066..0000000000 --- a/extra/builder/util/util.factor +++ /dev/null @@ -1,106 +0,0 @@ - -USING: kernel words namespaces classes parser continuations - io io.files io.launcher io.sockets - math math.parser - system - combinators sequences splitting quotations arrays strings tools.time - sequences.deep accessors assocs.lib - io.encodings.utf8 - combinators.cleave calendar calendar.format eval ; - -IN: builder.util - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: minutes>ms ( min -- ms ) 60 * 1000 * ; - -: file>string ( file -- string ) utf8 file-contents ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -DEFER: to-strings - -: to-string ( obj -- str ) - dup class - { - { \ string [ ] } - { \ quotation [ call ] } - { \ word [ execute ] } - { \ fixnum [ number>string ] } - { \ array [ to-strings concat ] } - } - case ; - -: to-strings ( seq -- str ) - dup [ string? ] all? - [ ] - [ [ to-string ] map flatten ] - if ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: host-name* ( -- name ) host-name "." split first ; - -: datestamp ( -- string ) - now - { year>> month>> day>> hour>> minute>> } - [ pad-00 ] map "-" join ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: milli-seconds>time ( n -- string ) - 1000 /i 60 /mod >r 60 /mod r> 3array [ pad-00 ] map ":" join ; - -: eval-file ( file -- obj ) utf8 file-contents eval ; - -: cat ( file -- ) utf8 file-contents print ; - -: run-or-bail ( desc quot -- ) - [ [ try-process ] curry ] - [ [ throw ] compose ] - bi* - recover ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -USING: bootstrap.image bootstrap.image.download io.streams.null ; - -: retrieve-image ( -- ) [ my-arch download-image ] with-null-stream ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: longer? ( seq seq -- ? ) [ length ] bi@ > ; - -: maybe-tail* ( seq n -- seq ) - 2dup longer? - [ tail* ] - [ drop ] - if ; - -: cat-n ( file n -- ) - [ utf8 file-lines ] [ ] bi* - maybe-tail* - [ print ] each ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -USE: prettyprint - -: to-file ( object file -- ) utf8 [ . ] with-file-writer ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: cpu- ( -- cpu ) cpu unparse "." split "-" join ; - -: platform ( -- string ) { [ os unparse ] cpu- } to-strings "-" join ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: gnu-make ( -- string ) - os { freebsd openbsd netbsd } member? [ "gmake" ] [ "make" ] if ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: git-id ( -- id ) - { "git" "show" } utf8 [ readln ] with-input-stream - " " split second ;