From c46ede6d4a285c74c1d61a99d95ee8c18e950297 Mon Sep 17 00:00:00 2001 From: Marek Olejnik Date: Fri, 16 Jun 2017 11:49:34 +0200 Subject: [PATCH] Optional lists of conflicting, provided and replaced packages Add set of variables to hold separated lists of conflictiong, provided and replaced packages for debian and RPM --- cerbero/packages/debian.py | 15 +++++++++++++++ cerbero/packages/package.py | 18 ++++++++++++++++++ cerbero/packages/rpm.py | 11 ++++++++++- 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/cerbero/packages/debian.py b/cerbero/packages/debian.py index 1dc525c62..6c5c80555 100644 --- a/cerbero/packages/debian.py +++ b/cerbero/packages/debian.py @@ -60,6 +60,9 @@ Depends: ${shlibs:Depends}, ${misc:Depends} %(requires)s Recommends: %(recommends)s Suggests: %(suggests)s +Conflicts: %(conflicts)s +Replaces: %(replaces)s +Provides: %(provides)s Description: %(shortdesc)s %(longdesc)s @@ -82,6 +85,9 @@ Depends: ${shlibs:Depends}, ${misc:Depends} %(requires)s Recommends: %(recommends)s Suggests: %(suggests)s +Conflicts: %(conflicts)s +Replaces: %(replaces)s +Provides: %(provides)s Description: %(shortdesc)s %(longdesc)s ''' @@ -365,12 +371,18 @@ def _deb_control_runtime_and_files(self): args['requires'] = ', ' + requires if requires else '' args['recommends'] = recommends args['suggests'] = suggests + args['conflicts'] = '' + args['replaces'] = '' + args['provides'] = '' return (CONTROL_TPL + CONTROL_RUNTIME_PACKAGE_TPL) % args, runtime_files requires = self._get_requires(PackageType.RUNTIME) args['requires'] = ', ' + requires if requires else '' args['recommends'] = '' args['suggests'] = '' + args['conflicts'] = self.package.debian_conflicts + args['replaces'] = self.package.debian_replaces + args['provides'] = self.package.debian_provides if runtime_files: return (CONTROL_TPL + CONTROL_RUNTIME_PACKAGE_TPL + CONTROL_DBG_PACKAGE_TPL) % \ args, runtime_files @@ -383,6 +395,9 @@ def _deb_control_devel_and_files(self): args['shortdesc'] = 'Development files for %s' % \ self.package_prefix + self.package.name args['longdesc'] = args['shortdesc'] + args['conflicts'] = '' + args['replaces'] = '' + args['provides'] = '' try: devel_files = self._files_list(PackageType.DEVEL) diff --git a/cerbero/packages/package.py b/cerbero/packages/package.py index f103436ea..5e5b0bcea 100644 --- a/cerbero/packages/package.py +++ b/cerbero/packages/package.py @@ -79,6 +79,18 @@ class PackageBase(object): @type strip: list @cvar strip_excludes: files that won't be stripped @type strip_excludes: list + @cvar debian_conflicts = list of debian conflicting packages + @type debian_conflicts = str + @cvar debian_replaces = list of debian replaced packages + @type debian_replaces = str + @cvar debian_provides = list of debian provided packages + @type debian_provides = str + @cvar rpm_conflicts = list of RPM conflicting packages + @type rpm_conflicts = str + @cvar rpm_obsoletes = list of RPM obsoleted packages + @type rpm_obsoletes = str + @cvar rpm_provides = list of RPM provided packages + @type rpm_provides = str ''' name = 'default' shortdesc = 'default' @@ -105,6 +117,12 @@ class PackageBase(object): strip = False strip_dirs = ['bin'] strip_excludes = [] + debian_conflicts = '' + debian_replaces = '' + debian_provides = '' + rpm_conflicts = '' + rpm_obsoletes = '' + rpm_provides = '' def __init__(self, config, store): self.config = config diff --git a/cerbero/packages/rpm.py b/cerbero/packages/rpm.py index 96824c7c0..a88269067 100644 --- a/cerbero/packages/rpm.py +++ b/cerbero/packages/rpm.py @@ -43,6 +43,9 @@ Group: Applications/Internet License: %(licenses)s Prefix: %(prefix)s +%(ConflictTag)s +%(ObsoletesTag)s +%(ProvidesTag)s Packager: %(packager)s Vendor: %(vendor)s %(url)s @@ -214,7 +217,13 @@ def prepare(self, tarname, tmpdir, packagedir, srcdir): 'devel_package': devel_package, 'devel_files': devel_files, 'files': runtime_files, - 'sources_dir': self.config.sources} + 'sources_dir': self.config.sources, + 'ConflictTag': 'Conflicts: %s' % + self.package.rpm_conflicts if self.package.rpm_conflicts else ' ', + 'ObsoletesTag': 'Obsoletes: %s' % + self.package.rpm_obsoletes if self.package.rpm_obsoletes else ' ', + 'ProvidesTag': 'Provides: %s' % + self.package.rpm_provides if self.package.rpm_provides else ' '} scripts = '' if os.path.exists(self.package.resources_postinstall):