
Allow the directory for GUI executables to be specified as different from console executables. The defaults for those two are different on Mac OS, and configuring them differently might be useful to address #1575. Although there is probably no demand on Windows or Unix for splitting the console and GUI bin directories, this patch tries to make things work sensible there. On Windows, there's a corner case where a launcher that starts GRacket (especially with `-z`) is intended to be a console executable. The launcher creator can be told that via a `subsystem` option, but a new `#:console?` argument was needed for `make-gracket-launcher-path` lets the path selector know.
200 lines
9.6 KiB
Racket
200 lines
9.6 KiB
Racket
#lang scribble/doc
|
|
@(require scribble/manual
|
|
"common.rkt"
|
|
(for-label racket/base
|
|
racket/contract
|
|
setup/dirs))
|
|
|
|
@title[#:tag "config-file"]{Installation Configuration and Search Paths}
|
|
|
|
A @deftech{configuration directory} path is built into the Racket executable as
|
|
selected at install time, and its location can be changed via the
|
|
@envvar{PLTCONFIGDIR} directory or @DFlag{config}/@Flag{G}
|
|
command-line flag. Use @racket[find-config-dir] to locate the
|
|
configuration directory.
|
|
|
|
Modify the @as-index{@filepath{config.rktd}} file in the @tech{configuration directory}
|
|
to configure other directories as described below. Use the
|
|
@racketmodname[setup/dirs] library (which combines information from
|
|
the configuration files and other sources) to locate configured
|
|
directories, instead of reading @filepath{config.rktd} directly.
|
|
A @filepath{config.rktd} file can also appear in the directory
|
|
@racket[(build-path (find-system-path 'addon-dir) "etc")], but it
|
|
controls only the results of @racket[find-addon-tethered-console-bin-dir] and
|
|
@racket[find-addon-tethered-gui-bin-dir].
|
|
|
|
The path of the @deftech{main collection directory} is built into the
|
|
Racket executable, and it can be changed via the
|
|
@DFlag{collects}/@Flag{X} flag, so it has no entry in
|
|
@filepath{config.rktd}. Most paths that are specified in
|
|
@filepath{config.rktd} have default values that are relative to the
|
|
main collection directory. The paths of the @tech{configuration directory} and
|
|
@tech{main collection directory} thus work together to determine a
|
|
Racket configuration.
|
|
|
|
A @filepath{config.rktd} file in the configuration directory should
|
|
contain a @racket[read]able hash table with any of the following
|
|
symbolic keys, where a relative path is relative to the @tech{main collection
|
|
directory}:
|
|
|
|
@itemlist[
|
|
|
|
@item{@indexed-racket['installation-name] --- a string for the installation
|
|
name, which is used to determine user- and version-specific paths,
|
|
such as the initial path produced by @racket[find-library-collection-paths]
|
|
and the location of packages that are installed in @exec{user}
|
|
@tech[#:doc '(lib "pkg/scribblings/pkg.scrbl")]{package
|
|
scope}. The default is @racket[(version)].}
|
|
|
|
@item{@indexed-racket['lib-dir] --- a path, string, or byte string for the
|
|
@deftech{main library directory}. It defaults to a @filepath{lib}
|
|
sibling directory of the @tech{main collection directory}.}
|
|
|
|
@item{@indexed-racket['lib-search-dirs] --- a list of paths, strings, byte
|
|
strings, or @racket[#f] representing the search path for
|
|
directories containing foreign libraries. Each @racket[#f] in
|
|
the list, if any, is replaced with the default search path,
|
|
which is the user- and version-specific @filepath{lib}
|
|
directory followed by the @tech{main library directory}.}
|
|
|
|
@item{@indexed-racket['dll-dir] --- a path, string, or byte string for a
|
|
directory containing shared libraries for the main
|
|
executable. It defaults to the @tech{main library directory}.}
|
|
|
|
@item{@indexed-racket['share-dir] --- a path, string, or byte string for the
|
|
@deftech{main shared-file directory}, which normally includes installed packages.
|
|
It defaults to a @filepath{share} sibling directory of the main
|
|
collection directory.}
|
|
|
|
@item{@indexed-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 @tech{main shared-file directory}.}
|
|
|
|
@item{@indexed-racket['links-search-files] --- like @racket['lib-search-dirs],
|
|
but for @tech[#:doc reference-doc]{collection links file}.}
|
|
|
|
@item{@indexed-racket['pkgs-dir] --- a path, string, or byte string
|
|
for packages that have @exec{installation} @tech[#:doc '(lib
|
|
"pkg/scribblings/pkg.scrbl")]{package scope}. It defaults to
|
|
@filepath{pkgs} in the main shared-file directory.}
|
|
|
|
@item{@indexed-racket['pkgs-search-dirs] --- like
|
|
@racket['lib-search-dirs], but for packages in @exec{installation}
|
|
@tech[#:doc '(lib "pkg/scribblings/pkg.scrbl")]{package
|
|
scope}.}
|
|
|
|
@item{@indexed-racket['bin-dir] --- a path, string, or byte string for the
|
|
installation's directory containing executables. It defaults to a
|
|
@filepath{bin} sibling directory of the @tech{main collection
|
|
directory}.}
|
|
|
|
@item{@indexed-racket['gui-bin-dir] --- a path, string, or byte
|
|
string for the installation's directory containing GUI
|
|
executables. It defaults to a the @racket['bin-dir] value, if
|
|
configured, or otherwise defaults in a platform-specific way:
|
|
to the @filepath{bin} sibling directory of the @tech{main
|
|
collection directory} on Unix, and to the parent of the
|
|
@tech{main collection directory} on Windows and Mac OS.
|
|
|
|
@history[#:added "6.8.0.2"]}
|
|
|
|
@item{@indexed-racket['apps-dir] --- a path, string, or byte string
|
|
for the installation's directory for @filepath{.desktop} files.
|
|
It defaults to a @filepath{applications} subdirectory of the
|
|
@tech{main shared-file directory}.}
|
|
|
|
@item{@indexed-racket['man-dir] --- a path, string, or byte string for the
|
|
installation's man-page directory. It defaults to a @filepath{man}
|
|
sibling directory of the @tech{main collection directory}.}
|
|
|
|
@item{@indexed-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
|
|
@tech{main collection directory}.}
|
|
|
|
@item{@indexed-racket['doc-search-dirs] --- like @racket['lib-search-dirs],
|
|
but for directories containing documentation.}
|
|
|
|
@item{@indexed-racket['doc-search-url] --- a URL string that is augmented
|
|
with version and search-tag queries to form a remote
|
|
documentation reference.}
|
|
|
|
@item{@indexed-racket['doc-open-url] --- a URL string or @racket[#f];
|
|
a string supplies a URL that is used instead of a local path to
|
|
search and maybe open documentation pages (which normally makes
|
|
sense only in an environment where opening a local HTML file
|
|
does not work).}
|
|
|
|
@item{@indexed-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 @tech{main collection
|
|
directory}.}
|
|
|
|
@item{@indexed-racket['include-search-dirs] --- like
|
|
@racket[doc-search-dirs], but for directories containing C
|
|
header files.}
|
|
|
|
@item{@indexed-racket['catalogs] --- a list of URL strings used as the search
|
|
path for resolving package names. An @racket[#f] in the list
|
|
is replaced with the default search path. A string that does not
|
|
start with alphabetic characters followed by @litchar{://} is
|
|
treated as a path, where a relative path is relative to the
|
|
configuration directory.}
|
|
|
|
@item{@indexed-racket['default-scope] --- either @racket["user"] or
|
|
@racket["installation"], determining the default @tech[#:doc
|
|
'(lib "pkg/scribblings/pkg.scrbl")]{package scope} for
|
|
package-management operations.}
|
|
|
|
@item{@indexed-racket['download-cache-dir] --- a path string used as
|
|
the location for storing downloaded package archives. When not
|
|
specified, packages are cached in a @filepath{download-cache}
|
|
directory in the user's add-on directory as reported by
|
|
@racket[(find-system-path 'addon-dir)].}
|
|
|
|
@item{@indexed-racket['download-cache-max-files] and
|
|
@indexed-racket['download-cache-max-bytes] --- real numbers that
|
|
determine limits on the download cache. When not specified, the
|
|
cache is allowed to hold up to 1024 files that total up to
|
|
64@|~|MB.}
|
|
|
|
@item{@indexed-racket['build-stamp] --- a string that identifies a build,
|
|
which can be used to augment the Racket version number to more
|
|
specifically identify the build. An empty string is normally
|
|
appropriate for a release build.}
|
|
|
|
@item{@indexed-racket['absolute-installation?] --- a boolean that is
|
|
@racket[#t] if the installation uses absolute path names,
|
|
@racket[#f] otherwise.}
|
|
|
|
@item{@indexed-racket['cgc-suffix] --- a string used as the suffix (before
|
|
the actual suffix, such as @filepath{.exe}) for a
|
|
@filepath{CGC} executable. Use Windows-style casing, and the
|
|
string will be downcased as appropriate (e.g., for a Unix
|
|
binary name). A @racket[#f] value means that if the
|
|
@exec{racket} binary identifies itself as CGC, then the suffix
|
|
is @racket[""], otherwise it is @racket["CGC"].}
|
|
|
|
@item{@indexed-racket['3m-suffix] --- analogous to @racket['cgc-suffix], but
|
|
for 3m. A @racket[#f] value means that if the @exec{racket}
|
|
binary identifies itself as CGC, then the suffix is
|
|
@racket["3m"], otherwise it is @racket[""].}
|
|
|
|
@item{@indexed-racket['config-tethered-console-bin-dir] and
|
|
@indexed-racket['config-tethered-gui-bin-dir] --- a path for a
|
|
directory to hold extra copies of executables that are tied to the
|
|
configuration directory (as reported by @racket[find-config-dir])
|
|
that is active at the time the executables are created. See also
|
|
@racket[find-config-tethered-console-bin-dir] and
|
|
@racket[find-config-tethered-gui-bin-dir].}
|
|
|
|
@item{@indexed-racket['interactive-file] and
|
|
@indexed-racket['gui-interactive-file] --- a module path
|
|
to the interactive module that runs when the REPL
|
|
runs on startup, unless the
|
|
@Flag{q}/@DFlag{no-init-file} is provided. Defaults to
|
|
@racket['racket/interactive] and
|
|
@racket['racket/gui/interactive].}
|
|
|
|
]
|