Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 28 additions & 2 deletions src/rosdistro/distribution.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
from .manifest_provider.gitlab import gitlab_manifest_provider, gitlab_source_manifest_provider
from .manifest_provider.tar import tar_manifest_provider, tar_source_manifest_provider
from .package import Package
from . import logger


class Distribution(object):
Expand Down Expand Up @@ -74,10 +75,23 @@ def get_release_package_xml(self, pkg_name):
if repo.version is None:
return None
package_xml = None

final_exception = None
for mp in self._manifest_providers:
package_xml = mp(self._distribution_file.name, repo, pkg_name)
try:
package_xml = mp(self._distribution_file.name, repo, pkg_name)
except Exception as e:
# pass and try next manifest provider
logger.debug('Skipped "%s()": %s' % (mp.__name__, e))
final_exception = e
continue

if package_xml is not None:
break

if final_exception is not None:
raise final_exception

self._release_package_xmls[pkg_name] = package_xml
return self._release_package_xmls[pkg_name]

Expand All @@ -93,13 +107,25 @@ def get_source_repo_package_xmls(self, repo_name):
if repo_name in self._source_repo_package_xmls:
return self._source_repo_package_xmls[repo_name]
else:
final_exception = None
for mp in self._source_manifest_providers:
repo_cache = mp(self.repositories[repo_name].source_repository)
try:
repo_cache = mp(self.repositories[repo_name].source_repository)
except Exception as e:
# pass and try next manifest provider
logger.debug('Skipped "%s()": %s' % (mp.__name__, e))
final_exception = e
continue

if repo_cache is not None:
# Update map of package XMLs, and also list of known package names.
self._source_repo_package_xmls[repo_name] = repo_cache
for pkg_name in repo_cache:
if pkg_name[0] != '_':
self._distribution_file.source_packages[pkg_name] = Package(pkg_name, repo_name)
return self._source_repo_package_xmls[repo_name]

if final_exception is not None:
raise final_exception

return None
Loading