}
PAKFIRE_EXPORT PakfireFilelist pakfire_archive_get_filelist(PakfireArchive archive) {
- return archive->filelist;
+#if 0
+ if (!archive->filelist) {
+ int r = pakfire_archive_load_filelist(archive);
+ if (r)
+ return NULL;
+ }
+#endif
+
+ return pakfire_filelist_ref(archive->filelist);
}
PAKFIRE_EXPORT const char* pakfire_archive_signature_get_data(PakfireArchiveSignature signature) {
return r;
}
+
+int pakfire_filelist_contains(PakfireFilelist list, const char* pattern) {
+ if (!pattern) {
+ errno = EINVAL;
+ return -1;
+ }
+
+ for (unsigned int i = 0; i < list->size; i++) {
+ PakfireFile file = list->elements[i];
+
+ const char* path = pakfire_file_get_path(file);
+ if (!path)
+ return -1;
+
+ int r = fnmatch(pattern, path, 0);
+ if (r == 0)
+ return 1;
+ }
+
+ return 0;
+}
int pakfire_filelist_scan(PakfireFilelist list, const char* root,
const char** includes, const char** excludes);
+int pakfire_filelist_contains(PakfireFilelist list, const char* pattern);
+
#endif
#endif /* PAKFIRE_FILELIST_H */
free(nevra);
}
- // Update the runtime linker cache
- pakfire_run_ldconfig(step);
+ // Is it necessary to call ldconfig?
+ PakfireFilelist filelist = pakfire_archive_get_filelist(step->archive);
+ if (filelist) {
+ int need_ldconfig = pakfire_filelist_contains(filelist, "*/lib*.so.?");
+
+ // Update the runtime linker cache
+ if (need_ldconfig)
+ pakfire_run_ldconfig(step);
+
+ pakfire_filelist_unref(filelist);
+ }
return r;
}