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)
(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))
(copy-directory/files (build-path build-dir dir)
(build-path dest-dir dir)
@ -104,6 +107,8 @@
(define pdf-doc-path (build-path build-dir pdf-doc-dir))
(when (directory-exists? pdf-doc-path)
(copy pdf-doc-dir))
(copy "stamp.txt")
(copy (build-path "origin" "collects.tgz"))
(make-download-page (build-path build-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
to include in installers, or a function that takes a hash table
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
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
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'
@ -203,9 +204,11 @@ Site-configuration keywords (where <string*> means no spaces, etc.):
installers; the default is determined by the `RELEASE_MODE'
makefile variable
#:source? <boolean> --- if true, then create a source archive (with
pre-build packages), instead of a platform-specific installer; the
default is #f
#:source? <boolean> --- if true, then create a kernel-source archive
(with pre-built packages), instead of a platform-specific
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
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
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
--------

View File

@ -81,6 +81,14 @@
(path->string 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
@ -319,7 +327,9 @@
(define readme-txt (let ([rdme (get-opt c '#:readme make-readme)])
(if (string? rdme)
rdme
(rdme c))))
(rdme (add-defaults c
'#:release? default-release?
'#:pkgs (string-split default-pkgs))))))
(make-directory* (build-path "build" "readmes"))
(define readme (make-temporary-file
"README-~a"
@ -337,8 +347,8 @@
(display-time)
(begin0
((case (or (get-opt c '#:platform) 'unix)
[(unix) unix-build]
((case (or (get-opt c '#:platform) (system-type))
[(unix macosx) unix-build]
[else windows-build])
c host port user server repo clean? pull? readme)

View File

@ -1,19 +1,52 @@
#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)
@~a{
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/
for more Racket resources.
@ -32,14 +65,21 @@
that you must release the source code for the modified software. See
share/COPYING_LESSER.txt for more information.})
(define macosx-notes
@~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 (make-source-notes config)
(define drracket-more-info
@~a{For Racket documentation, use DrRacket's `Help' menu, run the `Racket
Documentation' application (Windows or Mac OS X), or run `raco docs'
from a command line.})
@~a{This distribution provides source for the Racket run-time system;
for build and installation instructions, see "racket/src/README".
Besides the run-time system's source, the distribution provides
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
information, please see the file
racket/doc/release-notes/COPYING_LESSER.txt.
information, please see the file "COPYING_LESSER.txt".
Compiled binaries, documentation, and up-to-date information are
available at http://racket-lang.org/; pre-compiled nightly builds are