Files

178 lines
5.1 KiB
Nix

{
lib,
stdenv,
fetchFromGitHub,
fetchpatch2,
makeDesktopItem,
copyDesktopItems,
cmake,
boost,
cgal,
eigen,
flann,
gdal,
gmp,
laszip,
mpfr,
pcl,
libsForQt5,
nixosTests,
onetbb,
xercesc,
wrapGAppsHook3,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "cloudcompare";
version = "2.13.2";
src = fetchFromGitHub {
owner = "CloudCompare";
repo = "CloudCompare";
tag = "v${finalAttrs.version}";
hash = "sha256-a/0lf3Mt5ZpLFRM8jAoqZer8pY1ROgPRY4dPt34Bk3E=";
fetchSubmodules = true;
};
patches = [
# https://github.com/CloudCompare/CloudCompare/pull/2208
(fetchpatch2 {
url = "https://github.com/CloudCompare/CloudCompare/commit/8e1c0562a7c19fd26ccd0c23bb05fb7c36980e0c.patch?full_index=1";
hash = "sha256-DARxLiRjcBJEo63o92ujjxBU42Y8CY2c7px8Y9UD5A4=";
})
];
nativeBuildInputs = [
cmake
eigen # header-only
wrapGAppsHook3
copyDesktopItems
libsForQt5.wrapQtAppsHook
];
buildInputs = [
boost
cgal
flann
gdal
gmp
laszip
mpfr
pcl
libsForQt5.qtbase
libsForQt5.qtsvg
libsForQt5.qttools
onetbb
xercesc
];
cmakeFlags = [
"-DCCCORELIB_USE_TBB=ON"
"-DOPTION_USE_DXF_LIB=ON"
"-DOPTION_USE_GDAL=ON"
"-DOPTION_USE_SHAPE_LIB=ON"
"-DPLUGIN_GL_QEDL=ON"
"-DPLUGIN_GL_QSSAO=ON"
"-DPLUGIN_IO_QADDITIONAL=ON"
"-DPLUGIN_IO_QCORE=ON"
"-DPLUGIN_IO_QCSV_MATRIX=ON"
"-DPLUGIN_IO_QE57=ON"
"-DPLUGIN_IO_QFBX=OFF" # Autodesk FBX SDK is gratis+proprietary; not packaged in nixpkgs
"-DPLUGIN_IO_QLAS=ON" # required for .las/.laz support
"-DLASZIP_INCLUDE_DIR=${lib.getInclude laszip}/include/laszip"
"-DPLUGIN_IO_QPHOTOSCAN=ON"
"-DPLUGIN_IO_QRDB=OFF" # Riegl rdblib is proprietary; not packaged in nixpkgs
"-DCCCORELIB_USE_CGAL=ON" # enables Delauney triangulation support
"-DPLUGIN_STANDARD_QPCL=ON" # Adds PCD import and export support
"-DPLUGIN_STANDARD_QANIMATION=ON"
"-DPLUGIN_STANDARD_QBROOM=ON"
"-DPLUGIN_STANDARD_QCANUPO=ON"
"-DPLUGIN_STANDARD_QCOMPASS=ON"
"-DPLUGIN_STANDARD_QCSF=ON"
"-DPLUGIN_STANDARD_QFACETS=ON"
"-DPLUGIN_STANDARD_QHOUGH_NORMALS=ON"
"-DEIGEN_ROOT_DIR=${eigen}/include/eigen3" # needed for hough normals
"-DPLUGIN_STANDARD_QHPR=ON"
"-DPLUGIN_STANDARD_QM3C2=ON"
"-DPLUGIN_STANDARD_QMPLANE=ON"
"-DPLUGIN_STANDARD_QPOISSON_RECON=ON"
"-DPLUGIN_STANDARD_QRANSAC_SD=OFF" # not compatible with GPL, broken on non-x86
"-DPLUGIN_STANDARD_QSRA=ON"
"-DPLUGIN_STANDARD_QCLOUDLAYERS=ON"
# Fix the build with CMake 4, by overriding the minimum version globally, as support for < 3.5 was removed
# Ideally this can be removed at some time, but there are a lot of dependencies (e.g. plugins) which have a lower minimum version configured.
(lib.strings.cmakeFeature "CMAKE_POLICY_VERSION_MINIMUM" "3.5")
];
dontWrapGApps = true;
postInstall = ''
install -Dm444 $src/qCC/images/icon/cc_icon_16.png $out/share/icons/hicolor/16x16/apps/CloudCompare.png
install -Dm444 $src/qCC/images/icon/cc_icon_32.png $out/share/icons/hicolor/32x32/apps/CloudCompare.png
install -Dm444 $src/qCC/images/icon/cc_icon_64.png $out/share/icons/hicolor/64x64/apps/CloudCompare.png
install -Dm444 $src/qCC/images/icon/cc_icon_256.png $out/share/icons/hicolor/256x256/apps/CloudCompare.png
install -Dm444 $src/qCC/images/icon/cc_viewer_icon_16.png $out/share/icons/hicolor/16x16/apps/ccViewer.png
install -Dm444 $src/qCC/images/icon/cc_viewer_icon_32.png $out/share/icons/hicolor/32x32/apps/ccViewer.png
install -Dm444 $src/qCC/images/icon/cc_viewer_icon_64.png $out/share/icons/hicolor/64x64/apps/ccViewer.png
install -Dm444 $src/qCC/images/icon/cc_viewer_icon_256.png $out/share/icons/hicolor/256x256/apps/ccViewer.png
'';
# fix file dialogs crashing on non-NixOS (and avoid double wrapping)
preFixup = ''
qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
desktopItems = [
(makeDesktopItem {
name = "CloudCompare";
desktopName = "CloudCompare";
comment = "3D point cloud and mesh processing software";
exec = "CloudCompare";
terminal = false;
categories = [
"Graphics"
"3DGraphics"
"Viewer"
];
keywords = [
"3d"
"processing"
];
icon = "CloudCompare";
})
(makeDesktopItem {
name = "ccViewer";
desktopName = "CloudCompare Viewer";
comment = "3D point cloud and mesh processing software";
exec = "ccViewer";
terminal = false;
categories = [
"Graphics"
"3DGraphics"
"Viewer"
];
keywords = [
"3d"
"viewer"
];
icon = "ccViewer";
})
];
passthru.tests = nixosTests.cloudcompare;
meta = {
description = "3D point cloud and mesh processing software";
homepage = "https://cloudcompare.org";
license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [ nh2 ];
teams = [ lib.teams.geospatial ];
mainProgram = "CloudCompare";
platforms = with lib.platforms; linux; # only tested here; might work on others
};
})