diff --git a/src/modules/unpackfs/main.py b/src/modules/unpackfs/main.py index 940f9152a..12aaa5b10 100644 --- a/src/modules/unpackfs/main.py +++ b/src/modules/unpackfs/main.py @@ -58,6 +58,9 @@ class UnpackEntry: self.copied = 0 self.total = 0 + def is_file(self): + return self.sourcefs == "file" + ON_POSIX = 'posix' in sys.builtin_module_names @@ -247,9 +250,15 @@ class UnpackOperation: """ Mount given image as loop device. + A *file* entry (e.g. one with *sourcefs* set to *file*) + is not mounted and just ignored. + :param entry: :param imgmountdir: """ + if entry.is_file(): + return + if os.path.isdir(entry.source): subprocess.check_call(["mount", "--bind", entry.source, @@ -289,10 +298,11 @@ class UnpackOperation: try: return file_copy(imgmountdir, entry.destination, progress_cb) finally: - subprocess.check_call(["umount", "-l", imgmountdir]) + if not entry.is_file(): + subprocess.check_call(["umount", "-l", imgmountdir]) -def get_supported_filesystems(): +def get_supported_filesystems_kernel(): """ Reads /proc/filesystems (the list of supported filesystems for the current kernel) and returns a list of (names of) @@ -310,6 +320,14 @@ def get_supported_filesystems(): return [] +def get_supported_filesystems(): + """ + Returns a list of all the supported filesystems + (valid values for the *sourcefs* key in an item. + """ + return ["file"] + get_supported_filesystems_kernel() + + def run(): """ Unsquash filesystem.