about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/gis/qgis
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/gis/qgis')
-rw-r--r--nixpkgs/pkgs/applications/gis/qgis/default.nix12
-rw-r--r--nixpkgs/pkgs/applications/gis/qgis/ltr.nix12
-rw-r--r--nixpkgs/pkgs/applications/gis/qgis/set-pyqt-package-dirs-ltr.patch59
-rw-r--r--nixpkgs/pkgs/applications/gis/qgis/set-pyqt-package-dirs.patch4
-rw-r--r--nixpkgs/pkgs/applications/gis/qgis/unwrapped-ltr.nix95
-rw-r--r--nixpkgs/pkgs/applications/gis/qgis/unwrapped.nix138
6 files changed, 213 insertions, 107 deletions
diff --git a/nixpkgs/pkgs/applications/gis/qgis/default.nix b/nixpkgs/pkgs/applications/gis/qgis/default.nix
index b3220f8d7081..8fa7338c6eaf 100644
--- a/nixpkgs/pkgs/applications/gis/qgis/default.nix
+++ b/nixpkgs/pkgs/applications/gis/qgis/default.nix
@@ -1,8 +1,11 @@
-{ lib, makeWrapper, symlinkJoin
+{ lib
+, makeWrapper
+, symlinkJoin
+
 , extraPythonPackages ? (ps: [ ])
+
 , libsForQt5
 }:
-with lib;
 let
   qgis-unwrapped = libsForQt5.callPackage ./unwrapped.nix {  };
 in symlinkJoin rec {
@@ -12,7 +15,10 @@ in symlinkJoin rec {
 
   paths = [ qgis-unwrapped ];
 
-  nativeBuildInputs = [ makeWrapper qgis-unwrapped.py.pkgs.wrapPython ];
+  nativeBuildInputs = [
+    makeWrapper
+    qgis-unwrapped.py.pkgs.wrapPython
+  ];
 
   # extend to add to the python environment of QGIS without rebuilding QGIS application.
   pythonInputs = qgis-unwrapped.pythonBuildInputs ++ (extraPythonPackages qgis-unwrapped.py.pkgs);
diff --git a/nixpkgs/pkgs/applications/gis/qgis/ltr.nix b/nixpkgs/pkgs/applications/gis/qgis/ltr.nix
index d34e1e69833b..9288f6ee607e 100644
--- a/nixpkgs/pkgs/applications/gis/qgis/ltr.nix
+++ b/nixpkgs/pkgs/applications/gis/qgis/ltr.nix
@@ -1,8 +1,11 @@
-{ lib, makeWrapper, symlinkJoin
+{ lib
+, makeWrapper
+, symlinkJoin
+
 , extraPythonPackages ? (ps: [ ])
+
 , libsForQt5
 }:
-with lib;
 let
   qgis-ltr-unwrapped = libsForQt5.callPackage ./unwrapped-ltr.nix {  };
 in symlinkJoin rec {
@@ -12,7 +15,10 @@ in symlinkJoin rec {
 
   paths = [ qgis-ltr-unwrapped ];
 
-  nativeBuildInputs = [ makeWrapper qgis-ltr-unwrapped.py.pkgs.wrapPython ];
+  nativeBuildInputs = [
+    makeWrapper
+    qgis-ltr-unwrapped.py.pkgs.wrapPython
+  ];
 
   # extend to add to the python environment of QGIS without rebuilding QGIS application.
   pythonInputs = qgis-ltr-unwrapped.pythonBuildInputs ++ (extraPythonPackages qgis-ltr-unwrapped.py.pkgs);
diff --git a/nixpkgs/pkgs/applications/gis/qgis/set-pyqt-package-dirs-ltr.patch b/nixpkgs/pkgs/applications/gis/qgis/set-pyqt-package-dirs-ltr.patch
new file mode 100644
index 000000000000..5553f80fbc5b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/gis/qgis/set-pyqt-package-dirs-ltr.patch
@@ -0,0 +1,59 @@
+diff --git a/cmake/FindPyQt5.cmake b/cmake/FindPyQt5.cmake
+index b51fd0075e..87ee317e05 100644
+--- a/cmake/FindPyQt5.cmake
++++ b/cmake/FindPyQt5.cmake
+@@ -25,7 +25,7 @@ ELSE(EXISTS PYQT5_VERSION_STR)
+   IF(SIP_BUILD_EXECUTABLE)
+     # SIP >= 5.0 path
+ 
+-    FILE(GLOB _pyqt5_metadata "${Python_SITEARCH}/PyQt5-*.dist-info/METADATA")
++    FILE(GLOB _pyqt5_metadata "@pyQt5PackageDir@/PyQt5-*.dist-info/METADATA")
+     IF(_pyqt5_metadata)
+       FILE(READ ${_pyqt5_metadata} _pyqt5_metadata_contents)
+       STRING(REGEX REPLACE ".*\nVersion: ([^\n]+).*$" "\\1" PYQT5_VERSION_STR ${_pyqt5_metadata_contents})
+@@ -34,8 +34,8 @@ ELSE(EXISTS PYQT5_VERSION_STR)
+     ENDIF(_pyqt5_metadata)
+ 
+     IF(PYQT5_VERSION_STR)
+-      SET(PYQT5_MOD_DIR "${Python_SITEARCH}/PyQt5")
+-      SET(PYQT5_SIP_DIR "${Python_SITEARCH}/PyQt5/bindings")
++      SET(PYQT5_MOD_DIR "@pyQt5PackageDir@/PyQt5")
++      SET(PYQT5_SIP_DIR "@pyQt5PackageDir@/PyQt5/bindings")
+       FIND_PROGRAM(__pyuic5 "pyuic5")
+       GET_FILENAME_COMPONENT(PYQT5_BIN_DIR ${__pyuic5} DIRECTORY)
+ 
+diff --git a/cmake/FindQsci.cmake b/cmake/FindQsci.cmake
+index 69e41c1fe9..5456c3d59b 100644
+--- a/cmake/FindQsci.cmake
++++ b/cmake/FindQsci.cmake
+@@ -24,7 +24,7 @@ ELSE(QSCI_MOD_VERSION_STR)
+   IF(SIP_BUILD_EXECUTABLE)
+     # SIP >= 5.0 path
+ 
+-    FILE(GLOB _qsci_metadata "${Python_SITEARCH}/QScintilla*.dist-info/METADATA")
++    FILE(GLOB _qsci_metadata "@qsciPackageDir@/QScintilla*.dist-info/METADATA")
+     IF(_qsci_metadata)
+       FILE(READ ${_qsci_metadata} _qsci_metadata_contents)
+       STRING(REGEX REPLACE ".*\nVersion: ([^\n]+).*$" "\\1" QSCI_MOD_VERSION_STR ${_qsci_metadata_contents})
+@@ -33,7 +33,7 @@ ELSE(QSCI_MOD_VERSION_STR)
+     ENDIF(_qsci_metadata)
+ 
+     IF(QSCI_MOD_VERSION_STR)
+-      SET(QSCI_SIP_DIR "${PYQT5_SIP_DIR}")
++      SET(QSCI_SIP_DIR "@qsciPackageDir@/PyQt5/bindings")
+       SET(QSCI_FOUND TRUE)
+     ENDIF(QSCI_MOD_VERSION_STR)
+ 
+diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
+index 4cd19c3af4..668cc6a5e6 100644
+--- a/python/CMakeLists.txt
++++ b/python/CMakeLists.txt
+@@ -206,7 +206,7 @@ if (WITH_GUI)
+     install(FILES ${QGIS_PYTHON_OUTPUT_DIRECTORY}/_gui.pyi DESTINATION ${QGIS_PYTHON_DIR})
+   endif()
+   if(QSCI_SIP_DIR)
+-    set(SIP_EXTRA_OPTIONS ${SIP_EXTRA_OPTIONS} -I ${QSCI_SIP_DIR})
++    set(SIP_BUILD_EXTRA_OPTIONS ${SIP_BUILD_EXTRA_OPTIONS} --include-dir=${QSCI_SIP_DIR})
+   else()
+     message(STATUS "Qsci sip file not found - disabling bindings for derived classes")
+     set(SIP_DISABLE_FEATURES ${SIP_DISABLE_FEATURES} HAVE_QSCI_SIP)
diff --git a/nixpkgs/pkgs/applications/gis/qgis/set-pyqt-package-dirs.patch b/nixpkgs/pkgs/applications/gis/qgis/set-pyqt-package-dirs.patch
index 5553f80fbc5b..725c0b350e82 100644
--- a/nixpkgs/pkgs/applications/gis/qgis/set-pyqt-package-dirs.patch
+++ b/nixpkgs/pkgs/applications/gis/qgis/set-pyqt-package-dirs.patch
@@ -39,7 +39,7 @@ index 69e41c1fe9..5456c3d59b 100644
      ENDIF(_qsci_metadata)
  
      IF(QSCI_MOD_VERSION_STR)
--      SET(QSCI_SIP_DIR "${PYQT5_SIP_DIR}")
+-      SET(QSCI_SIP_DIR "${PYQT_SIP_DIR}")
 +      SET(QSCI_SIP_DIR "@qsciPackageDir@/PyQt5/bindings")
        SET(QSCI_FOUND TRUE)
      ENDIF(QSCI_MOD_VERSION_STR)
@@ -48,7 +48,7 @@ diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
 index 4cd19c3af4..668cc6a5e6 100644
 --- a/python/CMakeLists.txt
 +++ b/python/CMakeLists.txt
-@@ -206,7 +206,7 @@ if (WITH_GUI)
+@@ -212,7 +212,7 @@ if (WITH_GUI)
      install(FILES ${QGIS_PYTHON_OUTPUT_DIRECTORY}/_gui.pyi DESTINATION ${QGIS_PYTHON_DIR})
    endif()
    if(QSCI_SIP_DIR)
diff --git a/nixpkgs/pkgs/applications/gis/qgis/unwrapped-ltr.nix b/nixpkgs/pkgs/applications/gis/qgis/unwrapped-ltr.nix
index 1506f0bb9e28..71b0030dba78 100644
--- a/nixpkgs/pkgs/applications/gis/qgis/unwrapped-ltr.nix
+++ b/nixpkgs/pkgs/applications/gis/qgis/unwrapped-ltr.nix
@@ -1,45 +1,47 @@
 { lib
-, mkDerivation
 , fetchFromGitHub
+, makeWrapper
+, mkDerivation
+, substituteAll
+, wrapGAppsHook
+
+, withGrass ? true
+, withWebKit ? false
+
+, bison
 , cmake
-, ninja
+, exiv2
+, fcgi
 , flex
-, bison
-, proj
 , geos
-, sqlite
+, grass
 , gsl
-, qwt
-, fcgi
-, python3
+, hdf5
 , libspatialindex
 , libspatialite
-, postgresql
-, txt2tags
-, openssl
 , libzip
-, hdf5
 , netcdf
-, exiv2
+, ninja
+, openssl
+, pdal
+, postgresql
+, proj
 , protobuf
-, qtbase
-, qtsensors
+, python3
 , qca-qt5
-, qtkeychain
-, qt3d
 , qscintilla
+, qt3d
+, qtbase
+, qtkeychain
 , qtlocation
+, qtsensors
 , qtserialport
-, qtxmlpatterns
-, withGrass ? true
-, grass
-, withWebKit ? false
 , qtwebkit
-, pdal
+, qtxmlpatterns
+, qwt
+, sqlite
+, txt2tags
 , zstd
-, makeWrapper
-, wrapGAppsHook
-, substituteAll
 }:
 
 let
@@ -53,34 +55,34 @@ let
   };
 
   pythonBuildInputs = with py.pkgs; [
-    qscintilla-qt5
+    chardet
     gdal
     jinja2
     numpy
+    owslib
     psycopg2
-    chardet
+    pygments
+    pyqt-builder
+    pyqt5
     python-dateutil
-    pyyaml
     pytz
+    pyyaml
+    qscintilla-qt5
     requests
-    urllib3
-    pygments
-    pyqt5
-    pyqt-builder
-    sip
     setuptools
-    owslib
+    sip
     six
+    urllib3
   ];
 in mkDerivation rec {
-  version = "3.28.7";
+  version = "3.28.10";
   pname = "qgis-ltr-unwrapped";
 
   src = fetchFromGitHub {
     owner = "qgis";
     repo = "QGIS";
     rev = "final-${lib.replaceStrings [ "." ] [ "_" ] version}";
-    hash = "sha256-RWQ3RlE8fPMuDGosxKNVgbjRTigZRolqNyaJoC1xdec=";
+    hash = "sha256-5TGcXYfOJonpqecV59dhFcl4rNXbBSofdoTz5o5FFcc=";
   };
 
   passthru = {
@@ -88,6 +90,16 @@ in mkDerivation rec {
     inherit py;
   };
 
+  nativeBuildInputs = [
+    makeWrapper
+    wrapGAppsHook
+
+    bison
+    cmake
+    flex
+    ninja
+  ];
+
   buildInputs = [
     openssl
     proj
@@ -120,11 +132,9 @@ in mkDerivation rec {
     ++ lib.optional withWebKit qtwebkit
     ++ pythonBuildInputs;
 
-  nativeBuildInputs = [ makeWrapper wrapGAppsHook cmake flex bison ninja ];
-
   patches = [
     (substituteAll {
-      src = ./set-pyqt-package-dirs.patch;
+      src = ./set-pyqt-package-dirs-ltr.patch;
       pyQt5PackageDir = "${py.pkgs.pyqt5}/${py.pkgs.python.sitePackages}";
       qsciPackageDir = "${py.pkgs.qscintilla-qt5}/${py.pkgs.python.sitePackages}";
     })
@@ -133,6 +143,7 @@ in mkDerivation rec {
   cmakeFlags = [
     "-DWITH_3D=True"
     "-DWITH_PDAL=TRUE"
+    "-DENABLE_TESTS=False"
   ] ++ lib.optional (!withWebKit) "-DWITH_QTWEBKIT=OFF"
     ++ lib.optional withGrass (let
         gmajor = lib.versions.major grass.version;
@@ -143,10 +154,10 @@ in mkDerivation rec {
   dontWrapGApps = true; # wrapper params passed below
 
   postFixup = lib.optionalString withGrass ''
-    # grass has to be availble on the command line even though we baked in
+    # GRASS has to be availble on the command line even though we baked in
     # the path at build time using GRASS_PREFIX.
-    # using wrapGAppsHook also prevents file dialogs from crashing the program
-    # on non-NixOS
+    # Using wrapGAppsHook also prevents file dialogs from crashing the program
+    # on non-NixOS.
     wrapProgram $out/bin/qgis \
       "''${gappsWrapperArgs[@]}" \
       --prefix PATH : ${lib.makeBinPath [ grass ]}
diff --git a/nixpkgs/pkgs/applications/gis/qgis/unwrapped.nix b/nixpkgs/pkgs/applications/gis/qgis/unwrapped.nix
index c2d51f5b9817..46fe2e333e65 100644
--- a/nixpkgs/pkgs/applications/gis/qgis/unwrapped.nix
+++ b/nixpkgs/pkgs/applications/gis/qgis/unwrapped.nix
@@ -1,49 +1,52 @@
 { lib
-, mkDerivation
 , fetchFromGitHub
+, makeWrapper
+, mkDerivation
+, substituteAll
+, wrapGAppsHook
+, wrapQtAppsHook
+
+, withGrass ? true
+, withWebKit ? false
+
+, bison
 , cmake
-, ninja
+, exiv2
+, fcgi
 , flex
-, bison
-, proj
 , geos
-, sqlite
+, grass
 , gsl
-, qwt
-, fcgi
-, python3
+, hdf5
 , libspatialindex
 , libspatialite
-, postgresql
-, txt2tags
-, openssl
 , libzip
-, hdf5
 , netcdf
-, exiv2
+, ninja
+, openssl
+, pdal
+, postgresql
+, proj
 , protobuf
-, qtbase
-, qtsensors
+, python3
 , qca-qt5
-, qtkeychain
-, qt3d
 , qscintilla
+, qt3d
+, qtbase
+, qtkeychain
 , qtlocation
+, qtmultimedia
+, qtsensors
 , qtserialport
-, qtxmlpatterns
-, withGrass ? true
-, grass
-, withWebKit ? false
 , qtwebkit
-, pdal
+, qtxmlpatterns
+, qwt
+, sqlite
+, txt2tags
 , zstd
-, makeWrapper
-, wrapGAppsHook
-, substituteAll
 }:
 
 let
-
   py = python3.override {
     packageOverrides = self: super: {
       pyqt5 = super.pyqt5.override {
@@ -53,34 +56,34 @@ let
   };
 
   pythonBuildInputs = with py.pkgs; [
-    qscintilla-qt5
+    chardet
     gdal
     jinja2
     numpy
+    owslib
     psycopg2
-    chardet
+    pygments
+    pyqt-builder
+    pyqt5
     python-dateutil
-    pyyaml
     pytz
+    pyyaml
+    qscintilla-qt5
     requests
-    urllib3
-    pygments
-    pyqt5
-    pyqt-builder
-    sip
     setuptools
-    owslib
+    sip
     six
+    urllib3
   ];
 in mkDerivation rec {
-  version = "3.28.3";
+  version = "3.32.2";
   pname = "qgis-unwrapped";
 
   src = fetchFromGitHub {
     owner = "qgis";
     repo = "QGIS";
     rev = "final-${lib.replaceStrings [ "." ] [ "_" ] version}";
-    hash = "sha256-nXauZSC78BX1fcx0SXniwQpRmdSLfoqZ5jlbXeHgRGI=";
+    hash = "sha256-4Hcppzgst6v7SR/06ZICSujC4Gfckd/X5Mj40fh9OOU=";
   };
 
   passthru = {
@@ -88,40 +91,50 @@ in mkDerivation rec {
     inherit py;
   };
 
+  nativeBuildInputs = [
+    makeWrapper
+    wrapGAppsHook
+    wrapQtAppsHook
+
+    cmake
+    flex
+    bison
+    ninja
+  ];
+
   buildInputs = [
-    openssl
-    proj
-    geos
-    sqlite
-    gsl
-    qwt
     exiv2
-    protobuf
     fcgi
+    geos
+    gsl
+    hdf5
     libspatialindex
     libspatialite
-    postgresql
-    txt2tags
     libzip
-    hdf5
     netcdf
-    qtbase
-    qtsensors
+    openssl
+    pdal
+    postgresql
+    proj
+    protobuf
     qca-qt5
-    qtkeychain
     qscintilla
+    qt3d
+    qtbase
+    qtkeychain
     qtlocation
+    qtmultimedia
+    qtsensors
     qtserialport
     qtxmlpatterns
-    qt3d
-    pdal
+    qwt
+    sqlite
+    txt2tags
     zstd
   ] ++ lib.optional withGrass grass
     ++ lib.optional withWebKit qtwebkit
     ++ pythonBuildInputs;
 
-  nativeBuildInputs = [ makeWrapper wrapGAppsHook cmake flex bison ninja ];
-
   patches = [
     (substituteAll {
       src = ./set-pyqt-package-dirs.patch;
@@ -130,9 +143,16 @@ in mkDerivation rec {
     })
   ];
 
+  # Add path to Qt platform plugins
+  # (offscreen is needed by "${APIS_SRC_DIR}/generate_console_pap.py")
+  preBuild = ''
+    export QT_QPA_PLATFORM_PLUGIN_PATH=${qtbase.bin}/lib/qt-${qtbase.version}/plugins/platforms
+  '';
+
   cmakeFlags = [
     "-DWITH_3D=True"
     "-DWITH_PDAL=TRUE"
+    "-DENABLE_TESTS=False"
   ] ++ lib.optional (!withWebKit) "-DWITH_QTWEBKIT=OFF"
     ++ lib.optional withGrass (let
         gmajor = lib.versions.major grass.version;
@@ -140,13 +160,17 @@ in mkDerivation rec {
       in "-DGRASS_PREFIX${gmajor}=${grass}/grass${gmajor}${gminor}"
     );
 
+  qtWrapperArgs = [
+    "--set QT_QPA_PLATFORM_PLUGIN_PATH ${qtbase.bin}/lib/qt-${qtbase.version}/plugins/platforms"
+  ];
+
   dontWrapGApps = true; # wrapper params passed below
 
   postFixup = lib.optionalString withGrass ''
-    # grass has to be availble on the command line even though we baked in
+    # GRASS has to be availble on the command line even though we baked in
     # the path at build time using GRASS_PREFIX.
-    # using wrapGAppsHook also prevents file dialogs from crashing the program
-    # on non-NixOS
+    # Using wrapGAppsHook also prevents file dialogs from crashing the program
+    # on non-NixOS.
     wrapProgram $out/bin/qgis \
       "''${gappsWrapperArgs[@]}" \
       --prefix PATH : ${lib.makeBinPath [ grass ]}