diff options
author | joerg <joerg> | 2010-05-05 00:07:07 +0000 |
---|---|---|
committer | joerg <joerg> | 2010-05-05 00:07:07 +0000 |
commit | 75805d498dadf3f842d32c9f76e360e2cedfa2d1 (patch) | |
tree | d5fe718ed1406a1d99dcdf8fe5fa058e351b5166 /pkgtools | |
parent | 33a80bea5fe576c9a25249718a6f81f611729aee (diff) | |
download | pkgsrc-75805d498dadf3f842d32c9f76e360e2cedfa2d1.tar.gz |
pbulk-base-0.41:
Improve diagnostic message for dependency cycles by actually showing the
path.
Diffstat (limited to 'pkgtools')
-rw-r--r-- | pkgtools/pbulk-base/Makefile | 4 | ||||
-rw-r--r-- | pkgtools/pbulk/files/pbulk/pbuild/jobs.c | 25 |
2 files changed, 19 insertions, 10 deletions
diff --git a/pkgtools/pbulk-base/Makefile b/pkgtools/pbulk-base/Makefile index c3cee5902e6..cf270b62707 100644 --- a/pkgtools/pbulk-base/Makefile +++ b/pkgtools/pbulk-base/Makefile @@ -1,6 +1,6 @@ -# $NetBSD: Makefile,v 1.3 2010/02/26 16:25:49 joerg Exp $ +# $NetBSD: Makefile,v 1.4 2010/05/05 00:07:07 joerg Exp $ -DISTNAME= pbulk-base-0.40 +DISTNAME= pbulk-base-0.41 COMMENT= Core components of the modular bulk build framework PKG_DESTDIR_SUPPORT= user-destdir diff --git a/pkgtools/pbulk/files/pbulk/pbuild/jobs.c b/pkgtools/pbulk/files/pbulk/pbuild/jobs.c index 485fea39fbe..324bbc7a381 100644 --- a/pkgtools/pbulk/files/pbulk/pbuild/jobs.c +++ b/pkgtools/pbulk/files/pbulk/pbuild/jobs.c @@ -1,4 +1,4 @@ -/* $NetBSD: jobs.c,v 1.11 2010/02/26 16:25:49 joerg Exp $ */ +/* $NetBSD: jobs.c,v 1.12 2010/05/05 00:07:07 joerg Exp $ */ /*- * Copyright (c) 2007, 2009 Joerg Sonnenberger <joerg@NetBSD.org>. @@ -146,24 +146,32 @@ pbulk_item_end(const char *line) SLIST_HEAD(depth_tree_head, build_job); -static void +static int compute_tree_depth_rec(struct build_job *job, struct build_job *root, struct depth_tree_head *head, int *count) { struct dependency_list *dep_iter; struct build_job *job_iter; - if (job == root && *count != 0) - errx(1, "Cyclic dependency for package %s", job->pkgname); + if (job == root && *count != 0) { + fprintf(stderr, "Cyclic dependency for package:\n%s\n", job->pkgname); + return -1; + } SLIST_FOREACH(job_iter, head, depth_tree_link) { if (job_iter == job) - return; + return 0; } SLIST_INSERT_HEAD(head, job, depth_tree_link); *count = *count + 1; - SLIST_FOREACH(dep_iter, &job->depending_pkgs, depends_link) - compute_tree_depth_rec(dep_iter->dependency, root, head, count); + SLIST_FOREACH(dep_iter, &job->depending_pkgs, depends_link) { + if (compute_tree_depth_rec(dep_iter->dependency, root, + head, count)) { + fprintf(stderr, "%s\n", job->pkgname); + return -1; + } + } + return 0; } static void @@ -173,7 +181,8 @@ compute_tree_depth(struct build_job *job) SLIST_INIT(&head); job->pkg_depth = 0; - compute_tree_depth_rec(job, job, &head, &job->pkg_depth); + if (compute_tree_depth_rec(job, job, &head, &job->pkg_depth)) + exit(1); } void |