lib: keep pkgdb props on updates in the proper place.
Improve f906f5a83d
This commit is contained in:
parent
7a1f5424f6
commit
6b6b394686
@ -35,15 +35,11 @@ int HIDDEN
|
||||
xbps_register_pkg(struct xbps_handle *xhp, xbps_dictionary_t pkgrd)
|
||||
{
|
||||
xbps_array_t replaces;
|
||||
xbps_dictionary_t pkgd, pkgdbd;
|
||||
xbps_object_t obj;
|
||||
xbps_dictionary_t pkgd;
|
||||
time_t t;
|
||||
struct tm tm;
|
||||
struct tm *tmp;
|
||||
struct tm tm, *tmp;
|
||||
const char *pkgver, *pkgname;
|
||||
char sha256[XBPS_SHA256_SIZE];
|
||||
char outstr[64];
|
||||
char *buf;
|
||||
char sha256[XBPS_SHA256_SIZE], outstr[64], *buf;
|
||||
int rv = 0;
|
||||
bool autoinst = false;
|
||||
|
||||
@ -106,23 +102,6 @@ xbps_register_pkg(struct xbps_handle *xhp, xbps_dictionary_t pkgrd)
|
||||
xbps_dictionary_set_cstring(pkgd, "metafile-sha256", sha256);
|
||||
}
|
||||
free(buf);
|
||||
/*
|
||||
* Keep objects stored in pkgdb (if found).
|
||||
*/
|
||||
if ((pkgdbd = xbps_pkgdb_get_pkg(xhp, pkgname))) {
|
||||
obj = xbps_dictionary_get(pkgdbd, "hold");
|
||||
if (obj) {
|
||||
xbps_dictionary_set(pkgd, "hold", obj);
|
||||
}
|
||||
obj = xbps_dictionary_get(pkgdbd, "repolock");
|
||||
if (obj) {
|
||||
xbps_dictionary_set(pkgd, "repolock", obj);
|
||||
}
|
||||
obj = xbps_dictionary_get(pkgdbd, "automatic-install");
|
||||
if (obj) {
|
||||
xbps_dictionary_set(pkgd, "automatic-install", obj);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Remove self replacement when applicable.
|
||||
*/
|
||||
|
@ -56,13 +56,13 @@ static int
|
||||
trans_find_pkg(struct xbps_handle *xhp, const char *pkg, bool reinstall)
|
||||
{
|
||||
xbps_dictionary_t pkg_pkgdb = NULL, pkg_repod = NULL;
|
||||
xbps_object_t obj;
|
||||
xbps_array_t pkgs;
|
||||
pkg_state_t state = 0;
|
||||
xbps_trans_type_t ttype;
|
||||
const char *repoloc, *repopkgver, *instpkgver, *pkgname;
|
||||
char buf[XBPS_NAME_SIZE] = {0};
|
||||
int rv = 0;
|
||||
bool autoinst = false, repolock = false;
|
||||
|
||||
assert(pkg != NULL);
|
||||
|
||||
@ -97,8 +97,7 @@ trans_find_pkg(struct xbps_handle *xhp, const char *pkg, bool reinstall)
|
||||
} else {
|
||||
ttype = XBPS_TRANS_UPDATE;
|
||||
}
|
||||
xbps_dictionary_get_bool(pkg_pkgdb, "repolock", &repolock);
|
||||
if (repolock) {
|
||||
if (xbps_dictionary_get(pkg_pkgdb, "repolock")) {
|
||||
struct xbps_repo *repo;
|
||||
/* find update from repo */
|
||||
xbps_dictionary_get_cstring_nocopy(pkg_pkgdb, "repository", &repoloc);
|
||||
@ -152,10 +151,12 @@ trans_find_pkg(struct xbps_handle *xhp, const char *pkg, bool reinstall)
|
||||
/*
|
||||
* If pkg is already installed, respect some properties.
|
||||
*/
|
||||
if (xbps_dictionary_get_bool(pkg_pkgdb, "automatic-install", &autoinst))
|
||||
xbps_dictionary_set_bool(pkg_repod, "automatic-install", autoinst);
|
||||
if (xbps_dictionary_get_bool(pkg_pkgdb, "repolock", &repolock))
|
||||
xbps_dictionary_set_bool(pkg_repod, "repolock", repolock);
|
||||
if ((obj = xbps_dictionary_get(pkg_pkgdb, "automatic-install")))
|
||||
xbps_dictionary_set(pkg_repod, "automatic-install", obj);
|
||||
if ((obj = xbps_dictionary_get(pkg_pkgdb, "hold")))
|
||||
xbps_dictionary_set(pkg_repod, "hold", obj);
|
||||
if ((obj = xbps_dictionary_get(pkg_pkgdb, "repolock")))
|
||||
xbps_dictionary_set(pkg_repod, "repolock", obj);
|
||||
}
|
||||
/*
|
||||
* Prepare transaction dictionary.
|
||||
|
Loading…
Reference in New Issue
Block a user