diff --git a/collects/meta/build/build b/collects/meta/build/build index b9b5fb3baa..9e1b8b4d4b 100755 --- a/collects/meta/build/build +++ b/collects/meta/build/build @@ -2008,11 +2008,11 @@ BUILD_WEB() { # distribute only if this is a normal build if [[ "$prewebdir" = "$prewebdir_default" ]]; then separator "Making and distributing web content" - _run "$PLTHOME/$webscript" $webflags --dist + webflags="$webflags --dist" else separator "Making web content -- not distributing" - _run "$PLTHOME/$webscript" $webflags fi + GIT_DIR="$maindir/$cleandir/.git" _run "$PLTHOME/$webscript" $webflags } diff --git a/collects/meta/web/download/data.rkt b/collects/meta/web/download/data.rkt index a3daab4a72..1a3fb83804 100644 --- a/collects/meta/web/download/data.rkt +++ b/collects/meta/web/download/data.rkt @@ -1,51 +1,5 @@ #lang racket/base -(define -versions+dates- - '(["5.1.1" "April 2011"] - ["5.1" "February 2011"] - ["5.0.2" "November 2010"] - ["5.0.1" "August 2010"] - ["5.0" "June 2010"] - ["4.2.5" "April 2010"] - ["4.2.4" "January 2010"] - ["4.2.3" "December 2009"] - ["4.2.2" "October 2009"] - ["4.2.1" "July 2009"] - ["4.2" "June 2009"] - ["4.1.5" "March 2009"] - ["4.1.4" "January 2009"] - ["4.1.3" "November 2008"] - ["4.1.2" "October 2008"] - ["4.1.1" "October 2008"] - ["4.1" "August 2008"] - ["4.0.2" "July 2008"] - ["4.0.1" "June 2008"] - ["4.0" "June 2008"] - ["372" "December 2007"] - ["371" "August 2007"] - ["370" "May 2007"] - ["360" "November 2006"] - ["352" "July 2006"] - ["351" "July 2006"] - ["350" "June 2006"] - ["301" "January 2006"] - ["300" "December 2005"] - ["209" "December 2004"] - ["208" "August 2004"] - ["207" "May 2004"] - ["206p1" "January 2004"] - ["206" "January 2004"] - ["205" "August 2003"] - ["204" "May 2003"] - ["203" "December 2002"] - ["202" "August 2002"] - ["201" "July 2002"] - ["200" "June 2002"] - ["103p1" "August 2001"] - ["103" "September 2000"] - ["053" "July 1998"] - )) - (define -platform-names- `(;; source platforms ["win" "Windows"] @@ -134,7 +88,7 @@ "solsona@acm.org"] )) -;; Used to sort packages when more then one is rendered on a page +;; Used to sort packages when more then one is rendered on a page (delayed) (define (-installer-orders-) `((,installer-package ,eq? (racket racket-textual)) (,installer-binary? ,eq? (#t #f)) @@ -145,38 +99,17 @@ ;; ---------------------------------------------------------------------------- -(provide versions+dates all-versions current-version version->date - (struct-out mirror) mirrors - (struct-out installer) all-installers - package->name platform->name suffix->name) +(provide (struct-out mirror) mirrors + (struct-out release) (struct-out installer) + all-installers current-release all-releases all-packages + package->name platform->name suffix->name + set-announcements-file!) -(require racket/list racket/file version/utils racket/runtime-path) - -;; ---------------------------------------------------------------------------- - -;; accepts "053" -(define (version->integer* v) - (version->integer (regexp-replace #rx"^0+" v ""))) - -(define versions+dates - (sort -versions+dates- < - #:key (lambda (vd) (version->integer* (car vd))) - #:cache-keys? #t)) - -;; sorted from oldest to newest -(define all-versions (map car versions+dates)) - -(define current-version (last all-versions)) - -(define version->date - (let ([t (make-hash)]) - (for ([vd (in-list versions+dates)]) - (hash-set! t (car vd) (cadr vd))) - (lambda (v) - (hash-ref t v (lambda () - (error 'version->date "unknown version: ~e" v)))))) +(require racket/list racket/file version/utils racket/runtime-path + "release-info.rkt") ;; ---------------------------------------------------------------------------- +;; Mirror information (struct mirror (location url person email)) @@ -187,19 +120,43 @@ -mirrors-)) ;; ---------------------------------------------------------------------------- +;; Release information + +(struct release (version date date-string announcement)) + +(define announcements #f) +(define (set-announcements-file! file) + (set! announcements #t)) + +(define version->release + (let ([t (make-hash)] + [months '#("January" "February" "March" "April" "May" "June" "July" + "August" "September" "October" "November" "December")]) + (lambda (v) + (hash-ref! t v + (lambda () + (let* ([info (get-version-tag-info v)] + [tagger (car info)] + [date (cadr info)] + [announcement (caddr info)] + [year (date-year date)] + [month (vector-ref months (sub1 (date-month date)))]) + (release v date (format "~a ~a" month year) announcement))))))) + +;; ---------------------------------------------------------------------------- +;; Installer information (define-runtime-path installers-data "installers.txt") (struct installer - (path ; path to file from the installers directory - file ; just the file name - version ; version of the installer (as a string) - version-number ; version as a number (via version->integer*) - size ; human-readable size string - 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 + (path ; path to file from the installers directory + file ; just the file name + release ; the release that this installer comes from + size ; human-readable size string + 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 (define installer-rx (pregexp (string-append @@ -219,7 +176,7 @@ "))$"))) (define (make-installer size path version package file type platform suffix) - (installer path file version (version->integer* version) size + (installer path file (version->release version) size (string->symbol package) (equal? "bin" type) platform suffix)) (define (parse-installers in) @@ -245,7 +202,9 @@ (define all-installers (sort (call-with-input-file installers-data parse-installers) - (let ([fns `([,installer-version-number . ,>] + (let ([fns `([,(lambda (i) + (version->integer (release-version (installer-release i)))) + . ,>] ,@(map (lambda (o) (cons (car o) (order->precedes (cdr o)))) (-installer-orders-)))]) (lambda (i1 i2) @@ -255,6 +214,12 @@ (let* ([get (caar fns)] [name (let ([t (make-hasheq)]) (lambda (package) diff --git a/collects/meta/web/download/download-pages.rkt b/collects/meta/web/download/download-pages.rkt index 160a5ba0f2..7386a3124d 100644 --- a/collects/meta/web/download/download-pages.rkt +++ b/collects/meta/web/download/download-pages.rkt @@ -4,17 +4,18 @@ (prefix-in pre: "../stubs/pre.rkt")) (provide render-download-page) -(define (render-download-page [version current-version] [package 'racket]) +(define (render-download-page [release current-release] [package 'racket]) + (define version (release-version release)) @center-div{ @h2{Download @(package->name package) - v@version (@(version->date version))} + v@version (@(release-date-string release))} @div[id: "download_panel" style: "display: none;"]{ Platform: @select[id: "platform_selector" onchange: "selection_changed();" onkeypress: "selection_changed();"]{ @(for/list ([i (in-list all-installers)] - #:when (and (equal? version (installer-version i)) + #:when (and (equal? release (installer-release i)) (equal? package (installer-package i)))) (installer->page i 'render-option))} @input[type: 'submit value: "Download" onclick: "do_jump();"] @@ -36,23 +37,20 @@ @noscript{ Installers are available for the following platforms: @ul{@(for/list ([i (in-list all-installers)] - #:when (and (equal? version (installer-version i)) + #:when (and (equal? release (installer-release i)) (equal? package (installer-package i)))) @li{@(installer->page i 'only-platform)})}}}) (define all-version-pages (let () - (define all-versions - (remove-duplicates (map installer-version all-installers))) - (define all-packages - (remove-duplicates (map installer-package all-installers))) - (define (make-page ver pkg) + (define (make-page rel pkg) + (define ver (release-version rel)) (define file (format "~a-v~a.html" pkg ver)) (define title @list{@(package->name pkg) v@ver}) - (define label @list{v@ver @small{(@(version->date ver))}}) + (define label @list{v@ver @small{(@(release-date-string rel))}}) (define the-page @page[#:file file #:title title #:part-of 'download]{ - @(render-download-page ver pkg)}) + @(render-download-page rel pkg)}) (the-page label)) @page[#:id 'all-versions #:title "All Versions" #:part-of 'download]{ @table[width: "90%" align: 'center cellspacing: 10 cellpadding: 10 @@ -63,10 +61,10 @@ @th[width: "50%" align: 'center]{@(package->name p)}) all-packages)}} @tbody{ - @(map (lambda (v) - (tr (map (lambda (p) (td align: 'center (make-page v p))) + @(map (lambda (r) + (tr (map (lambda (p) (td align: 'center (make-page r p))) all-packages))) - all-versions) + all-releases) @tr{@td[align: 'center colspan: 2 style: "border-top: solid 1px;"]{ @pre:installers}}}}})) diff --git a/collects/meta/web/download/installer-pages.rkt b/collects/meta/web/download/installer-pages.rkt index ebbaa8e10f..2fb547ab59 100644 --- a/collects/meta/web/download/installer-pages.rkt +++ b/collects/meta/web/download/installer-pages.rkt @@ -6,8 +6,9 @@ (define path (installer-path installer)) (define file (installer-file installer)) (define html-file (string-append (regexp-replace* #rx"\\." file "-") ".html")) - (define version (installer-version installer)) - (define date (version->date version)) + (define release (installer-release installer)) + (define version (release-version release)) + (define date (release-date-string release)) (define package (package->name (installer-package installer))) (define size (installer-size installer)) (define type (if (installer-binary? installer) "" " source")) diff --git a/collects/meta/web/download/version.rkt b/collects/meta/web/download/version.rkt index 8498cc2876..6f2f144449 100644 --- a/collects/meta/web/download/version.rkt +++ b/collects/meta/web/download/version.rkt @@ -3,4 +3,5 @@ (require "resources.rkt" "data.rkt") (define version.txt - (plain (format "~s" `((recent ,current-version) (stable ,current-version))))) + (let ([v (release-version current-release)]) + (plain (format "~s" `((recent ,v) (stable ,v)))))) diff --git a/collects/meta/web/www/techreports.rkt b/collects/meta/web/www/techreports.rkt index 56c2d9be3a..cba36e7311 100644 --- a/collects/meta/web/www/techreports.rkt +++ b/collects/meta/web/www/techreports.rkt @@ -78,9 +78,9 @@ @h2{Specific Versions} @blockquote{ @table[frame: 'box rules: 'rows cellpadding: 10]{ - @(for/list ([v (remove-duplicates - (map installer-version all-installers))]) - @tr{@td{@b{@v} @br @small{(@version->date[v])}} + @(for/list ([r (in-list all-releases)]) + (define v (release-version r)) + @tr{@td{@b{@v} @br @small{(@(release-date-string r))}} @td{@TT{\cite[Version @v]{plt-tr@num}} @br @TT|{@cite[(in-bib plt-tr|@num "Version |@v")]}|} @td{@link['html v], @link['pdf v]}})}