From cede8c0f3bb6e276dbe8668b4a4966cac6ee7063 Mon Sep 17 00:00:00 2001 From: Emily Trau Date: Thu, 18 May 2023 10:12:53 +1000 Subject: [PATCH] minimal-bootstrap: create top-level attr for bootstrap sources --- .../stage0-posix/bootstrap-sources.nix | 22 ++++++++++++--- .../minimal-bootstrap/stage0-posix/hex0.nix | 2 +- .../stage0-posix/kaem/minimal.nix | 2 +- .../stage0-posix/make-bootstrap-sources.nix | 28 ++++++++++++++----- pkgs/top-level/all-packages.nix | 1 + 5 files changed, 42 insertions(+), 13 deletions(-) diff --git a/pkgs/os-specific/linux/minimal-bootstrap/stage0-posix/bootstrap-sources.nix b/pkgs/os-specific/linux/minimal-bootstrap/stage0-posix/bootstrap-sources.nix index f06db98a8efee2..e7ddede2ffa466 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/stage0-posix/bootstrap-sources.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/stage0-posix/bootstrap-sources.nix @@ -15,8 +15,7 @@ rec { executable = true; }; - # Packaged resources required for the first bootstrapping stage. - # Contains source code and 256-byte hex0 binary seed. + # Packaged source files for the first bootstrapping stage. # # We don't have access to utilities such as fetchgit and fetchzip since this # is this is part of the bootstrap process and would introduce a circular @@ -25,10 +24,25 @@ rec { # tarballs to be repackaged. # # To build see `make-bootstrap-sources.nix` + + # + # Files came from this Hydra build: + # + # https://hydra.nixos.org/build/ + # + # Which used nixpkgs revision + # to instantiate: + # + # /nix/store/.drv + # + # and then built: + # + # /nix/store/ + # src = import { inherit name; - url = "https://github.com/emilytrau/bootstrap-tools-nar-mirror/releases/download/2023-05-02/${name}.nar.xz"; - hash = "sha256-ZRG0k49MxL1UTZhuMTvPoEprdSpJRNVy8QhLE6k+etg="; + url = "https://github.com/emilytrau/bootstrap-tools-nar-mirror/releases/download/2023-05-18/${name}.nar.xz"; + hash = "sha256-FpMp7z+B3cR3LkQ+PooH/b1/NlxH8NHVJNWifaPWt4U="; unpack = true; }; } diff --git a/pkgs/os-specific/linux/minimal-bootstrap/stage0-posix/hex0.nix b/pkgs/os-specific/linux/minimal-bootstrap/stage0-posix/hex0.nix index 43859b966add67..b85b2f2cac14bf 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/stage0-posix/hex0.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/stage0-posix/hex0.nix @@ -9,7 +9,7 @@ derivationWithMeta { pname = "hex0"; builder = hex0-seed; args = [ - "${src}/bootstrap-seeds/POSIX/x86/hex0_x86.hex0" + "${src}/x86/hex0_x86.hex0" (placeholder "out") ]; diff --git a/pkgs/os-specific/linux/minimal-bootstrap/stage0-posix/kaem/minimal.nix b/pkgs/os-specific/linux/minimal-bootstrap/stage0-posix/kaem/minimal.nix index e85efbbb0243f5..24fc77f8d345bd 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/stage0-posix/kaem/minimal.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/stage0-posix/kaem/minimal.nix @@ -9,7 +9,7 @@ derivationWithMeta { pname = "kaem-minimal"; builder = hex0; args = [ - "${src}/bootstrap-seeds/POSIX/x86/kaem-minimal.hex0" + "${src}/x86/kaem-minimal.hex0" (placeholder "out") ]; diff --git a/pkgs/os-specific/linux/minimal-bootstrap/stage0-posix/make-bootstrap-sources.nix b/pkgs/os-specific/linux/minimal-bootstrap/stage0-posix/make-bootstrap-sources.nix index fec03f370bc381..be0974edf430ce 100644 --- a/pkgs/os-specific/linux/minimal-bootstrap/stage0-posix/make-bootstrap-sources.nix +++ b/pkgs/os-specific/linux/minimal-bootstrap/stage0-posix/make-bootstrap-sources.nix @@ -1,5 +1,4 @@ -# Packaged resources required for the first bootstrapping stage. -# Contains source code and 256-byte hex0 binary seed. +# Packaged source files for the first bootstrapping stage. # # We don't have access to utilities such as fetchgit and fetchzip since this # is this is part of the bootstrap process and would introduce a circular @@ -9,23 +8,30 @@ # # To build: # -# nix-build pkgs/os-specific/linux/minimal-bootstrap/stage0-posix/make-bootstrap-sources.nix +# nix-build . -A minimal-bootstrap-sources # => ./result/stage0-posix-$version-$rev-source.nar.xz # -{ pkgs ? import ../../../../.. {} }: +{ lib +, fetchFromGitHub +, runCommand +, nix +, xz +}: let - inherit (pkgs) callPackage runCommand fetchFromGitHub nix xz; - inherit (import ./bootstrap-sources.nix) name rev; src = fetchFromGitHub { owner = "oriansj"; repo = "stage0-posix"; inherit rev; - sha256 = "sha256-ZRG0k49MxL1UTZhuMTvPoEprdSpJRNVy8QhLE6k+etg="; + 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/* + # Remove vendored/duplicate M2libc's echo "Removing duplicate M2libc" rm -rf \ @@ -40,6 +46,14 @@ runCommand name { nativeBuildInputs = [ nix xz ]; passthru = { inherit src; }; + + meta = with lib; { + description = "Packaged sources for the first bootstrapping stage"; + homepage = "https://github.com/oriansj/stage0-posix"; + license = licenses.gpl3Plus; + maintainers = teams.minimal-bootstrap.members; + platforms = platforms.all; + }; } '' mkdir $out nix-store --dump ${src} | xz -c > "$out/${name}.nar.xz" diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 4923535fa2ee6f..91e148b6c49b01 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -27102,6 +27102,7 @@ with pkgs; inherit (stdenv) buildPlatform hostPlatform; inherit lib config; }); + minimal-bootstrap-sources = callPackage ../os-specific/linux/minimal-bootstrap/stage0-posix/make-bootstrap-sources.nix { }; mingetty = callPackage ../os-specific/linux/mingetty { };