ddfe6ae2fc
With recent versions of clang, samba could dump core shortly after startup, terminating with either SIGILL or SIGSEGV. Investigation showed that samba is using C99 variable length arrays (VLAs), and in some cases the length of these arrays would become zero. Since this is undefined behavior, various interesting things would happen, often ending in segfaults. Fix this by avoiding to use zero as the length for these VLA declarations. A similar patch was also sent upstream, and was accepted and included in subsequent samba releases. See also: https://bugzilla.samba.org/show_bug.cgi?id=14605 Reported by: Dries Michiels <driesm.michiels@gmail.com> PR: 252157 MFH: 2021Q1
669 lines
24 KiB
Makefile
669 lines
24 KiB
Makefile
# Created by: timur@FreeBSD.org
|
|
# $FreeBSD$
|
|
|
|
PORTNAME= ${SAMBA4_BASENAME}413
|
|
PORTVERSION= ${SAMBA4_VERSION}
|
|
PORTREVISION= 2
|
|
CATEGORIES?= net
|
|
MASTER_SITES= SAMBA/samba/stable SAMBA/samba/rc
|
|
DISTNAME= ${SAMBA4_DISTNAME}
|
|
|
|
MAINTAINER= timur@FreeBSD.org
|
|
COMMENT= Free SMB/CIFS and AD/DC server and client for Unix
|
|
|
|
LICENSE= GPLv3+
|
|
LICENSE_FILE= ${WRKSRC}/COPYING
|
|
|
|
IGNORE_NONTHREAD_PYTHON= needs port lang/python${PYTHON_SUFFIX} to be build with THREADS support
|
|
CONFLICTS_INSTALL?= samba4-4.0.* samba4[1-9]-4.* samba41[0-24-9]-4.1* p5-Parse-Pidl-4.*
|
|
|
|
USES= cpe
|
|
|
|
EXTRA_PATCHES+= ${PATCHDIR}/0001-Zfs-provision-1.patch:-p1
|
|
|
|
SAMBA4_BASENAME= samba
|
|
SAMBA4_PORTNAME= ${SAMBA4_BASENAME}4
|
|
SAMBA4_VERSION= 4.13.1
|
|
SAMBA4_DISTNAME= ${SAMBA4_BASENAME}-${SAMBA4_VERSION:S|.p|pre|:S|.r|rc|:S|.t|tp|:S|.a|alpha|}
|
|
|
|
WRKSRC?= ${WRKDIR}/${DISTNAME}
|
|
|
|
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
|
|
|
|
CONFIGURE_ARGS+= --mandir="${MANPREFIX}/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"
|
|
|
|
USES+= compiler:c++11-lang iconv localbase:ldflags \
|
|
perl5 pkgconfig shebangfix ssl waf gettext-runtime
|
|
USE_PERL5= build
|
|
USE_LDCONFIG= ${SAMBA4_LIBDIR}
|
|
WAF_CMD= buildtools/bin/waf
|
|
CONFIGURE_LOG= bin/config.log
|
|
|
|
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 NTVFS PROFILE QUOTAS SPOTLIGHT SYSLOG UTMP
|
|
# This shouldn't be default in the release
|
|
OPTIONS_DEFINE+= DEVELOPER MANDOC
|
|
#OPTIONS_DEFINE+= 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
|
|
|
|
OPTIONS_RADIO= DNS
|
|
OPTIONS_RADIO_DNS= NSUPDATE BIND911 BIND916
|
|
# Make those default options
|
|
OPTIONS_DEFAULT= AD_DC ADS DOCS FAM LDAP \
|
|
QUOTAS SYSLOG UTMP PROFILE \
|
|
FRUIT GSSAPI_BUILTIN AVAHI
|
|
##############################################################################
|
|
AD_DC_DESC= Active Directory Domain Controller
|
|
ADS_DESC= Active Directory client(implies LDAP)
|
|
CLUSTER_DESC= Clustering support
|
|
DEVELOPER_DESC= With developer framework(implies NTVFS)
|
|
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
|
|
NTVFS_DESC= Build *DEPRECATED* NTVFS file server
|
|
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
|
|
GLUSTERFS_DESC= GlusterFS support
|
|
FRUIT_DESC= MacOSX and TimeMachine support
|
|
|
|
GSSAPI_BUILTIN_DESC= GSSAPI support via bundled Heimdal
|
|
|
|
ZEROCONF_DESC= Zero configuration networking
|
|
ZEROCONF_NONE_DESC= Zeroconf support is absent
|
|
|
|
DNS_DESC= DNS frontend
|
|
BIND911_DESC= Use Bind 9.11 as AD DC DNS server frontend
|
|
BIND916_DESC= Use Bind 9.16 as AD DC DNS server frontend
|
|
NSUPDATE_DESC= Use samba NSUPDATE utility for AD DC
|
|
##############################################################################
|
|
# 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?= no
|
|
SAMBA4_BUNDLED_TALLOC?= no
|
|
SAMBA4_BUNDLED_TEVENT?= no
|
|
SAMBA4_BUNDLED_TDB?= no
|
|
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.1:devel/talloc
|
|
RUN_DEPENDS+= talloc>=2.3.1: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.10.2:devel/tevent
|
|
RUN_DEPENDS+= tevent>=0.10.2: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.3:databases/tdb
|
|
RUN_DEPENDS+= tdb>=1.4.3: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+= ldb22>=2.2.0:databases/ldb22
|
|
RUN_DEPENDS+= ldb22>=2.2.0:databases/ldb22
|
|
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/tshark
|
|
# 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+= 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+= man/man8/vfs_glusterfs.8.gz
|
|
##############################################################################
|
|
ZEROCONF_NONE_VARS= 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
|
|
##############################################################################
|
|
BIND911_RUN_DEPENDS= bind911>=9.11.0.0:dns/bind911
|
|
BIND916_RUN_DEPENDS= bind916>=9.16.0.0:dns/bind916
|
|
NSUPDATE_RUN_DEPENDS= samba-nsupdate:dns/samba-nsupdate
|
|
##############################################################################
|
|
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_IMPLIES= NTVFS
|
|
DEVELOPER_CONFIGURE_ON= --enable-developer --enable-selftest --abi-check-disable
|
|
DEVELOPER_CONFIGURE_ENV= WAF_CMD_FORMAT=string
|
|
DEVELOPER_RUN_DEPENDS= ${SAMBA4_LMDB_DEPENDS}
|
|
DEVELOPER_BUILD_DEPENDS= ${GDB_CMD}:devel/gdb \
|
|
${SAMBA4_LMDB_DEPENDS}
|
|
DEVELOPER_TEST_DEPENDS= ${GDB_CMD}:devel/gdb
|
|
DEVELOPER_VARS_OFF= GDB_CMD=true
|
|
# XXX: Mostly used in conjuction with the DEVELOPER option, don't enable it
|
|
# if you don't know what you are doing
|
|
NTVFS_IMPLIES= AD_DC
|
|
NTVFS_CONFIGURE_WITH= ntvfs-fileserver
|
|
NTVFS_PLIST_FILES= ${SAMBA4_MODULEDIR}/service/smb.so \
|
|
lib/samba4/private/libntvfs-samba4.so
|
|
##############################################################################
|
|
CLUSTER_CONFIGURE_WITH= cluster-support
|
|
|
|
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
|
|
|
|
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
|
|
|
|
AD_DC_CONFIGURE_OFF= --without-ad-dc
|
|
AD_DC_BUILD_DEPENDS= ${SAMBA4_LMDB_DEPENDS}
|
|
AD_DC_RUN_DEPENDS= ${SAMBA4_LMDB_DEPENDS}
|
|
|
|
ADS_IMPLIES= LDAP
|
|
ADS_CONFIGURE_WITH= ads dnsupdate
|
|
|
|
LDAP_CONFIGURE_WITH= ldap
|
|
LDAP_CONFIGURE_ON= --with-openldap=${LOCALBASE}
|
|
LDAP_USE= OPENLDAP=yes
|
|
LDAP_VARS= SAMBA4_MODULES+=idmap_ldap
|
|
|
|
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
|
|
|
|
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"
|
|
|
|
##############################################################################
|
|
.include <bsd.port.options.mk>
|
|
##############################################################################
|
|
|
|
.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+= vfs_freebsd
|
|
|
|
SAMBA4_MODULES+= 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
|
|
|
|
.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 defined(NO_PYTHON)
|
|
USES+= python:build,test
|
|
CONFIGURE_ARGS+= --disable-python
|
|
PLIST_SUB+= SAMBA4_PYTHON="@comment "
|
|
SUB_LIST+= SAMBA4_PYTHON="@comment "
|
|
.else
|
|
USES+= python:3.6+
|
|
PLIST_SUB+= SAMBA4_PYTHON=""
|
|
SUB_LIST+= SAMBA4_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
|
|
# samba-tool requires those for *upgrade
|
|
. if ${PORT_OPTIONS:MAD_DC}
|
|
RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}dnspython>=1.15.0:dns/py-dnspython@${PY_FLAVOR}
|
|
RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}markdown>=2.6.11:textproc/py-markdown@${PY_FLAVOR}
|
|
. if ${PORT_OPTIONS:MGPGME}
|
|
RUN_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}gpgme>=1.14.0:security/py-gpgme@${PY_FLAVOR}
|
|
. endif
|
|
. 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
|
|
|
|
.if defined(WITH_DEBUG)
|
|
CONFIGURE_ARGS+= --verbose --enable-debug
|
|
MAKE_ARGS+= --verbose
|
|
DEBUG_FLAGS?= -g -ggdb3 -O0
|
|
.endif
|
|
|
|
##############################################################################
|
|
.include <bsd.port.pre.mk>
|
|
##############################################################################
|
|
# Implemented in the gcrypt on AMD64
|
|
.if ${ARCH} == "amd64"
|
|
CONFIGURE_ARGS+= --accel-aes=intelaesni
|
|
.else
|
|
CONFIGURE_ARGS+= --accel-aes=none
|
|
.endif
|
|
|
|
# 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+= lib/samba4/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 \
|
|
man/man8/winbind_krb5_localauth.8.gz
|
|
. if ${PORT_OPTIONS:MAD_DC}
|
|
PLIST_FILES+= lib/samba4/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
|
|
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'
|
|
.if ${CHOSEN_COMPILER_TYPE} == clang
|
|
CFLAGS+= -fno-color-diagnostics
|
|
.endif
|
|
# Allow rpcgen to find proper CPP
|
|
MAKE_ENV+= RPCGEN_CPP="${CPP}"
|
|
#.if ${readline_ARGS} == port
|
|
#CFLAGS+= -D_FUNCTION_DEF
|
|
#.endif
|
|
|
|
# Make sure that the right version of Python is used by the tools
|
|
# https://bugzilla.samba.org/show_bug.cgi?id=7305
|
|
SHEBANG_FILES= ${PATCH_WRKSRC}/source4/scripting/bin/* ${PATCH_WRKSRC}/selftest/*
|
|
|
|
SAMBA4_SUB= SAMBA4_LOGDIR="${SAMBA4_LOGDIR}" \
|
|
SAMBA4_RUNDIR="${SAMBA4_RUNDIR}" \
|
|
SAMBA4_LOCKDIR="${SAMBA4_LOCKDIR}" \
|
|
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:MAD_DC} && ${PORT_OPTIONS:MNTVFS}
|
|
@${ECHO_CMD}; \
|
|
${ECHO_MSG} "===> NTVFS option requires AD_DC to be set"; \
|
|
${ECHO_CMD}; \
|
|
${FALSE}
|
|
.endif
|
|
@if ! ${PYTHON_CMD} -c "import multiprocessing;" 2>/dev/null; then \
|
|
${ECHO_CMD}; \
|
|
${ECHO_MSG} "===> ${PKGNAME} "${IGNORE_NONTHREAD_PYTHON:Q}.; \
|
|
${ECHO_CMD}; \
|
|
${FALSE}; \
|
|
fi
|
|
|
|
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/ldbadd.1 \
|
|
lib/ldb/man/ldbsearch.1 \
|
|
lib/ldb/man/ldbmodify.1 \
|
|
lib/ldb/man/ldbrename.1 \
|
|
lib/ldb/man/ldbdel.1 \
|
|
lib/ldb/man/ldbedit.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
|
|
|
|
post-install-fix-manpages:
|
|
.for f in vfs_aio_linux.8 vfs_btrfs.8 vfs_ceph.8 vfs_gpfs.8
|
|
${RM} ${STAGEDIR}${PREFIX}/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}/man/man1/${f} ${STAGEDIR}${PREFIX}/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}/man/man8/${f} ${STAGEDIR}${PREFIX}/man/man8/samba-${f}
|
|
. endfor
|
|
.endif
|
|
|
|
post-install: post-install-rm-junk post-install-fix-manpages
|
|
${LN} -sf smb.conf.5.gz ${STAGEDIR}${PREFIX}/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 dir in auth bind9 gensec gpext idmap ldb nss_info pdb perfcount process_model service vfs
|
|
${INSTALL} -d -m 0755 "${STAGEDIR}${SAMBA4_MODULEDIR}/${dir}"
|
|
.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}/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>
|