From: Michael Tremer Date: Tue, 25 Oct 2022 12:06:42 +0000 (+0000) Subject: sources: Deprecate any builds when a package is deleted X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=90197faa10bacf9e7f0c98665ddf41ef8c970dbd;p=pbs.git sources: Deprecate any builds when a package is deleted Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/sources.py b/src/buildservice/sources.py index b393c487..cac2a7a8 100644 --- a/src/buildservice/sources.py +++ b/src/buildservice/sources.py @@ -344,9 +344,9 @@ class Source(base.DataObject): else: dist_files.append(filename) - # Obsolete any deleted packages + # Deprecate any deleted packages if deleted_packages: - pass # XXX TODO + self._deprecate_packages(deleted_packages) # Create builds from all other changed files if dist_files: @@ -364,6 +364,32 @@ class Source(base.DataObject): return name + def _deprecate_packages(self, names): + """ + Called to deprecate any packages that match any of the names + """ + builds = self.backend.builds._get_builds(""" + SELECT + * + FROM + builds + LEFT JOIN + packages ON builds.pkg_id = packages.id + WHERE + builds.deleted_at IS NULL + AND + builds.deprecated_by IS NULL + AND + builds.build_repo_id = %s + AND + packages.name = ANY(%s) + """, self.repo, names, + ) + + # Deprecate all matching builds + for build in builds: + build.deprecate() + async def _dist_files(self, git, revision, files): """ Runs "pakfire dist" on all given files at the given revision