minimal-bootstrap: use recursive FOD to make nix unpack bootstrap sources

This commit is contained in:
Emily Trau 2023-07-01 17:53:11 -07:00
parent 51395b8fe2
commit 37023bfde7
2 changed files with 25 additions and 49 deletions

View File

@ -29,7 +29,7 @@ rec {
Run the following command: Run the following command:
``` ```
nix hash file $(nix build --print-out-paths -f '<nixpkgs>' make-minimal-bootstrap-sources) nix hash path $(nix build --print-out-paths -f '<nixpkgs>' make-minimal-bootstrap-sources)
``` ```
# Why do we need this `.nar` archive? # Why do we need this `.nar` archive?
@ -71,11 +71,11 @@ rec {
requirements above apply to `minimal-bootstrap-sources`. requirements above apply to `minimal-bootstrap-sources`.
*/ */
minimal-bootstrap-sources = derivation { minimal-bootstrap-sources = derivation {
name = "${name}.nar.xz"; inherit name;
system = builtins.currentSystem; system = builtins.currentSystem;
outputHashMode = "flat"; outputHashMode = "recursive";
inherit outputHashAlgo; inherit outputHashAlgo;
outputHash = "sha256-ig988BiRTz92hhZZgKQW1tVPoV4aQ2D69Cq3wHvVgHg="; outputHash = "sha256-FpMp7z+B3cR3LkQ+PooH/b1/NlxH8NHVJNWifaPWt4U=";
# This builder always fails, but fortunately Nix will print the # This builder always fails, but fortunately Nix will print the
# "builder", which is really the error message that we want the # "builder", which is really the error message that we want the
@ -85,22 +85,13 @@ rec {
# #
# Neither your store nor your substituters seems to have: # Neither your store nor your substituters seems to have:
# #
# ${name}.nar.xz # /nix/store/________________________________-${name}
# #
# Please obtain or create this file, give it exactly the name # You can create this path from an already-bootstrapped nixpkgs
# shown above, and then run the following command:
#
# nix-store --add-fixed ${outputHashAlgo} ${name}.nar.xz
#
# You can create this file from an already-bootstrapped nixpkgs
# using the following command: # using the following command:
# #
# nix-build '<nixpkgs>' -A make-minimal-bootstrap-sources # nix-build '<nixpkgs>' -A make-minimal-bootstrap-sources
# #
# Or, if you prefer, you can create this file using only `git`,
# `nix`, and `xz`. For the commands needed in order to do this,
# see `make-bootstrap-sources.nix`.
#
''; '';
}; };
} }

View File

@ -8,44 +8,31 @@
# #
# To build: # To build:
# #
# nix-build '<nixpkgs>' -o sources.nar.xz -A make-minimal-bootstrap-sources # nix-build '<nixpkgs>' -A make-minimal-bootstrap-sources
# #
{ lib { lib
, fetchFromGitHub , fetchFromGitHub
, runCommand
, nix
, xz
}: }:
let fetchFromGitHub {
inherit (import ./bootstrap-sources.nix { }) name rev; inherit (import ./bootstrap-sources.nix { }) name rev;
owner = "oriansj";
repo = "stage0-posix";
sha256 = "sha256-FpMp7z+B3cR3LkQ+PooH/b1/NlxH8NHVJNWifaPWt4U=";
fetchSubmodules = true;
postFetch = ''
# Seed binaries will be fetched separately
echo "Removing seed binaries"
rm -rf $out/bootstrap-seeds/*
src = fetchFromGitHub { # Remove vendored/duplicate M2libc's
owner = "oriansj"; echo "Removing duplicate M2libc"
repo = "stage0-posix"; rm -rf \
inherit rev; $out/M2-Mesoplanet/M2libc \
sha256 = "sha256-FpMp7z+B3cR3LkQ+PooH/b1/NlxH8NHVJNWifaPWt4U="; $out/M2-Planet/M2libc \
fetchSubmodules = true; $out/mescc-tools/M2libc \
postFetch = '' $out/mescc-tools-extra/M2libc
# Seed binaries will be fetched separately '';
echo "Removing seed binaries"
rm -rf $out/bootstrap-seeds/*
# Remove vendored/duplicate M2libc's
echo "Removing duplicate M2libc"
rm -rf \
$out/M2-Mesoplanet/M2libc \
$out/M2-Planet/M2libc \
$out/mescc-tools/M2libc \
$out/mescc-tools-extra/M2libc
'';
};
in
runCommand "${name}.nar.xz" {
nativeBuildInputs = [ nix xz ];
passthru = { inherit src; };
meta = with lib; { meta = with lib; {
description = "Packaged sources for the first bootstrapping stage"; description = "Packaged sources for the first bootstrapping stage";
@ -54,6 +41,4 @@ runCommand "${name}.nar.xz" {
maintainers = teams.minimal-bootstrap.members; maintainers = teams.minimal-bootstrap.members;
platforms = platforms.all; platforms = platforms.all;
}; };
} '' }
nix-store --dump ${src} | xz -c > $out
''