pmb: Look for device/* files in device/*/... instead (!1879)

In the future, device ports will be located in a subdirectory
below device/... (e.g. device/testing/device-...).
Replace all occurrences of device/* with a glob that checks the
subdirectories instead.

Note: To ensure that this always works properly we should also add some
checks that all devices are indeed located under one of the supported
subdirectories (i.e. testing/community/main).

Change the glob for pmaports to <aports>/**/APKBUILD.
This allows using subdirectories for organization outside of device/
as well.
This commit is contained in:
Minecrell 2020-02-26 12:13:26 +01:00 committed by Oliver Smith
parent c399ff81a1
commit fb8de5a553
No known key found for this signature in database
GPG key ID: 5AE7F5513E0885CB
20 changed files with 62 additions and 40 deletions

View file

@ -5,6 +5,24 @@ import glob
import pmb.parse
def find_path(args, codename, file=''):
"""
Find path to device APKBUILD under `device/*/device-`.
:param codename: device codename
:param file: file to look for (e.g. APKBUILD or deviceinfo), may be empty
:returns: path to APKBUILD
"""
g = glob.glob(args.aports + "/device/*/device-" + codename + '/' + file)
if not g:
return None
if len(g) != 1:
raise RuntimeError(codename + " found multiple times in the device"
" subdirectory of pmaports")
return g[0]
def list_codenames(args, vendor=None):
"""
Get all devices, for which aports are available
@ -12,7 +30,7 @@ def list_codenames(args, vendor=None):
:returns: ["first-device", "second-device", ...]
"""
ret = []
for path in glob.glob(args.aports + "/device/device-*"):
for path in glob.glob(args.aports + "/device/*/device-*"):
device = os.path.basename(path).split("-", 1)[1]
if (vendor is None) or device.startswith(vendor + '-'):
ret.append(device)
@ -25,7 +43,7 @@ def list_vendors(args):
:returns: {"vendor1", "vendor2", ...}
"""
ret = set()
for path in glob.glob(args.aports + "/device/device-*"):
for path in glob.glob(args.aports + "/device/*/device-*"):
vendor = os.path.basename(path).split("-", 2)[1]
ret.add(vendor)
return ret
@ -37,7 +55,7 @@ def list_apkbuilds(args):
"""
ret = {}
for device in list_codenames(args):
apkbuild_path = args.aports + "/device/device-" + device + "/APKBUILD"
apkbuild_path = args.aports + "/device/*/device-" + device + "/APKBUILD"
ret[device] = pmb.parse.apkbuild(args, apkbuild_path)
return ret