On 1 October 2013 11:28, Jessica Hamilton <jessica.l.hamilton@xxxxxxxxx>wrote: > > > On 1 October 2013 10:50, Rene Gollent <anevilyak@xxxxxxxxx> wrote: > >> >> On Sep 30, 2013 5:47 PM, "Jessica Hamilton" <jessica.l.hamilton@xxxxxxxxx> >> wrote: >> > >> > No, the problem is the dlopen call is failing because of the unresolved >> dependency on libroot_build.so for whatever reason as per my other email. >> >> Not on FreeBSD, I did in fact verify what was going on before sending my >> reply. >> > I take that back then :-) Linkers are definitely an arcane art... > > On Linux I get this error from dlerror: > > libpackage-add-on-libsolv_build.so: invalid mode for dlopen(): Invalid > argument > > Still digging... > Okay, so the problem is passing the value 0 to dlopen instead of the proper flags. Obviously they differ across platforms. diff --git a/src/kits/package/solver/Solver.cpp b/src/kits/package/solver/Solver index 7f5c630..8a7bfc4 --- a/src/kits/package/solver/Solver.cpp +++ b/src/kits/package/solver/Solver.cpp @@ -28,7 +28,7 @@ load_libsolv_solver_add_on() #ifdef HAIKU_TARGET_PLATFORM_HAIKU void* imageHandle = dlopen("libpackage-add-on-libsolv.so", 0); #else - void* imageHandle = dlopen("libpackage-add-on-libsolv_build.so", 0); + void* imageHandle = dlopen("libpackage-add-on-libsolv_build.so", RTLD_LA #endif if (imageHandle == NULL) return; Seems to be a working fix for me.