diff --git a/pkgs/plt-services/meta/web/download/data.rkt b/pkgs/plt-services/meta/web/download/data.rkt index f21ee91a88..9f7314f918 100644 --- a/pkgs/plt-services/meta/web/download/data.rkt +++ b/pkgs/plt-services/meta/web/download/data.rkt @@ -2,13 +2,15 @@ (define -platform-names- `(;; source platforms + ["src-builtpkgs" "Source + built packages"] + ["src" "Source"] ["win" "Windows"] ["mac" "Mac OS X"] ["unix" "Unix"] ;; binary platforms ["i386-win32" "Windows (x86, 32-bit)"] ["x86_64-win32" "Windows (x64, 64-bit)"] - ["(ppc|i386|x86_64)-osx-mac" + ["(ppc|i386|x86_64)-(?:osx-mac|macosx)" ,(λ (_ cpu) (format "Mac OS X (~a)" (cond @@ -29,6 +31,7 @@ ["(i386|x86_64)-linux-ubuntu([0-9]+)" "Linux \\1 (Ubuntu \\2)"] ["(i386|x86_64)-linux-ubuntu-([a-z]+)" "Linux \\1 (Ubuntu \\2)"] ["(i386|x86_64)-linux-ubuntu.*" "Linux \\1 (Ubuntu)"] + ["(i386|x86_64)-linux" "Linux \\1"] ["(i386|x86_64)-freebsd" "FreeBSD \\1"] ["sparc-solaris" "Sparc Solaris (SunOS)"] ["i386-kernel" "x86 Standalone Kernel"] @@ -40,6 +43,7 @@ ["tgz" "Gzipped TAR Archive"] ["zip" "Zipped Archive"] ["dmg" "Disk Image"] + ["pkg" "Installer Package"] ["plt" "Racket Package"] ["sit" "StuffIt Archive"])) @@ -95,7 +99,7 @@ ;; Used to sort packages when more then one is rendered on a page (delayed) (define (-installer-orders-) - `((,installer-package ,eq? (racket racket-textual)) + `((,installer-package ,eq? (racket racket-minimal racket-textual)) (,installer-binary? ,eq? (#t #f)) (,installer-platform ,regexp-match? (#px"\\bwin(32)?\\b" #px"\\bmac\\b" #px"\\blinux\\b" #px"")) @@ -126,7 +130,7 @@ ;; ---------------------------------------------------------------------------- ;; Release information -(struct release (version date date-string announcement)) +(struct release (version date date-string announcement) #:transparent) (define announcements #f) (define (set-announcements-file! file) @@ -162,9 +166,15 @@ package ; package kind symbol 'racket or 'racket-textual binary? ; #t = binary distribution, #f = source distribution platform ; platform name string (generic for srcs, cpu-os for bins) - suffix)) ; string + suffix) ; string + #:transparent) -(define installer-rx +;; Two kinds of installer lines + +;; Old-style installer line (before 5.92) +;; eg: "12295243\t5.3.6/racket-textual/racket-textual-5.3.6-bin-i386-linux-f12.sh" +;; eg: "7452375\t5.3.6/racket-textual/racket-textual-5.3.6-src-win.zip" +(define installer-rx1 (pregexp (string-append "^" "([0-9.]+)" ; size @@ -181,17 +191,44 @@ "([a-z]+)" ; suffix "))$"))) -(define (make-installer size path version package file type platform suffix) +(define (make-installer1 size path version package file type platform suffix) + (define binary? (equal? "bin" type)) (installer path file (version->release version) (string->number size) - (string->symbol package) (equal? "bin" type) platform suffix)) + (string->symbol package) binary? platform suffix)) + +;; New-style installer line (since 5.92) +;; Differences: no "package" dir, implicit "bin", "src" is platform +;; eg: "87206462\t5.92/racket-5.92-i386-linux-ubuntu-precise.sh" +;; eg: "5708736\t5.92/racket-minimal-5.92-src.tgz" +(define installer-rx2 + (pregexp (string-append + "^" + "([0-9.]+)" ; size + "\t" + "(" ; path + "([0-9p.]+)" ; version + "/(" ; file + "(racket(?:-textual|-minimal)?)" ; package + "-\\3-" ; -- + "([^.]+)" ; platform + "\\." + "([a-z]+)" ; suffix + "))$"))) + +(define (make-installer2 size path version file package 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)) (define (parse-installers in) (port-count-lines! in) (for/list ([line (in-lines in)] [num (in-naturals 1)]) - (apply make-installer - (cdr (or (regexp-match installer-rx line) - (error 'installers "bad installer data line#~a: ~s" - num line)))))) + (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))