Roll my my own bit_length function for Python 2.6 compatibility.

This commit is contained in:
Todd Gamblin 2016-10-06 02:06:56 -07:00
parent 222f551c37
commit f0edfa6edf
3 changed files with 11 additions and 4 deletions

View file

@ -40,7 +40,6 @@
import time
import string
import contextlib
from urlparse import urlparse
from StringIO import StringIO
import llnl.util.lock
@ -63,6 +62,7 @@
import spack.util.web
from spack.stage import Stage, ResourceStage, StageComposite
from spack.util.crypto import bit_length
from spack.util.environment import dump_environment
from spack.util.executable import ProcessError, which
from spack.version import *
@ -719,7 +719,7 @@ def prefix_lock(self):
if prefix not in Package.prefix_locks:
Package.prefix_locks[prefix] = llnl.util.lock.Lock(
spack.installed_db.prefix_lock_path,
self.spec.dag_hash_bit_prefix(sys.maxsize.bit_length()), 1)
self.spec.dag_hash_bit_prefix(bit_length(sys.maxsize)), 1)
self._prefix_lock = Package.prefix_locks[prefix]

View file

@ -41,7 +41,7 @@
import spack.fetch_strategy as fs
import spack.error
from spack.version import *
from spack.util.crypto import prefix_bits
from spack.util.crypto import prefix_bits, bit_length
STAGE_PREFIX = 'spack-stage-'
@ -161,7 +161,7 @@ def __init__(
if lock:
if self.name not in Stage.stage_locks:
sha1 = hashlib.sha1(self.name).digest()
lock_id = prefix_bits(sha1, sys.maxsize.bit_length())
lock_id = prefix_bits(sha1, bit_length(sys.maxsize))
stage_lock_path = join_path(spack.stage_path, '.lock')
Stage.stage_locks[self.name] = llnl.util.lock.Lock(

View file

@ -114,3 +114,10 @@ def prefix_bits(byte_array, bits):
result >>= (n - bits)
return result
def bit_length(num):
"""Number of bits required to represent an integer in binary."""
s = bin(num)
s = s.lstrip('-0b')
return len(s)