<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/41a01a9fd31253c141116fb167416b64a478fecb">https://github.com/macports/macports-ports/commit/41a01a9fd31253c141116fb167416b64a478fecb</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 41a01a9fd31253c141116fb167416b64a478fecb
</span>Author: nilason <n_larsson@yahoo.com>
AuthorDate: Fri Sep 1 20:07:43 2023 +0200

<span style='display:block; white-space:pre;color:#404040;'>    qgis3[-ltr]: general overhaul and bug fixes
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Notable changes:
</span><span style='display:block; white-space:pre;color:#404040;'>    - Find out path to "mpi.h" for building against 'gdal +hdf5' (and remove mpi port group dependence)
</span><span style='display:block; white-space:pre;color:#404040;'>    - Prettify PostgreSQL variant descriptions by removing dot in versions 10+
</span><span style='display:block; white-space:pre;color:#404040;'>    - Fix flawed implementation of  the `+python_support` variant
</span><span style='display:block; white-space:pre;color:#404040;'>    - Fix failure to install grass dependency
</span><span style='display:block; white-space:pre;color:#404040;'>    - Add note on plugin "missing PyQt5.QtWebKit module" error warning
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/67842
</span><span style='display:block; white-space:pre;color:#404040;'>    See: https://trac.macports.org/ticket/68006
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/68016
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/68081
</span>---
 gis/qgis3/Portfile | 270 ++++++++++++++++++++++++++++++-----------------------
 1 file changed, 152 insertions(+), 118 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/gis/qgis3/Portfile b/gis/qgis3/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 6d7c437847b..c6a2ba69448 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/gis/qgis3/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/gis/qgis3/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -27,7 +27,7 @@ subport ${name-ltr} {}
