ks: add completions for bash and zsh (#364049)
[NixPkgs.git] / pkgs / applications / gis / grass / default.nix
blobb89e4fd339dcf6a520115733400279cceca5c872
1 { lib
2 , stdenv
3 , callPackage
4 , fetchFromGitHub
5 , makeWrapper
6 , wrapGAppsHook3
8 , withOpenGL ? !stdenv.hostPlatform.isDarwin
10 , bison
11 , blas
12 , cairo
13 , ffmpeg
14 , fftw
15 , flex
16 , freetype
17 , gdal
18 , geos
19 , lapack
20 , libGLU
21 , libiconv
22 , libpng
23 , libsvm
24 , libtiff
25 , libxml2
26 , llvmPackages
27 , netcdf
28 , pdal
29 , pkg-config
30 , postgresql
31 , proj
32 , python3Packages
33 , readline
34 , sqlite
35 , wxGTK32
36 , zlib
37 , zstd
40 stdenv.mkDerivation (finalAttrs: {
41   pname = "grass";
42   version = "8.4.0";
44   src = fetchFromGitHub {
45     owner = "OSGeo";
46     repo = "grass";
47     rev = finalAttrs.version;
48     hash = "sha256-NKMshd6pr2O62ZjmQ/oPttmeVBYVD0Nqhh3SwQrhZf8=";
49   };
51   nativeBuildInputs = [
52     makeWrapper
53     wrapGAppsHook3
55     bison
56     flex
57     gdal # for `gdal-config`
58     geos # for `geos-config`
59     netcdf # for `nc-config`
60     pkg-config
61   ] ++ (with python3Packages; [ python-dateutil numpy wxpython ]);
63   buildInputs = [
64     blas
65     cairo
66     ffmpeg
67     fftw
68     freetype
69     gdal
70     geos
71     lapack
72     libpng
73     libsvm
74     libtiff
75     (libxml2.override { enableHttp = true; })
76     netcdf
77     pdal
78     postgresql
79     proj
80     readline
81     sqlite
82     wxGTK32
83     zlib
84     zstd
85   ] ++ lib.optionals withOpenGL [ libGLU ]
86   ++ lib.optionals stdenv.hostPlatform.isDarwin [ libiconv ]
87   ++ lib.optionals stdenv.cc.isClang [ llvmPackages.openmp ];
89   strictDeps = true;
91   configureFlags = [
92     "--with-blas"
93     "--with-cairo-ldflags=-lfontconfig"
94     "--with-cxx"
95     "--with-fftw"
96     "--with-freetype"
97     "--with-geos"
98     "--with-gdal"
99     "--with-lapack"
100     "--with-libsvm"
101     "--with-nls"
102     "--with-openmp"
103     "--with-pdal"
104     "--with-postgres"
105     "--with-postgres-libs=${postgresql.lib}/lib/"
106     "--with-proj-includes=${proj.dev}/include"
107     "--with-proj-libs=${proj}/lib"
108     "--with-proj-share=${proj}/share/proj"
109     "--with-sqlite"
110     "--with-zstd"
111     "--without-bzlib"
112     "--without-mysql"
113     "--without-odbc"
114   ] ++ lib.optionals (! withOpenGL) [
115     "--without-opengl"
116   ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
117     "--without-cairo"
118     "--without-freetype"
119     "--without-x"
120   ];
122   # Otherwise a very confusing "Can't load GDAL library" error
123   makeFlags = lib.optional stdenv.hostPlatform.isDarwin "GDAL_DYNAMIC=";
125   /* Ensures that the python script run at build time are actually executable;
126    * otherwise, patchShebangs ignores them.  */
127   postConfigure = ''
128     for f in $(find . -name '*.py'); do
129       chmod +x $f
130     done
132     patchShebangs */
133   '';
135   postInstall = ''
136     wrapProgram $out/bin/grass \
137     --set PYTHONPATH $PYTHONPATH \
138     --set GRASS_PYTHON ${python3Packages.python.interpreter} \
139     --suffix LD_LIBRARY_PATH ':' '${gdal}/lib'
140     ln -s $out/grass*/lib $out/lib
141     ln -s $out/grass*/include $out/include
142   '';
144   enableParallelBuilding = true;
146   passthru.tests = {
147     grass = callPackage ./tests.nix { grass = finalAttrs.finalPackage; };
148   };
150   meta = with lib; {
151     description = "GIS software suite used for geospatial data management and analysis, image processing, graphics and maps production, spatial modeling, and visualization";
152     homepage = "https://grass.osgeo.org/";
153     license = licenses.gpl2Plus;
154     maintainers = with maintainers; teams.geospatial.members ++ [ mpickering ];
155     platforms = platforms.all;
156     mainProgram = "grass";
157   };