git: b0a4fa4a12b0 - main - net/samba419: Add new port

From: Mikael Urankar <mikael_at_FreeBSD.org>
Date: Fri, 09 Feb 2024 15:33:58 UTC
The branch main has been updated by mikael:

URL: https://cgit.FreeBSD.org/ports/commit/?id=b0a4fa4a12b096897f347755106940220e94c114

commit b0a4fa4a12b096897f347755106940220e94c114
Author:     Mikael Urankar <mikael@FreeBSD.org>
AuthorDate: 2024-02-05 12:56:27 +0000
Commit:     Mikael Urankar <mikael@FreeBSD.org>
CommitDate: 2024-02-09 15:33:54 +0000

    net/samba419: Add new port
    
    Many thanks to Joshua Kinard, Siva Mahadevan, Yasuhiro Kimura, Andrew Walker, and Peter Eriksson for their patches.
    
    PR:             270383
---
 Mk/Uses/samba.mk                                   |     2 +-
 Mk/bsd.default-versions.mk                         |     2 +-
 net/Makefile                                       |     1 +
 net/samba419/Makefile                              |   701 +
 net/samba419/distinfo                              |     3 +
 ...-simplify-modules-build-and-config-genera.patch |   292 +
 ...gen.sh-script-to-run-under-FreeBSD-with-i.patch |    35 +
 ...CLang-prototype-warnings-in-kadm5-admin.h.patch |    32 +
 ...date-1-has-different-semantics-than-on-Li.patch |    38 +
 ...alloc-jemalloc.h-if-ENABLE_JEMALLOC-is-se.patch |    26 +
 ...tall-nss_-modules-into-PAMMODULESDIR-path.patch |    32 +
 ...alue-as-a-default-backlog-size-for-the-li.patch |   105 +
 ...-work-around-usage-of-Linux-specific-m-fl.patch |   111 +
 ...hat-config-checks-fail-if-the-warning-is-.patch |    39 +
 ...with-pkgconfigdir-to-specify-alternative-.patch |    54 +
 ...vided-by-port-location-of-the-XML-catalog.patch |    28 +
 ...ed-libraries-according-to-the-FreeBSD-spe.patch |    29 +
 ...onal-msg-parameter-to-CHECK_LIB-so-it-can.patch |    70 +
 ...to-disable-CTDB-tests-failing-on-FreeBSD-.patch |    77 +
 ...-debug-class-to-trck-down-DB-locking-code.patch |   132 +
 ...hema_attribute_compare-a-stable-comparisi.patch |    29 +
 ...dom-when-available-to-generate-random-tal.patch |    49 +
 ...ration-option-that-allows-to-choose-alter.patch |    65 +
 ...a1afeb0b920e60e14846987ae1d2d7dca4-Mon-Se.patch |   544 +
 ...between-r336017-and-r342928-wrongfuly-ret.patch |    35 +
 ...g-warnings-in-the-nfs_quota-debug-message.patch |    36 +
 ...MP-handling-code-and-add-FreeBSD-support..patch |   340 +
 ..._quota-test-function-into-vfstest-to-test.patch |   121 +
 ...ck-ZFS-provisioning-code-by-iXsystems-Inc.patch |   367 +
 ...869a8f4018ebee302aae8246bf29f60309-Mon-Se.patch |   101 +
 ...ompatibility-option-to-the-vfs_streams_xa.patch |   335 +
 ...ule-vfs_freebsd-that-implements-FreeBSD-s.patch |   932 ++
 ...ules-zfsacl-fix-get-set-ACL-on-FreeBSD-13.patch |   164 +
 ...0-Fix-pathref-handling-for-FreeBSD-13plus.patch |   485 +
 net/samba419/files/README.FreeBSD.in               |    94 +
 net/samba419/files/man/ctdb-script.options.5       |   558 +
 net/samba419/files/man/ctdb-statistics.7           |   550 +
 net/samba419/files/man/ctdb-tunables.7             |   406 +
 net/samba419/files/man/ctdb.1                      |  1526 ++
 net/samba419/files/man/ctdb.7                      |   783 ++
 net/samba419/files/man/ctdb.conf.5                 |   359 +
 net/samba419/files/man/ctdb.sysconfig.5            |   139 +
 net/samba419/files/man/ctdb_diagnostics.1          |    79 +
 net/samba419/files/man/ctdbd.1                     |    83 +
 net/samba419/files/man/ctdbd_wrapper.1             |    63 +
 net/samba419/files/man/dbwrap_tool.1               |   329 +
 net/samba419/files/man/gentest.1                   |   133 +
 net/samba419/files/man/ldb.3                       |   427 +
 net/samba419/files/man/ldbadd.1                    |    78 +
 net/samba419/files/man/ldbdel.1                    |    80 +
 net/samba419/files/man/ldbedit.1                   |   111 +
 net/samba419/files/man/ldbmodify.1                 |    73 +
 net/samba419/files/man/ldbrename.1                 |    81 +
 net/samba419/files/man/ldbsearch.1                 |    91 +
 net/samba419/files/man/libsmbclient.7              |    94 +
 net/samba419/files/man/lmhosts.5                   |   123 +
 net/samba419/files/man/locktest.1                  |   137 +
 net/samba419/files/man/log2pcap.1                  |   124 +
 net/samba419/files/man/ltdbtool.1                  |   256 +
 net/samba419/files/man/masktest.1                  |   113 +
 net/samba419/files/man/mdfind.1                    |   166 +
 net/samba419/files/man/mdsearch.1                  |   357 +
 net/samba419/files/man/mvxattr.1                   |    84 +
 net/samba419/files/man/ndrdump.1                   |    84 +
 net/samba419/files/man/nmblookup.1                 |   341 +
 net/samba419/files/man/nmblookup4.1                |   157 +
 net/samba419/files/man/ntlm_auth.1                 |   458 +
 net/samba419/files/man/ntlm_auth4.1                |   233 +
 net/samba419/files/man/oLschema2ldif.1             |    74 +
 net/samba419/files/man/onnode.1                    |   218 +
 net/samba419/files/man/pam_winbind.conf.5          |   161 +
 net/samba419/files/man/ping_pong.1                 |   122 +
 net/samba419/files/man/profiles.1                  |   136 +
 net/samba419/files/man/regdiff.1                   |    87 +
 net/samba419/files/man/regpatch.1                  |    81 +
 net/samba419/files/man/regshell.1                  |   177 +
 net/samba419/files/man/regtree.1                   |    89 +
 net/samba419/files/man/rpcclient.1                 |  1961 +++
 net/samba419/files/man/samba-gpupdate.8            |   122 +
 net/samba419/files/man/samba.7                     |   254 +
 net/samba419/files/man/sharesec.1                  |   364 +
 net/samba419/files/man/smb.conf.5                  | 13994 +++++++++++++++++++
 net/samba419/files/man/smbcacls.1                  |  1044 ++
 net/samba419/files/man/smbclient.1                 |  1253 ++
 net/samba419/files/man/smbcontrol.1                |   343 +
 net/samba419/files/man/smbcquotas.1                |   440 +
 net/samba419/files/man/smbget.1                    |   197 +
 net/samba419/files/man/smbgetrc.5                  |   100 +
 net/samba419/files/man/smbpasswd.5                 |   175 +
 net/samba419/files/man/smbstatus.1                 |   186 +
 net/samba419/files/man/smbtar.1                    |   163 +
 net/samba419/files/man/smbtorture.1                |   362 +
 net/samba419/files/man/smbtree.1                   |   252 +
 net/samba419/files/man/talloc.3                    |   683 +
 net/samba419/files/man/tdbbackup.8                 |   129 +
 net/samba419/files/man/tdbdump.8                   |    72 +
 net/samba419/files/man/tdbrestore.8                |    54 +
 net/samba419/files/man/tdbtool.8                   |   170 +
 net/samba419/files/man/testparm.1                  |   194 +
 net/samba419/files/man/traffic_learner.7           |   128 +
 net/samba419/files/man/traffic_replay.7            |   380 +
 net/samba419/files/man/vfs_freebsd.8               |   204 +
 net/samba419/files/man/wbinfo.1                    |   490 +
 .../files/patch-examples_pdb_wscript__build        |    11 +
 net/samba419/files/patch-lib_ldb_wscript           |    61 +
 net/samba419/files/patch-lib_talloc_wscript        |    11 +
 net/samba419/files/patch-lib_util_wscript__build   |    11 +
 net/samba419/files/patch-source3_lib_util.c        |    14 +
 .../files/patch-source3_librpc_crypto_gse.c        |    16 +
 ...patch-source3_modules_vfs__virusfilter__utils.c |    36 +
 .../patch-source3_registry_tests_test__regfio.c    |    10 +
 .../files/patch-source3_winbindd_wscript__build    |    11 +
 net/samba419/files/patch-source3_wscript__build    |    44 +
 net/samba419/files/pkg-message.in                  |    31 +
 net/samba419/files/samba_server.in                 |   251 +
 net/samba419/pkg-descr                             |     6 +
 net/samba419/pkg-plist                             |   467 +
 net/samba419/pkg-plist.ad_dc                       |   179 +
 net/samba419/pkg-plist.cluster                     |    76 +
 net/samba419/pkg-plist.python                      |   505 +
 120 files changed, 40779 insertions(+), 2 deletions(-)

