Added a command-line flag analagous to -l but for planet packages (which have to already be installed)
svn: r4966
This commit is contained in:
parent
16a3b5e1d8
commit
b45ea7717b
|
@ -16,6 +16,8 @@
|
||||||
;; - A list of archives
|
;; - A list of archives
|
||||||
|
|
||||||
(define (parse-cmdline argv)
|
(define (parse-cmdline argv)
|
||||||
|
|
||||||
|
(define x-specific-planet-packages '())
|
||||||
(define x-flags null)
|
(define x-flags null)
|
||||||
(define (add-flags l)
|
(define (add-flags l)
|
||||||
(set! x-flags (append (reverse l) x-flags)))
|
(set! x-flags (append (reverse l) x-flags)))
|
||||||
|
@ -24,6 +26,12 @@
|
||||||
(command-line
|
(command-line
|
||||||
"setup-plt"
|
"setup-plt"
|
||||||
argv
|
argv
|
||||||
|
(multi
|
||||||
|
[("-P") owner package-name maj min
|
||||||
|
"Setup specified PLaneT packages only"
|
||||||
|
(set!
|
||||||
|
x-specific-planet-packages
|
||||||
|
(cons (list owner package-name maj min) x-specific-planet-packages))])
|
||||||
(once-each
|
(once-each
|
||||||
[("-c" "--clean") "Delete existing compiled files; implies -nxi"
|
[("-c" "--clean") "Delete existing compiled files; implies -nxi"
|
||||||
(add-flags '((clean #t)
|
(add-flags '((clean #t)
|
||||||
|
@ -74,4 +82,4 @@
|
||||||
(printf "If no <archive> or -l <collection> is specified, all collections are setup~n")
|
(printf "If no <archive> or -l <collection> is specified, all collections are setup~n")
|
||||||
(exit 0)))))
|
(exit 0)))))
|
||||||
|
|
||||||
(values x-flags x-specific-collections x-archives)))
|
(values x-flags x-specific-collections x-specific-planet-packages x-archives)))
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
(define-values/invoke-unit/sig setup-option^
|
(define-values/invoke-unit/sig setup-option^
|
||||||
setup:option@)
|
setup:option@)
|
||||||
|
|
||||||
(define-values (x-flags x-specific-collections x-archives)
|
(define-values (x-flags x-specific-collections x-specific-planet-packages x-archives)
|
||||||
(parse-cmdline (current-command-line-arguments)))
|
(parse-cmdline (current-command-line-arguments)))
|
||||||
|
|
||||||
;; Pseudo-option:
|
;; Pseudo-option:
|
||||||
|
@ -46,7 +46,7 @@
|
||||||
|
|
||||||
(specific-collections x-specific-collections)
|
(specific-collections x-specific-collections)
|
||||||
(archives x-archives)
|
(archives x-archives)
|
||||||
(specific-planet-dirs '())
|
(specific-planet-dirs x-specific-planet-packages)
|
||||||
|
|
||||||
(require (lib "launcher-sig.ss" "launcher")
|
(require (lib "launcher-sig.ss" "launcher")
|
||||||
(lib "launcher-unit.ss" "launcher")
|
(lib "launcher-unit.ss" "launcher")
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
(lib "port.ss")
|
(lib "port.ss")
|
||||||
(lib "match.ss")
|
(lib "match.ss")
|
||||||
(lib "planet-archives.ss" "planet")
|
(lib "planet-archives.ss" "planet")
|
||||||
|
(lib "planet-shared.ss" "planet" "private")
|
||||||
|
|
||||||
"option-sig.ss"
|
"option-sig.ss"
|
||||||
(lib "sig.ss" "compiler")
|
(lib "sig.ss" "compiler")
|
||||||
|
@ -144,6 +145,19 @@
|
||||||
;; returns the non-false elements of l in order
|
;; returns the non-false elements of l in order
|
||||||
(define (remove-falses l) (filter (lambda (x) x) l))
|
(define (remove-falses l) (filter (lambda (x) x) l))
|
||||||
|
|
||||||
|
;; planet-spec->planet-list : (list string string nat nat) -> (list path string string (listof string) nat nat) | #f
|
||||||
|
;; converts a planet package spec into the information needed to create a cc structure
|
||||||
|
(define (planet-spec->planet-list spec)
|
||||||
|
(let-values ([(owner pkg-name maj-str min-str) (apply values spec)])
|
||||||
|
(let ([maj (string->number maj-str)]
|
||||||
|
[min (string->number min-str)])
|
||||||
|
(unless maj (error 'setup-plt "Bad major version for PLaneT package: ~s" maj-str))
|
||||||
|
(unless min (error 'setup-plt "Bad minor version for PLaneT package: ~s" min-str))
|
||||||
|
(let ([pkg (lookup-package-by-keys owner pkg-name maj min min)])
|
||||||
|
(if pkg
|
||||||
|
pkg
|
||||||
|
(error 'setup-plt "Not an installed PLaneT package: (~s ~s ~s ~s)" owner pkg-name maj min))))))
|
||||||
|
|
||||||
(define (planet->cc path owner pkg-file extra-path maj min)
|
(define (planet->cc path owner pkg-file extra-path maj min)
|
||||||
(unless (path? path)
|
(unless (path? path)
|
||||||
(error 'path->cc "non-path when building package ~a" pkg-file))
|
(error 'path->cc "non-path when building package ~a" pkg-file))
|
||||||
|
@ -155,9 +169,10 @@
|
||||||
(when x
|
(when x
|
||||||
(unless (string? x)
|
(unless (string? x)
|
||||||
(error
|
(error
|
||||||
|
(string->immutable-string
|
||||||
(format
|
(format
|
||||||
"'name' result from directory ~s is not a string:"
|
"'name' result from directory ~s is not a string:"
|
||||||
path)
|
path))
|
||||||
x)))))])
|
x)))))])
|
||||||
(make-cc
|
(make-cc
|
||||||
#f
|
#f
|
||||||
|
@ -192,7 +207,7 @@
|
||||||
(map (lambda (spec) (apply planet->cc spec))
|
(map (lambda (spec) (apply planet->cc spec))
|
||||||
(if (and (null? x-specific-collections) (null? x-specific-planet-dirs))
|
(if (and (null? x-specific-collections) (null? x-specific-planet-dirs))
|
||||||
(get-all-planet-packages)
|
(get-all-planet-packages)
|
||||||
x-specific-planet-dirs))))
|
(remove-falses (map planet-spec->planet-list x-specific-planet-dirs))))))
|
||||||
|
|
||||||
(define collections-to-compile
|
(define collections-to-compile
|
||||||
(sort
|
(sort
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
(when (file-stream-port? (current-output-port))
|
(when (file-stream-port? (current-output-port))
|
||||||
(file-stream-buffer-mode (current-output-port) 'line))
|
(file-stream-buffer-mode (current-output-port) 'line))
|
||||||
|
|
||||||
(define-values (flags specific-collections archives)
|
(define-values (flags specific-collections specific-planet-packages archives)
|
||||||
;; Load the command-line parser without using .zos,
|
;; Load the command-line parser without using .zos,
|
||||||
;; and in its own namespace to avoid poluuting the cm-managed
|
;; and in its own namespace to avoid poluuting the cm-managed
|
||||||
;; namespace later
|
;; namespace later
|
||||||
|
|
Loading…
Reference in New Issue
Block a user