add "share", move "collects" back out of "lib", move "pkgs"

The "share" directory holds platform-independent files, while
"lib" holds platform-specific files.

In principle, the "collects" directory belongs in "share",
as does "doc". Those directories are put into "share"
by a Unix-style install, but left at top level for an
in-place install.

Packages in installation scope are put in "share" instead
of "lib", and the top-level Makefile puts development links
in "share/devel-pkgs".

The `configure' script now supports `--docdir' and `--collectsdir'.

Changed the version to 5.90.0.1.
This commit is contained in:
Matthew Flatt 2013-07-19 04:49:29 -06:00
parent 0736e62a49
commit 67a9889ef7
651 changed files with 1761 additions and 1631 deletions

View File

@ -19,7 +19,9 @@
#
# installers = `server' plus `client' via $(CONFIG)
DEFAULT_PKGS = main-distribution plt-services
# Packages (separated by spaces) to link in development mode or
# to include in a distribution:
PKGS = main-distribution plt-services
# ------------------------------------------------------------
# In-place build
@ -29,6 +31,8 @@ WIN32_PLAIN_RACKET = racket\racket
MACOSX_CHECK = $(PLAIN_RACKET) -I racket/base -e '(case (system-type) [(macosx) (exit 0)] [else (exit 1)])'
LINK_MODE = --save
CPUS =
in-place:
@ -95,9 +99,6 @@ racket/src/build/Makefile: racket/src/configure racket/src/Makefile.in
# end in "_q" or "_qq", don't use any quote marks on the right-hand
# side of its definition.
# Packages (separated by spaces) to include in a distribution:
PKGS = $(DEFAULT_PKGS)
# Catalog for sources and native packages; use "local" to bootstrap
# from package directories (in the same directory as this makefile)
# plus the GitHub repository of raw native libraries. Otherwise, it's
@ -171,11 +172,11 @@ DISTRO_BUILD_PKGS = distro-build
DISTBLD = pkgs/distro-build
# Helper macros:
ADDON = build/user
RACKET = racket/bin/racket -A "$(ADDON)"
RACO = racket/bin/racket -A "$(ADDON)" -N raco -l- raco
WIN32_RACKET = racket\racket -A "$(ADDON)"
WIN32_RACO = racket\racket -A "$(ADDON)" -N raco -l- raco
USER_CONFIG = -G build/user/config -A build/user
RACKET = racket/bin/racket $(USER_CONFIG)
RACO = racket/bin/racket $(USER_CONFIG) -N raco -l- raco
WIN32_RACKET = racket\racket $(USER_CONFIG)
WIN32_RACO = racket\racket $(USER_CONFIG) -N raco -l- raco
X_AUTO_OPTIONS = --skip-installed --deps search-auto $(JOB_OPTIONS)
USER_AUTO_OPTIONS = --scope user $(X_AUTO_OPTIONS)
LOCAL_USER_AUTO = --catalog build/local/catalog $(USER_AUTO_OPTIONS)
@ -189,7 +190,6 @@ BUNDLE_CONFIG = bundle/racket/etc/config.rktd
# Linking all packages (development mode; not an installer build)
LINK_ALL = -U -G build/config racket/src/link-all.rkt ++dir pkgs ++dir build/native-pkgs
LINK_MODE = --save
pkg-links:
$(PLAIN_RACKET) $(LINK_ALL) $(LINK_MODE) $(PKGS) $(REQUIRED_PKGS)
@ -315,12 +315,12 @@ binary-catalog-server:
# `distro-buid/drive-clients', which is in turn run by the
# `installers' target.
#
# For a non-Windows machine, if "build/drive" exists, then
# For a non-Windows machine, if "build/log" exists, then
# keep the "build/user" directory on the grounds that the
# client is the same as the server.
client:
if [ ! -d build/drive ] ; then rm -rf build/user ; fi
if [ ! -d build/log ] ; then rm -rf build/user ; fi
$(MAKE) core
$(MAKE) distro-build-from-server
$(MAKE) bundle-from-server

View File

