Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Upgrade can also install new package :)
Baptiste Daroussin committed 14 years ago
commit 1494dd12e75d33983d11ac033cff487836294b64
parent 69d5b0b
2 files changed +21 -9
modified libpkg/pkg_jobs.c
@@ -118,13 +118,16 @@ pkg_jobs_upgrade(struct pkg_jobs *j)
	cachedir = pkg_config("PKG_CACHEDIR");
	p = NULL;
	while (pkg_jobs(j, &p) == EPKG_OK) {
-
		/* get the installed pkg */
+
		/* get the installed pkg if any */
		it = pkgdb_query(j->db, pkg_get(p, PKG_ORIGIN), MATCH_EXACT);
-
		pkgdb_it_next(it, &oldpkg, PKG_LOAD_BASIC);
-
		snprintf(path, sizeof(path), "%s/%s", cachedir,
-
				pkg_get(p, PKG_REPOPATH));
+
		if (pkgdb_it_next(it, &oldpkg, PKG_LOAD_BASIC) == EPKG_OK) {
+
			snprintf(path, sizeof(path), "%s/%s", cachedir,
+
					pkg_get(p, PKG_REPOPATH));
+
			retcode = pkg_upgrade(j->db, oldpkg, path);
+
		} else {
+
			retcode = pkg_upgrade(j->db, NULL, path);
+
		}

-
		retcode = pkg_upgrade(j->db, oldpkg, path);
		if (retcode != EPKG_OK)
			return (retcode);
	}
modified libpkg/pkg_upgrade.c
@@ -7,10 +7,19 @@ pkg_upgrade(struct pkgdb *db, struct pkg *pkg, const char *path)
{
	int ret;

-
	if ((ret = pkg_delete2(pkg, db, 1, 0)) != EPKG_OK)
-
		return (ret);
-
	if ((ret = pkg_add2(db, path, 0,pkg_isautomatic(pkg))) != EPKG_OK)
-
		return (ret);
+
	if (pkg != NULL) {
+
		if ((ret = pkg_delete2(pkg, db, 1, 0)) != EPKG_OK)
+
			return (ret);
+
		if ((ret = pkg_add2(db, path, 0,pkg_isautomatic(pkg))) != EPKG_OK)
+
			return (ret);
+
	} else {
+
		/*
+
		 * In upgrade case a new package is a dep so it is an automatic
+
		 * installation
+
		 */
+
		if ((ret = pkg_add2(db, path, 0, 1)) != EPKG_OK)
+
			return (ret);
+
	}

	return (EPKG_OK);
}