pmb.config.pmaports: don't add to args (MR 1912)

Do not make the parsed pmaports.cfg from pmaports.git available as
args.pmaports anymore. This de-bloats the args variable a bit.

First I thought that we didn't even need to cache it, but it was pointed
out that later patches do access it frequently to read the current channel
from pmaports.cfg. Therefore it is using a cache now.

Related: #1879, #1855
This commit is contained in:
Oliver Smith 2020-04-09 21:22:17 +02:00
parent b015273d86
commit fc5cb2e190
No known key found for this signature in database
GPG Key ID: 5AE7F5513E0885CB
2 changed files with 21 additions and 14 deletions

View File

@ -49,9 +49,8 @@ def symlink(args):
logging.info("NOTE: pmaports path: " + args.aports)
def check_version_pmaports(args):
def check_version_pmaports(real):
# Compare versions
real = args.pmaports["version"]
min = pmb.config.pmaports_min_version
if pmb.parse.version.compare(real, min) >= 0:
return
@ -62,10 +61,9 @@ def check_version_pmaports(args):
raise RuntimeError("Run 'pmbootstrap pull' to update your pmaports.")
def check_version_pmbootstrap(args):
def check_version_pmbootstrap(min):
# Compare versions
real = pmb.config.version
min = args.pmaports["pmbootstrap_min_version"]
if pmb.parse.version.compare(real, min) >= 0:
return
@ -87,8 +85,13 @@ def check_version_pmbootstrap(args):
" of pmbootstrap from git.")
def read_config_into_args(args):
""" Read and verify pmaports.cfg, add the contents to args.pmaports_cfg """
def read_config(args):
""" Read and verify pmaports.cfg. """
# Try cache first
cache_key = "pmb.config.pmaports.read_config"
if args.cache[cache_key]:
return args.cache[cache_key]
# Migration message
if not os.path.exists(args.aports):
raise RuntimeError("We have split the aports repository from the"
@ -101,14 +104,18 @@ def read_config_into_args(args):
raise RuntimeError("Invalid pmaports repository, could not find the"
" config: " + path_cfg)
# Load the config into args.pmaports
# Load the config
cfg = configparser.ConfigParser()
cfg.read(path_cfg)
setattr(args, "pmaports", cfg["pmaports"])
ret = cfg["pmaports"]
# Version checks
check_version_pmaports(args)
check_version_pmbootstrap(args)
check_version_pmaports(ret["version"])
check_version_pmbootstrap(ret["pmbootstrap_min_version"])
# Cache and return
args.cache[cache_key] = ret
return ret
def init(args):
@ -116,4 +123,4 @@ def init(args):
if not os.path.exists(args.aports):
clone(args)
symlink(args)
read_config_into_args(args)
read_config(args)

View File

@ -63,7 +63,6 @@ import pmb.helpers.git
Examples:
args.deviceinfo (e.g. {"name": "Mydevice", "arch": "armhf", ...})
args.pmaports (e.g. {"version": "1", "branch_alpine": "edge", ...})
"""
@ -133,7 +132,8 @@ def add_cache(args):
"pmb.helpers.package.depends_recurse": {},
"pmb.helpers.package.get": {},
"pmb.helpers.repo.update": repo_update,
"pmb.helpers.git.parse_channels_cfg": {}})
"pmb.helpers.git.parse_channels_cfg": {},
"pmb.config.pmaports.read_config": None})
def add_deviceinfo(args):
@ -162,7 +162,7 @@ def init(args):
check_pmaports_path(args)
if args.action not in ["init", "config", "bootimg_analyze", "log",
"pull", "shutdown", "zap"]:
pmb.config.pmaports.read_config_into_args(args)
pmb.config.pmaports.read_config(args)
add_deviceinfo(args)
pmb.helpers.git.parse_channels_cfg(args)