@ -28,9 +28,10 @@
(define ht
(hash 'doc-dir (build-path/s "doc")
'lib-dir (build-path/s "lib")
'share-dir (build-path/s "share")
'dll-dir (build-path/s "lib")
'links-file (build-path/s "lib" "links.rktd")
'pkgs-dir (build-path/s "lib" "pkgs")
'links-file (build-path/s "share" "links.rktd")
'pkgs-dir (build-path/s "share" "pkgs")
'bin-dir (build-path/s "bin")
'include-dir (build-path/s "include")
'catalogs (map build-path/f catalogs)))

View File

@ -212,7 +212,6 @@ Function myTestInstDir
IfFileExists "$INSTDIR\Racket.exe" racket_is_installed
@(if auto-launch @~a{IfFileExists "$INSTDIR\${RKTLaunchProgram}.exe" racket_is_installed} "")
IfFileExists "$INSTDIR\collects" racket_is_installed
IfFileExists "$INSTDIR\lib\collects" racket_is_installed
Goto racket_is_not_installed
racket_is_installed:
IfFileExists "${UNINSTEXE}" we_have_uninstall
@ -320,7 +319,7 @@ Function un.myGUIInit
IfFileExists "$INSTDIR\Racket.exe" racket_is_installed_un
IfFileExists "$INSTDIR\lib\GRacket.exe" racket_is_installed_un
@(if auto-launch @~a{IfFileExists "$INSTDIR\${RKTLaunchProgram}.exe" racket_is_installed_un} "")
IfFileExists "$INSTDIR\lib\collects" racket_is_installed_un
IfFileExists "$INSTDIR\collects" racket_is_installed_un
MessageBox MB_YESNO "It does not appear that Racket is installed in '$INSTDIR'.$\r$\nContinue anyway (not recommended)?" /SD IDYES IDYES racket_is_installed_un
Abort "Uninstall aborted by user"
racket_is_installed_un:
@ -336,6 +335,7 @@ Section "Uninstall"
Delete "$INSTDIR\README*.*"
RMDir /r "$INSTDIR\include"
RMDir /r "$INSTDIR\lib"
RMDir /r "$INSTDIR\share"
RMDir /r "$INSTDIR\etc"
RMDir /r "$INSTDIR\doc"
;; these exist in Racket-Full installations

View File

@ -13,7 +13,5 @@
(when (file-exists? tgz-file)
(delete-file tgz-file))
(parameterize ([current-directory (build-path "racket/lib")])
(parameterize ([current-directory (build-path "racket")])
(tar-gzip tgz-file "collects"))

View File

@ -30,7 +30,7 @@
also modify Racket; if you distribute a modified version, you must
distribute it under the terms of the LGPL, which in particular means
that you must release the source code for the modified software. See
lib/COPYING_LESSER.txt for more information.})
share/COPYING_LESSER.txt for more information.})
(define macosx-notes
@~a{Install by dragging the enclosing Racket folder to your Applications folder

View File

@ -164,6 +164,7 @@ set_dirs() {
libdir="$1/lib"
incrktdir="$1/include/$TARGET"
librktdir="$1/lib/$TARGET"
sharerktdir="$1/share/$TARGET"
configdir="$1/etc/$TARGET"
has_share="N"
if test -d "$1/share"; then has_share="Y"; fi
@ -227,8 +228,8 @@ unpack_installation() {
| { cd "$INSTDIR"
"$tar" xf - || failwith "problems during unpacking of binary archive."
}
test -d "$INSTDIR/lib/collects" \
|| failwith "unpack failed (could not find \"$T/lib/collects\")."
test -d "$INSTDIR/collects" \
|| failwith "unpack failed (could not find \"$T/collects\")."
echo "Done."
}
@ -328,6 +329,7 @@ unixstyle_install() {
echo "Target Directories:"
show_dir_var "[e] Executables " "$bindir"
show_dir_var "[o] Libraries " "$librktdir"
show_dir_var "[s] Shared files " "$sharerktdir"
show_dir_var "[c] Configuration" "$configdir"
show_dir_var "[d] Documentation" "$docdir"
show_dir_var "[l] C Libraries " "$libdir"
@ -351,6 +353,7 @@ unixstyle_install() {
[lL]* ) read_dir libdir ;;
[hH]* ) read_dir incrktdir ;;
[oO]* ) read_dir librktdir ;;
[sS]* ) read_dir sharerktdir ;;
[cC]* ) read_dir configdir ;;
[mM]* ) read_dir mandir ;;
"" ) if test "$err" = "N"; then done="Y"
@ -382,9 +385,9 @@ unixstyle_install() {
unpack_installation "$tmp"
cd "$where"
"$tmp/bin/racket" "$tmp/lib/collects/setup/unixstyle-install.rkt" \
"move" "$tmp" "$bindir" "$librktdir/collects" "$docdir" "$libdir" \
"$incrktdir" "$librktdir" "$configdir" "$mandir" \
"$tmp/bin/racket" "$tmp/collects/setup/unixstyle-install.rkt" \
"move" "$tmp" "$bindir" "$sharerktdir/collects" "$docdir" "$libdir" \
"$incrktdir" "$librktdir" "$sharerktdir" "$configdir" "$mandir" \
|| failwith "installation failed"
}

View File

