Circular deps: track ancestors, not serial
parent
948297b5b8
commit
45073b7460
|
@ -278,6 +278,7 @@ PKGCONF_API void pkgconf_cross_personality_deinit(pkgconf_cross_personality_t *p
|
|||
#define PKGCONF_PKG_PKGF_DONT_MERGE_SPECIAL_FRAGMENTS 0x4000
|
||||
#define PKGCONF_PKG_PKGF_FDO_SYSROOT_RULES 0x8000
|
||||
#define PKGCONF_PKG_PKGF_PKGCONF1_SYSROOT_RULES 0x10000
|
||||
#define PKGCONF_PKG_PKGF_ANCESTOR 0x20000
|
||||
|
||||
#define PKGCONF_PKG_DEPF_INTERNAL 0x1
|
||||
#define PKGCONF_PKG_DEPF_PRIVATE 0x2
|
||||
|
|
|
@ -1487,6 +1487,8 @@ pkgconf_pkg_walk_list(pkgconf_client_t *client,
|
|||
unsigned int eflags = PKGCONF_PKG_ERRF_OK;
|
||||
pkgconf_node_t *node, *next;
|
||||
|
||||
parent->flags |= PKGCONF_PKG_PKGF_ANCESTOR;
|
||||
|
||||
PKGCONF_FOREACH_LIST_ENTRY_SAFE(deplist->head, next, node)
|
||||
{
|
||||
unsigned int eflags_local = PKGCONF_PKG_ERRF_OK;
|
||||
|
@ -1507,7 +1509,7 @@ pkgconf_pkg_walk_list(pkgconf_client_t *client,
|
|||
if (pkgdep == NULL)
|
||||
continue;
|
||||
|
||||
if (pkgdep->serial == client->serial && !(parent->flags & PKGCONF_PKG_PROPF_VIRTUAL))
|
||||
if((pkgdep->flags & PKGCONF_PKG_PKGF_ANCESTOR) != 0)
|
||||
{
|
||||
pkgdep->identifier = ++client->identifier;
|
||||
|
||||
|
@ -1545,6 +1547,8 @@ next:
|
|||
pkgconf_pkg_unref(client, pkgdep);
|
||||
}
|
||||
|
||||
parent->flags &= ~PKGCONF_PKG_PKGF_ANCESTOR;
|
||||
|
||||
return eflags;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue