Browse Source

update to samba4, simplify package, support subpackages later

Waldemar Brodkorb 10 years ago
parent
commit
59fa2dcdee

+ 38 - 0
package/heimdal/Makefile

@@ -0,0 +1,38 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include $(ADK_TOPDIR)/rules.mk
+
+PKG_NAME:=		heimdal
+PKG_VERSION:=		1.5.3
+PKG_RELEASE:=		1
+PKG_HASH:=		aac27bedb33c341b6aed202af07ccc816146a893148721f8123abbbf93bbfea5
+PKG_DESCR:=		kerberos server
+PKG_SECTION:=		app/crypto
+PKG_URL:=		http://www.h5l.org/
+PKG_SITES:=		http://www.h5l.org/dist/src/
+
+DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz
+
+PKG_CFLINE_HEIMDAL:=	depends on ADK_HOST_ONLY
+
+include $(ADK_TOPDIR)/mk/host.mk
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call HOST_template,HEIMDAL,heimdal,$(PKG_VERSION)-${PKG_RELEASE}))
+
+HOST_CONFIGURE_ARGS+=	--disable-pk-init \
+			--without-openldap \
+			--disable-kcm \
+			--disable-kx509 \
+			--disable-ndbm-db \
+			--without-berkeley-db \
+			--disable-sqlite-cache \
+			--disable-otp
+
+hostpost-install:
+	$(CP) $(STAGING_HOST_DIR)/usr/libexec/heimdal/asn1_compile \
+		$(STAGING_HOST_DIR)/usr/bin
+
+include ${ADK_TOPDIR}/mk/host-bottom.mk
+include ${ADK_TOPDIR}/mk/pkg-bottom.mk

+ 17 - 0
package/heimdal/patches/patch-cf_check-compile-et_m4

