www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

installer-tgz.rkt (1555B)


      1 #lang at-exp racket/base
      2 (require racket/system
      3          racket/file
      4          racket/format
      5          file/tar
      6          setup/cross-system)
      7 
      8 (provide installer-tgz)
      9 
     10 (define (system/show . l)
     11   (displayln (apply ~a #:separator " " l))
     12   (unless (apply system* (find-executable-path (car l)) (cdr l))
     13     (error "failed")))
     14 
     15 (define (generate-tgz src-dir dest-path target-dir-name readme)
     16   (system/show "chmod" "-R" "g+w" src-dir)
     17   (define dest (path->complete-path dest-path))
     18   (when (file-exists? dest) (delete-file dest))
     19   (printf "Tarring to ~s\n" dest)
     20   (when readme
     21     (call-with-output-file*
     22      (build-path src-dir "README")
     23      #:exists 'truncate
     24      (lambda (o)
     25        (display readme o))))
     26   (parameterize ([current-directory src-dir])
     27     (apply tar-gzip dest #:path-prefix target-dir-name (directory-list))))
     28 
     29 (define (installer-tgz source? base-name dir-name dist-suffix readme)
     30   (define tgz-path (format "bundle/~a-~a~a.tgz"
     31                            base-name
     32                            (if source?
     33                                "src"
     34                                (get-platform-name)) 
     35                            dist-suffix))
     36   (generate-tgz "bundle/racket" tgz-path
     37                 dir-name
     38                 readme)
     39   tgz-path)
     40 
     41 (define (get-platform-name)
     42   (case (cross-system-type)
     43     [(windows)
     44      (define-values (base name dir?) (split-path (cross-system-library-subpath #f)))
     45      (format "~a-win32" (bytes->string/utf-8 (path-element->bytes name)))]
     46     [else
     47      (format "~a" (cross-system-library-subpath #f))]))