about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/gis
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2019-03-16 17:16:21 +0000
committerAlyssa Ross <hi@alyssa.is>2019-03-16 22:36:36 +0000
commitcb6d0ec12187e0c2c11b203f3d8fa62790628141 (patch)
tree0ca0fedc67d5676e89438cffa3e0865eee0962e4 /nixpkgs/pkgs/applications/gis
parent4d83b8e578d3a0b78d2694921c944172b009036a (diff)
parentda1a2b1eeafa66b4419b4f275396d8a731eccb61 (diff)
downloadnixlib-cb6d0ec12187e0c2c11b203f3d8fa62790628141.tar
nixlib-cb6d0ec12187e0c2c11b203f3d8fa62790628141.tar.gz
nixlib-cb6d0ec12187e0c2c11b203f3d8fa62790628141.tar.bz2
nixlib-cb6d0ec12187e0c2c11b203f3d8fa62790628141.tar.lz
nixlib-cb6d0ec12187e0c2c11b203f3d8fa62790628141.tar.xz
nixlib-cb6d0ec12187e0c2c11b203f3d8fa62790628141.tar.zst
nixlib-cb6d0ec12187e0c2c11b203f3d8fa62790628141.zip
Merge commit 'da1a2b1eeafa66b4419b4f275396d8a731eccb61'
Diffstat (limited to 'nixpkgs/pkgs/applications/gis')
-rw-r--r--nixpkgs/pkgs/applications/gis/qgis/default.nix101
-rw-r--r--nixpkgs/pkgs/applications/gis/qgis/unwrapped.nix54
2 files changed, 71 insertions, 84 deletions
diff --git a/nixpkgs/pkgs/applications/gis/qgis/default.nix b/nixpkgs/pkgs/applications/gis/qgis/default.nix
index 61061a6d6721..0c76a489f13b 100644
--- a/nixpkgs/pkgs/applications/gis/qgis/default.nix
+++ b/nixpkgs/pkgs/applications/gis/qgis/default.nix
@@ -1,94 +1,27 @@
-{ stdenv, fetchurl, fetchpatch, gdal, cmake, qt4, flex, bison, proj, geos, xlibsWrapper, sqlite, gsl
-, qwt, fcgi, python2Packages, libspatialindex, libspatialite, qscintilla, postgresql, makeWrapper
-, qjson, qca2, txt2tags, openssl, darwin, pkgconfig
-, withGrass ? true, grass, saga, IOKit, ApplicationServices
+{ stdenv, lib, makeWrapper, symlinkJoin
+, qgis-unwrapped, extraPythonPackages ? (ps: [ ])
 }:
+with lib;
+symlinkJoin rec {
+  inherit (qgis-unwrapped) version;
+  name = "qgis-${version}";
 
-stdenv.mkDerivation rec {
-  name = "qgis-2.18.28";
+  paths = [ qgis-unwrapped ];
 
-  buildInputs = [ gdal qt4 flex openssl bison proj geos xlibsWrapper sqlite gsl qwt qscintilla
-    fcgi libspatialindex libspatialite postgresql qjson qca2 txt2tags pkgconfig
-    saga ]
-  ++
-    (stdenv.lib.optionals stdenv.isDarwin [IOKit ApplicationServices])
-  ++
-    (stdenv.lib.optional withGrass grass) ++
-    (stdenv.lib.optional (stdenv.isDarwin && withGrass) darwin.apple_sdk.libs.utmp) ++
-    (with python2Packages; [ jinja2 numpy psycopg2 pygments requests python2Packages.qscintilla sip ]);
+  nativeBuildInputs = [ makeWrapper qgis-unwrapped.python3Packages.wrapPython ];
 
-  nativeBuildInputs = [ cmake makeWrapper pkgconfig ];
+  # extend to add to the python environment of QGIS without rebuilding QGIS application.
+  pythonInputs = qgis-unwrapped.pythonBuildInputs ++ (extraPythonPackages qgis-unwrapped.python3Packages);
 
-  # `make -f src/providers/wms/CMakeFiles/wmsprovider_a.dir/build.make src/providers/wms/CMakeFiles/wmsprovider_a.dir/qgswmssourceselect.cpp.o`:
-  # fatal error: ui_qgsdelimitedtextsourceselectbase.h: No such file or directory
-  enableParallelBuilding = false;
+  postBuild = ''
+    # unpackPhase
 
-  preConfigure = ''
-    NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config --cflags libspatialindex)"
-  '';
+    buildPythonPath "$pythonInputs"
 
-  # To handle the lack of 'local' RPATH; required, as they call one of
-  # their built binaries requiring their libs, in the build process.
-  preBuild = ''
-    export LD_LIBRARY_PATH=`pwd`/output/lib:${stdenv.lib.makeLibraryPath [ openssl ]}:$LD_LIBRARY_PATH
+    wrapProgram $out/bin/qgis \
+      --prefix PATH : $program_PATH \
+      --set PYTHONPATH $program_PYTHONPATH
   '';
 
-  src = fetchurl {
-    url = "https://qgis.org/downloads/${name}.tar.bz2";
-    sha256 = "18pijqls1isd2bpg0mkrw07jqvdfaiwwb9mvz7p2xrgqcjx7dxsq";
-  };
-
-  patches = [
-    # already merged upstream in QGIS-3.*, but needs to be backported to QGIS-2
-    (fetchpatch {
-      url = "https://patch-diff.githubusercontent.com/raw/qgis/QGIS/pull/7263.patch";
-      name = "Ensure_qgis.db_is_writable_when_copied_from_RO_source";
-      sha256 = "19wr2kz0x8x6p2n0ylzd4lqrdmbkxyxr0zpwf2vl9hdp92rdjxbv";
-    })
-  ];
-
-  # CMAKE_FIND_FRAMEWORK=never stops the installer choosing system
-  # installed frameworks
-  # QGIS_MACAPP_BUNDLE=0 stops the installer copying the Qt binaries into the
-  # installation which causes havoc
-  # Building RelWithDebInfo allows QGIS_DEBUG to print debugging information
-  cmakeFlags = stdenv.lib.optional withGrass "-DGRASS_PREFIX7=${grass}/${grass.name}"
-               ++ stdenv.lib.optional stdenv.isDarwin
-                    (["-DCMAKE_FIND_FRAMEWORK=never"]
-                      ++ ["-DQGIS_MACAPP_BUNDLE=0"]);
-#                     ++ ["-DCMAKE_BUILD_TYPE=RelWithDebInfo"];
-
-
-
-  postInstall =
-    (stdenv.lib.optionalString stdenv.isLinux ''
-          wrapProgram $out/bin/qgis \
-            --set PYTHONPATH $PYTHONPATH \
-            --prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath [ openssl ]}
-          '') +
-    (stdenv.lib.optionalString stdenv.isDarwin ''
-      # Necessary for QGIS to find the correct default GRASS path
-      # Plugins look for gdal tools like deminfo on the PATH
-      ${stdenv.lib.optionalString withGrass "ln -sf ${grass} $out/QGIS.app/Contents/MacOS/grass"}
-      # Necessary for QGIS to find the right SAGA installation
-      ln -sf ${saga}/bin/saga_cmd $out/QGIS.app/Contents/MacOS/bin/saga_cmd
-      for file in $(find $out -type f -name "QGIS"); do
-        wrapProgram "$file" \
-          --prefix DYLD_LIBRARY_PATH : "${qwt}/lib" \
-          --prefix DYLD_LIBRARY_PATH : "${qscintilla}/lib" \
-          --prefix PATH : "${gdal}/bin" \
-          ${stdenv.lib.optionalString withGrass "--prefix PATH : ${grass}/bin"} \
-          --set PYTHONPATH $PYTHONPATH
-      done
-      mkdir -p $out/bin
-      ln -s $out/QGIS.app/Contents/MacOS/QGIS $out/bin/qgis
-      '');
-
-  meta = {
-    description = "User friendly Open Source Geographic Information System";
-    homepage = http://www.qgis.org;
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = with stdenv.lib.platforms; unix;
-    maintainers = with stdenv.lib.maintainers; [mpickering];
-  };
+  meta = qgis-unwrapped.meta;
 }
