Skip to content

Commit cb08434

Browse files
authored
Add --skip-keys argument to the RPM generator (#602)
1 parent 92b5a64 commit cb08434

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

bloom/generators/rosrpm.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ def fallback_resolver(key, peer_packages, rosdistro=self.rosdistro):
8585
self.rpm_inc,
8686
[p.name for p in self.packages.values()],
8787
releaser_history=releaser_history,
88-
fallback_resolver=fallback_resolver
88+
fallback_resolver=fallback_resolver,
89+
skip_keys=self.skip_keys
8990
)
9091
subs['Package'] = rosify_package_name(subs['Package'], self.rosdistro)
9192

bloom/generators/rpm/generator.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -208,9 +208,11 @@ def generate_substitutions_from_package(
208208
rpm_inc=0,
209209
peer_packages=None,
210210
releaser_history=None,
211-
fallback_resolver=None
211+
fallback_resolver=None,
212+
skip_keys=None
212213
):
213214
peer_packages = peer_packages or []
215+
skip_keys = skip_keys or set()
214216
data = {}
215217
# Name, Version, Description
216218
data['Name'] = package.name
@@ -235,10 +237,10 @@ def generate_substitutions_from_package(
235237
evaluate_package_conditions(package, ros_distro)
236238
depends = [
237239
dep for dep in (package.run_depends + package.buildtool_export_depends)
238-
if dep.evaluated_condition is not False]
240+
if dep.evaluated_condition is not False and dep.name not in skip_keys]
239241
build_depends = [
240242
dep for dep in (package.build_depends + package.buildtool_depends + package.test_depends)
241-
if dep.evaluated_condition is not False]
243+
if dep.evaluated_condition is not False and dep.name not in skip_keys]
242244
replaces = [
243245
dep for dep in package.replaces
244246
if dep.evaluated_condition is not False]
@@ -471,12 +473,16 @@ def prepare_arguments(self, parser):
471473
help="overrides the default installation prefix (/usr)")
472474
add('--os-name', default='fedora',
473475
help="overrides os_name, set to 'fedora' by default")
476+
add('--skip-keys', nargs='+', required=False, default=[],
477+
help="dependency keys which should be skipped and"
478+
" discluded from the RPM dependencies")
474479

475480
def handle_arguments(self, args):
476481
self.interactive = args.interactive
477482
self.rpm_inc = args.rpm_inc
478483
self.os_name = args.os_name
479484
self.distros = args.distros
485+
self.skip_keys = args.skip_keys or set()
480486
if self.distros in [None, []]:
481487
index = rosdistro.get_index(rosdistro.get_index_url())
482488
distribution_file = rosdistro.get_distribution_file(index, self.rosdistro)
@@ -549,6 +555,14 @@ def _check_all_keys_are_valid(self, peer_packages, rosdistro):
549555
for key in keys:
550556
key_to_packages_which_depends_on[key].append(package.name)
551557

558+
for skip_key in self.skip_keys:
559+
try:
560+
keys_to_resolve.remove(skip_key)
561+
except ValueError:
562+
warning("Key '{0}' specified by --skip-keys was not found".format(skip_key))
563+
else:
564+
warning("Skipping dependency key '{0}' per --skip-keys".format(skip_key))
565+
552566
os_name = self.os_name
553567
rosdistro = self.rosdistro
554568
all_keys_valid = True
@@ -760,7 +774,8 @@ def get_subs(self, package, rpm_distro, releaser_history=None):
760774
self.rpm_inc,
761775
[p.name for p in self.packages.values()],
762776
releaser_history=releaser_history,
763-
fallback_resolver=missing_dep_resolver
777+
fallback_resolver=missing_dep_resolver,
778+
skip_keys=self.skip_keys
764779
)
765780

766781
def generate_rpm(self, package, rpm_distro, rpm_dir='rpm'):

0 commit comments

Comments
 (0)