@ -22,12 +22,9 @@
(display-time)
(define lib-dir (build-path dest-dir "lib"))
(make-directory* lib-dir)
(define collects-dir (build-path lib-dir "collects"))
(define collects-dir (build-path dest-dir "collects"))
(when (directory-exists? collects-dir)
(delete-directory/files collects-dir))
(untgz (open-input-bytes zip-content)
#:dest lib-dir)
#:dest dest-dir)

View File

@ -10,5 +10,5 @@
"sandbox-lib"
"racket-doc"))
;; Make honu.vim easier to find by copying it to the "lib" directory:
(define copy-foreign-libs '("contrib/honu.vim"))
;; Make honu.vim easier to find by copying it to the "share" directory:
(define copy-shared-files '("contrib/honu.vim"))

View File

@ -27,12 +27,12 @@ directory:
@item{@racket['doc-dir] --- a path, string, or byte string for the
main documentation directory. The value defaults to a
@filepath{doc} sibling directory of the parent of the
@filepath{doc} sibling directory of the
main collection directory.}
@item{@racket['lib-dir] --- a path, string, or byte string for the
main library directory; it defaults to the parent
directory of the main collection directory.}
main library directory; it defaults to a @filepath{lib}
sibling directory of the main collection directory.}
@item{@racket['lib-search-dirs] --- a list of paths, strings, byte
strings, or @racket[#f] representing the search path for
@ -42,27 +42,32 @@ directory:
directory followed by the main library directory.}
@item{@racket['dll-dir] --- a path, string, or byte string for a
directory containing Unix shared libraries for the main
directory containing shared libraries for the main
executable; it defaults to the main library directory.}
@item{@racket['share-dir] --- a path, string, or byte string for the
main shared-file directory, which normally includes installed packages;
it defaults to a @filepath{share} sibling directory of the main
collection directory.}
@item{@racket['links-file] --- a path, string, or byte string for the
@tech[#:doc reference-doc]{collection links file}; it defaults
to a @filepath{links.rktd} file in the parent of the main
collection directory.}
to a @filepath{links.rktd} file in the @filepath{share} sibling
of the main collection directory.}
@item{@racket['links-search-files] --- like @racket['lib-search-dirs],
but for @tech[#:doc reference-doc]{collection links file}.}
@item{@racket['pkgs-dir] --- a path, string, or byte string for
packages that have installation scope; it defaults to
@filepath{pkgs} in the main library directory.}
@filepath{pkgs} in the main shared-file directory.}
@item{@racket['pkgs-search-dirs] --- like @racket['lib-search-dirs],
but for packages in installation scope.}
@item{@racket['bin-dir] --- a path, string, or byte string for the
main directory containing executables; it defaults to a
@filepath{bin} sibling directory of the parent of the main collection
@filepath{bin} sibling directory of the main collection
directory.}
@item{@racket['doc-search-dirs] --- like @racket['lib-search-dirs],
@ -70,7 +75,7 @@ directory:
@item{@racket['include-dir] --- a path, string, or byte string for
the main directory containing C header files; it defaults to an
@filepath{include} sibling directory of the main library
@filepath{include} sibling directory of the main collection
directory.}
@item{@racket['include-search-dirs] --- like

View File

@ -534,6 +534,15 @@ Optional @filepath{info.rkt} fields trigger additional actions by
but the original file is removed after it is copied (which makes sense
for precompiled packages).}
@item{@indexed-racket[copy-shared-files] : @racket[(listof (and/c
path-string? relative-path?))] --- Files to copy into a
directory where shared files are found.}
@item{@indexed-racket[move-shared-files] : @racket[(listof (and/c
path-string? relative-path?))] --- Like @racket[copy-shared-files],
but the original file is removed after it is copied (which makes sense
for precompiled packages).}
@item{@indexed-racket[copy-man-pages] : @racket[(listof (and/c
path-string? relative-path? filename-extension))] --- Files to copy
into a @tt{man} directory. The file suffix determines its category;
@ -1020,6 +1029,19 @@ v
libraries and other build information. The result is @racket[#f] if no such
directory is available.}
@defproc[(find-user-lib-dir) path?]{
Returns a path to a user-specific @filepath{lib} directory; the directory
indicated by the returned path may or may not exist.}
@defproc[(find-share-dir) (or/c path? #f)]{ Returns a path to the
installation's @filepath{share} directory, which contains installed
packages and other platform-independent files. The result is
@racket[#f] if no such directory is available.}
@defproc[(find-user-share-dir) path?]{
Returns a path to a user-specific @filepath{share} directory; the directory
indicated by the returned path may or may not exist.}
@defproc[(find-dll-dir) (or/c path? #f)]{
Returns a path to the directory that contains DLLs for use with the
current executable (e.g., @filepath{libmzsch.dll} on Windows).
@ -1027,12 +1049,8 @@ v
specific directory is available (i.e., other than the platform's normal
search path).}
@defproc[(find-user-lib-dir) path?]{
Returns a path to a user-specific @filepath{lib} directory; the directory
indicated by the returned path may or may not exist.}
@defproc[(get-lib-search-dirs) (listof path?)]{
Returns a list of paths to search for libraries. Unless it is
Returns a list of paths to search for foreign libraries. Unless it is
configured otherwise, the result includes any non-@racket[#f] result of
@racket[(find-lib-dir)], @racket[(find-dll-dir)],
and @racket[(find-user-lib-dir)]---but the last is included only if the

View File

@ -17,5 +17,5 @@
"scribble-lib"))
;; Make slatex.sty easier to find (for adding to TEXINPUTS)
;; by copying it to the "lib" directory. Same for rubber support:
(define copy-foreign-libs '("slatex.sty" "slatex.py"))
;; by copying it to the "share" directory. Same for rubber support:
(define copy-shared-files '("slatex.sty" "slatex.py"))

2
racket/.gitignore vendored
View File

@ -3,6 +3,8 @@
/include/
/etc/
/doc/
/lib/
/share/
# Windows and OSX executables
/*.app

Some files were not shown because too many files have changed in this diff Show More