Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
Use plain .so for all shared libraries for now.
Vsevolod Stakhov committed 11 years ago
commit e127d91d49b416bd0e31770dfe6b2df7a8f307d6
parent 44e6531541ad3d2930c156696fe46a1f8db560df
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 */