from Components.Ipkg import IpkgComponent
from Components.Network import iNetwork
from Tools.Directories import pathExists, fileExists, resolveFilename, SCOPE_METADIR
+from Tools.HardwareInfo import HardwareInfo
from time import time
self.language = language.getLanguage()[:2] # getLanguage returns e.g. "fi_FI" for "language_country"
DreamInfoHandler.__init__(self, self.statusCallback, blocking = False, neededTag = 'ALL_TAGS', neededFlag = self.ImageVersion, language = self.language)
self.directory = resolveFilename(SCOPE_METADIR)
+ self.hardware_info = HardwareInfo()
self.list = List([])
self.NotifierCallback = None
self.Console = Console()
def ipkgCallback(self, event, param):
if event == IpkgComponent.EVENT_ERROR:
SoftwareTools.list_updating = False
+ if self.NotifierCallback is not None:
+ self.NotifierCallback(False)
elif event == IpkgComponent.EVENT_DONE:
if SoftwareTools.list_updating:
self.startIpkgListAvailable()
+ #print event, "-", param
pass
def startIpkgListAvailable(self, callback = None):
def IpkgListAvailableCB(self, result, retval, extra_args = None):
(callback) = extra_args
- if len(result):
+ if result:
if SoftwareTools.list_updating:
SoftwareTools.available_packetlist = []
for x in result.splitlines():
- split = x.split(' - ')
- name = split[0].strip()
+ tokens = x.split(' - ')
+ name = tokens[0].strip()
if not any(name.endswith(x) for x in self.unwanted_extensions):
- SoftwareTools.available_packetlist.append([name, split[1].strip(), split[2].strip()])
+ l = len(tokens)
+ version = l > 1 and tokens[1].strip() or ""
+ descr = l > 2 and tokens[2].strip() or ""
+ SoftwareTools.available_packetlist.append([name, version, descr])
if callback is None:
self.startInstallMetaPackage()
else:
def InstallMetaPackageCB(self, result, retval, extra_args = None):
(callback) = extra_args
- if len(result):
+ if result:
self.fillPackagesIndexList()
if callback is None:
self.startIpkgListInstalled()
def IpkgListInstalledCB(self, result, retval, extra_args = None):
(callback) = extra_args
- if len(result):
+ if result:
SoftwareTools.installed_packetlist = {}
for x in result.splitlines():
- split = x.split(' - ')
- name = split[0].strip()
+ tokens = x.split(' - ')
+ name = tokens[0].strip()
if not any(name.endswith(x) for x in self.unwanted_extensions):
- SoftwareTools.installed_packetlist[name] = split[1].strip()
+ l = len(tokens)
+ version = l > 1 and tokens[1].strip() or ""
+ SoftwareTools.installed_packetlist[name] = version
+ for package in self.packagesIndexlist[:]:
+ if not self.verifyPrerequisites(package[0]["prerequisites"]):
+ self.packagesIndexlist.remove(package)
+ for package in self.packagesIndexlist[:]:
+ attributes = package[0]["attributes"]
+ if attributes.has_key("packagetype"):
+ if attributes["packagetype"] == "internal":
+ self.packagesIndexlist.remove(package)
if callback is None:
self.countUpdates()
else:
def IpkgUpdateCB(self, result, retval, extra_args = None):
(callback) = extra_args
- if len(result):
+ if result:
if self.Console:
if len(self.Console.appContainers) == 0:
if callback is not None:
for name in self.UpdateConsole.appContainers.keys():
self.UpdateConsole.kill(name)
+ def verifyPrerequisites(self, prerequisites):
+ if prerequisites.has_key("hardware"):
+ hardware_found = False
+ for hardware in prerequisites["hardware"]:
+ if hardware == self.hardware_info.device_name:
+ hardware_found = True
+ if not hardware_found:
+ return False
+ return True
+
iSoftwareTools = SoftwareTools()
\ No newline at end of file