forked from ariadne/pkgconf
main: finish --errors-to-stdout support
parent
2d2ae06809
commit
8a9971ec1f
|
@ -62,7 +62,7 @@ pkg_dependency_add(pkg_dependency_t *head, const char *package, const char *vers
|
||||||
dep->prev->next = dep;
|
dep->prev->next = dep;
|
||||||
|
|
||||||
#if DEBUG_PARSE
|
#if DEBUG_PARSE
|
||||||
fprintf(stderr, "--> %s %d %s\n", dep->package, dep->compare, dep->version);
|
fprintf(error_msgout, "--> %s %d %s\n", dep->package, dep->compare, dep->version);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return dep;
|
return dep;
|
||||||
|
@ -168,7 +168,7 @@ pkg_dependency_parse(pkg_t *pkg, const char *depends)
|
||||||
|
|
||||||
package = strndup(iter, ptr - iter);
|
package = strndup(iter, ptr - iter);
|
||||||
#if DEBUG_PARSE
|
#if DEBUG_PARSE
|
||||||
fprintf(stderr, "Found package: %s\n", package);
|
fprintf(error_msgout, "Found package: %s\n", package);
|
||||||
#endif
|
#endif
|
||||||
start = ptr;
|
start = ptr;
|
||||||
}
|
}
|
||||||
|
@ -245,7 +245,7 @@ pkg_dependency_parse(pkg_t *pkg, const char *depends)
|
||||||
|
|
||||||
case AFTER_OPERATOR:
|
case AFTER_OPERATOR:
|
||||||
#if DEBUG_PARSE
|
#if DEBUG_PARSE
|
||||||
fprintf(stderr, "Found op: %d\n", compare);
|
fprintf(error_msgout, "Found op: %d\n", compare);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!isspace(*ptr))
|
if (!isspace(*ptr))
|
||||||
|
@ -262,7 +262,7 @@ pkg_dependency_parse(pkg_t *pkg, const char *depends)
|
||||||
state = OUTSIDE_MODULE;
|
state = OUTSIDE_MODULE;
|
||||||
|
|
||||||
#if DEBUG_PARSE
|
#if DEBUG_PARSE
|
||||||
fprintf(stderr, "Found version: %s\n", version);
|
fprintf(error_msgout, "Found version: %s\n", version);
|
||||||
#endif
|
#endif
|
||||||
deplist = pkg_dependency_add(deplist, package, version, compare);
|
deplist = pkg_dependency_add(deplist, package, version, compare);
|
||||||
|
|
||||||
|
|
12
main.c
12
main.c
|
@ -64,6 +64,8 @@ static char *required_module_version = NULL;
|
||||||
static char *want_variable = NULL;
|
static char *want_variable = NULL;
|
||||||
static char *sysroot_dir = NULL;
|
static char *sysroot_dir = NULL;
|
||||||
|
|
||||||
|
FILE *error_msgout = NULL;
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
fragment_has_system_dir(pkg_fragment_t *frag)
|
fragment_has_system_dir(pkg_fragment_t *frag)
|
||||||
{
|
{
|
||||||
|
@ -432,6 +434,7 @@ usage(void)
|
||||||
printf(" --version print pkgconf version to stdout\n");
|
printf(" --version print pkgconf version to stdout\n");
|
||||||
printf(" --atleast-pkgconfig-version check whether or not pkgconf is compatible\n");
|
printf(" --atleast-pkgconfig-version check whether or not pkgconf is compatible\n");
|
||||||
printf(" with a specified pkg-config version\n");
|
printf(" with a specified pkg-config version\n");
|
||||||
|
printf(" --errors-to-stdout print all errors on stdout instead of stderr\n");
|
||||||
|
|
||||||
printf("\nchecking specific pkg-config database entries:\n\n");
|
printf("\nchecking specific pkg-config database entries:\n\n");
|
||||||
|
|
||||||
|
@ -476,6 +479,7 @@ main(int argc, char *argv[])
|
||||||
pkg_queue_t *pkgq = NULL;
|
pkg_queue_t *pkgq = NULL;
|
||||||
pkg_queue_t *pkgq_head = NULL;
|
pkg_queue_t *pkgq_head = NULL;
|
||||||
char *builddir;
|
char *builddir;
|
||||||
|
int want_errors_on_stdout = 0;
|
||||||
|
|
||||||
struct option options[] = {
|
struct option options[] = {
|
||||||
{ "version", no_argument, &want_version, 1, },
|
{ "version", no_argument, &want_version, 1, },
|
||||||
|
@ -509,7 +513,7 @@ main(int argc, char *argv[])
|
||||||
{ "exact-version", required_argument, NULL, 28, },
|
{ "exact-version", required_argument, NULL, 28, },
|
||||||
{ "max-version", required_argument, NULL, 29, },
|
{ "max-version", required_argument, NULL, 29, },
|
||||||
{ "ignore-conflicts", no_argument, &want_ignore_conflicts, 30, },
|
{ "ignore-conflicts", no_argument, &want_ignore_conflicts, 30, },
|
||||||
{ "errors-to-stdout", no_argument, NULL, 31, },
|
{ "errors-to-stdout", no_argument, &want_errors_on_stdout, 31, },
|
||||||
{ NULL, 0, NULL, 0 }
|
{ NULL, 0, NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -555,6 +559,10 @@ main(int argc, char *argv[])
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
error_msgout = stderr;
|
||||||
|
if (want_errors_on_stdout)
|
||||||
|
error_msgout = stdout;
|
||||||
|
|
||||||
if (want_ignore_conflicts || getenv("PKG_CONFIG_IGNORE_CONFLICTS") != NULL)
|
if (want_ignore_conflicts || getenv("PKG_CONFIG_IGNORE_CONFLICTS") != NULL)
|
||||||
global_traverse_flags |= PKGF_SKIP_CONFLICTS;
|
global_traverse_flags |= PKGF_SKIP_CONFLICTS;
|
||||||
|
|
||||||
|
@ -680,7 +688,7 @@ main(int argc, char *argv[])
|
||||||
|
|
||||||
if (pkgq_head == NULL)
|
if (pkgq_head == NULL)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Please specify at least one package name on the command line.\n");
|
fprintf(error_msgout, "Please specify at least one package name on the command line.\n");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
18
pkg.c
18
pkg.c
|
@ -592,18 +592,18 @@ pkg_report_graph_error(pkg_t *pkg, pkg_dependency_t *node, unsigned int eflags)
|
||||||
{
|
{
|
||||||
if (eflags & PKG_ERRF_PACKAGE_NOT_FOUND)
|
if (eflags & PKG_ERRF_PACKAGE_NOT_FOUND)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Package %s was not found in the pkg-config search path.\n", node->package);
|
fprintf(error_msgout, "Package %s was not found in the pkg-config search path.\n", node->package);
|
||||||
fprintf(stderr, "Perhaps you should add the directory containing `%s.pc'\n", node->package);
|
fprintf(error_msgout, "Perhaps you should add the directory containing `%s.pc'\n", node->package);
|
||||||
fprintf(stderr, "to the PKG_CONFIG_PATH environment variable\n");
|
fprintf(error_msgout, "to the PKG_CONFIG_PATH environment variable\n");
|
||||||
fprintf(stderr, "No package '%s' found\n", node->package);
|
fprintf(error_msgout, "No package '%s' found\n", node->package);
|
||||||
}
|
}
|
||||||
else if (eflags & PKG_ERRF_PACKAGE_VER_MISMATCH)
|
else if (eflags & PKG_ERRF_PACKAGE_VER_MISMATCH)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Package dependency requirement '%s %s %s' could not be satisfied.\n",
|
fprintf(error_msgout, "Package dependency requirement '%s %s %s' could not be satisfied.\n",
|
||||||
node->package, pkg_get_comparator(node), node->version);
|
node->package, pkg_get_comparator(node), node->version);
|
||||||
|
|
||||||
if (pkg != NULL)
|
if (pkg != NULL)
|
||||||
fprintf(stderr, "Package '%s' has version '%s', required version is '%s %s'\n",
|
fprintf(error_msgout, "Package '%s' has version '%s', required version is '%s %s'\n",
|
||||||
node->package, pkg->version, pkg_get_comparator(node), node->version);
|
node->package, pkg->version, pkg_get_comparator(node), node->version);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -661,11 +661,11 @@ pkg_walk_conflicts_list(pkg_t *root, pkg_dependency_t *deplist, unsigned int fla
|
||||||
pkgdep = pkg_verify_dependency(node, flags, &eflags);
|
pkgdep = pkg_verify_dependency(node, flags, &eflags);
|
||||||
if (eflags == PKG_ERRF_OK)
|
if (eflags == PKG_ERRF_OK)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Version '%s' of '%s' conflicts with '%s' due to satisfying conflict rule '%s %s%s%s'.\n",
|
fprintf(error_msgout, "Version '%s' of '%s' conflicts with '%s' due to satisfying conflict rule '%s %s%s%s'.\n",
|
||||||
pkgdep->version, pkgdep->realname, root->realname, node->package, pkg_get_comparator(node),
|
pkgdep->version, pkgdep->realname, root->realname, node->package, pkg_get_comparator(node),
|
||||||
node->version != NULL ? " " : "", node->version != NULL ? node->version : "");
|
node->version != NULL ? " " : "", node->version != NULL ? node->version : "");
|
||||||
fprintf(stderr, "It may be possible to ignore this conflict and continue, try the\n");
|
fprintf(error_msgout, "It may be possible to ignore this conflict and continue, try the\n");
|
||||||
fprintf(stderr, "PKG_CONFIG_IGNORE_CONFLICTS environment variable.\n");
|
fprintf(error_msgout, "PKG_CONFIG_IGNORE_CONFLICTS environment variable.\n");
|
||||||
|
|
||||||
pkg_free(pkgdep);
|
pkg_free(pkgdep);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue