Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Get rid of pkg_register_shlibs() and use pkg_analyse_files() in pkg create.
Bryan Drewery committed 11 years ago
commit bfe76d6c6b392212050255dcdeaedc9b32818b84
parent ca3dd25
3 files changed +4 -47
modified libpkg/pkg_create.c
@@ -135,7 +135,7 @@ pkg_create_from_dir(struct pkg *pkg, const char *root,
		 */
		struct sbuf *b = sbuf_new_auto();

-
		pkg_register_shlibs(pkg, root);
+
		pkg_analyse_files(NULL, pkg, root);

		pkg_emit_manifest_sbuf(pkg, b, PKG_MANIFEST_EMIT_COMPACT, NULL);
		packing_append_buffer(pkg_archive, sbuf_data(b), "+COMPACT_MANIFEST", sbuf_len(b));
modified libpkg/pkg_elf.c
@@ -453,6 +453,9 @@ pkg_analyse_files(struct pkgdb *db, struct pkg *pkg, const char *stage)

	developer = pkg_object_bool(pkg_config_get("DEVELOPER_MODE"));

+
	pkg_list_free(pkg, PKG_SHLIBS_REQUIRED);
+
	pkg_list_free(pkg, PKG_SHLIBS_PROVIDED);
+

	if (elf_version(EV_CURRENT) == EV_NONE)
		return (EPKG_FATAL);

@@ -504,50 +507,6 @@ cleanup:
	return (ret);
}

-
int
-
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);
-

-
	if (elf_version(EV_CURRENT) == EV_NONE)
-
		return (EPKG_FATAL);
-

-
	shlib_list_init();
-
	if (shlib_list_from_elf_hints(_PATH_ELF_HINTS) != EPKG_OK) {
-
		shlib_list_free();
-
		return (EPKG_FATAL);
-
	}
-

-
	while(pkg_files(pkg, &file) == EPKG_OK) {
-
		if (root != NULL) {
-
			snprintf(fpath, sizeof(fpath), "%s%s", root, pkg_file_path(file));
-
			analyse_elf(pkg, fpath, add_shlibs_to_pkg, NULL);
-
		} else
-
			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);
-
}
-

static const char *
elf_corres_to_string(const struct _elf_corres* m, int e)
{
modified libpkg/private/pkg.h
@@ -504,8 +504,6 @@ int pkgdb_register_finale(struct pkgdb *db, int retcode);
int pkgdb_set_pkg_digest(struct pkgdb *db, struct pkg *pkg);
int pkgdb_is_dir_used(struct pkgdb *db, const char *dir, int64_t *res);

-
int pkg_register_shlibs(struct pkg *pkg, const char *root);
-

int pkg_emit_manifest_sbuf(struct pkg*, struct sbuf *, short, char **);
int pkg_emit_filelist(struct pkg *, FILE *);