From 132d6f2c2419891b92870c61c599a5e6aa97c865 Mon Sep 17 00:00:00 2001 From: Carlo Nucera Date: Wed, 3 Jun 2020 16:08:32 -0400 Subject: [PATCH] Clarify the description of StorePath construction --- src/libstore/store-api.cc | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/libstore/store-api.cc b/src/libstore/store-api.cc index 095363d0c..e5492ce34 100644 --- a/src/libstore/store-api.cc +++ b/src/libstore/store-api.cc @@ -69,7 +69,7 @@ string storePathToHash(const Path & path) /* Store paths have the following form: - /- + = /- where @@ -93,11 +93,14 @@ string storePathToHash(const Path & path) = one of: "text:::..." for plain text files written to the store using - addTextToStore(); ... are the references of the - path. - "source" + addTextToStore(); ... are the store paths referenced + by this path, in the form described by + "source:::...::self" for paths copied to the store using addToStore() when recursive - = true and hashAlgo = "sha256" + = true and hashAlgo = "sha256". Just like in the text case, we + can have the store paths referenced by the path. + Additionally, we can have an optional :self label to denote self + reference. "output:" for either the outputs created by derivations, OR paths copied to the store using addToStore() with recursive != true or @@ -125,6 +128,12 @@ string storePathToHash(const Path & path) the contents of the path (or expected contents of the path for fixed-output derivations) + Note that since an output derivation has always type output, while + something added by addToStore can have type output or source depending + on the hash, this means that the same input can be hashed differently + if added to the store via addToStore or via a derivation, in the sha256 + recursive case. + It would have been nicer to handle fixed-output derivations under "source", e.g. have something like "source:", but we're stuck with this for now...