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_DONT_MERGE_SPECIAL_FRAGMENTS 0x4000
|
||||||
#define PKGCONF_PKG_PKGF_FDO_SYSROOT_RULES 0x8000
|
#define PKGCONF_PKG_PKGF_FDO_SYSROOT_RULES 0x8000
|
||||||
#define PKGCONF_PKG_PKGF_PKGCONF1_SYSROOT_RULES 0x10000
|
#define PKGCONF_PKG_PKGF_PKGCONF1_SYSROOT_RULES 0x10000
|
||||||
|
#define PKGCONF_PKG_PKGF_ANCESTOR 0x20000
|
||||||
|
|
||||||
#define PKGCONF_PKG_DEPF_INTERNAL 0x1
|
#define PKGCONF_PKG_DEPF_INTERNAL 0x1
|
||||||
#define PKGCONF_PKG_DEPF_PRIVATE 0x2
|
#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;
|
unsigned int eflags = PKGCONF_PKG_ERRF_OK;
|
||||||
pkgconf_node_t *node, *next;
|
pkgconf_node_t *node, *next;
|
||||||
|
|
||||||
|
parent->flags |= PKGCONF_PKG_PKGF_ANCESTOR;
|
||||||
|
|
||||||
PKGCONF_FOREACH_LIST_ENTRY_SAFE(deplist->head, next, node)
|
PKGCONF_FOREACH_LIST_ENTRY_SAFE(deplist->head, next, node)
|
||||||
{
|
{
|
||||||
unsigned int eflags_local = PKGCONF_PKG_ERRF_OK;
|
unsigned int eflags_local = PKGCONF_PKG_ERRF_OK;
|
||||||
|
@ -1507,7 +1509,7 @@ pkgconf_pkg_walk_list(pkgconf_client_t *client,
|
||||||
if (pkgdep == NULL)
|
if (pkgdep == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (pkgdep->serial == client->serial && !(parent->flags & PKGCONF_PKG_PROPF_VIRTUAL))
|
if((pkgdep->flags & PKGCONF_PKG_PKGF_ANCESTOR) != 0)
|
||||||
{
|
{
|
||||||
pkgdep->identifier = ++client->identifier;
|
pkgdep->identifier = ++client->identifier;
|
||||||
|
|
||||||
|
@ -1545,6 +1547,8 @@ next:
|
||||||
pkgconf_pkg_unref(client, pkgdep);
|
pkgconf_pkg_unref(client, pkgdep);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
parent->flags &= ~PKGCONF_PKG_PKGF_ANCESTOR;
|
||||||
|
|
||||||
return eflags;
|
return eflags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue