about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDmitry Kalinkin <dmitry.kalinkin@gmail.com>2020-06-13 19:53:17 -0400
committerGitHub <noreply@github.com>2020-06-13 19:53:17 -0400
commitfa942617bc0d68ae6dadf0c2a65f9215fd69c71c (patch)
tree54b8dba1396d5d23c9f861e77533521e1cd409da
parenta53a6565afa505b6ad9e4c0915b5e5a1dd545674 (diff)
parent6fa6decdedfd65d5423b2299920dc83e66bdb89c (diff)
downloadnixlib-fa942617bc0d68ae6dadf0c2a65f9215fd69c71c.tar
nixlib-fa942617bc0d68ae6dadf0c2a65f9215fd69c71c.tar.gz
nixlib-fa942617bc0d68ae6dadf0c2a65f9215fd69c71c.tar.bz2
nixlib-fa942617bc0d68ae6dadf0c2a65f9215fd69c71c.tar.lz
nixlib-fa942617bc0d68ae6dadf0c2a65f9215fd69c71c.tar.xz
nixlib-fa942617bc0d68ae6dadf0c2a65f9215fd69c71c.tar.zst
nixlib-fa942617bc0d68ae6dadf0c2a65f9215fd69c71c.zip
Merge pull request #89688 from veprbl/pr/g4py_rework
pythonPackages.geant4: init at 10.6.2
-rw-r--r--pkgs/development/libraries/physics/geant4/default.nix25
-rw-r--r--pkgs/development/libraries/physics/geant4/g4py/default.nix65
-rw-r--r--pkgs/development/libraries/physics/geant4/g4py/setup-hook.sh1
-rw-r--r--pkgs/top-level/aliases.nix1
-rw-r--r--pkgs/top-level/all-packages.nix2
-rw-r--r--pkgs/top-level/python-packages.nix5
6 files changed, 30 insertions, 69 deletions
diff --git a/pkgs/development/libraries/physics/geant4/default.nix b/pkgs/development/libraries/physics/geant4/default.nix
index 2e44a7136df8..97822d769dd5 100644
--- a/pkgs/development/libraries/physics/geant4/default.nix
+++ b/pkgs/development/libraries/physics/geant4/default.nix
@@ -5,6 +5,7 @@
 , enableQT             ? false
 , enableXM             ? false
 , enableOpenGLX11      ? true
+, enablePython         ? false
 , enableRaytracerX11   ? false
 
 # Standard build environment with cmake.
@@ -33,8 +34,16 @@
 , libGLU, libGL
 , xlibsWrapper
 , libXmu
+
+# For enablePython
+, boost
+, python3
 }:
 