@@ -0,0 +1,17 @@
+--- heimdal-1.5.3.orig/cf/check-compile-et.m4	2012-12-09 23:06:44.000000000 +0100
++++ heimdal-1.5.3/cf/check-compile-et.m4	2014-04-24 11:55:02.000000000 +0200
+@@ -3,12 +3,12 @@ dnl
+ dnl CHECK_COMPILE_ET
+ AC_DEFUN([CHECK_COMPILE_ET], [
+ 
+-AC_CHECK_PROG(COMPILE_ET, compile_et, [compile_et])
++AC_CHECK_PROG(COMPILE_ET, compile_et, [compile_et],[no])
+ 
+ krb_cv_compile_et="no"
+ krb_cv_com_err_need_r=""
+ krb_cv_compile_et_cross=no
+-if test "${COMPILE_ET}" = "compile_et"; then
++if test "${COMPILE_ET}" != no; then
+ 
+ dnl We have compile_et.  Now let's see if it supports `prefix' and `index'.
+ AC_MSG_CHECKING(whether compile_et has the features we need)

+ 11 - 0
package/heimdal/patches/patch-lib_com_err_Makefile_am

@@ -0,0 +1,11 @@
+--- heimdal-1.5.3.orig/lib/com_err/Makefile.am	2012-12-09 23:06:44.000000000 +0100
++++ heimdal-1.5.3/lib/com_err/Makefile.am	2014-05-27 11:51:26.000000000 +0200
+@@ -13,7 +13,7 @@ endif
+ 
+ libcom_err_la_LIBADD = $(LIB_libintl)
+ 
+-bin_PROGRAMS = compile_et
++libexec_heimdal_PROGRAMS = compile_et
+ 
+ include_HEADERS = com_err.h com_right.h
+ 

+ 11 - 0
package/heimdal/patches/patch-lib_roken_roken_h_in

@@ -0,0 +1,11 @@
+--- heimdal-1.5.3.orig/lib/roken/roken.h.in	2012-12-09 23:06:44.000000000 +0100
++++ heimdal-1.5.3/lib/roken/roken.h.in	2014-04-24 10:36:35.000000000 +0200
+@@ -551,7 +551,7 @@ ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL ge
+ ROKEN_LIB_FUNCTION char * ROKEN_LIB_CALL strerror(int);
+ #endif
+ 
+-#if (!defined(HAVE_STRERROR_R) && !defined(strerror_r)) || (!defined(STRERROR_R_PROTO_COMPATIBLE) && defined(HAVE_STRERROR_R))
++#if (defined(HAVE_STRERROR_R) && !defined(strerror_r)) || (!defined(STRERROR_R_PROTO_COMPATIBLE) && defined(HAVE_STRERROR_R))
+ int ROKEN_LIB_FUNCTION rk_strerror_r(int, char *, size_t);
+ #else
+ #define rk_strerror_r strerror_r

+ 184 - 0
package/heimdal/src/cf/roken-h-process.pl

@@ -0,0 +1,184 @@
+#!/usr/bin/perl
+
+require 'getopts.pl';
+
+my $debug = 0;
+
+Getopts('dc:p:o:') || die "foo";
+
+if ($opt_d) {
+    $debug = 1;
+}
+
+die "missing arg" if (!defined $opt_c || !defined $opt_p || !defined $opt_o);
+
+my %defines;
+my $IN;
+my $OUT;
+
+print "parse config.h\n" if ($debug);
+
+open IN, $opt_c || die "failed open ${opt_c}";
+
+my @nesting;
+
+push @nesting, 1;
+
+while (<IN>) {
+    if (m/\s*#ifdef\s+(.*)/) {
+	my $var = $1;
+	if (defined $defines{$var}) {
+	    push @nesting, 1;
+	} else {
+	    push @nesting, 0;
+	}
+	next;
+    } elsif (m/\s*#ifndef\s+(.*)/) {
+	my $var = $1;
+	if (defined $defines{$var}) {
+	    push @nesting, 0;
+	} else {
+	    push @nesting, 1;
+	}
+	next;
+    } elsif (m/\s*#else/) {
+	my $var = pop @nesting;
+	$var = !$var;
+	push @nesting, $var;
+	next;
+    } elsif ($nesting[$#nesting] and m/\s*#define\s+(\w+)\s+(\S+)/) {
+	my $res = $2;
+	$res = 1 if (!defined $res);
+	$defines{$1} = $res;
+    }
+}
+
+close IN;
+
+if ($debug) {
+    foreach my $i (keys %defines) {
+	print "k: $i v: $defines{$i}\n";
+    }
+}
+
+open IN, "$opt_p" || die "failed open ${opt_p}";
+open OUT, ">$opt_o" || die "failed open ${opt_o}";
+
+print "parse roken.h.in\n" if ($debug);
+
+print OUT "/* This is an OS dependent, generated file */\n";
+print OUT "\n";
+print OUT "\n";
+print OUT "#ifndef __ROKEN_H__\n";
+print OUT "#define __ROKEN_H__\n";
+print OUT "\n";
+
+@nesting = (1);
+
+while (<IN>) {
+    if (m/\s*#ifdef\s+(.*)/) {
+	my $var = $1;
+	if (defined $defines{$var}) {
+	    push @nesting, 1;
+	} else {
+	    push @nesting, 0;
+	}
+	next;
+    } elsif (m/\s*#ifndef\s+(.*)/) {
+	my $var = $1;
+	if (defined $defines{$var}) {
+	    push @nesting, 0;
+	} else {
+	    push @nesting, 1;
+	}
+	next;
+    } elsif (m/\s*#if\s+(.*)/) {
+	my $res = parse_if($1);
+	print "line = $res: $1\n" if ($debug);
+	push @nesting, $res;
+	next;
+    } elsif (m/\s*#elif\s+(.*)/) {
+	my $res = pop @nesting;
+	if ($res gt 0) {
+	    $res = -1;
+	} else {
+	    my $res = parse_if($1);
+	}
+	push @nesting, $res;
+	next;
+    } elsif (m/\s*#else/) {
+	my $var = pop @nesting;
+	$var = !$var;
+	push @nesting, $var;
+	next;
+    } elsif (m/\s*#endif/) {
+	pop @nesting;
+	next;
+    }
+    print "line: $_\n"  if ($debug);
+    print "nesting dep $#{nesting}\n"  if ($debug);
+    my $i = 0, $t = 1;
+    while ($i le $#nesting) {
+	$t = 0 if ($nesting[$i] le 0);
+	print "nesting $i val $nesting[$i] -> $t\n" if ($debug);
+	$i++;
+    }
+    if ($t) {
+	print OUT;
+    }
+}
+
+print OUT "\n";
+print OUT "#endif /* __ROKEN_H__ */\n";
+
+
+close IN;
+
+exit 0;
+
+sub parse_if
+{
+    my ($neg, $var);
+
+    $_ = shift;
+
+    if (m/^\s*$/) {
+	print "end $_\n" if ($debug);
+	return 1;
+    } elsif (m/^\(([^&]+)\&\&(.*)$/) {
+        print "$1 and $2\n" if ($debug);
+        return parse_if($1) and parse_if($2);
+    } elsif (m/^([^&]+)\&\&(.*)$/) {
+	print "$1 and $2\n" if ($debug);
+	return parse_if($1) and parse_if($2);
+    } elsif (m/^([^\|]+)\|\|(.*)$/) {
+	print "$1 or $2\n" if ($debug);
+	return parse_if($1) or parse_if($2);
+    } elsif (m/^\s*(\!)?\s*defined\((\w+)\)/) {
+	($neg, $var) = ($1, $2);
+	print "def: ${neg}-defined(${var})\n" if ($debug);
+	my $res = defined $defines{$var};
+	if ($neg eq "!") {
+	    if ($res) {
+		$res = 0;
+	    } else {
+		$res = 1;
+	    }
+	}
+	print "res: $res\n" if ($debug);
+	return $res;
+    } elsif (m/^\s*(\!)?(\w+)/) {
+	($neg, $var) = ($1, $2);
+	print "var: $neg $var\n" if ($debug);
+	my $res;
+	if (defined $defines{$var}) {
+	    $res = $defines{$var};
+	} else {
+	    $res = 0;
+	}
+	$res = ! $res if ($neg =~ m/!/);
+	print "res: $res\n" if ($debug);
+	return $res;
+    }
+    die "failed parse: $_\n";
+}

+ 52 - 95
package/samba/Makefile

@@ -1,109 +1,66 @@
 # This file is part of the OpenADK project. OpenADK is copyrighted
 # material, please see the LICENCE file in the top-level directory.
 
-include ${ADK_TOPDIR}/rules.mk
+include $(ADK_TOPDIR)/rules.mk
 
 PKG_NAME:=		samba
-PKG_VERSION:=		3.6.25
+PKG_VERSION:=		4.2.0
 PKG_RELEASE:=		1
-PKG_HASH:=		8f2c8a7f2bd89b0dfd228ed917815852f7c625b2bc0936304ac3ed63aaf83751
-PKG_DESCR:=		smb file and print server
+PKG_HASH:=		66a6057815a971fee64fbe936ff6cbad542421a4bd52cba8d8d41afc9abc490f
+PKG_DESCR:=		file and print server
 PKG_SECTION:=		net/fs
-PKG_BUILDDEP:=		gettext-tiny util-linux popt
-PKG_DEPENDS:=		samba-lib libuuid libpopt
+PKG_BUILDDEP:=		gettext-tiny util-linux popt python2 gnutls
+PKG_BUILDDEP:=		heimdal-host python2-host
+PKG_DEPENDS:=		libuuid libpopt libgnutls
 PKG_URL:=		http://www.samba.org/
 PKG_SITES:=		http://samba.org/samba/ftp/stable/
 
-DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz
-
-PKG_SUBPKGS:=		SAMBA SAMBA_CLIENT SAMBA_PASSWD SAMBA_LIB
-PKGSD_SAMBA_CLIENT:=	smb client
-PKGSS_SAMBA_CLIENT:=	libreadline samba-lib
-PKGSD_SAMBA_PASSWD:=	smb password utility
-PKGSD_SAMBA_LIB:=	smb libraries
-PKGSC_SAMBA_LIB:=	libs/net
-
-PKG_FLAVOURS_SAMBA:=	WITH_WINBIND WITH_LDAP
-PKGFD_WITH_WINBIND:=	enable winbind support
-PKGFS_WITH_WINBIND:=	libkrb5
-PKGFB_WITH_WINBIND:=	krb5
-PKGFD_WITH_LDAP:=	enable ldap support
-PKGFS_WITH_LDAP:=	libopenldap
-PKGFB_WITH_LDAP:=	openldap
-
-WRKSRC=			${WRKDIST}/source3
-
-include ${ADK_TOPDIR}/mk/package.mk
-
-$(eval $(call PKG_template,SAMBA,samba,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
-$(eval $(call PKG_template,SAMBA_CLIENT,samba-client,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_SAMBA_CLIENT},${PKG_SECTION}))
-$(eval $(call PKG_template,SAMBA_PASSWD,samba-passwd,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_SAMBA_PASSWD},${PKG_SECTION}))
-$(eval $(call PKG_template,SAMBA_LIB,samba-lib,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_SAMBA_LIB},${PKGSC_SAMBA_LIB}))
-
-ifneq ($(ADK_PACKAGE_SAMBA_WITH_WINBIND),)
-CONFIGURE_ARGS+=	--with-winbind \
-			--with-krb5="$(STAGING_TARGET_DIR)/usr"
-else
-CONFIGURE_ARGS+=	--without-winbind
-endif
-
-ifneq ($(ADK_PACKAGE_SAMBA_WITH_LDAP),)
-CONFIGURE_ARGS+=	--with-ldap
-else
-CONFIGURE_ARGS+=	--with-ldap=no
-endif
-
-CONFIGURE_ENV+=		samba_cv_CC_NEGATIVE_ENUM_VALUES=no \
-			samba_cv_USE_SETRESUID=yes \
-			samba_cv_HAVE_WRFILE_KEYTAB=yes \
-			ac_cv_func_ext_krb5_enctype_to_string=yes \
-			smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes \
-			smb_krb5_cv_enctype_to_string_takes_size_t_arg=no \
-			ac_cv_lib_ext_nsl_connect=no \
-			ac_cv_search_yp_get_default_domain=no \
-			ac_cv_lib_ext_nsl_gethostbyname=no \
-			ac_cv_file__proc_sys_kernel_core_pattern=yes \
-			libreplace_cv_HAVE_GETADDRINFO=no
-CONFIGURE_ARGS+=	--libdir=/usr/lib \
-			--localstatedir=/var/log/samba \
-			--with-configdir=/etc/samba \
-			--with-lockdir=/var/run/samba \
-			--with-privatedir=/etc/samba \
-			--with-libiconv=/dev/null \
-			--with-syslog \
+DISTFILES:=		$(PKG_NAME)-$(PKG_VERSION).tar.gz
+
+include $(ADK_TOPDIR)/mk/package.mk
+
+$(eval $(call PKG_template,SAMBA,samba,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
+
+CONFIG_STYLE:=		minimal
+CONFIGURE_ARGS+=	--enable-fhs \
+			--prefix=/usr \
+			--sysconfdir=/etc \
+			--localstatedir=/var \
+			--cross-compile \
+			--cross-answers=$(WRKSRC)/cache.txt \
+			--hostcc=gcc \
+			--without-pam \
+			--without-fam \
+			--without-dmapi \
+			--without-ads \
+			--without-ldap \
+			--without-acl-support \
+			--disable-glusterfs \
+			--disable-iprint \
 			--disable-cups \
-			--disable-swat \
 			--disable-avahi \
-			--with-utmp=no \
-			--with-pam=no \
-			--without-cluster-support \
-			--without-sendfile-support
-
-samba-install:
-	${INSTALL_DIR} ${IDIR_SAMBA}/etc/samba ${IDIR_SAMBA}/usr/sbin
-	${INSTALL_DIR} ${IDIR_SAMBA}/usr/lib/{charset,vfs}
-	${INSTALL_DATA} ${WRKINST}/usr/lib/charset/CP850.so \
-			${IDIR_SAMBA}/usr/lib/charset
-	${INSTALL_DATA} ./files/smb.conf ${IDIR_SAMBA}/etc/samba
-	${INSTALL_BIN} ${WRKINST}/usr/sbin/{nmbd,smbd} ${IDIR_SAMBA}/usr/sbin
-	${CP} ${WRKINST}/usr/lib/vfs/*.so* ${IDIR_SAMBA}/usr/lib/vfs
-	${INSTALL_DATA} ${WRKINST}/usr/lib/*.dat ${IDIR_SAMBA}/usr/lib
+			--disable-rpath \
+			--bundled-libraries='!asn1_compile,!compile_et' \
+			--disable-rpath-install
+CONFIGURE_ENV+=		PYTHON_CONFIG="$(STAGING_TARGET_DIR)/usr/bin/python-config" \
+			python_LDFLAGS="" \
+			python_LIBDIR=""
 
-samba-passwd-install:
-	${INSTALL_DIR} ${IDIR_SAMBA_PASSWD}/usr/bin
-	${INSTALL_BIN} ${WRKINST}/usr/bin/smbpasswd \
-		${IDIR_SAMBA_PASSWD}/usr/bin
+pre-configure:
+	$(CP) ./files/cache.txt $(WRKSRC)
+	echo 'Checking uname machine type: "$(ADK_TARGET_ARCH)"' >>$(WRKSRC)/cache.txt
 
-samba-client-install:
-	${INSTALL_DIR} ${IDIR_SAMBA_CLIENT}/usr/bin
-	${INSTALL_BIN} ${WRKINST}/usr/bin/smbclient \
-		${IDIR_SAMBA_CLIENT}/usr/bin
-
-samba-lib-install:
-	${INSTALL_DIR} ${IDIR_SAMBA_LIB}/usr/lib
-	${CP} ${WRKINST}/usr/lib/{libsmbclient,libsmbsharemodes,libnetapi}.so* \
-		${IDIR_SAMBA_LIB}/usr/lib
-	$(CP) ${WRKINST}/usr/lib/{libtalloc,libtdb,libtevent}.so* \
-		${IDIR_SAMBA_LIB}/usr/lib
-
-include ${ADK_TOPDIR}/mk/pkg-bottom.mk
+samba-install:
+	$(INSTALL_DIR) $(IDIR_SAMBA)/etc/samba
+	$(INSTALL_DIR) $(IDIR_SAMBA)/usr/{sbin,bin,lib}
+	$(INSTALL_DATA) ./files/smb.conf $(IDIR_SAMBA)/etc/samba
+	$(INSTALL_BIN) $(WRKINST)/usr/sbin/{nmbd,smbd} \
+		$(IDIR_SAMBA)/usr/sbin
+	$(INSTALL_BIN) $(WRKINST)/usr/bin/{smbpasswd,smbclient} \
+		$(IDIR_SAMBA)/usr/bin
+	$(CP) $(WRKINST)/usr/lib/lib*.so* \
+		$(IDIR_SAMBA)/usr/lib
+	$(CP) $(WRKINST)/usr/lib/samba \
+		$(IDIR_SAMBA)/usr/lib
+
+include $(ADK_TOPDIR)/mk/pkg-bottom.mk

+ 38 - 0
package/samba/files/cache.txt

@@ -0,0 +1,38 @@
+Checking simple C program: OK
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking for large file support without additional flags: OK
+Checking for -D_LARGE_FILES: OK
+Checking correct behavior of strtoll: NO
+Checking for working strptime: OK
+Checking for C99 vsnprintf: OK
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+Checking whether we can use Linux thread-specific credentials with 32-bit system calls: OK
+Checking whether we can use Linux thread-specific credentials: OK
+Checking whether setreuid is available: OK
+Checking whether setresuid is available: OK
+Checking whether seteuid is available: OK
+Checking whether fcntl locking is available: OK
+Checking for the maximum value of the 'time_t' type: OK
+Checking whether the realpath function allows a NULL argument: OK
+Checking whether POSIX capabilities are available: OK
+Checking for ftruncate extend: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+getcwd takes a NULL argument: OK
+Checking uname sysname type: "Linux"
+Checking uname release type: "3.0.0"
+Checking uname version type: "#1 Tue Nov 1 12:34:56 UTC 2013"
+Checking value of NSIG: "65"
+Checking value of _NSIG: "65"
+Checking value of SIGRTMAX: "64"
+Checking value of SIGRTMIN: "34"

+ 13 - 0
package/samba/patches/patch-buildtools_wafsamba_samba_autoconf_py

@@ -0,0 +1,13 @@
+--- samba-4.2.0.orig/buildtools/wafsamba/samba_autoconf.py	2015-02-24 19:59:51.000000000 +0100
++++ samba-4.2.0/buildtools/wafsamba/samba_autoconf.py	2015-04-07 23:06:53.000000000 +0200
+@@ -646,10 +646,6 @@ def SAMBA_CONFIG_H(conf, path=None):
+     if not IN_LAUNCH_DIR(conf):
+         return
+ 
+-    if conf.CHECK_CFLAGS(['-fstack-protector']) and conf.CHECK_LDFLAGS(['-fstack-protector']):
+-        conf.ADD_CFLAGS('-fstack-protector')
+-        conf.ADD_LDFLAGS('-fstack-protector')
+-
+     if Options.options.debug:
+         conf.ADD_CFLAGS('-g', testflags=True)
+