about summary refs log tree commit diff
path: root/pkgs/applications/gis
diff options
context:
space:
mode:
authorgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>2023-08-26 12:01:05 +0000
committerGitHub <noreply@github.com>2023-08-26 12:01:05 +0000
commit4cdbb53d13d08b544a7928e55c1c76308e3ca3f1 (patch)
treebc5be550e9b4b8dedd0065bf5ff823d7620562ee /pkgs/applications/gis
parent7acb56e8022b7299d8d64f0eae9bef2143486f7f (diff)
parent31dc5e9564fe20ece88000d2298d03dddbcee9bb (diff)
Merge master into staging-next
Diffstat (limited to 'pkgs/applications/gis')
-rw-r--r--pkgs/applications/gis/qgis/set-pyqt-package-dirs-ltr.patch59
-rw-r--r--pkgs/applications/gis/qgis/set-pyqt-package-dirs.patch4
-rw-r--r--pkgs/applications/gis/qgis/unwrapped-ltr.nix2
-rw-r--r--pkgs/applications/gis/qgis/unwrapped.nix137
4 files changed, 142 insertions, 60 deletions
diff --git a/pkgs/applications/gis/qgis/set-pyqt-package-dirs-ltr.patch b/pkgs/applications/gis/qgis/set-pyqt-package-dirs-ltr.patch
new file mode 100644
index 0000000000000..5553f80fbc5b0
--- /dev/null
+++ b/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/pkgs/applications/gis/qgis/set-pyqt-package-dirs.patch b/pkgs/applications/gis/qgis/set-pyqt-package-dirs.patch
index 5553f80fbc5b0..725c0b350e824 100644
--- a/pkgs/applications/gis/qgis/set-pyqt-package-dirs.patch
+++ b/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/pkgs/applications/gis/qgis/unwrapped-ltr.nix b/pkgs/applications/gis/qgis/unwrapped-ltr.nix
index 1506f0bb9e28a..b69078afe3148 100644
--- a/pkgs/applications/gis/qgis/unwrapped-ltr.nix
+++ b/pkgs/applications/gis/qgis/unwrapped-ltr.nix
@@ -124,7 +124,7 @@ in mkDerivation rec {
 
   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}";
     })
diff --git a/pkgs/applications/gis/qgis/unwrapped.nix b/pkgs/applications/gis/qgis/unwrapped.nix
index c2d51f5b9817a..f388284240bf0 100644
--- a/pkgs/applications/gis/qgis/unwrapped.nix
+++ b/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,6 +143,12 @@ 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"
@@ -140,13 +159,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 ]}