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

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/2193f533d5742e54bada6fd61402e7d268fbc524">https://github.com/macports/macports-ports/commit/2193f533d5742e54bada6fd61402e7d268fbc524</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 2193f533d5742e54bada6fd61402e7d268fbc524
</span>Author: Phil <ph7@github.com>
AuthorDate: Thu Dec 16 12:06:41 2021 -0500

<span style='display:block; white-space:pre;color:#404040;'>    samba4: replace tabs with spaces; fix indentation
</span>---
 net/samba4/Portfile | 363 ++++++++++++++++++++++++++--------------------------
 1 file changed, 183 insertions(+), 180 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 240042c05b6..d0f44145a38 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;'>@@ -1,52 +1,53 @@
</span> # -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-PortSystem              1.0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-name                       samba4
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-conflicts          samba3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-version                    4.14.7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-revision           0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums          rmd160  732a018b5b97e9efc91efd1b2d3540c23aec1dca \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           sha256  6f50353f9602aa20245eb18ceb00e7e5ec793df0974aebd5254c38f16d8f1906 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                           size 18668592
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-categories         net
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-platforms          darwin
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-maintainers                nomaintainer
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-license                    GPL-3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-description                SMB/CIFS server and client
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-long_description  Samba is an software suite that provides seamless file \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                         and print services to SMB/CIFS clients.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-homepage           http://www.samba.org/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-master_sites       https://download.samba.org/pub/samba/stable
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-distname           samba-${version}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_build   port:pkgconfig 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_lib                port:cctools \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-               port:gettext \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   port:gnutls \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                port:gpgme \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                port:jansson \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   port:libarchive \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-               port:libiconv \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                       path:lib/libldap.dylib:openldap \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                       port:p5.28-parse-yapp \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                       port:popt \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                       port:python38 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                       port:readline \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                       port:zlib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-patch.pre_args     -p1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+name                samba4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+conflicts           samba3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version             4.14.7
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  732a018b5b97e9efc91efd1b2d3540c23aec1dca \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  6f50353f9602aa20245eb18ceb00e7e5ec793df0974aebd5254c38f16d8f1906 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size 18668592
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          net
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+platforms           darwin
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         nomaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             GPL-3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         SMB/CIFS server and client
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    Samba is an software suite that provides seamless file \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    and print services to SMB/CIFS clients.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage            http://www.samba.org/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites        https://download.samba.org/pub/samba/stable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distname            samba-${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build       port:pkgconfig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib         port:cctools \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:gettext \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:gnutls \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:gpgme \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:jansson \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:libarchive \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:libiconv \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    path:lib/libldap.dylib:openldap \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:p5.28-parse-yapp \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:popt \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:python38 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:readline \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:zlib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patch.pre_args      -p1
</span> 
 platform darwin {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        # fix missing header
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   patchfiles-append patch-fix-debug.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # fix missing header
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-fix-debug.diff
</span> 
     # patch "get_user_groups: failed to get the unix group list" on
     # macOS
     #
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Samba fails on macOS when current user belows to more than 16
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Samba fails on macOS when current user belongs to more than 16
</span>     # groups.
     #
     # The 16 group limit is returned by sysconf when asked for
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -57,7 +58,8 @@ platform darwin {
</span>     # strange maximum of 16 groups on OS X.
     #
     # https://github.com/Homebrew/legacy-homebrew/issues/5954
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append patch-macos-grouplimit.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    patchfiles-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    patch-macos-grouplimit.diff
</span>  }
 
 # patch to disable building documentation on MacOS
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -66,26 +68,27 @@ platform darwin {
</span> # doc build issues are resolved.
 patchfiles-append patch-no-xsltproc.diff
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.perl          ${prefix}/bin/perl5.28
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.python        ${prefix}/bin/python3.8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.env-append    YAPP=${prefix}/bin/yapp-5.28
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.cmd              ${configure.python} ./buildtools/bin/waf configure
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.args             -C \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   --enable-fhs \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   --mandir=${prefix}/share/man \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   --with-libiconv=${prefix} \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   --without-acl-support \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   --without-ad-dc \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   --disable-avahi \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   --with-gpgme \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                   --disable-spotlight
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-build.cmd          ${configure.python} ./buildtools/bin/waf -v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.perl      ${prefix}/bin/perl5.28
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.python    ${prefix}/bin/python3.8
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.env-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    YAPP=${prefix}/bin/yapp-5.28
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.cmd       ${configure.python} ./buildtools/bin/waf configure
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args      -C \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --enable-fhs \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --mandir=${prefix}/share/man \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --with-libiconv=${prefix} \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --without-acl-support \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --without-ad-dc \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --disable-avahi \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --with-gpgme \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    --disable-spotlight
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.cmd           ${configure.python} ./buildtools/bin/waf -v
</span> build.pre_args
<span style='display:block; white-space:pre;background:#ffe0e0;'>-build.env-append        DESTDIR=${destroot}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.env-append    DESTDIR=${destroot}
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-destroot.cmd            ${configure.python} ./buildtools/bin/waf -v
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-destroot.env-append        DESTDIR=${destroot}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.cmd        ${configure.python} ./buildtools/bin/waf -v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+destroot.env-append DESTDIR=${destroot}
</span> destroot.destdir
 
 # this will be used on Darwin, to correct the IDs of a binary's library dependencies
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -94,125 +97,125 @@ options changelist
</span> changelist
 
 post-destroot {
<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:#e0ffe0;'>+    platform darwin {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # install a file missed by the build system:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        xinstall -m 755 ${worksrcpath}/bin/shared/private/libdnsserver-common-samba4.dylib ${destroot}${prefix}/lib/samba
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # On Darwin the build system fails to set library install names AND uses absolute paths
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # into the build directory (-o ${build.dir}/path/to/libfoo.dylib).
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # 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:#e0ffe0;'>+        proc canonical {lf} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set l [file normalize ${lf}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[file type ${l}] eq "link"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set target [file readlink ${l}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                if {[file pathtype ${target}] eq "relative"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    return [file normalize [file join [file dirname ${l}] ${target}]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    return [file normalize ${target}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                return ${l}
</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;'>+        # First, find all .dylib files, record their current ID (in changelist) and correct it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_msg "--->  Fixing dylib IDs"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        array set libdone {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        catch {exec -ignorestderr find ${destroot}${prefix} -regex {.*/lib[^.]*\.[0-9]\.dylib}} versioneddylibs err
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach lf ${versioneddylibs} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # we may get output from `find` that's not a file, so check
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[file exists ${lf}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set l [canonical ${lf}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                if {[string first ${destroot} ${l}] < 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    # shouldn't happen but better safe than sorry
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ui_warn "${lf} -> ${l} !"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    # NB: the install name is based on the symlink, not the target!
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    set id [exec otool -D ${lf} | tail -1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    # the new install name == ID: the full path minus ${destroot}.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    set instname [string map [list ${destroot} ""] ${lf}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    if {${instname} ne ${id}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        system "install_name_tool -id ${instname} ${l}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        # 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:#e0ffe0;'>+                        changelist-append -change ${id} ${instname}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        # annoyingly some libraries will still their intermediate library ID
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        # and who knows if other binaries depend on those IDs
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        # Just change both...
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        if {[string last ".inst.dylib" ${id}] >= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            set id2 "[file rootname [file rootname ${id}]].dylib"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            set id2 "[file rootname ${id}].inst.dylib"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        changelist-append -change ${id2} ${instname}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    # mark the actual file we just processed as "done".
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    set libdone(${l}) yes
</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;'>+        # idem for the unversioned libraries - by finding all and then ignoring those already processed.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        catch {exec -ignorestderr find ${destroot}${prefix} -name "*.dylib"} otherdylibs err
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach lf ${otherdylibs} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[file exists ${lf}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set l [canonical ${lf}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                if {[string first ${destroot} ${l}] < 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    # shouldn't happen but better safe than sorry
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ui_warn "${lf} -> ${l} !"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                } elseif {![info exists libdone(${l})]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    set id [exec otool -D ${lf} | tail -1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    set instname [string map [list ${destroot} ""] ${lf}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    if {${instname} ne ${id}} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        system "install_name_tool -id ${instname} ${l}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        changelist-append -change ${id} ${instname}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        if {[string last ".inst.dylib" ${id}] >= 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            set id2 "[file rootname [file rootname ${id}]].dylib"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            set id2 "[file rootname ${id}].inst.dylib"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        changelist-append -change ${id2} ${instname}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ui_debug "Library ${l} has already been fixed"
</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;'>+        ui_debug "Changelist:"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_debug "${changelist}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_msg "--->  Updating all binaries with the new IDs"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # reset libdone
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        array unset libdone
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        catch {exec -ignorestderr find ${destroot}${prefix} -name "*.dylib" -o -name "*.so"} alllibs err
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach lf ${alllibs} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[file exists ${lf}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set exe [canonical ${lf}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                if {![info exists libdone(${exe})]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    system "install_name_tool ${changelist} ${exe}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    set libdone(${exe}) yes
</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;'>+        foreach exe [glob ${destroot}${prefix}/bin/*] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[file exists ${exe}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                # catch because we could encounter scripts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                catch {system "install_name_tool ${changelist} ${exe}"}
</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;'>+        foreach exe [glob ${destroot}${prefix}/sbin/*] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[file exists ${exe}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                # catch because we could encounter scripts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                catch {system "install_name_tool ${changelist} ${exe}"}
</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;'>+        foreach exe [glob ${destroot}${prefix}/libexec/samba/*] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[file exists ${exe}]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                # catch because we could encounter scripts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                catch {system "install_name_tool ${changelist} ${exe}"}
</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;'>+        # All done, "already"!
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span> }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-livecheck.type  regex
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-livecheck.url      http://us4.samba.org/samba/ftp/samba4/?M=D
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-livecheck.regex    samba-(\[0-9a-z.\]+)\\.tar\\.gz
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.type  regex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.url   http://us4.samba.org/samba/ftp/samba4/?M=D
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+livecheck.regex samba-(\[0-9a-z.\]+)\\.tar\\.gz
</span></pre><pre style='margin:0'>

</pre>