mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-09-15 23:42:37 +03:00
checkupdates: work around multiple package ids
If there are multiple package ids in a build.gradle file and the first one we don't want, checkupdates would get stuck. Make it ignore any package id that we don't want so that it can get past that.
This commit is contained in:
parent
2de274326a
commit
3ace102bd5
3 changed files with 19 additions and 18 deletions
|
@ -80,15 +80,6 @@ def check_http(app):
|
|||
return (None, msg)
|
||||
|
||||
|
||||
def app_matches_packagename(app, package):
|
||||
if not package:
|
||||
return False
|
||||
appid = app['Update Check Name'] or app['id']
|
||||
if appid == "Ignore":
|
||||
return True
|
||||
return appid == package
|
||||
|
||||
|
||||
# Check for a new version by looking at the tags in the source repo.
|
||||
# Whether this can be used reliably or not depends on
|
||||
# the development procedures used by the project's developers. Use it with
|
||||
|
@ -153,8 +144,7 @@ def check_tags(app, pattern):
|
|||
else:
|
||||
root_dir = os.path.join(build_dir, subdir)
|
||||
paths = common.manifest_paths(root_dir, flavours)
|
||||
version, vercode, package = \
|
||||
common.parse_androidmanifests(paths, app['Update Check Ignore'])
|
||||
version, vercode, package = common.parse_androidmanifests(paths, app)
|
||||
if vercode:
|
||||
logging.debug("Manifest exists in subdir '{0}'. Found version {1} ({2})"
|
||||
.format(subdir, version, vercode))
|
||||
|
@ -223,8 +213,7 @@ def check_repomanifest(app, branch=None):
|
|||
else:
|
||||
root_dir = os.path.join(build_dir, subdir)
|
||||
paths = common.manifest_paths(root_dir, flavours)
|
||||
version, vercode, package = \
|
||||
common.parse_androidmanifests(paths, app['Update Check Ignore'])
|
||||
version, vercode, package = common.parse_androidmanifests(paths, app)
|
||||
if vercode:
|
||||
logging.debug("Manifest exists in subdir '{0}'. Found version {1} ({2})"
|
||||
.format(subdir, version, vercode))
|
||||
|
@ -332,8 +321,8 @@ def possible_subdirs(app):
|
|||
|
||||
for d in dirs_with_manifest(build_dir):
|
||||
m_paths = common.manifest_paths(d, flavours)
|
||||
package = common.parse_androidmanifests(m_paths, app['Update Check Ignore'])[2]
|
||||
if app_matches_packagename(app, package):
|
||||
package = common.parse_androidmanifests(m_paths, app)[2]
|
||||
if package is not None:
|
||||
subdir = os.path.relpath(d, build_dir)
|
||||
logging.debug("Adding possible subdir %s" % subdir)
|
||||
yield subdir
|
||||
|
|
|
@ -1012,11 +1012,21 @@ vnsearch_g = re.compile(r'.*versionName *=* *(["\'])((?:(?=(\\?))\3.)*?)\1.*').s
|
|||
psearch_g = re.compile(r'.*(packageName|applicationId) *=* *["\']([^"]+)["\'].*').search
|
||||
|
||||
|
||||
def app_matches_packagename(app, package):
|
||||
if not package:
|
||||
return False
|
||||
appid = app['Update Check Name'] or app['id']
|
||||
if appid == "Ignore":
|
||||
return True
|
||||
return appid == package
|
||||
|
||||
|
||||
# Extract some information from the AndroidManifest.xml at the given path.
|
||||
# Returns (version, vercode, package), any or all of which might be None.
|
||||
# All values returned are strings.
|
||||
def parse_androidmanifests(paths, ignoreversions=None):
|
||||
def parse_androidmanifests(paths, app):
|
||||
|
||||
ignoreversions = app['Update Check Ignore']
|
||||
ignoresearch = re.compile(ignoreversions).search if ignoreversions else None
|
||||
|
||||
if not paths:
|
||||
|
@ -1046,7 +1056,9 @@ def parse_androidmanifests(paths, ignoreversions=None):
|
|||
if not package:
|
||||
matches = psearch_g(line)
|
||||
if matches:
|
||||
package = matches.group(2)
|
||||
s = matches.group(2)
|
||||
if app_matches_packagename(app, s):
|
||||
package = s
|
||||
if not version:
|
||||
matches = vnsearch_g(line)
|
||||
if matches:
|
||||
|
|
|
@ -194,7 +194,7 @@ def main():
|
|||
paths = common.manifest_paths(root_dir, [])
|
||||
if paths:
|
||||
|
||||
version, vercode, package = common.parse_androidmanifests(paths)
|
||||
version, vercode, package = common.parse_androidmanifests(paths, app)
|
||||
if not package:
|
||||
logging.error("Couldn't find package ID")
|
||||
sys.exit(1)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue