Epoch:1 to provide upgrade path from negativo17.org rpms

New snapshot
Add patches to fix building on ARM (from Rob Clark)
Add BuildRequires: python
Add ldconfig scriptlets for library sub-packages
This commit is contained in:
Hans de Goede 2017-01-16 12:27:54 +01:00
parent 280f7a2910
commit 39deb04760
9 changed files with 344 additions and 111 deletions

View File

@ -0,0 +1,27 @@
From 55f564b77773e6bfcbe1fa6b1d613ea194b408ed Mon Sep 17 00:00:00 2001
From: Adam Jackson <ajax@redhat.com>
Date: Mon, 17 Oct 2016 16:58:56 -0400
Subject: [PATCH] OpenGL: Statically export a few more things
I'm... unsure if I like this.
Signed-off-by: Adam Jackson <ajax@redhat.com>
---
src/generate/genCommon.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/generate/genCommon.py b/src/generate/genCommon.py
index 5781275..bb4e491 100644
--- a/src/generate/genCommon.py
+++ b/src/generate/genCommon.py
@@ -41,6 +41,7 @@ _LIBRARY_FEATURE_NAMES = {
"GL_VERSION_2_0", "GL_VERSION_2_1", "GL_VERSION_3_0", "GL_VERSION_3_1",
"GL_VERSION_3_2", "GL_VERSION_3_3", "GL_VERSION_4_0", "GL_VERSION_4_1",
"GL_VERSION_4_2", "GL_VERSION_4_3", "GL_VERSION_4_4", "GL_VERSION_4_5",
+ "GL_ARB_imaging", "GL_ARB_multitexture",
)),
"glesv1" : frozenset(("GL_VERSION_ES_CM_1_0", "GL_OES_point_size_array")),
"glesv2" : frozenset(("GL_ES_VERSION_2_0", "GL_ES_VERSION_3_0",
--
2.9.3

View File

@ -0,0 +1,25 @@
From 2e35628e90e0b524ecadea498a2ffe06b6b5a4fc Mon Sep 17 00:00:00 2001
From: Rob Clark <robdclark@gmail.com>
Date: Wed, 14 Dec 2016 08:40:44 -0500
Subject: [PATCH 2/6] Print out $host_cpu when undetected, for easier debugging
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index fdfaf00..29f90d8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -117,7 +117,7 @@ if test "x$enable_asm" = xyes; then
AC_MSG_RESULT([yes, aarch64])
;;
*)
- AC_MSG_RESULT([no, platform not supported])
+ AC_MSG_RESULT([no, platform '$host_cpu' not supported])
;;
esac
fi
--
2.9.3

View File

@ -0,0 +1,37 @@
From 07c095397bb336c2e4fbed89c6b9202730886acc Mon Sep 17 00:00:00 2001
From: Rob Clark <robdclark@gmail.com>
Date: Wed, 14 Dec 2016 09:35:40 -0500
Subject: [PATCH 3/6] Fix compile errors
---
src/GLdispatch/vnd-glapi/entry_armv7_tsd.c | 1 -
tests/dummy/EGL_dummy.c | 1 -
2 files changed, 2 deletions(-)
diff --git a/src/GLdispatch/vnd-glapi/entry_armv7_tsd.c b/src/GLdispatch/vnd-glapi/entry_armv7_tsd.c
index faec5bf..2bce0c2 100644
--- a/src/GLdispatch/vnd-glapi/entry_armv7_tsd.c
+++ b/src/GLdispatch/vnd-glapi/entry_armv7_tsd.c
@@ -166,7 +166,6 @@ const int entry_stub_size = ARMV7_ENTRY_SIZE;
static const int TEMPLATE_OFFSET_CURRENT_TABLE = ARMV7_BYTECODE_SIZE - 3*4;
static const int TEMPLATE_OFFSET_CURRENT_TABLE_GET = ARMV7_BYTECODE_SIZE - 2*4;
static const int TEMPLATE_OFFSET_SLOT = ARMV7_BYTECODE_SIZE - 4;
-static const int TEMPLATE_OFFSETS_SIZE = 3*4;
void
entry_init_public(void)
diff --git a/tests/dummy/EGL_dummy.c b/tests/dummy/EGL_dummy.c
index 372e0a0..7860dce 100644
--- a/tests/dummy/EGL_dummy.c
+++ b/tests/dummy/EGL_dummy.c
@@ -56,7 +56,6 @@ static const char *PLATFORM_EXTENSIONS =
;
static const char *DISPLAY_EXTENSIONS = "";
-static const EGLint DUMMY_EGL_CONFIG_COUNT = 2;
typedef struct DummyEGLDisplayRec {
EGLenum platform;
--
2.9.3

View File

@ -0,0 +1,34 @@
From c386bd5a233ed82d51ff9200c40e97e1817881f9 Mon Sep 17 00:00:00 2001
From: Rob Clark <robdclark@gmail.com>
Date: Wed, 14 Dec 2016 10:44:07 -0500
Subject: [PATCH 4/6] armv7: make sure asm is compiled in unified syntax mode
The individual stub functions already have .thumb_func but if syntax is
divided the assembler will reject the STUB_ASM_CODE.
---
src/GLdispatch/vnd-glapi/entry_armv7_tsd.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/GLdispatch/vnd-glapi/entry_armv7_tsd.c b/src/GLdispatch/vnd-glapi/entry_armv7_tsd.c
index 2bce0c2..0ea8902 100644
--- a/src/GLdispatch/vnd-glapi/entry_armv7_tsd.c
+++ b/src/GLdispatch/vnd-glapi/entry_armv7_tsd.c
@@ -140,6 +140,7 @@ static uint16_t BYTECODE_TEMPLATE[] =
__asm__(".section wtext,\"ax\"\n"
".balign 4096\n"
+ ".syntax unified\n"
".globl public_entry_start\n"
".hidden public_entry_start\n"
"public_entry_start:\n");
@@ -148,6 +149,7 @@ __asm__(".section wtext,\"ax\"\n"
#include "mapi_tmp.h"
__asm__(".balign 4096\n"
+ ".syntax divided\n"
".globl public_entry_end\n"
".hidden public_entry_end\n"
"public_entry_end:\n"
--
2.9.3

View File

@ -0,0 +1,25 @@
From ec5bd547b5fe2b82a4a72b9dbd7c0c47d41c7bde Mon Sep 17 00:00:00 2001
From: Rob Clark <robdclark@gmail.com>
Date: Wed, 14 Dec 2016 11:06:05 -0500
Subject: [PATCH 5/6] Treat armv7hl as armv7l
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index 29f90d8..9a68eb2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -91,7 +91,7 @@ if test "x$enable_asm" = xyes; then
;;
esac
;;
- armv7l)
+ armv7*l)
asm_arch=armv7l
;;
aarch64)
--
2.9.3

View File

@ -0,0 +1,49 @@
From 0475afe8e1c20509799b8e41ebad64938315e630 Mon Sep 17 00:00:00 2001
From: Rob Clark <robdclark@gmail.com>
Date: Mon, 9 Jan 2017 14:52:22 -0500
Subject: [PATCH 6/6] skip tests that cannot pass with pure-c dispatch
glvnd will not actually work 100% with pure-c dispatch.. but this at
least removes expected make-check fails so that it can be built.
---
tests/Makefile.am | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/tests/Makefile.am b/tests/Makefile.am
index fb8408f..e413d5b 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -56,7 +56,9 @@ AM_CFLAGS = \
-I$(top_srcdir)/src/util/glvnd_pthread
+if ! GLDISPATCH_TYPE_PURE_C
TESTS += testpatchentrypoints_gldispatch.sh
+endif
check_PROGRAMS += testpatchentrypoints_gldispatch
testpatchentrypoints_gldispatch_SOURCES = \
testpatchentrypoints_gldispatch.c
@@ -74,6 +76,7 @@ testpatchentrypoints_gldispatch_LDADD += $(top_builddir)/src/util/libutils_misc.
# the scripts would be missing when you run "make dist" or "make distcheck".
TESTS_GLX =
+if ! GLDISPATCH_TYPE_PURE_C
TESTS_GLX += testglxmcbasic.sh
TESTS_GLX += testglxmcloop.sh
TESTS_GLX += testglxmcthreads.sh
@@ -81,9 +84,12 @@ TESTS_GLX += testglxmclate.sh
TESTS_GLX += testglxmcoldlink.sh
TESTS_GLX += testglxgetprocaddress.sh
TESTS_GLX += testglxgetprocaddress_genentry.sh
+endif
TESTS_GLX += testglxgetclientstr.sh
TESTS_GLX += testglxqueryversion.sh
+if ! GLDISPATCH_TYPE_PURE_C
TESTS_GLX += testpatchentrypoints.sh
+endif
if ENABLE_GLX
--
2.9.3

View File

@ -1,80 +0,0 @@
From 758b525463cd00478bf071d477ab58c92414b852 Mon Sep 17 00:00:00 2001
From: Kyle Brenneman <kbrenneman@nvidia.com>
Date: Tue, 25 Oct 2016 17:32:47 -0600
Subject: [PATCH 1/2] GLdispatch: Don't call into the vendor from
__glDispatchForceUnpatch.
In __glDispatchForceUnpatch, don't call the vendor's releasePatch callback,
because the vendor library might have already been unloaded by that point.
---
src/GLdispatch/GLdispatch.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/GLdispatch/GLdispatch.c b/src/GLdispatch/GLdispatch.c
index 8c4c3a7..cf4254e 100644
--- a/src/GLdispatch/GLdispatch.c
+++ b/src/GLdispatch/GLdispatch.c
@@ -570,8 +570,10 @@ static int PatchEntrypoints(
if (stubCurrentPatchCb) {
// Notify the previous vendor that it no longer owns these
- // entrypoints.
- if (stubCurrentPatchCb->releasePatch != NULL) {
+ // entrypoints. If this is being called from a library unload,
+ // though, then skip the callback, because the vendor may have
+ // already been unloaded.
+ if (stubCurrentPatchCb->releasePatch != NULL && !force) {
stubCurrentPatchCb->releasePatch();
}
From 8146a979d85e975587f3a20f0a6fdc2f04fa478f Mon Sep 17 00:00:00 2001
From: Kyle Brenneman <kbrenneman@nvidia.com>
Date: Tue, 25 Oct 2016 17:34:26 -0600
Subject: [PATCH 2/2] EGL: Don't call into the vendor library from __eglFini.
In __eglFini, check for a fork, but don't call __glDispatchCheckMultithreaded.
If a vendor has patched the OpenGL entrypoints, then
__glDispatchCheckMultithreaded will try to call the vendor's thread attach
callback, but the vendor library may have already been unloaded.
Fixes https://github.com/NVIDIA/libglvnd/issues/103
---
src/EGL/libegl.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/EGL/libegl.c b/src/EGL/libegl.c
index 65e6605..e0a5488 100644
--- a/src/EGL/libegl.c
+++ b/src/EGL/libegl.c
@@ -1088,7 +1088,7 @@ static void __eglResetOnFork(void);
* Currently, this only detects whether a fork occurred since the last
* entrypoint was called, and performs recovery as needed.
*/
-void __eglThreadInitialize(void)
+void CheckFork(void)
{
volatile static int g_threadsInCheck = 0;
volatile static int g_lastPid = -1;
@@ -1120,7 +1120,11 @@ void __eglThreadInitialize(void)
sched_yield();
}
}
+}
+void __eglThreadInitialize(void)
+{
+ CheckFork();
__glDispatchCheckMultithreaded();
}
@@ -1190,7 +1194,7 @@ void _fini(void)
#endif
{
/* Check for a fork before going further. */
- __eglThreadInitialize();
+ CheckFork();
/*
* If libEGL owns the current API state, lose current

View File

@ -1,18 +1,29 @@
%global commit0 28867bb6597d1cf879b12c60a4b512a23758d3f6
%global commit0 dc16f8c337703ad141f83583a4004fcf42e07766
%global shortcommit0 %(c=%{commit0}; echo ${c:0:7})
Name: libglvnd
Version: 0.2.999
Release: 6%{?commit0:.git%{shortcommit0}}%{?dist}
Release: 7%{?commit0:.git%{shortcommit0}}%{?dist}
# Provide an upgrade path from the negativo17.org pkgs which have Epoch 1
Epoch: 1
Summary: The GL Vendor-Neutral Dispatch library
License: MIT
URL: https://github.com/NVIDIA/libglvnd
Source0: https://github.com/NVIDIA/%{name}/archive/%{commit0}.tar.gz#/%{name}-%{shortcommit0}.tar.gz
Patch0: egl_crash.patch
# https://github.com/NVIDIA/libglvnd/pull/100
Patch1: 0001-OpenGL-Statically-export-a-few-more-things.patch
# https://github.com/NVIDIA/libglvnd/pull/113
Patch2: 0002-Print-out-host_cpu-when-undetected-for-easier-debugg.patch
Patch3: 0003-Fix-compile-errors.patch
Patch4: 0004-armv7-make-sure-asm-is-compiled-in-unified-syntax-mo.patch
Patch5: 0005-Treat-armv7hl-as-armv7l.patch
# WIP
Patch6: 0006-skip-tests-that-cannot-pass-with-pure-c-dispatch.patch
BuildRequires: libtool
BuildRequires: gcc
BuildRequires: python
BuildRequires: libxml2-python
BuildRequires: pkgconfig(glproto)
BuildRequires: pkgconfig(x11)
@ -24,29 +35,95 @@ BuildRequires: pkgconfig(xext)
#https://github.com/NVIDIA/libglvnd/issues/93
BuildRequires: xorg-x11-server-Xvfb
%{!?_with_mesa_glvnd_default:
%global __provides_exclude ^(libGL\\.so.*|libEGL\\.so.*|libGLESv2\\.so.*)$
%global __requires_exclude ^(libGL\\.so.*|libEGL\\.so.*|libGLESv2\\.so.*)$
%{?_without_mesa_glvnd_default:
%global __provides_exclude ^(libGL\\.so.*|libEGL\\.so.*|libGLES*\\.so.*)$
%global __requires_exclude ^(libGL\\.so.*|libEGL\\.so.*|libGLES*\\.so.*)$
}
%description
libglvnd is an implementation of the vendor-neutral dispatch layer for
arbitrating OpenGL API calls between multiple vendors on a per-screen basis.
%package devel
Summary: Development files for %{name}
Requires: %{name}%{?_isa} = :%{version}-%{release}
Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-opengl%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-gles%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-glx%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-egl%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-core-devel%{?_isa} = %{epoch}:%{version}-%{release}
%description devel
%description devel
The %{name}-devel package contains libraries and header files for
developing applications that use %{name}.
%package core-devel
Summary: Core development files for %{name}
%description core-devel
The %{name}-core-devel package is a bootstrap trick for Mesa, which wants
to build against the %{name} headers but does not link against any of
its libraries (and, initially, has file conflicts with them). If you are
not Mesa you almost certainly want %{name}-devel instead.
%package opengl
Summary: OpenGL support for libglvnd
Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
%description opengl
libOpenGL is the common dispatch interface for the workstation OpenGL API.
%package gles
Summary: GLES support for libglvnd
Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
%{!?_without_mesa_glvnd_default:
# mesa is the default EGL implementation provider
Requires: mesa-libEGL%{?_isa}
Provides: libGLES
Provides: libGLES%{?_isa}
}
%description gles
libGLESv[12] are the common dispatch interface for the GLES API.
%package egl
Summary: EGL support for libglvnd
Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
%{!?_without_mesa_glvnd_default:
# mesa is the default EGL implementation provider
Requires: mesa-libEGL%{?_isa}
Provides: libEGL
Provides: libEGL%{?_isa}
}
%description egl
libEGL are the common dispatch interface for the EGL API.
%package glx
Summary: GLX support for libglvnd
Requires: %{name}%{?_isa} = %{epoch}:%{version}-%{release}
%{!?_without_mesa_glvnd_default:
# mesa is the default GL implementation provider
Requires: mesa-libGL%{?_isa}
Provides: libGL
Provides: libGL%{?_isa}
}
%description glx
libGL and libGLX are the common dispatch interface for the GLX API.
%prep
%autosetup -p1 -n %{name}-%{?commit0}%{?!commit0:%{version}}
autoreconf -vif
%build
%configure \
--disable-static \
@ -60,18 +137,15 @@ autoreconf -vif
%make_install INSTALL="install -p"
find %{buildroot} -name '*.la' -delete
%{!?_with_mesa_glvnd_default:
# Avoid conflict with mesa-libGL until mesa has gained libglvnd support
%{?_without_mesa_glvnd_default:
# Avoid conflict with mesa-libGL
mkdir -p %{buildroot}%{_libdir}/%{name}
for l in libEGL libGL libGLESv2 ; do
for l in libEGL libGL libGLESv1_CM libGLESv2 ; do
mv %{buildroot}%{_libdir}/${l}.so* \
%{buildroot}%{_libdir}/%{name}
done
}
# Fedora does not provide libGLESv1_CM
rm -rf %{buildroot}%{_libdir}/libGLESv1_CM*
# Create directory layout
mkdir -p %{buildroot}%{_sysconfdir}/glvnd/egl_vendor.d
mkdir -p %{buildroot}%{_datadir}/glvnd/egl_vendor.d
@ -87,33 +161,75 @@ xvfb-run -a make check V=1 || cat `find . -name test-suite.log`
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%files
%doc README.md
%{_libdir}/*.so.*
%{!?_with_mesa_glvnd_default:
%dir %{_libdir}/%{name}
%{_libdir}/%{name}/lib*GL*.so.*
}
%dir %{_sysconfdir}/glvnd
%dir %{_sysconfdir}/glvnd/egl_vendor.d
%dir %{_datadir}/glvnd
%dir %{_datadir}/glvnd/egl_vendor.d
%{_libdir}/libGLdispatch.so.0*
%files devel
%post opengl -p /sbin/ldconfig
%postun opengl -p /sbin/ldconfig
%files opengl
%{_libdir}/libOpenGL.so.0*
%post gles -p /sbin/ldconfig
%postun gles -p /sbin/ldconfig
%files gles
%if 0%{?_without_mesa_glvnd_default}
%{_libdir}/%{name}/libGLES*.so.*
%else
%{_libdir}/libGLES*.so.*
%endif
%post glx -p /sbin/ldconfig
%postun glx -p /sbin/ldconfig
%files glx
%if 0%{?_without_mesa_glvnd_default}
%{_libdir}/%{name}/libGL.so.*
%{_libdir}/%{name}/libGLX.so.*
%else
%{_libdir}/libGL.so.*
%{_libdir}/libGLX.so.*
%endif
%post egl -p /sbin/ldconfig
%postun egl -p /sbin/ldconfig
%files egl
%dir %{_sysconfdir}/glvnd/egl_vendor.d
%dir %{_datadir}/glvnd/egl_vendor.d
%if 0%{?_without_mesa_glvnd_default}
%{_libdir}/%{name}/libEGL*.so.*
%else
%{_libdir}/libEGL*.so.*
%endif
%files core-devel
%dir %{_includedir}/glvnd
%{_includedir}/glvnd/*.h
%{!?_with_mesa_glvnd_default:
%{_libdir}/%{name}/lib*GL*.so
}
%{_libdir}/*.so
%{_libdir}/pkgconfig/*.pc
%files devel
%{_libdir}/lib*.so
%if 0%{?_without_mesa_glvnd_default}
%{_libdir}/%{name}/lib*.so
%endif
%changelog
* Wed Jan 11 2017 Hans de Goede <hdegoede@redhat.com> - 1:0.2.999-7.gitdc16f8c
- Epoch:1 to provide upgrade path from negativo17.org rpms
- New snapshot
- Add patches to fix building on ARM (from Rob Clark)
- Add BuildRequires: python
- Add ldconfig scriptlets for library sub-packages
* Wed Jan 11 2017 Adam Jackson <ajax@redhat.com>
- Don't hide libraries in a subdir (rhbz#1413579)
- Split up libraries to appropriate subpackages
- Make the req/prov filter catch more cases
- Restore libGLESv1 for ABI compliance
* Wed Oct 26 2016 Leigh Scott <leigh123linux@googlemail.com> - 0.2.999-6.git28867bb
- Update snapshot
- Fix EGL crash for KDE/Plasma (rfbz#4303)

View File

@ -1 +1 @@
7f361721ca9b1db26ebb40400034c45f libglvnd-28867bb.tar.gz
SHA512 (libglvnd-dc16f8c.tar.gz) = ac236cbf39be47d34c5df05fac720e13425cb1cd27c3d66c1cea5c2c6a337bddfb16851f76c2c6b0888b0b01cd8d2324971d5220b13d4ac0ec24f1a5c3d8177f