diff --git a/PackageManager.py b/PackageManager.py index c0c50a9..bcee7b5 100755 --- a/PackageManager.py +++ b/PackageManager.py @@ -1913,7 +1913,7 @@ def RemovePackage (cls, packageName=None, packageIndex=None, isDuplicate=False ) # # must be called while LOCKED !! - def UpdateVersionsAndFlags (self): + def UpdateVersionsAndFlags (self, doConflictChecks=True): global VersionToNumber global VenusVersion global VenusVersionNumber @@ -2032,7 +2032,8 @@ def UpdateVersionsAndFlags (self): compatible = False # check for package conflicts - if compatible: + # skip checks if caller disabled them + if compatible and doConflictChecks: conflicts = [] # skip checks while operations are pending # this clears the conflicts list until it is checked agaion @@ -2125,29 +2126,32 @@ def UpdateVersionsAndFlags (self): else: self.Conflicts = [] - if compatible: - self.SetIncompatible ( "" ) + # skip checks if caller disabled them + if compatible and doConflictChecks: # run setup script to check for errors that can't be checked here doChecks = False packageCheckFile = "/data/" + packageName + "/packageCheckVersion" # no checks have been done recently so do them now - if not os.path.exists ( packageCheckFile ) and time.time() > self.lastSetupCheckTime + 30: - doChecks = True - # check file exists - check which firmware version was checked - # and if not the current version, do checks - else: - try: - with open ( packageCheckFile ) as file: - for line in file: - if not VenusVersion in line: - doChecks = True - # couldn't read the file, attempt check again - except: + if time.time() > self.lastSetupCheckTime + 30: + # no check file exists, do checks + if not os.path.exists ( packageCheckFile ): doChecks = True + # check file exists - check which firmware version was checked + # and if not the current version, do checks + else: + try: + with open ( packageCheckFile ) as file: + for line in file: + if not VenusVersion in line: + doChecks = True + # couldn't read the file, attempt check again + except: + doChecks = True if doChecks: # avoid starting a new check if there is something pending - if not self.InstallPending and not self.DownloadPending: + if not self.InstallPending and not self.DownloadPending \ + and os.path.exists ("/data/" + packageName + "/setup"): PushAction ( command='check' + ':' + packageName, source='AUTO' ) self.lastSetupCheckTime = time.time () compatible = False @@ -2785,7 +2789,7 @@ def InstallPackage ( self, packageName=None, source=None , action='install' ): errorMessage = "no package directory " + packageName logging.error ("InstallPackage - " + errorMessage) package.InstallPending = False - package.UpdateVersionsAndFlags () + package.UpdateVersionsAndFlags (doConflictChecks=False) if source == 'GUI': DbusIf.AcknowledgeGuiEditAction ( 'ERROR' ) DbusIf.UNLOCK ("InstallPackage error 2") @@ -2796,7 +2800,7 @@ def InstallPackage ( self, packageName=None, source=None , action='install' ): errorMessage = "setup file for " + packageName + " doesn't exist" DbusIf.UpdateStatus ( message=errorMessage, where=sendStatusTo, logLevel=ERROR ) package.InstallPending = False - package.UpdateVersionsAndFlags () + package.UpdateVersionsAndFlags (doConflictChecks=False) if source == 'GUI': DbusIf.AcknowledgeGuiEditAction ( 'ERROR' ) DbusIf.UNLOCK ("InstallPackage error 3") diff --git a/blindInstall/SetupHelperVersion b/blindInstall/SetupHelperVersion index 61f564b..343be01 100644 --- a/blindInstall/SetupHelperVersion +++ b/blindInstall/SetupHelperVersion @@ -1 +1 @@ -v7.11 +v7.12 diff --git a/changes b/changes index 40ea2fd..18d24b0 100644 --- a/changes +++ b/changes @@ -1,3 +1,6 @@ +v7.12: + fixed: PackageManager hangs if there is no setup script in package directory + v7.11: fixed: conflicts not cleared when they have been resolved diff --git a/venus-data-UninstallPackages.tgz b/venus-data-UninstallPackages.tgz index 7cfa2a6..bfeb1aa 100644 Binary files a/venus-data-UninstallPackages.tgz and b/venus-data-UninstallPackages.tgz differ diff --git a/venus-data.tgz b/venus-data.tgz index 17f359f..d2829cb 100644 Binary files a/venus-data.tgz and b/venus-data.tgz differ diff --git a/version b/version index 61f564b..343be01 100644 --- a/version +++ b/version @@ -1 +1 @@ -v7.11 +v7.12