From 750adf29a2ca422d1d09b503830616e2c9594876 Mon Sep 17 00:00:00 2001 From: Britney Fransen Date: Thu, 21 Feb 2019 21:11:41 +0000 Subject: mesa: update to 18.3.4 --- abs/core/mesa/0001-glvnd-fix-gl-dot-pc.patch | 12 -- abs/core/mesa/LICENSE | 87 ++++---- abs/core/mesa/PKGBUILD | 232 ++++++++++----------- abs/core/mesa/get-program-name-based-on-path.patch | 58 ++++++ 4 files changed, 216 insertions(+), 173 deletions(-) delete mode 100644 abs/core/mesa/0001-glvnd-fix-gl-dot-pc.patch create mode 100644 abs/core/mesa/get-program-name-based-on-path.patch diff --git a/abs/core/mesa/0001-glvnd-fix-gl-dot-pc.patch b/abs/core/mesa/0001-glvnd-fix-gl-dot-pc.patch deleted file mode 100644 index 68118f4..0000000 --- a/abs/core/mesa/0001-glvnd-fix-gl-dot-pc.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up mesa-12.0.3/src/mesa/gl.pc.in.jx mesa-12.0.3/src/mesa/gl.pc.in ---- mesa-12.0.3/src/mesa/gl.pc.in.jx 2016-01-18 02:39:26.000000000 -0500 -+++ mesa-12.0.3/src/mesa/gl.pc.in 2016-10-25 13:06:44.013159358 -0400 -@@ -7,7 +7,7 @@ Name: gl - Description: Mesa OpenGL library - Requires.private: @GL_PC_REQ_PRIV@ - Version: @PACKAGE_VERSION@ --Libs: -L${libdir} -l@GL_LIB@ -+Libs: -L${libdir} -lGL - Libs.private: @GL_PC_LIB_PRIV@ - Cflags: -I${includedir} @GL_PC_CFLAGS@ - glx_tls: @GLX_TLS@ diff --git a/abs/core/mesa/LICENSE b/abs/core/mesa/LICENSE index ae33d27..060f4a9 100644 --- a/abs/core/mesa/LICENSE +++ b/abs/core/mesa/LICENSE @@ -1,33 +1,34 @@ +The Mesa 3D Graphics Library + Disclaimer -Mesa is a 3-D graphics library with an API which is very similar to -that of OpenGL* -To the extent that Mesa utilizes the OpenGL command syntax or state -machine, it is being used with authorization from Silicon Graphics, -Inc.(SGI). However, the author does not possess an OpenGL license -from SGI, and makes no claim that Mesa is in any way a compatible -replacement for OpenGL or associated with SGI. Those who want a -licensed implementation of OpenGL should contact a licensed -vendor. + Mesa is a 3-D graphics library with an API which is very similar to + that of [1]OpenGL.* To the extent that Mesa utilizes the OpenGL command + syntax or state machine, it is being used with authorization from + [2]Silicon Graphics, Inc.(SGI). However, the author does not possess an + OpenGL license from SGI, and makes no claim that Mesa is in any way a + compatible replacement for OpenGL or associated with SGI. Those who + want a licensed implementation of OpenGL should contact a licensed + vendor. -Please do not refer to the library as MesaGL (for legal -reasons). It's just Mesa or The Mesa 3-D graphics -library + Please do not refer to the library as MesaGL (for legal reasons). It's + just Mesa or The Mesa 3-D graphics library. -* OpenGL is a trademark of Silicon Graphics Incorporated. + * OpenGL is a trademark of [3]Silicon Graphics Incorporated. License / Copyright Information -The Mesa distribution consists of several components. Different copyrights -and licenses apply to different components. For example, GLUT is copyrighted -by Mark Kilgard, some demo programs are copyrighted by SGI, some of the Mesa -device drivers are copyrighted by their authors. See below for a list of -Mesa's main components and the license for each. + The Mesa distribution consists of several components. Different + copyrights and licenses apply to different components. For example, the + GLX client code uses the SGI Free Software License B, and some of the + Mesa device drivers are copyrighted by their authors. See below for a + list of Mesa's main components and the license for each. -The core Mesa library is licensed according to the terms of the MIT license. -This allows integration with the XFree86, Xorg and DRI projects. + The core Mesa library is licensed according to the terms of the MIT + license. This allows integration with the XFree86, Xorg and DRI + projects. -The default Mesa license is as follows: + The default Mesa license is as follows: Copyright (C) 1999-2007 Brian Paul All Rights Reserved. @@ -44,39 +45,39 @@ in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. Attention, Contributors -When contributing to the Mesa project you must agree to the licensing terms -of the component to which you're contributing. -The following section lists the primary components of the Mesa distribution -and their respective licenses. - + When contributing to the Mesa project you must agree to the licensing + terms of the component to which you're contributing. The following + section lists the primary components of the Mesa distribution and their + respective licenses. Mesa Component Licenses -Component Location Primary Author License ----------------------------------------------------------------------------- -Main Mesa code src/mesa/ Brian Paul Mesa (MIT) +Component Location License +------------------------------------------------------------------ +Main Mesa code src/mesa/ MIT -Device drivers src/mesa/drivers/* See drivers See drivers +Device drivers src/mesa/drivers/* MIT, generally -Ext headers include/GL/glext.h SGI SGI Free B - include/GL/glxext.h +Gallium code src/gallium/ MIT -GLUT src/glut/ Mark Kilgard Mark's copyright - -Mesa GLU library src/glu/mesa/ Brian Paul GNU-LGPL +Ext headers include/GL/glext.h Khronos + include/GL/glxext.h -SGI GLU library src/glu/sgi/ SGI SGI Free B +GLX client code src/glx/ SGI Free Software License B -demo programs progs/demos/ various see source files +C11 thread include/c11/threads*.h Boost (permissive) emulation -X demos progs/xdemos/ Brian Paul see source files + In general, consult the source files for license terms. -SGI demos progs/samples/ SGI SGI copyright +References -RedBook demos progs/redbook/ SGI SGI copyright + 1. https://www.opengl.org/ + 2. https://www.sgi.com/ + 3. https://www.sgi.com/ diff --git a/abs/core/mesa/PKGBUILD b/abs/core/mesa/PKGBUILD index 504d32b..8cfff58 100644 --- a/abs/core/mesa/PKGBUILD +++ b/abs/core/mesa/PKGBUILD @@ -1,110 +1,115 @@ -# $Id$ # Maintainer: Jan de Groot # Maintainer: Andreas Radke pkgbase=mesa pkgname=('opencl-mesa' 'vulkan-intel' 'vulkan-radeon' 'libva-mesa-driver' 'mesa-vdpau' 'mesa') -pkgver=17.3.6 +pkgdesc="An open-source implementation of the OpenGL specification" +pkgver=18.3.4 pkgrel=1 arch=('x86_64') -makedepends=('python2-mako' 'libxml2' 'libx11' 'glproto' 'libdrm' 'dri2proto' 'dri3proto' 'presentproto' +makedepends=('python-mako' 'libxml2' 'libx11' 'glproto' 'libdrm' 'dri2proto' 'dri3proto' 'presentproto' 'libxshmfence' 'libxxf86vm' 'libxdamage' 'libvdpau' 'libva' 'wayland' 'wayland-protocols' - 'elfutils' 'llvm' 'libomxil-bellagio' 'libclc' 'clang' 'libglvnd' 'libunwind' 'lm_sensors') + 'elfutils' 'llvm' 'libomxil-bellagio' 'libclc' 'clang' 'libglvnd' 'libunwind' 'lm_sensors' + 'libxrandr' 'meson') url="https://www.mesa3d.org/" license=('custom') source=(https://mesa.freedesktop.org/archive/mesa-${pkgver}.tar.xz{,.sig} - LICENSE - 0001-glvnd-fix-gl-dot-pc.patch) -sha512sums=('5164ed5a1d3d25031b712a9f443f0e467a29b2bca0a1aa11324ed5c10279411979c9c7482825053926a813e76c58b78a3439c7c81fcd51a7808f53977080828f' + get-program-name-based-on-path.patch + LICENSE) +sha512sums=('e4ead944ba053aa05425e9e199d633f576dfa424976253fc32438e8db6da5e8d381122e4c4b7fb18f94177421f208bab5567cfec8d2692d104e266483ca02a99' 'SKIP' - '25da77914dded10c1f432ebcbf29941124138824ceecaf1367b3deedafaecabc082d463abcfa3d15abff59f177491472b505bcb5ba0c4a51bb6b93b4721a23c2' - '75849eca72ca9d01c648d5ea4f6371f1b8737ca35b14be179e14c73cc51dca0739c333343cdc228a6d464135f4791bcdc21734e2debecd29d57023c8c088b028') -validpgpkeys=('8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D') # Emil Velikov -validpgpkeys+=('946D09B5E4C9845E63075FF1D961C596A7203456') # Andres Gomez -validpgpkeys+=('E3E8F480C52ADD73B278EE78E1ECBE07D7D70895') # Juan Antonio Suárez Romero (Igalia, S.L.) " - + '3c851ec0f1d8c1d918756c5b5315901d2a9c1de22624378bb2ba49ae8d7abc0b6c015a91c455f1d40d50532939f60db81cab0d7c9f832d41162c684582783fa6' + 'f9f0d0ccf166fe6cb684478b6f1e1ab1f2850431c06aa041738563eb1808a004e52cdec823c103c9e180f03ffc083e95974d291353f0220fe52ae6d4897fecc7') +validpgpkeys=('8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D' # Emil Velikov + '946D09B5E4C9845E63075FF1D961C596A7203456' # Andres Gomez + 'E3E8F480C52ADD73B278EE78E1ECBE07D7D70895' # Juan Antonio Suárez Romero (Igalia, S.L.) + 'A5CC9FEC93F2F837CB044912336909B6B25FADFA' # Juan A. Suarez Romero + '71C4B75620BC75708B4BDB254C95FAAB3EB073EC') # Dylan Baker + prepare() { - cd ${srcdir}/mesa-${pkgver} + cd mesa-${pkgver} - # glvnd support patches - from Fedora - # non-upstreamed ones - patch -Np1 -i ../0001-glvnd-fix-gl-dot-pc.patch - - autoreconf -fiv + # Needed in order to target Chromium in drirc (included upstream in Mesa 19) + patch -Np1 -i ../get-program-name-based-on-path.patch } build() { - cd ${srcdir}/mesa-${pkgver} - - ./configure --prefix=/usr \ - --sysconfdir=/etc \ - --with-gallium-drivers=r300,r600,radeonsi,nouveau,svga,swrast,virgl,swr \ - --with-dri-drivers=i915,i965,r200,radeon,nouveau,swrast \ - --with-platforms=x11,drm,wayland \ - --with-vulkan-drivers=intel,radeon \ - --disable-xvmc \ - --enable-llvm \ - --enable-llvm-shared-libs \ - --enable-shared-glapi \ - --enable-libglvnd \ - --enable-libunwind \ - --enable-lmsensors \ - --enable-egl \ - --enable-glx \ - --enable-glx-tls \ - --enable-gles1 \ - --enable-gles2 \ - --enable-gbm \ - --enable-dri \ - --enable-gallium-osmesa \ - --enable-gallium-extra-hud \ - --enable-texture-float \ - --enable-xa \ - --enable-vdpau \ - --enable-omx-bellagio \ - --enable-nine \ - --enable-opencl \ - --enable-opencl-icd \ - --with-clang-libdir=/usr/lib - - make - - # fake installation - mkdir $srcdir/fakeinstall - make DESTDIR=${srcdir}/fakeinstall install + # -D gallium-drivers=r300,r600,radeonsi,nouveau,virgl,svga,swrast,swr ### swr doesn't build https://bugs.freedesktop.org/show_bug.cgi?id=107865 + + arch-meson mesa-$pkgver build \ + -D b_lto=false \ + -D b_ndebug=true \ + -D platforms=x11,wayland,drm,surfaceless \ + -D dri-drivers=i915,i965,r100,r200,nouveau \ + -D gallium-drivers=r300,r600,radeonsi,nouveau,virgl,svga,swrast \ + -D vulkan-drivers=amd,intel \ + -D swr-arches=avx,avx2 \ + -D dri3=true \ + -D egl=true \ + -D gallium-extra-hud=true \ + -D gallium-nine=true \ + -D gallium-omx=bellagio \ + -D gallium-opencl=icd \ + -D gallium-va=true \ + -D gallium-vdpau=true \ + -D gallium-xa=true \ + -D gallium-xvmc=false \ + -D gbm=true \ + -D gles1=true \ + -D gles2=true \ + -D glvnd=true \ + -D glx=dri \ + -D libunwind=true \ + -D llvm=true \ + -D lmsensors=true \ + -D osmesa=gallium \ + -D shared-glapi=true \ + -D texture-float=true \ + -D valgrind=false + + # Print config + meson configure build + + ninja -C build + + # fake installation to be seperated into packages + # outside of fakeroot but mesa doesn't need to chown/mod + DESTDIR="${srcdir}/fakeinstall" ninja -C build install +} + +_install() { + local src f dir + for src; do + f="${src#fakeinstall/}" + dir="${pkgdir}/${f%/*}" + install -m755 -d "${dir}" + mv -v "${src}" "${dir}/" + done } package_opencl-mesa() { pkgdesc="OpenCL support for AMD/ATI Radeon mesa drivers" - depends=('expat' 'libdrm' 'libelf' 'lm_sensors' 'libunwind' 'libclc' 'clang') + depends=('expat' 'libdrm' 'libelf' 'libclc' 'clang') optdepends=('opencl-headers: headers necessary for OpenCL development') provides=('opencl-driver') - install -m755 -d ${pkgdir}/etc - cp -rv ${srcdir}/fakeinstall/etc/OpenCL ${pkgdir}/etc/ - - install -m755 -d ${pkgdir}/usr/lib/gallium-pipe - cp -rv ${srcdir}/fakeinstall/usr/lib/lib*OpenCL* ${pkgdir}/usr/lib/ - cp -rv ${srcdir}/fakeinstall/usr/lib/gallium-pipe/pipe_{r600,radeonsi}.so ${pkgdir}/usr/lib/gallium-pipe/ + _install fakeinstall/etc/OpenCL + _install fakeinstall/usr/lib/lib*OpenCL* + _install fakeinstall/usr/lib/gallium-pipe - install -m755 -d "${pkgdir}/usr/share/licenses/opencl-mesa" - install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/opencl-mesa/" + install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE } package_vulkan-intel() { pkgdesc="Intel's Vulkan mesa driver" - depends=('wayland' 'libx11' 'libxshmfence') + depends=('wayland' 'libx11' 'libxshmfence' 'libdrm') provides=('vulkan-driver') - install -m755 -d ${pkgdir}/usr/share/vulkan/icd.d - mv -v ${srcdir}/fakeinstall/usr/share/vulkan/icd.d/intel_icd*.json ${pkgdir}/usr/share/vulkan/icd.d/ + _install fakeinstall/usr/share/vulkan/icd.d/intel_icd*.json + _install fakeinstall/usr/lib/libvulkan_intel.so + _install fakeinstall/usr/include/vulkan/vulkan_intel.h - install -m755 -d ${pkgdir}/usr/{include/vulkan,lib} - mv -v ${srcdir}/fakeinstall/usr/lib/libvulkan_intel.so ${pkgdir}/usr/lib/ - mv -v ${srcdir}/fakeinstall/usr/include/vulkan/vulkan_intel.h ${pkgdir}/usr/include/vulkan - - install -m755 -d "${pkgdir}/usr/share/licenses/vulkan-intel" - install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/vulkan-intel/" + install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE } package_vulkan-radeon() { @@ -112,40 +117,31 @@ package_vulkan-radeon() { depends=('wayland' 'libx11' 'libxshmfence' 'libelf' 'libdrm' 'llvm-libs') provides=('vulkan-driver') - install -m755 -d ${pkgdir}/usr/share/vulkan/icd.d - mv -v ${srcdir}/fakeinstall/usr/share/vulkan/icd.d/radeon_icd*.json ${pkgdir}/usr/share/vulkan/icd.d/ - - install -m755 -d ${pkgdir}/usr/lib - mv -v ${srcdir}/fakeinstall/usr/lib/libvulkan_radeon.so ${pkgdir}/usr/lib/ + _install fakeinstall/usr/share/vulkan/icd.d/radeon_icd*.json + _install fakeinstall/usr/lib/libvulkan_radeon.so - install -m755 -d "${pkgdir}/usr/share/licenses/vulkan-radeon" - install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/vulkan-radeon/" + install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE } package_libva-mesa-driver() { pkgdesc="VA-API implementation for gallium" - depends=('libdrm' 'libx11' 'llvm-libs' 'expat' 'libelf' 'libxshmfence' 'lm_sensors' 'libunwind') + depends=('libdrm' 'libx11' 'llvm-libs' 'expat' 'libelf' 'libxshmfence') - install -m755 -d ${pkgdir}/usr/lib/dri - cp -av ${srcdir}/fakeinstall/usr/lib/dri/*_drv_video.so ${pkgdir}/usr/lib/dri + _install fakeinstall/usr/lib/dri/*_drv_video.so - install -m755 -d "${pkgdir}/usr/share/licenses/libva-mesa-driver" - install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/libva-mesa-driver/" + install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE } package_mesa-vdpau() { pkgdesc="Mesa VDPAU drivers" - depends=('libdrm' 'libx11' 'llvm-libs' 'expat' 'libelf' 'libxshmfence' 'lm_sensors' 'libunwind') + depends=('libdrm' 'libx11' 'llvm-libs' 'expat' 'libelf' 'libxshmfence') - install -m755 -d ${pkgdir}/usr/lib/vdpau - cp -av ${srcdir}/fakeinstall/usr/lib/vdpau/* ${pkgdir}/usr/lib/vdpau + _install fakeinstall/usr/lib/vdpau - install -m755 -d "${pkgdir}/usr/share/licenses/mesa-vdpau" - install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/mesa-vdpau/" + install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE } package_mesa() { - pkgdesc="an open-source implementation of the OpenGL specification" depends=('libdrm' 'wayland' 'libxxf86vm' 'libxdamage' 'libxshmfence' 'libelf' 'libomxil-bellagio' 'libunwind' 'llvm-libs' 'lm_sensors' 'libglvnd') optdepends=('opengl-man-pages: for the OpenGL API man pages' @@ -154,38 +150,38 @@ package_mesa() { provides=('ati-dri' 'intel-dri' 'nouveau-dri' 'svga-dri' 'mesa-dri' 'mesa-libgl' 'opengl-driver') conflicts=('ati-dri' 'intel-dri' 'nouveau-dri' 'svga-dri' 'mesa-dri' 'mesa-libgl') replaces=('ati-dri' 'intel-dri' 'nouveau-dri' 'svga-dri' 'mesa-dri' 'mesa-libgl') - backup=('etc/drirc') - install -m755 -d ${pkgdir}/etc - cp -rv ${srcdir}/fakeinstall/etc/drirc ${pkgdir}/etc - - install -m755 -d ${pkgdir}/usr/share/glvnd/egl_vendor.d - cp -rv ${srcdir}/fakeinstall/usr/share/glvnd/egl_vendor.d/50_mesa.json ${pkgdir}/usr/share/glvnd/egl_vendor.d/ + _install fakeinstall/usr/share/drirc.d/00-mesa-defaults.conf + _install fakeinstall/usr/share/glvnd/egl_vendor.d/50_mesa.json - install -m755 -d ${pkgdir}/usr/lib/dri # ati-dri, nouveau-dri, intel-dri, svga-dri, swrast - cp -av ${srcdir}/fakeinstall/usr/lib/dri/*_dri.so ${pkgdir}/usr/lib/dri + _install fakeinstall/usr/lib/dri/*_dri.so - cp -rv ${srcdir}/fakeinstall/usr/lib/bellagio ${pkgdir}/usr/lib - cp -rv ${srcdir}/fakeinstall/usr/lib/d3d ${pkgdir}/usr/lib - cp -rv ${srcdir}/fakeinstall/usr/lib/lib{gbm,glapi}.so* ${pkgdir}/usr/lib/ - cp -rv ${srcdir}/fakeinstall/usr/lib/libOSMesa.so* ${pkgdir}/usr/lib/ - cp -rv ${srcdir}/fakeinstall/usr/lib/libwayland*.so* ${pkgdir}/usr/lib/ - cp -rv ${srcdir}/fakeinstall/usr/lib/libxatracker.so* ${pkgdir}/usr/lib/ - cp -rv ${srcdir}/fakeinstall/usr/lib/libswrAVX*.so* ${pkgdir}/usr/lib/ - - cp -rv ${srcdir}/fakeinstall/usr/include ${pkgdir}/usr - cp -rv ${srcdir}/fakeinstall/usr/lib/pkgconfig ${pkgdir}/usr/lib/ + _install fakeinstall/usr/lib/bellagio + _install fakeinstall/usr/lib/d3d + _install fakeinstall/usr/lib/lib{gbm,glapi}.so* + _install fakeinstall/usr/lib/libOSMesa.so* + _install fakeinstall/usr/lib/libxatracker.so* + # _install fakeinstall/usr/lib/libswrAVX*.so* + + # in libglvnd + rm -v fakeinstall/usr/lib/libGLESv{1_CM,2}.so* - # remove vulkan headers - rm -rf ${pkgdir}/usr/include/vulkan + # in vulkan-headers + rm -rv fakeinstall/usr/include/vulkan + + _install fakeinstall/usr/include + _install fakeinstall/usr/lib/pkgconfig # libglvnd support - cp -rv ${srcdir}/fakeinstall/usr/lib/libGLX_mesa.so* ${pkgdir}/usr/lib/ - cp -rv ${srcdir}/fakeinstall/usr/lib/libEGL_mesa.so* ${pkgdir}/usr/lib/ + _install fakeinstall/usr/lib/libGLX_mesa.so* + _install fakeinstall/usr/lib/libEGL_mesa.so* + # indirect rendering - ln -s /usr/lib/libGLX_mesa.so.0 ${pkgdir}/usr/lib/libGLX_indirect.so.0 + ln -s /usr/lib/libGLX_mesa.so.0 "${pkgdir}/usr/lib/libGLX_indirect.so.0" + + # make sure there are no files left to install + find fakeinstall -depth -print0 | xargs -0 rmdir - install -m755 -d "${pkgdir}/usr/share/licenses/mesa" - install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/mesa/" + install -m644 -Dt "${pkgdir}/usr/share/licenses/${pkgname}" LICENSE } diff --git a/abs/core/mesa/get-program-name-based-on-path.patch b/abs/core/mesa/get-program-name-based-on-path.patch new file mode 100644 index 0000000..66e97f5 --- /dev/null +++ b/abs/core/mesa/get-program-name-based-on-path.patch @@ -0,0 +1,58 @@ +From 759b94038987bb983398cd4b1d2cb1c8f79817a9 Mon Sep 17 00:00:00 2001 +From: Nicholas Kazlauskas +Date: Tue, 23 Oct 2018 11:38:48 -0400 +Subject: [PATCH] util: Get program name based on path when possible + +Some programs start with the path and command line arguments in +argv[0] (program_invocation_name). Chromium is an example of +an application using mesa that does this. + +This tries to query the real path for the symbolic link /proc/self/exe +to find the program name instead. It only uses the realpath if it +was a prefix of the invocation to avoid breaking wine programs. + +Cc: Timothy Arceri +Signed-off-by: Nicholas Kazlauskas +Reviewed-by: Eric Engestrom +--- + src/util/u_process.c | 23 ++++++++++++++++++++++- + 1 file changed, 22 insertions(+), 1 deletion(-) + +diff --git a/src/util/u_process.c b/src/util/u_process.c +index 5e5927678d8..a1667e78074 100644 +--- a/src/util/u_process.c ++++ b/src/util/u_process.c +@@ -41,8 +41,29 @@ static const char * + __getProgramName() + { + char * arg = strrchr(program_invocation_name, '/'); +- if (arg) ++ if (arg) { ++ /* If the / character was found this is likely a linux path or ++ * an invocation path for a 64-bit wine program. ++ * ++ * However, some programs pass command line arguments into argv[0]. ++ * Strip these arguments out by using the realpath only if it was ++ * a prefix of the invocation name. ++ */ ++ static char *path; ++ ++ if (!path) ++ path = realpath("/proc/self/exe", NULL); ++ ++ if (path && strncmp(path, program_invocation_name, strlen(path)) == 0) { ++ /* This shouldn't be null because path is a a prefix, ++ * but check it anyway since path is static. */ ++ char * name = strrchr(path, '/'); ++ if (name) ++ return name + 1; ++ } ++ + return arg+1; ++ } + + /* If there was no '/' at all we likely have a windows like path from + * a wine application. +-- +2.18.1 + -- cgit v0.12