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

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/3d74dc855799921b0ef19ea278dabae4921e873d">https://github.com/macports/macports-ports/commit/3d74dc855799921b0ef19ea278dabae4921e873d</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 3d74dc855799921b0ef19ea278dabae4921e873d
</span>Author: Christopher Nielsen <mascguy@github.com>
AuthorDate: Wed Jan 27 17:32:16 2021 -0500

<span style='display:block; white-space:pre;color:#404040;'>    opencv3/opencv4: reduce path copy-paste in configure arguments; simplify via cmake portgroup when possible
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    See: https://trac.macports.org/ticket/62011
</span>---
 graphics/opencv3/Portfile | 114 +++++++++++++++++++++--------------
 graphics/opencv4/Portfile | 150 +++++++++++++++++++++++++++-------------------
 2 files changed, 158 insertions(+), 106 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/opencv3/Portfile b/graphics/opencv3/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 09723038d92..88380ac85b0 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/graphics/opencv3/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/graphics/opencv3/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -59,11 +59,14 @@ platform macosx {
</span> #
 # This is needed to support Python subports, whose names have no relation to
 # the actual physical file layout.
<span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# NOTE: Presently, 'parent_subport_name' matches 'name'. HOWEVER, this will
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#   change once the various OpenCV-related ports are merged.
</span> #------------------------------------------------------------------------------
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set physical_subport_name \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set parent_subport_name \
</span>                     ${name}
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-worksrcdir          ${physical_subport_name}-${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+worksrcdir          ${parent_subport_name}-${version}
</span> 
 compiler.cxx_standard \
                     2011
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -115,40 +118,61 @@ post-patch {
</span> #                     -DWITH_NVCUVID=OFF
 #                     -DCMAKE_VERBOSE=ON
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+#------------------------------------------------------------------------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# CMake Variables
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# When/if the CMake portgroup is extended to support more of these options,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# they can be replaced with those equivalents. For now, define them ahead of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# time, for later re-use.
</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;'>+# Define all of our base paths up-front
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set opencv_install_prefix \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${prefix}/libexec/${parent_subport_name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set opencv_install_cmake \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${opencv_install_prefix}/cmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set opencv_install_include \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${prefix}/include/${parent_subport_name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set opencv_install_lib \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${prefix}/lib/${parent_subport_name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Populate the few CMake options currently available
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# TODO: Extend CMake portgroup to support more paths
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cmake.install_prefix \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${opencv_install_prefix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cmake_share_module_dir \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${opencv_install_cmake}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cmake.install_rpath \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${opencv_install_lib}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> configure.args-append \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_RULE_MESSAGES=OFF \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_VERBOSE_MAKEFILE=ON \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    \
</span>                     -DENABLE_CONFIG_VERIFICATION=OFF \
                     \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_INSTALL_PREFIX=${prefix}/libexec/${physical_subport_name} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_CONFIG_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/cmake \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_BIN_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/bin \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_SETUPVARS_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/scripts \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_SBIN_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/sbin \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_JAR_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/java/jar \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_JNI_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/java/jni \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_JNI_BIN_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/java/jni \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_TEST_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/test/bin \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_TEST_DATA_PATH=${prefix}/libexec/${physical_subport_name}/test/data \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_SAMPLES_BIN_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/share/samples/bin \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_SAMPLES_SRC_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/share/samples/src \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_OTHER_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/share/data \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_DOC_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/share/doc \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_LICENSES_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/share/license \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_INCLUDE_INSTALL_PATH=${prefix}/include/${physical_subport_name} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_LIB_INSTALL_PATH=${prefix}/lib/${physical_subport_name} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_3P_LIB_INSTALL_PATH=${prefix}/lib/${physical_subport_name}/3rdparty \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_LIB_ARCHIVE_INSTALL_PATH=${prefix}/lib/${physical_subport_name}/static \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_BINARY_DIR=${prefix}/libexec/${physical_subport_name}/bin \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_INSTALL_LIBEXECDIR=${prefix}/libexec/${physical_subport_name} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_INSTALL_BINDIR=${prefix}/libexec/${physical_subport_name}/bin \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_INSTALL_SBINDIR=${prefix}/libexec/${physical_subport_name}/sbin \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_INSTALL_SHAREDIR=${prefix}/libexec/${physical_subport_name}/share \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_INSTALL_INCLUDEDIR=${prefix}/include/${physical_subport_name} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_INSTALL_LIBDIR=${prefix}/lib/${physical_subport_name} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_INSTALL_NAME_DIR=${prefix}/lib/${physical_subport_name} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_INSTALL_RPATH=${prefix}/lib/${physical_subport_name} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_CONFIG_INSTALL_PATH=${opencv_install_cmake} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_BIN_INSTALL_PATH=${opencv_install_prefix}/bin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_SETUPVARS_INSTALL_PATH=${opencv_install_prefix}/scripts \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_SBIN_INSTALL_PATH=${opencv_install_prefix}/sbin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_JAR_INSTALL_PATH=${opencv_install_prefix}/java/jar \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_JNI_INSTALL_PATH=${opencv_install_prefix}/java/jni \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_JNI_BIN_INSTALL_PATH=${opencv_install_prefix}/java/jni \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_TEST_INSTALL_PATH=${opencv_install_prefix}/test/bin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_TEST_DATA_PATH=${opencv_install_prefix}/test/data \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_SAMPLES_BIN_INSTALL_PATH=${opencv_install_prefix}/share/samples/bin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_SAMPLES_SRC_INSTALL_PATH=${opencv_install_prefix}/share/samples/src \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_OTHER_INSTALL_PATH=${opencv_install_prefix}/share/data \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_DOC_INSTALL_PATH=${opencv_install_prefix}/share/doc \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_LICENSES_INSTALL_PATH=${opencv_install_prefix}/share/license \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_INCLUDE_INSTALL_PATH=${opencv_install_include} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_LIB_INSTALL_PATH=${opencv_install_lib} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_3P_LIB_INSTALL_PATH=${opencv_install_lib}/3rdparty \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_LIB_ARCHIVE_INSTALL_PATH=${opencv_install_lib}/static \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCMAKE_INSTALL_LIBEXECDIR=${opencv_install_prefix} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCMAKE_INSTALL_BINDIR=${opencv_install_prefix}/bin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCMAKE_INSTALL_SBINDIR=${opencv_install_prefix}/sbin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCMAKE_INSTALL_SHAREDIR=${opencv_install_prefix}/share \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCMAKE_INSTALL_INCLUDEDIR=${opencv_install_include} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCMAKE_INSTALL_LIBDIR=${opencv_install_lib} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCMAKE_INSTALL_NAME_DIR=${opencv_install_lib} \
</span>                     \
                     -DWITH_1394=OFF \
                     -DWITH_CARBON=OFF \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -300,9 +324,9 @@ if {[variant_isset universal]} {
</span> 
 foreach python_branch {2.7} {
     set python_version [join [lrange [split ${python_branch} .] 0 1] ""]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    subport py${python_version}-${physical_subport_name} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    subport py${python_version}-${parent_subport_name} {
</span>         depends_lib-append \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:${physical_subport_name} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:${parent_subport_name} \
</span>                             port:python${python_version} \
                             port:py${python_version}-numpy
         configure.args-replace \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -324,7 +348,7 @@ foreach python_branch {2.7} {
</span>         # Deconflict with parent port contents
         post-destroot {
             ui_debug "${subport}: python subport: removing files unrelated to Python bindings"
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            foreach f [exec port contents ${physical_subport_name}] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            foreach f [exec port contents ${parent_subport_name}] {
</span>                 delete ${destroot}${f}
             }
         }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -334,9 +358,9 @@ foreach python_branch {2.7} {
</span> set python_branches {3.5 3.6 3.7 3.8 3.9}
 foreach python_branch ${python_branches} {
     set python_version [join [lrange [split ${python_branch} .] 0 1] ""]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    subport py${python_version}-${physical_subport_name} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    subport py${python_version}-${parent_subport_name} {
</span>         depends_lib-append \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                            port:${physical_subport_name} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            port:${parent_subport_name} \
</span>                             port:python${python_version} \
                             port:py${python_version}-numpy
         configure.args-replace \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -354,7 +378,7 @@ foreach python_branch ${python_branches} {
</span>         # Deconflict with parent port contents
         post-destroot {
             ui_debug "${subport}: python subport: removing files unrelated to Python bindings"
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            foreach f [exec port contents ${physical_subport_name}] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            foreach f [exec port contents ${parent_subport_name}] {
</span>                 delete ${destroot}${f}
             }
         }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -684,20 +708,20 @@ proc opencv_soft_link_binaries {p_bin_main_dir p_bin_port_dir p_destroot p_prefi
</span> proc opencv_post_destroot {} {
     global prefix
     global destroot
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    global physical_subport_name
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global parent_subport_name
</span> 
     # http://trac.macports.org/ticket/42702
     if {[variant_isset qt4] || [variant_isset qt5]} {
         reinplace "s|-L//System/Library/Frameworks ||g" \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            ${destroot}${prefix}/lib/${physical_subport_name}/pkgconfig/opencv.pc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ${destroot}${prefix}/lib/${parent_subport_name}/pkgconfig/opencv.pc
</span>         reinplace "s|-lOpenGL.framework|-framework OpenGL|g" \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            ${destroot}${prefix}/lib/${physical_subport_name}/pkgconfig/opencv.pc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ${destroot}${prefix}/lib/${parent_subport_name}/pkgconfig/opencv.pc
</span>     }
 
     set bin_main_dir \
         "${destroot}${prefix}/bin"
     set bin_port_dir \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        "${destroot}${prefix}/libexec/${physical_subport_name}/bin"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        "${destroot}${prefix}/libexec/${parent_subport_name}/bin"
</span> 
     # While the various configure-related options should catch everything, one or more
     # files may be missed. If so, ensure they're moved to the subport's bin area.
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -705,13 +729,13 @@ proc opencv_post_destroot {} {
</span>         ${bin_main_dir} \
         ${bin_port_dir}
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Create soft links for binaries, each prefixed with '<physical_subport_name>_'.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Create soft links for binaries, each prefixed with '<parent_subport_name>_'.
</span>     opencv_soft_link_binaries \
         ${bin_main_dir} \
         ${bin_port_dir} \
         ${destroot} \
         ${prefix} \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        ${physical_subport_name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ${parent_subport_name}
</span> }
 
 post-destroot {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/graphics/opencv4/Portfile b/graphics/opencv4/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 2fabd6b42ae..3fe107eea1d 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/graphics/opencv4/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/graphics/opencv4/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -44,35 +44,17 @@ checksums           ${distname}${extract.suffix} \
</span> #
 # This is needed to support Python subports, whose names have no relation to
 # the actual physical file layout.
<span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# NOTE: Presently, 'parent_subport_name' matches 'name'. HOWEVER, this will
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#   change once the various OpenCV-related ports are merged.
</span> #------------------------------------------------------------------------------
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set physical_subport_name \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set parent_subport_name \
</span>                     ${name}
 
 # recognize dylib as a valid library suffix
 patchfiles-append   patch-dylib_suffix.diff
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#worksrcdir          ${physical_subport_name}-${version}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# modify from _resources/port1.0/group/github-1.0.tcl to avoid file tag issue
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-proc move_gh_repo {repo_dir_patt new_name} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    global distfiles workpath worksrcpath
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {(![file exists ${worksrcpath}] || ![file exists ${workpath}/${new_name}]) && \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            [llength ${distfiles}] > 0 && \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            [llength [glob -nocomplain ${workpath}/*]] > 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        if {[file exists [glob -nocomplain ${workpath}/${repo_dir_patt}]] && \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            [file isdirectory [glob -nocomplain ${workpath}/${repo_dir_patt}]]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            move [glob ${workpath}/${repo_dir_patt}] ${workpath}/${new_name}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            # tarball is not "${repo_dir_patt}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            ui_error "\n\ngithub PortGroup: Error: \${worksrcpath} does not exist after extracting distfiles. This might indicate that the author or project is different than set in the Portfile due to a rename at GitHub. Please examine the extracted directory in ${workpath} and try to correct the Portfile by either changing the author or project or adding the worksrcdir option with the correct directory name.\n"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            return -code error "Unexpected github tarball extract."
</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;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-post-extract {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    move_gh_repo ${github.author}-${github.project}-* ${distname}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#worksrcdir          ${parent_subport_name}-${version}
</span> 
 compiler.cxx_standard \
                     2011
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -98,40 +80,61 @@ depends_lib-append  \
</span>                     port:ilmbase \
                     port:ade
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+#------------------------------------------------------------------------------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# CMake Variables
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# When/if the CMake portgroup is extended to support more of these options,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# they can be replaced with those equivalents. For now, define them ahead of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# time, for use by configure arguments.
</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;'>+# Define all of our base paths up-front
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set opencv_install_prefix \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${prefix}/libexec/${parent_subport_name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set opencv_install_cmake \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${opencv_install_prefix}/cmake
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set opencv_install_include \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${prefix}/include/${parent_subport_name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set opencv_install_lib \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${prefix}/lib/${parent_subport_name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Populate the few CMake options currently available
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# TODO: Extend CMake portgroup to support more paths
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cmake.install_prefix \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${opencv_install_prefix}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cmake_share_module_dir \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${opencv_install_cmake}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+cmake.install_rpath \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${opencv_install_lib}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> configure.args-append \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_RULE_MESSAGES:BOOL=OFF \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    \
</span>                     -DENABLE_CONFIG_VERIFICATION:BOOL=OFF \
                     \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_INSTALL_PREFIX=${prefix}/libexec/${physical_subport_name} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_CONFIG_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/cmake \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_BIN_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/bin \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_SETUPVARS_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/scripts \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_SBIN_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/sbin \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_JAR_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/java/jar \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_JNI_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/java/jni \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_JNI_BIN_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/java/jni \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_TEST_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/test/bin \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_TEST_DATA_PATH=${prefix}/libexec/${physical_subport_name}/test/data \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_SAMPLES_BIN_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/share/samples/bin \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_SAMPLES_SRC_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/share/samples/src \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_OTHER_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/share/data \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_DOC_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/share/doc \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_LICENSES_INSTALL_PATH=${prefix}/libexec/${physical_subport_name}/share/license \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_INCLUDE_INSTALL_PATH=${prefix}/include/${physical_subport_name} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_LIB_INSTALL_PATH=${prefix}/lib/${physical_subport_name} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_3P_LIB_INSTALL_PATH=${prefix}/lib/${physical_subport_name}/3rdparty \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DOPENCV_LIB_ARCHIVE_INSTALL_PATH=${prefix}/lib/${physical_subport_name}/static \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_BINARY_DIR=${prefix}/libexec/${physical_subport_name}/bin \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_INSTALL_LIBEXECDIR=${prefix}/libexec/${physical_subport_name} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_INSTALL_BINDIR=${prefix}/libexec/${physical_subport_name}/bin \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_INSTALL_SBINDIR=${prefix}/libexec/${physical_subport_name}/sbin \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_INSTALL_SHAREDIR=${prefix}/libexec/${physical_subport_name}/share \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_INSTALL_INCLUDEDIR=${prefix}/include/${physical_subport_name} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_INSTALL_LIBDIR=${prefix}/lib/${physical_subport_name} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_INSTALL_NAME_DIR=${prefix}/lib/${physical_subport_name} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    -DCMAKE_INSTALL_RPATH=${prefix}/lib/${physical_subport_name} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_CONFIG_INSTALL_PATH=${opencv_install_cmake} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_BIN_INSTALL_PATH=${opencv_install_prefix}/bin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_SETUPVARS_INSTALL_PATH=${opencv_install_prefix}/scripts \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_SBIN_INSTALL_PATH=${opencv_install_prefix}/sbin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_JAR_INSTALL_PATH=${opencv_install_prefix}/java/jar \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_JNI_INSTALL_PATH=${opencv_install_prefix}/java/jni \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_JNI_BIN_INSTALL_PATH=${opencv_install_prefix}/java/jni \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_TEST_INSTALL_PATH=${opencv_install_prefix}/test/bin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_TEST_DATA_PATH=${opencv_install_prefix}/test/data \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_SAMPLES_BIN_INSTALL_PATH=${opencv_install_prefix}/share/samples/bin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_SAMPLES_SRC_INSTALL_PATH=${opencv_install_prefix}/share/samples/src \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_OTHER_INSTALL_PATH=${opencv_install_prefix}/share/data \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_DOC_INSTALL_PATH=${opencv_install_prefix}/share/doc \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_LICENSES_INSTALL_PATH=${opencv_install_prefix}/share/license \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_INCLUDE_INSTALL_PATH=${opencv_install_include} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_LIB_INSTALL_PATH=${opencv_install_lib} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_3P_LIB_INSTALL_PATH=${opencv_install_lib}/3rdparty \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DOPENCV_LIB_ARCHIVE_INSTALL_PATH=${opencv_install_lib}/static \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCMAKE_INSTALL_LIBEXECDIR=${opencv_install_prefix} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCMAKE_INSTALL_BINDIR=${opencv_install_prefix}/bin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCMAKE_INSTALL_SBINDIR=${opencv_install_prefix}/sbin \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCMAKE_INSTALL_SHAREDIR=${opencv_install_prefix}/share \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCMAKE_INSTALL_INCLUDEDIR=${opencv_install_include} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCMAKE_INSTALL_LIBDIR=${opencv_install_lib} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DCMAKE_INSTALL_NAME_DIR=${opencv_install_lib} \
</span>                     \
                     -DWITH_ADE:BOOL=ON \
                     -Dade_DIR:PATH=${prefix}/share/ade/ \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -273,9 +276,9 @@ platform darwin {
</span> set python_branches {3.5 3.6 3.7 3.8 3.9}
 foreach python_branch ${python_branches} {
     set python_version [join [lrange [split ${python_branch} .] 0 1] ""]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    subport py${python_version}-${physical_subport_name} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    subport py${python_version}-${parent_subport_name} {
</span>         depends_lib-append \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:${physical_subport_name} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:${parent_subport_name} \
</span>                     port:python${python_version} \
                     port:py${python_version}-numpy
         configure.args-replace \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -296,7 +299,7 @@ foreach python_branch ${python_branches} {
</span>         # Deconflict with parent port contents
         post-destroot {
             ui_debug "${subport}: python subport: removing files unrelated to Python bindings"
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            foreach f [exec port contents ${physical_subport_name}] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            foreach f [exec port contents ${parent_subport_name}] {
</span>                 delete ${destroot}${f}
             }
         }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -518,12 +521,12 @@ proc opencv_soft_link_binaries {p_bin_main_dir p_bin_port_dir p_destroot p_prefi
</span> proc opencv_post_destroot {} {
     global prefix
     global destroot
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    global physical_subport_name
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global parent_subport_name
</span> 
     set bin_main_dir \
                     "${destroot}${prefix}/bin"
     set bin_port_dir \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    "${destroot}${prefix}/libexec/${physical_subport_name}/bin"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    "${destroot}${prefix}/libexec/${parent_subport_name}/bin"
</span> 
     # While the various configure-related options should catch everything, one or more
     # files may be missed. If so, ensure they're moved to the opencv4 bin area.
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -531,13 +534,38 @@ proc opencv_post_destroot {} {
</span>                     ${bin_main_dir} \
                     ${bin_port_dir}
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Create soft links for binaries, each prefixed with '<physical_subport_name>_'.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Create soft links for binaries, each prefixed with '<parent_subport_name>_'.
</span>     opencv_soft_link_binaries \
                     ${bin_main_dir} \
                     ${bin_port_dir} \
                     ${destroot} \
                     ${prefix} \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    ${physical_subport_name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${parent_subport_name}
</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;'>+# modify from _resources/port1.0/group/github-1.0.tcl to avoid file tag issue
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc move_gh_repo {repo_dir_patt new_name} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global distfiles workpath worksrcpath
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {(![file exists ${worksrcpath}] || ![file exists ${workpath}/${new_name}]) && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            [llength ${distfiles}] > 0 && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            [llength [glob -nocomplain ${workpath}/*]] > 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {[file exists [glob -nocomplain ${workpath}/${repo_dir_patt}]] && \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            [file isdirectory [glob -nocomplain ${workpath}/${repo_dir_patt}]]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            move [glob ${workpath}/${repo_dir_patt}] ${workpath}/${new_name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # tarball is not "${repo_dir_patt}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ui_error "\n\nGitHub Extract Error: \${worksrcpath} does not exist after extracting\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                distfiles. This might indicate that the author or project is different than set\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                in the Portfile due to a rename at GitHub. Please examine the extracted directory\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                in ${workpath} and try to correct the Portfile by either changing the author or\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                project or adding the worksrcdir option with the correct directory name.\n"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            return -code error "Unexpected github tarball extract."
</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;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-extract {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    move_gh_repo ${github.author}-${github.project}-* ${distname}
</span> }
 
 post-destroot {
</pre><pre style='margin:0'>

</pre>