diff --git a/lib/maintainers.nix b/lib/maintainers.nix index cee9f0023e2..f46d9b80990 100644 --- a/lib/maintainers.nix +++ b/lib/maintainers.nix @@ -81,6 +81,7 @@ garrison = "Jim Garrison "; gavin = "Gavin Rogers "; gebner = "Gabriel Ebner "; + giogadi = "Luis G. Torres "; globin = "Robin Gloster "; goibhniu = "Cillian de RĂ³iste "; gridaphobe = "Eric Seidel "; diff --git a/pkgs/development/libraries/ceres-solver/default.nix b/pkgs/development/libraries/ceres-solver/default.nix new file mode 100644 index 00000000000..4dce56a8f1a --- /dev/null +++ b/pkgs/development/libraries/ceres-solver/default.nix @@ -0,0 +1,51 @@ +{ stdenv +, eigen +, fetchurl +, cmake +, google-gflags ? null +, glog ? null +, runTests ? false +}: + +# google-gflags is required to run tests +assert runTests -> google-gflags != null; + +let + version = "1.10.0"; + + # glog currently doesn't build on darwin + # Issue: https://code.google.com/p/google-glog/issues/detail?id=121 + useGlog = glog != null && !stdenv.isDarwin; + +in +stdenv.mkDerivation { + name = "ceres-solver-${version}"; + + src = fetchurl { + url = "http://ceres-solver.org/ceres-solver-${version}.tar.gz"; + sha256 = "20bb5db05c3e3e14a4062e2cf2b0742d2653359549ecded3e0653104ef3deb17"; + }; + + buildInputs = [ cmake ] + ++ stdenv.lib.optional useGlog glog + ++ stdenv.lib.optional (google-gflags != null) google-gflags; + + inherit eigen; + + doCheck = runTests; + + checkTarget = "test"; + + cmakeFlags = " + -DEIGEN_INCLUDE_DIR=${eigen}/include/eigen3 + ${if !useGlog then "-DMINIGLOG=ON" else ""} + "; + + meta = with stdenv.lib; { + description = "C++ library for modeling and solving large, complicated optimization problems"; + license = licenses.bsd3; + homepage = "http://ceres-solver.org"; + maintainers = with stdenv.lib.maintainers; [ giogadi ]; + inherit version; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 85358d1fcca..166e5365db7 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -697,6 +697,10 @@ let cdemu-client = callPackage ../misc/emulators/cdemu/client.nix { }; + ceres-solver = callPackage ../development/libraries/ceres-solver { + google-gflags = null; # only required for examples/tests + }; + gcdemu = callPackage ../misc/emulators/cdemu/gui.nix { }; image-analyzer = callPackage ../misc/emulators/cdemu/analyzer.nix { };