<pre style='margin:0'>
Mohamed Akram (mohd-akram) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/766deec49aa7a8759c38d70e28ce3d55bfbab83c">https://github.com/macports/macports-ports/commit/766deec49aa7a8759c38d70e28ce3d55bfbab83c</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 766deec49aa samba4: update to 4.20.0
</span>766deec49aa is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 766deec49aa7a8759c38d70e28ce3d55bfbab83c
</span>Author: Mohamed Akram <makr@macports.org>
AuthorDate: Sat May 4 20:49:05 2024 +0400

<span style='display:block; white-space:pre;color:#404040;'>    samba4: update to 4.20.0
</span>---
 net/samba4/Portfile                       | 139 ++----------------------------
 net/samba4/files/patch-samba-install.diff |  27 ++++++
 2 files changed, 35 insertions(+), 131 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/samba4/Portfile b/net/samba4/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 9e2ff13cb85..b228e15801e 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/net/samba4/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/samba4/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -11,15 +11,15 @@ legacysupport.newest_darwin_requires_legacy 13
</span> 
 name                samba4
 conflicts           samba3
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version             4.19.4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             4.20.0
</span> revision            0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums           rmd160  ae0a4eb15880468f135d21c59b634d22cb39b6fc \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  4026d93b866db198c8ca1685b0f5d52793f65c6e63cb364163af661fdff0968c \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    41839810
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  bf61fb4a298bf55695d3f6ddccb97b608da06bba \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  02672542510ac6e5d0c91c0c14d90ab4e6ec397c709e952c6da3a6e0b4d5a42f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    42433302
</span> 
 categories          net
 maintainers         nomaintainer
