Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Do not be conservative when upgrading pkg
Baptiste Daroussin committed 10 years ago
commit 22101cbfc446780e32dac638863a83333d6f3c3b
parent 821129a
4 files changed +104 -5
modified libpkg/pkg_jobs.c
@@ -93,6 +93,7 @@ pkg_jobs_new(struct pkg_jobs **j, pkg_jobs_t t, struct pkgdb *db)
	(*j)->type = t;
	(*j)->solved = 0;
	(*j)->flags = PKG_FLAG_NONE;
+
	(*j)->conservative = pkg_object_bool(pkg_config_get("CONSERVATIVE_UPGRADE"));

	return (EPKG_OK);
}
@@ -1544,6 +1545,7 @@ jobs_solve_install_upgrade(struct pkg_jobs *j)
	    (j->flags & PKG_FLAG_PKG_VERSION_TEST) == PKG_FLAG_PKG_VERSION_TEST)
		if (new_pkg_version(j)) {
			j->flags &= ~PKG_FLAG_PKG_VERSION_TEST;
+
			j->conservative = false;
			pkg_emit_newpkgversion();
			goto order;
		}
@@ -1761,6 +1763,7 @@ pkg_jobs_solve(struct pkg_jobs *j)
		}
		else {
again:
+

			pkg_jobs_universe_process_upgrade_chains(j);
			problem = pkg_solve_jobs_to_sat(j);
			if (problem != NULL) {
modified libpkg/pkg_jobs_universe.c
@@ -1002,9 +1002,6 @@ pkg_jobs_universe_process_upgrade_chains(struct pkg_jobs *j)
	struct pkg_job_universe_item *unit, *tmp, *cur, *local;
	struct pkg_job_request *req;
	struct pkg_job_request_item *rit, *rtmp;
-
	bool conservative = false;
-

-
	conservative = pkg_object_bool(pkg_config_get("CONSERVATIVE_UPGRADE"));

	HASH_ITER(hh, j->universe->items, unit, tmp) {
		unsigned vercnt = 0;
@@ -1044,7 +1041,7 @@ pkg_jobs_universe_process_upgrade_chains(struct pkg_jobs *j)
			struct pkg_job_universe_item *selected;

			selected = pkg_jobs_universe_select_candidate(unit, local,
-
				conservative);
+
				j->conservative);
			/*
			 * Now remove all requests but selected from the requested
			 * candidates
modified libpkg/private/pkg_jobs.h
@@ -117,6 +117,7 @@ struct pkg_jobs {
	const char *destdir;
	TREE_HEAD(, pkg_jobs_conflict_item) *conflict_items;
	struct job_pattern *patterns;
+
	bool conservative;
};

struct job_pattern {
modified tests/frontend/autoupgrade.sh
@@ -3,7 +3,8 @@
. $(atf_get_srcdir)/test_environment.sh

tests_init \
-
	autoupgrade
+
	autoupgrade \
+
	autoupgrade_multirepo

autoupgrade_body() {

@@ -67,3 +68,100 @@ EOF
		pkg -o REPOS_DIR="$TMPDIR" -o PKG_CACHEDIR="$TMPDIR" upgrade -n
}

+
autoupgrade_multirepo_head() {
+
	atf_set "timeout" 10
+
}
+

+
autoupgrade_multirepo_body() {
+

+
	cat << EOF > pkg1.ucl
+
name: pkg
+
origin: test
+
version: 1
+
maintainer: test
+
categories: [test]
+
comment: a test
+
www: http://test
+
prefix: /usr/local
+
desc: <<EOD
+
Yet another test
+
EOD
+
EOF
+

+
	cat << EOF > pkg2.ucl
+
name: pkg
+
origin: test
+
version: "1.1"
+
maintainer: test
+
categories: [test]
+
comment: a test
+
www: http://test
+
prefix: /usr/local
+
desc: <<EOD
+
Yet another test
+
EOD
+
EOF
+

+
	atf_check \
+
		-o match:".*Installing.*\.\.\.$" \
+
		-e empty \
+
		-s exit:0 \
+
		pkg register -M pkg1.ucl
+

+
	mkdir repo1 repo2
+

+
	atf_check \
+
		-o ignore \
+
		-e empty \
+
		-s exit:0 \
+
		pkg create -M ./pkg1.ucl -o repo1
+

+
	atf_check \
+
		-o ignore \
+
		-e empty \
+
		-s exit:0 \
+
		pkg create -M ./pkg2.ucl -o repo2
+

+
	atf_check \
+
		-o ignore \
+
		-e empty \
+
		-s exit:0 \
+
		pkg repo repo1
+

+
	atf_check \
+
		-o ignore \
+
		-e empty \
+
		-s exit:0 \
+
		pkg repo repo2
+

+
	cat << EOF > repo.conf
+
repo1: {
+
	url: file:///$TMPDIR/repo1,
+
	enabled: true
+
}
+
repo2: {
+
	url: file:///$TMPDIR/repo2,
+
	enabled: true
+
}
+
EOF
+

+
	export REPOS_DIR="${TMPDIR}"
+
	atf_check \
+
		-o ignore \
+
		-e empty \
+
		-s exit:0 \
+
		pkg install -r repo1 -fy pkg-1
+

+
	atf_check \
+
		-o match:".*New version of pkg detected.*" \
+
		-e empty \
+
		-s exit:0 \
+
		pkg upgrade -y
+

+
	atf_check \
+
		-o ignore \
+
		-e empty \
+
		-s exit:0 \
+
		pkg upgrade -y
+
}
+