Compare commits

...

1 Commits

Author SHA1 Message Date
Alexey Min 4b91b1c00c
kconfig migrate: new option to migrate kernel configs
With this option you can run

$ pmbootstrap kconfig migrate --arch <arch> linux-postmarketos-xxx-xxx

to perform safe kconfig upgrades between kernel releases.

"make oldconfig" will ask question for every new/renamed kconfig option,
so you have no chance to miss anything.
2021-10-03 17:18:56 +03:00
3 changed files with 32 additions and 14 deletions

View File

@ -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

View File

@ -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):

View File

@ -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")