Merge pull request #307098 from r-ryantm/auto-update/cilium-cli
[NixPkgs.git] / pkgs / development / python-modules / opensfm / default.nix
blob674ec572e1408981fdc1003b3766f54982696870
1 { lib
2 , stdenv
3 , buildPythonPackage
4 , fetchFromGitHub
5 , fetchpatch
6 , cmake
7 , opencv4
8 , ceres-solver
9 , suitesparse
10 , metis
11 , eigen
12 , pkg-config
13 , pybind11
14 , numpy
15 , pyyaml
16 , lapack
17 , gtest
18 , gflags
19 , glog
20 , pytestCheckHook
21 , networkx
22 , pillow
23 , exifread
24 , gpxpy
25 , pyproj
26 , python-dateutil
27 , joblib
28 , repoze-lru
29 , xmltodict
30 , cloudpickle
31 , scipy
32 , sphinx
33 , matplotlib
34 , fpdf
38 let
39   ceresSplit = (builtins.length ceres-solver.outputs) > 1;
40   ceres' =
41     if ceresSplit
42     then ceres-solver.dev
43     else ceres-solver;
45 buildPythonPackage rec {
46   pname = "opensfm";
47   version = "unstable-2023-12-09";
49   src = fetchFromGitHub {
50     owner = "mapillary";
51     repo = "OpenSfM";
52     rev = "7f170d0dc352340295ff480378e3ac37d0179f8e";
53     sha256 = "sha256-l/HTVenC+L+GpMNnDgnSGZ7+Qd2j8b8cuTs3SmORqrg=";
54   };
55   patches = [
56     ./0002-cmake-find-system-distributed-gtest.patch
57     ./0003-cmake-use-system-pybind11.patch
58     ./0004-pybind_utils.h-conflicts-with-nixpkgs-pybind.patch
59     ./fix-scripts.patch
60   ];
61   postPatch = ''
62     rm opensfm/src/cmake/FindGlog.cmake
63     rm opensfm/src/cmake/FindGflags.cmake
65     # HAHOG is the default descriptor.
66     # We'll test both HAHOG and SIFT because this is
67     # where segfaults might be introduced in future
68     echo 'feature_type: SIFT' >> data/berlin/config.yaml
69     echo 'feature_type: HAHOG' >> data/lund/config.yaml
71     sed -i -e 's/^.*BuildDoc.*$//' setup.py
72   '';
74   nativeBuildInputs = [ cmake pkg-config sphinx ];
75   buildInputs = [
76     ceres'
77     suitesparse
78     metis
79     eigen
80     lapack
81     gflags
82     gtest
83     glog
84     pybind11
85   ];
86   propagatedBuildInputs = [
87     numpy
88     scipy
89     pyyaml
90     opencv4.cxxdev
91     networkx
92     pillow
93     matplotlib
94     fpdf
95     exifread
96     gpxpy
97     pyproj
98     python-dateutil
99     joblib
100     repoze-lru
101     xmltodict
102     cloudpickle
103   ];
104   nativeCheckInputs = [ pytestCheckHook ];
106   dontUseCmakeBuildDir = true;
107   cmakeFlags = [
108     "-Bcmake_build"
109     "-Sopensfm/src"
110   ];
112   disabledTests = [
113     "test_run_all" # Matplotlib issues. Broken integration is less useless than a broken build
114   ] ++ lib.optionals stdenv.isDarwin [
115     "test_reconstruction_incremental"
116     "test_reconstruction_triangulation"
117   ];
119   pythonImportsCheck = [ "opensfm" ];
121   meta = {
122     broken = stdenv.isDarwin;
123     maintainers = [ lib.maintainers.SomeoneSerge ];
124     license = lib.licenses.bsd2;
125     changelog = "https://github.com/mapillary/OpenSfM/blob/${src.rev}/CHANGELOG.md";
126     description = "Open source Structure-from-Motion pipeline from Mapillary";
127     homepage = "https://opensfm.org/";
128   };