If hashes do not match, print them in base-32 for SHA-1/SHA-256
Fixes #57.
This commit is contained in:
parent
a28b4445a4
commit
4c34d384e6
3 changed files with 10 additions and 1 deletions
|
@ -2228,7 +2228,7 @@ void DerivationGoal::computeClosure()
|
||||||
if (h != h2)
|
if (h != h2)
|
||||||
throw BuildError(
|
throw BuildError(
|
||||||
format("output path `%1%' should have %2% hash `%3%', instead has `%4%'")
|
format("output path `%1%' should have %2% hash `%3%', instead has `%4%'")
|
||||||
% path % i->second.hashAlgo % printHash(h) % printHash(h2));
|
% path % i->second.hashAlgo % printHash16or32(h) % printHash16or32(h2));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get rid of all weird permissions. */
|
/* Get rid of all weird permissions. */
|
||||||
|
|
|
@ -153,6 +153,12 @@ string printHash32(const Hash & hash)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
string printHash16or32(const Hash & hash)
|
||||||
|
{
|
||||||
|
return hash.type == htMD5 ? printHash(hash) : printHash32(hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static bool mul(unsigned char * bytes, unsigned char y, int maxSize)
|
static bool mul(unsigned char * bytes, unsigned char y, int maxSize)
|
||||||
{
|
{
|
||||||
unsigned char carry = 0;
|
unsigned char carry = 0;
|
||||||
|
|
|
@ -54,6 +54,9 @@ unsigned int hashLength32(const Hash & hash);
|
||||||
/* Convert a hash to a base-32 representation. */
|
/* Convert a hash to a base-32 representation. */
|
||||||
string printHash32(const Hash & hash);
|
string printHash32(const Hash & hash);
|
||||||
|
|
||||||
|
/* Print a hash in base-16 if it's MD5, or base-32 otherwise. */
|
||||||
|
string printHash16or32(const Hash & hash);
|
||||||
|
|
||||||
/* Parse a base-32 representation of a hash code. */
|
/* Parse a base-32 representation of a hash code. */
|
||||||
Hash parseHash32(HashType ht, const string & s);
|
Hash parseHash32(HashType ht, const string & s);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue