ports/183885: net/samba4: use net/mDNSResponder to provide Zeroconf support

Bradley T. Hughes bradleythughes at fastmail.fm
Tue Nov 12 09:50:01 UTC 2013


>Number:         183885
>Category:       ports
>Synopsis:       net/samba4: use net/mDNSResponder to provide Zeroconf support
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Tue Nov 12 09:50:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator:     Bradley T. Hughes
>Release:        10.0-BETA3
>Organization:
>Environment:
FreeBSD freebsd10.local 10.0-BETA3 FreeBSD 10.0-BETA3 #0 r257580: Sun Nov  3 19:43:01 UTC 2013     root at snap.freebsd.org:/usr/obj/usr/src/sys/GENERIC  amd64
>Description:
Samba supports using libdns_sd from net/mDNSResponder. The configure wscript and build is slightly broken, though. The attached patch adds support to source3/wscript and source3/wscript_build to detect dns_sd.h and libdns_sd, with a small compile fix for source3/client/dnsbrowse.c, and uses OPTIONS_RADIO to let port users choose between Avahi, mDNSResponder, or no Zeroconf support.

I haven't submitted this upstream (yet).
>How-To-Repeat:

>Fix:


Patch attached with submission follows:

diff -urN /usr/ports/net/samba4/Makefile samba4-with-mDNSResponder/Makefile
--- /usr/ports/net/samba4/Makefile	2013-09-21 00:10:23.000000000 +0200
+++ samba4-with-mDNSResponder/Makefile	2013-11-12 10:36:01.006596453 +0100
@@ -3,7 +3,7 @@
 
 PORTNAME?=		${SAMBA4_PORTNAME}
 PORTVERSION?=		${SAMBA4_VERSION}
-PORTREVISION?=		0
+PORTREVISION?=		1
 CATEGORIES?=		net
 MASTER_SITES=		${MASTER_SITE_SAMBA}
 MASTER_SITE_SUBDIR=	samba/stable samba/rc
@@ -111,7 +111,7 @@
 SAMBA4_BUNDLED_LIBS+=	!ldb
 ##############################################################################
 # Options
-OPTIONS_DEFINE=		ACL_SUPPORT ADS AIO_SUPPORT AVAHI CUPS DEBUG \
+OPTIONS_DEFINE=		ACL_SUPPORT ADS AIO_SUPPORT CUPS DEBUG \
 			DNSUPDATE FAM_SUPPORT LDAP PAM_SMBPASS \
 			PTHREADPOOL QUOTAS SWAT SYSLOG UTMP WINBIND
 
@@ -135,6 +135,10 @@
 
 DEVELOPER_DESC=		With development support
 
+OPTIONS_RADIO=		ZEROCONF
+OPTIONS_RADIO_ZEROCONF=	AVAHI MDNSRESPONDER
+OPTIONS_DEFAULT+=	AVAHI
+
 OPTIONS_SINGLE=		DNS
 OPTIONS_SINGLE_DNS=	NSUPDATE BIND98 BIND99
 
@@ -256,6 +260,13 @@
 CONFIGURE_ARGS+=	--disable-avahi
 .endif
 
+.if ${PORT_OPTIONS:MMDNSRESPONDER}
+LIB_DEPENDS+=		dns_sd:${PORTSDIR}/net/mDNSResponder
+CONFIGURE_ARGS+=	--enable-dnssd
+.else
+CONFIGURE_ARGS+=	--disable-dnssd
+.endif
+
 .if ${PORT_OPTIONS:MCUPS}
 LIB_DEPENDS+=		cups:${PORTSDIR}/print/cups-client
 CONFIGURE_ARGS+=	--enable-cups --enable-iprint
