|
|
@ -1941,27 +1941,26 @@ class _file(_error):
|
|
|
|
self.links = []
|
|
|
|
self.links = []
|
|
|
|
self.sockets = []
|
|
|
|
self.sockets = []
|
|
|
|
self.fifo = []
|
|
|
|
self.fifo = []
|
|
|
|
def getFilesDir(dirP, dirname,names):
|
|
|
|
|
|
|
|
for nameFile in names:
|
|
|
|
|
|
|
|
absNameFile = dirname + "/" + nameFile
|
|
|
|
|
|
|
|
if os.path.islink(absNameFile):
|
|
|
|
|
|
|
|
dest = absNameFile
|
|
|
|
|
|
|
|
src = os.readlink(absNameFile)
|
|
|
|
|
|
|
|
dirP.links.append((src,dest))
|
|
|
|
|
|
|
|
elif os.path.isfile(absNameFile):
|
|
|
|
|
|
|
|
dirP.files.append(absNameFile)
|
|
|
|
|
|
|
|
elif os.path.isdir(absNameFile):
|
|
|
|
|
|
|
|
dirP.dirs.append(absNameFile)
|
|
|
|
|
|
|
|
elif stat.S_ISSOCK(os.stat(absNameFile)[stat.ST_MODE]):
|
|
|
|
|
|
|
|
dirP.sockets.append(absNameFile)
|
|
|
|
|
|
|
|
elif stat.S_ISFIFO(os.stat(absNameFile)[stat.ST_MODE]):
|
|
|
|
|
|
|
|
dirP.fifo.append(absNameFile)
|
|
|
|
|
|
|
|
for profileDir in profilesDirs:
|
|
|
|
for profileDir in profilesDirs:
|
|
|
|
if profileDir:
|
|
|
|
if profileDir:
|
|
|
|
dirP = dirProf()
|
|
|
|
dirP = dirProf()
|
|
|
|
dirP.baseDir = profileDir
|
|
|
|
dirP.baseDir = profileDir
|
|
|
|
|
|
|
|
for dirname, dirs, files in os.walk(profileDir):
|
|
|
|
|
|
|
|
for nameFile in dirs + files:
|
|
|
|
|
|
|
|
absNameFile = dirname + "/" + nameFile
|
|
|
|
|
|
|
|
if os.path.islink(absNameFile):
|
|
|
|
|
|
|
|
dest = absNameFile
|
|
|
|
|
|
|
|
src = os.readlink(absNameFile)
|
|
|
|
|
|
|
|
dirP.links.append((src,dest))
|
|
|
|
|
|
|
|
elif os.path.isfile(absNameFile):
|
|
|
|
|
|
|
|
dirP.files.append(absNameFile)
|
|
|
|
|
|
|
|
elif os.path.isdir(absNameFile):
|
|
|
|
|
|
|
|
dirP.dirs.append(absNameFile)
|
|
|
|
|
|
|
|
elif stat.S_ISSOCK(os.stat(absNameFile)[stat.ST_MODE]):
|
|
|
|
|
|
|
|
dirP.sockets.append(absNameFile)
|
|
|
|
|
|
|
|
elif stat.S_ISFIFO(os.stat(absNameFile)[stat.ST_MODE]):
|
|
|
|
|
|
|
|
dirP.fifo.append(absNameFile)
|
|
|
|
dirs.append(dirP)
|
|
|
|
dirs.append(dirP)
|
|
|
|
os.path.walk(profileDir,getFilesDir, dirP)
|
|
|
|
|
|
|
|
return dirs
|
|
|
|
return dirs
|
|
|
|
|
|
|
|
|
|
|
|
def __absFileName(self, nameFile):
|
|
|
|
def __absFileName(self, nameFile):
|
|
|
@ -2725,17 +2724,16 @@ class profile(_file, _terms, xmlShare, processingTemplates):
|
|
|
|
def getInstallPkgGentoo():
|
|
|
|
def getInstallPkgGentoo():
|
|
|
|
"""Выдает словарь инсталлированных программ и номеров версий"""
|
|
|
|
"""Выдает словарь инсталлированных программ и номеров версий"""
|
|
|
|
pkgs = []
|
|
|
|
pkgs = []
|
|
|
|
def getFilesDir(pkgs, dirname, names):
|
|
|
|
for dirname, dirs, files in os.walk(self.basePkgDir):
|
|
|
|
for nameFile in names:
|
|
|
|
for nameFile in dirs + files:
|
|
|
|
absNameFile = os.path.join(dirname,nameFile)
|
|
|
|
absNameFile = os.path.join(dirname, nameFile)
|
|
|
|
if os.path.isdir(absNameFile):
|
|
|
|
if os.path.isdir(absNameFile):
|
|
|
|
tail = absNameFile.split(self.basePkgDir)
|
|
|
|
tail = absNameFile.split(self.basePkgDir)
|
|
|
|
if len(tail)==2:
|
|
|
|
if len(tail) == 2:
|
|
|
|
tail = tail[1].split('/')
|
|
|
|
tail = tail[1].split('/')
|
|
|
|
if len(tail)==3 and tail[1]!='virtual':
|
|
|
|
if len(tail) == 3 and tail[1] != 'virtual':
|
|
|
|
pkgs.append(tail[2])
|
|
|
|
pkgs.append(tail[2])
|
|
|
|
return True
|
|
|
|
|
|
|
|
os.path.walk(self.basePkgDir,getFilesDir, pkgs)
|
|
|
|
|
|
|
|
return sharePkg(pkgs)
|
|
|
|
return sharePkg(pkgs)
|
|
|
|
|
|
|
|
|
|
|
|
def sharePkg(pkgs):
|
|
|
|
def sharePkg(pkgs):
|
|
|
@ -3256,7 +3254,7 @@ class profile(_file, _terms, xmlShare, processingTemplates):
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
return True
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#TODO rewrite with os.walk
|
|
|
|
def scanDirs(self, profilesDirs, objVar=False):
|
|
|
|
def scanDirs(self, profilesDirs, objVar=False):
|
|
|
|
"""Измененный метод сканирования директорий"""
|
|
|
|
"""Измененный метод сканирования директорий"""
|
|
|
|
dirs = []
|
|
|
|
dirs = []
|
|
|
@ -3269,40 +3267,7 @@ class profile(_file, _terms, xmlShare, processingTemplates):
|
|
|
|
self.sockets = []
|
|
|
|
self.sockets = []
|
|
|
|
flagError = False
|
|
|
|
flagError = False
|
|
|
|
blockDirs = []
|
|
|
|
blockDirs = []
|
|
|
|
def getFilesDir(dirP, dirname, names):
|
|
|
|
|
|
|
|
for nameFile in names:
|
|
|
|
|
|
|
|
absNameFile = dirname + "/" + nameFile
|
|
|
|
|
|
|
|
findBlock = False
|
|
|
|
|
|
|
|
for blDir in blockDirs:
|
|
|
|
|
|
|
|
st,mid,end = absNameFile.partition(blDir)
|
|
|
|
|
|
|
|
if (not st) and mid and end:
|
|
|
|
|
|
|
|
findBlock = True
|
|
|
|
|
|
|
|
break
|
|
|
|
|
|
|
|
if not findBlock:
|
|
|
|
|
|
|
|
if os.path.islink(absNameFile):
|
|
|
|
|
|
|
|
dest = absNameFile
|
|
|
|
|
|
|
|
src = os.readlink(absNameFile)
|
|
|
|
|
|
|
|
dirP.links.append((src,dest))
|
|
|
|
|
|
|
|
elif os.path.isfile(absNameFile):
|
|
|
|
|
|
|
|
# Добавляем файлы кроме описаний директорий
|
|
|
|
|
|
|
|
if self.profDirNameFile != nameFile:
|
|
|
|
|
|
|
|
dirP.files.append(absNameFile)
|
|
|
|
|
|
|
|
elif os.path.isdir(absNameFile):
|
|
|
|
|
|
|
|
# Обработка условий в названии директории
|
|
|
|
|
|
|
|
if self.getNeedProfile(absNameFile):
|
|
|
|
|
|
|
|
if self.getError():
|
|
|
|
|
|
|
|
blockDirs.append(absNameFile)
|
|
|
|
|
|
|
|
flagError = True
|
|
|
|
|
|
|
|
break
|
|
|
|
|
|
|
|
dirP.dirs.append(absNameFile)
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
if self.getError():
|
|
|
|
|
|
|
|
blockDirs.append(absNameFile)
|
|
|
|
|
|
|
|
flagError = True
|
|
|
|
|
|
|
|
break
|
|
|
|
|
|
|
|
blockDirs.append(absNameFile)
|
|
|
|
|
|
|
|
elif stat.S_ISSOCK(os.stat(absNameFile)[stat.ST_MODE]):
|
|
|
|
|
|
|
|
dirP.sockets.append(absNameFile)
|
|
|
|
|
|
|
|
for profileDir in profilesDirs:
|
|
|
|
for profileDir in profilesDirs:
|
|
|
|
if profileDir:
|
|
|
|
if profileDir:
|
|
|
|
# Обработка условий в названии директории
|
|
|
|
# Обработка условий в названии директории
|
|
|
@ -3312,8 +3277,41 @@ class profile(_file, _terms, xmlShare, processingTemplates):
|
|
|
|
break
|
|
|
|
break
|
|
|
|
dirP = dirProf()
|
|
|
|
dirP = dirProf()
|
|
|
|
dirP.baseDir = profileDir
|
|
|
|
dirP.baseDir = profileDir
|
|
|
|
|
|
|
|
for dirname, dirs, files in os.walk(profileDir):
|
|
|
|
|
|
|
|
for nameFile in dirs + files:
|
|
|
|
|
|
|
|
absNameFile = dirname + "/" + nameFile
|
|
|
|
|
|
|
|
findBlock = False
|
|
|
|
|
|
|
|
for blDir in blockDirs:
|
|
|
|
|
|
|
|
st,mid,end = absNameFile.partition(blDir)
|
|
|
|
|
|
|
|
if (not st) and mid and end:
|
|
|
|
|
|
|
|
findBlock = True
|
|
|
|
|
|
|
|
break
|
|
|
|
|
|
|
|
if not findBlock:
|
|
|
|
|
|
|
|
if os.path.islink(absNameFile):
|
|
|
|
|
|
|
|
dest = absNameFile
|
|
|
|
|
|
|
|
src = os.readlink(absNameFile)
|
|
|
|
|
|
|
|
dirP.links.append((src,dest))
|
|
|
|
|
|
|
|
elif os.path.isfile(absNameFile):
|
|
|
|
|
|
|
|
# Добавляем файлы кроме описаний директорий
|
|
|
|
|
|
|
|
if self.profDirNameFile != nameFile:
|
|
|
|
|
|
|
|
dirP.files.append(absNameFile)
|
|
|
|
|
|
|
|
elif os.path.isdir(absNameFile):
|
|
|
|
|
|
|
|
# Обработка условий в названии директории
|
|
|
|
|
|
|
|
if self.getNeedProfile(absNameFile):
|
|
|
|
|
|
|
|
if self.getError():
|
|
|
|
|
|
|
|
blockDirs.append(absNameFile)
|
|
|
|
|
|
|
|
flagError = True
|
|
|
|
|
|
|
|
break
|
|
|
|
|
|
|
|
dirP.dirs.append(absNameFile)
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
if self.getError():
|
|
|
|
|
|
|
|
blockDirs.append(absNameFile)
|
|
|
|
|
|
|
|
flagError = True
|
|
|
|
|
|
|
|
break
|
|
|
|
|
|
|
|
blockDirs.append(absNameFile)
|
|
|
|
|
|
|
|
elif stat.S_ISSOCK(os.stat(absNameFile)[stat.ST_MODE]):
|
|
|
|
|
|
|
|
dirP.sockets.append(absNameFile)
|
|
|
|
dirs.append(dirP)
|
|
|
|
dirs.append(dirP)
|
|
|
|
os.path.walk(profileDir, getFilesDir, dirP)
|
|
|
|
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
if self.getError():
|
|
|
|
if self.getError():
|
|
|
|
flagError = True
|
|
|
|
flagError = True
|
|
|
|