Update to version 3.0.12.

Currently, ADS support is off for the package builds, as it creates
dependency problems with Kerberos5.  Also, an experimental support
for extended attributes is included.

PR:		ports/79037
Submitted by:	maintainer
This commit is contained in:
Alexey Dokuchaev 2005-03-20 09:29:05 +00:00
parent 52b647504a
commit 8f5d0f33d7
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=131703
7 changed files with 363 additions and 36 deletions

View file

@ -6,7 +6,7 @@
#
PORTNAME= samba
PORTVERSION?= 3.0.11
PORTVERSION?= 3.0.12
PORTREVISION?= 0
PORTEPOCH?= 1
CATEGORIES?= net
@ -59,9 +59,16 @@ CONFIGURE_ARGS+= --exec-prefix=${PREFIX} \
CONFIGURE_ARGS+= --with-libiconv=${LOCALBASE}
.if !defined(SAMBA_SUBPORT)
OPTIONS= LDAP "With LDAP support" on \
ADS "With Active Directory support" on \
CUPS "With CUPS printing support" on \
OPTIONS= LDAP "With LDAP support" on
.if defined(PACKAGE_BUILDING)
# Kerberos5 setup is very box specific, we don't
# want artificial dependencies in the packages
OPTIONS+= ADS "With Active Directory support" off
.else
OPTIONS+= ADS "With Active Directory support" on
.endif
OPTIONS+= CUPS "With CUPS printing support" on \
WINBIND "With WinBIND support" on \
ACL_SUPPORT "With ACL support" off \
SYSLOG "With Syslog support" off \
@ -293,8 +300,8 @@ post-patch:
@${RM} -rf ${WRKDIR}/${DISTNAME}/examples/libsmbclient
@${RM} -rf ${WRKDIR}/${DISTNAME}/swat/lang
@${FIND} ${WRKSRC} -name CVS -o -name .cvsignore | ${XARGS} ${RM}
@${FIND} ${WRKDIR}/${DISTNAME} -type d | ${XARGS} ${CHMOD} 0755
@${FIND} ${WRKDIR}/${DISTNAME}/examples -type f | ${XARGS} ${CHMOD} 0644
@${FIND} ${WRKDIR}/${DISTNAME} -type d | ${XARGS} ${CHMOD} u+w,a+rx
@${FIND} ${WRKDIR}/${DISTNAME} -type f | ${XARGS} ${CHMOD} u+w,a+r
pre-install:
-@${FIND} ${SAMBA_LIBDIR} -type f 2>/dev/null | ${SORT} | ${SED} -e 's|^${PREFIX}||; s|^/||' >> ${WRKDIR}/.PLIST.exclude

View file

@ -1,2 +1,2 @@
MD5 (samba-3.0.11.tar.gz) = 217e489646a474b4fb69d5802c14bc6e
SIZE (samba-3.0.11.tar.gz) = 15372539
MD5 (samba-3.0.12.tar.gz) = 5c31e5d115ba08b30d1541983d30e2dc
SIZE (samba-3.0.12.tar.gz) = 15576905

View file

