This commit bootstraps the Racket compiler and runtime system from source,
including Racket CS as well as both variants of Racket BC. (One remaining
limitation is discussed in comments added to gnu/packages/racket.scm.)
In the process, it moves to building minimal Racket from the Git repository,
rather than the packaged source tarballs. The Git repository is slightly
better as the ``corresponding source'':
1. A few packages especially closely tied to the Racket core implementation
(like "compiler-lib", "base", and "racket-doc") are developed in the
same Git repository. Having them use the same Guix origin, too, will
help to keep them in sync.
2. The top-level Makefile in the Git repository is an important
``script[] used to control compilation and installation.''
In particular, it cooperates with the "distro-build" package to
create the source tarballs and installers for a Racket distribution.
(Racket supports a notion of custom distributions.)
3. It is ``the preferred form ... for making modifications'' to the core
Racket implementation.
Racket releases are tagged in the Git repository (e.g. "v8.1"). At the
beginning of each release cycle, a branch is created to stabilizer a version
for extra testing. Active development happens on the "master" branch.
* gnu/packages/racket-minimal-sh-via-rktio.patch: Adjust for extra directory
layer.
* gnu/local/racket.scm (cfg-flag:sh-for-rktio, cfg-flag:enable-lt,
cfg-flag:enable-racket, unpack-nanopass+stex,
%main-repo-main-distribution-pkgs): New private variables.
* gnu/local/racket.scm (racket-minimal)[source]: Use Git.
[source](snippet): Unbundle nanopass, stex, and libffi.
[native-inputs]: Use racket-bootstrap-chez-bootfiles, plus its
dependencies (for Chez, plus a Racket for bootstrap pig).
[arguments]: Revise extensively.
* gnu/local/racket.scm (racket-minimal-bc-3m, racket-minimal-bc-cgc): New
packages, hidden at least for now.
(racket-bootstrap-chez-bootfiles): Another new package, but this one is
especially likely to stay hidden.
* gnu/local/racket.scm (racket)[origin](snippet): Unbundle packages
developed in the main Git repository, but leave their links.rktd and
pkgs.rktd entries in place.
[native-inputs]: Add the main Racket Git repository.
[arguments](#:phases): Adjust 'unpack-packages to also unpack package
sources from the main Racket Git repository.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This change takes advantage of improved support for layered
and tethered installations in Racket 8.2.
* gnu/packages/racket.scm (extend-layer): New private variable.
This is a script for configuring a new config-tethered layer
chaining to an existing Racket installation.
* gnu/packages/racket.scm (racket)[source](snippet): Unbundle
`racket-minimal`.
[inputs]: Remove inputs that properly belong to `racket-minimal`.
[native-inputs]: Add `racket-minimal` and `extend-layer`.
[arguments]: Stop inheriting from `racket-minimal`. Add phase
'unpack-packages to move the sources and links file into place.
Replace 'configure phase using `extend-layer`.
Replace 'build phase using `raco setup`.
Delete 'install phase.
* gnu/packages/patches/racket-sh-via-rktio.patch: Rename to ...
* gnu/packages/patches/racket-minimal-sh-via-rktio.patch: ... this
file to placate `guix lint`.
* gnu/local.mk (dist_patch_DATA): Update accordingly.
* gnu/packages/racket.scm (racket-minimal)[source]: Likewise.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* gnu/packages/racket.scm (racket-minimal, racket): Update to 8.2.
* gnu/packages/racket.scm (racket-minimal)[#:arguments]: Fix
patch-config.rktd-lib-search-dirs phase. When a config.rktd file
doesn't contain an entry for `lib-search-dirs`, the default is
equivalent to `'(#f)`, not `'()`.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* gnu/packages/patches/python-onnx-shared-libraries.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/machine-learning.scm (python-onnx)[source]: Use it.
[arguments]: New field.
* gnu/packages/games.scm (openttd-opensmx): Update to 0.4.0.
[native-inputs]: Add tar.
[#:make-flags]: Drop INSTALL_DIR. Add DIR_NAME and TAR.
[#:tests?]: New argument.
[#:phases]: Replace ‘install’ with a simple copy operation and drop
post-install.
OpenSFX 1.0.1 uses a different build system from the old one, which causes
weird errors.
* gnu/packages/games.scm (openttd-opensfx)[native-inputs]: Add tar.
[#:make-flags]: Drop INSTALL_DIR. Add DIR_NAME and TAR.
[#:tests?]: New argument.
[#:phases]: Add ‘prebuild’. Replace ‘install’ with a simple copy.
In commit 1cdf1cd7fe, the URI was updated to the
wrong value and the hash not updated at all, so people would erroneously fetch
the old package from a wrong description.
* gnu/packages/games.scm (openttd-opensfx)[uri]: Use
<https://cdn.openttd.org/opensfx-releases>.
[sha256]: Update accordingly.
* gnu/packages/machine-learning.scm (xnnpack): New variable.
* gnu/packages/patches/xnnpack-system-libraries.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/parallel.scm (cpuinfo): New variable.
* gnu/packages/patches/cpuinfo-system-libraries.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/parallel.scm (pthreadpool): New variable.
* gnu/packages/patches/pthreadpool-system-libraries.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/maths.scm (fxdiv): New variable.
* gnu/packages/patches/fxdiv-system-libraries.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
Partly fixes <https://issues.guix.gnu.org/49439>.
Reported by Ricardo Wurmus <rekado@elephly.net>.
When running the command:
guix environment pigx-scrnaseq --search-paths --no-grafts
this change reduces total heap allocations from 1.4GiB to 717MiB (49%)
and wall-clock time from 7.5s to 5.7s (24%).
Without '--no-grafts', heap allocations go from 2.1GiB to 1.4GiB (33%)
and wall-clock time from 12.1s to 10.9s (10%).
* guix/derivations.scm (coalesce-duplicate-inputs): Rewrite using a hash
table to make it O(N) rather than O(N²).