def do_include_deps(args): """include-deps""" buildenv = BuildEnv() depdir = os.path.realpath('dependencies') ensure_dir(depdir) dirs_to_copy = [] sels = buildenv.get_selections() for needed_iface in sels.selections: impl = buildenv.chosen_impl(needed_iface) assert impl if impl.local_path is not None: raise SafeException("Can't export '%s' as it's a local implementation (not supported yet; sorry)" % impl) if not impl.id.startswith('package:'): dirs_to_copy.append(lookup(impl)) copied = 0 for cached in dirs_to_copy: required_digest = os.path.basename(cached) target_impl_dir = os.path.join(depdir, required_digest) if not os.path.isdir(target_impl_dir): if required_digest.startswith('sha1='): shutil.copytree(cached, target_impl_dir) else: with open(os.path.join(cached, '.manifest'), 'rb') as stream: manifest_data = stream.read() manifest.copy_tree_with_verify(cached, depdir, manifest_data, required_digest) copied += 1 print("Copied %d dependencies to %s (%d already there)" % (copied, depdir, len(dirs_to_copy) - copied))
def do_include_deps(args): """include-deps""" buildenv = BuildEnv() depdir = os.path.realpath('dependencies') ensure_dir(depdir) dirs_to_copy = [] sels = buildenv.get_selections() for needed_iface in sels.selections: impl = buildenv.chosen_impl(needed_iface) assert impl if impl.local_path is not None: raise SafeException("Can't export '%s' as it's a local implementation (not supported yet; sorry)" % impl) if not impl.id.startswith('package:'): dirs_to_copy.append(lookup(impl)) copied = 0 for cached in dirs_to_copy: required_digest = os.path.basename(cached) target_impl_dir = os.path.join(depdir, required_digest) if not os.path.isdir(target_impl_dir): if required_digest.startswith('sha1='): shutil.copytree(cached, target_impl_dir) else: manifest_data = file(os.path.join(cached, '.manifest')).read() manifest.copy_tree_with_verify(cached, depdir, manifest_data, required_digest) copied += 1 print "Copied %d dependencies to %s (%d already there)" % (copied, depdir, len(dirs_to_copy) - copied)
def do_copy(args): """copy SOURCE [ TARGET ]""" if len(args) == 2: source, target = args elif len(args) == 1: source = args[0] target = stores.stores[0].dir else: raise UsageError(_("Wrong number of arguments.")) if not os.path.isdir(source): raise UsageError(_("Source directory '%s' not found") % source) if not os.path.isdir(target): raise UsageError(_("Target directory '%s' not found") % target) manifest_path = os.path.join(source, '.manifest') if not os.path.isfile(manifest_path): raise UsageError(_("Source manifest '%s' not found") % manifest_path) required_digest = os.path.basename(source) manifest_data = file(manifest_path, 'rb').read() copy_tree_with_verify(source, target, manifest_data, required_digest)
def do_copy(args): """copy SOURCE [ TARGET ]""" if len(args) == 2: source, target = args elif len(args) == 1: source = args[0] target = stores.stores[0].dir else: raise UsageError(_("Wrong number of arguments.")) if not os.path.isdir(source): raise UsageError(_("Source directory '%s' not found") % source) if not os.path.isdir(target): raise UsageError(_("Target directory '%s' not found") % target) manifest_path = os.path.join(source, '.manifest') if not os.path.isfile(manifest_path): raise UsageError(_("Source manifest '%s' not found") % manifest_path) required_digest = os.path.basename(source) manifest_data = file(manifest_path, 'rb').read() copy_tree_with_verify(source, target, manifest_data, required_digest)