194 lines
9.0 KiB
Plaintext
194 lines
9.0 KiB
Plaintext
|
|
The _launcherr.ss_ library in the "launcher" collection imports
|
|
mzlib:file^, dynext:compile^, and dynext:link^, and exports the
|
|
following procedures for creating MzScheme and MrEd launcher
|
|
executables.
|
|
|
|
===== Launcher creation ========================================
|
|
|
|
> (make-mred-launcher args dest [aux]) - Creates the launcher
|
|
`dest'. The `dest' executable (for the current OS platform) will
|
|
start MrEd with the command-line arguments specified as strings in
|
|
the list `args'. Extra arguments passed to the launcher at run-time
|
|
will be appended (modulo special X flag handling, as described
|
|
below) to this list and passed on to MrEd. If `dest' exists
|
|
already (as a file or directory), it is replaced.
|
|
|
|
`make-mred-launcher' transforms `args' as necessary to avoid
|
|
mutations caused by passing the strings through the
|
|
platform-specific launching mechanism (e.g, as /bin/sh arguments),
|
|
so the strings in `flags' arrive to MrEd intact.
|
|
|
|
The optional `aux' argument is an association list for
|
|
platform-specific options (i.e., it is a list of pairs where the
|
|
first element of the pair is a key symbol and the second element is
|
|
the value for that key). The currently supported keys are as
|
|
follows:
|
|
|
|
_'icns_ (Mac OS X) - an icon file path (suffix ".icns") to
|
|
use for the executable's desktop icon
|
|
|
|
_'ico_ (Windows) - an icon file path (suffix ".ico") to
|
|
use for the executable's desktop icon; the executable
|
|
will have 16x16, 32x32, and 48x48 icons at 4-bit,
|
|
8-bit, and 32-bit (RBBA) depths; the icons are
|
|
copied and generated from any 16x16, 32x32, and 48x48
|
|
icons in the ".ico" file
|
|
|
|
_'independent?_ (Windows) - a boolean; #t creates an old-style
|
|
launcher that is independent of the MzScheme or MrEd
|
|
binary, like "Setup PLT.exe"
|
|
|
|
-'exe-name_ (Mac OS X, MrEd 'script[-3m] variant) - provides the
|
|
base name for a 'normal variant launcher, which the
|
|
script will call ignoring `args'; if this name is not
|
|
provided, the script will go through the MrEd executable
|
|
|
|
_'creator_ (Mac OS X) - provides a 4-character string to use as
|
|
the application signature.
|
|
|
|
_'file-types_ (Mac OS X) - provides a list of association lists,
|
|
one for each type of file handled by the application;
|
|
each association is a 2-element list, where the first (key)
|
|
element is a string recognized by Finder, and the second
|
|
element is a plist value (see doc.txt in the "xml" collection);
|
|
see plt/collects/drscheme/drscheme.filetypes for an example.
|
|
|
|
-'resource-files_ (Mac OS X) - extra files to copy into the
|
|
"Resources" directory of the generated executable
|
|
|
|
_'forget-exe?_ (Windows, Mac OS X) - a boolean; #t does not
|
|
preserve the original executable name for
|
|
`(find-system-path 'exec-file)'; the main consequence is
|
|
that library collections will be found relative to the
|
|
launcher instead of the original executable
|
|
|
|
See also `build-aux-from-path' below. The default `aux' is `null'.
|
|
|
|
For Unix/X, the script created by `make-mred-launcher' detects and
|
|
handles X flags specially when they appear as the initial arguments
|
|
to the script. Instead of appending these arguments to the end of
|
|
`args', they are spliced in after any X Windows flags already
|
|
listed listed in `args'. The remaining arguments (i.e., all script
|
|
flags and arguments after the last X Windows flag or argument) are
|
|
then appended after the spliced `args'.
|
|
|
|
For Mac OS Classic, the creation of launchers requires the
|
|
(one-time) use of an extension, starter-setup.so. This extension
|
|
is distributed with DrScheme bundles, and can also be built
|
|
automatically from the source if necessary (and if the user has a
|
|
copy of Codewarrior 5). The creation of launchers on 68k platforms
|
|
is significantly more fragile than on PPC platforms. In
|
|
particular, any launcher created on a 68k platform (or using a 68k
|
|
binary) must be invoked at least once while that launcher is in the
|
|
same folder as the MrEd copy it is to be linked to. Note also that
|
|
once created, these launchers are bound in a truly tenacious way to
|
|
MrEd; short of deleting MrEd entirely, it's nearly impossible to
|
|
disconnect them.
|
|
|
|
> (make-mzscheme-launcher args dest [aux]) - Same as
|
|
`make-mred-launcher', but for starting MzScheme. (No special Unix/X
|
|
handling.)
|
|
|
|
|
|
> (make-mred-program-launcher file collection dest) - Calls
|
|
`make-mred-launcher' with arguments that start the MrEd program
|
|
implemented by `collection': (list "-mvL-" file collection).
|
|
The aux argument is generated by stripping the suffix from `file',
|
|
adding it to the path of `collection', and passing the result to
|
|
`build-aux-from-path'.
|
|
|
|
> (make-mzscheme-program-launcher file collection dest) - Calls
|
|
`make-mzscheme-launcher' with arguments that start the MzScheme
|
|
program implemented by `file' in `collection': (list "-mvL-" file
|
|
collection). The aux argument is generated by stripping the suffix
|
|
from `file', adding it to the path of `collection', and passing the
|
|
result to `build-aux-from-path'.
|
|
|
|
|
|
> (install-mred-program-launcher file collection name) - Calls
|
|
`make-mred-launcher' with the destination returned by
|
|
(mred-program-launcher-path name); the `file' and `collection'
|
|
arguments are passed on to `make-mred-launcher'.
|
|
|
|
> (install-mzscheme-program-launcher file collection name) - Calls
|
|
`make-mzscheme-launcher' with the destination returned by
|
|
(mzscheme-program-launcher-path name); the `file' and `collection'
|
|
arguments are passed on to `make-mzscheme-launcher'.
|
|
|
|
===== Launcher paths and platform conventions ============================
|
|
|
|
> (mred-program-launcher-path name) returns a pathname for an executable
|
|
in the current PLT home directory called `name'. For Windows, the
|
|
".exe" suffix is automatically appended to `name'. For Unix, `name'
|
|
is changed to lowercase, whitespace is changed to `-', and the path
|
|
includes the bin subdirectory of the PLT home directory. For Mac OS
|
|
X, the ".app" suffix is appended to `name'.
|
|
|
|
> (mzscheme-program-launcher-path name) returns the same pathname as
|
|
(mred-program-launcher-path name) for Unix, Windows, and Mac OS Classic.
|
|
For Mac OS X, the result is the same as for Unix.
|
|
|
|
|
|
> (mred-launcher-is-directory?) - Returns #t if MrEd launchers for the
|
|
current platform correspond to directories (as on Mac OS X).
|
|
|
|
> (mzscheme-launcher-is-directory?) - Returns #t if MzScheme launchers
|
|
for the current platform correspond to directories.
|
|
|
|
|
|
> (mred-launcher-add-suffix path) - Returns a path with a suitable
|
|
executable suffix added, if it's not present already.
|
|
|
|
> (mzscheme-launcher-add-suffix path) - Like
|
|
`mred-launcher-add-suffix', but for MzScheme launchers.
|
|
|
|
|
|
> (mred-launcher-put-file-extension+style+filters) - Returns three
|
|
values suitable for use as the `extension', `style', and `filters'
|
|
arguments to `put-file', respectively. If MrEd launchers for this
|
|
platform are directories, the `style' result is suitable for use
|
|
with `get-directory', and the `extension' result may be a string
|
|
indicating a required extension for the directory name (e.g., ".app"
|
|
for Mac OS X).
|
|
|
|
> (mzscheme-launcher-put-file-extension+style+filters) - Like
|
|
`mred-launcher-get-file-extension+style+filters', but for MzScheme
|
|
launchers.
|
|
|
|
===== Miscellaneous ========================================
|
|
|
|
> (mred-launcher-up-to-date? dest [aux]) - Returns #t if the
|
|
launcher `dest' does not need to be updated, assuming
|
|
that `dest' is a launcher and its arguments have not changed.
|
|
|
|
> (mzscheme-launcher-up-to-date? dest [aux]) - Analogous to
|
|
`mred-launcher-up-to-date?'.
|
|
|
|
|
|
> (build-aux-from-path path) - Creates an `aux' association list
|
|
by a suffix to the path, such as ".icns", and checking whether
|
|
such a file exists. The recognized suffixes are as follows:
|
|
|
|
* .icns => 'icns file
|
|
* .ico => 'ico file
|
|
* .lch => 'independent? as #t (file content is ignored)
|
|
* .creator => 'creator as initial 4-characters in the file
|
|
* .filetypes => 'file-types as read content (a single S-expr),
|
|
and 'resource-files as a list constructed by
|
|
finding "CFBundleTypeIconFile" entries in
|
|
'file-types
|
|
|
|
> (current-launcher-variant [symbol]) - Gets or sets a symbol
|
|
parameter that indicates a variant of MzScheme or MrEd to use for
|
|
launcher creation and for generating launcher names. The 'normal
|
|
variant is usually available. For Unix platforms, the only other
|
|
possibility is '3m. For Mac OS X, the '3m variant is available, and
|
|
the 'script and 'script-3m variants are available for MrEd.
|
|
|
|
> (available-mred-variants) - Returns a list of symbols
|
|
corresponding to available variants of MrEd.
|
|
|
|
> (available-mzscheme-variants) - Returns a list of symbols
|
|
corresponding to available variants of MrEd.
|