Ticket #10028: 0001-Always-use-dlopen-and-dlsym-to-load-libsolv.patch

File 0001-Always-use-dlopen-and-dlsym-to-load-libsolv.patch, 2.2 KB (added by nielx, 11 years ago)
  • src/kits/package/solver/LibsolvSolver.cpp

    From de6ef60063227678a35485060d33c5ab6c918eac Mon Sep 17 00:00:00 2001
    From: Niels Sascha Reedijk <niels.reedijk@gmail.com>
    Date: Sun, 29 Sep 2013 17:35:14 +0200
    Subject: [PATCH 1/3] Always use dlopen and dlsym to load libsolv
    
    Previous implementation used weak symbols on all platforms except Haiku. Mac OS X also does not support this use of weak symbols. In the discussion of #10028 it was decided that probably more platforms will have problems with this approach, so instead use the approach that always works.
    ---
     src/kits/package/solver/LibsolvSolver.cpp | 16 ----------------
     src/kits/package/solver/Solver.cpp        | 15 ---------------
     2 files changed, 31 deletions(-)
    
    diff --git a/src/kits/package/solver/LibsolvSolver.cpp b/src/kits/package/solver/LibsolvSolver.cpp
    index a3ecbb7..12a4b6a 100644
    a b  
    3838// abort()s. Obviously that isn't good behavior for a library.
    3939
    4040
    41 #ifdef __HAIKU__
    42 
    43 
    4441BSolver*
    4542BPackageKit::create_solver()
    4643{
    BPackageKit::create_solver()  
    4845}
    4946
    5047
    51 #else
    52 
    53 
    54 extern "C" BSolver*
    55 __create_libsolv_solver()
    56 {
    57     return new(std::nothrow) LibsolvSolver;
    58 }
    59 
    60 
    61 #endif
    62 
    63 
    6448struct LibsolvSolver::SolvQueue : Queue {
    6549    SolvQueue()
    6650    {
  • src/kits/package/solver/Solver.cpp

    diff --git a/src/kits/package/solver/Solver.cpp b/src/kits/package/solver/Solver.cpp
    index e6984cd..7f5c630 100644
    a b  
    1313typedef BPackageKit::BSolver* CreateSolverFunction();
    1414
    1515
    16 #ifdef __HAIKU__
    17 
    18 
    1916#include <dlfcn.h>
    2017#include <pthread.h>
    2118
    load_libsolv_solver_add_on()  
    4138        dlclose(imageHandle);
    4239}
    4340
    44 #else
    45 
    46 
    47 static BPackageKit::BSolver* __create_libsolv_solver()
    48     __attribute__((weakref("__create_libsolv_solver")));
    49 static CreateSolverFunction* sCreateSolver = &__create_libsolv_solver;
    50 
    51 
    52 #endif
    53 
    5441
    5542namespace BPackageKit {
    5643
    BSolver::~BSolver()  
    6855/*static*/ status_t
    6956BSolver::Create(BSolver*& _solver)
    7057{
    71 #ifdef __HAIKU__
    7258    pthread_once(&sLoadLibsolvSolverAddOnInitOnce, &load_libsolv_solver_add_on);
    73 #endif
    7459    if (sCreateSolver == NULL)
    7560        return B_NOT_SUPPORTED;
    7661