mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-09-13 22:42:29 +03:00
Merge branch 'apkcache_no_checksum' into 'master'
Use mtime and file size for apkcache See merge request fdroid/fdroidserver!1542
This commit is contained in:
commit
399ac608c7
1 changed files with 19 additions and 6 deletions
|
@ -316,6 +316,13 @@ def get_cache_file():
|
||||||
return os.path.join('tmp', 'apkcache.json')
|
return os.path.join('tmp', 'apkcache.json')
|
||||||
|
|
||||||
|
|
||||||
|
def get_cache_mtime():
|
||||||
|
apkcachefile = get_cache_file()
|
||||||
|
if os.path.exists(apkcachefile):
|
||||||
|
return os.stat(apkcachefile).st_mtime
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
def get_cache():
|
def get_cache():
|
||||||
"""Get the cached dict of the APK index.
|
"""Get the cached dict of the APK index.
|
||||||
|
|
||||||
|
@ -1853,7 +1860,7 @@ def scan_apk_androguard(apk, apkfile):
|
||||||
|
|
||||||
|
|
||||||
def process_apk(apkcache, apkfilename, repodir, knownapks, use_date_from_apk=False,
|
def process_apk(apkcache, apkfilename, repodir, knownapks, use_date_from_apk=False,
|
||||||
allow_disabled_algorithms=False, archive_bad_sig=False, apps=None):
|
allow_disabled_algorithms=False, archive_bad_sig=False, apps=None, cache_timestamp=0):
|
||||||
"""Process the apk with the given filename in the given repo directory.
|
"""Process the apk with the given filename in the given repo directory.
|
||||||
|
|
||||||
This also extracts the icons.
|
This also extracts the icons.
|
||||||
|
@ -1875,6 +1882,8 @@ def process_apk(apkcache, apkfilename, repodir, knownapks, use_date_from_apk=Fal
|
||||||
disabled algorithms in the signature (e.g. MD5)
|
disabled algorithms in the signature (e.g. MD5)
|
||||||
archive_bad_sig
|
archive_bad_sig
|
||||||
move APKs with a bad signature to the archive
|
move APKs with a bad signature to the archive
|
||||||
|
cache_timestamp
|
||||||
|
the timestamp of the cache file
|
||||||
|
|
||||||
Returns
|
Returns
|
||||||
-------
|
-------
|
||||||
|
@ -1888,7 +1897,8 @@ def process_apk(apkcache, apkfilename, repodir, knownapks, use_date_from_apk=Fal
|
||||||
usecache = False
|
usecache = False
|
||||||
if apkfilename in apkcache:
|
if apkfilename in apkcache:
|
||||||
apk = apkcache[apkfilename]
|
apk = apkcache[apkfilename]
|
||||||
if apk.get('hash') == common.sha256sum(apkfile):
|
stat = os.stat(apkfile)
|
||||||
|
if apk.get('size') == stat.st_size and stat.st_mtime < cache_timestamp:
|
||||||
logging.debug(_("Reading {apkfilename} from cache")
|
logging.debug(_("Reading {apkfilename} from cache")
|
||||||
.format(apkfilename=apkfilename))
|
.format(apkfilename=apkfilename))
|
||||||
usecache = True
|
usecache = True
|
||||||
|
@ -2007,7 +2017,7 @@ def process_apk(apkcache, apkfilename, repodir, knownapks, use_date_from_apk=Fal
|
||||||
return False, apk, cachechanged
|
return False, apk, cachechanged
|
||||||
|
|
||||||
|
|
||||||
def process_apks(apkcache, repodir, knownapks, use_date_from_apk=False, apps=None):
|
def process_apks(apkcache, repodir, knownapks, use_date_from_apk=False, apps=None, cache_timestamp=0):
|
||||||
"""Process the apks in the given repo directory.
|
"""Process the apks in the given repo directory.
|
||||||
|
|
||||||
This also extracts the icons.
|
This also extracts the icons.
|
||||||
|
@ -2022,6 +2032,8 @@ def process_apks(apkcache, repodir, knownapks, use_date_from_apk=False, apps=Non
|
||||||
b known apks info
|
b known apks info
|
||||||
use_date_from_apk
|
use_date_from_apk
|
||||||
use date from APK (instead of current date) for newly added APKs
|
use date from APK (instead of current date) for newly added APKs
|
||||||
|
cache_timestamp
|
||||||
|
the timestamp of the cache file
|
||||||
|
|
||||||
Returns
|
Returns
|
||||||
-------
|
-------
|
||||||
|
@ -2043,7 +2055,7 @@ def process_apks(apkcache, repodir, knownapks, use_date_from_apk=False, apps=Non
|
||||||
apkfilename = apkfile[len(repodir) + 1:]
|
apkfilename = apkfile[len(repodir) + 1:]
|
||||||
ada = disabled_algorithms_allowed()
|
ada = disabled_algorithms_allowed()
|
||||||
(skip, apk, cachethis) = process_apk(apkcache, apkfilename, repodir, knownapks,
|
(skip, apk, cachethis) = process_apk(apkcache, apkfilename, repodir, knownapks,
|
||||||
use_date_from_apk, ada, True, apps)
|
use_date_from_apk, ada, True, apps, cache_timestamp)
|
||||||
if skip:
|
if skip:
|
||||||
continue
|
continue
|
||||||
apks.append(apk)
|
apks.append(apk)
|
||||||
|
@ -2641,13 +2653,14 @@ def main():
|
||||||
|
|
||||||
# Get APK cache
|
# Get APK cache
|
||||||
apkcache = get_cache()
|
apkcache = get_cache()
|
||||||
|
cache_timestamp = get_cache_mtime()
|
||||||
|
|
||||||
# Delete builds for disabled apps
|
# Delete builds for disabled apps
|
||||||
delete_disabled_builds(apps, apkcache, repodirs)
|
delete_disabled_builds(apps, apkcache, repodirs)
|
||||||
|
|
||||||
# Scan all apks in the main repo
|
# Scan all apks in the main repo
|
||||||
apks, cachechanged = process_apks(apkcache, repodirs[0], knownapks,
|
apks, cachechanged = process_apks(apkcache, repodirs[0], knownapks,
|
||||||
options.use_date_from_apk, apps)
|
options.use_date_from_apk, apps, cache_timestamp)
|
||||||
|
|
||||||
files, fcachechanged = scan_repo_files(apkcache, repodirs[0], knownapks,
|
files, fcachechanged = scan_repo_files(apkcache, repodirs[0], knownapks,
|
||||||
options.use_date_from_apk)
|
options.use_date_from_apk)
|
||||||
|
@ -2716,7 +2729,7 @@ def main():
|
||||||
# Scan the archive repo for apks as well
|
# Scan the archive repo for apks as well
|
||||||
if len(repodirs) > 1:
|
if len(repodirs) > 1:
|
||||||
archapks, cc = process_apks(apkcache, repodirs[1], knownapks,
|
archapks, cc = process_apks(apkcache, repodirs[1], knownapks,
|
||||||
options.use_date_from_apk, apps)
|
options.use_date_from_apk, apps, cache_timestamp)
|
||||||
if cc:
|
if cc:
|
||||||
cachechanged = True
|
cachechanged = True
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue