distro-build: add support for source installers
original commit: 8820ae91a6423c8f02cc3da3754c97f597303403
This commit is contained in:
parent
a35f2373f8
commit
67b26b34b3
|
@ -136,6 +136,8 @@
|
|||
[(#:repo) (string? val)]
|
||||
[(#:clean?) (boolean? val)]
|
||||
[(#:pull?) (boolean? val)]
|
||||
[(#:release?) (boolean? val)]
|
||||
[(#:source?) (boolean? val)]
|
||||
[(#:site-dest) (path-string? val)]
|
||||
[(#:pdf-doc?) (boolean? val)]
|
||||
[(#:max-snapshots) (real? val)]
|
||||
|
|
|
@ -199,6 +199,14 @@ Site-configuration keywords (where <string*> means no spaces, etc.):
|
|||
unless `#:host' is "localhost", `#:user' is #f, and `#:dir' is not
|
||||
specified, in which case the default is #f
|
||||
|
||||
#:release? <boolean> --- if true, then create release-mode
|
||||
installers; the default is determined by the `RELEASE_MODE'
|
||||
makefile variable
|
||||
|
||||
#:source? <boolean> --- if true, then create a source archive (with
|
||||
pre-build packages), instead of a platform-specific installer; the
|
||||
default is #f
|
||||
|
||||
#:site-dest <path-string> --- destination for completed build, used
|
||||
by the `site' and `snapshot-site' makefile targets; the default is
|
||||
"build/site"
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
;; ----------------------------------------
|
||||
|
||||
(define release? #f)
|
||||
(define default-release? #f)
|
||||
(define default-clean? #f)
|
||||
|
||||
(define-values (config-file config-mode
|
||||
|
@ -27,7 +27,7 @@
|
|||
(command-line
|
||||
#:once-each
|
||||
[("--release") "Create release-mode installers"
|
||||
(set! release? #t)]
|
||||
(set! default-release? #t)]
|
||||
[("--clean") "Erase client directories before building"
|
||||
(set! default-clean? #t)]
|
||||
#:args (config-file config-mode
|
||||
|
@ -237,6 +237,8 @@
|
|||
default-dist-dir))
|
||||
(define dist-suffix (get-opt c '#:dist-suffix ""))
|
||||
(define dist-catalogs (choose-catalogs c '("")))
|
||||
(define release? (get-opt c '#:release? default-release?))
|
||||
(define source? (get-opt c '#:source? #f))
|
||||
(~a " SERVER=" server
|
||||
" PKGS=" (q pkgs)
|
||||
" DOC_SEARCH=" (q doc-search)
|
||||
|
@ -247,6 +249,7 @@
|
|||
" DIST_SUFFIX=" (q dist-suffix)
|
||||
" DIST_CATALOGS_q=" (qq dist-catalogs kind)
|
||||
" RELEASE_MODE=" (if release? "--release" (q ""))
|
||||
" SOURCE_MODE=" (if source? "--source" (q ""))
|
||||
" README=" (q (file-name-from-path readme))))
|
||||
|
||||
(define (unix-build c host port user server repo clean? pull? readme)
|
||||
|
|
|
@ -85,4 +85,3 @@
|
|||
release?
|
||||
readme)
|
||||
sh-path)
|
||||
|
||||
|
|
35
pkgs/distro-build/installer-tgz.rkt
Normal file
35
pkgs/distro-build/installer-tgz.rkt
Normal file
|
@ -0,0 +1,35 @@
|
|||
#lang at-exp racket/base
|
||||
(require racket/system
|
||||
racket/file
|
||||
racket/format
|
||||
file/tar)
|
||||
|
||||
(provide installer-tgz)
|
||||
|
||||
(define (system/show . l)
|
||||
(displayln (apply ~a #:separator " " l))
|
||||
(unless (apply system* (find-executable-path (car l)) (cdr l))
|
||||
(error "failed")))
|
||||
|
||||
(define (generate-tgz src-dir dest-path target-dir-name readme)
|
||||
(system/show "chmod" "-R" "g+w" src-dir)
|
||||
(define dest (path->complete-path dest-path))
|
||||
(when (file-exists? dest) (delete-file dest))
|
||||
(printf "Tarring to ~s\n" dest)
|
||||
(when readme
|
||||
(call-with-output-file*
|
||||
(build-path src-dir "README")
|
||||
#:exists 'truncate
|
||||
(lambda (o)
|
||||
(display readme o))))
|
||||
(parameterize ([current-directory src-dir])
|
||||
(apply tar-gzip dest #:path-prefix target-dir-name (directory-list))))
|
||||
|
||||
(define (installer-tgz base-name dir-name dist-suffix readme)
|
||||
(define tgz-path (format "bundle/~a-src~a.tgz"
|
||||
base-name
|
||||
dist-suffix))
|
||||
(generate-tgz "bundle/racket" tgz-path
|
||||
dir-name
|
||||
readme)
|
||||
tgz-path)
|
|
@ -3,6 +3,7 @@
|
|||
"installer-sh.rkt"
|
||||
"installer-dmg.rkt"
|
||||
"installer-exe.rkt"
|
||||
"installer-tgz.rkt"
|
||||
net/url
|
||||
racket/file
|
||||
racket/path
|
||||
|
@ -10,6 +11,7 @@
|
|||
"display-time.rkt")
|
||||
|
||||
(define release? #f)
|
||||
(define source? #f)
|
||||
(define upload-to #f)
|
||||
(define upload-desc "")
|
||||
(define download-readme #f)
|
||||
|
@ -19,6 +21,8 @@
|
|||
#:once-each
|
||||
[("--release") "Create a release installer"
|
||||
(set! release? #t)]
|
||||
[("--source") "Create a source installer"
|
||||
(set! source? #t)]
|
||||
[("--upload") url "Upload installer"
|
||||
(set! upload-to url)]
|
||||
[("--desc") desc "Description to accompany upload"
|
||||
|
@ -49,10 +53,12 @@
|
|||
(close-input-port i)))))
|
||||
|
||||
(define installer-file
|
||||
(case (system-type)
|
||||
[(unix) (installer-sh human-name base-name dir-name release? dist-suffix readme)]
|
||||
[(macosx) (installer-dmg human-name base-name dist-suffix readme)]
|
||||
[(windows) (installer-exe short-human-name base-name release? dist-suffix readme)]))
|
||||
(if source?
|
||||
(installer-tgz base-name dir-name dist-suffix readme)
|
||||
(case (system-type)
|
||||
[(unix) (installer-sh human-name base-name dir-name release? dist-suffix readme)]
|
||||
[(macosx) (installer-dmg human-name base-name dist-suffix readme)]
|
||||
[(windows) (installer-exe short-human-name base-name release? dist-suffix readme)])))
|
||||
|
||||
(call-with-output-file*
|
||||
(build-path "bundle" "installer.txt")
|
||||
|
|
Loading…
Reference in New Issue
Block a user