Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F167594636
D55434.id172439.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
52 KB
Referenced Files
None
Subscribers
None
D55434.id172439.diff
View Options
diff --git a/graphics/cloudcompare/Makefile b/graphics/cloudcompare/Makefile
--- a/graphics/cloudcompare/Makefile
+++ b/graphics/cloudcompare/Makefile
@@ -1,27 +1,36 @@
PORTNAME= cloudcompare
DISTVERSIONPREFIX= v
-DISTVERSION= 2.12.4
-PORTREVISION= 18
+DISTVERSION= 2.13.2
CATEGORIES= graphics
-MAINTAINER= ports@FreeBSD.org
-COMMENT= 3D point cloud processing software
-WWW= https://www.cloudcompare.org/
+MAINTAINER= alven@FreeBSD.org
+COMMENT= 3D point cloud (and triangular mesh) editing and processing software
+WWW= https://www.cloudcompare.org/ \
+ https://github.com/CloudCompare/CloudCompare/
LICENSE= GPLv2+ LGPL20+
LICENSE_COMB= multi
-USES= cmake compiler:c++11-lang localbase:ldflags qt:5
+USES= cmake gl qt:5
+
USE_GITHUB= yes
GH_ACCOUNT= CloudCompare
GH_PROJECT= ${GH_ACCOUNT}
-GH_TUPLE= CloudCompare:CCCoreLib:f0d5450:CloudCompare/libs/qCC_db/extern/CCCoreLib
-
-USE_QT= concurrent core gui opengl printsupport widgets buildtools:build qmake:build svg linguisttools:build
+GH_TUPLE= CloudCompare:CCCoreLib:a8ce4270:cccorelib/libs/qCC_db/extern/CCCoreLib \
+ jlblancoc:nanoflann:2f54b8e:nanoflann/libs/qCC_db/extern/CCCoreLib/extern/nanoflann \
+ asmaloney:libE57Format:1914b8ea:libe57format/plugins/core/IO/qE57IO/extern/libE57Format \
+ google:googletest:7a7231c:googletest/plugins/core/IO/qE57IO/extern/libE57Format/test/extern/googletest \
+ dgirardeau:q3DMASC:4eec6459:q3dmasc/plugins/core/Standard/q3DMASC \
+ davisking:dlib:9117bd78:dlib/plugins/core/Standard/qCanupo/contrib/dlib \
+ CloudCompare:qJSonRPCPlugin:1ff2dbe4:qjsonrpcplugin/plugins/core/Standard/qJSonRPCPlugin \
+ hvs-ait:mplane-plugin:342ef9f5:mplaneplugin/plugins/core/Standard/qMPlane \
+ CyberbuildLab:masonry-cc:0c590fb2:masonrycc/plugins/core/Standard/qMasonry \
+ cloudcompare:PoissonRecon:d215dbaa:poissonrecon/plugins/core/Standard/qPoissonRecon/extern/PoissonRecon \
+ truebelief:cc-treeiso-plugin:fbe6a41a:cctreeisoplugin/plugins/core/Standard/qTreeIso
+USE_GL= gl glu
USE_LDCONFIG= yes
+USE_QT= concurrent core gui opengl printsupport widgets buildtools:build qmake:build svg linguisttools:build
-# PDAL support disabled ATM
-# plugins/core/IO/qPDALIO/src/LASFilter.cpp:1360:24: error: no member named 'incompatibleSrs' in 'pdal::LasHeader'
OPTIONS_DEFINE= DXFLIB GAMEPAD GDAL PLUGINS SHAPELIB
OPTIONS_DEFAULT=DXFLIB GAMEPAD GDAL PLUGINS SHAPELIB
OPTIONS_SUB= yes
@@ -29,7 +38,6 @@
DXFLIB_DESC= Enable AutoCAD DXF file support
GAMEPAD_DESC= Enable Qt gamepad support
GDAL_DESC= Enable raster file support
-PDAL_DESC= Enable point cloud data support
SHAPELIB_DESC= Enable shape file support
DXFLIB_CMAKE_BOOL= OPTION_USE_DXF_LIB
@@ -42,19 +50,16 @@
-DGDAL_LIBRARY=${PREFIX}/lib/libgdal.so
GDAL_LIB_DEPENDS= libgdal.so:graphics/gdal
-PDAL_CMAKE_BOOL= PLUGIN_IO_QPDAL
-PDAL_CMAKE_ON= -DJSON_ROOT_DIR=${PREFIX}/include/jsoncpp
-PDAL_LIB_DEPENDS= libpdal_base.so:math/pdal
-
SHAPELIB_CMAKE_BOOL= OPTION_USE_SHAPE_LIB
SHAPELIB_LIB_DEPENDS= libshp.so:devel/shapelib
-PLUGINS_USES= eigen:3 gl jpeg xorg
+PLUGINS_USES= eigen:3 jpeg xorg
PLUGINS_CMAKE_BOOL= PLUGIN_STANDARD_QANIMATION \
PLUGIN_STANDARD_QBROOM \
PLUGIN_STANDARD_QCOMPASS \
PLUGIN_STANDARD_QCSF \
PLUGIN_IO_QCSV_MATRIX \
+ PLUGIN_IO_QPDAL \
PLUGIN_GL_QEDL \
PLUGIN_STANDARD_QFACETS \
PLUGIN_STANDARD_QHPR \
@@ -64,29 +69,28 @@
PLUGIN_STANDARD_QRANSAC_SD \
PLUGIN_STANDARD_QSRA \
PLUGIN_GL_QSSAO # plugins requiring rare external libs are left out, TODO maybe add some of them?
-PLUGINS_CMAKE_ON= -DEIGEN_ROOT_DIR:BOOL=${LOCALBASE}/include/eigen3
+PLUGINS_CMAKE_ON= -DEIGEN_ROOT_DIR:BOOL=${LOCALBASE}/include/eigen3 -DJSON_ROOT_DIR=${LOCALBASE}/include/jsoncpp
PLUGINS_CXXFLAGS= ${PLUGINS_CXXFLAGS_${CHOSEN_COMPILER_TYPE}}
PLUGINS_CXXFLAGS_clang= -Wno-narrowing
PLUGINS_CXXFLAGS+= -DEIGEN_DONT_PARALLELIZE # OpenMP is broken in cmake: see bug#223678
-PLUGINS_USE= XORG=ice,sm,x11,xext,xt GL=gl,glu
+PLUGINS_USE= XORG=ice,sm,x11,xext,xt
PLUGINS_LIB_DEPENDS= libboost_thread.so:devel/boost-libs \
libexpat.so:textproc/expat2 \
libflann_cpp.so:math/flann \
libfreetype.so:print/freetype2 \
+ libpdalcpp.so:math/pdal \
libpng.so:graphics/png \
libtiff.so:graphics/tiff \
libvtkCommonCore-${VTK_VER}.so:math/vtk${VTK_VER:R}
PLUGINS_IMPLIES= SHAPELIB
-pre-configure:
- @${REINPLACE_CMD} -e 's,%%PREFIX%%,${PREFIX},1' ${WRKSRC}/snap/gui/ccViewer.desktop ${WRKSRC}/snap/gui/cloudcompare.desktop
-
post-install:
- @${MKDIR} ${STAGEDIR}${PREFIX}/share/pixmaps
- ${INSTALL_DATA} ${WRKSRC}/snap/gui/ccViewer.desktop ${STAGEDIR}${PREFIX}/share/applications
- ${INSTALL_DATA} ${WRKSRC}/snap/gui/ccViewer.png ${STAGEDIR}${PREFIX}/share/pixmaps
- ${INSTALL_DATA} ${WRKSRC}/snap/gui/cloudcompare.desktop ${STAGEDIR}${PREFIX}/share/applications
- ${INSTALL_DATA} ${WRKSRC}/snap/gui/cloudcompare.png ${STAGEDIR}${PREFIX}/share/pixmaps
+ ${MKDIR} ${STAGEDIR}${PREFIX}/share/pixmaps
+
+ ${INSTALL_DATA} ${FILESDIR}/*.desktop ${STAGEDIR}${PREFIX}/share/applications
+ ${INSTALL_DATA} ${FILESDIR}/*.png ${STAGEDIR}${PREFIX}/share/pixmaps
+
+ ${REINPLACE_CMD} -e 's|%%PREFIX%%|${PREFIX}|g' ${STAGEDIR}${PREFIX}/share/applications/*.desktop
.include <../../math/vtk9/Makefile.version>
.include <bsd.port.mk>
diff --git a/graphics/cloudcompare/distinfo b/graphics/cloudcompare/distinfo
--- a/graphics/cloudcompare/distinfo
+++ b/graphics/cloudcompare/distinfo
@@ -1,5 +1,25 @@
-TIMESTAMP = 1659240483
-SHA256 (CloudCompare-CloudCompare-v2.12.4_GH0.tar.gz) = 31c1f4f91efbdb74619cebb36f57f999d6f1a57bb6f87b13e60d21e670c38f68
-SIZE (CloudCompare-CloudCompare-v2.12.4_GH0.tar.gz) = 35685278
-SHA256 (CloudCompare-CCCoreLib-f0d5450_GH0.tar.gz) = 564d3cfa2724580c0344266da0af778621a4e93b49a8f745df7e49de8db45a30
-SIZE (CloudCompare-CCCoreLib-f0d5450_GH0.tar.gz) = 235019
+TIMESTAMP = 1771603908
+SHA256 (CloudCompare-CloudCompare-v2.13.2_GH0.tar.gz) = 1f66785649a611124aeed17c2f5015841664536ee953a7233dae2729bcc96a72
+SIZE (CloudCompare-CloudCompare-v2.13.2_GH0.tar.gz) = 35425558
+SHA256 (CloudCompare-CCCoreLib-a8ce4270_GH0.tar.gz) = 0d4b4ab7e2d8a87611b9575259494d32e746f743ae78e829ac0f4b4b4114b880
+SIZE (CloudCompare-CCCoreLib-a8ce4270_GH0.tar.gz) = 281107
+SHA256 (jlblancoc-nanoflann-2f54b8e_GH0.tar.gz) = ee2ad38be1bd73d1d8713edd5185a1748cff0ae5732ea6d35d532524266d388b
+SIZE (jlblancoc-nanoflann-2f54b8e_GH0.tar.gz) = 687439
+SHA256 (asmaloney-libE57Format-1914b8ea_GH0.tar.gz) = 695a20b91ba291858d33e3143551a8b7e4a2a95d5bb7778fa6fe2d389b761d17
+SIZE (asmaloney-libE57Format-1914b8ea_GH0.tar.gz) = 207138
+SHA256 (google-googletest-7a7231c_GH0.tar.gz) = ed48d3016a44bb47f47f9e7999ed5b9b7b5367f7f1ce7981fc4feeebdd326b5f
+SIZE (google-googletest-7a7231c_GH0.tar.gz) = 864500
+SHA256 (dgirardeau-q3DMASC-4eec6459_GH0.tar.gz) = 09e4d29dd1962c8101eb25e2b8eff580fa075c2a590e3ff88ec3c7ebea407d92
+SIZE (dgirardeau-q3DMASC-4eec6459_GH0.tar.gz) = 444900
+SHA256 (davisking-dlib-9117bd78_GH0.tar.gz) = 3a2c3bc37356e071a32b0f0043c7bbbe1558565b7ed23f6987e83128cb00cfbe
+SIZE (davisking-dlib-9117bd78_GH0.tar.gz) = 10588146
+SHA256 (CloudCompare-qJSonRPCPlugin-1ff2dbe4_GH0.tar.gz) = a027cc90e90dbb8fa1953905027cf78e9100073c2b34ca1fa748419cca591293
+SIZE (CloudCompare-qJSonRPCPlugin-1ff2dbe4_GH0.tar.gz) = 20096
+SHA256 (hvs-ait-mplane-plugin-342ef9f5_GH0.tar.gz) = a9c86d1bedec83a2ac484e9c8dcf7c9b8b2cd16845e161ee187845e0dd96f3fa
+SIZE (hvs-ait-mplane-plugin-342ef9f5_GH0.tar.gz) = 2669085
+SHA256 (CyberbuildLab-masonry-cc-0c590fb2_GH0.tar.gz) = a2dbb1c66732d88db7e9843019505f6cc74b286bf2e7fc05d383cbdda03e5408
+SIZE (CyberbuildLab-masonry-cc-0c590fb2_GH0.tar.gz) = 271313
+SHA256 (cloudcompare-PoissonRecon-d215dbaa_GH0.tar.gz) = b4d1be598eb5f58b55f10e3e226ebc7f2d24ee88c417d0f311080483aa97e078
+SIZE (cloudcompare-PoissonRecon-d215dbaa_GH0.tar.gz) = 734098
+SHA256 (truebelief-cc-treeiso-plugin-fbe6a41a_GH0.tar.gz) = 6afc6af9fdd6d35d93bdacdbe5f59e1c1aaedceb876403edd06e5fa5d0a86dda
+SIZE (truebelief-cc-treeiso-plugin-fbe6a41a_GH0.tar.gz) = 788967
diff --git a/graphics/cloudcompare/files/ccViewer.desktop b/graphics/cloudcompare/files/ccViewer.desktop
new file mode 100644
--- /dev/null
+++ b/graphics/cloudcompare/files/ccViewer.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Name=CloudCompare Viewer
+Comment=3D point cloud and mesh processing software
+Exec=%%PREFIX%%/bin/ccViewer
+Terminal=false
+Categories=Graphics;
+Icon=%%PREFIX%%/share/pixmaps/ccViewer.png
diff --git a/graphics/cloudcompare/files/ccViewer.png b/graphics/cloudcompare/files/ccViewer.png
new file mode 100644
index 0000000000000000000000000000000000000000..ff9afbc773b8cef505c1ac2d34ed8c9afa1f9a2b
GIT binary patch
literal 21997
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
literal 0
Hc$@<O00001
diff --git a/graphics/cloudcompare/files/cloudcompare.desktop b/graphics/cloudcompare/files/cloudcompare.desktop
new file mode 100644
--- /dev/null
+++ b/graphics/cloudcompare/files/cloudcompare.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Name=CloudCompare
+Comment=3D point cloud and mesh processing software
+Exec=%%PREFIX%%/bin/CloudCompare
+Terminal=false
+Categories=Graphics;
+Icon=%%PREFIX%%/share/pixmaps/cloudcompare.png
diff --git a/graphics/cloudcompare/files/cloudcompare.png b/graphics/cloudcompare/files/cloudcompare.png
new file mode 100644
index 0000000000000000000000000000000000000000..1ac3e96d78e6c14b0530277732248a8e51878c22
GIT binary patch
literal 9095
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
Na#D)#OC=5b{vXa;tRnyb
literal 0
Hc$@<O00001
diff --git a/graphics/cloudcompare/files/patch-libs_CCAppCommon_src_ccApplicationBase.cpp b/graphics/cloudcompare/files/patch-libs_CCAppCommon_src_ccApplicationBase.cpp
new file mode 100644
--- /dev/null
+++ b/graphics/cloudcompare/files/patch-libs_CCAppCommon_src_ccApplicationBase.cpp
@@ -0,0 +1,11 @@
+--- libs/CCAppCommon/src/ccApplicationBase.cpp.orig 2024-07-06 10:08:06 UTC
++++ libs/CCAppCommon/src/ccApplicationBase.cpp
+@@ -213,7 +213,7 @@ void ccApplicationBase::setupPaths()
+ m_pluginPaths << (appDir.absolutePath() + "/plugins");
+ m_shaderPath = (appDir.absolutePath() + "/shaders");
+ m_translationPath = (appDir.absolutePath() + "/translations");
+-#elif defined(Q_OS_LINUX)
++#elif defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD)
+ // Shaders & plugins are relative to the bin directory where the executable is found
+ QDir theDir = appDir;
+
diff --git a/graphics/cloudcompare/files/patch-snap_gui_ccViewer.desktop b/graphics/cloudcompare/files/patch-snap_gui_ccViewer.desktop
deleted file mode 100644
--- a/graphics/cloudcompare/files/patch-snap_gui_ccViewer.desktop
+++ /dev/null
@@ -1,13 +0,0 @@
---- snap/gui/ccViewer.desktop.orig 2018-03-16 21:26:02 UTC
-+++ snap/gui/ccViewer.desktop
-@@ -2,8 +2,8 @@
- Type=Application
- Name=CloudCompare Viewer
- Comment=3D point cloud and mesh processing software
--Exec=cloudcompare.ccViewer
-+Exec=ccViewer
- Terminal=false
- Categories=Graphics;
--Icon=${SNAP}/meta/gui/ccViewer.png
-+Icon=/usr/local/share/pixmaps/ccViewer.png
-
diff --git a/graphics/cloudcompare/files/patch-snap_gui_cloudcompare.desktop b/graphics/cloudcompare/files/patch-snap_gui_cloudcompare.desktop
deleted file mode 100644
--- a/graphics/cloudcompare/files/patch-snap_gui_cloudcompare.desktop
+++ /dev/null
@@ -1,13 +0,0 @@
---- snap/gui/cloudcompare.desktop.orig 2018-03-16 21:26:02 UTC
-+++ snap/gui/cloudcompare.desktop
-@@ -2,8 +2,8 @@
- Type=Application
- Name=CloudCompare
- Comment=3D point cloud and mesh processing software
--Exec=cloudcompare.CloudCompare
-+Exec=CloudCompare
- Terminal=false
- Categories=Graphics;
--Icon=${SNAP}/meta/gui/cloudcompare.png
-+Icon=/usr/local/share/pixmaps/cloudcompare.png
-
diff --git a/graphics/cloudcompare/pkg-descr b/graphics/cloudcompare/pkg-descr
--- a/graphics/cloudcompare/pkg-descr
+++ b/graphics/cloudcompare/pkg-descr
@@ -1,7 +1,15 @@
-CloudCompare is a 3D point cloud (and triangular mesh) processing software. It
-was originally designed to perform comparison between two 3D points clouds
-(such as the ones obtained with a laser scanner) or between a point cloud and a
-triangular mesh. It relies on an octree structure that is highly optimized for
-this particular use-case. It was also meant to deal with huge point clouds
-(typically more than 10 millions points, and up to 120 millions with 2 Gb of
-memory).
+CloudCompare is a 3D point cloud (and triangular mesh) editing and processing
+software.
+
+Originally, it has been designed to perform direct comparison between dense 3D
+point clouds. It relies on a specific octree structure that enables great
+performances1 when performing this kind of task. Moreover, as most point clouds
+were acquired by terrestrial laser scanners, CloudCompare was meant to deal with
+huge point clouds on a standard laptop - typically more than 10 million points
+(in 2005!). Soon after, comparison between a point cloud and a triangular mesh
+has been supported. Afterwards, many other point cloud processing algorithms
+have followed (registration, resampling, color/normal vectors/scalar fields
+management, statistics computation, sensor management, interactive or automatic
+segmentation, etc.) as well as display enhancement tools (custom color ramps,
+color & normal vectors handling, calibrated pictures handling, OpenGL shaders,
+plugins, etc.).
diff --git a/graphics/cloudcompare/pkg-plist b/graphics/cloudcompare/pkg-plist
--- a/graphics/cloudcompare/pkg-plist
+++ b/graphics/cloudcompare/pkg-plist
@@ -18,6 +18,7 @@
%%PLUGINS%%lib/cloudcompare/plugins/libQHPR_PLUGIN.so
%%PLUGINS%%lib/cloudcompare/plugins/libQM3C2_PLUGIN.so
%%PLUGINS%%lib/cloudcompare/plugins/libQPCV_PLUGIN.so
+%%PLUGINS%%lib/cloudcompare/plugins/libQPDAL_IO_PLUGIN.so
%%PLUGINS%%lib/cloudcompare/plugins/libQPHOTOSCAN_IO_PLUGIN.so
%%PLUGINS%%lib/cloudcompare/plugins/libQRANSAC_SD_PLUGIN.so
%%PLUGINS%%lib/cloudcompare/plugins/libQSRA_PLUGIN.so
@@ -30,6 +31,9 @@
%%DATADIR%%/shaders/Bilateral/bilateral.frag
%%DATADIR%%/shaders/Bilateral/bilateral.vert
%%DATADIR%%/shaders/ColorRamp/color_ramp.frag
+%%DATADIR%%/shaders/DrawNormals/DrawNormals.fs
+%%DATADIR%%/shaders/DrawNormals/DrawNormals.gs
+%%DATADIR%%/shaders/DrawNormals/DrawNormals.vs
%%PLUGINS%%%%DATADIR%%/shaders/EDL/edl_mix.frag
%%PLUGINS%%%%DATADIR%%/shaders/EDL/edl_mix.vert
%%PLUGINS%%%%DATADIR%%/shaders/EDL/edl_shade.frag
@@ -41,7 +45,7 @@
%%DATADIR%%/translations/CloudCompare_es_AR.qm
%%DATADIR%%/translations/CloudCompare_fr.qm
%%DATADIR%%/translations/CloudCompare_ja.qm
-%%DATADIR%%/translations/CloudCompare_kr.qm
+%%DATADIR%%/translations/CloudCompare_ko.qm
%%DATADIR%%/translations/CloudCompare_pt.qm
%%DATADIR%%/translations/CloudCompare_ru.qm
%%DATADIR%%/translations/CloudCompare_zh.qm
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Aug 23, 11:43 PM (7 h, 21 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
37165869
Default Alt Text
D55434.id172439.diff (52 KB)
Attached To
Mode
D55434: graphics/cloudcompare: Update 2.12.4 => 2.13.2, take maintainership
Attached
Detach File
Event Timeline
Log In to Comment