diff -urN /usr/ports/net/samba4/files/patch-source3__client__dnsbrowse.c samba4-with-mDNSResponder/files/patch-source3__client__dnsbrowse.c
--- /usr/ports/net/samba4/files/patch-source3__client__dnsbrowse.c	1970-01-01 01:00:00.000000000 +0100
+++ samba4-with-mDNSResponder/files/patch-source3__client__dnsbrowse.c	2013-11-12 10:20:40.903191132 +0100
@@ -0,0 +1,11 @@
+--- source3/client/dnsbrowse.c.orig	2013-11-12 10:20:03.145351798 +0100
++++ source3/client/dnsbrowse.c	2013-11-12 10:20:11.762761273 +0100
+@@ -91,7 +91,7 @@
+ 		}
+ 	}
+ 
+-	TALLOC_FREE(fdset);
++	TALLOC_FREE(ctx);
+ 	DNSServiceRefDeallocate(mdns_conn_sdref);
+ }
+ 
diff -urN /usr/ports/net/samba4/files/patch-source3__wscript samba4-with-mDNSResponder/files/patch-source3__wscript
--- /usr/ports/net/samba4/files/patch-source3__wscript	2013-02-18 15:24:56.000000000 +0100
+++ samba4-with-mDNSResponder/files/patch-source3__wscript	2013-11-12 10:07:57.220326410 +0100
@@ -1,6 +1,14 @@
---- ./source3/wscript.orig	2013-02-05 12:25:26.000000000 +0000
-+++ ./source3/wscript	2013-02-15 17:54:40.099886239 +0000
-@@ -475,7 +475,7 @@
+--- source3/wscript.orig	2013-05-21 08:48:46.000000000 +0200
++++ source3/wscript	2013-11-12 10:07:31.657183050 +0100
+@@ -35,6 +35,7 @@
+     opt.SAMBA3_ADD_OPTION('utmp')
+     opt.SAMBA3_ADD_OPTION('pthreadpool', with_name="enable", without_name="disable", default=True)
+     opt.SAMBA3_ADD_OPTION('avahi', with_name="enable", without_name="disable")
++    opt.SAMBA3_ADD_OPTION('dnssd', with_name="enable", without_name="disable")
+     opt.SAMBA3_ADD_OPTION('iconv')
+     opt.SAMBA3_ADD_OPTION('acl-support')
+     opt.SAMBA3_ADD_OPTION('dnsupdate')
+@@ -502,7 +503,7 @@
              conf.CHECK_CODE('struct aiocb a; return aio_return(&a);', 'HAVE_AIO_RETURN', msg='Checking for aio_return', headers='aio.h', lib='aio rt')
              conf.CHECK_CODE('struct aiocb a; return aio_error(&a);', 'HAVE_AIO_ERROR', msg='Checking for aio_error', headers='aio.h', lib='aio rt')
              conf.CHECK_CODE('struct aiocb a; return aio_cancel(1, &a);', 'HAVE_AIO_CANCEL', msg='Checking for aio_cancel', headers='aio.h', lib='aio rt')
@@ -9,7 +17,25 @@
          if not conf.CONFIG_SET('HAVE_AIO'):
              conf.DEFINE('HAVE_NO_AIO', '1')
      else:
-@@ -1644,26 +1644,8 @@
+@@ -812,6 +813,17 @@
+         conf.SET_TARGET_TYPE('avahi-common', 'EMPTY')
+         conf.SET_TARGET_TYPE('avahi-client', 'EMPTY')
+ 
++    if Options.options.with_dnssd:
++        conf.env.with_dnssd = True
++        if not conf.CHECK_HEADERS('dns_sd.h'):
++            conf.env.with_dnssd = False
++        if not conf.CHECK_FUNCS_IN('DNSServiceRegister', 'dns_sd'):
++            conf.env.with_dnssd = False
++        if conf.env.with_dnssd:
++            conf.DEFINE('WITH_DNSSD_SUPPORT', 1)
++    else:
++        conf.SET_TARGET_TYPE('dns_sd', 'EMPTY')
++
+     if Options.options.with_iconv:
+         conf.env.with_iconv = True
+         if not conf.CHECK_FUNCS_IN('iconv_open', 'iconv', headers='iconv.h'):
+@@ -1671,26 +1683,8 @@
  
      if PTHREAD_LDFLAGS == 'error':
          if conf.CHECK_FUNCS_IN('pthread_attr_init', 'pthread'):
@@ -37,7 +63,7 @@
  
      if PTHREAD_CFLAGS != 'error' and PTHREAD_LDFLAGS != 'error':
          conf.ADD_CFLAGS(PTHREAD_CFLAGS)
-@@ -1693,8 +1675,8 @@
+@@ -1720,8 +1714,8 @@
                                        auth_script vfs_readahead vfs_xattr_tdb vfs_posix_eadb
                                        vfs_streams_xattr vfs_streams_depot vfs_acl_xattr vfs_acl_tdb
                                        vfs_smb_traffic_analyzer vfs_preopen vfs_catia vfs_scannedonly
@@ -48,7 +74,7 @@
                                        vfs_crossrename vfs_linux_xfs_sgid
                                        vfs_time_audit idmap_autorid idmap_tdb2
                                        idmap_rid idmap_hash'''))
-@@ -1707,7 +1689,7 @@
+@@ -1734,7 +1728,7 @@
  
      if Options.options.enable_selftest or Options.options.developer:
          default_shared_modules.extend(TO_LIST('vfs_fake_acls'))
@@ -57,12 +83,12 @@
  
      if conf.CONFIG_SET('AD_DC_BUILD_IS_ENABLED'):
          default_static_modules.extend(TO_LIST('pdb_samba_dsdb auth_samba4 vfs_dfs_samba4'))
-@@ -1740,7 +1722,7 @@
+@@ -1767,7 +1761,7 @@
          default_static_modules.extend(TO_LIST('charset_macosxfs'))
  
      if conf.CONFIG_SET('HAVE_GPFS'):
 -	default_shared_modules.extend(TO_LIST('vfs_gpfs'))
 +        default_shared_modules.extend(TO_LIST('vfs_gpfs'))
  
-     explicit_shared_modules = TO_LIST(Options.options.shared_modules, delimiter=',')
-     explicit_static_modules = TO_LIST(Options.options.static_modules, delimiter=',')
+     if conf.CONFIG_SET('SAMBA_FAM_LIBS'):
+         default_shared_modules.extend(TO_LIST('vfs_notify_fam'))
diff -urN /usr/ports/net/samba4/files/patch-source3__wscript_build samba4-with-mDNSResponder/files/patch-source3__wscript_build
--- /usr/ports/net/samba4/files/patch-source3__wscript_build	2013-02-18 15:24:56.000000000 +0100
+++ samba4-with-mDNSResponder/files/patch-source3__wscript_build	2013-11-12 10:13:59.990828807 +0100
@@ -1,5 +1,5 @@
---- ./source3/wscript_build.orig	2012-12-11 17:10:13.000000000 +0000
-+++ ./source3/wscript_build	2013-02-05 04:25:57.199878484 +0000
+--- source3/wscript_build.orig	2013-07-01 09:15:40.000000000 +0200
++++ source3/wscript_build	2013-11-12 10:13:36.004046408 +0100
 @@ -1,7 +1,8 @@
  #!/usr/bin/env python
  
@@ -28,7 +28,7 @@
                    source=WINBIND_WINS_NSS_SRC,
                    deps='''param libsmb LIBTSOCKET''',
                    realname='libnss_wins.so.2',
-@@ -972,10 +982,11 @@
+@@ -972,10 +982,12 @@
                      LIBAFS_SETTOKEN
                      RPC_SERVER
                      NDR_SMBXSRV
@@ -38,10 +38,19 @@
                      NDR_SMB_ACL
                      netapi
 +                    inotify
++                    dns_sd
                      ''' + bld.env['dmapi_lib'],
                      private_library=True,
                      vars=locals())
-@@ -1629,7 +1640,7 @@
+@@ -1277,6 +1289,7 @@
+                  libsmb
+                  msrpc3
+                  RPC_NDR_SRVSVC
++                 dns_sd
+                  cli_smb_common''')
+ 
+ bld.SAMBA3_BINARY('net',
+@@ -1629,7 +1642,7 @@
  
  bld.SAMBA3_PYTHON('pylibsmb',
                    source='libsmb/pylibsmb.c',


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-ports-bugs mailing list