diff --git a/backend/SystemUpdater/Core/UpdateList.py b/backend/SystemUpdater/Core/UpdateList.py index 273aac3..6110753 100644 --- a/backend/SystemUpdater/Core/UpdateList.py +++ b/backend/SystemUpdater/Core/UpdateList.py @@ -121,17 +121,15 @@ class UpdateList(): #在可升级的列表当中 此步骤为了排除已安装不需要升级的 if pkg_obj.is_installed: if pkg_obj in pkgs_upgrade: - #将推送的单包安装 与组中的重复去除掉 - pkg_obj.mark_install() - pkg_list.append(pkg_obj) pkgs_upgrade.remove(pkg_obj) + pkg_list.append(pkg_obj) else: pkg_list.append(pkg_obj) else: group_important_list.append(pkg_name) - if pkg_list != None: - install_list,upgrade_list = self._make_fiter(pkg_list,True) + if pkg_list != []: + install_list,upgrade_list = self._make_fiter_origin(pkg_list,True) pkg_important_list = install_list + upgrade_list logging.info("pkg_important_list: %a, group_important_list:%a",pkg_important_list,group_important_list) @@ -212,7 +210,8 @@ class UpdateList(): json.dump(output_json, f, ensure_ascii=False, indent=4) logging.info("Generate Jsonfile(%s) to complete... ",output_config_name) - def _make_fiter(self,all_pkg_obj,is_adjust): + #进行源过滤,is_adjust 是否调整cache中的候选版本,单包推送会调整保持控制面板显示正确的版本 + def _make_fiter_origin(self,all_pkg_obj,is_adjust): new_install_list = [] new_upgrade_list = [] #进行安装列表的过滤 @@ -304,11 +303,12 @@ class UpdateList(): new_upgrade_list = list(set(pkgs_upgrade) & set(upgrade_pkgs_list)) #进行源过滤 - new_install_list,new_upgrade_list = self._make_fiter([cache[pkg] for pkg in new_install_list + new_upgrade_list],False) + new_install_list,new_upgrade_list = self._make_fiter_origin([cache[pkg] for pkg in new_install_list + new_upgrade_list],False) - for pkg in [cache[pkg] for pkg in new_install_list]: - if pkg.marked_install: - new_install_list.remove(pkg.name) + #单包的优先级最高 从组中剔除此包 + for pkg in new_install_list: + if pkg in self.local_upgrade_data.single_pkgs: + new_install_list.remove(pkg) #判断当前是否可升级或者新装的包 if len(new_install_list) == 0 and len(new_upgrade_list) == 0: