Compare commits
2 Commits
eaa4bb44a0
...
66994f1533
Author | SHA1 | Date |
---|---|---|
Colin Gillespie | 66994f1533 | |
Colin Gillespie | 9cddd22bbc |
|
@ -306,7 +306,7 @@ apply_modversion(pkgconf_client_t *client, pkgconf_pkg_t *world, void *data, int
|
|||
pkgconf_dependency_t *dep = world_iter->data;
|
||||
pkgconf_pkg_t *pkg = dep->match;
|
||||
|
||||
if (strncmp(pkg->id, queue_node->package, strlen(pkg->id)))
|
||||
if (strcmp(pkg->why, queue_node->package))
|
||||
continue;
|
||||
|
||||
if (pkg->version != NULL) {
|
||||
|
@ -315,6 +315,8 @@ apply_modversion(pkgconf_client_t *client, pkgconf_pkg_t *world, void *data, int
|
|||
|
||||
printf("%s\n", pkg->version);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -149,6 +149,7 @@ struct pkgconf_pkg_ {
|
|||
char *license;
|
||||
char *maintainer;
|
||||
char *copyright;
|
||||
char *why;
|
||||
|
||||
pkgconf_list_t libs;
|
||||
pkgconf_list_t libs_private;
|
||||
|
|
|
@ -546,6 +546,9 @@ pkgconf_pkg_free(pkgconf_client_t *client, pkgconf_pkg_t *pkg)
|
|||
if (pkg->copyright != NULL)
|
||||
free(pkg->copyright);
|
||||
|
||||
if (pkg->why != NULL)
|
||||
free(pkg->why);
|
||||
|
||||
free(pkg);
|
||||
}
|
||||
|
||||
|
@ -1398,19 +1401,24 @@ pkgconf_pkg_verify_dependency(pkgconf_client_t *client, pkgconf_dependency_t *pk
|
|||
return NULL;
|
||||
}
|
||||
|
||||
return pkgconf_pkg_scan_providers(client, pkgdep, eflags);
|
||||
}
|
||||
|
||||
if (pkg->id == NULL)
|
||||
pkg->id = strdup(pkgdep->package);
|
||||
|
||||
if (pkgconf_pkg_comparator_impls[pkgdep->compare](pkg->version, pkgdep->version) != true)
|
||||
{
|
||||
if (eflags != NULL)
|
||||
*eflags |= PKGCONF_PKG_ERRF_PACKAGE_VER_MISMATCH;
|
||||
pkg = pkgconf_pkg_scan_providers(client, pkgdep, eflags);
|
||||
}
|
||||
else
|
||||
pkgdep->match = pkgconf_pkg_ref(client, pkg);
|
||||
{
|
||||
if (pkg->id == NULL)
|
||||
pkg->id = strdup(pkgdep->package);
|
||||
|
||||
if (pkgconf_pkg_comparator_impls[pkgdep->compare](pkg->version, pkgdep->version) != true)
|
||||
{
|
||||
if (eflags != NULL)
|
||||
*eflags |= PKGCONF_PKG_ERRF_PACKAGE_VER_MISMATCH;
|
||||
}
|
||||
else
|
||||
pkgdep->match = pkgconf_pkg_ref(client, pkg);
|
||||
}
|
||||
|
||||
if (pkg != NULL)
|
||||
pkg->why = strdup(pkgdep->package);
|
||||
|
||||
return pkg;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
prefix=/test
|
||||
exec_prefix=${prefix}
|
||||
libdir=${prefix}/lib
|
||||
includedir=${prefix}/include
|
||||
|
||||
Name: foobar
|
||||
Description: A testing pkg-config file
|
||||
Version: 3.2.1
|
||||
Libs: -L${libdir} -lfoobar
|
||||
Cflags: -fPIC -I${includedir}/foobar
|
||||
Cflags.private: -DFOOBAR_STATIC
|
||||
License: ISC
|
|
@ -0,0 +1,11 @@
|
|||
prefix=/test
|
||||
exec_prefix=${prefix}
|
||||
libdir=${prefix}/lib
|
||||
includedir=${prefix}/include
|
||||
|
||||
Name: unavailable_provider
|
||||
Description: Provides an otherwise unavailable package
|
||||
Version: 1.2.3
|
||||
Provides: unavailable = 1.2.3
|
||||
Libs: -lunavailable
|
||||
Cflags:
|
|
@ -23,6 +23,9 @@ tests_init \
|
|||
idirafter_munge_order \
|
||||
idirafter_munge_sysroot \
|
||||
idirafter_ordering \
|
||||
modversion_common_prefix \
|
||||
modversion_fullpath \
|
||||
modversion_provides \
|
||||
modversion_uninstalled \
|
||||
pcpath \
|
||||
virtual_variable \
|
||||
|
@ -275,6 +278,24 @@ billion_laughs_body()
|
|||
pkgconf --with-path="${selfdir}/lib1" --validate billion-laughs
|
||||
}
|
||||
|
||||
modversion_common_prefix_body()
|
||||
{
|
||||
atf_check -o inline:"foo: 1.2.3\nfoobar: 3.2.1\n" \
|
||||
pkgconf --with-path="${selfdir}/lib1" --modversion --verbose foo foobar
|
||||
}
|
||||
|
||||
modversion_fullpath_body()
|
||||
{
|
||||
atf_check -o inline:"1.2.3\n" \
|
||||
pkgconf --modversion "${selfdir}/lib1/foo.pc"
|
||||
}
|
||||
|
||||
modversion_provides_body()
|
||||
{
|
||||
atf_check -o inline:"1.2.3\n" \
|
||||
pkgconf --with-path="${selfdir}/lib1" --modversion unavailable
|
||||
}
|
||||
|
||||
modversion_uninstalled_body()
|
||||
{
|
||||
atf_check -o inline:"1.2.3\n" \
|
||||
|
|
Loading…
Reference in New Issue