Merge pull request #102 from bbqlinux/master

Supported filesystems check in unpackfs, check for /etc/localtime.
main
Teo Mrnjavac 11 years ago
commit 533926909a

@ -45,6 +45,7 @@ SetTimezoneJob::prettyName() const
Calamares::JobResult
SetTimezoneJob::exec()
{
QString localtimeSlink( "/etc/localtime" );
QString zoneinfoPath( "/usr/share/zoneinfo" );
zoneinfoPath.append( QDir::separator() + m_region );
zoneinfoPath.append( QDir::separator() + m_zone );
@ -55,10 +56,15 @@ SetTimezoneJob::exec()
return Calamares::JobResult::error( tr( "Cannot access selected timezone path." ),
tr( "Bad path: %1" ).arg( zoneFile.absolutePath() ) );
// Make sure /etc/localtime doesn't exist, otherwise symlinking will fail
CalamaresUtils::chrootCall( { "rm",
"-f",
localtimeSlink } );
int ec = CalamaresUtils::chrootCall( { "ln",
"-s",
zoneinfoPath,
"/etc/localtime" } );
localtimeSlink } );
if ( ec )
return Calamares::JobResult::error( tr( "Cannot set timezone." ),
tr( "Link creation failed, target: %1; link name: %2" )

@ -120,16 +120,17 @@ class UnpackOperation:
self.mount_image(entry, imgmountdir)
fslist = ""
if entry.sourcefs == "squashfs":
sqfslist = subprocess.check_output(["unsquashfs",
fslist = subprocess.check_output(["unsquashfs",
"-l",
entry.source])
entry.total = len(sqfslist.splitlines())
if entry.sourcefs == "ext4":
fslist = subprocess.check_output(["find",
imgmountdir,
"-type", "f"])
entry.total = len(fslist.splitlines())
entry.total = len(fslist.splitlines())
self.report_progress()
error_msg = self.unpack_image(entry, imgmountdir)
@ -176,6 +177,8 @@ def run():
# sourcefs: "squashfs"
# destination: ""
PATH_PROCFS = '/proc/filesystems'
root_mount_point = globalstorage.value("rootMountPoint")
if not root_mount_point:
return ("No mount point for root partition in globalstorage",
@ -191,14 +194,31 @@ def run():
source = os.path.abspath(entry["source"])
sourcefs = entry["sourcefs"]
if sourcefs not in ["ext4", "squashfs"]:
# Get supported filesystems
fs_is_supported = False
if os.path.isfile(PATH_PROCFS) and os.access(PATH_PROCFS, os.R_OK):
procfile = open(PATH_PROCFS, 'r')
filesystems = procfile.read()
procfile.close
filesystems = filesystems.replace("nodev", "")
filesystems = filesystems.replace("\t", "")
filesystems = filesystems.splitlines()
# Check if the source filesystem is supported
for fs in filesystems:
if fs == sourcefs:
fs_is_supported = True
if fs_is_supported == False:
return "Bad filesystem", "sourcefs=\"{}\"".format(sourcefs)
destination = os.path.abspath(root_mount_point + entry["destination"])
if not os.path.isfile(source):
return ("Bad source", "source=\"{}\"".format(source))
# Add test for supported filesystems
if not os.path.isdir(destination):
return ("Bad destination",
"destination=\"{}\"".format(destination))

Loading…
Cancel
Save