diff --git a/pmb/build/menuconfig.py b/pmb/build/menuconfig.py index a6edd1f2..bfa67493 100644 --- a/pmb/build/menuconfig.py +++ b/pmb/build/menuconfig.py @@ -78,12 +78,12 @@ def get_outputdir(args, pkgname, apkbuild): " template with: pmbootstrap aportgen " + pkgname) -def menuconfig(args, pkgname): +def menuconfig(args, pkgname, use_oldconfig): # Pkgname: allow omitting "linux-" prefix if pkgname.startswith("linux-"): pkgname_ = pkgname.split("linux-")[1] - logging.info("PROTIP: You can simply do 'pmbootstrap kconfig edit " + - pkgname_ + "'") + logging.info(f"PROTIP: You can simply do 'pmbootstrap kconfig " + f"{args.action_kconfig} {pkgname_}'") else: pkgname = "linux-" + pkgname @@ -99,18 +99,24 @@ def menuconfig(args, pkgname): pmb.build.init(args, suffix) if cross: pmb.build.init_compiler(args, [], cross, arch) + depends = apkbuild["makedepends"] - kopt = "menuconfig" copy_xauth = False - if args.xconfig: - depends += ["qt5-qtbase-dev", "font-noto"] - kopt = "xconfig" - copy_xauth = True - elif args.nconfig: - kopt = "nconfig" - depends += ["ncurses-dev"] + + if use_oldconfig: + kopt = "oldconfig" else: - depends += ["ncurses-dev"] + kopt = "menuconfig" + if args.xconfig: + depends += ["qt5-qtbase-dev", "font-noto"] + kopt = "xconfig" + copy_xauth = True + elif args.nconfig: + kopt = "nconfig" + depends += ["ncurses-dev"] + else: + depends += ["ncurses-dev"] + pmb.chroot.apk.install(args, depends) # Copy host's .xauthority into native diff --git a/pmb/helpers/frontend.py b/pmb/helpers/frontend.py index 3c3daa7a..2de52958 100644 --- a/pmb/helpers/frontend.py +++ b/pmb/helpers/frontend.py @@ -417,12 +417,13 @@ def kconfig(args): logging.info("NOTE: " + str(skipped) + " kernel(s) was skipped" " (consider 'pmbootstrap kconfig check -f')") logging.info("kconfig check succeeded!") - elif args.action_kconfig == "edit": + elif args.action_kconfig in ["edit", "migrate"]: if args.package: pkgname = args.package else: pkgname = args.deviceinfo["codename"] - pmb.build.menuconfig(args, pkgname) + use_oldconfig = args.action_kconfig == "migrate" + pmb.build.menuconfig(args, pkgname, use_oldconfig) def deviceinfo_parse(args): diff --git a/pmb/parse/arguments.py b/pmb/parse/arguments.py index 555332a6..9eafefbf 100644 --- a/pmb/parse/arguments.py +++ b/pmb/parse/arguments.py @@ -456,6 +456,17 @@ def arguments_kconfig(subparser): if argcomplete: edit_package.completer = kernel_completer + # "pmbootstrap kconfig migrate" + migrate = sub.add_parser("migrate", + help="Migrate kconfig from older version to " + "newer. Internally runs 'make oldconfig', " + "which asks question for every new kernel " + "config option.") + migrate.add_argument("--arch", choices=arch_choices, dest="arch") + migrate_package = migrate.add_argument("package", nargs='?') + if argcomplete: + migrate_package.completer = kernel_completer + def arguments_repo_missing(subparser): ret = subparser.add_parser("repo_missing")