+let
+  boost_python = boost.override { enablePython = true; python = python3; };
+in
+
 stdenv.mkDerivation rec {
   version = "10.6.2";
   pname = "geant4";
@@ -44,6 +53,16 @@ stdenv.mkDerivation rec {
     sha256 = "0vznm3pjlbihjy1wsxc4gj229k0dzc283wvil2xghyl08vwdpnpc";
   };
 
+  boost_python_lib = "python${builtins.replaceStrings ["."] [""] python3.pythonVersion}";
+  postPatch = ''
+    # Fix for boost 1.67+
+    substituteInPlace environments/g4py/CMakeLists.txt \
+      --replace "find_package(Boost REQUIRED python)" \
+                "find_package(Boost REQUIRED COMPONENTS $boost_python_lib)"
+    substituteInPlace environments/g4py/G4PythonHelpers.cmake \
+      --replace "Boost::python" "Boost::$boost_python_lib"
+  '';
+
   cmakeFlags = [
     "-DGEANT4_INSTALL_DATA=OFF"
     "-DGEANT4_USE_GDML=${if enableGDML then "ON" else "OFF"}"
@@ -52,11 +71,14 @@ stdenv.mkDerivation rec {
     "-DGEANT4_USE_XM=${if enableXM then "ON" else "OFF"}"
     "-DGEANT4_USE_OPENGL_X11=${if enableOpenGLX11 then "ON" else "OFF"}"
     "-DGEANT4_USE_INVENTOR=${if enableInventor then "ON" else "OFF"}"
+    "-DGEANT4_USE_PYTHON=${if enablePython then "ON" else "OFF"}"
     "-DGEANT4_USE_RAYTRACER_X11=${if enableRaytracerX11 then "ON" else "OFF"}"
     "-DGEANT4_USE_SYSTEM_CLHEP=${if clhep != null then "ON" else "OFF"}"
     "-DGEANT4_USE_SYSTEM_EXPAT=${if expat != null then "ON" else "OFF"}"
     "-DGEANT4_USE_SYSTEM_ZLIB=${if zlib != null then "ON" else "OFF"}"
     "-DGEANT4_BUILD_MULTITHREADED=${if enableMultiThreading then "ON" else "OFF"}"
+  ] ++ stdenv.lib.optionals (enableMultiThreading && enablePython) [
+    "-DGEANT4_BUILD_TLS_MODEL=global-dynamic"
   ] ++ stdenv.lib.optionals enableInventor [
     "-DINVENTOR_INCLUDE_DIR=${coin3d}/include"
     "-DINVENTOR_LIBRARY_RELEASE=${coin3d}/lib/libCoin.so"
@@ -66,7 +88,8 @@ stdenv.mkDerivation rec {
   nativeBuildInputs =  [ cmake ];
 
   buildInputs = [ libGLU xlibsWrapper libXmu ]
-    ++ stdenv.lib.optionals enableInventor [ libXpm coin3d soxt motif ];
+    ++ stdenv.lib.optionals enableInventor [ libXpm coin3d soxt motif ]
+    ++ stdenv.lib.optionals enablePython [ boost_python python3 ];
 
   propagatedBuildInputs = [ clhep expat zlib libGL ]
     ++ stdenv.lib.optionals enableGDML [ xercesc ]
diff --git a/pkgs/development/libraries/physics/geant4/g4py/default.nix b/pkgs/development/libraries/physics/geant4/g4py/default.nix
deleted file mode 100644
index 4937cc0eca93..000000000000
--- a/pkgs/development/libraries/physics/geant4/g4py/default.nix
+++ /dev/null
@@ -1,65 +0,0 @@
-{ stdenv, cmake, xercesc
-
-# The target version of Geant4
-, geant4
-
-# Python (obviously) and boost::python for wrapping.
-, python
-, boost
-}:
-
-let
-  # g4py does not support MT and will fail to build against MT geant
-  geant4_nomt = geant4.override { enableMultiThreading = false; };
-  boost_python = boost.override { enablePython = true; inherit python; };
-in
-
-stdenv.mkDerivation {
-  inherit (geant4_nomt) version src;
-  pname = "g4py";
-
-  nativeBuildInputs = [ cmake ];
-  buildInputs = [ geant4_nomt xercesc boost_python python ];
-
-  GEANT4_INSTALL = geant4_nomt;
-
-  postPatch = ''
-    cd environments/g4py
-  '';
-
-  preConfigure = ''
-    # Fix for boost 1.67+
-    substituteInPlace CMakeLists.txt \
-    --replace "find_package(Boost)" "find_package(Boost 1.40 REQUIRED COMPONENTS python${builtins.replaceStrings ["."] [""] python.pythonVersion})"
-    for f in `find . -name CMakeLists.txt`; do
-      substituteInPlace "$f" \
-        --replace "boost_python" "\''${Boost_LIBRARIES}"
-    done
-  '';
-
-  enableParallelBuilding = true;
-
-  setupHook = ./setup-hook.sh;
-
-  # Make sure we set PYTHONPATH
-  shellHook = ''
-    source $out/nix-support/setup-hook
-  '';
-
-  meta = {
-    description = "Python bindings and utilities for Geant4";
-    longDescription = ''
-      Geant4 is a toolkit for the simulation of the passage of particles
-      through matter.  Its areas of application include high energy,
-      nuclear and accelerator physics, as well as studies in medical and
-      space science.  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.
-    '';
-    homepage = "http://www.geant4.org";
-    license = stdenv.lib.licenses.g4sl;
-    maintainers = [ ];
-    platforms = stdenv.lib.platforms.all;
-  };
-}
diff --git a/pkgs/development/libraries/physics/geant4/g4py/setup-hook.sh b/pkgs/development/libraries/physics/geant4/g4py/setup-hook.sh
deleted file mode 100644
index 8abfb461fc0f..000000000000
--- a/pkgs/development/libraries/physics/geant4/g4py/setup-hook.sh
+++ /dev/null
@@ -1 +0,0 @@
-export PYTHONPATH=$PYTHONPATH:@out@/lib
diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix
index 33b2c84f327a..03efd40d2714 100644
--- a/pkgs/top-level/aliases.nix
+++ b/pkgs/top-level/aliases.nix
@@ -154,6 +154,7 @@ mapAliases ({
   fuseki = apache-jena-fuseki; # added 2018-04-25
   fusesmb = throw "fusesmb is abandoned by upstream"; # added 2019-10-15
   fwupdate = throw "fwupdate was merged into fwupd"; # added 2020-05-19
+  g4py = python3Packages.geant4; # added 2020-06-06
   gccApple = throw "gccApple is no longer supported"; # added 2018-04-25
   gdb-multitarget = gdb; # added 2017-11-13
   gdk_pixbuf = gdk-pixbuf; # added 2019-05-22
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 26a5e269629a..05f58b3a246f 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -25410,8 +25410,6 @@ in
 
   cernlib = callPackage ../development/libraries/physics/cernlib { };
 
-  g4py = callPackage ../development/libraries/physics/geant4/g4py { };
-
   hepmc2 = callPackage ../development/libraries/physics/hepmc2 { };
 
   hepmc3 = callPackage ../development/libraries/physics/hepmc3 {
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index a91912b36bfa..ed1127ba0462 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -3896,6 +3896,11 @@ in {
 
   gdrivefs = callPackage ../development/python-modules/gdrivefs { };
 
+  geant4 = disabledIf (!isPy3k) (toPythonModule (pkgs.geant4.override {
+    enablePython = true;
+    python3 = python;
+  }));
+
   genshi = callPackage ../development/python-modules/genshi { };
 
   gentools = callPackage ../development/python-modules/gentools { };