118 lines
2.6 KiB
Nix
118 lines
2.6 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
fetchurl,
|
|
makeDesktopItem,
|
|
copyDesktopItems,
|
|
cmake,
|
|
blas,
|
|
lapack,
|
|
gfortran,
|
|
gmm,
|
|
fltk,
|
|
libjpeg,
|
|
zlib,
|
|
libGL,
|
|
libGLU,
|
|
xorg,
|
|
opencascade-occt,
|
|
llvmPackages,
|
|
python3Packages,
|
|
enablePython ? false,
|
|
}:
|
|
|
|
assert (!blas.isILP64) && (!lapack.isILP64);
|
|
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
pname = "gmsh";
|
|
version = "4.14.0";
|
|
|
|
src = fetchurl {
|
|
url = "https://gmsh.info/src/gmsh-${finalAttrs.version}-source.tgz";
|
|
hash = "sha256-2019ogYumkNWqCCDITirmfl69jiL/rIVmaLq37C3aig=";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
cmake
|
|
gfortran
|
|
]
|
|
++ lib.optional (
|
|
enablePython && stdenv.buildPlatform == stdenv.hostPlatform
|
|
) python3Packages.pythonImportsCheckHook
|
|
++ lib.optional stdenv.hostPlatform.isLinux copyDesktopItems;
|
|
|
|
buildInputs = [
|
|
blas
|
|
lapack
|
|
gmm
|
|
fltk
|
|
libjpeg
|
|
zlib
|
|
opencascade-occt
|
|
]
|
|
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
|
|
libGL
|
|
libGLU
|
|
xorg.libXrender
|
|
xorg.libXcursor
|
|
xorg.libXfixes
|
|
xorg.libXext
|
|
xorg.libXft
|
|
xorg.libXinerama
|
|
xorg.libX11
|
|
xorg.libSM
|
|
xorg.libICE
|
|
]
|
|
++ lib.optional stdenv.cc.isClang llvmPackages.openmp;
|
|
|
|
# N.B. the shared object is used by bindings
|
|
cmakeFlags = [
|
|
"-DENABLE_BUILD_SHARED=ON"
|
|
"-DENABLE_BUILD_DYNAMIC=ON"
|
|
"-DENABLE_OPENMP=ON"
|
|
];
|
|
|
|
doCheck = true;
|
|
|
|
desktopItems = [
|
|
(makeDesktopItem {
|
|
name = "gmsh";
|
|
exec = "gmsh";
|
|
comment = finalAttrs.meta.description;
|
|
desktopName = "Gmsh";
|
|
genericName = "3D Mesh Generator";
|
|
categories = [
|
|
"Science"
|
|
"Math"
|
|
];
|
|
icon = "gmsh";
|
|
})
|
|
];
|
|
|
|
postInstall =
|
|
let
|
|
logo = fetchurl {
|
|
url = "https://salsa.debian.org/science-team/gmsh/-/raw/d2d8b4e3488c7b0f51879f809f624b537b4bd28f/debian/gmsh.svg";
|
|
hash = "sha256-p69Cju3bn1ShWmESOSOmJj0x3IYDGI9oD25SFTh2GLo=";
|
|
};
|
|
in
|
|
lib.optionalString stdenv.hostPlatform.isLinux ''
|
|
install -Dm644 ${logo} $out/share/icons/hicolor/scalable/apps/gmsh.svg
|
|
''
|
|
+ lib.optionalString enablePython ''
|
|
mkdir -p $out/${python3Packages.python.sitePackages}
|
|
mv $out/lib/gmsh.py $out/${python3Packages.python.sitePackages}
|
|
mv $out/lib/*.dist-info $out/${python3Packages.python.sitePackages}
|
|
'';
|
|
|
|
pythonImportsCheck = [ "gmsh" ];
|
|
|
|
meta = {
|
|
description = "Three-dimensional finite element mesh generator";
|
|
mainProgram = "gmsh";
|
|
homepage = "https://gmsh.info/";
|
|
changelog = "https://gitlab.onelab.info/gmsh/gmsh/-/releases/gmsh_${lib.concatStringsSep "_" (lib.versions.splitVersion finalAttrs.version)}#changelog";
|
|
license = lib.licenses.gpl2Plus;
|
|
};
|
|
})
|