Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Use plain .so for all shared libraries for now.
Vsevolod Stakhov committed 11 years ago
commit e127d91d49b416bd0e31770dfe6b2df7a8f307d6
parent 44e6531
2 files changed +26 -5
modified libpkg/pkg.c
@@ -1107,12 +1107,35 @@ pkg_addoption_description(struct pkg *pkg, const char *key,
	return (EPKG_OK);
}

+
static void
+
pkg_handle_sostr(const char *name, struct sbuf **sb)
+
{
+
	const char *sopos;
+

+
	/* Cut off everything after .so */
+
	sopos = strstr(name, ".so");
+
	if (sopos != NULL) {
+
		sopos += sizeof(".so") - 1;
+
		if (*sopos == '.') {
+
			int len = sopos - name;
+

+
			*sb = sbuf_new_auto();
+
			sbuf_bcat(*sb, name, len);
+
		}
+
		else
+
			sbuf_set(sb, name);
+
	}
+
	else
+
		sbuf_set(sb, name);
+
}
+

int
pkg_addshlib_required(struct pkg *pkg, const char *name)
{
	struct pkg_shlib *s = NULL;
	const char *origin;

+

	assert(pkg != NULL);
	assert(name != NULL && name[0] != '\0');

@@ -1122,8 +1145,7 @@ pkg_addshlib_required(struct pkg *pkg, const char *name)
		return (EPKG_OK);

	pkg_shlib_new(&s);
-

-
	sbuf_set(&s->name, name);
+
	pkg_handle_sostr(name, &s->name);

	HASH_ADD_KEYPTR(hh, pkg->shlibs_required,
	    pkg_shlib_name(s),
@@ -1151,8 +1173,7 @@ pkg_addshlib_provided(struct pkg *pkg, const char *name)
		return (EPKG_OK);

	pkg_shlib_new(&s);
-

-
	sbuf_set(&s->name, name);
+
	pkg_handle_sostr(name, &s->name);

	HASH_ADD_KEYPTR(hh, pkg->shlibs_provided,
	    pkg_shlib_name(s),
modified libpkg/pkg_solve.c
@@ -370,7 +370,7 @@ pkg_solve_add_require_rule(struct pkg_solve_problem *problem,
	HASH_FIND_STR(problem->j->universe->provides, pkg_shlib_name(shlib), prhead);
	if (prhead != NULL) {
		/* Require rule !A | P1 | P2 | P3 ... */
-
		rule = pkg_solve_rule_new("require");
+
		rule = pkg_solve_rule_new(pkg_shlib_name(shlib));
		if (rule == NULL)
			return (EPKG_FATAL);
		/* !A */