diff --git a/lib/entropy/server/interfaces/mirrors.py b/lib/entropy/server/interfaces/mirrors.py index d30d26666..ab65338c2 100644 --- a/lib/entropy/server/interfaces/mirrors.py +++ b/lib/entropy/server/interfaces/mirrors.py @@ -1993,6 +1993,22 @@ class Server(object): pkg_path += etpConst['packagesexpirationfileext'] return os.path.lexists(pkg_path) + def _weaken_file_exists(self, repository_id, package_rel): + """ + Return whether the weaken file exists for the given package. + + @param repository_id: repository identifier + @type repository_id: string + @param package_rel: package relative url, as returned by + EntropyRepository.retrieveDownloadURL + @type package_rel: string + """ + pkg_path = self._entropy.complete_local_package_path(package_rel, + repository_id) + + pkg_path += etpConst['packagesweakfileext'] + return os.path.lexists(pkg_path) + def _create_expiration_file(self, repository_id, package_rel): """ Mark the package file as expired by creating an .expired file @@ -2264,7 +2280,8 @@ class Server(object): else: if not self._expiration_file_exists(repository_id, package_rel): expire.append(package_rel) - if weak_package_files: + if weak_package_files and self._weaken_file_exists( + repository_id, package_rel): weaken.append(package_rel) for extra_package_rel in extra_expiring_packages: @@ -2276,7 +2293,8 @@ class Server(object): if not self._expiration_file_exists( repository_id, extra_package_rel): expire.append(extra_package_rel) - if weak_package_files: + if weak_package_files and self._weaken_file_exists( + repository_id, extra_package_rel): weaken.append(extra_package_rel) if not (remove or weaken or expire):