From 154337ceabfef2720078f73b7a5c66a86db40a5b Mon Sep 17 00:00:00 2001 From: Juan RP Date: Sun, 30 Sep 2012 10:08:21 +0200 Subject: [PATCH] xbps-repo: remove-obsoletes: remove broken binpkgs (when plist cannot be internalized). --- bin/xbps-repo/remove-obsoletes.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/bin/xbps-repo/remove-obsoletes.c b/bin/xbps-repo/remove-obsoletes.c index 1c52f06c..db61bbb8 100644 --- a/bin/xbps-repo/remove-obsoletes.c +++ b/bin/xbps-repo/remove-obsoletes.c @@ -85,9 +85,15 @@ repo_remove_obsoletes(struct xbps_handle *xhp, const char *repodir) pkgd = xbps_dictionary_metadata_plist_by_url(dp->d_name, "./props.plist"); if (pkgd == NULL) { - fprintf(stderr, "failed to read metadata for `%s'," - " skipping!\n", dp->d_name); - continue; + rv = repo_remove_pkg(repodir, arch, dp->d_name); + if (rv != 0) { + fprintf(stderr, "index: failed to remove " + "package `%s': %s\n", dp->d_name, + strerror(rv)); + prop_object_release(pkgd); + break; + } + printf("Removed broken package `%s'.\n", dp->d_name); } prop_dictionary_get_cstring_nocopy(pkgd, "pkgver", &pkgver); prop_dictionary_get_cstring_nocopy(pkgd, "architecture", &arch);