diff options
Diffstat (limited to 'nixpkgs/pkgs/applications/gis/qgis')
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 ]} |