When reinstalling existing pkgs, remove previous entry in pkgdb's requiredby.
This commit is contained in:
3
NEWS
3
NEWS
@ -1,5 +1,8 @@
|
|||||||
xbps-0.15 (???):
|
xbps-0.15 (???):
|
||||||
|
|
||||||
|
* When reinstalling existing packages (xbps-bin -f install), make sure
|
||||||
|
to remove previous entry in the "requiredby" pkgdb's array object.
|
||||||
|
|
||||||
* When sorting required dependencies make sure that a pkg with
|
* When sorting required dependencies make sure that a pkg with
|
||||||
required version is taken into account, not just the first
|
required version is taken into account, not just the first
|
||||||
one matching its pkgname.
|
one matching its pkgname.
|
||||||
|
@ -56,7 +56,7 @@
|
|||||||
*/
|
*/
|
||||||
#define XBPS_PKGINDEX_VERSION "1.4"
|
#define XBPS_PKGINDEX_VERSION "1.4"
|
||||||
|
|
||||||
#define XBPS_API_VERSION "20120330"
|
#define XBPS_API_VERSION "20120404"
|
||||||
#define XBPS_VERSION "0.15"
|
#define XBPS_VERSION "0.15"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -36,6 +36,7 @@ add_pkg_into_reqby(prop_dictionary_t pkgd, const char *pkgver)
|
|||||||
{
|
{
|
||||||
prop_array_t reqby;
|
prop_array_t reqby;
|
||||||
prop_string_t reqstr;
|
prop_string_t reqstr;
|
||||||
|
char *pkgname;
|
||||||
bool alloc = false;
|
bool alloc = false;
|
||||||
|
|
||||||
assert(prop_object_type(pkgd) == PROP_TYPE_DICTIONARY);
|
assert(prop_object_type(pkgd) == PROP_TYPE_DICTIONARY);
|
||||||
@ -46,9 +47,23 @@ add_pkg_into_reqby(prop_dictionary_t pkgd, const char *pkgver)
|
|||||||
return ENOMEM;
|
return ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* the entry already exists, do nothing */
|
/*
|
||||||
if (xbps_match_string_in_array(reqby, pkgver))
|
* If an existing entry matching pkgname exists remove it
|
||||||
return 0;
|
* and add new pkgver object.
|
||||||
|
*/
|
||||||
|
pkgname = xbps_pkg_name(pkgver);
|
||||||
|
if (pkgname == NULL)
|
||||||
|
return ENOMEM;
|
||||||
|
|
||||||
|
if (xbps_match_pkgname_in_array(reqby, pkgname)) {
|
||||||
|
if (!xbps_remove_pkgname_from_array(reqby, pkgname)) {
|
||||||
|
xbps_dbg_printf("%s: failed to remove %s reqby entry: "
|
||||||
|
"%s\n", __func__, pkgname, strerror(errno));
|
||||||
|
free(pkgname);
|
||||||
|
return EINVAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
free(pkgname);
|
||||||
|
|
||||||
reqstr = prop_string_create_cstring(pkgver);
|
reqstr = prop_string_create_cstring(pkgver);
|
||||||
if (reqstr == NULL) {
|
if (reqstr == NULL) {
|
||||||
|
Reference in New Issue
Block a user