Merge pull request #102 from bbqlinux/master
Supported filesystems check in unpackfs, check for /etc/localtime.
This commit is contained in:
commit
533926909a
@ -45,6 +45,7 @@ SetTimezoneJob::prettyName() const
|
|||||||
Calamares::JobResult
|
Calamares::JobResult
|
||||||
SetTimezoneJob::exec()
|
SetTimezoneJob::exec()
|
||||||
{
|
{
|
||||||
|
QString localtimeSlink( "/etc/localtime" );
|
||||||
QString zoneinfoPath( "/usr/share/zoneinfo" );
|
QString zoneinfoPath( "/usr/share/zoneinfo" );
|
||||||
zoneinfoPath.append( QDir::separator() + m_region );
|
zoneinfoPath.append( QDir::separator() + m_region );
|
||||||
zoneinfoPath.append( QDir::separator() + m_zone );
|
zoneinfoPath.append( QDir::separator() + m_zone );
|
||||||
@ -55,10 +56,15 @@ SetTimezoneJob::exec()
|
|||||||
return Calamares::JobResult::error( tr( "Cannot access selected timezone path." ),
|
return Calamares::JobResult::error( tr( "Cannot access selected timezone path." ),
|
||||||
tr( "Bad path: %1" ).arg( zoneFile.absolutePath() ) );
|
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",
|
int ec = CalamaresUtils::chrootCall( { "ln",
|
||||||
"-s",
|
"-s",
|
||||||
zoneinfoPath,
|
zoneinfoPath,
|
||||||
"/etc/localtime" } );
|
localtimeSlink } );
|
||||||
if ( ec )
|
if ( ec )
|
||||||
return Calamares::JobResult::error( tr( "Cannot set timezone." ),
|
return Calamares::JobResult::error( tr( "Cannot set timezone." ),
|
||||||
tr( "Link creation failed, target: %1; link name: %2" )
|
tr( "Link creation failed, target: %1; link name: %2" )
|
||||||
|
@ -120,16 +120,17 @@ class UnpackOperation:
|
|||||||
|
|
||||||
self.mount_image(entry, imgmountdir)
|
self.mount_image(entry, imgmountdir)
|
||||||
|
|
||||||
|
fslist = ""
|
||||||
|
|
||||||
if entry.sourcefs == "squashfs":
|
if entry.sourcefs == "squashfs":
|
||||||
sqfslist = subprocess.check_output(["unsquashfs",
|
fslist = subprocess.check_output(["unsquashfs",
|
||||||
"-l",
|
"-l",
|
||||||
entry.source])
|
entry.source])
|
||||||
entry.total = len(sqfslist.splitlines())
|
|
||||||
if entry.sourcefs == "ext4":
|
if entry.sourcefs == "ext4":
|
||||||
fslist = subprocess.check_output(["find",
|
fslist = subprocess.check_output(["find",
|
||||||
imgmountdir,
|
imgmountdir,
|
||||||
"-type", "f"])
|
"-type", "f"])
|
||||||
entry.total = len(fslist.splitlines())
|
entry.total = len(fslist.splitlines())
|
||||||
|
|
||||||
self.report_progress()
|
self.report_progress()
|
||||||
error_msg = self.unpack_image(entry, imgmountdir)
|
error_msg = self.unpack_image(entry, imgmountdir)
|
||||||
@ -176,6 +177,8 @@ def run():
|
|||||||
# sourcefs: "squashfs"
|
# sourcefs: "squashfs"
|
||||||
# destination: ""
|
# destination: ""
|
||||||
|
|
||||||
|
PATH_PROCFS = '/proc/filesystems'
|
||||||
|
|
||||||
root_mount_point = globalstorage.value("rootMountPoint")
|
root_mount_point = globalstorage.value("rootMountPoint")
|
||||||
if not root_mount_point:
|
if not root_mount_point:
|
||||||
return ("No mount point for root partition in globalstorage",
|
return ("No mount point for root partition in globalstorage",
|
||||||
@ -191,14 +194,31 @@ def run():
|
|||||||
source = os.path.abspath(entry["source"])
|
source = os.path.abspath(entry["source"])
|
||||||
|
|
||||||
sourcefs = entry["sourcefs"]
|
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)
|
return "Bad filesystem", "sourcefs=\"{}\"".format(sourcefs)
|
||||||
|
|
||||||
destination = os.path.abspath(root_mount_point + entry["destination"])
|
destination = os.path.abspath(root_mount_point + entry["destination"])
|
||||||
|
|
||||||
if not os.path.isfile(source):
|
if not os.path.isfile(source):
|
||||||
return ("Bad source", "source=\"{}\"".format(source))
|
return ("Bad source", "source=\"{}\"".format(source))
|
||||||
# Add test for supported filesystems
|
|
||||||
if not os.path.isdir(destination):
|
if not os.path.isdir(destination):
|
||||||
return ("Bad destination",
|
return ("Bad destination",
|
||||||
"destination=\"{}\"".format(destination))
|
"destination=\"{}\"".format(destination))
|
||||||
|
Loading…
Reference in New Issue
Block a user