pmbootstrap-meow/pmb/export/symlinks.py
Pablo Correa Gómez 527fc9359f
export: drop support for flavor in export
Official mkinitfs flavors were dropped long ago. v23.12 already
released with "supported_mkinitfs_without_flavors=True". So there is
no need to keep this around anymore. When we have initramfs and
kernels that have suffixes (e.g: from alpine), we already deal with
them.

Part-of: https://gitlab.postmarketos.org/postmarketOS/pmbootstrap/-/merge_requests/2621
2025-06-09 22:43:57 +02:00

68 lines
2.3 KiB
Python

# Copyright 2023 Oliver Smith
# SPDX-License-Identifier: GPL-3.0-or-later
from pmb.core.context import get_context
from pmb.helpers import logging
from pathlib import Path
import pmb.build
import pmb.chroot.apk
import pmb.flasher
import pmb.helpers.file
from pmb.core import Chroot, ChrootType
def symlinks(folder: Path) -> None:
"""
Create convenience symlinks to the rootfs and boot files.
"""
device = get_context().config.device
arch = pmb.parse.deviceinfo(device).arch
# File descriptions
info = {
"boot.img": ("Fastboot compatible boot.img file, contains initramfs and kernel"),
"dtbo.img": "Fastboot compatible dtbo image",
"initramfs": "Initramfs",
"initramfs-extra": "Extra initramfs files in /boot",
"uInitrd": "Initramfs, legacy u-boot image format",
"uImage": "Kernel, legacy u-boot image format",
"vmlinuz": "Linux kernel",
f"{device}.img": "Rootfs with partitions for /boot and /",
f"{device}-boot.img": "Boot partition image",
f"{device}-root.img": "Root partition image",
f"pmos-{device}.zip": "Android recovery flashable zip",
"lk2nd.img": "Secondary Android bootloader",
}
# Generate a list of patterns
chroot_native = Chroot.native()
path_boot = Chroot(ChrootType.ROOTFS, device) / "boot"
chroot_buildroot = Chroot.buildroot(arch)
files: list[Path] = [
path_boot / "boot.img",
path_boot / "uInitrd",
path_boot / "uImage",
path_boot / "dtbo.img",
chroot_native / "home/pmos/rootfs" / f"{device}.img",
chroot_native / "home/pmos/rootfs" / f"{device}-boot.img",
chroot_native / "home/pmos/rootfs" / f"{device}-root.img",
chroot_buildroot / "var/lib/postmarketos-android-recovery-installer" / f"pmos-{device}.zip",
path_boot / "lk2nd.img",
]
files += list(path_boot.glob("initramfs*"))
files += list(path_boot.glob("vmlinuz*"))
# Iterate through all files
for file in files:
basename = file.name
link = folder / basename
# Display a readable message
msg = " * " + basename
if basename in info:
msg += " (" + info[basename] + ")"
logging.info(msg)
pmb.helpers.file.symlink(file, link)