Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
New PKG_PERSMISSIVE mode to by pass conflicts
Baptiste Daroussin committed 13 years ago
commit 4020daf5f4b4232fb8fdc554bbfbc0c260197354
parent e109f51
3 files changed +17 -6
modified libpkg/pkg.h
@@ -280,6 +280,7 @@ typedef enum _pkg_config_key {
	PKG_CONFIG_PLUGINS,
	PKG_CONFIG_DEBUG_SCRIPTS,
	PKG_CONFIG_PLUGINS_CONF_DIR,
+
	PKG_PERMISSIVE,
} pkg_config_key;

typedef enum {
modified libpkg/pkg_config.c
@@ -169,6 +169,11 @@ static struct config_entry c[] = {
		"PLUGINS_CONF_DIR",
		PREFIX"/etc/pkg/",
	},
+
	[PKG_PERMISSIVE] = {
+
		PKG_CONFIG_BOOL,
+
		"PERMISSIVE",
+
		"NO",
+
	}
};

static bool parsed = false;
modified libpkg/pkgdb.c
@@ -1994,6 +1994,7 @@ pkgdb_register_pkg(struct pkgdb *db, struct pkg *pkg, int complete)
	while (pkg_files(pkg, &file) == EPKG_OK) {
		const char	*pkg_path = pkg_file_path(file);
		const char	*pkg_sum  = pkg_file_cksum(file);
+
		bool		permissive = false;

		ret = run_prstmt(FILES, pkg_path, pkg_sum, package_id);
		if (ret == SQLITE_DONE)
@@ -2014,13 +2015,17 @@ pkgdb_register_pkg(struct pkgdb *db, struct pkg *pkg, int complete)
			goto cleanup;
		}
		pkg_get(pkg2, PKG_NAME, &name2, PKG_VERSION, &version2);
-
		pkg_emit_error("%s-%s conflicts with %s-%s"
-
		    " (installs files into the same place). "
-
		    " Problematic file: %s",
-
		    name, version, name2, version2, pkg_path);
+
		pkg_config_bool(PKG_PERMISSIVE, &permissive);
+
			pkg_emit_error("%s-%s conflicts with %s-%s"
+
			    " (installs files into the same place). "
+
			    " Problematic file: %s%s",
+
			    name, version, name2, version2, pkg_path,
+
			    permissive ? " ignored" : "");
		pkg_free(pkg2);
-
		pkgdb_it_free(it);
-
		goto cleanup;
+
		if (!permissive) {
+
			pkgdb_it_free(it);
+
			goto cleanup;
+
		}
	}

	/*