From 698c22ef9d873ac3f790c6464ff852e2ba590631 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 5 Aug 2014 16:34:22 +0100 Subject: [PATCH] meta/new-web: handle versionless source variant Although a versionless variant of the source bundle is available, we leave it off the web page, because it's intended for automatic processes. --- .../meta/new-web/download/data.rkt | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/pkgs/plt-services/meta/new-web/download/data.rkt b/pkgs/plt-services/meta/new-web/download/data.rkt index 3d2564598e..928448bc73 100644 --- a/pkgs/plt-services/meta/new-web/download/data.rkt +++ b/pkgs/plt-services/meta/new-web/download/data.rkt @@ -216,26 +216,29 @@ "([0-9p.]+)" ; version "/(" ; file "(racket(?:-textual|-minimal)?)" ; package - "-\\3-" ; -- + "(-\\3)?-" ; version, maybe "([^.]+)" ; platform "\\." "([a-z]+)" ; suffix "))$"))) -(define (make-installer2 size path version file package platform suffix) +(define (make-installer2 size path version file package version-again platform suffix) (define binary? (not (regexp-match #rx"^src" platform))) - (installer path file (version->release version) (string->number size) - (string->symbol package) binary? platform suffix)) - + (and version-again ; if no version again, then it's a versionless variant to omit + (installer path file (version->release version) (string->number size) + (string->symbol package) binary? platform suffix))) + (define (parse-installers in) (port-count-lines! in) - (for/list ([line (in-lines in)] [num (in-naturals 1)]) - (cond [(regexp-match installer-rx1 line) - => (lambda (m) (apply make-installer1 (cdr m)))] - [(regexp-match installer-rx2 line) - => (lambda (m) (apply make-installer2 (cdr m)))] - [else (error 'installers "bad installer data line#~a: ~s" - num line)]))) + (filter + values + (for/list ([line (in-lines in)] [num (in-naturals 1)]) + (cond [(regexp-match installer-rx1 line) + => (lambda (m) (apply make-installer1 (cdr m)))] + [(regexp-match installer-rx2 line) + => (lambda (m) (apply make-installer2 (cdr m)))] + [else (error 'installers "bad installer data line#~a: ~s" + num line)])))) (define (order->precedes order) (define =? (car order))