1
0
Fork 1
mirror of https://gitlab.postmarketos.org/postmarketOS/pmbootstrap.git synced 2025-07-13 19:39:51 +03:00

pmb.helpers.other: drop old migration code (MR 2395)

Get rid of 3 years and older migration code, so we don't need to
maintain it anymore. If the user should have run "pmbootstrap init" 3
years ago and suddenly upgrades to pmbootstrap v3, then they will just
need to delete their work dir (as pmbootstrap instructs to do) and start
over. This is fine, the work dir is just a bunch of caches and locally
built packages.
This commit is contained in:
Oliver Smith 2024-09-01 15:51:59 +02:00
parent 479bad049f
commit 652d1a1afd
No known key found for this signature in database
GPG key ID: 5AE7F5513E0885CB

View file

@ -1,7 +1,6 @@
# Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later
from pmb.core.context import get_context
from pmb.core.arch import Arch
from pmb.helpers import logging
import os
from pathlib import Path
@ -95,149 +94,6 @@ def migrate_work_folder():
" (from version " + str(current) + " to " + str(required) + ")!"
)
# 0 => 1
if current == 0:
# Ask for confirmation
logging.info("Changelog:")
logging.info("* Building chroots have a different username (#709)")
logging.info("Migration will do the following:")
logging.info("* Zap your chroots")
logging.info(f"* Adjust '{context.config.work / 'config_abuild/abuild.conf'}'")
if not pmb.helpers.cli.confirm():
raise RuntimeError("Aborted.")
# Zap and update abuild.conf
pmb.chroot.zap(False)
conf = context.config.work / "config_abuild/abuild.conf"
if os.path.exists(conf):
pmb.helpers.run.root(["sed", "-i", "s./home/user/./home/pmos/.g", conf])
# Update version file
migrate_success(context.config.work, 1)
current = 1
# 1 => 2
if current == 1:
# Ask for confirmation
logging.info("Changelog:")
logging.info("* Fix: cache_distfiles was writable for everyone")
logging.info("Migration will do the following:")
logging.info(f"* Fix permissions of '{context.config.work / 'cache_distfiles'}'")
if not pmb.helpers.cli.confirm():
raise RuntimeError("Aborted.")
# Fix permissions
dir = "/var/cache/distfiles"
for cmd in [
["chown", "-R", "root:abuild", dir],
["chmod", "-R", "664", dir],
["chmod", "a+X", dir],
]:
pmb.chroot.root(cmd)
migrate_success(context.config.work, 2)
current = 2
if current == 2:
# Ask for confirmation
logging.info("Changelog:")
logging.info("* Device chroots have a different user UID (#1576)")
logging.info("Migration will do the following:")
logging.info("* Zap your chroots")
if not pmb.helpers.cli.confirm():
raise RuntimeError("Aborted.")
# Zap chroots
pmb.chroot.zap(False)
# Update version file
migrate_success(context.config.work, 3)
current = 3
if current == 3:
# Ask for confirmation
path = context.config.work / "cache_git"
logging.info("Changelog:")
logging.info("* pmbootstrap clones repositories with host system's")
logging.info(" 'git' instead of using it from an Alpine chroot")
logging.info("Migration will do the following:")
logging.info("* Check if 'git' is installed")
logging.info(f"* Change ownership to your user: {path}")
if not pmb.helpers.cli.confirm():
raise RuntimeError("Aborted.")
# Require git, set cache_git ownership
pmb.config.init.require_programs()
if os.path.exists(path):
uid_gid = f"{os.getuid()}:{os.getgid()}"
pmb.helpers.run.root(["chown", "-R", uid_gid, path])
else:
os.makedirs(path, 0o700, True)
# Update version file
migrate_success(context.config.work, 4)
current = 4
if current == 4:
# Ask for confirmation
logging.info("Changelog:")
logging.info("* packages built by pmbootstrap are in a channel subdir")
logging.info("Migration will do the following:")
logging.info("* Move existing packages to edge subdir (if any)")
logging.info("* Zap your chroots")
if not pmb.helpers.cli.confirm():
raise RuntimeError("Aborted.")
# Zap chroots
pmb.chroot.zap(False)
# Move packages to edge subdir
edge_path = context.config.work / "packages/edge"
pmb.helpers.run.root(["mkdir", "-p", edge_path])
for arch in Arch.supported():
old_path = context.config.work / "packages" / arch
new_path = edge_path / arch
if old_path.exists():
if new_path.exists():
raise RuntimeError(
f"Won't move '{old_path}' to"
f" '{new_path}', destination already"
" exists! Consider 'pmbootstrap zap -p'"
f" to delete '{context.config.work}/packages'."
)
pmb.helpers.run.root(["mv", old_path, new_path])
pmb.helpers.run.root(["chown", pmb.config.chroot_uid_user, edge_path])
# Update version file
migrate_success(context.config.work, 5)
current = 5
if current == 5:
# Ask for confirmation
logging.info("Changelog:")
logging.info("* besides edge, pmaports channels have the same name")
logging.info(" as the branch now (pmbootstrap#2015)")
logging.info("Migration will do the following:")
logging.info("* Zap your chroots")
logging.info("* Adjust subdirs of your locally built packages dir:")
logging.info(f" {context.config.work}/packages")
logging.info(" stable => v20.05")
logging.info(" stable-next => v21.03")
if not pmb.helpers.cli.confirm():
raise RuntimeError("Aborted.")
# Zap chroots to avoid potential "ERROR: Chroot 'native' was created
# for the 'stable' channel, but you are on the 'v20.05' channel now."
pmb.chroot.zap(False)
# Migrate
packages_dir = f"{context.config.work}/packages"
for old, new in pmb.config.pmaports_channels_legacy.items():
if os.path.exists(f"{packages_dir}/{old}"):
pmb.helpers.run.root(["mv", old, new], packages_dir)
# Update version file
migrate_success(context.config.work, 6)
current = 6
if current == 6:
# Ask for confirmation
logging.info("Changelog:")