Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Do not require libraries that are provided.
Vsevolod Stakhov committed 12 years ago
commit c0e2f8b7f45212b3578b2f02c14417f0e0e9326b
parent c1298fe
2 files changed +15 -5
modified libpkg/pkg.c
@@ -1006,11 +1006,6 @@ pkg_addshlib_required(struct pkg *pkg, const char *name)
	if (s != NULL)
		return (EPKG_OK);

-
	HASH_FIND_STR(pkg->shlibs_provided, name, s);
-
	/* avoid deps on the same package */
-
	if (s != NULL)
-
		return (EPKG_OK);
-

	pkg_shlib_new(&s);

	sbuf_set(&s->name, name);
modified libpkg/pkg_elf.c
@@ -481,6 +481,8 @@ pkg_register_shlibs(struct pkg *pkg, const char *root)
{
	struct pkg_file        *file = NULL;
	char fpath[MAXPATHLEN];
+
	struct pkg_shlib *sh, *shtmp, *found;
+
	const char *origin;

	pkg_list_free(pkg, PKG_SHLIBS_REQUIRED);

@@ -501,6 +503,19 @@ pkg_register_shlibs(struct pkg *pkg, const char *root)
			analyse_elf(pkg, pkg_file_path(file), add_shlibs_to_pkg, NULL);
	}

+
	pkg_get(pkg, PKG_ORIGIN, &origin);
+
	/*
+
	 * Do not depend on libraries that a package provides itself
+
	 */
+
	HASH_ITER(hh, pkg->shlibs_required, sh, shtmp) {
+
		HASH_FIND_STR(pkg->shlibs_provided, pkg_shlib_name(sh), found);
+
		if (found != NULL) {
+
			pkg_debug(2, "remove %s from required shlibs as the package %s provides "
+
					"this library itself", pkg_shlib_name(sh), origin);
+
			HASH_DEL(pkg->shlibs_required, sh);
+
		}
+
	}
+

	shlib_list_free();
	return (EPKG_OK);
}