Исправлена проверка live

3.4.3.1
parent 9d7f8723f6
commit 3f7e902398

@ -23,25 +23,28 @@ import stat
from calculate.core.server.gen_pid import search_worked_process2
from calculate.core.setup_package import ChainProgressTemplate
from calculate.lib.datavars import DataVars
from calculate.lib.utils.colortext import TextState, get_color_print, \
convert_console_to_xml
from calculate.lib.utils.colortext import (TextState, get_color_print,
convert_console_to_xml)
from calculate.lib.utils.files import (
pathJoin, PercentProgress, getProgPath, process, STDOUT, removeDir,
makeDirectory, writeFile, readLinesFile, chmod, chown, FilePermission,
find, FindFileType, removeFileWithEmptyDirectory,
find, FindFileType, removeFileWithEmptyDirectory, check_rw,
copyWithPath, countFiles, listDirectory, getRunCommands, isMount, readFile)
from calculate.lib.utils.git import Git
from calculate.lib.utils.portage import Layman, EmergeLog, EmergeLogNamedTask, \
InstalledPackageInfo, EbuildInfoError, EbuildInfo, ChrootEix, \
get_packages_files_directory, get_manifest_files_directory
from calculate.update.emerge_parser import EmergeParser, \
EmergeError, EmergeCommand, Chroot, Linux32, CommandExecutor, \
RevdepPercentBlock, EmergeCache
from calculate.lib.utils.portage import (Layman, EmergeLog, EmergeLogNamedTask,
InstalledPackageInfo, EbuildInfoError,
EbuildInfo, ChrootEix,
get_packages_files_directory,
get_manifest_files_directory)
from calculate.update.emerge_parser import (EmergeParser,
EmergeError, EmergeCommand, Chroot,
Linux32, CommandExecutor,
RevdepPercentBlock, EmergeCache)
from calculate.lib.cl_log import log
from .build_storage import Build
from calculate.update.update import Update
from calculate.install.distr import Distributive, IsoDistributive, \
DistributiveError
from calculate.install.distr import (Distributive, IsoDistributive,
DistributiveError)
from functools import partial
import os
from os import path
@ -1136,6 +1139,8 @@ class Builder(Update):
if p.failed():
self.printERROR(p.read().strip())
return False
if not check_rw(dn):
raise BuilderError("Selected device is read-only")
return True
def sync_vmlinuz(self, flash_dn):

@ -19,8 +19,6 @@ import sys
from os import path
import os
import re
import random
import string
from calculate.install.distr import DistributiveError, IsoDistributive
from calculate.install.variables.kernel import KernelConfig
from calculate.lib.utils.common import getValueFromCmdLine
@ -31,16 +29,17 @@ from calculate.lib.variables.system import RootType
from .action import Actions
from calculate.install import distr
from calculate.lib.utils.device import getUdevDeviceInfo, humanreadableSize
from calculate.lib.utils.files import isMount, process, typeFile, listDirectory, \
pathJoin, readFile
from calculate.lib.utils.files import (isMount, process, typeFile,
listDirectory,
pathJoin, readFile, check_rw)
from calculate.lib.utils.kernel import InitrdFile
from calculate.lib.utils.tools import max_default
from calculate.lib.utils.git import Git
from ..build_storage import BuildStorage, Build
from ..drive_spool import DriveSpool
from .action import Actions as BuilderActions
from calculate.lib.datavars import Variable, VariableError, ReadonlyVariable, \
TableVariable
from calculate.lib.datavars import (Variable, VariableError, ReadonlyVariable,
TableVariable)
from functools import wraps
_ = lambda x: x
@ -1347,8 +1346,7 @@ class VariableClBuilderLivemenuType(Variable):
return "grub"
elif root_type_ext in RootType.RebuildAvailable:
return "flash"
else:
return ""
return "flash"
class VariableClBuilderImageRepository(ReadonlyVariable):
@ -1452,21 +1450,12 @@ class VariableClBuilderLivemenuPath(Variable):
root_type_ext not in RootType.IsoScanGrub:
yield ("none", str(self.none_humanreadable))
def _random_string(self, l=10):
return "".join(
random.choice(string.ascii_letters) for i in xrange(0, l))
def check_flash(self, value):
try:
image = IsoDistributive(value)
d = image.getIsoContentDirectory()
mark_file = path.join(d, "_mark_%s" % self._random_string())
try:
open(mark_file, 'w')
os.unlink(mark_file)
except (OSError, IOError):
raise ValueError("Selected device is read-only")
image.close()
with IsoDistributive(value) as image:
d = image.getIsoContentDirectory()
if not check_rw(d):
raise ValueError("Selected device is read-only")
except DistributiveError as e:
raise VariableError(str(e).strip())

Loading…
Cancel
Save