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) # 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 # 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)])' MACOSX_CHECK = $(PLAIN_RACKET) -I racket/base -e '(case (system-type) [(macosx) (exit 0)] [else (exit 1)])'
LINK_MODE = --save
CPUS = CPUS =
in-place: 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 # end in "_q" or "_qq", don't use any quote marks on the right-hand
# side of its definition. # 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 # Catalog for sources and native packages; use "local" to bootstrap
# from package directories (in the same directory as this makefile) # from package directories (in the same directory as this makefile)
# plus the GitHub repository of raw native libraries. Otherwise, it's # plus the GitHub repository of raw native libraries. Otherwise, it's
@ -171,11 +172,11 @@ DISTRO_BUILD_PKGS = distro-build
DISTBLD = pkgs/distro-build DISTBLD = pkgs/distro-build
# Helper macros: # Helper macros:
ADDON = build/user USER_CONFIG = -G build/user/config -A build/user
RACKET = racket/bin/racket -A "$(ADDON)" RACKET = racket/bin/racket $(USER_CONFIG)
RACO = racket/bin/racket -A "$(ADDON)" -N raco -l- raco RACO = racket/bin/racket $(USER_CONFIG) -N raco -l- raco
WIN32_RACKET = racket\racket -A "$(ADDON)" WIN32_RACKET = racket\racket $(USER_CONFIG)
WIN32_RACO = racket\racket -A "$(ADDON)" -N raco -l- raco WIN32_RACO = racket\racket $(USER_CONFIG) -N raco -l- raco
X_AUTO_OPTIONS = --skip-installed --deps search-auto $(JOB_OPTIONS) X_AUTO_OPTIONS = --skip-installed --deps search-auto $(JOB_OPTIONS)
USER_AUTO_OPTIONS = --scope user $(X_AUTO_OPTIONS) USER_AUTO_OPTIONS = --scope user $(X_AUTO_OPTIONS)
LOCAL_USER_AUTO = --catalog build/local/catalog $(USER_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) # 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_ALL = -U -G build/config racket/src/link-all.rkt ++dir pkgs ++dir build/native-pkgs
LINK_MODE = --save
pkg-links: pkg-links:
$(PLAIN_RACKET) $(LINK_ALL) $(LINK_MODE) $(PKGS) $(REQUIRED_PKGS) $(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 # `distro-buid/drive-clients', which is in turn run by the
# `installers' target. # `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 # keep the "build/user" directory on the grounds that the
# client is the same as the server. # client is the same as the server.
client: client:
if [ ! -d build/drive ] ; then rm -rf build/user ; fi if [ ! -d build/log ] ; then rm -rf build/user ; fi
$(MAKE) core $(MAKE) core
$(MAKE) distro-build-from-server $(MAKE) distro-build-from-server
$(MAKE) bundle-from-server $(MAKE) bundle-from-server

View File

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

View File

@ -212,7 +212,6 @@ Function myTestInstDir
IfFileExists "$INSTDIR\Racket.exe" racket_is_installed IfFileExists "$INSTDIR\Racket.exe" racket_is_installed
@(if auto-launch @~a{IfFileExists "$INSTDIR\${RKTLaunchProgram}.exe" racket_is_installed} "") @(if auto-launch @~a{IfFileExists "$INSTDIR\${RKTLaunchProgram}.exe" racket_is_installed} "")
IfFileExists "$INSTDIR\collects" racket_is_installed IfFileExists "$INSTDIR\collects" racket_is_installed
IfFileExists "$INSTDIR\lib\collects" racket_is_installed
Goto racket_is_not_installed Goto racket_is_not_installed
racket_is_installed: racket_is_installed:
IfFileExists "${UNINSTEXE}" we_have_uninstall IfFileExists "${UNINSTEXE}" we_have_uninstall
@ -320,7 +319,7 @@ Function un.myGUIInit
IfFileExists "$INSTDIR\Racket.exe" racket_is_installed_un IfFileExists "$INSTDIR\Racket.exe" racket_is_installed_un
IfFileExists "$INSTDIR\lib\GRacket.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} "") @(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 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" Abort "Uninstall aborted by user"
racket_is_installed_un: racket_is_installed_un:
@ -336,6 +335,7 @@ Section "Uninstall"
Delete "$INSTDIR\README*.*" Delete "$INSTDIR\README*.*"
RMDir /r "$INSTDIR\include" RMDir /r "$INSTDIR\include"
RMDir /r "$INSTDIR\lib" RMDir /r "$INSTDIR\lib"
RMDir /r "$INSTDIR\share"
RMDir /r "$INSTDIR\etc" RMDir /r "$INSTDIR\etc"
RMDir /r "$INSTDIR\doc" RMDir /r "$INSTDIR\doc"
;; these exist in Racket-Full installations ;; these exist in Racket-Full installations

View File

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

View File

@ -30,7 +30,7 @@
also modify Racket; if you distribute a modified version, you must also modify Racket; if you distribute a modified version, you must
distribute it under the terms of the LGPL, which in particular means distribute it under the terms of the LGPL, which in particular means
that you must release the source code for the modified software. See 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 (define macosx-notes
@~a{Install by dragging the enclosing Racket folder to your Applications folder @~a{Install by dragging the enclosing Racket folder to your Applications folder

View File

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

View File

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

View File

@ -10,5 +10,5 @@
"sandbox-lib" "sandbox-lib"
"racket-doc")) "racket-doc"))
;; Make honu.vim easier to find by copying it to the "lib" directory: ;; Make honu.vim easier to find by copying it to the "share" directory:
(define copy-foreign-libs '("contrib/honu.vim")) (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 @item{@racket['doc-dir] --- a path, string, or byte string for the
main documentation directory. The value defaults to a 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.} main collection directory.}
@item{@racket['lib-dir] --- a path, string, or byte string for the @item{@racket['lib-dir] --- a path, string, or byte string for the
main library directory; it defaults to the parent main library directory; it defaults to a @filepath{lib}
directory of the main collection directory.} sibling directory of the main collection directory.}
@item{@racket['lib-search-dirs] --- a list of paths, strings, byte @item{@racket['lib-search-dirs] --- a list of paths, strings, byte
strings, or @racket[#f] representing the search path for strings, or @racket[#f] representing the search path for
@ -42,27 +42,32 @@ directory:
directory followed by the main library directory.} directory followed by the main library directory.}
@item{@racket['dll-dir] --- a path, string, or byte string for a @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.} 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 @item{@racket['links-file] --- a path, string, or byte string for the
@tech[#:doc reference-doc]{collection links file}; it defaults @tech[#:doc reference-doc]{collection links file}; it defaults
to a @filepath{links.rktd} file in the parent of the main to a @filepath{links.rktd} file in the @filepath{share} sibling
collection directory.} of the main collection directory.}
@item{@racket['links-search-files] --- like @racket['lib-search-dirs], @item{@racket['links-search-files] --- like @racket['lib-search-dirs],
but for @tech[#:doc reference-doc]{collection links file}.} but for @tech[#:doc reference-doc]{collection links file}.}
@item{@racket['pkgs-dir] --- a path, string, or byte string for @item{@racket['pkgs-dir] --- a path, string, or byte string for
packages that have installation scope; it defaults to 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], @item{@racket['pkgs-search-dirs] --- like @racket['lib-search-dirs],
but for packages in installation scope.} but for packages in installation scope.}
@item{@racket['bin-dir] --- a path, string, or byte string for the @item{@racket['bin-dir] --- a path, string, or byte string for the
main directory containing executables; it defaults to a 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.} directory.}
@item{@racket['doc-search-dirs] --- like @racket['lib-search-dirs], @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 @item{@racket['include-dir] --- a path, string, or byte string for
the main directory containing C header files; it defaults to an 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.} directory.}
@item{@racket['include-search-dirs] --- like @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 but the original file is removed after it is copied (which makes sense
for precompiled packages).} 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 @item{@indexed-racket[copy-man-pages] : @racket[(listof (and/c
path-string? relative-path? filename-extension))] --- Files to copy path-string? relative-path? filename-extension))] --- Files to copy
into a @tt{man} directory. The file suffix determines its category; 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 libraries and other build information. The result is @racket[#f] if no such
directory is available.} 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)]{ @defproc[(find-dll-dir) (or/c path? #f)]{
Returns a path to the directory that contains DLLs for use with the Returns a path to the directory that contains DLLs for use with the
current executable (e.g., @filepath{libmzsch.dll} on Windows). 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 specific directory is available (i.e., other than the platform's normal
search path).} 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?)]{ @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 configured otherwise, the result includes any non-@racket[#f] result of
@racket[(find-lib-dir)], @racket[(find-dll-dir)], @racket[(find-lib-dir)], @racket[(find-dll-dir)],
and @racket[(find-user-lib-dir)]---but the last is included only if the and @racket[(find-user-lib-dir)]---but the last is included only if the

View File

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

2
racket/.gitignore vendored
View File

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

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