On 1 October 2013 11:34, Jessica Hamilton <jessica.l.hamilton@xxxxxxxxx>wrote: > 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. > Oops, that should be: void* imageHandle = dlopen("libpackage-add-on-libsolv_build.so", RTLD_LAZY | RTLD_LOCAL); Cheers. Jessica