diff --git a/0001-Allow-compilation-on-GLES-platforms.patch b/0001-Allow-compilation-on-GLES-platforms.patch new file mode 100644 index 0000000..2b8b470 --- /dev/null +++ b/0001-Allow-compilation-on-GLES-platforms.patch @@ -0,0 +1,55 @@ +From 2d5a68b91f9d638aa408285d1608bc5d70060602 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20Br=C3=BCns?= +Date: Fri, 1 Sep 2017 02:11:37 +0200 +Subject: [PATCH] Allow compilation on GLES platforms +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +On GLES 2.0 platforms (more specifically, for Qt5 "opengl es2" builds), +QOpenGLFunctions_3_2_Core does not exist. Since Qt 5.7, +QOpenGlFramebufferObject has a static wrapper method for framebuffer +blitting, which in worst case is a noop. + +Signed-off-by: Stefan BrĂ¼ns +--- + GUISupport/Qt/QVTKOpenGLWidget.cxx | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/GUISupport/Qt/QVTKOpenGLWidget.cxx b/GUISupport/Qt/QVTKOpenGLWidget.cxx +index a1676e8..16e255f 100644 +--- a/GUISupport/Qt/QVTKOpenGLWidget.cxx ++++ b/GUISupport/Qt/QVTKOpenGLWidget.cxx +@@ -421,10 +421,15 @@ void QVTKOpenGLWidget::paintGL() + + // blit from this->FBO to QOpenGLWidget's FBO. + vtkQVTKOpenGLWidgetDebugMacro("paintGL::blit-to-defaultFBO"); ++#if QT_VERSION < 0x050700 + QOpenGLFunctions_3_2_Core* f = + QOpenGLContext::currentContext()->versionFunctions(); ++#else ++ QOpenGLFunctions* f = QOpenGLContext::currentContext()->functions(); ++#endif + if (f) + { ++#if QT_VERSION < 0x050700 + f->glBindFramebuffer(GL_DRAW_FRAMEBUFFER, this->defaultFramebufferObject()); + f->glDrawBuffer(GL_COLOR_ATTACHMENT0); + +@@ -434,6 +439,13 @@ void QVTKOpenGLWidget::paintGL() + f->glBlitFramebuffer(0, 0, this->RenderWindow->GetSize()[0], this->RenderWindow->GetSize()[1], + 0, 0, this->RenderWindow->GetSize()[0], this->RenderWindow->GetSize()[1], GL_COLOR_BUFFER_BIT, + GL_NEAREST); ++#else ++ f->glDisable(GL_SCISSOR_TEST); // Scissor affects glBindFramebuffer. ++ QRect rect(0, 0, this->RenderWindow->GetSize()[0], this->RenderWindow->GetSize()[1]); ++ QOpenGLFramebufferObject::blitFramebuffer(0 /* binds to default framebuffer */, rect, ++ this->FBO, rect, GL_COLOR_BUFFER_BIT, GL_NEAREST, GL_COLOR_ATTACHMENT0, ++ GL_COLOR_ATTACHMENT0, QOpenGLFramebufferObject::DontRestoreFramebufferBinding); ++#endif + + // now clear alpha otherwise we end up blending the rendering with + // background windows in certain cases. It happens on OsX +-- +2.14.1 + diff --git a/pre_checkin.sh b/pre_checkin.sh index 9a4f91c..e4d942a 100644 --- a/pre_checkin.sh +++ b/pre_checkin.sh @@ -1,5 +1,4 @@ #!/bin/sh sed 's|%define compat_gl 0|%define compat_gl 1|' vtk.spec > vtk-compat_gl.spec -cp vtk-rpmlintrc vtk-compat_gl-rpmlintrc cp vtk.changes vtk-compat_gl.changes diff --git a/vtk-compat_gl-rpmlintrc b/vtk-compat_gl-rpmlintrc deleted file mode 100644 index c61c3ec..0000000 --- a/vtk-compat_gl-rpmlintrc +++ /dev/null @@ -1,11 +0,0 @@ -# FIXME: See if packaging can be tweaked to avoid these warnings later -# python-vtk needs these devel files to work -addFilter("python3-vtk* devel-file-in-non-devel-package") - -# Upstream does not supply manuals for any binary, suppress warnings -addFilter(".* no-manual-page-for-binary") - -# This is not a versioned shared lib, and not used by anything other than -# vtk's java bindings, simply package it with the vtk-java subpackage -addFilter("vtk-java.* shlib-policy-name-error") -addFilter("vtk-compat_gl-java.* shlib-policy-name-error") diff --git a/vtk-compat_gl.changes b/vtk-compat_gl.changes index 5175f45..c51c783 100644 --- a/vtk-compat_gl.changes +++ b/vtk-compat_gl.changes @@ -1,3 +1,46 @@ +------------------------------------------------------------------- +Thu Sep 28 10:43:27 UTC 2017 - badshah400@gmail.com + +- Drop vtk-compat_gl-rpmlintrc: openSUSE:Factory bots don't accept + conditional sources and one rpmlintrc file is sufficient for + both main and linked packages anyway. + +------------------------------------------------------------------- +Tue Sep 19 10:46:40 UTC 2017 - kkhere.geo@gmail.com + +- do not exclude libViewsGeovisJava.so from devel package + This library is required for development. +- package vtk binary in devel package. +- VTKTargets-debug.cmake tests for the existance of the library (line 3394) + and the binary (line 3404) and causes an error if the files do + not exist + +------------------------------------------------------------------- +Thu Sep 14 20:54:34 UTC 2017 - stefan.bruens@rwth-aachen.de + +- Remove the various subpackage Requires from the devel package + again. The qt subpackage contains a Qt Designer plugin and no + dependency at all. Package the vtkWrap{Tcl,Java,Python} wrapper + generators in the devel package, as these are useless without + the vtk headers files. +- Fix description/summary of vtk-qt subpackage + +------------------------------------------------------------------- +Tue Sep 12 12:33:38 UTC 2017 - kkhere.geo@gmail.com + +- devel subpackage should require -tcl, -java and -qt subpackages + since the *.cmake files refer to files in those subpackages + +------------------------------------------------------------------- +Mon Sep 11 13:46:28 UTC 2017 - stefan.bruens@rwth-aachen.de + +- Add 0001-Allow-compilation-on-GLES-platforms.patch + The QOpenGLFunctions_3_2_Core class providing the framebuffer + blit functions is not available on GLES 2 builds of Qt5. Let Qt + handle the framebuffer blit, and just use the GLES/GL subset + provided by QOpenGLFunctions for the remainder. + Fix for https://gitlab.kitware.com/vtk/vtk/issues/17113 + ------------------------------------------------------------------- Fri Sep 1 00:13:18 UTC 2017 - badshah400@gmail.com diff --git a/vtk-compat_gl.spec b/vtk-compat_gl.spec index 7ed20b9..66cf04e 100644 --- a/vtk-compat_gl.spec +++ b/vtk-compat_gl.spec @@ -45,15 +45,13 @@ Url: http://vtk.org/ Source: http://www.vtk.org/files/release/%{series}/VTK-%{version}.tar.gz # FIXME See if packaging can be tweaked to accommodate python-vtk's devel files in a devel package later # We need to use the compat conditionals here to avoid Factory's source validator from tripping up -%if %{compat_gl} -Source1: vtk-compat_gl-rpmlintrc -%else Source1: vtk-rpmlintrc -%endif # PATCH-FIX-UPSTREAM vtk-fix-file-contains-date-time.patch badshah400@gmail.com -- Fix file containing DATE and TIME Patch1: vtk-fix-file-contains-date-time.patch # PATCH-FIX-UPSTREAM vtk-Rinterface-uintptr_t.patch boo#985386 badshah400@gmail.com -- Fix issues with uintptr_t redefinition by defining the HAVE_UINTPTR_T macro using cmake functions to avoid redefinition of uintptr_t, which is already defined in stdint.h called earlier; patch sent upstream Patch2: vtk-Rinterface-uintptr_t.patch +# PATCH-FIX-OPENSUSE 0001-Allow-compilation-on-GLES-platforms.patch VTK issue #17113 stefan.bruens@rwth-aachen.de -- Fix building with Qt GLES builds +Patch3: 0001-Allow-compilation-on-GLES-platforms.patch BuildRequires: Mesa-libGL-devel BuildRequires: R-base-devel BuildRequires: boost-devel @@ -216,7 +214,7 @@ rendering and visualization. This package provides python bindings for VTK. %package qt -Summary: Qt VTK widget +Summary: Qt Designer plugin for QVTKWidget Group: Development/Libraries/C and C++ Requires: %{shlib} = %{version} %if %{compat_gl} @@ -230,7 +228,7 @@ Conflicts: vtk-compat_gl-qt VTK is a software system for image processing, 3D graphics, volume rendering and visualization. -This package provides Qt bindings for VTK. +This package provides a Qt Designer plugin for the QVTKWidget. %package tcl Summary: Tcl bindings for VTK @@ -290,6 +288,7 @@ This package provides a few testing programs for VTK. %setup -q -n VTK-%{version} %patch1 -p1 %patch2 -p1 +%patch3 -p1 # Replace relative path ../../../VTKData with %%{_datadir}/%%{pkgname}data-%%{version} # otherwise it will break on symlinks. @@ -432,9 +431,16 @@ chrpath -d %{buildroot}%{_bindir}/* %files devel %defattr(-,root,root,-) %doc Copyright.txt +%{_bindir}/%{pkgname} %{_bindir}/%{pkgname}EncodeString %{_bindir}/%{pkgname}HashSource %{_bindir}/%{pkgname}WrapHierarchy +%{_bindir}/%{pkgname}ParseJava +%{_bindir}/%{pkgname}WrapJava +%{_bindir}/%{pkgname}WrapPython +%{_bindir}/%{pkgname}WrapPythonInit +%{_bindir}/%{pkgname}WrapTcl +%{_bindir}/%{pkgname}WrapTclInit %if %{compat_gl} %{_bindir}/%{pkgname}ParseOGLExt %endif @@ -451,30 +457,19 @@ chrpath -d %{buildroot}%{_bindir}/* %{_libdir}/libvtkWrappingTools.a %{_includedir}/%{pkgname}-%{series}/ %exclude %{_datadir}/tcl/vtk/vtktcl.c -# This goes in the vtk-java subpackage, not a devel symlink -%exclude %{_libdir}/libvtkViewsGeovisJava.so -# %files java %defattr(-,root,root,-) -%{_bindir}/%{pkgname}ParseJava -%{_bindir}/%{pkgname}WrapJava %{_libdir}/%{pkgname}.jar -%{_libdir}/libvtkViewsGeovisJava.so %files -n python3-%{name} %defattr(-,root,root,-) %{_bindir}/%{pkgname}python %{_bindir}/p%{pkgname}python -%{_bindir}/%{pkgname}WrapPython -%{_bindir}/%{pkgname}WrapPythonInit %{python3_sitearch}/%{pkgname}/ %files tcl %defattr(-,root,root,-) -%{_bindir}/%{pkgname} -%{_bindir}/%{pkgname}WrapTcl -%{_bindir}/%{pkgname}WrapTclInit %{_datadir}/tcl/%{pkgname}/ %files qt diff --git a/vtk.changes b/vtk.changes index 5175f45..c51c783 100644 --- a/vtk.changes +++ b/vtk.changes @@ -1,3 +1,46 @@ +------------------------------------------------------------------- +Thu Sep 28 10:43:27 UTC 2017 - badshah400@gmail.com + +- Drop vtk-compat_gl-rpmlintrc: openSUSE:Factory bots don't accept + conditional sources and one rpmlintrc file is sufficient for + both main and linked packages anyway. + +------------------------------------------------------------------- +Tue Sep 19 10:46:40 UTC 2017 - kkhere.geo@gmail.com + +- do not exclude libViewsGeovisJava.so from devel package + This library is required for development. +- package vtk binary in devel package. +- VTKTargets-debug.cmake tests for the existance of the library (line 3394) + and the binary (line 3404) and causes an error if the files do + not exist + +------------------------------------------------------------------- +Thu Sep 14 20:54:34 UTC 2017 - stefan.bruens@rwth-aachen.de + +- Remove the various subpackage Requires from the devel package + again. The qt subpackage contains a Qt Designer plugin and no + dependency at all. Package the vtkWrap{Tcl,Java,Python} wrapper + generators in the devel package, as these are useless without + the vtk headers files. +- Fix description/summary of vtk-qt subpackage + +------------------------------------------------------------------- +Tue Sep 12 12:33:38 UTC 2017 - kkhere.geo@gmail.com + +- devel subpackage should require -tcl, -java and -qt subpackages + since the *.cmake files refer to files in those subpackages + +------------------------------------------------------------------- +Mon Sep 11 13:46:28 UTC 2017 - stefan.bruens@rwth-aachen.de + +- Add 0001-Allow-compilation-on-GLES-platforms.patch + The QOpenGLFunctions_3_2_Core class providing the framebuffer + blit functions is not available on GLES 2 builds of Qt5. Let Qt + handle the framebuffer blit, and just use the GLES/GL subset + provided by QOpenGLFunctions for the remainder. + Fix for https://gitlab.kitware.com/vtk/vtk/issues/17113 + ------------------------------------------------------------------- Fri Sep 1 00:13:18 UTC 2017 - badshah400@gmail.com diff --git a/vtk.spec b/vtk.spec index 8dee8fc..73a8e80 100644 --- a/vtk.spec +++ b/vtk.spec @@ -45,15 +45,13 @@ Url: http://vtk.org/ Source: http://www.vtk.org/files/release/%{series}/VTK-%{version}.tar.gz # FIXME See if packaging can be tweaked to accommodate python-vtk's devel files in a devel package later # We need to use the compat conditionals here to avoid Factory's source validator from tripping up -%if %{compat_gl} -Source1: vtk-compat_gl-rpmlintrc -%else Source1: vtk-rpmlintrc -%endif # PATCH-FIX-UPSTREAM vtk-fix-file-contains-date-time.patch badshah400@gmail.com -- Fix file containing DATE and TIME Patch1: vtk-fix-file-contains-date-time.patch # PATCH-FIX-UPSTREAM vtk-Rinterface-uintptr_t.patch boo#985386 badshah400@gmail.com -- Fix issues with uintptr_t redefinition by defining the HAVE_UINTPTR_T macro using cmake functions to avoid redefinition of uintptr_t, which is already defined in stdint.h called earlier; patch sent upstream Patch2: vtk-Rinterface-uintptr_t.patch +# PATCH-FIX-OPENSUSE 0001-Allow-compilation-on-GLES-platforms.patch VTK issue #17113 stefan.bruens@rwth-aachen.de -- Fix building with Qt GLES builds +Patch3: 0001-Allow-compilation-on-GLES-platforms.patch BuildRequires: Mesa-libGL-devel BuildRequires: R-base-devel BuildRequires: boost-devel @@ -216,7 +214,7 @@ rendering and visualization. This package provides python bindings for VTK. %package qt -Summary: Qt VTK widget +Summary: Qt Designer plugin for QVTKWidget Group: Development/Libraries/C and C++ Requires: %{shlib} = %{version} %if %{compat_gl} @@ -230,7 +228,7 @@ Conflicts: vtk-compat_gl-qt VTK is a software system for image processing, 3D graphics, volume rendering and visualization. -This package provides Qt bindings for VTK. +This package provides a Qt Designer plugin for the QVTKWidget. %package tcl Summary: Tcl bindings for VTK @@ -290,6 +288,7 @@ This package provides a few testing programs for VTK. %setup -q -n VTK-%{version} %patch1 -p1 %patch2 -p1 +%patch3 -p1 # Replace relative path ../../../VTKData with %%{_datadir}/%%{pkgname}data-%%{version} # otherwise it will break on symlinks. @@ -432,9 +431,16 @@ chrpath -d %{buildroot}%{_bindir}/* %files devel %defattr(-,root,root,-) %doc Copyright.txt +%{_bindir}/%{pkgname} %{_bindir}/%{pkgname}EncodeString %{_bindir}/%{pkgname}HashSource %{_bindir}/%{pkgname}WrapHierarchy +%{_bindir}/%{pkgname}ParseJava +%{_bindir}/%{pkgname}WrapJava +%{_bindir}/%{pkgname}WrapPython +%{_bindir}/%{pkgname}WrapPythonInit +%{_bindir}/%{pkgname}WrapTcl +%{_bindir}/%{pkgname}WrapTclInit %if %{compat_gl} %{_bindir}/%{pkgname}ParseOGLExt %endif @@ -451,30 +457,19 @@ chrpath -d %{buildroot}%{_bindir}/* %{_libdir}/libvtkWrappingTools.a %{_includedir}/%{pkgname}-%{series}/ %exclude %{_datadir}/tcl/vtk/vtktcl.c -# This goes in the vtk-java subpackage, not a devel symlink -%exclude %{_libdir}/libvtkViewsGeovisJava.so -# %files java %defattr(-,root,root,-) -%{_bindir}/%{pkgname}ParseJava -%{_bindir}/%{pkgname}WrapJava %{_libdir}/%{pkgname}.jar -%{_libdir}/libvtkViewsGeovisJava.so %files -n python3-%{name} %defattr(-,root,root,-) %{_bindir}/%{pkgname}python %{_bindir}/p%{pkgname}python -%{_bindir}/%{pkgname}WrapPython -%{_bindir}/%{pkgname}WrapPythonInit %{python3_sitearch}/%{pkgname}/ %files tcl %defattr(-,root,root,-) -%{_bindir}/%{pkgname} -%{_bindir}/%{pkgname}WrapTcl -%{_bindir}/%{pkgname}WrapTclInit %{_datadir}/tcl/%{pkgname}/ %files qt