xbps-query: implemented -X, --revdeps in repository mode.
This commit is contained in:
parent
37e5d7ebe0
commit
79a31bb6bc
4
NEWS
4
NEWS
@ -1,5 +1,9 @@
|
|||||||
xbps-0.18 (???):
|
xbps-0.18 (???):
|
||||||
|
|
||||||
|
* xbps-query(8): implemented support to know reverse dependencies
|
||||||
|
in repository mode; that means you can now exactly what packages
|
||||||
|
require the target package from all registered repositories.
|
||||||
|
|
||||||
* The virtual package configuration files are now read dynamically
|
* The virtual package configuration files are now read dynamically
|
||||||
by libxbps at initialization time from default configuration directory:
|
by libxbps at initialization time from default configuration directory:
|
||||||
<rootdir>/etc/xbps/virtualpkg.d. Only files that end in ".conf" will
|
<rootdir>/etc/xbps/virtualpkg.d. Only files that end in ".conf" will
|
||||||
|
2
TODO
2
TODO
@ -9,8 +9,6 @@ xbps-create:
|
|||||||
|
|
||||||
All:
|
All:
|
||||||
- Add support to sign with PGP or RSA the repository index files.
|
- Add support to sign with PGP or RSA the repository index files.
|
||||||
- Add requiredby support to pkg's dictionaries in repository's index,
|
|
||||||
to know reverse deps from remote repos.
|
|
||||||
|
|
||||||
Issues listed at http://code.google.com/p/xbps/issues/list
|
Issues listed at http://code.google.com/p/xbps/issues/list
|
||||||
|
|
||||||
|
@ -28,10 +28,15 @@
|
|||||||
|
|
||||||
#include <xbps_api.h>
|
#include <xbps_api.h>
|
||||||
|
|
||||||
|
#ifndef __UNCONST
|
||||||
|
#define __UNCONST(a) ((void *)(unsigned long)(const void *)(a))
|
||||||
|
#endif
|
||||||
|
|
||||||
/* from show-deps.c */
|
/* from show-deps.c */
|
||||||
int show_pkg_deps(struct xbps_handle *, const char *);
|
int show_pkg_deps(struct xbps_handle *, const char *);
|
||||||
int show_pkg_revdeps(struct xbps_handle *, const char *);
|
int show_pkg_revdeps(struct xbps_handle *, const char *);
|
||||||
int repo_show_pkg_deps(struct xbps_handle *, const char *);
|
int repo_show_pkg_deps(struct xbps_handle *, const char *);
|
||||||
|
int repo_show_pkg_revdeps(struct xbps_handle *, const char *);
|
||||||
|
|
||||||
/* from show-info-files.c */
|
/* from show-info-files.c */
|
||||||
void show_pkg_info(prop_dictionary_t);
|
void show_pkg_info(prop_dictionary_t);
|
||||||
|
@ -251,8 +251,13 @@ main(int argc, char **argv)
|
|||||||
|
|
||||||
} else if (show_rdeps) {
|
} else if (show_rdeps) {
|
||||||
/* show-rdeps mode */
|
/* show-rdeps mode */
|
||||||
rv = show_pkg_revdeps(&xh, argv[optind]);
|
if (repo_mode)
|
||||||
|
rv = repo_show_pkg_revdeps(&xh, argv[optind]);
|
||||||
|
else {
|
||||||
|
rv = show_pkg_revdeps(&xh, argv[optind]);
|
||||||
|
if (rv == ENOENT)
|
||||||
|
rv = repo_show_pkg_revdeps(&xh, argv[optind]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
xbps_end(&xh);
|
xbps_end(&xh);
|
||||||
|
@ -90,3 +90,49 @@ repo_show_pkg_deps(struct xbps_handle *xhp, const char *pattern)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
repo_revdeps_cb(struct xbps_handle *xhp,
|
||||||
|
struct xbps_rpool_index *rpi,
|
||||||
|
void *arg,
|
||||||
|
bool *done)
|
||||||
|
{
|
||||||
|
prop_dictionary_t pkgd;
|
||||||
|
prop_array_t pkgdeps;
|
||||||
|
const char *pkgver, *arch, *pattern = arg;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
(void)done;
|
||||||
|
|
||||||
|
for (i = 0; i < prop_array_count(rpi->repo); i++) {
|
||||||
|
pkgd = prop_array_get(rpi->repo, i);
|
||||||
|
pkgdeps = prop_dictionary_get(pkgd, "run_depends");
|
||||||
|
if (pkgdeps == NULL || prop_array_count(pkgdeps) == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (xbps_match_pkgdep_in_array(pkgdeps, pattern)) {
|
||||||
|
prop_dictionary_get_cstring_nocopy(pkgd,
|
||||||
|
"architecture", &arch);
|
||||||
|
if (xbps_pkg_arch_match(xhp, arch, NULL)) {
|
||||||
|
prop_dictionary_get_cstring_nocopy(pkgd,
|
||||||
|
"pkgver", &pkgver);
|
||||||
|
printf("%s\n", pkgver);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
repo_show_pkg_revdeps(struct xbps_handle *xhp, const char *pkg)
|
||||||
|
{
|
||||||
|
char *pattern;
|
||||||
|
|
||||||
|
if (xbps_pkg_version(pkg))
|
||||||
|
pattern = strdup(pkg);
|
||||||
|
else
|
||||||
|
pattern = xbps_xasprintf("%s-9999999", pkg);
|
||||||
|
|
||||||
|
return xbps_rpool_foreach(xhp, repo_revdeps_cb, pattern);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user