Exclude FileSystemManager from cl_install to fs_manager module

master3.3
Mike Hiretsky 12 years ago
parent c4f943bf1d
commit a997c8f930

@ -35,7 +35,7 @@ from calculate.lib.cl_fill import clLocale
from calculate.lib.cl_template import _terms from calculate.lib.cl_template import _terms
from calculate.install.cl_distr import (DistributiveRepository, from calculate.install.cl_distr import (DistributiveRepository,
PartitionDistributive) PartitionDistributive)
from calculate.install.cl_install import FileSystemManager from calculate.install.fs_manager import FileSystemManager
from operator import itemgetter from operator import itemgetter
from calculate.lib.cl_lang import setLocalTranslate from calculate.lib.cl_lang import setLocalTranslate

@ -39,6 +39,7 @@ from calculate.lib.utils import ip
from datavars import DataVarsInstall, __version__,__app__ from datavars import DataVarsInstall, __version__,__app__
from calculate.install.variables.autopartition import (AutopartitionError, from calculate.install.variables.autopartition import (AutopartitionError,
AutoPartition) AutoPartition)
from calculate.install.fs_manager import FileSystemManager
from cl_kernel_utils import KernelConfig,InitRamFs from cl_kernel_utils import KernelConfig,InitRamFs
@ -87,123 +88,6 @@ class printNoColor:
def colorPrint(self,attr,fg,bg,string): def colorPrint(self,attr,fg,bg,string):
sys.stdout.write(string) sys.stdout.write(string)
class FileSystemManager:
"""Convert dict install option"""
defaultOpt = 'noatime'
defaultBindOpts = ['bind']
supportFS = {
'ext2': {'defaultopt': defaultOpt,
'format': '/sbin/mkfs.ext2',
'formatparam': '{labelparam} {device}',
'gpt': '0700',
'label': '-L {labelname}',
'msdos': '83',
'type':['hdd','usb-hdd']},
'ext3': {'defaultopt': defaultOpt,
'format': '/sbin/mkfs.ext3',
'formatparam': '{labelparam} {device}',
'gpt': '0700',
'label': '-L {labelname}',
'msdos': '83',
'type':['hdd','usb-hdd']},
'ext4': {'defaultopt': defaultOpt,
'format': '/sbin/mkfs.ext4',
'formatparam': '{labelparam} {device}',
'gpt': '0700',
'label': '-L {labelname}',
'msdos': '83',
'type':['hdd','usb-hdd']},
'reiserfs': {'defaultopt': defaultOpt,
'format': '/sbin/mkfs.reiserfs',
'formatparam': '{labelparam} -f {device}',
'gpt': '0700',
'label': '-l {labelname}',
'msdos': '83',
'type':['hdd','usb-hdd']},
'btrfs': {'defaultopt': defaultOpt,
'format': '/sbin/mkfs.btrfs',
'formatparam': '{labelparam} {device}',
'gpt': '0700',
'label': '-L {labelname}',
'msdos': '83',
'type':['hdd','usb-hdd']},
'jfs': {'defaultopt': defaultOpt,
'format': '/sbin/mkfs.jfs',
'formatparam': '{labelparam} -f {device}',
'gpt': '0700',
'label': '-L {labelname}',
'msdos': '83',
'type':['hdd','usb-hdd']},
'xfs': {'defaultopt': defaultOpt,
'format': '/sbin/mkfs.xfs',
'formatparam': '{labelparam} -f {device}',
'gpt': '0700',
'label': '-L {labelname}',
'msdos': '83',
'type':['hdd','usb-hdd']},
'nilfs2': {'defaultopt': defaultOpt,
'format': '/sbin/mkfs.nilfs2',
'formatparam': '{labelparam} {device}',
'gpt': '0700',
'label': '-L {labelname}',
'msdos': '83',
'type':['hdd','usb-hdd']},
'swap': {'defaultopt': 'sw',
'format': '/sbin/mkswap',
'formatparam': '{device}',
'gpt': '8200',
'label': '',
'msdos': '82'},
'vfat': {'defaultopt': defaultOpt,
'format': '/usr/sbin/mkfs.vfat',
'formatparam': '{labelparam} -F 32 {device}',
'gpt': '0700',
'label': '-n {labelname}',
'msdos': '0b',
'type':['flash']},
'ntfs': {'defaultopt': defaultOpt,
'format': '/sbin/mkfs.ntfs',
'formatparam': '{labelparam} -FQ {device}',
'gpt': '0700',
'label': '-L {labelname}',
'msdos': '7',
'compatible':['ntfs-3g']},
'ntfs-3g': {'defaultopt': defaultOpt,
'format': '/sbin/mkfs.ntfs',
'formatparam': '{labelparam} -FQ {device}',
'gpt': '0700',
'label': '-L {labelname}',
'msdos': '7',
'compatible':['ntfs']}}
@classmethod
def firstAvailable(cls,listFS):
for fs in listFS:
if path.exists(cls.supportFS['format']):
return fs
else:
return ""
defaultFS = {'hdd':"ext4" \
if path.exists(supportFS['ext4']['format']) else \
"reiserfs" \
if path.exists(supportFS['reiserfs']['format']) else \
"ext3",
'flash':"vfat",
'usb-hdd': "ext4" \
if path.exists(supportFS['ext4']['format']) else \
"reiserfs" \
if path.exists(supportFS['reiserfs']['format']) else \
"ext3"}
@classmethod
def getDefaultOpt(cls,fs):
return cls.supportFS.get(fs,{'defaultopt':''})['defaultopt']
@classmethod
def checkFSForType(cls,fs,roottype):
return roottype in cls.supportFS.get(fs,{}).get('type',[])
class cltCopy(scanDirectory): class cltCopy(scanDirectory):
"""Copy clt files """Copy clt files
@ -824,16 +708,18 @@ class Install(color_print, SignalInterrupt):
sourceDistr = None sourceDistr = None
try: try:
self.clVars.printVars() self.clVars.printVars()
if self.Get('cl_autopartition_scheme'): if self.clVars.Get('cl_autopartition_scheme'):
if self.Get('cl_autopartition_table') != "dos": if self.clVars.Get('cl_autopartition_table') != "dos":
raise InstallError( raise InstallError(
_('Autopartitioning for gpt is not supported')) _('Autopartitioning for gpt is not supported'))
self.startTask(_("Creating new partition table"),progress=True) self.startTask(_("Creating new partition table"),
progress=True)
AutoPartition().recreatePartitionTableDos( AutoPartition().recreatePartitionTableDos(
self.Get('cl_autopartition_device'), self.clVars.Get('cl_autopartition_device'),
self.Get('cl_autopartition_scheme'), self.clVars.Get('cl_autopartition_scheme'),
str(int(self.Get('hr_memory_size'))/1024), str(int(self.clVars.Get('hr_memory_size'))/1024),
str(int(self.Get('cl_autopartion_root_size'))*1024)) str(int(self.clVars.Get('cl_autopartition_root_size'))
*1024))
self.endTask() self.endTask()
targetDistr = self.clVars.Get('cl_target') targetDistr = self.clVars.Get('cl_target')
sourceDistr = self.clVars.Get('cl_image') sourceDistr = self.clVars.Get('cl_image')