</span> if {${subport} eq ${name}} {
     # Latest version
     github.setup    qgis QGIS 3_32_2 final-
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        1
</span>     conflicts       ${name-ltr}
 
     checksums       rmd160  ddfec56299bc5bcd2bd574533daeab5db2e5978b \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -36,7 +36,7 @@ if {${subport} eq ${name}} {
</span> } else {
     # LTR version
     github.setup    qgis QGIS 3_28_10 final-
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    revision        0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    revision        1
</span>     conflicts       ${name}
     description     {*}${description} (LTR)
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -112,22 +112,24 @@ post-patch {
</span> 
 cmake.install_prefix    ${applications_dir}
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#HD5/MPI related things
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {![catch {set result [active_variants hdf5 mpich]}]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {$result} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        PortGroup           mpi 1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        mpi.setup
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        mpi.enforce_variant hdf5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {![catch {set result [active_variants hdf5 openmpi]}]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {$result} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        PortGroup           mpi 1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        mpi.setup
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        mpi.enforce_variant openmpi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+pre-configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # If GDAL is built with +hdf5 variant, QGIS needs to know the path to "mpi.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[active_variants gdal hdf5]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Figure out HDF5's mpi include directory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set mpl_include_dir ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {![catch {set result [active_variants hdf5 openmpi]}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {$result} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set mpl_include_dir "-I${prefix}/include/openmpi-mp"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {![catch {set result [active_variants hdf5 mpich]}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {$result} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set mpl_include_dir "-I${prefix}/include/mpich-mp"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {$mpl_include_dir ne ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            configure.cxxflags-append ${mpl_include_dir}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span>     }
 }
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -169,7 +171,6 @@ variant server description "Builds with the server (FCGI) option" {
</span>     configure.args-replace  -DWITH_SERVER=OFF -DWITH_SERVER=ON
 }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> # PostgreSQL variants (from the GDAL port)
 set postgresql_suffixes {15 14 13 12 11 10 95 96}
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -180,7 +181,8 @@ foreach suffix ${postgresql_suffixes} {
</span> 
 foreach suffix ${postgresql_suffixes} {
     set vrt postgresql${suffix}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    set pgversion [string index ${suffix} 0].[string index ${suffix} 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set dot [expr {[string index ${suffix} 0] eq "9"} ? {"."} : {""}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set pgversion [string index ${suffix} 0]${dot}[string index ${suffix} 1]
</span>     set index [lsearch -exact ${postgresql_variants} ${vrt}]
     set conf [lreplace ${postgresql_variants} ${index} ${index}]
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -208,9 +210,11 @@ eval ${pgdefault}
</span> 
 set python_suffixes {37 38 39 310 311}
 set python_variants {}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+set plugin_variants {}
</span> 
 foreach pyver ${python_suffixes} {
     lappend python_variants python${pyver}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    lappend plugin_variants plugin_support${pyver}
</span> }
 
 foreach pyver ${python_suffixes} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -219,102 +223,122 @@ foreach pyver ${python_suffixes} {
</span>     set index [lsearch -exact ${python_variants} ${vrt}]
     set conf [lreplace ${python_variants} ${index} ${index}]
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        variant ${vrt} description "Use Python ${pyversion}" conflicts {*}${conf} "
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            depends_lib-append      port:python${pyver} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-pyqt5 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-pyqt5-scintilla \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-gdal \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-six \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-protobuf3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            depends_build-append    port:py${pyver}-pyqt-builder \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    path:${frameworks_dir}/Python.framework/Versions/${pyversion}/bin/sip-build:py${pyver}-sip
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            depends_run-append      port:py${pyver}-psycopg2 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-requests \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-owslib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-yaml \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-jinja2 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-pygments
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            configure.env-append    PATH=${frameworks_dir}/Python.framework/Versions/${pyversion}/bin:$env(PATH)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            build.env-append        PATH=${frameworks_dir}/Python.framework/Versions/${pyversion}/bin:$env(PATH)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            destroot.env-append     PATH=${frameworks_dir}/Python.framework/Versions/${pyversion}/bin:$env(PATH)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            configure.args-append   -DPython_EXECUTABLE=${prefix}/bin/python${pyversion}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            configure.args-append   -DWITH_BINDINGS=ON
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            configure.args-append   -DPYUIC_PROGRAM=${prefix}/bin/pyuic5-${pyversion}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            configure.args-append   -DPYRCC_PROGRAM=${prefix}/bin/pyrcc5-${pyversion}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            configure.args-append   -DQSCI_SIP_DIR=${frameworks_dir}/Python.framework/Versions/${pyversion}/lib/python${pyversion}/site-packages/PyQt5/bindings
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            variant plugin_support description \"Add common Python modules for QGIS plugins\" {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                depends_run-append  port:py${pyver}-affine \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-cycler \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-dateutil \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-fiona \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-geojson \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-h5py \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-llvmlite \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-markupsafe \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-matplotlib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-netcdf4 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-numpy \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-opencv4 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-pandas \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-patsy \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-Pillow \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-plotly \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-psycopg2 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-pyproj \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-pysal \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-rasterio \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-requests \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-rsgislib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-rtree \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-scikit-learn \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-scipy \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-seaborn \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-shapely \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-sip \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-statsmodels \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    port:py${pyver}-termcolor
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    variant ${vrt} description "Use Python ${pyversion} bindings" conflicts {*}${conf} "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_lib-append      port:python${pyver} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                port:py${pyver}-pyqt5 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                port:py${pyver}-pyqt5-scintilla \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                port:py${pyver}-gdal \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                port:py${pyver}-six \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                port:py${pyver}-protobuf3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_build-append    port:py${pyver}-pyqt-builder \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                path:${frameworks_dir}/Python.framework/Versions/${pyversion}/bin/sip-build:py${pyver}-sip
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_run-append      port:py${pyver}-psycopg2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                port:py${pyver}-requests \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                port:py${pyver}-owslib \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                port:py${pyver}-yaml \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                port:py${pyver}-jinja2 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                port:py${pyver}-pygments
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.env-append    PATH=${frameworks_dir}/Python.framework/Versions/${pyversion}/bin:$env(PATH)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        build.env-append        PATH=${frameworks_dir}/Python.framework/Versions/${pyversion}/bin:$env(PATH)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        destroot.env-append     PATH=${frameworks_dir}/Python.framework/Versions/${pyversion}/bin:$env(PATH)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-append   -DPython_EXECUTABLE=${prefix}/bin/python${pyversion}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-append   -DWITH_BINDINGS=ON
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-append   -DPYUIC_PROGRAM=${prefix}/bin/pyuic5-${pyversion}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-append   -DPYRCC_PROGRAM=${prefix}/bin/pyrcc5-${pyversion}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-append   -DQSCI_SIP_DIR=${frameworks_dir}/Python.framework/Versions/${pyversion}/lib/python${pyversion}/site-packages/PyQt5/bindings
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # Complies with py-gdal layout
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set gdal_py_prefix \"${worksrcpath}/python/plugins/processing/algs/gdal\"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            foreach file    {\"AssignProjection\" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                             \"fillnodata\" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                             \"gdal2tiles\" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                             \"gdal2xyz\" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                             \"gdalcalc\" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                             \"merge\" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                             \"pansharp\" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                             \"pct2rgb\" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                             \"polygonize\" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                             \"proximity\" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                             \"retile\" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                             \"rgb2pct\" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                             \"sieve\" } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                reinplace -E \"s|else '.py'|else '.py-${pyversion}'|\" \${gdal_py_prefix}/\${file}.py
</span>             }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            default_variants +plugin_support
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            post-patch {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                # Complies with py-gdal layout
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set gdal_py_prefix \"${worksrcpath}/python/plugins/processing/algs/gdal\"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                foreach file    {\"AssignProjection\" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                 \"fillnodata\" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                 \"gdal2tiles\" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                 \"gdal2xyz\" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                 \"gdalcalc\" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                 \"merge\" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                 \"pansharp\" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                 \"pct2rgb\" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                 \"polygonize\" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                 \"proximity\" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                 \"retile\" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                 \"rgb2pct\" \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                 \"sieve\" } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    reinplace -E \"s|else '.py'|else '.py-${pyversion}'|\" \${gdal_py_prefix}/\${file}.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set vrt2 plugin_support${pyver}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set index2 [lsearch -exact ${plugin_variants} ${vrt2}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set conf2 [lreplace ${plugin_variants} ${index2} ${index2}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    variant ${vrt2} description "Add common Python ${pyversion} modules for QGIS plugins" conflicts {*}${conf2} "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_run-append  port:py${pyver}-affine \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-cycler \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-dateutil \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-fiona \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-geojson \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-h5py \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-llvmlite \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-markupsafe \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-matplotlib \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-numpy \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-opencv4 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-pandas \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-patsy \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-Pillow \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-plotly \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-pyproj \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-pysal \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-rasterio \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-rsgislib \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-rtree \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-scikit-learn \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-scipy \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-seaborn \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-shapely \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-sip \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-statsmodels \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:py${pyver}-termcolor
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    "
</span> }
 
 # Python default
 set python_default "if {"
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> foreach pyver ${python_suffixes} {
     set python_default "${python_default}!\[variant_isset python${pyver}\] && "
 }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> set python_default [string range ${python_default} 0 end-4]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set python_default "${python_default}} { default_variants +python311 }"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set python_default "${python_default}} { default_variants +python311 +plugin_support311}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+eval ${python_default}
</span> 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Python support default
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set python_default "if {"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+foreach pyver ${python_suffixes} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set python_default "${python_default}!\[variant_isset python${pyver}\] && "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set python_default [string range ${python_default} 0 end-4]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set python_default "${python_default}} { default_variants +python311 +plugin_support311}"
</span> eval ${python_default}
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Assert +pythonXY and +plugin_supportXY variants are in sync
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set supp_py_list [list]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set pyth_py_list [list]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+foreach pyver ${python_suffixes} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[variant_isset plugin_support${pyver}]} {lappend supp_py_list ${pyver}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[variant_isset python${pyver}]} {lappend pyth_py_list ${pyver}}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if { [expr ([llength $supp_py_list] > 0) && ([llength $pyth_py_list] > 0)] &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     [lindex $supp_py_list 0] != [lindex $pyth_py_list 0] } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         set pyv [lindex $pyth_py_list 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ui_error "${subport} +pythonXY and +plugin_supportXY variants must be in sync"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return -code error "Try running `port install ${subport} +python${pyv} +plugin_support${pyv}`"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # PROJ variants
 
 set proj_versions {6 7 8 9}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -327,12 +351,12 @@ foreach proj_ver ${proj_versions} {
</span>     set index [lsearch -exact ${proj_variants} proj${proj_ver}]
     set cflcts [lreplace ${proj_variants} ${index} ${index}]
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        variant proj${proj_ver} description "Use Proj${proj_ver}" conflicts {*}${cflcts} "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    variant proj${proj_ver} description "Use Proj${proj_ver}" conflicts {*}${cflcts} "
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            depends_lib-append      port:proj${proj_ver}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            configure.args-append   -DPROJ_INCLUDE_DIR=${prefix}/lib/proj${proj_ver}/include \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                                    -DPROJ_LIBRARY=${prefix}/lib/proj${proj_ver}/lib/libproj.dylib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        depends_lib-append      port:proj${proj_ver}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-append   -DPROJ_INCLUDE_DIR=${prefix}/lib/proj${proj_ver}/include \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                -DPROJ_LIBRARY=${prefix}/lib/proj${proj_ver}/lib/libproj.dylib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    "
</span> }
 
 set projdf "if {"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -346,28 +370,32 @@ eval ${projdf}
</span> # GRASS variants
 
 variant grass7 conflicts grass description "Build GRASS 7 plugin" {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_lib-append      port:grass7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_build-append    port:grass7
</span>     global grass_version
     set grass_version       78
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    set grass_gis_base      [exec ${prefix}/bin/grass${grass_version} --config path]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global grass_gis_base
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    pre-configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-replace  -DWITH_GRASS7=OFF -DWITH_GRASS7=ON
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-append   -DGRASS_PREFIX7=${grass_gis_base}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span>     post-patch {
         reinplace "s|command = None|command = '${prefix}/bin/grass${grass_version}'|g" \
             ${worksrcpath}/python/plugins/grassprovider/Grass7Utils.py
     }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-replace  -DWITH_GRASS7=OFF -DWITH_GRASS7=ON
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-append   -DGRASS_PREFIX7=${grass_gis_base}
</span> }
 
 variant grass conflicts grass7 description "Build GRASS (latest) plugin" {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_lib-append      port:grass
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set grass_gis_base      [exec ${prefix}/bin/grass --config path]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    depends_build-append    port:grass
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global grass_gis_base
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    pre-configure {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set grass_gis_base      [exec ${prefix}/bin/grass --config path]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-replace  -DWITH_GRASS8=OFF -DWITH_GRASS8=ON
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        configure.args-append   -DGRASS_PREFIX8=${grass_gis_base}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span>     post-patch {
         reinplace "s|command = None|command = '${prefix}/bin/grass'|g" \
             ${worksrcpath}/python/plugins/grassprovider/Grass7Utils.py
     }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-replace  -DWITH_GRASS8=OFF -DWITH_GRASS8=ON
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-append   -DGRASS_PREFIX8=${grass_gis_base}
</span> }
 
 # Configure steps
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -403,3 +431,9 @@ if {${subport} eq ${name-ltr}} {
</span>     livecheck.version ${version}
     livecheck.regex #QGIS Version \[0-9\]{5}|Visit https://download.qgis.org to get your copy of version (\[0-9.\]+)|<html><body>
 }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+notes-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    "Some QGIS plugins may fail with error message noting missing PyQt5.QtWebKit\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    module, this could be solved by manually installing the module with e.g.\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    `sudo port install py311-pyqt5 +webkit` (just make sure you use the same Python\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    version for py-pyqt5 as for the QGIS Python bindings)."
</span></pre><pre style='margin:0'>

</pre>