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:
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