python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / development / libraries / physics / geant4 / default.nix
blobccc96a1aed3df1bfcbedba0d88ce6d2cc84baad2
1 { enableMultiThreading ? true
2 , enableInventor       ? false
3 , enableQT             ? false # deprecated name
4 , enableQt             ? enableQT
5 , enableXM             ? false
6 , enableOpenGLX11      ? true
7 , enablePython         ? false
8 , enableRaytracerX11   ? false
10 # Standard build environment with cmake.
11 , lib, stdenv, fetchurl, fetchpatch, cmake
13 , clhep
14 , expat
15 , xercesc
16 , zlib
18 # For enableQt.
19 , qtbase
20 , wrapQtAppsHook
22 # For enableXM.
23 , motif
25 # For enableInventor
26 , coin3d
27 , soxt
28 , libXpm
30 # For enableQt, enableXM, enableOpenGLX11, enableRaytracerX11.
31 , libGLU, libGL
32 , xlibsWrapper
33 , libXmu
35 # For enablePython
36 , boost
37 , python3
39 # For tests
40 , callPackage
43 let
44   boost_python = boost.override { enablePython = true; python = python3; };
47 lib.warnIf (enableQT != false) "geant4: enableQT is deprecated, please use enableQt"
49 stdenv.mkDerivation rec {
50   version = "11.0.3";
51   pname = "geant4";
53   src = fetchurl{
54     url = "https://cern.ch/geant4-data/releases/geant4-v${version}.tar.gz";
55     hash = "sha256-cvi2h1EtbmMNxsZMXEG6cRIgRoVAEymZ0A5PzhkIrkg=";
56   };
58   cmakeFlags = [
59     "-DGEANT4_INSTALL_DATA=OFF"
60     "-DGEANT4_USE_GDML=ON"
61     "-DGEANT4_USE_G3TOG4=ON"
62     "-DGEANT4_USE_QT=${if enableQt then "ON" else "OFF"}"
63     "-DGEANT4_USE_XM=${if enableXM then "ON" else "OFF"}"
64     "-DGEANT4_USE_OPENGL_X11=${if enableOpenGLX11 then "ON" else "OFF"}"
65     "-DGEANT4_USE_INVENTOR=${if enableInventor then "ON" else "OFF"}"
66     "-DGEANT4_USE_PYTHON=${if enablePython then "ON" else "OFF"}"
67     "-DGEANT4_USE_RAYTRACER_X11=${if enableRaytracerX11 then "ON" else "OFF"}"
68     "-DGEANT4_USE_SYSTEM_CLHEP=ON"
69     "-DGEANT4_USE_SYSTEM_EXPAT=ON"
70     "-DGEANT4_USE_SYSTEM_ZLIB=ON"
71     "-DGEANT4_BUILD_MULTITHREADED=${if enableMultiThreading then "ON" else "OFF"}"
72   ] ++ lib.optionals stdenv.isDarwin [
73     "-DXQuartzGL_INCLUDE_DIR=${libGL.dev}/include"
74     "-DXQuartzGL_gl_LIBRARY=${libGL}/lib/libGL.dylib"
75   ] ++ lib.optionals (enableMultiThreading && enablePython) [
76     "-DGEANT4_BUILD_TLS_MODEL=global-dynamic"
77   ] ++ lib.optionals enableInventor [
78     "-DINVENTOR_INCLUDE_DIR=${coin3d}/include"
79     "-DINVENTOR_LIBRARY_RELEASE=${coin3d}/lib/libCoin.so"
80   ];
82   nativeBuildInputs =  [
83     cmake
84   ];
86   propagatedNativeBuildInputs = lib.optionals enableQt [
87     wrapQtAppsHook
88   ];
89   dontWrapQtApps = true; # no binaries
91   buildInputs = [ libGLU xlibsWrapper libXmu ]
92     ++ lib.optionals enableInventor [ libXpm coin3d soxt motif ]
93     ++ lib.optionals enablePython [ boost_python python3 ];
95   propagatedBuildInputs = [ clhep expat xercesc zlib libGL ]
96     ++ lib.optionals enableXM [ motif ]
97     ++ lib.optionals enableQt [ qtbase ];
99   postFixup = ''
100     # Don't try to export invalid environment variables.
101     sed -i 's/export G4\([A-Z]*\)DATA/#export G4\1DATA/' "$out"/bin/geant4.sh
102   '' + lib.optionalString enableQt ''
103     wrapQtAppsHook
104   '';
106   setupHook = ./geant4-hook.sh;
108   passthru = {
109     data = callPackage ./datasets.nix {};
111     tests = callPackage ./tests.nix {};
113     inherit enableQt;
114   };
116   # Set the myriad of envars required by Geant4 if we use a nix-shell.
117   shellHook = ''
118     source $out/nix-support/setup-hook
119   '';
121   meta = with lib; {
122     broken = (stdenv.isLinux && stdenv.isAarch64);
123     description = "A toolkit for the simulation of the passage of particles through matter";
124     longDescription = ''
125       Geant4 is a toolkit for the simulation of the passage of particles through matter.
126       Its areas of application include high energy, nuclear and accelerator physics, as well as studies in medical and space science.
127       The two main reference papers for Geant4 are published in Nuclear Instruments and Methods in Physics Research A 506 (2003) 250-303, and IEEE Transactions on Nuclear Science 53 No. 1 (2006) 270-278.
128     '';
129     homepage = "http://www.geant4.org";
130     license = licenses.g4sl;
131     maintainers = with maintainers; [ omnipotententity veprbl ];
132     platforms = platforms.unix;
133   };