[fb-hgext] use hashlib to compute sha1 hashes

Summary:
hg-crew's c27dc3c3122 and c27dc3c3122^ were breaking our extensions:

```
$ hg log -r c27dc3c3122^
changeset:   9010734b79911d2d2e7405d91a4df479b35b3841
user:        Augie Fackler <raf@durin42.com>
date:        Thu, 09 Jun 2016 21:12:33 -0700
s.ummary:     cleanup: replace uses of util.(md5|sha1|sha256|sha512) with hashlib.\1
```

```
$ hg log -r c27dc3c3122
changeset:   0d55a7b8d07bf948c935822e6eea85b044383f00
user:        Augie Fackler <raf@durin42.com>
date:        Thu, 09 Jun 2016 21:13:23 -0700
s.ummary:     util: drop local aliases for md5, sha1, sha256, and sha512
```

I did a grep over facebook-hg-rpms to see what was affected:
```
$ grep "util.\(md5\|sha1\|sha256\|sha512\)" -r ~/facebook-hg-rpms
/home/jeroenv/facebook-hg-rpms/remotefilelog/remotefilelog/basestore.py:            sha = util.sha1(filename).digest()
/home/jeroenv/facebook-hg-rpms/remotefilelog/remotefilelog/basestore.py:                sha = util.sha1(filename).digest()
/home/jeroenv/facebook-hg-rpms/remotefilelog/remotefilelog/shallowutil.py:    pathhash = util.sha1(file).hexdigest()
/home/jeroenv/facebook-hg-rpms/remotefilelog/remotefilelog/shallowutil.py:    pathhash = util.sha1(file).hexdigest()
/home/jeroenv/facebook-hg-rpms/remotefilelog/remotefilelog/debugcommands.py:    filekey = util.sha1(file).hexdigest()
/home/jeroenv/facebook-hg-rpms/remotefilelog/remotefilelog/historypack.py:        namehash = util.sha1(name).digest()
/home/jeroenv/facebook-hg-rpms/remotefilelog/remotefilelog/historypack.py:        node = util.sha1(filename).digest()
/home/jeroenv/facebook-hg-rpms/remotefilelog/remotefilelog/historypack.py:        files = ((util.sha1(filename).digest(), offset, size)
/home/jeroenv/facebook-hg-rpms/remotefilelog/remotefilelog/fileserverclient.py:    pathhash = util.sha1(file).hexdigest()
/home/jeroenv/facebook-hg-rpms/remotefilelog/remotefilelog/fileserverclient.py:    pathhash = util.sha1(file).hexdigest()
/home/jeroenv/facebook-hg-rpms/remotefilelog/remotefilelog/basepack.py:        self.sha = util.sha1()
/home/jeroenv/facebook-hg-rpms/remotefilelog/tests/test-datapack.py:        return util.sha1(content).digest()
/home/jeroenv/facebook-hg-rpms/remotefilelog/tests/test-histpack.py:        return util.sha1(content).digest()
Binary file /home/jeroenv/facebook-hg-rpms/hg-crew/.hg/store/data/mercurial/revlog.py.i matches
Binary file /home/jeroenv/facebook-hg-rpms/hg-crew/.hg/store/data/contrib/mercurial.spec.i matches
/home/jeroenv/facebook-hg-rpms/hg-crew/contrib/mercurial.spec:%global docutilsmd5 4622263b62c5c771c03502afa3157768
/home/jeroenv/facebook-hg-rpms/hg-crew/contrib/buildrpm:    DOCUTILSMD5=`sed -ne "s/^%global docutilsmd5 //p" $specfile`
/home/jeroenv/facebook-hg-rpms/fb-hgext/sparse.py:            return util.sha1(fh.read()).hexdigest()
/home/jeroenv/facebook-hg-rpms/fb-hgext/sparse.py:        sha1 = util.sha1()
/home/jeroenv/facebook-hg-rpms/fb-hgext/sparse.py:        sha1 = util.sha1()
/home/jeroenv/facebook-hg-rpms/fb-hgext/sparse.py:        sha1 = util.sha1()
/home/jeroenv/facebook-hg-rpms/fb-hgext/sparse.py:    sha1 = util.sha1()
/home/jeroenv/facebook-hg-rpms/mutable-history/hgext/simple4server.py:        sha = util.sha1()
/home/jeroenv/facebook-hg-rpms/mutable-history/hgext/evolve.py:        sha = util.sha1()
```

This diff is part of the fix.

Test Plan:
Ran the tests.
```
$MERCURIALRUNTEST -S -j 48 --with-hg ~/local/facebook-hg-rpms/hg-crew/hg
```
There was still one failure, but that's due to the fact that my locally built hg does not have lz4revlog.

Reviewers: #sourcecontrol, durham, ttung

Reviewed By: ttung

Subscribers: mjpieters

Differential Revision: https://phabricator.intern.facebook.com/D3438597

Tasks: 11762191

Signature: t1:3438597:1466016473:d33de5a2c772d17724429d3607e2400c85618c71
This commit is contained in:
Jeroen Vaelen 2016-06-15 12:05:38 -07:00
parent b9e78ae8c1
commit f10fd61efd

View File

@ -14,7 +14,7 @@ from mercurial import match as matchmod
from mercurial import merge as mergemod
from mercurial.node import nullid
from mercurial.i18n import _
import errno, os, re, collections
import errno, os, re, collections, hashlib
cmdtable = {}
command = cmdutil.command(cmdtable)
@ -442,7 +442,7 @@ def _wraprepo(ui, repo):
def sparsechecksum(self, filepath):
fh = open(filepath)
return util.sha1(fh.read()).hexdigest()
return hashlib.sha1(fh.read()).hexdigest()
def _sparsesignature(self, includetemp=True):
"""Returns the signature string representing the contents of the
@ -874,7 +874,7 @@ class forceincludematcher(object):
return False
def hash(self):
sha1 = util.sha1()
sha1 = hashlib.sha1()
sha1.update(_hashmatcher(self._matcher))
for include in sorted(self._includes):
sha1.update(include + '\0')
@ -907,7 +907,7 @@ class unionmatcher(object):
return False
def hash(self):
sha1 = util.sha1()
sha1 = hashlib.sha1()
for m in self._matchers:
sha1.update(_hashmatcher(m))
return sha1.hexdigest()
@ -932,7 +932,7 @@ class negatematcher(object):
return True
def hash(self):
sha1 = util.sha1()
sha1 = hashlib.sha1()
sha1.update('negate')
sha1.update(_hashmatcher(self._matcher))
return sha1.hexdigest()
@ -941,7 +941,7 @@ def _hashmatcher(matcher):
if util.safehasattr(matcher, 'hash'):
return matcher.hash()
sha1 = util.sha1()
sha1 = hashlib.sha1()
if util.safehasattr(matcher, 'includepat'):
sha1.update(matcher.includepat)
sha1.update('\0\0')