From 2afe205243ff29381e738f04d7bf2f261df26f22 Mon Sep 17 00:00:00 2001 From: cmdr2 Date: Sun, 23 Jul 2017 17:54:56 +0530 Subject: [PATCH] Ignore directories while searching for loop devices (#235) Thanks, cmdr2! Here's the text from his PR: Fixes an issue on alpine-vanilla, where `/dev/loop` is a directory (containing `/dev/loop/0`, `/dev/loop/1` ..etc), and causes `./pmbootstrap install` to fail. Ignoring the `/dev/loop` directory works because `/dev/` also contains files named `/dev/loop0`, `/dev/loop1` ..etc, which the new code will still pick up. The `install` command passes after this fix on my alpine-vanilla. --- pmb/install/losetup.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pmb/install/losetup.py b/pmb/install/losetup.py index 96221c27..70591807 100644 --- a/pmb/install/losetup.py +++ b/pmb/install/losetup.py @@ -19,6 +19,7 @@ along with pmbootstrap. If not, see . import glob import json import logging +import os import pmb.helpers.mount import pmb.helpers.run @@ -27,7 +28,8 @@ import pmb.chroot def init(args): pmb.helpers.run.root(args, ["modprobe", "loop"]) - for loopdev in glob.glob("/dev/loop*"): + loopdevices = [loopdev for loopdev in glob.glob("/dev/loop*") if not os.path.isdir(loopdev)] + for loopdev in loopdevices: pmb.helpers.mount.bind_blockdevice(args, loopdev, args.work + "/chroot_native/" + loopdev)