@ -0,0 +1,142 @@
#-*- coding: utf-8 -*-
# Copyright 2010 Calculate Ltd. http://www.calculate-linux.org
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import re
import sys
import time
import traceback
from os import path
from calculate.lib.cl_lang import setLocalTranslate
setLocalTranslate('cl_install',sys.modules[__name__])
class FileSystemManager:
"""Convert dict install option"""
defaultOpt = 'noatime'
defaultBindOpts = ['bind']
supportFS = {
'ext2': {'defaultopt': defaultOpt,
'format': '/sbin/mkfs.ext2',
'formatparam': '{labelparam} {device}',
'gpt': '0700',
'label': '-L {labelname}',
'msdos': '83',
'type':['hdd','usb-hdd']},
'ext3': {'defaultopt': defaultOpt,
'format': '/sbin/mkfs.ext3',
'formatparam': '{labelparam} {device}',
'gpt': '0700',
'label': '-L {labelname}',
'msdos': '83',
'type':['hdd','usb-hdd']},
'ext4': {'defaultopt': defaultOpt,
'format': '/sbin/mkfs.ext4',
'formatparam': '{labelparam} {device}',
'gpt': '0700',
'label': '-L {labelname}',
'msdos': '83',
'type':['hdd','usb-hdd']},
'reiserfs': {'defaultopt': defaultOpt,
'format': '/sbin/mkfs.reiserfs',
'formatparam': '{labelparam} -f {device}',
'gpt': '0700',
'label': '-l {labelname}',
'msdos': '83',
'type':['hdd','usb-hdd']},
'btrfs': {'defaultopt': defaultOpt,
'format': '/sbin/mkfs.btrfs',
'formatparam': '{labelparam} {device}',
'gpt': '0700',
'label': '-L {labelname}',
'msdos': '83',
'type':['hdd','usb-hdd']},
'jfs': {'defaultopt': defaultOpt,
'format': '/sbin/mkfs.jfs',
'formatparam': '{labelparam} -f {device}',
'gpt': '0700',
'label': '-L {labelname}',
'msdos': '83',
'type':['hdd','usb-hdd']},
'xfs': {'defaultopt': defaultOpt,
'format': '/sbin/mkfs.xfs',
'formatparam': '{labelparam} -f {device}',
'gpt': '0700',
'label': '-L {labelname}',
'msdos': '83',
'type':['hdd','usb-hdd']},
'nilfs2': {'defaultopt': defaultOpt,
'format': '/sbin/mkfs.nilfs2',
'formatparam': '{labelparam} {device}',
'gpt': '0700',
'label': '-L {labelname}',
'msdos': '83',
'type':['hdd','usb-hdd']},
'swap': {'defaultopt': 'sw',
'format': '/sbin/mkswap',
'formatparam': '{device}',
'gpt': '8200',
'label': '',
'msdos': '82'},
'vfat': {'defaultopt': defaultOpt,
'format': '/usr/sbin/mkfs.vfat',
'formatparam': '{labelparam} -F 32 {device}',
'gpt': '0700',
'label': '-n {labelname}',
'msdos': '0b',
'type':['flash']},
'ntfs': {'defaultopt': defaultOpt,
'format': '/sbin/mkfs.ntfs',
'formatparam': '{labelparam} -FQ {device}',
'gpt': '0700',
'label': '-L {labelname}',
'msdos': '7',
'compatible':['ntfs-3g']},
'ntfs-3g': {'defaultopt': defaultOpt,
'format': '/sbin/mkfs.ntfs',
'formatparam': '{labelparam} -FQ {device}',
'gpt': '0700',
'label': '-L {labelname}',
'msdos': '7',
'compatible':['ntfs']}}
@classmethod
def firstAvailable(cls,listFS):
for fs in listFS:
if path.exists(cls.supportFS['format']):
return fs
else:
return ""
defaultFS = {'hdd':"ext4" \
if path.exists(supportFS['ext4']['format']) else \
"reiserfs" \
if path.exists(supportFS['reiserfs']['format']) else \
"ext3",
'flash':"vfat",
'usb-hdd': "ext4" \
if path.exists(supportFS['ext4']['format']) else \
"reiserfs" \
if path.exists(supportFS['reiserfs']['format']) else \
"ext3"}
@classmethod
def getDefaultOpt(cls,fs):
return cls.supportFS.get(fs,{'defaultopt':''})['defaultopt']
@classmethod
def checkFSForType(cls,fs,roottype):
return roottype in cls.supportFS.get(fs,{}).get('type',[])

