From dfb1473b973d17c8c887764cdd45a9ada34d4512 Mon Sep 17 00:00:00 2001 From: Andreas Beckmann Date: Sat, 27 Jan 2024 00:14:00 +0100 Subject: [PATCH] remove PRIMUS_LOAD_GLOBAL HACK and link against libglapi.so.0 instead Gbp-Pq: Name no-PRIMUS_LOAD_GLOBAL.patch --- Makefile | 4 +--- libglfork.cpp | 5 ----- primusrun | 3 --- 3 files changed, 1 insertion(+), 11 deletions(-) diff --git a/Makefile b/Makefile index a83e465..e450f17 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,6 @@ PRIMUS_VERBOSE ?= 1 PRIMUS_UPLOAD ?= 0 PRIMUS_SLEEP ?= 90 PRIMUS_DISPLAY ?= :8 -PRIMUS_LOAD_GLOBAL ?= libglapi.so.0 PRIMUS_libGLa ?= /usr/$$LIB/nvidia/libGL.so.1 PRIMUS_libGLd ?= /usr/$$LIB/libGL.so.1 @@ -24,10 +23,9 @@ CXXFLAGS += -DPRIMUS_VERBOSE='"$(PRIMUS_VERBOSE)"' CXXFLAGS += -DPRIMUS_UPLOAD='"$(PRIMUS_UPLOAD)"' CXXFLAGS += -DPRIMUS_SLEEP='"$(PRIMUS_SLEEP)"' CXXFLAGS += -DPRIMUS_DISPLAY='"$(PRIMUS_DISPLAY)"' -CXXFLAGS += -DPRIMUS_LOAD_GLOBAL='"$(PRIMUS_LOAD_GLOBAL)"' CXXFLAGS += -DPRIMUS_libGLa='"$(PRIMUS_libGLa)"' CXXFLAGS += -DPRIMUS_libGLd='"$(PRIMUS_libGLd)"' $(LIBDIR)/libGL.so.1: libglfork.cpp mkdir -p $(LIBDIR) - $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fvisibility=hidden -fPIC -shared -Wl,-Bsymbolic -o $@ $< $(LDFLAGS) -lX11 -lpthread -lrt + $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fvisibility=hidden -fPIC -shared -Wl,-Bsymbolic -o $@ $< $(LDFLAGS) -lX11 -lpthread -lrt -Wl,--no-as-needed /usr/lib/$(DEB_HOST_MULTIARCH)/libglapi.so.0 diff --git a/libglfork.cpp b/libglfork.cpp index 270918e..213779a 100644 --- a/libglfork.cpp +++ b/libglfork.cpp @@ -233,9 +233,6 @@ static struct PrimusInfo { // The "displaying" X display. The same as the application is using, but // primus opens its own connection. Display *ddpy; - // An artifact: primus needs to make symbols from libglapi.so globally - // visible before loading Mesa - const void *needed_global; CapturedFns afns; CapturedFns dfns; // FIXME: there are race conditions in accesses to these @@ -252,13 +249,11 @@ static struct PrimusInfo { autosleep(atoi(getconf(PRIMUS_SLEEP))), adpy(XOpenDisplay(adpy_str)), ddpy(XOpenDisplay(NULL)), - needed_global(dlopen(getconf(PRIMUS_LOAD_GLOBAL), RTLD_LAZY | RTLD_GLOBAL)), afns(libgla_str), dfns(getconf(PRIMUS_libGLd)) { die_if(!adpy, "failed to open secondary X display\n"); die_if(!ddpy, "failed to open main X display\n"); - die_if(!needed_global, "failed to load PRIMUS_LOAD_GLOBAL\n"); } } primus; diff --git a/primusrun b/primusrun index 91b22d9..75e943b 100755 --- a/primusrun +++ b/primusrun @@ -33,9 +33,6 @@ PRIMUS_libGL=${PRIMUS_libGL:-/usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linu # in default search paths. Add its path manually after the primus library # PRIMUS_libGL=${PRIMUS_libGL}:/usr/lib/nvidia-current:/usr/lib32/nvidia-current -# Mesa drivers need a few symbols to be visible -# export PRIMUS_LOAD_GLOBAL=${PRIMUS_LOAD_GLOBAL:-'libglapi.so.0'} - # Need functions from primus libGL to take precedence export LD_LIBRARY_PATH=${PRIMUS_libGL}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} -- 2.30.2