示例#1
0
static void add_dep(struct manifest ***deps, const char *modname)
{
	unsigned int i;
	struct manifest *m;
	char *errstr;

	if (have_mod(*deps, modname))
		return;

	m = get_manifest(*deps,
			 tal_fmt(*deps, "%s/ccan/%s", ccan_dir, modname));
	errstr = build_submodule(m, cflags, COMPILE_NORMAL);
	if (errstr)
		errx(1, "%s", errstr);

	add_mod(deps, m);

	/* Get that modules depends as well... */
	assert(!safe_mode);
	if (m->info_file) {
		char **infodeps;

		infodeps = get_deps(m, m->dir, "depends", false,
				    get_or_compile_info);

		for (i = 0; infodeps[i]; i++) {
			if (strstarts(infodeps[i], "ccan/"))
				add_dep(deps, infodeps[i] + strlen("ccan/"));
		}
	}
}
示例#2
0
std::shared_ptr<VersionForRestore> BackupSystem::compute_latest_version(version_number_t version_number){
	std::shared_ptr<VersionForRestore> latest_version;
	std::map<version_number_t, std::shared_ptr<VersionForRestore>> versions;
	std::vector<version_number_t> stack;
	const auto &latest_version_number = version_number;
	{
		auto version = make_shared(new VersionForRestore(latest_version_number, *this, this->keypair.get()));
		versions[latest_version_number] = version;
		for (auto &object : version->get_base_objects())
			this->old_objects.push_back(object);
		for (auto &dep : version->get_manifest()->version_dependencies)
			versions[dep] = make_shared(new VersionForRestore(dep, *this, this->keypair.get()));
	}
	latest_version = versions[latest_version_number];
	latest_version->fill_dependencies(versions);
	return latest_version;
}
示例#3
0
static bool add_dep(struct manifest *m, const char *dep, struct score *score)
{
	struct stat st;
	struct manifest *subm;
	char *dir = talloc_asprintf(m, "%s/%s", ccan_dir, dep);

	/* FIXME: get_manifest has a tendency to exit. */
	if (stat(dir, &st) != 0) {
		score->error
			= talloc_asprintf(m,
					  "Could not stat dependency %s: %s",
					  dir, strerror(errno));
		return false;
	}
	subm = get_manifest(m, dir);
	list_add_tail(&m->deps, &subm->list);
	return true;
}