1
0
Fork 1
mirror of https://gitlab.postmarketos.org/postmarketOS/pmbootstrap.git synced 2025-07-13 11:29:46 +03:00

pmb.config.init: prompt for pmaports path (MR 2502)

Allows easily using an existing checkout. The default path remains the
same.

Fixes: https://gitlab.postmarketos.org/postmarketOS/pmbootstrap/-/issues/2506
[ci:skip-build]: already built successfully in CI
This commit is contained in:
Hugo Osvaldo Barrera 2024-11-26 11:38:06 +01:00 committed by Newbyte
parent aed6c7f61e
commit c2bcc81589
No known key found for this signature in database
GPG key ID: ACD854892B38D898

View file

@ -150,6 +150,45 @@ def ask_for_work_path(default: Path | None) -> tuple[Path, bool]:
) )
def ask_for_pmaports_path(default: Path) -> Path:
"""Ask for a path for pmaports, until it can either be created or already exists.
:returns: full path to the directory, with a leading ~ expanded.
"""
logging.info("Location of the 'pmaports' path, containing package definitions.")
while True:
try:
raw = os.path.expanduser(
pmb.helpers.cli.ask(
"pmaports path",
None,
str(default),
False,
)
)
path = Path(raw).resolve()
if path.is_relative_to(pmb.config.pmb_src):
logging.error(
"ERROR: The pmaports path must not be inside the"
" pmbootstrap path. Please specify another location."
)
continue
if not path.exists():
try:
path.parent.mkdir(0o700, parents=True, exist_ok=True)
except Exception as e:
logging.error("ERROR: Could not create parent directories: %s", str(e))
continue
return path
except OSError:
logging.fatal(
"ERROR: Could not create this folder, or write inside it! Please try again."
)
def ask_for_channel(config: Config) -> str: def ask_for_channel(config: Config) -> str:
"""Ask for the postmarketOS release channel. """Ask for the postmarketOS release channel.
The channel dictates, which pmaports branch pmbootstrap will check out, The channel dictates, which pmaports branch pmbootstrap will check out,
@ -714,6 +753,8 @@ def frontend(args: PmbArgs) -> None:
if using_default_pmaports: if using_default_pmaports:
config.aports = [config.work / "cache_git/pmaports"] config.aports = [config.work / "cache_git/pmaports"]
config.aports[-1] = ask_for_pmaports_path(config.aports[-1])
# Update args and save config (so chroots and 'pmbootstrap log' work) # Update args and save config (so chroots and 'pmbootstrap log' work)
# pmb.helpers.args.update_work(args, config.work) # pmb.helpers.args.update_work(args, config.work)
pmb.config.save(args.config, config) pmb.config.save(args.config, config)