Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
pkg upgrade -f now force reinstalling/upgrading everything
Baptiste Daroussin committed 14 years ago
commit 31985da35f22e9c6262ac92a6ec682f4a2791681
parent 5cdd96c
3 files changed +21 -6
modified libpkg/pkg.h
@@ -580,7 +580,7 @@ struct pkgdb_it * pkgdb_rquery(struct pkgdb *db, const char *pattern,
 * 
 */
struct pkgdb_it *pkgdb_query_installs(struct pkgdb *db, match_t type, int nbpkgs, char **pkgs, const char *reponame);
-
struct pkgdb_it *pkgdb_query_upgrades(struct pkgdb *db, const char *reponame);
+
struct pkgdb_it *pkgdb_query_upgrades(struct pkgdb *db, const char *reponame, bool all);
struct pkgdb_it *pkgdb_query_downgrades(struct pkgdb *db, const char *reponame);
struct pkgdb_it *pkgdb_query_delete(struct pkgdb *db, match_t type, int nbpkgs, char **pkgs, int recursive);
struct pkgdb_it *pkgdb_query_autoremove(struct pkgdb *db);
modified libpkg/pkgdb.c
@@ -2065,7 +2065,7 @@ pkgdb_query_installs(struct pkgdb *db, match_t match, int nbpkgs, char **pkgs, c
}

struct pkgdb_it *
-
pkgdb_query_upgrades(struct pkgdb *db, const char *repo)
+
pkgdb_query_upgrades(struct pkgdb *db, const char *repo, bool all)
{
	sqlite3_stmt *stmt = NULL;
	struct sbuf *sql = sbuf_new_auto();
@@ -2102,7 +2102,9 @@ pkgdb_query_upgrades(struct pkgdb *db, const char *repo)
				"(SELECT d.origin from '%s'.deps AS d, pkgjobs as j WHERE d.package_id = j.pkgid) "
				"AND (SELECT p.origin from main.packages as p WHERE p.origin=r.origin AND version=r.version) IS NULL;";

-
	const char pkgjobs_sql_3[] = "INSERT OR REPLACE INTO pkgjobs (pkgid, origin, name, version, comment, desc, message, arch, "
+
	const char *pkgjobs_sql_3;
+
	if (!all) {
+
		pkgjobs_sql_3 = "INSERT OR REPLACE INTO pkgjobs (pkgid, origin, name, version, comment, desc, message, arch, "
			"osversion, maintainer, www, prefix, flatsize, newversion, newflatsize, pkgsize, "
			"cksum, repopath, automatic) "
			"SELECT l.id, l.origin, l.name, l.version, l.comment, l.desc, l.message, l.arch, "
@@ -2110,6 +2112,15 @@ pkgdb_query_upgrades(struct pkgdb *db, const char *repo)
			"r.flatsize AS newflatsize, r.pkgsize, r.cksum, r.repopath, r.automatic "
			"FROM main.packages AS l, pkgjobs AS r WHERE l.origin = r.origin "
			"AND (PKGLT(l.version, r.version) OR (l.name != r.name))";
+
	} else {
+
		pkgjobs_sql_3 = "INSERT OR REPLACE INTO pkgjobs (pkgid, origin, name, version, comment, desc, message, arch, "
+
			"osversion, maintainer, www, prefix, flatsize, newversion, newflatsize, pkgsize, "
+
			"cksum, repopath, automatic) "
+
			"SELECT l.id, l.origin, l.name, l.version, l.comment, l.desc, l.message, l.arch, "
+
			"l.osversion, l.maintainer, l.www, l.prefix, l.flatsize, r.version AS newversion, "
+
			"r.flatsize AS newflatsize, r.pkgsize, r.cksum, r.repopath, r.automatic "
+
			"FROM main.packages AS l, pkgjobs AS r WHERE l.origin = r.origin";
+
	}

	/* Working on multiple repositories */
	pkg_config_bool(PKG_CONFIG_MULTIREPOS, &multirepos_enabled);
modified pkg/upgrade.c
@@ -17,7 +17,7 @@
void
usage_upgrade(void)
{
-
	fprintf(stderr, "usage pkg upgrade [-r reponame] [-y]\n");
+
	fprintf(stderr, "usage pkg upgrade [-r reponame] [-yf]\n");
	fprintf(stderr, "For more information see 'pkg help upgrade'.\n");
}

@@ -35,13 +35,14 @@ exec_upgrade(int argc, char **argv)
	char size[7];
	int ch;
	bool yes = false;
+
	bool all = false;

	if (geteuid() != 0) {
		warnx("upgrading can only be done as root");
		return (EX_NOPERM);
	}

-
	while ((ch = getopt(argc, argv, "yr:")) != -1) {
+
	while ((ch = getopt(argc, argv, "yr:f")) != -1) {
		switch (ch) {
			case 'y':
				yes = true;
@@ -49,6 +50,9 @@ exec_upgrade(int argc, char **argv)
			case 'r':
				reponame = optarg;
				break;
+
			case 'f':
+
				all = true;
+
				break;
			default:
				usage_upgrade();
				return (EX_USAGE);
@@ -71,7 +75,7 @@ exec_upgrade(int argc, char **argv)
		goto cleanup;
	}

-
	if ((it = pkgdb_query_upgrades(db, reponame)) == NULL) {
+
	if ((it = pkgdb_query_upgrades(db, reponame, all)) == NULL) {
		goto cleanup;
	}