diff --git a/pmb/build/_package.py b/pmb/build/_package.py index f031bf2c..bd3ff7cf 100644 --- a/pmb/build/_package.py +++ b/pmb/build/_package.py @@ -280,7 +280,7 @@ def override_source(args: PmbArgs, apkbuild, pkgver, src, chroot: Chroot=Chroot. # Mount source in chroot mount_path = "/mnt/pmbootstrap/source-override/" mount_path_outside = chroot / mount_path - pmb.helpers.mount.bind(args, src, mount_path_outside, umount=True) + pmb.helpers.mount.bind(src, mount_path_outside, umount=True) # Delete existing append file append_path = "/tmp/APKBUILD.append" @@ -337,14 +337,14 @@ def override_source(args: PmbArgs, apkbuild, pkgver, src, chroot: Chroot=Chroot. pmb.chroot.user(args, ["mv", append_path + "_", apkbuild_path], chroot) -def mount_pmaports(args: PmbArgs, destination, chroot: Chroot=Chroot.native()): +def mount_pmaports(destination, chroot: Chroot=Chroot.native()): """ Mount pmaports.git in chroot. :param destination: mount point inside the chroot """ outside_destination = chroot / destination - pmb.helpers.mount.bind(args, args.aports, outside_destination, umount=True) + pmb.helpers.mount.bind(args.aports, outside_destination, umount=True) def link_to_git_dir(args: PmbArgs, suffix): diff --git a/pmb/build/envkernel.py b/pmb/build/envkernel.py index 6f41394b..ff002157 100644 --- a/pmb/build/envkernel.py +++ b/pmb/build/envkernel.py @@ -129,7 +129,7 @@ def run_abuild(args: PmbArgs, pkgname: str, arch: str, apkbuild_path: Path, kbui # development, making it easy to quickly sideload a new kernel or pmbootstrap # to create a boot image. - pmb.helpers.mount.bind(args, Path("."), chroot / "mnt/linux") + pmb.helpers.mount.bind(Path("."), chroot / "mnt/linux") if not os.path.exists(chroot / kbuild_out_source): raise RuntimeError("No '.output' dir found in your kernel source dir. " @@ -164,7 +164,7 @@ def run_abuild(args: PmbArgs, pkgname: str, arch: str, apkbuild_path: Path, kbui pmb.chroot.user(args, cmd, working_dir=build_path, env=env) # Clean up bindmount - pmb.helpers.mount.umount_all(args, chroot / "mnt/linux") + pmb.helpers.mount.umount_all(chroot / "mnt/linux") # Clean up symlinks if kbuild_out != "": @@ -211,6 +211,6 @@ def package_kernel(args: PmbArgs): try: run_abuild(args, pkgname, arch, apkbuild_path, kbuild_out) except Exception as e: - pmb.helpers.mount.umount_all(args, Chroot.native() / "mnt/linux") + pmb.helpers.mount.umount_all(Chroot.native() / "mnt/linux") raise e pmb.build.other.index_repo(args, arch) diff --git a/pmb/chroot/init.py b/pmb/chroot/init.py index 61d75944..a57aabb6 100644 --- a/pmb/chroot/init.py +++ b/pmb/chroot/init.py @@ -65,7 +65,7 @@ def setup_qemu_emulation(args: PmbArgs, chroot: Chroot): # mount --bind the qemu-user binary pmb.chroot.binfmt.register(args, arch) - pmb.helpers.mount.bind_file(args, Chroot.native() / f"/usr/bin/qemu-{arch_qemu}", + pmb.helpers.mount.bind_file(Chroot.native() / f"/usr/bin/qemu-{arch_qemu}", chroot / f"usr/bin/qemu-{arch_qemu}-static", create_folders=True) diff --git a/pmb/chroot/mount.py b/pmb/chroot/mount.py index 20d3bcc7..fca70b53 100644 --- a/pmb/chroot/mount.py +++ b/pmb/chroot/mount.py @@ -94,13 +94,13 @@ def mount(args: PmbArgs, chroot: Chroot=Chroot.native()): for source, target in mountpoints.items(): target_outer = chroot / target #raise RuntimeError("test") - pmb.helpers.mount.bind(args, source, target_outer) + pmb.helpers.mount.bind(source, target_outer) def mount_native_into_foreign(args: PmbArgs, chroot: Chroot): source = Chroot.native().path target = chroot / "native" - pmb.helpers.mount.bind(args, source, target) + pmb.helpers.mount.bind(source, target) musl = next(source.glob("lib/ld-musl-*.so.1")).name musl_link = (chroot / "lib" / musl) diff --git a/pmb/chroot/shutdown.py b/pmb/chroot/shutdown.py index c0aab5f2..463cd48e 100644 --- a/pmb/chroot/shutdown.py +++ b/pmb/chroot/shutdown.py @@ -66,7 +66,7 @@ def shutdown(args: PmbArgs, only_install_related=False): chroot = Chroot.native() # Umount installation-related paths (order is important!) - pmb.helpers.mount.umount_all(args, chroot / "mnt/install") + pmb.helpers.mount.umount_all(chroot / "mnt/install") shutdown_cryptsetup_device(args, "pm_crypt") # Umount all losetup mounted images @@ -79,7 +79,7 @@ def shutdown(args: PmbArgs, only_install_related=False): for chroot_type in [ChrootType.ROOTFS, ChrootType.INSTALLER]: chroot = Chroot(chroot_type, args.device) if chroot.path.exists(): - pmb.helpers.mount.umount_all(args, chroot.path) + pmb.helpers.mount.umount_all(chroot.path) # Remove "in-pmbootstrap" marker from all chroots. This marker indicates # that pmbootstrap has set up all mount points etc. to run programs inside @@ -94,7 +94,7 @@ def shutdown(args: PmbArgs, only_install_related=False): # The folders are explicitly iterated over, so folders symlinked inside # work dir get umounted as well (used in test_pkgrel_bump.py, #1595) for path in pmb.config.work.glob("*"): - pmb.helpers.mount.umount_all(args, path) + pmb.helpers.mount.umount_all(path) # Clean up the rest for arch in pmb.config.build_device_architectures: diff --git a/pmb/flasher/frontend.py b/pmb/flasher/frontend.py index 7de4b093..352a3b61 100644 --- a/pmb/flasher/frontend.py +++ b/pmb/flasher/frontend.py @@ -95,7 +95,7 @@ def sideload(args: PmbArgs): # Mount the buildroot chroot = Chroot.buildroot(args.deviceinfo["arch"]) mountpoint = "/mnt/" / chroot - pmb.helpers.mount.bind(args, chroot.path, + pmb.helpers.mount.bind(chroot.path, Chroot.native().path / mountpoint) # Missing recovery zip error diff --git a/pmb/flasher/init.py b/pmb/flasher/init.py index 6c5e56e3..4d05cd31 100644 --- a/pmb/flasher/init.py +++ b/pmb/flasher/init.py @@ -48,7 +48,7 @@ def init(args: PmbArgs): # Mount folders from host system for folder in pmb.config.flash_mount_bind: - pmb.helpers.mount.bind(args, folder, Chroot.native() / folder) + pmb.helpers.mount.bind(folder, Chroot.native() / folder) # Mount device chroot inside native chroot (required for kernel/ramdisk) mount_device_rootfs(args, Chroot(ChrootType.ROOTFS, args.device)) diff --git a/pmb/helpers/mount.py b/pmb/helpers/mount.py index 9152b66c..7c7d4575 100644 --- a/pmb/helpers/mount.py +++ b/pmb/helpers/mount.py @@ -25,7 +25,7 @@ def ismount(folder: Path): return False -def bind(args: PmbArgs, source: Path, destination: Path, create_folders=True, umount=False): +def bind(source: Path, destination: Path, create_folders=True, umount=False): """Mount --bind a folder and create necessary directory structure. :param umount: when destination is already a mount point, umount it first. @@ -33,7 +33,7 @@ def bind(args: PmbArgs, source: Path, destination: Path, create_folders=True, um # Check/umount destination if ismount(destination): if umount: - umount_all(args, destination) + umount_all(destination) else: return @@ -56,7 +56,7 @@ def bind(args: PmbArgs, source: Path, destination: Path, create_folders=True, um raise RuntimeError(f"Mount failed: {source} -> {destination}") -def bind_file(args: PmbArgs, source: Path, destination: Path, create_folders=False): +def bind_file(source: Path, destination: Path, create_folders=False): """Mount a file with the --bind option, and create the destination file, if necessary.""" # Skip existing mountpoint if ismount(destination): @@ -98,7 +98,7 @@ def umount_all_list(prefix: Path, source: Path=Path("/proc/mounts")) -> List[Pat return ret -def umount_all(args: PmbArgs, folder: Path): +def umount_all(folder: Path): """Umount all folders that are mounted inside a given folder.""" for mountpoint in umount_all_list(folder): pmb.helpers.run.root(["umount", mountpoint]) @@ -106,7 +106,7 @@ def umount_all(args: PmbArgs, folder: Path): raise RuntimeError(f"Failed to umount: {mountpoint}") -def mount_device_rootfs(args: PmbArgs, chroot_rootfs: Chroot) -> PurePath: +def mount_device_rootfs(chroot_rootfs: Chroot) -> PurePath: """ Mount the device rootfs. :param chroot_rootfs: the chroot where the rootfs that will be @@ -115,6 +115,6 @@ def mount_device_rootfs(args: PmbArgs, chroot_rootfs: Chroot) -> PurePath: :returns: the mountpoint (relative to the native chroot) """ mountpoint = PurePath("/mnt", chroot_rootfs.dirname) - pmb.helpers.mount.bind(args, chroot_rootfs.path, + pmb.helpers.mount.bind(chroot_rootfs.path, Chroot.native() / mountpoint) return mountpoint diff --git a/pmb/install/_install.py b/pmb/install/_install.py index cd977503..aab5ea5f 100644 --- a/pmb/install/_install.py +++ b/pmb/install/_install.py @@ -853,7 +853,7 @@ def install_system_image(args: PmbArgs, size_reserve, chroot: Chroot, step, step pmb.chroot.root(args, ["mkinitfs"], chroot) # Clean up after running mkinitfs in chroot - pmb.helpers.mount.umount_all(args, chroot.path) + pmb.helpers.mount.umount_all(chroot.path) pmb.helpers.run.root(["rm", chroot / "in-pmbootstrap"]) pmb.chroot.remove_mnt_pmbootstrap(args, chroot) diff --git a/pmb/install/blockdevice.py b/pmb/install/blockdevice.py index db32d994..66d02453 100644 --- a/pmb/install/blockdevice.py +++ b/pmb/install/blockdevice.py @@ -25,7 +25,7 @@ def previous_install(args: PmbArgs, path: Path): if not os.path.exists(blockdevice_outside): continue blockdevice_inside = "/dev/diskp1" - pmb.helpers.mount.bind_file(args, blockdevice_outside, + pmb.helpers.mount.bind_file(blockdevice_outside, Chroot.native() / blockdevice_inside) try: label = pmb.chroot.root(args, ["blkid", "-s", "LABEL", @@ -52,7 +52,7 @@ def mount_disk(args: PmbArgs, path: Path): raise RuntimeError(f"{path_mount} is mounted! Will not attempt to" " format this!") logging.info(f"(native) mount /dev/install (host: {path})") - pmb.helpers.mount.bind_file(args, path, Chroot.native() / "dev/install") + pmb.helpers.mount.bind_file(path, Chroot.native() / "dev/install") if previous_install(args, path): if not pmb.helpers.cli.confirm(args, "WARNING: This device has a" " previous installation of pmOS." @@ -86,7 +86,7 @@ def create_and_mount_image(args: PmbArgs, size_boot, size_root, size_reserve, for img_path in [img_path_full, img_path_boot, img_path_root]: outside = chroot / img_path if os.path.exists(outside): - pmb.helpers.mount.umount_all(args, chroot / "mnt") + pmb.helpers.mount.umount_all(chroot / "mnt") pmb.install.losetup.umount(args, img_path) pmb.chroot.root(args, ["rm", img_path]) @@ -122,7 +122,7 @@ def create_and_mount_image(args: PmbArgs, size_boot, size_root, size_reserve, logging.info(f"(native) mount {mount_point} ({img_path.name})") pmb.install.losetup.mount(args, img_path) device = pmb.install.losetup.device_by_back_file(args, img_path) - pmb.helpers.mount.bind_file(args, device, Chroot.native() / mount_point) + pmb.helpers.mount.bind_file(device, Chroot.native() / mount_point) def create(args: PmbArgs, size_boot, size_root, size_reserve, split, disk: Optional[Path]): @@ -135,7 +135,7 @@ def create(args: PmbArgs, size_boot, size_root, size_reserve, split, disk: Optio :param split: create separate images for boot and root partitions :param disk: path to disk block device (e.g. /dev/mmcblk0) or None """ - pmb.helpers.mount.umount_all(args, Chroot.native() / "dev/install") + pmb.helpers.mount.umount_all(Chroot.native() / "dev/install") if disk: mount_disk(args, disk) else: diff --git a/pmb/install/losetup.py b/pmb/install/losetup.py index 0269e5cb..5992a86e 100644 --- a/pmb/install/losetup.py +++ b/pmb/install/losetup.py @@ -21,7 +21,7 @@ def init(args: PmbArgs): for loopdevice in Path("/dev/").glob("loop*"): if loopdevice.is_dir(): continue - pmb.helpers.mount.bind_file(args, loopdevice, Chroot.native() / loopdevice) + pmb.helpers.mount.bind_file(loopdevice, Chroot.native() / loopdevice) def mount(args: PmbArgs, img_path: Path): diff --git a/pmb/install/partition.py b/pmb/install/partition.py index 56344ad4..fe17908c 100644 --- a/pmb/install/partition.py +++ b/pmb/install/partition.py @@ -56,7 +56,7 @@ def partitions_mount(args: PmbArgs, layout, disk: Optional[Path]): for i in partitions: source = Path(f"{partition_prefix}{i}") target = Chroot.native() / "dev" / f"installp{i}" - pmb.helpers.mount.bind_file(args, source, target) + pmb.helpers.mount.bind_file(source, target) def partition(args: PmbArgs, layout, size_boot, size_reserve): diff --git a/test/test_chroot_mount.py b/test/test_chroot_mount.py index 6b568a5c..877b3df9 100644 --- a/test/test_chroot_mount.py +++ b/test/test_chroot_mount.py @@ -31,7 +31,7 @@ def test_chroot_mount(args: PmbArgs): assert (mnt_dir / "packages").exists() # Umount everything, like in pmb.install.install_system_image - pmb.helpers.mount.umount_all(args, chroot.path) + pmb.helpers.mount.umount_all(chroot.path) # Remove all /mnt/pmbootstrap dirs pmb.chroot.remove_mnt_pmbootstrap(args, chroot)