fix_qgis_build_with_pysip5 (#39941)

* fix_qgis_build_with_pysip5

* build fails with newer protobuf

* somehow findgdal can figure this out.

* Update var/spack/repos/builtin/packages/qgis/package.py

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* fix gdal lib again

* qgis needs QtPositioning provided by qt+location option

* fix FindPyQt5 cmake file

* fix bug

* fix qsci sip issue

* fix bug

* blackify

* improve

* add latest LTR

* add build dep

* revert until bug is fixed

* specify proj version for qgis 3.28

* improve gdal libs search via indicating gdal-config

* make flake happy

* improve deps

* add 3.28.11, improve style

* fix style

* [@spackbot] updating style on behalf of Sinan81

---------

Co-authored-by: Sinan81 <Sinan@world>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Sinan81 <Sinan81@users.noreply.github.com>
This commit is contained in:
Sinan 2023-10-03 12:21:51 -07:00 committed by GitHub
parent 86d2e1af97
commit 58017f484c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -17,15 +17,18 @@ class Qgis(CMakePackage):
maintainers("adamjstewart", "Sinan81")
version("3.28.3", sha256="a09124f46465a520f6d735306ba3954c339b84aa396d6f52b476b82edcc4fe0e")
# Prefer latest long term release
version(
"3.22.16",
sha256="dbd1f8a639291bb2492eea61e4ef96079d7b27d3dfa538dab8cd98f31429254a",
"3.28.11",
sha256="c5eb703893c7f98de051c45d677c4a34b40f986db51782a4930ddefad4e193b4",
preferred=True,
)
version("3.28.10", sha256="cff867e97909bbc2facce6343770dcb1b61fc6e4855f57783e30bf63d51c5218")
version("3.28.3", sha256="a09124f46465a520f6d735306ba3954c339b84aa396d6f52b476b82edcc4fe0e")
version("3.22.16", sha256="dbd1f8a639291bb2492eea61e4ef96079d7b27d3dfa538dab8cd98f31429254a")
version("3.22.0", sha256="cf0c169863f332aab67d8c4943e14b73a564f0254bf54015f5826c6427e6785b")
version("3.18.2", sha256="1913e4d5596bbc8b7d143f3defb18bf376f750a71f334f69d76af5deca7ecc5d")
version("3.16.16", sha256="ccd2f404534fcb00b5e17863375462090c9575e68b32ce50b2e7e925d1e01a49")
version("3.16.12", sha256="65e9634b5c885c98f3555cf77bc2e3fae5e19279aa17e3f6626ff5d7455fd2b9")
version("3.16.5", sha256="525f469ad6e40dd7a8f09ebab5eb6a2dffc45939b99b7d937750cc04ed78d61c")
version("3.14.16", sha256="c9915c2e577f1812a2b35b678b123c58407e07824d73e5ec0dda13db7ca75c04")
@ -110,9 +113,12 @@ class Qgis(CMakePackage):
depends_on("proj@4.4.0:")
depends_on("proj@4.9.3:", when="@3.8.2:")
depends_on("proj@7.2:", when="@3.28:")
depends_on("proj@:8", when="@3.28") # build fails with proj@9
depends_on("py-psycopg2", type=("build", "run")) # TODO: is build dependency necessary?
depends_on("py-pyqt4", when="@2")
depends_on("py-pyqt5@5.3:", when="@3")
depends_on("py-sip", type="build")
depends_on("py-pyqt-builder", type="build", when="^py-sip@5:")
depends_on("py-requests", type=("build", "run")) # TODO: is build dependency necessary?
depends_on("python@3.0.0:", type=("build", "run"), when="@3")
depends_on("python@3.6:", type=("build", "run"), when="@3.18:")
@ -120,14 +126,15 @@ class Qgis(CMakePackage):
depends_on("qca@2.2.1:")
depends_on("qjson")
depends_on("qscintilla +python")
depends_on("qt+dbus")
depends_on("qt+dbus@5.12.0:", when="@3.20:")
depends_on("qt+dbus@5.14.0:", when="@3.28:")
depends_on("qt+dbus+location")
depends_on("qt+dbus+location@5.12.0:", when="@3.20:")
depends_on("qt+dbus+location@5.14.0:", when="@3.28:")
depends_on("qtkeychain@0.5:", when="@3:")
depends_on("qwt@5:")
depends_on("qwtpolar")
depends_on("sqlite@3.0.0: +column_metadata")
depends_on("protobuf", when="@3.16.4:")
depends_on("protobuf@:3.21", when="@:3.28")
depends_on("zstd", when="@3.22:")
# Runtime python dependencies, not mentioned in install instructions
@ -163,8 +170,38 @@ class Qgis(CMakePackage):
depends_on("qt@:4", when="@2")
patch("pyqt5.patch", when="@:3.14 ^qt@5")
patch("pyqt5_3165x.patch", when="@3.16.5:3.21 ^qt@5")
patch("pyqt5_322x.patch", when="@3.22: ^qt@5")
patch("pyqt5_3165x.patch", when="@3.16.5:3.21 ^qt@5 ^py-sip@4")
patch("pyqt5_322x.patch", when="@3.22: ^qt@5 ^py-sip@4")
@run_before("cmake", when="^py-pyqt5")
def fix_pyqt5_cmake(self):
cmfile = FileFilter(join_path("cmake", "FindPyQt5.cmake"))
pyqtpath = join_path(
self.spec["py-pyqt5"].prefix, self.spec["python"].package.platlib, "PyQt5"
)
cmfile.filter(
'SET(PYQT5_MOD_DIR "${Python_SITEARCH}/PyQt5")',
'SET(PYQT5_MOD_DIR "' + pyqtpath + '")',
string=True,
)
cmfile.filter(
'SET(PYQT5_SIP_DIR "${Python_SITEARCH}/PyQt5/bindings")',
'SET(PYQT5_SIP_DIR "' + pyqtpath + '/bindings")',
string=True,
)
@run_before("build")
def fix_qsci_sip(self):
if "^py-pyqt5" in self.spec:
pyqtx = "PyQt5"
elif "^py-pyqt6" in self.spec:
pyqtx = "PyQt6"
sip_inc_dir = join_path(
self.spec["qscintilla"].prefix, self.spec["python"].package.platlib, pyqtx, "bindings"
)
with open(join_path("python", "gui", "pyproject.toml.in"), "a") as tomlfile:
tomlfile.write(f'\n[tool.sip.project]\nsip-include-dirs = ["{sip_inc_dir}"]\n')
def cmake_args(self):
spec = self.spec
@ -185,6 +222,7 @@ def cmake_args(self):
"-DLIBZIP_INCLUDE_DIR=" + self.spec["libzip"].prefix.include,
"-DLIBZIP_CONF_INCLUDE_DIR=" + self.spec["libzip"].prefix.lib.libzip.include,
"-DGDAL_CONFIG_PREFER_PATH=" + self.spec["gdal"].prefix.bin,
"-DGDAL_CONFIG=" + join_path(self.spec["gdal"].prefix.bin, "gdal-config"),
"-DGEOS_CONFIG_PREFER_PATH=" + self.spec["geos"].prefix.bin,
"-DGSL_CONFIG_PREFER_PATH=" + self.spec["gsl"].prefix.bin,
"-DPOSTGRES_CONFIG_PREFER_PATH=" + self.spec["postgresql"].prefix.bin,