@ -1,6 +1,6 @@
--- configure.in.orig Tue Nov 16 04:03:30 2004
+++ configure.in Fri Nov 26 02:04:59 2004
@@ -691,7 +691,9 @@
--- configure.in.orig Fri Mar 11 14:47:05 2005
+++ configure.in Sun Mar 20 01:24:25 2005
@@ -724,7 +724,9 @@
AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h security/pam_appl.h)
AC_CHECK_HEADERS(stropts.h poll.h)
AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
@ -11,29 +11,22 @@
# These faile to compile on Solaris so just check for their presence
AC_CHECK_HEADERS(security/pam_modules.h net/if.h netinet/ip.h, [], [], -)
@@ -829,6 +831,13 @@
AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
fi
+AC_CACHE_CHECK([for optreset], samba_cv_var_optreset, [
+ AC_TRY_LINK([#include <unistd.h>],[optreset = 1],
+ [samba_cv_var_optreset=yes],[samba_cv_var_optreset=no])])
+if test x"$samba_cv_var_optreset" = x"yes"; then
+ AC_DEFINE(HAVE_OPTRESET,1,[Whether the system has optreset])
+fi
+
# stupid headers have the functions but no declaration. grrrr.
AC_HAVE_DECL(errno, [#include <errno.h>])
AC_HAVE_DECL(setresuid, [#include <unistd.h>])
@@ -1125,6 +1134,11 @@
@@ -1159,6 +1161,18 @@
AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
+# Check if we have extattr
+AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
+AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
+AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
+AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
+case "$host_os" in
+ *freebsd4* | *DragonFly* )
+ AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
+ ;;
+ *)
+ AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
+ AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
+ AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
+ AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
+ ;;
+esac
# Assume non-shared by default and override below
BLDSHARED="false"

View file

@ -0,0 +1,306 @@
--- lib/system.c.orig Fri Feb 25 18:59:32 2005
+++ lib/system.c Fri Mar 4 02:04:45 2005
@@ -1373,10 +1373,17 @@
{
#if defined(HAVE_GETXATTR)
return getxattr(path, name, value, size);
+#elif defined(HAVE_EXTATTR_GET_FILE)
+ char *s;
+ int attrnamespace = (strncmp(name, "system", 6) == 0) ?
+ EXTATTR_NAMESPACE_SYSTEM : EXTATTR_NAMESPACE_USER;
+ const char *attrname = ((s=strchr_m(name, '.')) == NULL) ? name : s + 1;
+
+ return extattr_get_file(path, attrnamespace, attrname, value, size);
#elif defined(HAVE_ATTR_GET)
int retval, flags = 0;
int valuelength = (int)size;
- char *attrname = strchr(name,'.') +1;
+ char *attrname = strchr(name,'.') + 1;
if (strncmp(name, "system", 6) == 0) flags |= ATTR_ROOT;
@@ -1393,10 +1400,17 @@
{
#if defined(HAVE_LGETXATTR)
return lgetxattr(path, name, value, size);
+#elif defined(HAVE_EXTATTR_GET_LINK)
+ char *s;
+ int attrnamespace = (strncmp(name, "system", 6) == 0) ?
+ EXTATTR_NAMESPACE_SYSTEM : EXTATTR_NAMESPACE_USER;
+ const char *attrname = ((s=strchr_m(name, '.')) == NULL) ? name : s + 1;
+
+ return extattr_get_link(path, attrnamespace, attrname, value, size);
#elif defined(HAVE_ATTR_GET)
int retval, flags = ATTR_DONTFOLLOW;
int valuelength = (int)size;
- char *attrname = strchr(name,'.') +1;
+ char *attrname = strchr(name,'.') + 1;
if (strncmp(name, "system", 6) == 0) flags |= ATTR_ROOT;
@@ -1413,10 +1427,17 @@
{
#if defined(HAVE_FGETXATTR)
return fgetxattr(filedes, name, value, size);
+#elif defined(HAVE_EXTATTR_GET_FD)
+ char *s;
+ int attrnamespace = (strncmp(name, "system", 6) == 0) ?
+ EXTATTR_NAMESPACE_SYSTEM : EXTATTR_NAMESPACE_USER;
+ const char *attrname = ((s=strchr_m(name, '.')) == NULL) ? name : s + 1;
+
+ return extattr_get_fd(filedes, attrnamespace, attrname, value, size);
#elif defined(HAVE_ATTR_GETF)
int retval, flags = 0;
int valuelength = (int)size;
- char *attrname = strchr(name,'.') +1;
+ char *attrname = strchr(name,'.') + 1;
if (strncmp(name, "system", 6) == 0) flags |= ATTR_ROOT;
@@ -1429,6 +1450,99 @@
#endif
}
+#if defined(HAVE_EXTATTR_LIST_FILE)
+
+#define EXTATTR_PREFIX(s) (s), (sizeof((s))-1)
+
+static struct {
+ int space;
+ const char *name;
+ size_t len;
+}
+extattr[] = {
+ { EXTATTR_NAMESPACE_SYSTEM, EXTATTR_PREFIX("system.") },
+ { EXTATTR_NAMESPACE_USER, EXTATTR_PREFIX("user.") },
+};
+
+typedef union {
+ const char *path;
+ int filedes;
+} extattr_arg;
+
+static ssize_t bsd_attr_list (int type, extattr_arg arg, char *list, size_t size)
+{
+ ssize_t list_size, total_size = 0;
+ int i, t, len;
+ char *buf;
+ /* Iterate through extattr(2) namespaces */
+ for(t = 0; t < (sizeof(extattr)/sizeof(extattr[0])); t++) {
+ switch(type) {
+#if defined(HAVE_EXTATTR_LIST_FILE)
+ case 0:
+ list_size = extattr_list_file(arg.path, extattr[t].space, list, size);
+ break;
+#endif
+#if defined(HAVE_EXTATTR_LIST_LINK)
+ case 1:
+ list_size = extattr_list_link(arg.path, extattr[t].space, list, size);
+ break;
+#endif
+#if defined(HAVE_EXTATTR_LIST_FD)
+ case 2:
+ list_size = extattr_list_fd(arg.filedes, extattr[t].space, list, size);
+ break;
+#endif
+ default:
+ errno = ENOSYS;
+ return -1;
+ }
+ /* Some error happend. Errno should be set by the previous call */
+ if(list_size < 0)
+ return -1;
+ /* No attributes */
+ if(list_size == 0)
+ continue;
+ /* XXX: Call with an empty buffer may be used to calculate
+ necessary buffer size. Unfortunately, we can't say, how
+ many attributes were returned, so here is the potential
+ problem with the emulation.
+ */
+ if(list == NULL) {
+ /* Take the worse case of one char attribute names -
+ two bytes per name plus one more for sanity.
+ */
+ total_size += list_size + (list_size/2 + 1)*extattr[t].len;
+ continue;
+ }
+ /* Count necessary offset to fit namespace prefixes */
+ len = 0;
+ for(i = 0; i < list_size; i += list[i] + 1)
+ len += extattr[t].len;
+
+ total_size += list_size + len;
+ /* Buffer is too small to fit the results */
+ if(total_size > size) {
+ errno = ERANGE;
+ return -1;
+ }
+ /* Shift the results back, so we can prepend prefixes */
+ buf = memmove(list + len, list, list_size);
+
+ for(i = 0; i < list_size; i += len + 1) {
+ len = buf[i];
+ strncpy(list, extattr[t].name, extattr[t].len + 1);
+ list += extattr[t].len;
+ strncpy(list, buf + i + 1, len);
+ list[len] = '\0';
+ list += len + 1;
+ }
+ size -= total_size;
+ }
+ return total_size;
+}
+
+#endif
+
#if defined(HAVE_ATTR_LIST) && defined(HAVE_SYS_ATTRIBUTES_H)
static char attr_buffer[ATTR_MAX_VALUELEN];
@@ -1501,6 +1615,10 @@
{
#if defined(HAVE_LISTXATTR)
return listxattr(path, list, size);
+#elif defined(HAVE_EXTATTR_LIST_FILE)
+ extattr_arg arg;
+ arg.path = path;
+ return bsd_attr_list(0, arg, list, size);
#elif defined(HAVE_ATTR_LIST) && defined(HAVE_SYS_ATTRIBUTES_H)
return irix_attr_list(path, 0, list, size, 0);
#else
@@ -1513,6 +1631,10 @@
{
#if defined(HAVE_LLISTXATTR)
return llistxattr(path, list, size);
+#elif defined(HAVE_EXTATTR_LIST_LINK)
+ extattr_arg arg;
+ arg.path = path;
+ return bsd_attr_list(1, arg, list, size);
#elif defined(HAVE_ATTR_LIST) && defined(HAVE_SYS_ATTRIBUTES_H)
return irix_attr_list(path, 0, list, size, ATTR_DONTFOLLOW);
#else
@@ -1525,6 +1647,10 @@
{
#if defined(HAVE_FLISTXATTR)
return flistxattr(filedes, list, size);
+#elif defined(HAVE_EXTATTR_LIST_FD)
+ extattr_arg arg;
+ arg.filedes = filedes;
+ return bsd_attr_list(2, arg, list, size);
#elif defined(HAVE_ATTR_LISTF)
return irix_attr_list(NULL, filedes, list, size, 0);
#else
@@ -1537,9 +1663,16 @@
{
#if defined(HAVE_REMOVEXATTR)
return removexattr(path, name);
+#elif defined(HAVE_EXTATTR_DELETE_FILE)
+ char *s;
+ int attrnamespace = (strncmp(name, "system", 6) == 0) ?
+ EXTATTR_NAMESPACE_SYSTEM : EXTATTR_NAMESPACE_USER;
+ const char *attrname = ((s=strchr_m(name, '.')) == NULL) ? name : s + 1;
+
+ return extattr_delete_file(path, attrnamespace, attrname);
#elif defined(HAVE_ATTR_REMOVE)
int flags = 0;
- char *attrname = strchr(name,'.') +1;
+ char *attrname = strchr(name,'.') + 1;
if (strncmp(name, "system", 6) == 0) flags |= ATTR_ROOT;
@@ -1554,9 +1687,16 @@
{
#if defined(HAVE_LREMOVEXATTR)
return lremovexattr(path, name);
+#elif defined(HAVE_EXTATTR_DELETE_LINK)
+ char *s;
+ int attrnamespace = (strncmp(name, "system", 6) == 0) ?
+ EXTATTR_NAMESPACE_SYSTEM : EXTATTR_NAMESPACE_USER;
+ const char *attrname = ((s=strchr_m(name, '.')) == NULL) ? name : s + 1;
+
+ return extattr_delete_link(path, attrnamespace, attrname);
#elif defined(HAVE_ATTR_REMOVE)
int flags = ATTR_DONTFOLLOW;
- char *attrname = strchr(name,'.') +1;
+ char *attrname = strchr(name,'.') + 1;
if (strncmp(name, "system", 6) == 0) flags |= ATTR_ROOT;
@@ -1571,9 +1711,16 @@
{
#if defined(HAVE_FREMOVEXATTR)
return fremovexattr(filedes, name);
+#elif defined(HAVE_EXTATTR_DELETE_FD)
+ char *s;
+ int attrnamespace = (strncmp(name, "system", 6) == 0) ?
+ EXTATTR_NAMESPACE_SYSTEM : EXTATTR_NAMESPACE_USER;
+ const char *attrname = ((s=strchr_m(name, '.')) == NULL) ? name : s + 1;
+
+ return extattr_delete_fd(filedes, attrnamespace, attrname);
#elif defined(HAVE_ATTR_REMOVEF)
int flags = 0;
- char *attrname = strchr(name,'.') +1;
+ char *attrname = strchr(name,'.') + 1;
if (strncmp(name, "system", 6) == 0) flags |= ATTR_ROOT;
@@ -1593,9 +1740,18 @@
{
#if defined(HAVE_SETXATTR)
return setxattr(path, name, value, size, flags);
+#elif defined(HAVE_EXTATTR_SET_FILE)
+ char *s;
+ int retval = 0;
+ int attrnamespace = (strncmp(name, "system", 6) == 0) ?
+ EXTATTR_NAMESPACE_SYSTEM : EXTATTR_NAMESPACE_USER;
+ const char *attrname = ((s=strchr_m(name, '.')) == NULL) ? name : s + 1;
+
+ retval = extattr_set_file(path, attrnamespace, attrname, value, size);
+ return (retval < 0) ? -1 : 0;
#elif defined(HAVE_ATTR_SET)
int myflags = 0;
- char *attrname = strchr(name,'.') +1;
+ char *attrname = strchr(name,'.') + 1;
if (strncmp(name, "system", 6) == 0) myflags |= ATTR_ROOT;
if (flags & XATTR_CREATE) myflags |= ATTR_CREATE;
@@ -1612,9 +1768,18 @@
{
#if defined(HAVE_LSETXATTR)
return lsetxattr(path, name, value, size, flags);
+#elif defined(HAVE_EXTATTR_SET_LINK)
+ char *s;
+ int retval = 0;
+ int attrnamespace = (strncmp(name, "system", 6) == 0) ?
+ EXTATTR_NAMESPACE_SYSTEM : EXTATTR_NAMESPACE_USER;
+ const char *attrname = ((s=strchr_m(name, '.')) == NULL) ? name : s + 1;
+
+ retval = extattr_set_link(path, attrnamespace, attrname, value, size);
+ return (retval < 0) ? -1 : 0;
#elif defined(HAVE_ATTR_SET)
int myflags = ATTR_DONTFOLLOW;
- char *attrname = strchr(name,'.') +1;
+ char *attrname = strchr(name,'.') + 1;
if (strncmp(name, "system", 6) == 0) myflags |= ATTR_ROOT;
if (flags & XATTR_CREATE) myflags |= ATTR_CREATE;
@@ -1631,9 +1796,18 @@
{
#if defined(HAVE_FSETXATTR)
return fsetxattr(filedes, name, value, size, flags);
+#elif defined(HAVE_EXTATTR_SET_FD)
+ char *s;
+ int retval = 0;
+ int attrnamespace = (strncmp(name, "system", 6) == 0) ?
+ EXTATTR_NAMESPACE_SYSTEM : EXTATTR_NAMESPACE_USER;
+ const char *attrname = ((s=strchr_m(name, '.')) == NULL) ? name : s + 1;
+
+ retval = extattr_set_fd(filedes, attrnamespace, attrname, value, size);
+ return (retval < 0) ? -1 : 0;
#elif defined(HAVE_ATTR_SETF)
int myflags = 0;
- char *attrname = strchr(name,'.') +1;
+ char *attrname = strchr(name,'.') + 1;
if (strncmp(name, "system", 6) == 0) myflags |= ATTR_ROOT;
if (flags & XATTR_CREATE) myflags |= ATTR_CREATE;

View file

@ -0,0 +1,19 @@
--- utils/net_time.c.orig Fri Feb 25 18:59:42 2005
+++ utils/net_time.c Sun Mar 20 01:41:20 2005
@@ -76,9 +76,16 @@
tm = localtime(&t);
+#if defined(FREEBSD)
+ fstr_sprintf(s, "%02d%02d%02d%02d%02d.%02d",
+ tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,
+ tm->tm_hour,tm->tm_min,tm->tm_sec);
+#else
fstr_sprintf(s, "%02d%02d%02d%02d%04d.%02d",
tm->tm_mon+1, tm->tm_mday, tm->tm_hour,
tm->tm_min, tm->tm_year + 1900, tm->tm_sec);
+#endif /* defined(FREEBSD) */
+
return s;
}

View file

@ -1,5 +1,5 @@
******************************************************************************
NOTICE: *.tdb files have been moved from /var/run/samba/ to /var/db/samba/!
NOTICE: Please, move them manually, if necessary, at least winbind_*.tdb.
******************************************************************************
Samba3 package now doesn't include ADS support due the portability problems
with Kerberos5 libraries on different installations. You need to compile port
yourself to get this functionality.
For additional hints and directions, please, look into the README.FreeBSD file.

View file

@ -61,6 +61,8 @@ sbin/swat
%%EXAMPLESDIR%%/dce-dfs/README
%%EXAMPLESDIR%%/dce-dfs/smb.conf
%%EXAMPLESDIR%%/genlogon/genlogon.pl
%%EXAMPLESDIR%%/misc/adssearch.pl
%%EXAMPLESDIR%%/misc/check_multiple_LDAP_entries.pl
%%EXAMPLESDIR%%/misc/extra_smbstatus
%%EXAMPLESDIR%%/misc/swat.pl
%%EXAMPLESDIR%%/misc/wall.perl
@ -238,6 +240,7 @@ share/swat/help/Samba-Guide/index.html
share/swat/help/Samba-Guide/ix01.html
share/swat/help/Samba-Guide/kerberos.html
share/swat/help/Samba-Guide/migration.html
share/swat/help/Samba-Guide/nw4migration.html
share/swat/help/Samba-Guide/pr01.html
share/swat/help/Samba-Guide/pr02.html
share/swat/help/Samba-Guide/pr03.html
@ -335,6 +338,7 @@ share/swat/help/Samba-HOWTO-Collection/install.html
share/swat/help/Samba-HOWTO-Collection/integrate-ms-networks.html
share/swat/help/Samba-HOWTO-Collection/introduction.html
share/swat/help/Samba-HOWTO-Collection/ix01.html
share/swat/help/Samba-HOWTO-Collection/largefile.html
share/swat/help/Samba-HOWTO-Collection/locking.html
share/swat/help/Samba-HOWTO-Collection/migration.html
share/swat/help/Samba-HOWTO-Collection/msdfs.html
@ -577,12 +581,10 @@ share/swat/using_samba/toc.html
@dirrm share/swat/using_samba
@dirrm share/swat/include
@dirrm share/swat/images
@dirrm share/swat/help/images
@dirrm share/swat/help/Samba-HOWTO-Collection/images
@dirrm share/swat/help/Samba-HOWTO-Collection
@dirrm share/swat/help/Samba-Guide/images
@dirrm share/swat/help/Samba-Guide
@dirrm share/swat/help/Samba-Developers-Guide/images
@dirrm share/swat/help/Samba-Developers-Guide
@dirrm share/swat/help
@dirrm share/swat