Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
8.4 kB · 347 lines
Nix
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348{ version, sourceSha256, patches ? [ ],}:{ lib, newScope, stdenv, fetchurl, cmake, pkg-config,
# common dependencies tk, mpi, python3Packages, catalyst, cli11, boost, eigen, verdict, double-conversion,
# common data libraries lz4, xz, zlib, pugixml, expat, jsoncpp, libxml2, exprtk, utf8cpp, libarchive, nlohmann_json,
# filters openturns, openslide,
# io modules cgns, adios2, libLAS, libgeotiff, laszip_2, gdal, pdal, alembic, imath, openvdb, c-blosc, unixODBC, postgresql, libmysqlclient, ffmpeg, libjpeg, libpng, libtiff, proj, sqlite, libogg, libharu, libtheora, hdf5, netcdf, opencascade-occt,
# threading tbb, llvmPackages,
# rendering viskores, freetype, fontconfig, libX11, libXfixes, libXrender, libXcursor, gl2ps, libGL, qt5, qt6,
# custom options qtVersion ? null, # To avoid conflicts between the propagated vtkPackages.hdf5 # and the input hdf5 used by most downstream packages, # we set mpiSupport to false by default. mpiSupport ? false, pythonSupport ? false,
# passthru.tests testers,}:let qtPackages = if (isNull qtVersion) then null else if (qtVersion == "6") then qt6 else if (qtVersion == "5") then qt5 else throw ''qtVersion must be "5", "6" or null''; vtkPackages = lib.makeScope newScope (self: { inherit tbb mpi mpiSupport python3Packages pythonSupport ;
hdf5 = hdf5.override { inherit mpi mpiSupport; cppSupport = !mpiSupport; }; openvdb = self.callPackage openvdb.override { }; netcdf = self.callPackage netcdf.override { }; catalyst = self.callPackage catalyst.override { }; adios2 = self.callPackage adios2.override { }; cgns = self.callPackage cgns.override { }; viskores = self.callPackage viskores.override { }; }); vtkBool = feature: bool: lib.cmakeFeature feature "${if bool then "YES" else "NO"}";instdenv.mkDerivation (finalAttrs: { pname = "vtk"; inherit version patches;
src = fetchurl { url = "https://www.vtk.org/files/release/${lib.versions.majorMinor finalAttrs.version}/VTK-${finalAttrs.version}.tar.gz"; hash = sourceSha256; };
nativeBuildInputs = [ cmake pkg-config # required for finding MySQl ] ++ lib.optional pythonSupport python3Packages.python ++ lib.optional ( pythonSupport && stdenv.buildPlatform == stdenv.hostPlatform ) python3Packages.pythonImportsCheckHook;
buildInputs = [ libLAS libgeotiff laszip_2 gdal pdal alembic imath c-blosc unixODBC postgresql libmysqlclient ffmpeg opencascade-occt fontconfig openturns libarchive libGL vtkPackages.openvdb ] ++ lib.optionals stdenv.hostPlatform.isLinux [ libXfixes libXrender libXcursor ] ++ lib.optional (!(isNull qtPackages)) qtPackages.qttools ++ lib.optional mpiSupport mpi ++ lib.optional pythonSupport tk;
# propagated by vtk-config.cmake propagatedBuildInputs = [ eigen boost verdict double-conversion freetype lz4 xz zlib expat exprtk pugixml jsoncpp libxml2 utf8cpp nlohmann_json libjpeg libpng libtiff proj sqlite libogg libharu libtheora cli11 openslide vtkPackages.hdf5 vtkPackages.cgns vtkPackages.adios2 vtkPackages.netcdf vtkPackages.catalyst vtkPackages.viskores vtkPackages.tbb ] ++ lib.optionals stdenv.cc.isClang [ llvmPackages.openmp ] ++ lib.optionals stdenv.hostPlatform.isLinux [ libX11 gl2ps ] # create meta package providing dist-info for python3Pacakges.vtk that common cmake build does not do ++ lib.optionals pythonSupport [ (python3Packages.mkPythonMetaPackage { inherit (finalAttrs) pname version meta; dependencies = with python3Packages; [ numpy wslink matplotlib ] ++ lib.optional mpiSupport (mpi4py.override { inherit mpi; }); }) ];
# wrapper script calls qmlplugindump, crashes due to lack of minimal platform plugin # Could not find the Qt platform plugin "minimal" in "" preConfigure = lib.optionalString (qtVersion == "5") '' export QT_PLUGIN_PATH=${lib.getBin qt5.qtbase}/${qt5.qtbase.qtPluginPrefix} '';
env = { CMAKE_PREFIX_PATH = "${lib.getDev openvdb}/lib/cmake/OpenVDB"; NIX_LDFLAGS = "-L${lib.getLib libmysqlclient}/lib/mariadb"; };
cmakeFlags = [ (lib.cmakeFeature "CMAKE_INSTALL_BINDIR" "bin") (lib.cmakeFeature "CMAKE_INSTALL_LIBDIR" "lib") (lib.cmakeFeature "CMAKE_INSTALL_INCLUDEDIR" "include")
# vtk common configure options (lib.cmakeBool "VTK_DISPATCH_SOA_ARRAYS" true) (lib.cmakeBool "VTK_ENABLE_CATALYST" true) (lib.cmakeBool "VTK_WRAP_SERIALIZATION" true) (lib.cmakeBool "VTK_BUILD_ALL_MODULES" true) (lib.cmakeBool "VTK_VERSIONED_INSTALL" false) (lib.cmakeBool "VTK_SMP_ENABLE_OPENMP" true) (lib.cmakeFeature "VTK_SMP_IMPLEMENTATION_TYPE" "TBB")
# use system packages if possible (lib.cmakeBool "VTK_USE_EXTERNAL" true) (lib.cmakeBool "VTK_MODULE_USE_EXTERNAL_VTK_fast_float" false) # required version incompatible (lib.cmakeBool "VTK_MODULE_USE_EXTERNAL_VTK_pegtl" false) # required version incompatible (lib.cmakeBool "VTK_MODULE_USE_EXTERNAL_VTK_ioss" false) # missing in nixpkgs (lib.cmakeBool "VTK_MODULE_USE_EXTERNAL_VTK_token" false) # missing in nixpkgs (lib.cmakeBool "VTK_MODULE_USE_EXTERNAL_VTK_fmt" false) # prefer vendored fmt (lib.cmakeBool "VTK_MODULE_USE_EXTERNAL_VTK_scn" false) # missing in nixpkgs (lib.cmakeBool "VTK_MODULE_USE_EXTERNAL_VTK_gl2ps" stdenv.hostPlatform.isLinux) # external gl2ps causes failure linking to macOS OpenGL.framework
# Rendering (vtkBool "VTK_MODULE_ENABLE_VTK_RenderingRayTracing" false) # ospray (vtkBool "VTK_MODULE_ENABLE_VTK_RenderingOpenXR" false) # openxr (vtkBool "VTK_MODULE_ENABLE_VTK_RenderingOpenVR" false) # openvr (vtkBool "VTK_MODULE_ENABLE_VTK_RenderingAnari" false) # anari
# qtSupport (vtkBool "VTK_GROUP_ENABLE_Qt" (!(isNull qtPackages))) (lib.cmakeFeature "VTK_QT_VERSION" "Auto") # will search for Qt6 first
# pythonSupport (lib.cmakeBool "VTK_USE_TK" pythonSupport) (vtkBool "VTK_GROUP_ENABLE_Tk" pythonSupport) (lib.cmakeBool "VTK_WRAP_PYTHON" pythonSupport) (lib.cmakeBool "VTK_BUILD_PYI_FILES" pythonSupport) (lib.cmakeFeature "VTK_PYTHON_VERSION" "3")
# mpiSupport (lib.cmakeBool "VTK_USE_MPI" mpiSupport) (vtkBool "VTK_GROUP_ENABLE_MPI" mpiSupport) ];
# byte-compile python modules since the CMake build does not do it postInstall = lib.optionalString pythonSupport '' python -m compileall -s $out $out/${python3Packages.python.sitePackages} '';
pythonImportsCheck = [ "vtk" ];
dontWrapQtApps = true;
postFixup = # Remove thirdparty find module that have been provided in nixpkgs. '' rm -rf $out/lib/cmake/vtk/patches rm $out/lib/cmake/vtk/Find{EXPAT,Freetype,utf8cpp,LibXml2,FontConfig}.cmake '' # libvtkglad.so will find and load libGL.so at runtime. + lib.optionalString stdenv.hostPlatform.isLinux '' patchelf --add-rpath ${lib.getLib libGL}/lib $out/lib/libvtkglad.so '';
passthru = { inherit pythonSupport mpiSupport ;
vtkPackages = vtkPackages.overrideScope ( final: prev: { vtk = finalAttrs.finalPackage; } );
tests = { cmake-config = testers.hasCmakeConfigModules { moduleNames = [ "VTK" ];
package = finalAttrs.finalPackage;
nativeBuildInputs = lib.optionals (!(isNull qtPackages)) [ qtPackages.qttools qtPackages.wrapQtAppsHook ]; }; }; };
requiredSystemFeatures = [ "big-parallel" ];
meta = { description = "Open source libraries for 3D computer graphics, image processing and visualization"; homepage = "https://www.vtk.org/"; changelog = "https://docs.vtk.org/en/latest/release_details/${lib.versions.majorMinor finalAttrs.version}.html"; license = lib.licenses.bsd3; maintainers = with lib.maintainers; [ qbisi ]; platforms = lib.platforms.unix; };})