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