Extract tag information from a git repo instead of manually specified
version/date pairs. Also switch to using `release' structs instead of version strings.
This commit is contained in:
parent
7fcbb2eb96
commit
56820287ac
|
@ -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
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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)] [<? (cdar fns)] [x1 (get i1)] [x2 (get i2)])
|
||||
(or (<? x1 x2) (and (equal? x1 x2) (loop (cdr fns)))))))))))
|
||||
|
||||
(define all-releases ; still sorted from newest to oldest
|
||||
(remove-duplicates (map installer-release all-installers)))
|
||||
(define all-packages ; also sorted
|
||||
(remove-duplicates (map installer-package all-installers)))
|
||||
(define current-release (car all-releases))
|
||||
|
||||
(define package->name
|
||||
(let ([t (make-hasheq)])
|
||||
(lambda (package)
|
||||
|
|
|
@ -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}}}}}))
|
||||
|
||||
|
|
|
@ -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"))
|
||||
|
|
|
@ -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))))))
|
||||
|
|
|
@ -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]}})}
|
||||
|
|
Loading…
Reference in New Issue
Block a user