diff --git a/pkgs/plt-services/meta/pkg-index/official/build-update.rkt b/pkgs/plt-services/meta/pkg-index/official/build-update.rkt index f76e9b2989..3e8c6a6348 100644 --- a/pkgs/plt-services/meta/pkg-index/official/build-update.rkt +++ b/pkgs/plt-services/meta/pkg-index/official/build-update.rkt @@ -8,9 +8,7 @@ "common.rkt") (define SUMMARY-HOST "pkg-build.racket-lang.org") -(define SUMMARY-NAME "summary.rktd") (define SUMMARY-URL (string-append "/" SUMMARY-NAME)) -(define SUMMARY-PATH (build-path cache-path SUMMARY-NAME)) (define SUMMARY-ETAG-PATH (build-path cache-path (format "~a.etag" SUMMARY-NAME))) (define (extract-tag hs) diff --git a/pkgs/plt-services/meta/pkg-index/official/common.rkt b/pkgs/plt-services/meta/pkg-index/official/common.rkt index d85e2f3018..603c0bcbe2 100644 --- a/pkgs/plt-services/meta/pkg-index/official/common.rkt +++ b/pkgs/plt-services/meta/pkg-index/official/common.rkt @@ -27,6 +27,9 @@ (define cache-path (build-path root "cache")) (make-directory* cache-path) +(define SUMMARY-NAME "summary.rktd") +(define SUMMARY-PATH (build-path cache-path SUMMARY-NAME)) + (define pkgs-path (build-path root "pkgs")) (make-directory* pkgs-path) diff --git a/pkgs/plt-services/meta/pkg-index/official/static.rkt b/pkgs/plt-services/meta/pkg-index/official/static.rkt index cde6e180b6..99b93e6314 100644 --- a/pkgs/plt-services/meta/pkg-index/official/static.rkt +++ b/pkgs/plt-services/meta/pkg-index/official/static.rkt @@ -44,9 +44,22 @@ [x (error 'convert-to-json-key "~e" x)])) +(define (file->value* p dv) + (if (file-exists? p) + (file->value p) + dv)) + +;; From pkg-build/summary +(struct doc/main (name path) #:prefab) +(struct doc/extract (name path) #:prefab) +(struct doc/salvage (name path) #:prefab) +(struct doc/none (name) #:prefab) +(struct conflicts/indirect (path) #:prefab) + (define (generate-static) (define pkg-list (package-list)) (define pkg-ht (make-hash)) + (define build-summary (file->value* SUMMARY-PATH (hash))) (for ([pkg-name (in-list pkg-list)]) (define ht (file->value (build-path pkgs-path pkg-name))) @@ -174,12 +187,28 @@ pkg-url-str])) (for ([pkg (in-hash-keys pkg-ht)]) + (define pb (hash-ref build-summary pkg #f)) + (define (pbl k) + (and pb (hash-ref pb k #f))) + (hash-update! pkg-ht pkg (λ (ht) (define conflicts (package-conflicts? pkg)) (hash-set* ht + 'build + (hash 'success-log (pbl 'success-log) + 'failure-log (pbl 'failure-log) + 'dep-failure-log (pbl 'dep-failure-log) + 'conflicts-log (pbl 'conflicts-log) + 'docs + (for/list ([d (in-list (or (pbl 'docs) empty))]) + (match d + [(doc/main n p) (list "main" n p)] + [(doc/extract n p) (list "extract" n p)] + [(doc/salvage n p) (list "salvage" n p)] + [(doc/none n) (list "none" n)]))) 'conflicts conflicts 'versions (for/hash ([(v vht) (in-hash (hash-ref ht 'versions))]) @@ -210,7 +239,36 @@ st)] [st (if (empty? conflicts) st - (hash-set st ':conflicts: #t))]) + (hash-set st ':conflicts: #t))] + [st (if (pbl 'success-log) + (hash-set st ':build-success: #t) + st)] + [st (if (pbl 'failure-log) + (hash-set st ':build-fail: #t) + st)] + [st (if (pbl 'dep-failure-log) + (hash-set st ':build-dep-fail: #t) + st)] + [st (if (pbl 'conflicts-log) + (hash-set st ':build-conflicts: #t) + st)] + [pb-docs (pbl 'docs)] + [st (if (and pb-docs (cons? pb-docs) + (andmap (λ (d) + (or (doc/main? pb-docs) + (doc/extract? pb-docs) + (doc/salvage? pb-docs))) + pb-docs)) + (hash-set st ':docs: #t) + st)] + [st (if (and pb-docs (cons? pb-docs) + (andmap (λ (d) + (or (doc/extract? pb-docs) + (doc/salvage? pb-docs) + (doc/none? pb-docs))) + pb-docs)) + (hash-set st ':docs-error: #t) + st)]) st))))) diff --git a/pkgs/plt-services/meta/pkg-index/official/static/index.html b/pkgs/plt-services/meta/pkg-index/official/static/index.html index 84b3ef4292..3ef2af64cd 100644 --- a/pkgs/plt-services/meta/pkg-index/official/static/index.html +++ b/pkgs/plt-services/meta/pkg-index/official/static/index.html @@ -62,7 +62,9 @@