Changeset 16150 in project


Ignore:
Timestamp:
10/08/09 04:38:18 (10 years ago)
Author:
Ivan Raikov
Message:

an improvement to salmonella: compare installed egg version with declared egg version

Location:
release/4/salmonella/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • release/4/salmonella/trunk/salmonella

    r15877 r16150  
    77
    88(define major-version     4)
     9(define csi               (make-parameter "csi"))
    910(define chicken-install   (make-parameter "chicken-install"))
    1011(define lib-dir           (make-pathname '("lib" "chicken") (->string major-version)))
     
    7071
    7172             == Expression ==                   == Default ==
     73 (csi            \"<path to csi>\")                 csi
    7274 (chicken-install \"<path to chicken-install>\")    chicken-install
    7375 (chicken-install-args \"<args>\"                 a procedure which returns chicken-install options
     
    121123               (make-pathname (current-directory) "*.egg-dir")))
    122124
     125(define (egg-extension-information egg)
     126  (system:system (sprintf "~a ~a -e \"(print (extension-information '~a))\"" (env-vars) (csi) egg )))
     127
    123128(define (install-egg egg)
    124129  (system:system (sprintf "~a ~a ~a ~a" (env-vars) (chicken-install) ((chicken-install-args)) egg)))
     
    127132  (system:system (sprintf "~a ~a ~a" (chicken-install) "-init"  (repo-test-lib-dir))))
    128133
    129 (define (report egg status msg #!key (action 'egg-install))
     134(define (report egg status msg #!key (action 'egg-install)
     135                 (egg-install-info '()))
    130136  (with-output-to-file (logfile)
    131     (lambda () (pp (list egg action status msg))) append:))
     137    (lambda () (pp (list egg action status msg egg-install-info)))
     138    append:))
    132139
    133140(define (set-installed egg)
     
    145152#(system:output (chicken-install) " -version")
    146153Options:
     154  csi: #(csi)
    147155  chicken-install: #(chicken-install)
    148156  repo-test-dir: #(repo-test-dir)
     
    192200                       eggs/deps))))))
    193201
     202(define (safe-car x) (and x (car x)))
     203
    194204(define (main)
    195205  (let ((args (command-line-arguments)))
     
    252262                    (display (string-append "Installing " egg))
    253263                    (flush-output)
    254                     (let-values (((status output) (install-egg egg)))
    255                       (print (string-pad
    256                               (cond ((zero? status)
    257                                      (set! successful (cons egg successful))
    258                                      "[ok]")
    259                                     (else (set! fail (cons egg fail))
    260                                           "[error]"))
    261                               (- 50 (string-length egg))))
    262                       (when (logfile) (report egg status output)))
     264                    (let-values (((status output) (install-egg egg))
     265                                 ((_    egg-info-str) (egg-extension-information egg)))
     266                        (let* ((egg-install-info   (read (open-input-string egg-info-str)))
     267                               (egg-install-ver    (safe-car (alist-ref 'version egg-install-info)))
     268                               (egg-info           (alist-ref (string->symbol egg) ((egg-information))))
     269                               (egg-ver            (safe-car (alist-ref 'version egg-info))))
     270                          (let ((egg-version-check (or (not egg-install-ver)
     271                                                       (not egg-ver) (and (string? egg-ver) (string-null? egg-ver))
     272                                                       (string=? (->string egg-install-ver) (->string egg-ver)))))
     273                            (print (string-pad
     274                                    (cond ((and egg-version-check (zero? status))
     275                                           (set! successful (cons egg successful))
     276                                           "[ok]")
     277                                          (else (set! fail (cons egg fail))
     278                                                "[error]"))
     279                                    (- 50 (string-length egg))))
     280                            (let ((messages
     281                                   (string-append
     282                                    output "\n"
     283                                    (if (and (zero? status) (not egg-version-check))
     284                                        (sprintf "Salmonella error: mismatch between installed egg version ~a and declared egg version ~a\n"
     285                                                 egg-install-ver egg-ver)
     286                                        ""))))
     287                              (when (logfile) (report egg status messages
     288                                                      egg-install-info: egg-install-info))))))
    263289                    (set-installed egg)
    264290                    (show "Cleaning up " (repo-test-dir) "...")
     
    267293                    (init-repo)
    268294                    ))
    269                 ((eggs))))))
     295                ((eggs))
     296                ))))
    270297
    271298(define css-data
  • release/4/salmonella/trunk/salmonella.setup

    r15894 r16150  
    44 'salmonella
    55 "salmonella"
    6  '((version 1.2)
     6 '((version 1.3)
    77   (documentation "salmonella.html")))
Note: See TracChangeset for help on using the changeset viewer.