<span style='display:block; white-space:pre;background:#ffe0e0;'>-license             GPL-3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             GPL-3+
</span> description         SMB/CIFS server and client
 long_description    Samba is an software suite that provides seamless file \
                     and print services to SMB/CIFS clients.
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -31,7 +31,8 @@ distname            samba-${version}
</span> perl5.major         5.34
 
 depends_build       port:pkgconfig \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    port:gettext
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:gettext \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:bison
</span> 
 depends_lib         port:cctools \
                     port:gettext-runtime \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -73,6 +74,7 @@ platform darwin {
</span> # doc build issues are resolved.
 patchfiles-append patch-no-xsltproc.diff
 patchfiles-append patch-bug-15030.diff
<span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append patch-samba-install.diff
</span> 
 configure.perl      ${perl5.bin}
 configure.python    ${prefix}/bin/python3.12
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -97,134 +99,9 @@ build.env-append    PYTHON=${configure.python} DESTDIR=${destroot}
</span> destroot.env-append PYTHON=${configure.python} DESTDIR=${destroot}
 destroot.destdir
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# this will be used on Darwin, to correct the IDs of a binary's library dependencies
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# so that they will be found in the location where they are actually installed.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-options changelist
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-changelist
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> # error: redefinition of typedef ‘SMB_STRUCT_STAT’
 compiler.blacklist-append *gcc-4.* {clang < 400}
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-post-destroot {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    platform darwin {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # install a file missed by the build system:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        xinstall -m 755 ${worksrcpath}/bin/shared/private/libdnsserver-common-samba4.dylib ${destroot}${prefix}/lib/samba
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # On Darwin the build system fails to set library install names AND uses absolute paths
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # into the build directory (-o ${build.dir}/path/to/libfoo.dylib).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # We want to run without need for ${build.dir} so we need to fix the IDs and the "rpaths".
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        proc canonical {lf} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set l [file normalize ${lf}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            if {[file type ${l}] eq "link"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set target [file readlink ${l}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                if {[file pathtype ${target}] eq "relative"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    return [file normalize [file join [file dirname ${l}] ${target}]]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    return [file normalize ${target}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                return ${l}
</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;'>-        # First, find all .dylib files, record their current ID (in changelist) and correct it
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ui_msg "--->  Fixing dylib IDs"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        array set libdone {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        catch {exec -ignorestderr find ${destroot}${prefix} -regex {.*/lib[^.]*\.[0-9]\.dylib}} versioneddylibs err
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        foreach lf ${versioneddylibs} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            # we may get output from `find` that's not a file, so check
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            if {[file exists ${lf}]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set l [canonical ${lf}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                if {[string first ${destroot} ${l}] < 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    # shouldn't happen but better safe than sorry
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    ui_warn "${lf} -> ${l} !"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    # NB: the install name is based on the symlink, not the target!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    set id [exec otool -D ${lf} | tail -1]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    # the new install name == ID: the full path minus ${destroot}.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    set instname [string map [list ${destroot} ""] ${lf}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    if {${instname} ne ${id}} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        system "install_name_tool -id ${instname} ${l}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        # the current ID must be changed to the new one in all files that depend on it:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        changelist-append -change ${id} ${instname}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        # annoyingly some libraries will still their intermediate library ID
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        # and who knows if other binaries depend on those IDs
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        # Just change both...
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        if {[string last ".inst.dylib" ${id}] >= 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            set id2 "[file rootname [file rootname ${id}]].dylib"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            set id2 "[file rootname ${id}].inst.dylib"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        changelist-append -change ${id2} ${instname}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    # mark the actual file we just processed as "done".
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    set libdone(${l}) yes
</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;'>-        # idem for the unversioned libraries - by finding all and then ignoring those already processed.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        catch {exec -ignorestderr find ${destroot}${prefix} -name "*.dylib"} otherdylibs err
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        foreach lf ${otherdylibs} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            if {[file exists ${lf}]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set l [canonical ${lf}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                if {[string first ${destroot} ${l}] < 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    # shouldn't happen but better safe than sorry
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    ui_warn "${lf} -> ${l} !"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                } elseif {![info exists libdone(${l})]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    set id [exec otool -D ${lf} | tail -1]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    set instname [string map [list ${destroot} ""] ${lf}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    if {${instname} ne ${id}} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        system "install_name_tool -id ${instname} ${l}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        changelist-append -change ${id} ${instname}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        if {[string last ".inst.dylib" ${id}] >= 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            set id2 "[file rootname [file rootname ${id}]].dylib"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            set id2 "[file rootname ${id}].inst.dylib"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        changelist-append -change ${id2} ${instname}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    ui_debug "Library ${l} has already been fixed"
</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;'>-        ui_debug "Changelist:"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ui_debug "${changelist}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ui_msg "--->  Updating all binaries with the new IDs"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # reset libdone
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        array unset libdone
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        catch {exec -ignorestderr find ${destroot}${prefix} -name "*.dylib" -o -name "*.so"} alllibs err
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        foreach lf ${alllibs} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            if {[file exists ${lf}]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                set exe [canonical ${lf}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                if {![info exists libdone(${exe})]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    system "install_name_tool ${changelist} ${exe}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    set libdone(${exe}) yes
</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;'>-        foreach exe [glob ${destroot}${prefix}/bin/*] {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            if {[file exists ${exe}]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                # catch because we could encounter scripts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                catch {system "install_name_tool ${changelist} ${exe}"}
</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;'>-        foreach exe [glob ${destroot}${prefix}/sbin/*] {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            if {[file exists ${exe}]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                # catch because we could encounter scripts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                catch {system "install_name_tool ${changelist} ${exe}"}
</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;'>-        foreach exe [glob ${destroot}${prefix}/libexec/samba/*] {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            if {[file exists ${exe}]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                # catch because we could encounter scripts
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                catch {system "install_name_tool ${changelist} ${exe}"}
</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;'>-        # All done, "already"!
</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> livecheck.type  regex
 livecheck.url   https://download.samba.org/pub/samba/
 livecheck.regex samba-(\[0-9a-z.\]+)\\.tar\\.gz
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/samba4/files/patch-samba-install.diff b/net/samba4/files/patch-samba-install.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..045e31d7406
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/samba4/files/patch-samba-install.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,27 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git buildtools/wafsamba/samba_install.py buildtools/wafsamba/samba_install.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index a43d103..eb2ee57 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- buildtools/wafsamba/samba_install.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ buildtools/wafsamba/samba_install.py
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -81,7 +81,7 @@ def install_library(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         target_name = self.target
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if install_ldflags != build_ldflags:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if False:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # we will be creating a new target name, and using that for the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # install link. That stops us from overwriting the existing build
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             # target, which has different ldflags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -138,6 +138,13 @@ def install_library(self):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 t.env.append_value('LINKFLAGS', t.env.SONAME_ST % install_name)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             t.env.SONAME_ST = ''
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if '-dynamiclib' in t.env.LINKFLAGS_cshlib:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            t.env.append_value('LINKFLAGS_cshlib', '-install_name')
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            if install_link:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                t.env.append_value('LINKFLAGS_cshlib', os.path.join(install_path, install_link))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            else:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                t.env.append_value('LINKFLAGS_cshlib', os.path.join(install_path, install_name))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         # tell waf to install the library
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         bld.install_as(os.path.join(install_path, install_name),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        self.path.find_or_declare(inst_name),
</span></pre><pre style='margin:0'>

</pre>