2019-10-04 08:13:42 +01:00
|
|
|
{ stdenv
|
|
|
|
, lib
|
|
|
|
, fetchFromGitHub
|
|
|
|
, libyaml
|
|
|
|
, swig
|
2019-11-29 09:53:15 +00:00
|
|
|
, eigen
|
2021-01-19 06:50:56 +00:00
|
|
|
, pkg-config
|
2020-12-10 09:37:49 +00:00
|
|
|
, python2
|
2019-10-04 08:13:42 +01:00
|
|
|
, wafHook
|
|
|
|
, makeWrapper
|
|
|
|
, qt4
|
2021-03-25 11:54:37 +00:00
|
|
|
, pythonPackages ? null
|
2019-10-05 06:38:15 +01:00
|
|
|
, pythonSupport ? false
|
2019-10-05 05:58:56 +01:00
|
|
|
# Default to false since it breaks the build, see https://github.com/MTG/gaia/issues/11
|
2019-10-04 08:13:42 +01:00
|
|
|
, stlfacadeSupport ? false
|
|
|
|
, assertsSupport ? true
|
|
|
|
, cyclopsSupport ? true
|
|
|
|
}:
|
|
|
|
|
2019-10-05 06:38:15 +01:00
|
|
|
assert pythonSupport -> pythonPackages != null;
|
2019-10-04 08:13:42 +01:00
|
|
|
|
|
|
|
stdenv.mkDerivation rec {
|
|
|
|
pname = "gaia";
|
2019-11-29 09:53:15 +00:00
|
|
|
version = "2.4.6";
|
2019-10-04 08:13:42 +01:00
|
|
|
|
|
|
|
src = fetchFromGitHub {
|
|
|
|
owner = "MTG";
|
|
|
|
repo = "gaia";
|
|
|
|
rev = "v${version}";
|
2019-11-29 09:53:15 +00:00
|
|
|
sha256 = "03vmdq7ca4f7zp2f4sxyqa8sdpdma3mn9fz4z7d93qryl0bhi7z3";
|
2019-10-04 08:13:42 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
# Fix installation error when waf tries to put files in /etc/
|
2021-01-24 09:19:10 +00:00
|
|
|
prePatch = "" + lib.optionalString cyclopsSupport ''
|
2019-10-04 08:13:42 +01:00
|
|
|
substituteInPlace src/wscript \
|
|
|
|
--replace "/etc/cyclops" "$out/etc/cyclops" \
|
|
|
|
--replace "/etc/init.d" "$out/etc/init.d"
|
|
|
|
'';
|
|
|
|
|
|
|
|
nativeBuildInputs = [
|
2021-01-19 06:50:56 +00:00
|
|
|
pkg-config
|
2020-12-10 09:37:49 +00:00
|
|
|
python2 # For wafHook
|
2019-10-04 08:13:42 +01:00
|
|
|
swig
|
2020-12-10 09:37:49 +00:00
|
|
|
wafHook
|
2019-10-08 08:20:53 +01:00
|
|
|
]
|
|
|
|
# The gaiafusion binary inside $out/bin needs a shebangs patch, and
|
|
|
|
# wrapping with the appropriate $PYTHONPATH
|
|
|
|
++ lib.optionals (pythonSupport) [
|
|
|
|
pythonPackages.wrapPython
|
|
|
|
]
|
|
|
|
;
|
|
|
|
|
2019-10-04 08:13:42 +01:00
|
|
|
buildInputs = [
|
|
|
|
libyaml
|
2019-11-29 09:53:15 +00:00
|
|
|
eigen
|
2019-10-04 08:13:42 +01:00
|
|
|
qt4
|
2019-10-08 08:20:53 +01:00
|
|
|
];
|
|
|
|
|
|
|
|
propagatedBuildInputs = []
|
2019-10-04 08:13:42 +01:00
|
|
|
++ lib.optionals (pythonSupport) [
|
2019-10-08 08:20:53 +01:00
|
|
|
# This is not exactly specified in upstream's README but it's needed by the
|
|
|
|
# resulting $out/bin/gaiafusion script
|
|
|
|
pythonPackages.pyyaml
|
2019-10-04 08:13:42 +01:00
|
|
|
]
|
|
|
|
;
|
2019-10-08 08:20:53 +01:00
|
|
|
|
|
|
|
wafConfigureFlags = []
|
2019-10-04 08:13:42 +01:00
|
|
|
++ lib.optionals (pythonSupport) [ "--with-python-bindings" ]
|
|
|
|
++ lib.optionals (stlfacadeSupport) [ "--with-stlfacade" ]
|
|
|
|
++ lib.optionals (assertsSupport) [ "--with-asserts" ]
|
|
|
|
++ lib.optionals (cyclopsSupport) [ "--with-cyclops" ]
|
|
|
|
;
|
2019-10-08 08:20:53 +01:00
|
|
|
|
2021-01-24 09:19:10 +00:00
|
|
|
postFixup = ""
|
2019-10-08 08:20:53 +01:00
|
|
|
+ lib.optionalString pythonSupport ''
|
|
|
|
wrapPythonPrograms
|
|
|
|
''
|
|
|
|
;
|
2019-10-04 08:13:42 +01:00
|
|
|
|
|
|
|
meta = with lib; {
|
|
|
|
homepage = "https://github.com/MTG/gaia";
|
2019-10-05 06:14:40 +01:00
|
|
|
description = "General library to work with points in a semimetric space";
|
2019-10-04 08:13:42 +01:00
|
|
|
maintainers = with maintainers; [ doronbehar ];
|
2019-11-16 14:14:24 +00:00
|
|
|
platforms = platforms.x86; # upstream assume SSE2 / fails on ARM
|
2019-10-04 08:13:42 +01:00
|
|
|
license = licenses.agpl3;
|
|
|
|
};
|
|
|
|
}
|