From 59f5d19dfeffeacf9a33ffbece13d2dc76c7588b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Daniel=20Mart=C3=AD?= Date: Sat, 3 Oct 2015 16:52:23 -0700 Subject: [PATCH] Rework path glob expansion Slightly simplifies the whole thing and lets us map what each resulting path comes from. This will be useful to fix #110 later on. --- fdroidserver/common.py | 23 +++++++++++++++++------ fdroidserver/scanner.py | 4 ++-- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/fdroidserver/common.py b/fdroidserver/common.py index a79a4fe4..1e3e7639 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -1383,7 +1383,7 @@ def prepare_source(vcs, app, build, build_dir, srclib_dir, extlib_dir, onserver= # Delete unwanted files if build['rm']: logging.info("Removing specified files") - for part in getpaths(build_dir, build, 'rm'): + for part in getpaths(build_dir, build['rm']): dest = os.path.join(build_dir, part) logging.info("Removing {0}".format(part)) if os.path.lexists(dest): @@ -1462,14 +1462,25 @@ def prepare_source(vcs, app, build, build_dir, srclib_dir, extlib_dir, onserver= return (root_dir, srclibpaths) -# Split and extend via globbing the paths from a field -def getpaths(build_dir, build, field): - paths = [] - for p in build[field]: +# Extend via globbing the paths from a field and return them as a map from +# original path to resulting paths +def getpaths_map(build_dir, globpaths): + paths = dict() + for p in globpaths: p = p.strip() full_path = os.path.join(build_dir, p) full_path = os.path.normpath(full_path) - paths += [r[len(build_dir) + 1:] for r in glob.glob(full_path)] + paths[p] = [r[len(build_dir) + 1:] for r in glob.glob(full_path)] + return paths + + +# Extend via globbing the paths from a field and return them as a set +def getpaths(build_dir, globpaths): + paths_map = getpaths_map(build_dir, globpaths) + paths = set() + for k, v in paths_map.iteritems(): + for p in v: + paths.add(p) return paths diff --git a/fdroidserver/scanner.py b/fdroidserver/scanner.py index 7f6d7d91..f71120e3 100644 --- a/fdroidserver/scanner.py +++ b/fdroidserver/scanner.py @@ -72,8 +72,8 @@ def scan_source(build_dir, root_dir, thisbuild): if r.match(s): yield n - scanignore = common.getpaths(build_dir, thisbuild, 'scanignore') - scandelete = common.getpaths(build_dir, thisbuild, 'scandelete') + scanignore = common.getpaths(build_dir, thisbuild['scanignore']) + scandelete = common.getpaths(build_dir, thisbuild['scandelete']) scanignore_worked = set() scandelete_worked = set() -- 2.30.2