diff --git a/nixpkgs/pkgs/applications/gis/qgis/unwrapped.nix b/nixpkgs/pkgs/applications/gis/qgis/unwrapped.nix
new file mode 100644
index 000000000000..e30f4a428a3e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/gis/qgis/unwrapped.nix
@@ -0,0 +1,54 @@
+{ stdenv, lib, fetchurl, cmake, ninja, flex, bison, proj, geos, xlibsWrapper, sqlite, gsl
+, qwt, fcgi, python3Packages, libspatialindex, libspatialite, postgresql
+, txt2tags, openssl, libzip, hdf5, netcdf
+, qtbase, qtwebkit, qtsensors, qca-qt5, qtkeychain, qscintilla, qtserialport, qtxmlpatterns
+, withGrass ? true, grass
+}:
+with lib;
+let
+  pythonBuildInputs = with python3Packages;
+    [ qscintilla-qt5 gdal jinja2 numpy psycopg2
+      chardet dateutil pyyaml pytz requests urllib3 pygments pyqt5 sip owslib six ];
+in stdenv.mkDerivation rec {
+  version = "3.4.5";
+  name = "qgis-unwrapped-${version}";
+
+  src = fetchurl {
+    url = "http://qgis.org/downloads/qgis-${version}.tar.bz2";
+    sha256 = "0myw1jgz8v8wncmrjsszn9ixylx84hafn0281c4hqhz623n3lxgx";
+  };
+
+  passthru = {
+    inherit pythonBuildInputs;
+    inherit python3Packages;
+  };
+
+  buildInputs = [ openssl proj geos xlibsWrapper sqlite gsl qwt
+    fcgi libspatialindex libspatialite postgresql txt2tags libzip hdf5 netcdf
+    qtbase qtwebkit qtsensors qca-qt5 qtkeychain qscintilla qtserialport qtxmlpatterns] ++
+    (stdenv.lib.optional withGrass grass) ++ pythonBuildInputs;
+
+  nativeBuildInputs = [ cmake flex bison ninja ];
+
+  # Force this pyqt_sip_dir variable to point to the sip dir in PyQt5
+  #
+  # TODO: Correct PyQt5 to provide the expected directory and fix
+  # build to use PYQT5_SIP_DIR consistently.
+  postPatch = ''
+     substituteInPlace cmake/FindPyQt5.py \
+       --replace 'pyqtcfg.pyqt_sip_dir' '"${python3Packages.pyqt5}/share/sip/PyQt5"'
+   '';
+
+  cmakeFlags = [ "-DCMAKE_SKIP_BUILD_RPATH=OFF"
+                 "-DPYQT5_SIP_DIR=${python3Packages.pyqt5}/share/sip/PyQt5"
+                 "-DQSCI_SIP_DIR=${python3Packages.qscintilla-qt5}/share/sip/PyQt5" ] ++
+                 stdenv.lib.optional withGrass "-DGRASS_PREFIX7=${grass}/${grass.name}";
+
+  meta = {
+    description = "A Free and Open Source Geographic Information System";
+    homepage = http://www.qgis.org;
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = with stdenv.lib.platforms; linux;
+    maintainers = with stdenv.lib.maintainers; [ lsix ];
+  };
+}