From 13b44742a4ff01b29e086ea5968b8e6bacf18136 Mon Sep 17 00:00:00 2001 From: John Ericson Date: Mon, 10 Nov 2025 16:07:28 -0500 Subject: [PATCH] JSON for `Hash` now has to be `Base16` Fix #14532. As discussed on the call today: 1. We'll stick with `format = "base16"` and `hash = ""`, not do `base16 = ""`, in order to be forward compatible with supporting more versioning formats. The motivation we discussed for someday *possibly* doing this is making it easier to write very slap-dash lang2nix tools that create (not consume) derivations with dynamic derivations. 2. We will remove support for non-base16 (and make that the default, not base64) in `Hash`, so this is strictly forward contingency, *not* yet something we support. (And also not something we have concrete plans to start supporting.) --- doc/manual/source/protocols/json/hash.md | 18 ++------- .../source/protocols/json/schema/hash-v1.yaml | 10 ++--- src/json-schema-checks/meson.build | 4 +- .../data/content-address/nar.json | 4 +- .../data/content-address/text.json | 4 +- .../data/derivation/output-caFixedFlat.json | 4 +- .../data/derivation/output-caFixedNAR.json | 4 +- .../data/derivation/output-caFixedText.json | 4 +- src/libstore-tests/data/nar-info/impure.json | 12 +++--- src/libstore-tests/data/nar-info/pure.json | 8 ++-- .../data/path-info/empty_impure.json | 4 +- .../data/path-info/empty_pure.json | 4 +- src/libstore-tests/data/path-info/impure.json | 8 ++-- src/libstore-tests/data/path-info/pure.json | 8 ++-- .../data/hash/blake3-base16.json | 5 +++ .../data/hash/blake3-base64.json | 5 --- src/libutil-tests/data/hash/simple.json | 4 +- src/libutil-tests/hash.cc | 40 +++++++------------ src/libutil/hash.cc | 13 ++++-- tests/functional/fixed.sh | 5 +-- tests/functional/git-hashing/simple-common.sh | 4 +- tests/functional/path-info.sh | 8 ++-- 22 files changed, 79 insertions(+), 101 deletions(-) create mode 100644 src/libutil-tests/data/hash/blake3-base16.json delete mode 100644 src/libutil-tests/data/hash/blake3-base64.json diff --git a/doc/manual/source/protocols/json/hash.md b/doc/manual/source/protocols/json/hash.md index 988c8466b..f2af5303f 100644 --- a/doc/manual/source/protocols/json/hash.md +++ b/doc/manual/source/protocols/json/hash.md @@ -2,28 +2,16 @@ ## Examples -### SHA-256 with Base64 encoding - -```json -{{#include schema/hash-v1/sha256-base64.json}} -``` - -### SHA-256 with Base16 (hexadecimal) encoding +### SHA-256 ```json {{#include schema/hash-v1/sha256-base16.json}} ``` -### SHA-256 with Nix32 encoding +### BLAKE3 ```json -{{#include schema/hash-v1/sha256-nix32.json}} -``` - -### BLAKE3 with Base64 encoding - -```json -{{#include schema/hash-v1/blake3-base64.json}} +{{#include schema/hash-v1/blake3-base16.json}} ```