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.
This commit is contained in:
parent
446a8fc430
commit
4b91b1c00c
|
@ -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
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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")
|
||||
|
|
Loading…
Reference in New Issue