with structuredAttrs lists will be bash arrays which cannot be exported
which will be a issue with some patches and some wrappers like cc-wrapper
this makes it clearer that NIX_CFLAGS_COMPILE must be a string as lists
in env cause a eval failure
Inspired by scala’s 2.x.nix, a bit lower in the same all-packages.nix file, I
have combined all the separate SBCL build declarations into a single 2.x.nix
file which you can call with the version as an argument.
Benefits:
- Less clutter in the filesystem
- Less indirection
- Cleaner overview of available versions
This yields no rebuilds on my machine.
Update the binary used to bootstrap SBCL versions on Darwin (Mac OS) x86-64
systems (i.e. Intel, i.e. non-ARM) from 1.2.11 (released in 2015) to
2.2.9 (released September 2022). Generally, the more recent the bootstrap
binary, the fewer the problems. This bootstrap binary can be used to compile
other SBCL versions (for this target) from source. Those don’t have binary
releases by the SBCL team.
This is useful because building SBCL 2.x from source, using the binary release
of 1.2.11, on this system configuration, ended up in an endless loop. See also
this thread on the Mac ports forum, where people are having the same issue:
https://trac.macports.org/ticket/64621
Now that SBCL has released a more recent binary build for this system, the
problem is solved.
Without the change build fails on darwin as:
duplicate symbol '_static_code_space_free_pointer' in:
alloc.o
traceroot.o
duplicate symbol '_static_code_space_free_pointer' in:
alloc.o
gencgc.o
This substition produces a nixos-build error, because the target string
was removed in commit 323891ea5964d54aba2d272ddddbf748ce353176 in 2018.
Remove the substition from the `postPatch` phase of `sbcl/common.nix`.
This substitution produces a nix-build warning, because the target
string was removed in commit 7b225df9a492977b8fff0948ce93c5ab31766f64
in 2016.
Remove the substition from the `postPatch` phase in `sbcl/common.nix`.
- Remove some debugging output at the start of the `patchPhase` section,
which appears to have outlived its value.
- Rename `patchPhase` to `postPatch`, to avoid preventing people adding
patches via the `patches` variable.
- Add `preBuild` and `postBuild` run-hooks to the `buildPhase` section.
- Add `preInstall` and `postInstall` run-hooks to the `installPhase`
section.
The sbcl version specific nix expressions were an exact copy of each
other with the version and hash swapped out, leading to unnecessary code
duplication. This has been resolved by moving the common expression to
common.nix and only tracking version and hash in the version specific
expressions.
Since the expression is unchanged, this should cause 0 rebuilds.
Programs which generate and compile a lot of code at runtime (such as
programming language interpreters like ACL2) are not suited for running on SBCL
executables built with the "immobile space" feature, as explained by Douglas
Katzman in this mail thread:
https://sourceforge.net/p/sbcl/mailman/message/36007057/
In this commit, I add an optional flag to the SBCL package allowing you to
disable the "immobile space" features.
I also migrated away from specifying enabled/disabled features in a
`customize-target-features.lisp` file and towards supplying them as command line
arguments to `make.sh`, as has been recommended by the installation instructions
since 2012 or so.
Following legacy packing conventions, `isArm` was defined just for
32-bit ARM instruction set. This is confusing to non packagers though,
because Aarch64 is an ARM instruction set.
The official ARM overview for ARMv8[1] is surprisingly not confusing,
given the overall state of affairs for ARM naming conventions, and
offers us a solution. It divides the nomenclature into three levels:
```
ISA: ARMv8 {-A, -R, -M}
/ \
Mode: Aarch32 Aarch64
| / \
Encoding: A64 A32 T32
```
At the top is the overall v8 instruction set archicture. Second are the
two modes, defined by bitwidth but differing in other semantics too, and
buttom are the encodings, (hopefully?) isomorphic if they encode the
same mode.
The 32 bit encodings are mostly backwards compatible with previous
non-Thumb and Thumb encodings, and if so we can pun the mode names to
instead mean "sets of compatable or isomorphic encodings", and then
voilà we have nice names for 32-bit and 64-bit arm instruction sets
which do not use the word ARM so as to not confused either laymen or
experienced ARM packages.
[1]: https://developer.arm.com/products/architecture/a-profile
SBCL 1.2.0 was being retained for the acl2 package, which no longer
needs it. SBCL 1.3.12 was being retained for the maxima package,
which appears to no longer need it.
* pkgs: refactor needless quoting of homepage meta attribute
A lot of packages are needlessly quoting the homepage meta attribute
(about 1400, 22%), this commit refactors all of those instances.
* pkgs: Fixing some links that were wrongfully unquoted in the previous
commit
* Fixed some instances
Updated sbcl with new version released today. Tested on nixos 17.03
x86_64, sbcl executable runs. Thanks.
From 36da6ad6eac68fdf2c8876c0a35642aa3e5c9d96 Mon Sep 17 00:00:00 2001
From: Tomas Hlavaty <tom@logand.com>
Date: Wed, 28 Jun 2017 20:12:58 +0200
Subject: [PATCH] sbcl: 1.3.18 -> 1.3.19