6.14 API for Cross-Platform Configuration

► |  | raco: Racket Command-Line Tools

1 | raco make: Compiling Source to Bytecode
2 | raco exe: Creating Stand-Alone Executables
3 | raco distribute: Sharing Stand-Alone Executables
4 | raco planet: Automatic Package Distribution
5 | raco pkg: Package Management
6 | raco setup: Installation Management
7 | raco decompile: Decompiling Bytecode
8 | raco demod: Demodularizing Programs
9 | raco link: Library Collection Links
10 | raco pack: Packing Library Collections
11 | raco unpack: Unpacking Library Collections
12 | raco ctool: Working with C Code
13 | raco test: Run tests
14 | raco docs: Documentation Search
15 | raco expand: Macro Expansion
16 | raco read: Reading and Pretty-Printing
17 | raco scribble: Building Documentation
18 | Adding a raco Command
19 | Installation Configuration and Search Paths

▼ | 6 | raco setup: Installation Management

6.1 | Running raco setup
6.2 | Installing ".plt" Archives
6.3 | Controlling raco setup with "info.rkt" Files
6.4 | "info.rkt" File Format
6.5 | Package Dependency Checking
6.6 | API for Setup
6.7 | API for Installing ".plt" Archives
6.8 | API for Finding Installation Directories
6.9 | API for Reading "info.rkt" Files
6.10 | API for Relative Paths
6.11 | API for Collection Names
6.12 | API for Collection Searches
6.13 | API for Platform Specifications
6.14 | API for Cross-Platform Configuration
6.15 | API for Cross-References for Installed Manuals
6.16 | API for Materializing User-Specific Documentation

On this page:

cross-system-type
cross-system-library-subpath
cross-installation?

top ← prev up next →

#### 6.14`` API for Cross-Platform Configuration

(require setup/cross-system) | package: base

The setup/cross-system library provides functions for querying the system properties of a destination platform, which can be different than the current platform in cross-installation modes.

A Racket installation includes a "system.rktd" file in the directory reported by (find-lib-dir). When the information in that file does not match the running Racket’s information, then the setup/cross-system module infers that Racket is being run in cross-installation mode.

For example, if an in-place Racket installation for a different platform resides at ‹cross-dir›, then

racket -G ‹cross-dir›/etc -X ‹cross-dir›/collects -l- raco pkg

runs raco pkg using the current platform’s racket executable, but using the collections and other configuration information of ‹cross-dir›, as well as modifying the packages of ‹cross-dir›. That can work as long as no platform-specific libraries need to run to perform the requested raco pkg action (e.g., when installing built packages).

Added in version 6.3 of package base.

> procedure (cross-system-type [mode])
> → (or/c symbol? string? bytes? exact-positive-integer? vector?)
> | mode |  | : |  |
> (or/c 'os 'word 'gc 'link 'machine
> 'so-suffix 'so-mode 'fs-change)
> |  | = |  | 'os

Like system-type, but for the target platform instead of the current platform in cross-installation mode. When not in cross-installation mode, the results are the same as for system-type.

> procedure (cross-system-library-subpath [mode]) → path-for-some-system?
> mode : (or/c 'cgc '3m #f) = (system-type 'gc)

Like system-library-subpath, but for the target platform instead of the current platform in cross-installation mode. When not in cross-installation mode, the results are the same as for system-library-subpath.

In cross-installation mode, the target platform may have a different path convention than the current platform, so the result is path-for-some-system? instead of path?.

> procedure (cross-installation?) → boolean?

Returns #t if cross-installation mode has been detected, #f otherwise.
top ← prev up next →