add catalog, source, and Mac OS X instructions to basic README

Also, include "stamp.txt" and "collects.tgz" at a build site.
This commit is contained in:
Matthew Flatt 2013-07-20 08:29:33 -06:00
parent 8a52f8ace5
commit aecf0e60b5
5 changed files with 104 additions and 27 deletions

View File

@ -33,7 +33,10 @@
(printf "Assembling site as ~a\n" dest-dir) (printf "Assembling site as ~a\n" dest-dir)
(define (copy dir [build-dir build-dir]) (define (copy dir [build-dir build-dir])
(make-directory* dest-dir) (make-directory* (let-values ([(base name dir?) (split-path dir)])
(if (path? base)
(build-path dest-dir base)
dest-dir)))
(printf "Copying ~a\n" (build-path build-dir dir)) (printf "Copying ~a\n" (build-path build-dir dir))
(copy-directory/files (build-path build-dir dir) (copy-directory/files (build-path build-dir dir)
(build-path dest-dir dir) (build-path dest-dir dir)
@ -104,6 +107,8 @@
(define pdf-doc-path (build-path build-dir pdf-doc-dir)) (define pdf-doc-path (build-path build-dir pdf-doc-dir))
(when (directory-exists? pdf-doc-path) (when (directory-exists? pdf-doc-path)
(copy pdf-doc-dir)) (copy pdf-doc-dir))
(copy "stamp.txt")
(copy (build-path "origin" "collects.tgz"))
(make-download-page (build-path build-dir (make-download-page (build-path build-dir
installers-dir installers-dir

View File

@ -163,7 +163,7 @@ Site-configuration keywords (where <string*> means no spaces, etc.):
#:readme <string-or-procedure> --- the content of a "README" file #:readme <string-or-procedure> --- the content of a "README" file
to include in installers, or a function that takes a hash table to include in installers, or a function that takes a hash table
for a configuration and returns a string; the default is the for a configuration and returns a string; the default is the
`make-readme' function from `distro-build/readme' `make-readme' function from `distro-build/readme' (see below)
#:max-vm <real> --- max number of VMs allowed to run with this #:max-vm <real> --- max number of VMs allowed to run with this
machine, counting the machine; defaults to 1 machine, counting the machine; defaults to 1
@ -172,7 +172,8 @@ Site-configuration keywords (where <string*> means no spaces, etc.):
in the Virtual Box GUI); if provided, the virtual machine is in the Virtual Box GUI); if provided, the virtual machine is
started and stopped on the server as needed started and stopped on the server as needed
#:platform <symbol> --- 'windows or 'unix, defaults to 'unix #:platform <symbol> --- 'windows, 'macosx, or 'unix; defaults to
`(system-type)'
#:configure '(<string> ...) --- arguments to `configure' #:configure '(<string> ...) --- arguments to `configure'
@ -203,9 +204,11 @@ Site-configuration keywords (where <string*> means no spaces, etc.):
installers; the default is determined by the `RELEASE_MODE' installers; the default is determined by the `RELEASE_MODE'
makefile variable makefile variable
#:source? <boolean> --- if true, then create a source archive (with #:source? <boolean> --- if true, then create a kernel-source archive
pre-build packages), instead of a platform-specific installer; the (with pre-built packages), instead of a platform-specific
default is #f installer; a #t value works best when used with a Unix client
machine, since Unix clients typically have no native-library
packages; the default is #f
#:site-dest <path-string> --- destination for completed build, used #:site-dest <path-string> --- destination for completed build, used
by the `site' and `snapshot-site' makefile targets; the default is by the `site' and `snapshot-site' makefile targets; the default is
@ -278,6 +281,26 @@ to `racket/base':
Returns a string to identify the current build, normally a Returns a string to identify the current build, normally a
combination of the date and a git commit hash. combination of the date and a git commit hash.
READMEs
-------
The `distro-build/readme' library provides functions for constructing
a README file's content. Each function takes a hash table mapping
configuration keywords to values.
(make-readme config) -> string
config : hash?
Produces basic "README" content, using information about the
distribution and the Racket license. The content is constructed
using `config' keywords such as `#:name', `#:platform',
`#:dist-name', and `#:dist-catalogs', and sometimes `current-stamp'.
(make-macosx-notes config) -> string
config : hash?
Produces "README" content to tell Mac OS X users how to install a
distirbution folder. This function is used by `make-readme' when
`#:platform' in `config' is 'macosx.
Examples Examples
-------- --------

View File

@ -81,6 +81,14 @@
(path->string d) (path->string d)
d)) d))
(define (add-defaults c . l)
(let loop ([c c] [l l])
(cond
[(null? l) c]
[else (loop (hash-set c (car l)
(hash-ref c (car l) (lambda () (cadr l))))
(cddr l))])))
;; ---------------------------------------- ;; ----------------------------------------
;; Managing VirtualBox machines ;; Managing VirtualBox machines
@ -319,7 +327,9 @@
(define readme-txt (let ([rdme (get-opt c '#:readme make-readme)]) (define readme-txt (let ([rdme (get-opt c '#:readme make-readme)])
(if (string? rdme) (if (string? rdme)
rdme rdme
(rdme c)))) (rdme (add-defaults c
'#:release? default-release?
'#:pkgs (string-split default-pkgs))))))
(make-directory* (build-path "build" "readmes")) (make-directory* (build-path "build" "readmes"))
(define readme (make-temporary-file (define readme (make-temporary-file
"README-~a" "README-~a"
@ -337,8 +347,8 @@
(display-time) (display-time)
(begin0 (begin0
((case (or (get-opt c '#:platform) 'unix) ((case (or (get-opt c '#:platform) (system-type))
[(unix) unix-build] [(unix macosx) unix-build]
[else windows-build]) [else windows-build])
c host port user server repo clean? pull? readme) c host port user server repo clean? pull? readme)

View File

@ -1,19 +1,52 @@
#lang at-exp racket/base #lang at-exp racket/base
(require racket/format) (require racket/format
net/url
(only-in "config.rkt" current-stamp))
(provide make-readme) (provide make-readme
make-source-notes
make-macosx-notes)
(define (maybe-stamp config)
(if (hash-ref config '#:release? #f)
""
@~a{ (@(current-stamp))}))
(define (make-readme config) (define (make-readme config)
@~a{ @~a{
The Racket Programming Language The Racket Programming Language
=============================== ===============================
This is Racket... This is the
@|(hash-ref config '#:name "Racket")|
distribution for version @(version)@(maybe-stamp config).@;
More Information @(if (hash-ref config '#:source? #f)
---------------- (string-append "\n" (make-source-notes config) "\n")
"")@;
@(if (and (not (hash-ref config '#:source? #f))
(eq? (hash-ref config '#:platform (system-type)) 'macosx))
(string-append "\n" (make-macosx-notes config) "\n")
"")@;
@(let* ([catalogs (filter
(lambda (s) (not (equal? s "")))
(or (hash-ref config '#:dist-catalogs #f)
(let ([v (hash-ref config '#:dist-base-url #f)])
(and v
(list (url->string
(combine-url/relative (string->url v) "catalog/")))))
null))]
[s (if (= 1 (length catalogs)) "" "s")]
[is (if (= 1 (length catalogs)) "is" "are")])
(if (null? catalogs)
""
@~a{@"\n"The distribution has been configured so that when you install or
update packages, the package catalog@|s| at@;
@(apply ~a (for/list ([catalog (in-list catalogs)])
@~a{@"\n" @|catalog|}))
@|is| consulted, first.@"\n"}))@;
Visit us at Visit
http://racket-lang.org/ http://racket-lang.org/
for more Racket resources. for more Racket resources.
@ -32,14 +65,21 @@
that you must release the source code for the modified software. See that you must release the source code for the modified software. See
share/COPYING_LESSER.txt for more information.}) share/COPYING_LESSER.txt for more information.})
(define macosx-notes (define (make-source-notes config)
@~a{Install by dragging the enclosing Racket folder to your Applications folder
--- or wherever you like. You can move the Racket folder at any time, but do not
move applications or other files within the folder. If you want to use the
Racket command-line programs, then (optionally) add the path of the "bin"
subdirectory to your PATH environment variable.})
(define drracket-more-info @~a{This distribution provides source for the Racket run-time system;
@~a{For Racket documentation, use DrRacket's `Help' menu, run the `Racket for build and installation instructions, see "racket/src/README".
Documentation' application (Windows or Mac OS X), or run `raco docs' Besides the run-time system's source, the distribution provides
from a command line.}) pre-built versions of the core Racket bytecode, as well as pre-built
versions of included packages and documentation --- which makes it
suitable for quick installation on a Unix platform for which
executable binaries are not already provided.})
(define (make-macosx-notes config)
@~a{Install by dragging the enclosing
@|(hash-ref config '#:dist-name "Racket")| v@(version)
folder to your Applications folder --- or wherever you like. You can
move the folder at any time, but do not move applications or other
files within the folder. If you want to use the Racket command-line
programs, then (optionally) add the path of the "bin" subdirectory to
your PATH environment variable.})

View File

@ -1,6 +1,5 @@
This is the source code distribution for Racket. For license This is the source code distribution for Racket. For license
information, please see the file information, please see the file "COPYING_LESSER.txt".
racket/doc/release-notes/COPYING_LESSER.txt.
Compiled binaries, documentation, and up-to-date information are Compiled binaries, documentation, and up-to-date information are
available at http://racket-lang.org/; pre-compiled nightly builds are available at http://racket-lang.org/; pre-compiled nightly builds are