uboot: (firmwareOdroidC2/C4) don't invoke patch tool, use patches = [] instead
https://github.com/NixOS/nixpkgs/blob/master/pkgs/stdenv/generic/setup.sh#L948 this can do it nicely. Signed-off-by: Anton Arapov <anton@deadbeef.mx>
This commit is contained in:
commit
56de2bcd43
30691 changed files with 3076956 additions and 0 deletions
61
pkgs/development/python-modules/fipy/default.nix
Normal file
61
pkgs/development/python-modules/fipy/default.nix
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
{ lib
|
||||
, buildPythonPackage
|
||||
, numpy
|
||||
, scipy
|
||||
, pyamg
|
||||
, pysparse
|
||||
, future
|
||||
, matplotlib
|
||||
, tkinter
|
||||
, mpi4py
|
||||
, scikit-fmm
|
||||
, isPy27
|
||||
, gmsh
|
||||
, python
|
||||
, stdenv
|
||||
, openssh
|
||||
, fetchurl
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "fipy";
|
||||
version = "3.4.2.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/usnistgov/fipy/releases/download/${version}/FiPy-${version}.tar.gz";
|
||||
sha256 = "0v5yk9b4hksy3176w4vm4gagb9kxqgv75zcyswlqvl371qwy1grk";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
numpy
|
||||
scipy
|
||||
pyamg
|
||||
matplotlib
|
||||
tkinter
|
||||
mpi4py
|
||||
future
|
||||
scikit-fmm
|
||||
openssh
|
||||
] ++ lib.optionals isPy27 [ pysparse ]
|
||||
++ lib.optionals (!stdenv.isDarwin) [ gmsh ];
|
||||
|
||||
# Reading version string from Gmsh is broken in latest release of FiPy
|
||||
# This issue is repaired on master branch of FiPy
|
||||
# Fixed with: https://github.com/usnistgov/fipy/pull/848/files
|
||||
# Remove patch with next release.
|
||||
patches = [ ./gmsh.patch ];
|
||||
|
||||
checkInputs = lib.optionals (!stdenv.isDarwin) [ gmsh ];
|
||||
|
||||
checkPhase = ''
|
||||
export OMPI_MCA_plm_rsh_agent=${openssh}/bin/ssh
|
||||
${python.interpreter} setup.py test --modules
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://www.ctcms.nist.gov/fipy/";
|
||||
description = "A Finite Volume PDE Solver Using Python";
|
||||
license = licenses.free;
|
||||
maintainers = with maintainers; [ costrouc wd15 ];
|
||||
};
|
||||
}
|
||||
182
pkgs/development/python-modules/fipy/gmsh.patch
Normal file
182
pkgs/development/python-modules/fipy/gmsh.patch
Normal file
|
|
@ -0,0 +1,182 @@
|
|||
diff --git a/fipy/meshes/gmshMesh.py b/fipy/meshes/gmshMesh.py
|
||||
index fc3ff6c8..d529d532 100755
|
||||
--- a/fipy/meshes/gmshMesh.py
|
||||
+++ b/fipy/meshes/gmshMesh.py
|
||||
@@ -13,11 +13,11 @@ import sys
|
||||
import tempfile
|
||||
from textwrap import dedent
|
||||
import warnings
|
||||
-from distutils.version import StrictVersion
|
||||
|
||||
from fipy.tools import numerix as nx
|
||||
from fipy.tools import parallelComm
|
||||
from fipy.tools import serialComm
|
||||
+from fipy.tools.version import Version, parse_version
|
||||
from fipy.tests.doctestPlus import register_skipper
|
||||
|
||||
from fipy.meshes.mesh import Mesh
|
||||
@@ -38,7 +38,7 @@ def _checkForGmsh():
|
||||
hasGmsh = True
|
||||
try:
|
||||
version = _gmshVersion(communicator=parallelComm)
|
||||
- hasGmsh = version >= StrictVersion("2.0")
|
||||
+ hasGmsh = version >= Version("2.0")
|
||||
except Exception:
|
||||
hasGmsh = False
|
||||
return hasGmsh
|
||||
@@ -68,6 +68,7 @@ def gmshVersion(communicator=parallelComm):
|
||||
while True:
|
||||
try:
|
||||
# gmsh returns version in stderr (Why?!?)
|
||||
+ # (newer versions of gmsh return the version in stdout)
|
||||
# spyder on Windows throws
|
||||
# OSError: [WinError 6] The handle is invalid
|
||||
# if we don't PIPE stdout, too
|
||||
@@ -77,8 +78,11 @@ def gmshVersion(communicator=parallelComm):
|
||||
break
|
||||
|
||||
try:
|
||||
- out, verStr = p.communicate()
|
||||
- verStr = verStr.decode('ascii').strip()
|
||||
+ out, err = p.communicate()
|
||||
+ verStr = err.decode('ascii').strip()
|
||||
+ if not verStr:
|
||||
+ # newer versions of gmsh return the version in stdout
|
||||
+ verStr = out.decode('ascii').strip()
|
||||
break
|
||||
except IOError:
|
||||
# some weird conflict with things like PyQT can cause
|
||||
@@ -93,12 +97,12 @@ def gmshVersion(communicator=parallelComm):
|
||||
def _gmshVersion(communicator=parallelComm):
|
||||
version = gmshVersion(communicator) or "0.0"
|
||||
try:
|
||||
- version = StrictVersion(version)
|
||||
+ version = parse_version(version)
|
||||
except ValueError:
|
||||
# gmsh returns the version string in stderr,
|
||||
# which means it's often unparsable due to irrelevant warnings
|
||||
# assume it's OK and move on
|
||||
- version = StrictVersion("3.0")
|
||||
+ version = Version("3.0")
|
||||
|
||||
return version
|
||||
|
||||
@@ -133,7 +137,7 @@ def openMSHFile(name, dimensions=None, coordDimensions=None, communicator=parall
|
||||
|
||||
# Enforce gmsh version to be either >= 2 or 2.5, based on Nproc.
|
||||
version = _gmshVersion(communicator=communicator)
|
||||
- if version < StrictVersion("2.0"):
|
||||
+ if version < Version("2.0"):
|
||||
raise EnvironmentError("Gmsh version must be >= 2.0.")
|
||||
|
||||
# If we're being passed a .msh file, leave it be. Otherwise,
|
||||
@@ -176,9 +180,11 @@ def openMSHFile(name, dimensions=None, coordDimensions=None, communicator=parall
|
||||
gmshFlags = ["-%d" % dimensions, "-nopopup"]
|
||||
|
||||
if communicator.Nproc > 1:
|
||||
- if not (StrictVersion("2.5") < version <= StrictVersion("4.0")):
|
||||
- warnstr = "Cannot partition with Gmsh version < 2.5 or >= 4.0. " \
|
||||
- + "Reverting to serial."
|
||||
+ if ((version < Version("2.5"))
|
||||
+ or (Version("4.0") <= version < Version("4.5.2"))):
|
||||
+ warnstr = ("Cannot partition with Gmsh version < 2.5 "
|
||||
+ "or 4.0 <= version < 4.5.2. "
|
||||
+ "Reverting to serial.")
|
||||
warnings.warn(warnstr, RuntimeWarning, stacklevel=2)
|
||||
communicator = serialComm
|
||||
|
||||
@@ -188,13 +194,13 @@ def openMSHFile(name, dimensions=None, coordDimensions=None, communicator=parall
|
||||
raise ValueError("'dimensions' must be specified to generate a mesh from a geometry script")
|
||||
else: # gmsh version is adequate for partitioning
|
||||
gmshFlags += ["-part", "%d" % communicator.Nproc]
|
||||
- if version >= StrictVersion("4.0"):
|
||||
+ if version >= Version("4.0"):
|
||||
# Gmsh 4.x needs to be told to generate ghost cells
|
||||
- # Unfortunately, the ghosts are broken
|
||||
+ # Unfortunately, the ghosts are broken in Gmsh 4.0--4.5.1
|
||||
# https://gitlab.onelab.info/gmsh/gmsh/issues/733
|
||||
gmshFlags += ["-part_ghosts"]
|
||||
|
||||
- gmshFlags += ["-format", "msh2"]
|
||||
+ gmshFlags += ["-format", "msh2", "-smooth", "8"]
|
||||
|
||||
if background is not None:
|
||||
if communicator.procID == 0:
|
||||
@@ -1387,6 +1393,11 @@ class _GmshTopology(_MeshTopology):
|
||||
class Gmsh2D(Mesh2D):
|
||||
"""Construct a 2D Mesh using Gmsh
|
||||
|
||||
+ If called in parallel, the mesh will be partitioned based on the value
|
||||
+ of `parallelComm.Nproc`. If an `MSH` file is supplied, it must have
|
||||
+ been previously partitioned with the number of partitions matching
|
||||
+ `parallelComm.Nproc`.
|
||||
+
|
||||
>>> radius = 5.
|
||||
>>> side = 4.
|
||||
>>> squaredCircle = Gmsh2D('''
|
||||
@@ -1875,6 +1886,11 @@ class Gmsh2D(Mesh2D):
|
||||
class Gmsh2DIn3DSpace(Gmsh2D):
|
||||
"""Create a topologically 2D Mesh in 3D coordinates using Gmsh
|
||||
|
||||
+ If called in parallel, the mesh will be partitioned based on the value
|
||||
+ of `parallelComm.Nproc`. If an `MSH` file is supplied, it must have
|
||||
+ been previously partitioned with the number of partitions matching
|
||||
+ `parallelComm.Nproc`.
|
||||
+
|
||||
Parameters
|
||||
----------
|
||||
arg : str
|
||||
@@ -1959,6 +1975,11 @@ class Gmsh2DIn3DSpace(Gmsh2D):
|
||||
class Gmsh3D(Mesh):
|
||||
"""Create a 3D Mesh using Gmsh
|
||||
|
||||
+ If called in parallel, the mesh will be partitioned based on the value
|
||||
+ of `parallelComm.Nproc`. If an `MSH` file is supplied, it must have
|
||||
+ been previously partitioned with the number of partitions matching
|
||||
+ `parallelComm.Nproc`.
|
||||
+
|
||||
Parameters
|
||||
----------
|
||||
arg : str
|
||||
@@ -2225,7 +2246,7 @@ class GmshGrid2D(Gmsh2D):
|
||||
width = nx * dx
|
||||
numLayers = int(ny / float(dy))
|
||||
|
||||
- if _gmshVersion() < StrictVersion("2.7"):
|
||||
+ if _gmshVersion() < Version("2.7"):
|
||||
# kludge: must offset cellSize by `eps` to work properly
|
||||
eps = float(dx)/(nx * 10)
|
||||
else:
|
||||
@@ -2299,7 +2320,7 @@ class GmshGrid3D(Gmsh3D):
|
||||
width = nx * dx
|
||||
depth = nz * dz
|
||||
|
||||
- if _gmshVersion() < StrictVersion("2.7"):
|
||||
+ if _gmshVersion() < Version("2.7"):
|
||||
# kludge: must offset cellSize by `eps` to work properly
|
||||
eps = float(dx)/(nx * 10)
|
||||
else:
|
||||
diff --git a/fipy/tools/version.py b/fipy/tools/version.py
|
||||
new file mode 100644
|
||||
index 00000000..93d89c18
|
||||
--- /dev/null
|
||||
+++ b/fipy/tools/version.py
|
||||
@@ -0,0 +1,18 @@
|
||||
+"""Shim for version checking
|
||||
+
|
||||
+`distutils.version` is deprecated, but `packaging.version` is unavailable
|
||||
+in Python 2.7
|
||||
+"""
|
||||
+from __future__ import unicode_literals
|
||||
+
|
||||
+__docformat__ = 'restructuredtext'
|
||||
+
|
||||
+
|
||||
+__all__ = ["Version", "parse_version"]
|
||||
+from future.utils import text_to_native_str
|
||||
+__all__ = [text_to_native_str(n) for n in __all__]
|
||||
+
|
||||
+try:
|
||||
+ from packaging.version import Version, parse as parse_version
|
||||
+except ImportError:
|
||||
+ from distutils.version import StrictVersion as Version, StrictVersion as parse_version
|
||||
Loading…
Add table
Add a link
Reference in a new issue