1{
2 stdenv,
3 lib,
4 fetchFromGitHub,
5 libGLU,
6 qtbase,
7 qtscript,
8 qtxmlpatterns,
9 lib3ds,
10 bzip2,
11 muparser,
12 eigen,
13 glew,
14 gmp,
15 levmar,
16 qhull,
17 cmake,
18 cgal,
19 boost,
20 mpfr,
21 xercesc,
22 tbb,
23 embree,
24 vcg,
25 libigl,
26 corto,
27 openctm,
28 structuresynth,
29 wrapQtAppsHook,
30 python3Packages,
31}:
32
33stdenv.mkDerivation (finalAttrs: {
34 pname = "pymeshlab";
35 version = "2023.12";
36
37 src = fetchFromGitHub {
38 owner = "cnr-isti-vclab";
39 repo = "pymeshlab";
40 rev = "v${finalAttrs.version}";
41 hash = "sha256-IOlRdXoUPOJt67g3HqsLchV5aL+JUEks2y1Sy+wpwsg=";
42 fetchSubmodules = true;
43 };
44
45 buildInputs = [
46 libGLU
47 qtbase
48 qtscript
49 qtxmlpatterns
50 lib3ds
51 bzip2
52 muparser
53 eigen
54 glew
55 gmp
56 levmar
57 qhull
58 cgal
59 boost
60 mpfr
61 xercesc
62 tbb
63 embree
64 vcg
65 libigl
66 corto
67 structuresynth
68 openctm
69 ];
70
71 nativeBuildInputs = [
72 cmake
73 wrapQtAppsHook
74 python3Packages.pybind11
75 ];
76
77 propagatedBuildInputs = [
78 python3Packages.numpy
79 ];
80
81 preConfigure = ''
82 substituteInPlace src/meshlab/src/external/libigl.cmake \
83 --replace-fail '$'{MESHLAB_EXTERNAL_DOWNLOAD_DIR}/libigl-2.4.0 ${libigl}
84 substituteInPlace src/meshlab/src/external/nexus.cmake \
85 --replace-fail '$'{NEXUS_DIR}/src/corto ${corto.src}
86 substituteInPlace src/meshlab/src/external/levmar.cmake \
87 --replace-fail '$'{LEVMAR_LINK} ${levmar.src} \
88 --replace-warn "MD5 ''${LEVMAR_MD5}" ""
89 substituteInPlace src/meshlab/src/external/ssynth.cmake \
90 --replace-fail '$'{SSYNTH_LINK} ${structuresynth.src} \
91 --replace-warn "MD5 ''${SSYNTH_MD5}" ""
92 '';
93
94 cmakeFlags = [
95 "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}/${python3Packages.python.sitePackages}/pymeshlab"
96 "-DVCGDIR=${vcg.src}"
97 ];
98
99 meta = {
100 description = "Open source mesh processing python library";
101 homepage = "https://github.com/cnr-isti-vclab/PyMeshLab";
102 license = lib.licenses.gpl3Only;
103 maintainers = with lib.maintainers; [ nim65s ];
104 platforms = with lib.platforms; linux;
105 };
106})