Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
error("")
if not maybe_continue('n', 'Continue anyways'):
sys.exit("User quit.")
data['changelogs'] = changelogs
# Use debhelper version 7 for oneric, otherwise 9
data['debhelper_version'] = 7 if os_version in ['oneiric'] else 9
# Summarize dependencies
summarize_dependency_mapping(data, depends, build_depends, resolved_deps)
# Copyright
licenses = []
separator = '\n' + '=' * 80 + '\n\n'
for l in package.licenses:
if hasattr(l, 'file') and l.file is not None:
license_file = os.path.join(os.path.dirname(package.filename), l.file)
if not os.path.exists(license_file):
error("License file '{}' is not found.".
format(license_file), exit=True)
license_text = open(license_file, 'r').read()
if not license_text.endswith('\n'):
license_text += '\n'
licenses.append(license_text)
data['Copyright'] = separator.join(licenses)
def convertToUnicode(obj):
if sys.version_info.major == 2:
if isinstance(obj, str):
return unicode(obj.decode('utf8'))
elif isinstance(obj, unicode):
return obj
else:
if isinstance(obj, bytes):
return str(obj.decode('utf8'))
# Determine the current package being generated
distro = destination.split('/')[-2]
# Create debians for each distro
with inbranch(destination):
data = self.generate_debian(package, distro)
# Create the tag name for later
self.tag_names[destination] = self.generate_tag_name(data)
# Update the patch configs
patches_branch = 'patches/' + destination
config = get_patch_config(patches_branch)
# Store it
self.store_original_config(config, patches_branch)
# Modify the base so import/export patch works
current_branch = get_current_branch()
if current_branch is None:
error("Could not determine current branch.", exit=True)
config['base'] = get_commit_hash(current_branch)
# Set it
set_patch_config(patches_branch, config)
if package.version != changelogs[0][0]:
error("")
error("The version of the first changelog entry '{0}' is not the "
"same as the version being currently released '{1}'."
.format(package.version, changelogs[0][0]))
bad_changelog = True
# Make sure that the current version is the latest in the changelog
for changelog in changelogs:
if parse_version(package.version) < parse_version(changelog[0]):
error("")
error("There is at least one changelog entry, '{0}', which has a "
"newer version than the version of package '{1}' being released, '{2}'."
.format(changelog[0], package.name, package.version))
bad_changelog = True
if bad_changelog:
error("This is almost certainly by mistake, you should really take a "
"look at the changelogs for the package you are releasing.")
error("")
if not maybe_continue('n', 'Continue anyways'):
sys.exit("User quit.")
data['changelogs'] = changelogs
# Use debhelper version 7 for oneric, otherwise 9
data['debhelper_version'] = 7 if os_version in ['oneiric'] else 9
# Summarize dependencies
summarize_dependency_mapping(data, depends, build_depends, resolved_deps)
# Copyright
licenses = []
separator = '\n' + '=' * 80 + '\n\n'
for l in package.licenses:
if hasattr(l, 'file') and l.file is not None:
license_file = os.path.join(os.path.dirname(package.filename), l.file)
if not os.path.exists(license_file):
if self.distros in [None, []]:
index = rosdistro.get_index(rosdistro.get_index_url())
distribution_file = rosdistro.get_distribution_file(index, self.rosdistro)
if self.os_name not in distribution_file.release_platforms:
warning("No platforms defined for os '{0}' in release file for the '{1}' distro."
"\nNot performing RPM generation."
.format(self.os_name, self.rosdistro))
sys.exit(0)
self.distros = distribution_file.release_platforms[self.os_name]
self.install_prefix = args.install_prefix
if args.install_prefix is None:
self.install_prefix = self.default_install_prefix
self.prefix = args.prefix
self.branches = match_branches_with_prefix(self.prefix, get_branches, prune=not args.match_all)
if len(self.branches) == 0:
error(
"No packages found, check your --prefix or --src arguments.",
exit=True
)
self.packages = {}
self.tag_names = {}
self.names = []
self.branch_args = []
self.rpm_branches = []
for branch in self.branches:
package = get_package_from_branch(branch)
if package is None:
# This is an ignored package
continue
self.packages[package.name] = package
self.names.append(package.name)
args = self.generate_branching_arguments(package, branch)
try:
return resolve_more_for_os(key, view, installer, os_name, os_version)
except (KeyError, ResolutionError) as exc:
debug(traceback.format_exc())
if key in ignored:
return None, None, None
if isinstance(exc, KeyError):
error("Could not resolve rosdep key '{0}'".format(key))
returncode = code.GENERATOR_NO_SUCH_ROSDEP_KEY
else:
error("Could not resolve rosdep key '{0}' for distro '{1}':"
.format(key, os_version))
info(str(exc), use_prefix=False)
returncode = code.GENERATOR_NO_ROSDEP_KEY_FOR_DISTRO
if retry:
error("Try to resolve the problem with rosdep and then continue.")
if maybe_continue():
update_rosdep()
invalidate_view_cache()
return resolve_rosdep_key(key, os_name, os_version, ros_distro,
ignored, retry=True)
BloomGenerator.exit("Failed to resolve rosdep key '{0}', aborting."
.format(key), returncode=returncode)
def import_orig(tarball, interactive=False, merge=False, directory=None):
cmd = 'git import-orig {0}'.format(tarball)
if not interactive and has_interactive():
cmd += ' --no-interactive'
if not merge:
cmd += ' --no-merge'
ret = execute_command(cmd, silent=False, autofail=False, cwd=directory)
if ret != 0:
error("git-import-orig failed '{0}'".format(cmd))
return True
return False
def remove_patches(directory=None):
# Get the current branch
current_branch = get_current_branch(directory)
if current_branch is None:
error("Could not determine current branch.", exit=True)
# Ensure the current branch is valid
if current_branch is None:
error("Could not determine current branch, are you in a git repo?",
exit=True)
# Construct the patches branch
patches_branch = 'patches/' + current_branch
try:
# See if the patches branch exists
if branch_exists(patches_branch, False, directory=directory):
if not branch_exists(patches_branch, True, directory=directory):
track_branches(patches_branch, directory)
else:
error("No patches branch (" + patches_branch + ") found, cannot "
"remove patches.", exit=True)
# Get the parent branch from the patches branch
config = get_patch_config(patches_branch, directory=directory)
def get_distribution_file(distro):
global _rosdistro_distribution_files
if distro not in _rosdistro_distribution_files:
# REP 143, get list of distribution files and take the last one
files = rosdistro.get_distribution_files(get_index(), distro)
if not files:
error("No distribution files listed for distribution '{0}'."
.format(distro), exit=True)
_rosdistro_distribution_files[distro] = files[-1]
return _rosdistro_distribution_files[distro]
def check_for_multiple_remotes():
if get_root() is None:
return
remotes = get_remotes()
if len(remotes) < 0:
error("Current git repository has no remotes. "
"If you are running bloom-release, please change directories.",
exit=True)
if len(remotes) > 1:
error("Current git repository has multiple remotes. "
"If you are running bloom-release, please change directories.",
exit=True)
from urlparse import urlparse
from bloom.github import Github
from bloom.github import GithubException
from bloom.github import get_gh_info
from bloom.github import get_github_interface
from bloom.logging import debug
from bloom.logging import error
from bloom.logging import info
try:
import rosdistro
if parse_version(rosdistro.__version__) < parse_version('0.7.0'):
error("rosdistro version 0.7.0 or greater is required, found '{0}' from '{1}'."
.format(rosdistro.__version__, os.path.dirname(rosdistro.__file__)),
exit=True)
except ImportError:
debug(traceback.format_exc())
error("rosdistro was not detected, please install it.", file=sys.stderr,
exit=True)
_rosdistro_index = None
_rosdistro_distribution_files = {}
_rosdistro_index_commit = None
_rosdistro_index_original_branch = None
def get_index_url():
global _rosdistro_index_commit, _rosdistro_index_original_branch
index_url = rosdistro.get_index_url()