Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Allow minor OSVERSION missmatch in a more user-friendly matter
Vsevolod Stakhov committed 8 years ago
commit 04feb5851df98e8244200e29a6b134c06da06822
parent c239d13
1 file changed +24 -4
modified libpkg/utils.c
@@ -353,6 +353,10 @@ is_valid_os_version(struct pkg *pkg)
	const char *fbsd_version;
	const char *errstr = NULL;
	int fbsdver;
+
	char query_buf[512];
+
	/* -1: not checked, 0: not allowed, 1: allowed */
+
	static int osver_missmatch_allowed = -1;
+
	bool ret;

	if (pkg_object_bool(pkg_config_get("IGNORE_OSVERSION")))
		return (true);
@@ -364,10 +368,26 @@ is_valid_os_version(struct pkg *pkg)
			return (false);
		}
		if (fbsdver > ctx.osversion) {
-
			pkg_emit_error("Newer FreeBSD version for package %s:\n"
-
			    "- package: %d\n- running kernel: %d", pkg->name,
-
			    fbsdver, ctx.osversion);
-
			return (false);
+
			if (fbsdver - ctx.osversion < 100000) {
+
				/* Negligible difference, ask user to enforce */
+
				if (osver_missmatch_allowed == -1) {
+
					snprintf(query_buf, sizeof(query_buf),
+
							"Newer FreeBSD version for package %s:\n"
+
							"- package: %d\n- running kernel: %d\n"
+
							"Allow missmatch?", pkg->name,
+
							fbsdver, ctx.osversion)
+
					ret = pkg_emit_query_yesno(true, query_buf);
+
					osver_missmatch_allowed = ret;
+
				}
+

+
				return (osver_missmatch_allowed);
+
			}
+
			else {
+
				pkg_emit_error("Newer FreeBSD version for package %s:\n"
+
					"- package: %d\n- running kernel: %d", pkg->name,
+
					fbsdver, ctx.osversion);
+
				return (false);
+
			}
		}
	}
	return (true);