@ -27,7 +27,7 @@ from calculate.lib.utils.device import (getUdevDeviceInfo,getDeviceType,
from calculate.lib.utils.files import (listDirectory,pathJoin,readFile,FStab, from calculate.lib.utils.files import (listDirectory,pathJoin,readFile,FStab,
readLinesFile,process,getProgPath) readLinesFile,process,getProgPath)
from calculate.install.cl_distr import PartitionDistributive from calculate.install.cl_distr import PartitionDistributive
from calculate.install.cl_install import FileSystemManager from calculate.install.fs_manager import FileSystemManager
from calculate.lib.cl_lang import setLocalTranslate from calculate.lib.cl_lang import setLocalTranslate
@ -90,10 +90,7 @@ class AutoPartition:
num +=1 num +=1
fdisk.write(WRITE_AND_QUIT) fdisk.write(WRITE_AND_QUIT)
if fdiskProcess.success(): fdisk.success()
return True
pipe.stdin.close()
pipe.wait()
for waittime in (0.1,0.2,0.5,1,2,4): for waittime in (0.1,0.2,0.5,1,2,4):
if path.exists(device+str(num-1)): if path.exists(device+str(num-1)):
return True return True

@ -25,7 +25,7 @@ from calculate.lib.utils.device import (getUdevDeviceInfo,getDeviceType,
getUUIDDict) getUUIDDict)
from calculate.lib.utils.files import listDirectory,pathJoin,readFile,FStab from calculate.lib.utils.files import listDirectory,pathJoin,readFile,FStab
from calculate.install.cl_distr import PartitionDistributive from calculate.install.cl_distr import PartitionDistributive
from calculate.install.cl_install import FileSystemManager from calculate.install.fs_manager import FileSystemManager
from calculate.lib.cl_lang import setLocalTranslate from calculate.lib.cl_lang import setLocalTranslate
setLocalTranslate('cl_install',sys.modules[__name__]) setLocalTranslate('cl_install',sys.modules[__name__])

@ -220,7 +220,7 @@ class VariableOsInstallKernelCpufreq(ReadonlyVariable):
else: else:
return "" return ""
class VariableOsInstallKernelUid(ReadonlyVariable): class VariableClInstallKernelUid(ReadonlyVariable):
""" """
Variable install kernel UID Variable install kernel UID
""" """

@ -20,7 +20,7 @@ import re
from os import path from os import path
from calculate.lib.datavars import Variable,VariableError,ReadonlyVariable from calculate.lib.datavars import Variable,VariableError,ReadonlyVariable
from calculate.install.variables.net import NetVariable from calculate.install.variables.net import NetVariable
from calculate.install.cl_install import FileSystemManager from calculate.install.fs_manager import FileSystemManager
from calculate.lib.utils.files import readFile,getProgPath,process from calculate.lib.utils.files import readFile,getProgPath,process
from calculate.lib.utils.common import getPasswdUsers from calculate.lib.utils.common import getPasswdUsers
from crypt import crypt from crypt import crypt

Loading…
Cancel
Save