PasteRack.org
Paste # 97351
2017-03-20 13:42:13

Fork as a new paste.

Paste viewed 135 times.


Embed:

  1. #lang racket/base
  2.  
  3. (require
  4.   racket/match
  5.   racket/format
  6.   setup/parallel-build)
  7.  
  8. (let* ([lg (make-logger 'my-logger)]
  9.                            [rc (make-log-receiver lg 'info 'setup/parallel-build)]
  10.                            [cust (make-custodian)])
  11.                       (parameterize ([current-custodian cust])
  12.  
  13.                         (void
  14.                          (thread
  15.                           (λ ()
  16.                             (let loop ()
  17.                               (define v (sync rc))
  18.                               (printf "[~a] ~a~n" (vector-ref v 0) (vector-ref v 1))
  19.                               (loop)))))
  20.  
  21.                         (parameterize ([current-logger lg])
  22.                           (dynamic-wind
  23.                             void
  24.                             (lambda ()
  25.                               (parallel-compile-files
  26.                                `(,(build-path "asdf")
  27.                                  )
  28.                                #:worker-count 1
  29.                                #:handler (lambda (worker-id type work msg out err)
  30.                                            (let ([wid (~r worker-id #:min-width 2)])
  31.                                              (match type
  32.                                                ['done (printf "~a: precompiled '~a'~n" wid work)]
  33.                                                ['output (printf "~a:   ~a: ~a/~a~n" wid work out err)]
  34.                                                ['error (printf "~a: Error precompiling '~a'!~n  ~a~n  ~a~n  ~a" wid work msg out err)]
  35.                                                ['fatal-error (raise-user-error 'precompile
  36.                                                                                "~a: Fatal Error precompiling '~a'!~n  ~a~n  ~a~n  ~a"
  37.                                                                                wid work msg out err)]
  38.                                                [else (printf "(~a: ~a ~a ~a ~a)~n" wid type work msg out)]
  39.                                                )))))
  40.                             (lambda () (custodian-shutdown-all cust))
  41.                             ))))

=>

( 0: start asdf  )

 0: precompiled 'asdf'