diff --git a/Mk/Uses/samba.mk b/Mk/Uses/samba.mk
index bd4ccb0a6189..40e8cac30403 100644
--- a/Mk/Uses/samba.mk
+++ b/Mk/Uses/samba.mk
@@ -21,7 +21,7 @@ IGNORE=		USES=samba has invalid arguments: ${samba_ARGS:Nbuild:Nenv:Nlib:Nrun}
 
 SAMBAPORT=	net/samba${SAMBA_DEFAULT:S/.//}
 SAMBAINCLUDES=	${LOCALBASE}/include/samba4
-.  if ${SAMBA_DEFAULT} == 4.13 || ${SAMBA_DEFAULT} == 4.16
+.  if ${SAMBA_DEFAULT} == 4.13 || ${SAMBA_DEFAULT} == 4.16 || ${SAMBA_DEFAULT} == 4.19
 SAMBALIBS=	${LOCALBASE}/lib/samba4
 .  else
 IGNORE=		Invalid version of samba: ${SAMBA_DEFAULT}
diff --git a/Mk/bsd.default-versions.mk b/Mk/bsd.default-versions.mk
index 4747af6c8296..40ffd9a959b2 100644
--- a/Mk/bsd.default-versions.mk
+++ b/Mk/bsd.default-versions.mk
@@ -142,7 +142,7 @@ PYTHON2_DEFAULT?=	2.7
 RUBY_DEFAULT?=		3.1
 # Possible values: rust, rust-nightly
 RUST_DEFAULT?=		rust
-# Possible values: 4.13, 4.16
+# Possible values: 4.13, 4.16, 4.19
 SAMBA_DEFAULT?=		4.16
 # Possible values: base, openssl, openssl111, openssl31, openssl32, libressl, libressl-devel
 .  if !defined(SSL_DEFAULT)
diff --git a/net/Makefile b/net/Makefile
index 85d381a126b4..fe3e44a9f8a4 100644
--- a/net/Makefile
+++ b/net/Makefile
@@ -1435,6 +1435,7 @@
     SUBDIR += sakisafecli
     SUBDIR += samba413
     SUBDIR += samba416
+    SUBDIR += samba419
     SUBDIR += samplicator
     SUBDIR += savvycan
     SUBDIR += sbd
diff --git a/net/samba419/Makefile b/net/samba419/Makefile
new file mode 100644
index 000000000000..de9c52a381a1
--- /dev/null
+++ b/net/samba419/Makefile
@@ -0,0 +1,701 @@
+PORTNAME=			${SAMBA4_BASENAME}419
+PORTVERSION=			${SAMBA4_VERSION}
+PORTREVISION=			0
+CATEGORIES?=			net
+MASTER_SITES=			SAMBA/samba/stable SAMBA/samba/rc
+DISTNAME=			${SAMBA4_DISTNAME}
+
+MAINTAINER=			mikael@FreeBSD.org
+COMMENT=			Free SMB/CIFS and AD/DC server and client for Unix
+WWW=				https://gitlab.com/samba-freebsd/
+
+LICENSE=			GPLv3+
+LICENSE_FILE=			${WRKSRC}/COPYING
+
+USES=				cpe
+
+CONFLICTS_INSTALL?=		samba4*
+
+EXTRA_PATCHES=			\
+				${PATCHDIR}/0001-Compact-and-simplify-modules-build-and-config-genera.patch:-p1 \
+				${PATCHDIR}/0002-Adjust-abi_gen.sh-script-to-run-under-FreeBSD-with-i.patch:-p1 \
+				${PATCHDIR}/0003-Mask-CLang-prototype-warnings-in-kadm5-admin.h.patch:-p1 \
+				${PATCHDIR}/0004-On-FreeBSD-date-1-has-different-semantics-than-on-Li.patch:-p1 \
+				${PATCHDIR}/0005-Include-jemalloc-jemalloc.h-if-ENABLE_JEMALLOC-is-se.patch:-p1 \
+				${PATCHDIR}/0006-Install-nss_-modules-into-PAMMODULESDIR-path.patch:-p1 \
+				${PATCHDIR}/0007-Use-macro-value-as-a-default-backlog-size-for-the-li.patch:-p1 \
+				${PATCHDIR}/0008-Brute-force-work-around-usage-of-Linux-specific-m-fl.patch:-p1 \
+				${PATCHDIR}/0009-Make-sure-that-config-checks-fail-if-the-warning-is-.patch:-p1 \
+				${PATCHDIR}/0010-Add-option-with-pkgconfigdir-to-specify-alternative-.patch:-p1 \
+				${PATCHDIR}/0011-Use-provided-by-port-location-of-the-XML-catalog.patch:-p1 \
+				${PATCHDIR}/0012-Create-shared-libraries-according-to-the-FreeBSD-spe.patch:-p1 \
+				${PATCHDIR}/0013-Pass-additional-msg-parameter-to-CHECK_LIB-so-it-can.patch:-p1 \
+				${PATCHDIR}/0014-Add-option-to-disable-CTDB-tests-failing-on-FreeBSD-.patch:-p1 \
+				${PATCHDIR}/0015-Add-extra-debug-class-to-trck-down-DB-locking-code.patch:-p1 \
+				${PATCHDIR}/0016-Make-ldb_schema_attribute_compare-a-stable-comparisi.patch:-p1 \
+				${PATCHDIR}/0017-Use-arc4random-when-available-to-generate-random-tal.patch:-p1 \
+				${PATCHDIR}/0018-Add-configuration-option-that-allows-to-choose-alter.patch:-p1 \
+				${PATCHDIR}/0019-From-923bc7a1afeb0b920e60e14846987ae1d2d7dca4-Mon-Se.patch:-p1 \
+				${PATCHDIR}/0020-FreeBSD-12-between-r336017-and-r342928-wrongfuly-ret.patch:-p1 \
+				${PATCHDIR}/0021-Fix-casting-warnings-in-the-nfs_quota-debug-message.patch:-p1 \
+				${PATCHDIR}/0022-Clean-up-UTMP-handling-code-and-add-FreeBSD-support..patch:-p1 \
+				${PATCHDIR}/0023-Add-cmd_get_quota-test-function-into-vfstest-to-test.patch:-p1 \
+				${PATCHDIR}/0024-Cherry-pick-ZFS-provisioning-code-by-iXsystems-Inc.patch:-p1 \
+				${PATCHDIR}/0025-From-d9b748869a8f4018ebee302aae8246bf29f60309-Mon-Se.patch:-p1 \
+				${PATCHDIR}/0026-vfs-add-a-compatibility-option-to-the-vfs_streams_xa.patch:-p1 \
+				${PATCHDIR}/0027-Add-VFS-module-vfs_freebsd-that-implements-FreeBSD-s.patch:-p1 \
+				${PATCHDIR}/0100-Fix-pathref-handling-for-FreeBSD-13plus.patch
+
+SAMBA4_BASENAME=		samba
+SAMBA4_PORTNAME=		${SAMBA4_BASENAME}4
+SAMBA4_VERSION=			4.19.4
+SAMBA4_DISTNAME=		${SAMBA4_BASENAME}-${SAMBA4_VERSION:S|.p|pre|:S|.r|rc|:S|.t|tp|:S|.a|alpha|}
+
+WRKSRC?=			${WRKDIR}/${DISTNAME}
+PLIST?=				${PKGDIR}/pkg-plist
+
+CPE_VENDOR=			samba
+CPE_PRODUCT=			samba
+# Directories
+VARDIR=				${DESTDIR}/var
+SAMBA4_RUNDIR=			${VARDIR}/run/${SAMBA4_PORTNAME}
+SAMBA4_LOGDIR=			${VARDIR}/log/${SAMBA4_PORTNAME}
+SAMBA4_LOCKDIR=			${VARDIR}/db/${SAMBA4_PORTNAME}
+SAMBA4_BINDDNSDIR=		${SAMBA4_LOCKDIR}/bind-dns
+SAMBA4_PRIVATEDIR=		${SAMBA4_LOCKDIR}/private
+SAMBA4_PAMDIR=			${PREFIX}/lib
+SAMBA4_LIBDIR=			${PREFIX}/lib/${SAMBA4_PORTNAME}
+SAMBA4_INCLUDEDIR=		${PREFIX}/include/${SAMBA4_PORTNAME}
+SAMBA4_CONFDIR=			${PREFIX}/etc
+SAMBA4_CONFIG=			smb4.conf
+SAMBA4_MODULES_CLASS=		auth bind9 gensec gpext idmap ldb nss_info \
+				pdb perfcount process_model service vfs
+
+CONFIGURE_ARGS=			--mandir="${PREFIX}/share/man" \
+				--sysconfdir="${SAMBA4_CONFDIR}" \
+				--includedir="${SAMBA4_INCLUDEDIR}" \
+				--datadir="${DATADIR}" \
+				--libdir="${SAMBA4_LIBDIR}" \
+				--with-privatelibdir="${SAMBA4_LIBDIR}/private" \
+				--with-pammodulesdir="${SAMBA4_PAMDIR}" \
+				--with-modulesdir="${SAMBA4_MODULEDIR}" \
+				--with-pkgconfigdir="${PKGCONFIGDIR}" \
+				--localstatedir="${VARDIR}" \
+				--with-piddir="${SAMBA4_RUNDIR}" \
+				--with-sockets-dir="${SAMBA4_RUNDIR}" \
+				--with-privileged-socket-dir="${SAMBA4_RUNDIR}" \
+				--with-lockdir="${SAMBA4_LOCKDIR}" \
+				--with-statedir="${SAMBA4_LOCKDIR}" \
+				--with-cachedir="${SAMBA4_LOCKDIR}" \
+				--with-bind-dns-dir=${SAMBA4_BINDDNSDIR} \
+				--with-privatedir="${SAMBA4_PRIVATEDIR}" \
+				--with-logfilebase="${SAMBA4_LOGDIR}"
+# XXX: Flags
+CONFIGURE_ENV=			PTHREAD_LDFLAGS="-lpthread" \
+				PYTHONHASHSEED=1
+MAKE_ENV=			PYTHONHASHSEED=1
+
+USES=				compiler:c++11-lang iconv localbase:ldflags \
+				perl5 pkgconfig shebangfix waf gettext-runtime
+USE_PERL5=			build
+USE_LDCONFIG=			${SAMBA4_LIBDIR}
+WAF_CMD=			buildtools/bin/waf
+CONFIGURE_LOG=			bin/config.log
+
+# Make sure that the right version of Python is used by the tools
+# https://bugzilla.samba.org/show_bug.cgi?id=7305
+SHEBANG_FILES=			source3/script* source4/scripting/bin/* selftest/*
+
+PKGCONFIGDIR?=			${PREFIX}/libdata/pkgconfig
+PKGCONFIGDIR_REL?=		${PKGCONFIGDIR:S,^${PREFIX}/,,}
+PLIST_SUB=			PKGCONFIGDIR=${PKGCONFIGDIR_REL}
+SUB_LIST=			PKGCONFIGDIR=${PKGCONFIGDIR_REL}
+##############################################################################
+OPTIONS_SUB=			yes
+
+OPTIONS_DEFINE=			AD_DC ADS CLUSTER CUPS DOCS FAM GPGME \
+				LDAP MANDOC PROFILE PYTHON3 QUOTAS \
+				SPOTLIGHT SYSLOG UTMP
+#OPTIONS_DEFINE+=		DEVELOPER MEMORY_DEBUG
+
+OPTIONS_GROUP=			VFS
+OPTIONS_GROUP_VFS=		FRUIT GLUSTERFS
+
+OPTIONS_SINGLE=			GSSAPI ZEROCONF
+
+OPTIONS_SINGLE_GSSAPI=		GSSAPI_BUILTIN GSSAPI_MIT
+#GSSAPI_HEIMDAL
+OPTIONS_SINGLE_ZEROCONF=	ZEROCONF_NONE AVAHI MDNSRESPONDER
+
+# Make those default options
+OPTIONS_DEFAULT=		AD_DC ADS DOCS FAM LDAP \
+				PROFILE PYTHON3 QUOTAS SYSLOG UTMP \
+				FRUIT GSSAPI_BUILTIN AVAHI
+##############################################################################
+ADS_DESC=			Active Directory client(implies LDAP)
+AD_DC_DESC=			Active Directory Domain Controller(implies PYTHON3)
+CLUSTER_DESC=			Clustering support
+DEVELOPER_DESC=			With developer framework
+FAM_DESC=			File Alteration Monitor
+GPGME_DESC=			GpgME support
+LDAP_DESC=			LDAP client
+LIBZFS_DESC=			LibZFS
+SPOTLIGHT_DESC=			Spotlight server-side search support
+MANDOC_DESC=			Build manpages from DOCBOOK templates
+MEMORY_DEBUG_DESC=		Debug memory allocator
+PICKY_DEVELOPER_DESC=		Treat compiler warnings as errors(implies DEVELOPER)
+PROFILE_DESC=			Profiling data
+QUOTAS_DESC=			Disk quota support
+UTMP_DESC=			UTMP accounting
+
+VFS_DESC=			VFS modules
+FRUIT_DESC=			MacOSX and TimeMachine support
+GLUSTERFS_DESC=			GlusterFS support
+
+GSSAPI_BUILTIN_DESC=		GSSAPI support via bundled Heimdal
+
+ZEROCONF_DESC=			Zero configuration networking
+ZEROCONF_NONE_DESC=		Zeroconf support is absent
+##############################################################################
+# XXX: Unconditional dependencies which can't be switched off(if present in
+# the system)
+
+# Iconv(picked up unconditionaly)
+LIB_DEPENDS=			libiconv.so:converters/libiconv
+# unwind
+LIB_DEPENDS+=			libunwind.so:devel/libunwind
+# Readline(sponsored by Python)
+# XXX: USES=readline pollutes CPPFLAGS, so we explicitly put dependency
+LIB_DEPENDS+=			libreadline.so:devel/readline
+# popt
+LIB_DEPENDS+=			libpopt.so:devel/popt
+# inotify
+LIB_DEPENDS+=			libinotify.so:devel/libinotify
+# GNUTLS
+LIB_DEPENDS+=			libgnutls.so:security/gnutls
+LIB_DEPENDS+=			libgcrypt.so:security/libgcrypt
+# NFSv4 ACL glue
+LIB_DEPENDS+=			libsunacl.so:sysutils/libsunacl
+# Jansson
+BUILD_DEPENDS+=			jansson>=2.10:devel/jansson
+RUN_DEPENDS+=			jansson>=2.10:devel/jansson
+# tasn1
+BUILD_DEPENDS+=			libtasn1>=3.8:security/libtasn1
+RUN_DEPENDS+=			libtasn1>=3.8:security/libtasn1
+# External Samba dependencies
+# Needed for IDL compiler
+BUILD_DEPENDS+=			p5-Parse-Yapp>=0:devel/p5-Parse-Yapp
+
+# Libarchive
+SAMBA4_BUNDLED_LIBS=		!libarchive
+BUILD_DEPENDS+=			libarchive>=3.1.2:archivers/libarchive
+RUN_DEPENDS+=			libarchive>=3.1.2:archivers/libarchive
+
+### Bundled libraries
+SAMBA4_BUNDLED_CMOCKA=		yes
+SAMBA4_BUNDLED_TALLOC=		yes
+SAMBA4_BUNDLED_TEVENT=		yes
+SAMBA4_BUNDLED_TDB=		yes
+SAMBA4_BUNDLED_LDB=		yes
+# cmocka
+.if defined(SAMBA4_BUNDLED_CMOCKA) && ${SAMBA4_BUNDLED_CMOCKA} == yes
+SAMBA4_BUNDLED_LIBS+=		cmocka
+CONFLICTS_INSTALL+=		cmocka-1.*
+PLIST_SUB+=			SAMBA4_BUNDLED_CMOCKA=""
+SUB_LIST+=			SAMBA4_BUNDLED_CMOCKA=""
+.else
+SAMBA4_BUNDLED_LIBS+=		!cmocka
+BUILD_DEPENDS+=			cmocka>=1.1.3:sysutils/cmocka
+TEST_DEPENDS+=			cmocka>=1.1.3:sysutils/cmocka
+PLIST_SUB+=			SAMBA4_BUNDLED_CMOCKA="@comment "
+SUB_LIST+=			SAMBA4_BUNDLED_CMOCKA="@comment "
+.endif
+# talloc
+.if defined(SAMBA4_BUNDLED_TALLOC) && ${SAMBA4_BUNDLED_TALLOC} == yes
+SAMBA4_BUNDLED_LIBS+=		talloc
+CONFLICTS_INSTALL+=		talloc-* talloc1-*
+PLIST_SUB+=			SAMBA4_BUNDLED_TALLOC=""
+SUB_LIST+=			SAMBA4_BUNDLED_TALLOC=""
+.else
+SAMBA4_BUNDLED_LIBS+=		!talloc
+BUILD_DEPENDS+=			talloc>=2.3.3:devel/talloc
+RUN_DEPENDS+=			talloc>=2.3.3:devel/talloc
+PLIST_SUB+=			SAMBA4_BUNDLED_TALLOC="@comment "
+SUB_LIST+=			SAMBA4_BUNDLED_TALLOC="@comment "
+.endif
+# tevent
+.if defined(SAMBA4_BUNDLED_TEVENT) && ${SAMBA4_BUNDLED_TEVENT} == yes
+SAMBA4_BUNDLED_LIBS+=		tevent
+CONFLICTS_INSTALL+=		tevent-* tevent1-*
+PLIST_SUB+=			SAMBA4_BUNDLED_TEVENT=""
+SUB_LIST+=			SAMBA4_BUNDLED_TEVENT=""
+.else
+SAMBA4_BUNDLED_LIBS+=		!tevent
+BUILD_DEPENDS+=			tevent>=0.11.0:devel/tevent
+RUN_DEPENDS+=			tevent>=0.11.0:devel/tevent
+PLIST_SUB+=			SAMBA4_BUNDLED_TEVENT="@comment "
+SUB_LIST+=			SAMBA4_BUNDLED_TEVENT="@comment "
+.endif
+# tdb
+.if defined(SAMBA4_BUNDLED_TDB) && ${SAMBA4_BUNDLED_TDB} == yes
+SAMBA4_BUNDLED_LIBS+=		tdb
+CONFLICTS_INSTALL+=		tdb-* tdb1-*
+PLIST_SUB+=			SAMBA4_BUNDLED_TDB=""
+SUB_LIST+=			SAMBA4_BUNDLED_TDB=""
+.else
+SAMBA4_BUNDLED_LIBS+=		!tdb
+BUILD_DEPENDS+=			tdb>=1.4.6:databases/tdb
+RUN_DEPENDS+=			tdb>=1.4.6:databases/tdb
+PLIST_SUB+=			SAMBA4_BUNDLED_TDB="@comment "
+SUB_LIST+=			SAMBA4_BUNDLED_TDB="@comment "
+.endif
+# ldb
+.if defined(SAMBA4_BUNDLED_LDB) && ${SAMBA4_BUNDLED_LDB} == yes
+SAMBA4_BUNDLED_LDB=		yes
+SAMBA4_BUNDLED_LIBS+=		ldb
+PLIST_SUB+=			SAMBA4_BUNDLED_LDB=""
+SUB_LIST+=			SAMBA4_BUNDLED_LDB=""
+SAMBA4_MODULEDIR=		${SAMBA4_LIBDIR}/modules
+.else
+SAMBA4_BUNDLED_LIBS+=		!ldb
+BUILD_DEPENDS+=			ldb25>=2.5.2:databases/ldb25
+RUN_DEPENDS+=			ldb25>=2.5.2:databases/ldb25
+PLIST_SUB+=			SAMBA4_BUNDLED_LDB="@comment "
+SUB_LIST+=			SAMBA4_BUNDLED_LDB="@comment "
+SAMBA4_MODULEDIR=		${PREFIX}/lib/shared-modules
+.endif
+
+.if (defined(SAMBA4_BUNDLED_TALLOC) && ${SAMBA4_BUNDLED_TALLOC} == yes) \
+	|| (defined(SAMBA4_BUNDLED_TDB) && ${SAMBA4_BUNDLED_TDB} == yes) \
+	|| (defined(SAMBA4_BUNDLED_LDB) && ${SAMBA4_BUNDLED_LDB} == yes) \
+	|| (defined(SAMBA4_BUNDLED_TEVENT) && ${SAMBA4_BUNDLED_TEVENT} == yes)
+SAMBA4_BUNDLED_LIBS+=		replace
+.endif
+# Don't use external libcom_err
+SAMBA4_BUNDLED_LIBS+=		com_err
+# Set the test environment variables
+TEST_USES=			python
+TEST_ENV=			PYTHON="${PYTHON_CMD}" \
+				SHA1SUM=/sbin/sha1 \
+				SHA256SUM=/sbin/sha256 \
+				MD5SUM=/sbin/md5 \
+				PYTHONDONTWRITEBYTECODE=1
+
+TEST_DEPENDS=			bash:shells/bash \
+				tshark:net/wireshark@nox11
+# External Python modules
+TEST_BUILD_DEPENDS=		${PYTHON_PKGNAMEPREFIX}iso8601>=0.1.11:devel/py-iso8601@${PY_FLAVOR}
+TEST_RUN_DEPENDS=		${PYTHON_PKGNAMEPREFIX}iso8601>=0.1.11:devel/py-iso8601@${PY_FLAVOR}
+##############################################################################
+CONFIGURE_ARGS+=		\
+				--with-pam \
+				--with-iconv \
+				--with-winbind \
+				--with-regedit \
+				--disable-rpath \
+				--without-lttng \
+				--without-gettext \
+				--enable-pthreadpool \
+				--without-fake-kaserver \
+				--without-systemd \
+				--with-libarchive \
+				--with-acl-support \
+				--with-sendfile-support \
+				--disable-ctdb-tests
+#				${ICONV_CONFIGURE_BASE}
+##############################################################################
+FRUIT_PREVENTS=			ZEROCONF_NONE
+FRUIT_PREVENTS_MSG=		MacOSX support requires Zeroconf(AVAHI or MDNSRESPONDER)
+FRUIT_VARS=			SAMBA4_MODULES+=vfs_fruit
+FRUIT_PLIST_FILES=		share/man/man8/vfs_fruit.8.gz
+
+GLUSTERFS_CONFIGURE_ENABLE=	glusterfs
+GLUSTERFS_LIB_DEPENDS=		libglusterfs.so:net/glusterfs
+GLUSTERFS_VARS=			SAMBA4_MODULES+=vfs_glusterfs
+GLUSTERFS_PLIST_FILES=		share/man/man8/vfs_glusterfs.8.gz
+
+ZEROCONF_NONE_MAKE_ENV=		ZEROCONF=none
+##############################################################################
+AVAHI_CONFIGURE_ENABLE=		avahi
+AVAHI_LIB_DEPENDS=		libavahi-client.so:net/avahi-app
+AVAHI_VARS=			SAMBA4_SERVICES+=avahi_daemon
+
+MDNSRESPONDER_CONFIGURE_ENABLE=	dnssd
+MDNSRESPONDER_LIB_DEPENDS=	libdns_sd.so:net/mDNSResponder
+MDNSRESPONDER_VARS=		SAMBA4_SERVICES+=mdnsd
+##############################################################################
+MEMORY_DEBUG_IMPLIES=		DEBUG
+MEMORY_DEBUG_CONFIGURE_ENV=	ADDITIONAL_CFLAGS="-DENABLE_JEMALLOC `pkg-config --cflags jemalloc`" ADDITIONAL_LDFLAGS="`pkg-config --libs jemalloc`"
+MEMORY_DEBUG_LIB_DEPENDS=	libjemalloc.so.2:devel/jemalloc
+# https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=194046
+GDB_CMD?=			${LOCALBASE}/bin/gdb
+# https://bugzilla.samba.org/show_bug.cgi?id=8969
+PICKY_DEVELOPER_IMPLIES=	DEVELOPER
+PICKY_DEVELOPER_CONFIGURE_ON=	--picky-developer
+
+DEVELOPER_CONFIGURE_ON=		--enable-developer --enable-selftest --abi-check-disable
+DEVELOPER_CONFIGURE_ENV=	WAF_CMD_FORMAT=string
+DEVELOPER_BUILD_DEPENDS=	${SAMBA4_LMDB_DEPENDS} \
+				${GDB_CMD}:devel/gdb
+DEVELOPER_RUN_DEPENDS=		${SAMBA4_LMDB_DEPENDS}
+DEVELOPER_TEST_DEPENDS=		${GDB_CMD}:devel/gdb
+DEVELOPER_VARS_OFF=		GDB_CMD=true
+##############################################################################
+AD_DC_IMPLIES=			PYTHON3
+AD_DC_CONFIGURE_OFF=		--without-ad-dc
+AD_DC_BUILD_DEPENDS=		${SAMBA4_LMDB_DEPENDS}
+AD_DC_RUN_DEPENDS=		${SAMBA4_LMDB_DEPENDS}
+AD_DC_VARS=			PLIST+=${PKGDIR}/pkg-plist.ad_dc
+# samba-tool requires those for *upgrade
+AD_DC_BUILD_DEPENDS+=		${PYTHON_PKGNAMEPREFIX}markdown>=3.3.7:textproc/py-markdown@${PY_FLAVOR} \
+				${PYTHON_PKGNAMEPREFIX}dnspython>=2.2.1:dns/py-dnspython@${PY_FLAVOR}
+AD_DC_RUN_DEPENDS+=		${PYTHON_PKGNAMEPREFIX}markdown>=3.3.7:textproc/py-markdown@${PY_FLAVOR} \
+				${PYTHON_PKGNAMEPREFIX}dnspython>=2.2.1:dns/py-dnspython@${PY_FLAVOR}
+
+ADS_IMPLIES=			LDAP
+ADS_CONFIGURE_WITH=		ads
+
+CLUSTER_CONFIGURE_WITH=		cluster-support
+CLUSTER_VARS=			PLIST+=${PKGDIR}/pkg-plist.cluster
+
+CUPS_CONFIGURE_ENABLE=		cups iprint
+CUPS_LIB_DEPENDS=		libcups.so:print/cups
+# https://bugzilla.samba.org/show_bug.cgi?id=9545
+FAM_USES=			fam
+FAM_CONFIGURE_WITH=		fam
+
+GPGME_CONFIGURE_WITH=		gpgme
+GPGME_LIB_DEPENDS=		libgpgme.so:security/gpgme
+GPGME_RUN_DEPENDS=		${PYTHON_PKGNAMEPREFIX}gpgme>=1.14.0:security/py-gpgme@${PY_FLAVOR}
+
+GSSAPI_BUILTIN_USES=		bison
+GSSAPI_BUILTIN_BUILD_DEPENDS=	p5-JSON>=4.0:converters/p5-JSON
+
+GSSAPI_MIT_CONFIGURE_ON=	--with-system-mitkrb5 ${GSSAPIBASEDIR} \
+				--with-system-mitkdc=${GSSAPIBASEDIR}/sbin/krb5kdc \
+				--with-experimental-mit-ad-dc
+GSSAPI_MIT_USES=		gssapi:mit
+
+GSSAPI_HEIMDAL_CONFIGURE_ON=	--with-system-heimdalkrb5 ${GSSAPIBASEDIR}
+GSSAPI_HEIMDAL_USES=		gssapi:heimdal
+GSSAPI_HEIMDAL_PREVENTS=	AD_DC
+GSSAPI_HEIMDAL_PREVENTS_MSG=	GSSAPI_HEIMDAL and AD_DC enable conflicting options
+
+LDAP_CONFIGURE_WITH=		ldap
+LDAP_CONFIGURE_ON=		--with-openldap=${LOCALBASE}
+LDAP_USES=			ldap
+LDAP_VARS=			SAMBA4_MODULES+=idmap_ldap
+
+LIBZFS_CONFIGURE_WITH=		libzfs
+LIBZFS_VARS=			SAMBA4_MODULES+=vfs_zfs_space
+
+MANDOC_BUILD_DEPENDS=		${LOCALBASE}/share/xsl/docbook/manpages/docbook.xsl:textproc/docbook-xsl \
+				xsltproc:textproc/libxslt
+MANDOC_CONFIGURE_ENV_OFF=	XSLTPROC="true"
+
+PROFILE_CONFIGURE_WITH=		profiling-data
+
+QUOTAS_CONFIGURE_WITH=		quotas
+
+SPOTLIGHT_CONFIGURE_ENABLE=	spotlight
+SPOTLIGHT_BUILD_DEPENDS=	tracker>=1.4.1:sysutils/tracker
+SPOTLIGHT_RUN_DEPENDS=		tracker>=1.4.1:sysutils/tracker
+# ICU
+SPOTLIGHT_LIB_DEPENDS=		libicuuc.so:devel/icu
+SPOTLIGHT_USES=			bison gnome
+SPOTLIGHT_USE=			gnome=glib20
+
+SYSLOG_CONFIGURE_WITH=		syslog
+
+UTMP_CONFIGURE_WITH=		utmp
+
+##############################################################################
+.include <bsd.port.options.mk>
+##############################################################################
+.if ${OPSYS} == FreeBSD && ${OSVERSION} < 1300076
+IGNORE=runs only on FreeBSD 13.1 and above due use of O_EMPTY_PATH
+.endif
+
+.if !${PORT_OPTIONS:MADS} && ${PORT_OPTIONS:MAD_DC}
+IGNORE=To disable ADS option you also need to disable AD_DC option
+.endif
+
+.if !defined(WANT_EXP_MODULES) || empty(WANT_EXP_MODULES)
+WANT_EXP_MODULES=		vfs_cacheprime
+.endif
+
+.if ${WANT_EXP_MODULES:Mvfs_snapper}
+# snapper needs dbus
+LIB_DEPENDS+=			libdbus-1.so:devel/dbus
+LIB_DEPENDS+=			libdbus-glib-1.so:devel/dbus-glib
+.endif
+
+SAMBA4_MODULES+=		krb5_async_dns_krb5_locator krb5_winbind_krb5_locator idmap_nss idmap_autorid \
+				idmap_rid idmap_hash idmap_tdb idmap_tdb2 idmap_script \
+				nss-info_hash
+# List of extra modules taken from RHEL build
+# https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=197320
+.if ${PORT_OPTIONS:MADS}
+SAMBA4_MODULES+=		idmap_ad idmap_rfc2307 nss-info_template \
+				nss-info_rfc2307 nss-info_sfu nss-info_sfu20
+.endif
+# This kind of special for this distribution
+SAMBA4_MODULES+=		vfs_freebsd
+
+SAMBA4_MODULES+=		vfs_acl_tdb vfs_acl_xattr vfs_aio_fork vfs_aio_pthread \
+				vfs_audit vfs_cap vfs_catia vfs_commit vfs_crossrename \
+				vfs_default_quota vfs_dirsort vfs_expand_msdfs \
+				vfs_extd_audit vfs_fake_perms vfs_full_audit \
+				vfs_linux_xfs_sgid vfs_media_harmony vfs_offline \
+				vfs_preopen vfs_readahead vfs_readonly vfs_recycle \
+				vfs_shadow_copy vfs_shadow_copy2 vfs_shell_snap \
+				vfs_streams_depot vfs_streams_xattr vfs_syncops \
+				vfs_time_audit vfs_unityed_media vfs_virusfilter \
+				vfs_widelinks vfs_worm vfs_xattr_tdb vfs_zfsacl
+
+.if ${PORT_OPTIONS:MDEVELOPER}
+SAMBA4_MODULES+=		auth_skel pdb_test gpext_security gpext_registry \
+				gpext_scripts perfcount_test vfs_fake_dfq \
+				vfs_skel_opaque vfs_skel_transparent \
+				vfs_shadow_copy_test vfs_fake_acls \
+				vfs_nfs4acl_xattr vfs_error_inject vfs_delay_inject
+.endif
+# Python bindings
+.if ! ${PORT_OPTIONS:MPYTHON3} || defined(NO_PYTHON)
+USES+=				python:build,test
+CONFIGURE_ARGS+=		--disable-python
+.else
+USES+=				python
+PLIST+=				${PKGDIR}/pkg-plist.python
+# Don't cache Python modules
+CONFIGURE_ARGS+=		--nopycache
+MAKE_ENV+=			PYTHONDONTWRITEBYTECODE=1
+
+.	if defined(SAMBA4_BUNDLED_TALLOC) && ${SAMBA4_BUNDLED_TALLOC} == yes
+SAMBA4_BUNDLED_LIBS+=		pytalloc-util
+.	else
+SAMBA4_BUNDLED_LIBS+=		!pytalloc-util
+.	endif
+
+.	if defined(SAMBA4_BUNDLED_TEVENT) && ${SAMBA4_BUNDLED_TEVENT} == yes
+SAMBA4_BUNDLED_LIBS+=		pytevent
+.	else
+SAMBA4_BUNDLED_LIBS+=		!pytevent
+.	endif
+
+.	if defined(SAMBA4_BUNDLED_TDB) && ${SAMBA4_BUNDLED_TDB} == yes
+SAMBA4_BUNDLED_LIBS+=		pytdb
+.	else
+SAMBA4_BUNDLED_LIBS+=		!pytdb
+.	endif
+
+.	if defined(SAMBA4_BUNDLED_LDB) && ${SAMBA4_BUNDLED_LDB} == yes
+SAMBA4_BUNDLED_LIBS+=		pyldb pyldb-util
+.	else
+SAMBA4_BUNDLED_LIBS+=		!pyldb !pyldb-util
+.	endif
+.endif
+
+.if defined(WANT_EXP_MODULES) && !empty(WANT_EXP_MODULES)
+SAMBA4_MODULES+=		${WANT_EXP_MODULES}
+.endif
+
+.if defined(SAMBA4_BUNDLED_LIBS) && !empty(SAMBA4_BUNDLED_LIBS)
+CONFIGURE_ARGS+=		--bundled-libraries="${SAMBA4_BUNDLED_LIBS:Q:C|(\\\\ )+|,|g:S|\\||g}"
+.endif
+
+.if defined(SAMBA4_MODULES) && !empty(SAMBA4_MODULES)
+CONFIGURE_ARGS+=		--with-shared-modules="${SAMBA4_MODULES:C|-|_|:Q:C|(\\\\ )+|,|g:S|\\||g}"
+.endif
+# XXX: Hack for nss-info_* -> nss_info/* modules
+# Add selected modules to the plist
+.for module in ${SAMBA4_MODULES}
+PLIST_FILES+=			${SAMBA4_MODULEDIR}/${module:C|_|/|:C|-|_|}.so
+.endfor
+
+.for module_class in ${SAMBA4_MODULES_CLASS}
+PLIST_DIRS+=			${SAMBA4_MODULEDIR}/${module_class}
+.endfor
+PLIST_DIRS+=			${SAMBA4_MODULEDIR}
+
+.if defined(WITH_DEBUG)
+CONFIGURE_ARGS+=		--verbose --enable-debug
+MAKE_ARGS+=			--verbose
+DEBUG_FLAGS?=			-g -ggdb3 -O0
+.endif
+
+##############################################################################
+.include <bsd.port.pre.mk>
+##############################################################################
+# Only for 64-bit architectures
+.if ${ARCH} != armv6 && ${ARCH} != armv7 && ${ARCH} != i386 && ${ARCH} != mips && ${ARCH} != powerpc && ${ARCH} != powerpcspe
+.	if defined(SAMBA4_BUNDLED_LDB) && ${SAMBA4_BUNDLED_LDB} == yes && (${PORT_OPTIONS:MAD_DC} || ${PORT_OPTIONS:MDEVELOPER})
+# LMDB
+SAMBA4_LMDB_DEPENDS=		lmdb>=0.9.16:databases/lmdb
+PLIST_FILES+=			${SAMBA4_LIBDIR}/private/libldb-mdb-int-samba4.so \
+				${SAMBA4_MODULEDIR}/ldb/mdb.so
+.	endif
+.endif
+
+.if ${PORT_OPTIONS:MGSSAPI_MIT}
+PLIST_FILES+=			${SAMBA4_MODULEDIR}/krb5/winbind_krb5_localauth.so \
+				share/man/man8/winbind_krb5_localauth.8.gz
+.	if ${PORT_OPTIONS:MAD_DC}
+PLIST_FILES+=			${SAMBA4_LIBDIR}/krb5/plugins/kdb/samba.so
+.	endif
+.endif
+# for libexecinfo: (so that __builtin_frame_address() finds the top of the stack)
+CFLAGS_amd64+=			-fno-omit-frame-pointer
+# No fancy color error messages
+CFLAGS+=			${CFLAGS_${CHOSEN_COMPILER_TYPE}}
+CFLAGS_clang=			-fno-color-diagnostics
+CONFIGURE_ENV+=			NOCOLOR=yes WAF_LOG_FORMAT='%(c1)s%(zone)s%(c2)s %(message)s'
+MAKE_ENV+=			NOCOLOR=yes WAF_LOG_FORMAT='%(c1)s%(zone)s%(c2)s %(message)s'
+# Allow rpcgen to find proper CPP
+MAKE_ENV+=			RPCGEN_CPP="${CPP}"
+#.if ${readline_ARGS} == port
+#CFLAGS+=			-D_FUNCTION_DEF
+#.endif
+# Some symbols in samba's linker version scripts are not defined, but since the
+# scripts are generated dynamically, suppress errors with lld >= 17 due to these
+# undefined symbols.
+LDFLAGS+=			-Wl,--undefined-version
+
+SAMBA4_SUB=			SAMBA4_LOGDIR="${SAMBA4_LOGDIR}" \
+				SAMBA4_RUNDIR="${SAMBA4_RUNDIR}" \
+				SAMBA4_LOCKDIR="${SAMBA4_LOCKDIR}" \
+				SAMBA4_LIBDIR="${SAMBA4_LIBDIR}" \
+				SAMBA4_MODULEDIR="${SAMBA4_MODULEDIR}" \
+				SAMBA4_BINDDNSDIR="${SAMBA4_BINDDNSDIR}" \
+				SAMBA4_PRIVATEDIR="${SAMBA4_PRIVATEDIR}" \
+				SAMBA4_CONFDIR="${SAMBA4_CONFDIR}" \
+				SAMBA4_CONFIG="${SAMBA4_CONFIG}" \
+				SAMBA4_SERVICES="${SAMBA4_SERVICES}"
+
+PLIST_SUB+=			${SAMBA4_SUB}
+SUB_LIST+=			${SAMBA4_SUB}
+
+USE_RC_SUBR=			samba_server
+SUB_FILES=			pkg-message README.FreeBSD
+
+PORTDOCS=			README.FreeBSD
+
+post-extract:
+				@${RM} -r ${WRKSRC}/pidl/lib/Parse/Yapp
+
+post-patch:
+				@${REINPLACE_CMD} -e 's|$${PKGCONFIGDIR}|${PKGCONFIGDIR}|g' \
+					${PATCH_WRKSRC}/buildtools/wafsamba/pkgconfig.py
+				@${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
+					${PATCH_WRKSRC}/buildtools/wafsamba/wafsamba.py
+				@${REINPLACE_CMD} -e 's|%%GDB_CMD%%|${GDB_CMD}|g' \
+					${PATCH_WRKSRC}/buildtools/scripts/abi_gen.sh
+				@${REINPLACE_CMD} -e 's|%%SAMBA4_CONFIG%%|${SAMBA4_CONFIG}|g' \
+					${PATCH_WRKSRC}/dynconfig/wscript
+
+# Use threading (or multiprocessing) but not thread (renamed in python 3+).
+pre-configure:
+.if (!${PORT_OPTIONS:MPYTHON3} || defined(NO_PYTHON)) && ${PORT_OPTIONS:MAD_DC}
+				@${ECHO_CMD}; \
+				${ECHO_MSG} "===>  AD_DC option requires PYTHON3 to be set"; \
+				${ECHO_CMD}; \
+				${FALSE}
+.endif
+
+pre-build-MANDOC-off:
+				${MKDIR} ${BUILD_WRKSRC}/bin/default/docs-xml/
+				${CP} -rp ${BUILD_WRKSRC}/docs/manpages ${BUILD_WRKSRC}/bin/default/docs-xml/
+.for man in			libcli/nbt/man/nmblookup4.1 \
+				librpc/tools/ndrdump.1 \
+				source4/lib/registry/man/regdiff.1 \
+				source4/lib/registry/man/regpatch.1 \
+				source4/lib/registry/man/regshell.1 \
+				source4/lib/registry/man/regtree.1 \
+				source4/scripting/man/samba-gpupdate.8 \
+				source4/torture/man/gentest.1 \
+				source4/torture/man/locktest.1 \
+				source4/torture/man/masktest.1 \
+				source4/torture/man/smbtorture.1 \
+				source4/utils/man/ntlm_auth4.1 \
+				source4/utils/oLschema2ldif/oLschema2ldif.1 \
+				lib/tdb/man/tdbdump.8 \
+				lib/tdb/man/tdbbackup.8 \
+				lib/tdb/man/tdbtool.8 \
+				lib/talloc/man/talloc.3 \
+				lib/tdb/man/tdbrestore.8 \
+				lib/ldb/man/ldb.3 \
+				lib/ldb/man/ldbadd.1 \
+				lib/ldb/man/ldbdel.1 \
+				lib/ldb/man/ldbedit.1 \
+				lib/ldb/man/ldbmodify.1 \
+				lib/ldb/man/ldbrename.1 \
+				lib/ldb/man/ldbsearch.1 \
+				docs-xml/manpages/vfs_freebsd.8
+					${MKDIR} `dirname ${BUILD_WRKSRC}/bin/default/${man}`
+					${INSTALL_MAN} ${FILESDIR}/man/`basename ${man}` ${BUILD_WRKSRC}/bin/default/${man}
+.endfor
+.if ${PORT_OPTIONS:MCLUSTER}
+				${MKDIR} ${BUILD_WRKSRC}/bin/default/ctdb/
+.	for man in		ctdb_diagnostics.1 ctdb.1 ctdbd_wrapper.1 ctdbd.1 ltdbtool.1 onnode.1 ping_pong.1 \
+				ctdb.conf.5 ctdb.sysconfig.5 ctdb-script.options.5 \
+				ctdb.7 ctdb-statistics.7 ctdb-tunables.7
+					${INSTALL_MAN} ${FILESDIR}/man/${man} ${BUILD_WRKSRC}/bin/default/ctdb/
+.	endfor
+.endif
+
+post-install-rm-junk:
+				${RM} -r ${STAGEDIR}${PYTHON_SITELIBDIR}/samba/third_party
+				${FIND} ${STAGEDIR}${PYTHON_SITELIBDIR} -name __pycache__ \
+					-type d -print0 | ${XARGS} -0 -n 1 -t ${RM} -r
+				${FIND} ${STAGEDIR} -type f -empty -delete
+
+post-install-fix-manpages:
+.for f in vfs_aio_linux.8 vfs_btrfs.8 vfs_ceph.8 vfs_gpfs.8
+				${RM} ${STAGEDIR}${PREFIX}/share/man/man8/${f}
+.endfor
+.if defined(SAMBA4_BUNDLED_LDB) && ${SAMBA4_BUNDLED_LDB} == yes
+.	for f in ldbadd.1 ldbdel.1 ldbedit.1 ldbmodify.1 ldbrename.1 ldbsearch.1
+				${MV} ${STAGEDIR}${PREFIX}/share/man/man1/${f} ${STAGEDIR}${PREFIX}/share/man/man1/samba-${f}
+.	endfor
+.endif
+.if defined(SAMBA4_BUNDLED_TDB) && ${SAMBA4_BUNDLED_TDB} == yes
+.	for f in tdbbackup.8 tdbdump.8 tdbrestore.8 tdbtool.8
+				${MV} ${STAGEDIR}${PREFIX}/share/man/man8/${f} ${STAGEDIR}${PREFIX}/share/man/man8/samba-${f}
+.	endfor
+.endif
+
+post-install: post-install-rm-junk post-install-fix-manpages
+				${LN} -sf smb.conf.5.gz ${STAGEDIR}${PREFIX}/share/man/man5/smb4.conf.5.gz
+# Run post-install script
+.for dir in			${SAMBA4_LOGDIR} ${SAMBA4_RUNDIR} ${SAMBA4_LOCKDIR} ${SAMBA4_MODULEDIR}
+					${INSTALL} -d -m 0755 "${STAGEDIR}${dir}"
+.endfor
+				${INSTALL} -d -m 0750 "${STAGEDIR}${SAMBA4_BINDDNSDIR}"
+				${INSTALL} -d -m 0750 "${STAGEDIR}${SAMBA4_PRIVATEDIR}"
+.for module_class in			${SAMBA4_MODULES_CLASS}
+					${INSTALL} -d -m 0755 "${STAGEDIR}${SAMBA4_MODULEDIR}/${module_class}"
+.endfor
+.if !defined(WITH_DEBUG)
+				-${FIND} ${STAGEDIR}${PREFIX}/bin ${STAGEDIR}${PREFIX}/sbin ${STAGEDIR}${PREFIX}/libexec \
+					-type f -print0 | ${XARGS} -0 -n 1 -t ${STRIP_CMD}
+				-${FIND} ${STAGEDIR}${PREFIX}/lib -name '*.so*' \
+					-type f -print0 | ${XARGS} -0 -n 1 -t ${STRIP_CMD}
+.endif
+
+post-install-FRUIT-off:
+				${RM} ${STAGEDIR}${SAMBA4_MODULEDIR}/vfs/fruit.so
+				${RM} ${STAGEDIR}${PREFIX}/share/man/man8/vfs_fruit.8
+
+post-install-DOCS-on:
+				${MKDIR} ${STAGEDIR}${DOCSDIR}
+.for doc in			${PORTDOCS}
+				${INSTALL_DATA} ${WRKDIR}/${doc} ${STAGEDIR}${DOCSDIR}
+.endfor
+
+post-install-CLUSTER-on:
+				${LN} -nfs ../../../../share/ctdb/events/legacy/00.ctdb.script		${STAGEDIR}${PREFIX}/etc/ctdb/events/legacy/00.ctdb.script
+				${LN} -nfs ../../../../share/ctdb/events/legacy/10.interface.script	${STAGEDIR}${PREFIX}/etc/ctdb/events/legacy/10.interface.script
+				${LN} -nfs ../../../../share/ctdb/events/legacy/05.system.script	${STAGEDIR}${PREFIX}/etc/ctdb/events/legacy/05.system.script
+				${LN} -nfs ../../../../share/ctdb/events/legacy/01.reclock.script	${STAGEDIR}${PREFIX}/etc/ctdb/events/legacy/01.reclock.script
+
+.include <bsd.port.post.mk>
diff --git a/net/samba419/distinfo b/net/samba419/distinfo
new file mode 100644
index 000000000000..6f25c656ce50
--- /dev/null
+++ b/net/samba419/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1705944756
+SHA256 (samba-4.19.4.tar.gz) = 4026d93b866db198c8ca1685b0f5d52793f65c6e63cb364163af661fdff0968c
+SIZE (samba-4.19.4.tar.gz) = 41839810
diff --git a/net/samba419/files/0001-Compact-and-simplify-modules-build-and-config-genera.patch b/net/samba419/files/0001-Compact-and-simplify-modules-build-and-config-genera.patch
new file mode 100644
index 000000000000..b4bc56519f7e
--- /dev/null
+++ b/net/samba419/files/0001-Compact-and-simplify-modules-build-and-config-genera.patch
@@ -0,0 +1,292 @@
+From 05e3cc236406680a55e19b204202b63cdaf48ea1 Mon Sep 17 00:00:00 2001
+From: "Timur I. Bakeyev" <timur@FreeBSD.org>
+Date: Mon, 1 Aug 2022 04:15:43 +0200
+Subject: [PATCH 01/28] Compact and simplify modules build and config
+ generation for Bind 9.x AD DLZ.
+
+Signed-off-by: Timur I. Bakeyev <timur@FreeBSD.org>
+---
+ python/samba/provision/sambadns.py | 68 ++++++++++++------------------
+ source4/dns_server/dlz_minimal.h   | 44 +++++++++----------
+ source4/dns_server/wscript_build   | 62 +++------------------------
+ source4/setup/named.conf.dlz       | 25 +----------
+ source4/torture/dns/wscript_build  |  2 +-
+ 5 files changed, 55 insertions(+), 146 deletions(-)
+
+diff --git a/python/samba/provision/sambadns.py b/python/samba/provision/sambadns.py
+index 404b346a885..8e5a8ba5f25 100644
+--- a/python/samba/provision/sambadns.py
++++ b/python/samba/provision/sambadns.py
+@@ -21,6 +21,7 @@
+ """DNS-related provisioning"""
+ 
+ import os
++import re
+ import uuid
+ import shutil
+ import time
+@@ -1010,52 +1011,37 @@ def create_named_conf(paths, realm, dnsdomain, dns_backend, logger):
+                                      stderr=subprocess.STDOUT,
+                                      cwd='.').communicate()[0]
+         bind_info = get_string(bind_info)
+-        bind9_8 = '#'
+-        bind9_9 = '#'
+-        bind9_10 = '#'
+-        bind9_11 = '#'
+-        bind9_12 = '#'
+-        bind9_14 = '#'
+-        bind9_16 = '#'
+-        bind9_18 = '#'
+-        if bind_info.upper().find('BIND 9.8') != -1:
+-            bind9_8 = ''
+-        elif bind_info.upper().find('BIND 9.9') != -1:
+-            bind9_9 = ''
+-        elif bind_info.upper().find('BIND 9.10') != -1:
+-            bind9_10 = ''
+-        elif bind_info.upper().find('BIND 9.11') != -1:
+-            bind9_11 = ''
+-        elif bind_info.upper().find('BIND 9.12') != -1:
+-            bind9_12 = ''
+-        elif bind_info.upper().find('BIND 9.14') != -1:
+-            bind9_14 = ''
+-        elif bind_info.upper().find('BIND 9.16') != -1:
+-            bind9_16 = ''
+-        elif bind_info.upper().find('BIND 9.18') != -1:
+-            bind9_18 = ''
+-        elif bind_info.upper().find('BIND 9.7') != -1:
+-            raise ProvisioningError("DLZ option incompatible with BIND 9.7.")
+-        elif bind_info.upper().find('BIND_9.13') != -1:
+-            raise ProvisioningError("Only stable/esv releases of BIND are supported.")
+-        elif bind_info.upper().find('BIND_9.15') != -1:
+-            raise ProvisioningError("Only stable/esv releases of BIND are supported.")
+-        elif bind_info.upper().find('BIND_9.17') != -1:
+-            raise ProvisioningError("Only stable/esv releases of BIND are supported.")
++        bind9_release = re.search('BIND (9)\.(\d+)\.', bind_info, re.I)
++        if bind9_release:
++            bind9_disabled = ''
++            bind9_version = bind9_release.group(0) + "x"
++            bind9_version_major = int(bind9_release.group(1))
++            bind9_version_minor = int(bind9_release.group(2))
++            if bind9_version_minor == 7:
++                raise ProvisioningError("DLZ option incompatible with BIND 9.7.")
++            elif bind9_version_minor == 8:
++                bind9_dlz_version = "9"
++            elif bind9_version_minor in [13, 15, 17]:
++                raise ProvisioningError("Only stable/esv releases of BIND are supported.")
++            else:
++                bind9_dlz_version = "%d_%d" % (bind9_version_major, bind9_version_minor)
+         else:
++            bind9_disabled = '# '
++            bind9_version = "BIND z.y.x"
++            bind9_dlz_version = "z_y"
+             logger.warning("BIND version unknown, please modify %s manually." % paths.namedconf)
++
++        bind9_dlz = (
++            '    # For %s\n'
++            '    %sdatabase "dlopen %s/bind9/dlz_bind%s.so";'
++        ) % (
++            bind9_version, bind9_disabled, samba.param.modules_dir(), bind9_dlz_version
++        )
*** 40667 LINES SKIPPED ***