From: Peter Michael Green Date: Sat, 20 Jun 2020 02:48:48 +0000 (+0100) Subject: Import primus_0~20150328-11+rpi1.debian.tar.xz X-Git-Tag: archive/raspbian/0_20150328-12+rpi1~8^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=63901d4523dd929678ea3ed4fdefa2ca9542c749;p=primus.git Import primus_0~20150328-11+rpi1.debian.tar.xz [dgit import tarball primus 0~20150328-11+rpi1 primus_0~20150328-11+rpi1.debian.tar.xz] --- 63901d4523dd929678ea3ed4fdefa2ca9542c749 diff --git a/changelog b/changelog new file mode 100644 index 0000000..079c767 --- /dev/null +++ b/changelog @@ -0,0 +1,204 @@ +primus (0~20150328-11+rpi1) bullseye-staging; urgency=medium + + * Disable primus-nvidia package. + + -- Peter Michael Green Sat, 20 Jun 2020 02:48:48 +0000 + +primus (0~20150328-11) unstable; urgency=medium + + [ Andreas Beckmann ] + * Add B-D: libglapi-mesa for seamless backports. + * Switch to debhelper-compat (= 13). + * Update Lintian overrides. + * Recommend 'primus-libs:i386 (= ${binary:Version}) [amd64]' and get rid of + primus-libs-ia32. + * primus-libs: Recommend libprimus-vk1. + * primus-nvidia: Recommend nvidia-primus-vk-wrapper. + * primusrun: Export ENABLE_PRIMUS_LAYER=1 to let primus-vk (if available) + handle Vulkan applications. + * Build for more architectures. + * Use setenv() instead of putenv() to avoid use-after-unload issues. + * Work around setenv() issues in bash (see #962566). + + [ Debian Janitor ] + * Set upstream metadata fields: Bug-Database, Bug-Submit, Repository- + Browse. + * Rely on pre-initialized dpkg-architecture variables. + + -- Andreas Beckmann Thu, 11 Jun 2020 21:11:23 +0200 + +primus (0~20150328-10) unstable; urgency=medium + + * Use upstream's primusrun and patch it for multiarch. (Closes: #896140) + * Move primus-libs-ia32 recommendation to primus-libs. + * Set __GLVND_DISALLOW_PATCHING=1 before loading glvnd libraries. + * Support glvnd variant of the nvidia driver. (Closes: #951914, #946978) + * Generate vendor-specific driver dependency lists for primus-nvidia. + * Enable all hardening flags. + * Remove PRIMUS_LOAD_GLOBAL HACK and link against libglapi.so.0 instead. + * Set upstream metadata field: Repository. + * Bump Standards-Version to 4.5.0, no changes needed. + + -- Andreas Beckmann Mon, 09 Mar 2020 11:19:01 +0100 + +primus (0~20150328-9) unstable; urgency=medium + + * Fix building twice in a row. + * Do not depend on transitional libgl1-mesa-glx package. + * Upload to unstable. + + -- Andreas Beckmann Sat, 24 Aug 2019 22:16:09 +0200 + +primus (0~20150328-8) experimental; urgency=medium + + * Add primus-nvidia metapackage. + * Switch to debhelper-compat (= 12). + * Bump Standards-Version to 4.4.0, no changes. + * Add myself to Uploaders. + * Upload to experimental. + + -- Andreas Beckmann Thu, 01 Aug 2019 09:09:47 +0200 + +primus (0~20150328-7) unstable; urgency=medium + + [ Andreas Beckmann ] + * Switch Vcs-* URLs to salsa.debian.org. + * Set Rules-Requires-Root: no. + * The dbgsym migration was done in stretch. + * Extend the Breaks and Suggests to the NVIDIA 390xx legacy driver. + + [ Luca Boccassi ] + * Switch to debhelper compat level 11. + * Bump Standards-Version to 4.3.0, no changes. + + -- Luca Boccassi Sat, 05 Jan 2019 11:29:10 +0100 + +primus (0~20150328-6) unstable; urgency=medium + + * Bump Standards-Version to 4.1.3, no changes. + * Break: nvidia-driver-libs and suggest nvidia-driver-libs-nonglvnd. + (Closes: #888020) + + -- Luca Boccassi Mon, 22 Jan 2018 21:09:34 +0000 + +primus (0~20150328-5) unstable; urgency=medium + + * Switch to @debian.org email address. + * Switch priority from "extra" to "optional" to comply with policy 4.0.1. + * Use https for Vcs fields in d/control. + * Use https for the d/copyright format field to comply with policy 4.0.0. + * Bump Standards-Version to 4.1.1. + * Do not install primus with the GLVND-enabled Nvidia packages, as they + are not quite compatible yet. (Closes: #876033) + + -- Luca Boccassi Tue, 10 Oct 2017 20:46:09 +0100 + +primus (0~20150328-4) unstable; urgency=medium + + * Depend alternatively on xserver-xorg-video-intel or + xserver-xorg-core >= 2:1.18.3-2, as both enable SNA by default. + + -- Luca Boccassi Fri, 22 Jul 2016 08:37:15 +0100 + +primus (0~20150328-3) unstable; urgency=medium + + * Move xserver-xorg-video-intel dependency from primus-libs to primus. + (Closes: #831640) + + -- Luca Boccassi Mon, 18 Jul 2016 09:30:57 +0100 + +primus (0~20150328-2) unstable; urgency=medium + + * Add myself to Uploaders. + * Bump Standards-Version to 3.9.8, no changes. + * Remove -dbg package in favour of -dbgsym. + * Add dependency to xserver-xorg-video-intel >= 2.99.17 for SNA. + + -- Luca Boccassi Sun, 17 Jul 2016 18:28:11 +0100 + +primus (0~20150328-1) unstable; urgency=medium + + * New upstream git snapshot. + - rebase on d1afbf6fce + - refresh hardening.patch + * Build with PRIMUS_UPLOAD=0 now that xserver-xorg-video-intel in sid has + SNA enabled by default. + * Add dependency on libgl1-mesa-glx to primus-libs. (LP: #1383909) + * Move bumblebee bash-completion file from obsolete /etc/bash_completion.d/ + to /usr/share/bash-completion/completions/. + + -- Vincent Cheng Sat, 25 Jul 2015 20:42:42 -0700 + +primus (0~20140711-1) unstable; urgency=medium + + [ Vincent Cheng ] + * New upstream git snapshot. + - rebase on 4e000124ec + * Update email address. + * Update Standards version to 3.9.6, no changes required. + + [ Andreas Beckmann ] + * hardening.patch: New. Use all variables that contain hardening flags. + + -- Vincent Cheng Wed, 15 Jan 2014 14:14:25 -0800 + +primus (0~20131127-2) unstable; urgency=medium + + * Build with PRIMUS_UPLOAD=1 to avoid a bug triggered by using primus and + xserver-xorg-video-intel with UXA acceleration enabled (which is currently + the default with xserver-xorg-video-intel 2:2.21.15-1 in unstable). + This workaround will remain in effect until xserver-xorg-video-intel + defaults to SNA in unstable. This flag will not be set if build + environment is Ubuntu, as SNA is already enabled by default (in trusty). + + -- Vincent Cheng Tue, 07 Jan 2014 01:56:18 -0800 + +primus (0~20131127-1) unstable; urgency=medium + + * New upstream git snapshot. + - rebase on 074817614c + * Update Standards version to 3.9.5, no changes required. + + -- Vincent Cheng Mon, 06 Jan 2014 01:36:38 -0800 + +primus (0~20130904-1) unstable; urgency=low + + * New upstream git snapshot. + - rebase on da6459236b + + -- Vincent Cheng Wed, 23 Oct 2013 01:03:15 -0700 + +primus (0~20130805-1) unstable; urgency=low + + * New upstream git snapshot. + - rebase on 3f248d9f13 + + -- Vincent Cheng Tue, 20 Aug 2013 02:13:51 -0700 + +primus (0~20130601-1) unstable; urgency=low + + * New upstream git snapshot. + - rebase on 38731d5375 + - fixes FTBFS on oldstable with gcc < 4.6 (Closes: #710025) + + -- Vincent Cheng Thu, 06 Jun 2013 00:31:34 -0700 + +primus (0~20130527-1) unstable; urgency=low + + * New upstream git snapshot. + - rebase on 618acb99e0 + + -- Vincent Cheng Wed, 29 May 2013 01:49:06 -0700 + +primus (0~20130511-1) unstable; urgency=low + + * New upstream git snapshot. + - rebase on ef73dd1976 + + -- Vincent Cheng Thu, 16 May 2013 00:17:46 -0700 + +primus (0~20130427-1) unstable; urgency=low + + * Initial release. (Closes: #692597) + + -- Vincent Cheng Fri, 03 May 2013 03:26:17 -0700 diff --git a/control b/control new file mode 100644 index 0000000..da8e310 --- /dev/null +++ b/control @@ -0,0 +1,73 @@ +Source: primus +Section: utils +Priority: optional +Maintainer: Debian NVIDIA Maintainers +Uploaders: + Aron Xu , + Vincent Cheng , + Yunqiang Su , + Luca Boccassi , + Andreas Beckmann , +Build-Depends: + debhelper-compat (= 13), + libglapi-mesa, + mesa-common-dev, +Rules-Requires-Root: no +Standards-Version: 4.5.0 +Homepage: https://github.com/amonakov/primus +Vcs-Browser: https://salsa.debian.org/nvidia-team/primus +Vcs-Git: https://salsa.debian.org/nvidia-team/primus.git + +Package: primus +Architecture: linux-any +Depends: + bumblebee (>= 3.2.1-21~), + primus-libs (= ${binary:Version}), + xserver-xorg-core (>= 2:1.18.3-2) | xserver-xorg-video-intel (>= 2:2.99.917), + ${misc:Depends}, +Suggests: + primus-nvidia, +Description: client-side GPU offloading for NVIDIA Optimus + Primus is a shared library that provides OpenGL and GLX APIs and implements + low-overhead local-only client-side OpenGL offloading via GLX forking, + similar to VirtualGL. It intercepts GLX calls and redirects GL rendering + to a secondary X display, presumably driven by a faster GPU. On swapping + buffers, rendered contents are read back using a PBO and copied onto + the drawable it was supposed to be rendered on in the first place. + . + Primus is currently intended to be used alongside Bumblebee and provides a + drop-in replacement for optirun (i.e. "primusrun"). + +Package: primus-libs +Architecture: linux-any +Multi-Arch: same +Depends: ${shlibs:Depends}, ${misc:Depends}, libgl1, libglx-mesa0 +Recommends: + primus-libs:i386 (= ${binary:Version}) [amd64], + libprimus-vk1, +Conflicts: + primus-libs-ia32, +Description: shared libraries for primus + Primus is a shared library that provides OpenGL and GLX APIs and implements + low-overhead local-only client-side OpenGL offloading via GLX forking, + similar to VirtualGL. It intercepts GLX calls and redirects GL rendering + to a secondary X display, presumably driven by a faster GPU. On swapping + buffers, rendered contents are read back using a PBO and copied onto + the drawable it was supposed to be rendered on in the first place. + . + This package contains the libraries for primus which are loaded when running + primusrun. + +Package: primus-nvidia +Architecture: none +Section: contrib/utils +Depends: + ${nvidia:Depends}, + primus, + ${misc:Depends}, +Recommends: + nvidia-primus-vk-wrapper, +Description: NVIDIA Primus support using the proprietary NVIDIA driver + This metapackage ensures that the proprietary NVIDIA driver is installed in a + way such that 3D acceleration does not break. It does so by configuring the + OpenGL library path to use the Mesa graphics library. diff --git a/copyright b/copyright new file mode 100644 index 0000000..525044a --- /dev/null +++ b/copyright @@ -0,0 +1,41 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: primus +Source: https://github.com/amonakov/primus + +Files: * +Copyright: 2012-2013 Alexander Monakov +License: ISC + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + . + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + +Files: debian/* +Copyright: 2012 Dmitry Zhurikhin + 2013 Bruno Pagani + 2013-2015 Vincent Cheng + © 2014-2020 Andreas Beckmann + 2016-2019 Luca Boccassi +License: GPL-3.0+ + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + On Debian systems, the complete text of the GNU General + Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". diff --git a/docs b/docs new file mode 100644 index 0000000..7daf99b --- /dev/null +++ b/docs @@ -0,0 +1,2 @@ +README.md +technotes.md diff --git a/manpages b/manpages new file mode 100644 index 0000000..b7c3def --- /dev/null +++ b/manpages @@ -0,0 +1 @@ +primusrun.1 diff --git a/patches/glvnd.patch b/patches/glvnd.patch new file mode 100644 index 0000000..c922ecc --- /dev/null +++ b/patches/glvnd.patch @@ -0,0 +1,15 @@ +Description: set __GLVND_DISALLOW_PATCHING=1 before loading glvnd libraries +Author: Andreas Beckmann + +--- a/libglfork.cpp ++++ b/libglfork.cpp +@@ -165,6 +165,9 @@ struct ContextsInfo: public std::map +Last-Update: 2015-07-25 + +--- a/Makefile ++++ b/Makefile +@@ -30,4 +30,4 @@ CXXFLAGS += -DPRIMUS_libGLd='"$(PRIMUS_libGLd)"' + + $(LIBDIR)/libGL.so.1: libglfork.cpp + mkdir -p $(LIBDIR) +- $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fvisibility=hidden -fPIC -shared -Wl,-Bsymbolic -o $@ $< -lX11 -lpthread -lrt ++ $(CXX) $(CPPFLAGS) $(CXXFLAGS) -fvisibility=hidden -fPIC -shared -Wl,-Bsymbolic -o $@ $< $(LDFLAGS) -lX11 -lpthread -lrt diff --git a/patches/no-PRIMUS_LOAD_GLOBAL.patch b/patches/no-PRIMUS_LOAD_GLOBAL.patch new file mode 100644 index 0000000..00f300c --- /dev/null +++ b/patches/no-PRIMUS_LOAD_GLOBAL.patch @@ -0,0 +1,64 @@ +Description: remove PRIMUS_LOAD_GLOBAL HACK + and link against libglapi.so.0 instead +Author: Andreas Beckmann + +--- 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_ + 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 +--- 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; + +--- a/primusrun ++++ b/primusrun +@@ -33,9 +33,6 @@ PRIMUS_libGL=${PRIMUS_libGL:-/usr/lib/x8 + # 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} + diff --git a/patches/primus-vk.patch b/patches/primus-vk.patch new file mode 100644 index 0000000..823d713 --- /dev/null +++ b/patches/primus-vk.patch @@ -0,0 +1,14 @@ +Author: Andreas Beckmann +Description: primusrun: set ENABLE_PRIMUS_LAYER=1 to enable primus-vk handling + +--- a/primusrun ++++ b/primusrun +@@ -36,5 +36,8 @@ PRIMUS_libGL=${PRIMUS_libGL:-/usr/lib/x8 + # Need functions from primus libGL to take precedence + export LD_LIBRARY_PATH=${PRIMUS_libGL}${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} + ++# Vulkan applications are handled via primus-vk ++export ENABLE_PRIMUS_LAYER=${ENABLE_PRIMUS_LAYER:-1} ++ + # And go! + exec "$@" diff --git a/patches/primusrun-multiarch.patch b/patches/primusrun-multiarch.patch new file mode 100644 index 0000000..b1f5585 --- /dev/null +++ b/patches/primusrun-multiarch.patch @@ -0,0 +1,16 @@ +Description: primusrun: search PRIMUS_libGL in multiarch locations +Author: Andreas Beckmann +Last-Update: 2020-03-04 + +--- a/primusrun ++++ b/primusrun +@@ -26,7 +26,8 @@ + # export PRIMUS_libGLd=${PRIMUS_libGLd:-'/usr/$LIB/libGL.so.1'} + + # Directory containing primus libGL +-PRIMUS_libGL=${PRIMUS_libGL:-$(dirname `readlink -ne $0`)/'$LIB'} ++# PRIMUS_libGL=${PRIMUS_libGL:-$(dirname `readlink -ne $0`)/'$LIB'} ++PRIMUS_libGL=${PRIMUS_libGL:-/usr/lib/x86_64-linux-gnu/primus:/usr/lib/i386-linux-gnu/primus} + + # On some distributions, e.g. on Ubuntu, libnvidia-tls.so is not available + # in default search paths. Add its path manually after the primus library diff --git a/patches/series b/patches/series new file mode 100644 index 0000000..97a1024 --- /dev/null +++ b/patches/series @@ -0,0 +1,6 @@ +hardening.patch +glvnd.patch +primusrun-multiarch.patch +no-PRIMUS_LOAD_GLOBAL.patch +primus-vk.patch +workaround-bash-setenv.patch diff --git a/patches/workaround-bash-setenv.patch b/patches/workaround-bash-setenv.patch new file mode 100644 index 0000000..b7ffd85 --- /dev/null +++ b/patches/workaround-bash-setenv.patch @@ -0,0 +1,23 @@ +Author: Andreas Beckmann +Description: do not set environment variables in bash processes + +--- a/libglfork.cpp ++++ b/libglfork.cpp +@@ -165,9 +165,17 @@ struct ContextsInfo: public std::map