Ludovic Courtès <l...@gnu.org> writes: > Hi, > > Efraim Flashner <efr...@flashner.co.il> writes: > >>> > 2. Cross compile them from x86_64-linux, add the outputs into a git >>> > repository, distribute them with ‘guix time-machine’ invocations and >>> > hashes recorded. >> >> Tossing them into a git repository wouldn't be that great for the git >> repository. > > We could upload them to ftp.gnu.org/gnu/guix/bootstrap with the other > bootstrapping seeds. > >>> > 3. In Guix, download these outputs and use them to bootstrap those not >>> > yet supported architectures. >>> >>> Sounds reasonable, but only if we cannot support those architectures >>> natively IMO. >> >> I actually got fairly close on rust-1.54 for i686-linux. Ignoring that >> for the moment, unless/until GHC upstream releases prebuilt binaries for >> more architectures we have no other way of supporting some of our >> architectures. >> >> What would it look like for people who have substitutes turned off? > > Those binaries would be “cut” from the dependency graph: we’d > cross-compile them from x86_64 and upload them to ftp.gnu.org. Then > someone using Guix on those architectures would simply download these > pre-built binaries. > > It’s clearly not ideal: it would be great if we had instead a bootstrap > path for those compilers on those architectures. But, in the absence of > such a path, using those binaries cross-built from source is better than > using opaque pre-built binaries provided by upstream.
To use an external binary we'll need to define a specialized package to address store references. Zig would be the easist one, since it uses Wasm, zig1 output of ‘guix build zig’, which has no external dependency, can be used directly for other architectures. I checked its homepage, there's 32-bit, but can't be built natively it seems, no sure how should we handle this if it gets popular in libraries.