git: 4f80881f6058 - main - cad/kicad: attempt to fix 3D-Viewer by using bundled GLEW

From: Christoph Moench-Tegeder <cmt_at_FreeBSD.org>
Date: Sat, 07 May 2022 15:30:48 UTC
The branch main has been updated by cmt:

URL: https://cgit.FreeBSD.org/ports/commit/?id=4f80881f60588b2d02541647ceb7d635928faac9

commit 4f80881f60588b2d02541647ceb7d635928faac9
Author:     Christoph Moench-Tegeder <cmt@FreeBSD.org>
AuthorDate: 2022-05-07 15:29:23 +0000
Commit:     Christoph Moench-Tegeder <cmt@FreeBSD.org>
CommitDate: 2022-05-07 15:29:23 +0000

    cad/kicad: attempt to fix 3D-Viewer by using bundled GLEW
    
    The 3D-Viewer (e.g. from the Footprint Editor) may fail to start
    with an "Unknown error" message. Investigation indicates that
    kicad really needs it's bundles libGLEW, using the system one
    was a mistake.
    While here, fix a possible nullpointer dereference in the 3D cache
    destructor - this is only relevant when the 3D viewer fails unexpectedly,
    but then it is quite annoying during debugging.
    
    PR:             262802
    Reported by:    Tomasz "CeDeROM" CEDRO
---
 cad/kicad/Makefile                                      |  5 +++--
 cad/kicad/files/patch-3d-viewer_3d__cache_3d__cache.cpp | 12 ++++++++++++
 cad/kicad/files/patch-thirdparty_glew_CMakeLists.txt    | 10 ++++++++++
 3 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/cad/kicad/Makefile b/cad/kicad/Makefile
index 5ef818579d2a..028c5aa600fc 100644
--- a/cad/kicad/Makefile
+++ b/cad/kicad/Makefile
@@ -2,6 +2,7 @@
 
 PORTNAME=	kicad
 PORTVERSION=	6.0.5
+PORTREVISION=	1
 PORTEPOCH=	2
 CATEGORIES=	cad
 MASTER_SITES=	https://gitlab.com/${PORTNAME}/code/${PORTNAME}/-/archive/${DISTVERSION}/
@@ -30,7 +31,7 @@ USES=		cmake:noninja compiler:c++11-lib desktop-file-utils gl \
 SHEBANG_FILES=	pcbnew/python/plugins/touch_slider_wizard.py
 
 USE_XORG=	ice x11 xext
-USE_GL=		gl glew glu glut
+USE_GL=		gl glu glut
 USE_WX=		3.1
 WX_COMPS=	python:lib wx
 USE_GNOME=	atk cairo gdkpixbuf2 gtk30 pango
@@ -41,7 +42,7 @@ CMAKE_ARGS=	-DwxWidgets_CONFIG_EXECUTABLE=${WX_CONFIG}	\
 		-DKICAD_SCRIPTING_WXPYTHON=ON			\
 		-DKICAD_USE_OCC=ON				\
 		-DKICAD_USE_EGL=ON				\
-		-DKICAD_USE_BUNDLED_GLEW=OFF 			\
+		-DKICAD_USE_BUNDLED_GLEW=ON 			\
 		-DOCC_INCLUDE_DIR=${LOCALBASE}/include/OpenCASCADE
 USE_LDCONFIG=	yes
 
diff --git a/cad/kicad/files/patch-3d-viewer_3d__cache_3d__cache.cpp b/cad/kicad/files/patch-3d-viewer_3d__cache_3d__cache.cpp
new file mode 100644
index 000000000000..d33fb5620970
--- /dev/null
+++ b/cad/kicad/files/patch-3d-viewer_3d__cache_3d__cache.cpp
@@ -0,0 +1,12 @@
+--- 3d-viewer/3d_cache/3d_cache.cpp.orig	2022-05-06 18:57:13 +0200
++++ 3d-viewer/3d_cache/3d_cache.cpp
+@@ -199,7 +199,8 @@
+     FlushCache();
+ 
+     // We'll delete ".3dc" cache files older than this many days
+-    int clearCacheInterval = commonSettings->m_System.clear_3d_cache_interval;
++    int clearCacheInterval = 0;
++    if(commonSettings) clearCacheInterval = commonSettings->m_System.clear_3d_cache_interval;
+ 
+     // An interval of zero means the user doesn't want to ever clear the cache
+ 
diff --git a/cad/kicad/files/patch-thirdparty_glew_CMakeLists.txt b/cad/kicad/files/patch-thirdparty_glew_CMakeLists.txt
new file mode 100644
index 000000000000..18c5a496dd6c
--- /dev/null
+++ b/cad/kicad/files/patch-thirdparty_glew_CMakeLists.txt
@@ -0,0 +1,10 @@
+--- thirdparty/glew/CMakeLists.txt.orig	2022-05-07 15:44:23 +0200
++++ thirdparty/glew/CMakeLists.txt
+@@ -5,6 +5,7 @@
+ # The actual include directories will be added to the global include paths as
+ # system headers
+ target_include_directories( glew PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include" )
++target_include_directories( glew SYSTEM PRIVATE "${CMAKE_INSTALL_PREFIX}/include" )
+ 
+ # Definitions for compiling GLEW staticly for EGL (extracted from the main GLEW CMakeLists.txt file)
+ add_definitions( -DGLEW_STATIC )