mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-11-04 22:40:12 +01:00
Detect apk cache changes to avoid having to blow the whole thing
This commit is contained in:
parent
75aa384e80
commit
b5ed40684f
@ -421,14 +421,30 @@ def scan_apks(apps, apkcache, repodir, knownapks):
|
||||
logging.critical("Spaces in filenames are not allowed.")
|
||||
sys.exit(1)
|
||||
|
||||
if apkfilename in apkcache:
|
||||
logging.debug("Reading " + apkfilename + " from cache")
|
||||
thisinfo = apkcache[apkfilename]
|
||||
# Calculate the sha256...
|
||||
sha = hashlib.sha256()
|
||||
with open(apkfile, 'rb') as f:
|
||||
while True:
|
||||
t = f.read(16384)
|
||||
if len(t) == 0:
|
||||
break
|
||||
sha.update(t)
|
||||
shasum = sha.hexdigest()
|
||||
|
||||
else:
|
||||
usecache = False
|
||||
if apkfilename in apkcache:
|
||||
thisinfo = apkcache[apkfilename]
|
||||
if thisinfo['sha256'] == shasum:
|
||||
logging.debug("Reading " + apkfilename + " from cache")
|
||||
usecache = True
|
||||
else:
|
||||
logging.debug("Ignoring stale cache data for " + apkfilename)
|
||||
|
||||
if not usecache:
|
||||
logging.debug("Processing " + apkfilename)
|
||||
thisinfo = {}
|
||||
thisinfo['apkname'] = apkfilename
|
||||
thisinfo['sha256'] = shasum
|
||||
srcfilename = apkfilename[:-4] + "_src.tar.gz"
|
||||
if os.path.exists(os.path.join(repodir, srcfilename)):
|
||||
thisinfo['srcname'] = srcfilename
|
||||
@ -514,16 +530,6 @@ def scan_apks(apps, apkcache, repodir, knownapks):
|
||||
if common.isApkDebuggable(apkfile, config):
|
||||
logging.warn('{0} is set to android:debuggable="true"'.format(apkfile))
|
||||
|
||||
# Calculate the sha256...
|
||||
sha = hashlib.sha256()
|
||||
with open(apkfile, 'rb') as f:
|
||||
while True:
|
||||
t = f.read(1024)
|
||||
if len(t) == 0:
|
||||
break
|
||||
sha.update(t)
|
||||
thisinfo['sha256'] = sha.hexdigest()
|
||||
|
||||
# Get the signature (or md5 of, to be precise)...
|
||||
thisinfo['sig'] = getsig(os.path.join(os.getcwd(), apkfile))
|
||||
if not thisinfo['sig']:
|
||||
|
Loading…
Reference in New Issue
Block a user