diff --git a/lib/entropy/client/interfaces/methods.py b/lib/entropy/client/interfaces/methods.py index dec4510d1..8d649b277 100644 --- a/lib/entropy/client/interfaces/methods.py +++ b/lib/entropy/client/interfaces/methods.py @@ -1085,36 +1085,34 @@ class RepositoryMixin: os.makedirs(db_dir) db_path = repo_path - if (self._installed_repo_enable) and (not os.path.isfile(db_path)): - conn = load_db_from_ram() + db_file_is_new = not os.path.isfile(db_path) + try: + repo_class = self.get_repository(name) + conn = repo_class(readOnly = False, + dbFile = db_path, + xcache = self.xcache, + indexing = self._indexing) + conn.setCloseToken(name) + self._add_plugin_to_client_repository(conn) + if db_file_is_new: + conn.initializeRepository() + # TODO: remove this in future, drop useless data from clientdb + except (DatabaseError,): entropy.tools.print_traceback(f = self.logger) + conn = load_db_from_ram() + else: - - try: - repo_class = self.get_repository(name) - conn = repo_class(readOnly = False, - dbFile = db_path, - xcache = self.xcache, - indexing = self._indexing) - conn.setCloseToken(name) - self._add_plugin_to_client_repository(conn) - # TODO: remove this in future, drop useless data from clientdb - except (DatabaseError,): - entropy.tools.print_traceback(f = self.logger) - conn = load_db_from_ram() - - else: - # validate database - if self._installed_repo_enable: + # validate database + if self._installed_repo_enable: + try: + conn.validate() + except SystemDatabaseError: try: - conn.validate() - except SystemDatabaseError: - try: - conn.close(_token = name) - except (RepositoryPluginError, OSError, IOError): - pass - entropy.tools.print_traceback(f = self.logger) - conn = load_db_from_ram() + conn.close(_token = name) + except (RepositoryPluginError, OSError, IOError): + pass + entropy.tools.print_traceback(f = self.logger) + conn = load_db_from_ram() self._real_installed_repository = conn return conn diff --git a/lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py b/lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py index d51993b00..853f1d6fd 100644 --- a/lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py +++ b/lib/entropy/spm/plugins/interfaces/portage_plugin/__init__.py @@ -1421,7 +1421,7 @@ class PortagePlugin(SpmPlugin): try: entropy.tools.uncompress_tarball(package_file, extract_path = pkg_dir, catch_empty = False) - except tarfile.ReadError: + except (tarfile.ReadError, OSError): empty_content = True env_bz2 = os.path.join(meta_dir, PortagePlugin.ENV_FILE_COMP)