<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>