[SCM] Samba Shared Repository - branch v4-0-test updated - release-4-0-0alpha3-1531-g10415bb

Simo Sorce idra at samba.org
Wed May 14 04:06:56 GMT 2008


The branch, v4-0-test has been updated
       via  10415bb738d51afdebbfeae976923e086805ae84 (commit)
      from  da2179ee5d5b6094ab63a9d9d6a8d59893937087 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-0-test


- Log -----------------------------------------------------------------
commit 10415bb738d51afdebbfeae976923e086805ae84
Author: Simo Sorce <idra at samba.org>
Date:   Thu Apr 24 17:28:30 2008 -0400

    Make it possible to build libevents standalone.

-----------------------------------------------------------------------

Summary of changes:
 source/lib/events/Makefile.in       |   66 ++++++++++++++++++
 source/lib/events/autogen.sh        |   17 +++++
 source/lib/events/config.mk         |   11 +++-
 source/lib/events/configure.ac      |   35 ++++++++++
 source/lib/events/events.c          |   14 +++-
 source/lib/events/events.i          |    2 +-
 source/lib/events/events.mk         |   59 ++++++++++++++++
 source/lib/events/events.pc.in      |   11 +++
 source/lib/events/events_epoll.c    |   15 +++-
 source/lib/events/events_select.c   |   13 +++-
 source/lib/events/events_signal.c   |   13 +++-
 source/lib/events/events_standard.c |   11 ++-
 source/lib/events/events_timed.c    |   11 ++-
 source/lib/events/events_util.c     |  129 +++++++++++++++++++++++++++++++++++
 source/lib/events/events_util.h     |  123 +++++++++++++++++++++++++++++++++
 source/lib/events/events_wrap.c     |    2 +-
 source/lib/events/libevents.m4      |   21 +++++-
 17 files changed, 527 insertions(+), 26 deletions(-)
 create mode 100644 source/lib/events/Makefile.in
 create mode 100755 source/lib/events/autogen.sh
 create mode 100644 source/lib/events/configure.ac
 create mode 100644 source/lib/events/events.mk
 create mode 100644 source/lib/events/events.pc.in
 create mode 100644 source/lib/events/events_util.c
 create mode 100644 source/lib/events/events_util.h


Changeset truncated at 500 lines:

diff --git a/source/lib/events/Makefile.in b/source/lib/events/Makefile.in
new file mode 100644
index 0000000..0a0df9b
--- /dev/null
+++ b/source/lib/events/Makefile.in
@@ -0,0 +1,66 @@
+#!gmake
+#
+# Makefile for tdb directory
+#
+
+CC = @CC@
+prefix = @prefix@
+exec_prefix = @exec_prefix@
+bindir = @bindir@
+includedir = @includedir@
+libdir = @libdir@
+VPATH = @srcdir@:@tallocdir@:@libreplacedir@
+srcdir = @srcdir@
+builddir = @builddir@
+CPPFLAGS = @CPPFLAGS@ -I$(srcdir)/include -Iinclude -I.
+LDFLAGS = @LDFLAGS@
+EXEEXT = @EXEEXT@
+SHLD = @SHLD@
+SHLD_FLAGS = @SHLD_FLAGS@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PICFLAG = @PICFLAG@
+SHLIBEXT = @SHLIBEXT@
+SWIG = swig
+PYTHON = @PYTHON@
+PYTHON_CONFIG = @PYTHON_CONFIG@
+PYTHON_BUILD_TARGET = @PYTHON_BUILD_TARGET@
+PYTHON_INSTALL_TARGET = @PYTHON_INSTALL_TARGET@
+PYTHON_CHECK_TARGET = @PYTHON_CHECK_TARGET@
+LIB_PATH_VAR = @LIB_PATH_VAR@
+eventsdir = @eventsdir@
+tallocdir = @tallocdir@
+
+TALLOC_LIBS = @TALLOC_LIBS@
+TALLOC_CFLAGS = @TALLOC_CFLAGS@
+TALLOC_OBJ = @TALLOC_OBJ@
+
+CFLAGS = $(CPPFLAGS) $(TALLOC_CFLAGS) @CFLAGS@
+
+EVENTS_OBJ = @EVENTS_OBJ@ $(TALLOC_OBJ) @LIBREPLACEOBJ@
+
+default: all
+
+include $(eventsdir)/events.mk
+include $(eventsdir)/rules.mk
+
+all:: showflags dirs $(PROGS) $(LIBEVENTS_SOLIB) libevents.a $(PYTHON_BUILD_TARGET)
+
+install:: all
+$(LIBEVENTS_SOLIB): $(EVENTS_OBJ)
+	$(SHLD) $(SHLD_FLAGS) -o $@ $(EVENTS_OBJ) $(TALLOC_LIBS) @SONAMEFLAG@$(LIBEVENTS_SONAME)
+
+check: test
+
+test:: $(PYTHON_CHECK_TARGET)
+installcheck:: test install
+
+clean::
+	rm -f *.o *.a */*.o
+	rm -f $(TALLOC_OBJ)
+
+distclean:: clean
+	rm -f config.log config.status include/config.h config.cache
+	rm -f Makefile
+
+realdistclean:: distclean
+	rm -f configure include/config.h.in
diff --git a/source/lib/events/autogen.sh b/source/lib/events/autogen.sh
new file mode 100755
index 0000000..b13a4b6
--- /dev/null
+++ b/source/lib/events/autogen.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+rm -rf autom4te.cache
+rm -f configure config.h.in
+
+IPATHS="-I libreplace -I lib/replace -I ../libreplace -I ../replace"
+IPATHS="$IPATHS -I lib/talloc -I talloc -I ../talloc"
+autoconf $IPATHS || exit 1
+autoheader $IPATHS || exit 1
+
+rm -rf autom4te.cache
+
+swig -O -Wall -python -keyword events.i # Ignore errors for now
+
+echo "Now run ./configure and then make."
+exit 0
+
diff --git a/source/lib/events/config.mk b/source/lib/events/config.mk
index 058ce7f..34c24f7 100644
--- a/source/lib/events/config.mk
+++ b/source/lib/events/config.mk
@@ -1,3 +1,13 @@
+################################################
+# Start SUBSYSTEM LIBEVENTS
+[LIBRARY::LIBEVENTS]
+PUBLIC_DEPENDENCIES = LIBTALLOC
+OUTPUT_TYPE = STATIC_LIBRARY
+CFLAGS = -Ilib/events
+#
+# End SUBSYSTEM LIBEVENTS
+################################################
+
 ##############################
 [MODULE::EVENTS_AIO]
 PRIVATE_DEPENDENCIES = LIBAIO_LINUX
@@ -34,7 +44,6 @@ EVENTS_STANDARD_OBJ_FILES = lib/events/events_standard.o
 ##############################
 # Start SUBSYSTEM LIBEVENTS
 [SUBSYSTEM::LIBEVENTS]
-PUBLIC_DEPENDENCIES = LIBTALLOC LIBSAMBA-UTIL
 # End SUBSYSTEM LIBEVENTS
 ##############################
 
diff --git a/source/lib/events/configure.ac b/source/lib/events/configure.ac
new file mode 100644
index 0000000..4eb3575
--- /dev/null
+++ b/source/lib/events/configure.ac
@@ -0,0 +1,35 @@
+AC_PREREQ(2.50)
+AC_DEFUN([SMB_MODULE_DEFAULT], [echo -n ""])
+AC_DEFUN([SMB_LIBRARY_ENABLE], [echo -n ""])
+AC_DEFUN([SMB_ENABLE], [echo -n ""])
+AC_INIT(events, 1.0.0)
+AC_CONFIG_SRCDIR([events.c])
+AC_CONFIG_HEADER(config.h)
+AC_LIBREPLACE_ALL_CHECKS
+AC_LIBREPLACE_NETWORK_CHECKS
+
+m4_include(libtalloc.m4)
+
+AC_LD_EXPORT_DYNAMIC
+AC_LD_SONAMEFLAG
+AC_LD_PICFLAG
+AC_LD_SHLIBEXT
+AC_LIBREPLACE_SHLD
+AC_LIBREPLACE_SHLD_FLAGS
+AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
+m4_include(libevents.m4)
+AC_PATH_PROGS([PYTHON_CONFIG], [python2.6-config python2.5-config python2.4-config python-config])
+AC_PATH_PROGS([PYTHON], [python2.6 python2.5 python2.4 python])
+
+PYTHON_BUILD_TARGET="build-python"
+PYTHON_INSTALL_TARGET="install-python"
+PYTHON_CHECK_TARGET="check-python"
+AC_SUBST(PYTHON_BUILD_TARGET)
+AC_SUBST(PYTHON_INSTALL_TARGET)
+AC_SUBST(PYTHON_CHECK_TARGET)
+if test -z "$PYTHON_CONFIG"; then
+	PYTHON_BUILD_TARGET=""
+	PYTHON_INSTALL_TARGET=""
+	PYTHON_CHECK_TARGET=""
+fi
+AC_OUTPUT(Makefile events.pc)
diff --git a/source/lib/events/events.c b/source/lib/events/events.c
index 6f45db5..ccc62b4 100644
--- a/source/lib/events/events.c
+++ b/source/lib/events/events.c
@@ -52,12 +52,16 @@
   forever.
 
 */
-
+#if _SAMBA_BUILD_
 #include "includes.h"
-#include "lib/events/events.h"
-#include "lib/events/events_internal.h"
 #include "lib/util/dlinklist.h"
 #include "param/param.h"
+#else
+#include "replace.h"
+#include "events_util.h"
+#endif
+#include "events.h"
+#include "events_internal.h"
 
 struct event_ops_list {
 	struct event_ops_list *next, *prev;
@@ -204,6 +208,8 @@ struct event_context *event_context_init_byname(TALLOC_CTX *mem_ctx, const char
 */
 struct event_context *event_context_init(TALLOC_CTX *mem_ctx)
 {
+	DEBUG(0, ("New event context requested. Parent: [%s:%p]\n",
+		  mem_ctx?talloc_get_name(mem_ctx):"NULL", mem_ctx));
 	return event_context_init_byname(mem_ctx, NULL);
 }
 
@@ -283,7 +289,7 @@ struct signal_event *event_add_signal(struct event_context *ev, TALLOC_CTX *mem_
 /*
   do a single event loop using the events defined in ev 
 */
-_PUBLIC_ int event_loop_once(struct event_context *ev)
+int event_loop_once(struct event_context *ev)
 {
 	return ev->ops->loop_once(ev);
 }
diff --git a/source/lib/events/events.i b/source/lib/events/events.i
index 263605b..c16d482 100644
--- a/source/lib/events/events.i
+++ b/source/lib/events/events.i
@@ -21,7 +21,7 @@
 %import "../talloc/talloc.i";
 
 %{
-#include "lib/events/events.h"
+#include "events.h"
 typedef struct event_context event;
 %}
 
diff --git a/source/lib/events/events.mk b/source/lib/events/events.mk
new file mode 100644
index 0000000..64d3fcb
--- /dev/null
+++ b/source/lib/events/events.mk
@@ -0,0 +1,59 @@
+dirs::
+	@mkdir -p lib
+
+LIBEVENTS_SONAME = libevents.$(SHLIBEXT).0
+LIBEVENTS_SOLIB = libevents.$(SHLIBEXT).$(PACKAGE_VERSION)
+
+LIBEVENTS = libevents.a
+
+clean::
+	rm -f $(LIBEVENTS_SONAME) $(LIBEVENTS_SOLIB) libevents.a libevents.$(SHLIBEXT)
+	rm -f events.pc
+
+build-python:: _libevents.$(SHLIBEXT)
+
+events_wrap.o: $(eventsdir)/events_wrap.c
+	$(CC) $(PICFLAG) -c $(eventsdir)/events_wrap.c $(CFLAGS) `$(PYTHON_CONFIG) --cflags`
+
+_libevents.$(SHLIBEXT): libevents.$(SHLIBEXT) events_wrap.o
+	$(SHLD) $(SHLD_FLAGS) -o $@ events_wrap.o -L. -levents `$(PYTHON_CONFIG) --libs`
+
+install:: installdirs installbin installheaders installlibs \
+		  $(PYTHON_INSTALL_TARGET)
+
+install-python:: build-python
+	mkdir -p $(DESTDIR)`$(PYTHON) -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(0, prefix='$(prefix)')"` \
+		$(DESTDIR)`$(PYTHON) -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(1, prefix='$(prefix)')"`
+	cp $(eventsdir)/events.py $(DESTDIR)`$(PYTHON) -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(0, prefix='$(prefix)')"`
+	cp _libevents.$(SHLIBEXT) $(DESTDIR)`$(PYTHON) -c "import distutils.sysconfig; print distutils.sysconfig.get_python_lib(1, prefix='$(prefix)')"`
+
+check-python:: build-python
+	$(LIB_PATH_VAR)=. PYTHONPATH=".:$(eventsdir)" $(PYTHON) $(eventsdir)/python/tests/simple.py
+
+install-swig::
+	mkdir -p $(DESTDIR)`$(SWIG) -swiglib`
+	cp events.i $(DESTDIR)`$(SWIG) -swiglib`
+
+clean::
+	rm -f _libevents.$(SHLIBEXT)
+
+installdirs::
+	mkdir -p $(DESTDIR)$(includedir)
+	mkdir -p $(DESTDIR)$(libdir)
+	mkdir -p $(DESTDIR)$(libdir)/pkgconfig
+
+installheaders:: installdirs
+	cp $(srcdir)/events.h $(DESTDIR)$(includedir)
+
+installlibs:: all installdirs
+	cp events.pc $(DESTDIR)$(libdir)/pkgconfig
+	cp libevents.a $(LIBEVENTS_SOLIB) $(DESTDIR)$(libdir)
+
+libevents.a: $(EVENTS_OBJ)
+	ar -rv libevents.a $(EVENTS_OBJ)
+
+libevents.$(SHLIBEXT): $(LIBEVENTS_SOLIB)
+	ln -fs $< $@
+
+$(LIBEVENTS_SONAME): $(LIBEVENTS_SOLIB)
+	ln -fs $< $@
diff --git a/source/lib/events/events.pc.in b/source/lib/events/events.pc.in
new file mode 100644
index 0000000..4a4c012
--- /dev/null
+++ b/source/lib/events/events.pc.in
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: events
+Description: An event system library
+Version: @PACKAGE_VERSION@
+Libs: -L${libdir} -levents
+Cflags: -I${includedir} 
+URL: http://samba.org/
diff --git a/source/lib/events/events_epoll.c b/source/lib/events/events_epoll.c
index 109027e..07e6615 100644
--- a/source/lib/events/events_epoll.c
+++ b/source/lib/events/events_epoll.c
@@ -20,12 +20,17 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#if _SAMBA_BUILD_
 #include "includes.h"
+#include "lib/util/dlinklist.h"
+#else
+#include "replace.h"
+#include "events_util.h"
+#endif
 #include "system/filesys.h"
 #include "system/network.h"
-#include "lib/util/dlinklist.h"
-#include "lib/events/events.h"
-#include "lib/events/events_internal.h"
+#include "events.h"
+#include "events_internal.h"
 #include <sys/epoll.h>
 
 struct epoll_event_context {
@@ -56,9 +61,11 @@ struct epoll_event_context {
   called when a epoll call fails, and we should fallback
   to using select
 */
-_NORETURN_ static void epoll_panic(struct epoll_event_context *epoll_ev, const char *reason)
+static void epoll_panic(struct epoll_event_context *epoll_ev, const char *reason)
 {
+#if _SAMBA_BUILD_
 	DEBUG(0,("%s (%s) - calling abort()\n", reason, strerror(errno)));
+#endif
 	abort();
 }
 
diff --git a/source/lib/events/events_select.c b/source/lib/events/events_select.c
index f4b7e4e..16fff71 100644
--- a/source/lib/events/events_select.c
+++ b/source/lib/events/events_select.c
@@ -23,12 +23,17 @@
 
 */
 
+#if _SAMBA_BUILD_
 #include "includes.h"
+#include "lib/util/dlinklist.h"
+#else
+#include "replace.h"
+#include "events_util.h"
+#endif
 #include "system/filesys.h"
 #include "system/select.h"
-#include "lib/util/dlinklist.h"
-#include "lib/events/events.h"
-#include "lib/events/events_internal.h"
+#include "events.h"
+#include "events_internal.h"
 
 struct select_event_context {
 	/* a pointer back to the generic event_context */
@@ -216,7 +221,9 @@ static int select_event_loop_select(struct select_event_context *select_ev, stru
 		   made readable and that should have removed
 		   the event, so this must be a bug. This is a
 		   fatal error. */
+#if _SAMBA_BUILD_
 		DEBUG(0,("ERROR: EBADF on select_event_loop_once\n"));
+#endif
 		select_ev->exit_code = EBADF;
 		return -1;
 	}
diff --git a/source/lib/events/events_signal.c b/source/lib/events/events_signal.c
index c0771cb..7128612 100644
--- a/source/lib/events/events_signal.c
+++ b/source/lib/events/events_signal.c
@@ -19,13 +19,18 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#if _SAMBA_BUILD_
 #include "includes.h"
+#include "lib/util/dlinklist.h"
+#else
+#include <signal.h>
+#include "replace.h"
+#include "events_util.h"
+#endif
 #include "system/filesys.h"
 #include "system/select.h"
-#include "system/wait.h"
-#include "lib/util/dlinklist.h"
-#include "lib/events/events.h"
-#include "lib/events/events_internal.h"
+#include "events.h"
+#include "events_internal.h"
 
 #define NUM_SIGNALS 64
 
diff --git a/source/lib/events/events_standard.c b/source/lib/events/events_standard.c
index 7b945b1..4e41c42 100644
--- a/source/lib/events/events_standard.c
+++ b/source/lib/events/events_standard.c
@@ -27,13 +27,18 @@
     at runtime we fallback to select()
 */
 
+#if _SAMBA_BUILD_
 #include "includes.h"
+#include "lib/util/dlinklist.h"
+#else
+#include "replace.h"
+#include "events_util.h"
+#endif
 #include "system/filesys.h"
 #include "system/network.h"
 #include "system/select.h" /* needed for HAVE_EVENTS_EPOLL */
-#include "lib/util/dlinklist.h"
-#include "lib/events/events.h"
-#include "lib/events/events_internal.h"
+#include "events.h"
+#include "events_internal.h"
 
 struct std_event_context {
 	/* a pointer back to the generic event_context */
diff --git a/source/lib/events/events_timed.c b/source/lib/events/events_timed.c
index 389c2cb..79e4cde 100644
--- a/source/lib/events/events_timed.c
+++ b/source/lib/events/events_timed.c
@@ -20,12 +20,17 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#if _SAMBA_BUILD_
 #include "includes.h"
+#include "lib/util/dlinklist.h"
+#else
+#include "replace.h"
+#include "events_util.h"
+#endif
 #include "system/filesys.h"
 #include "system/select.h"
-#include "lib/util/dlinklist.h"
-#include "lib/events/events.h"
-#include "lib/events/events_internal.h"
+#include "events.h"
+#include "events_internal.h"
 
 /*
   destroy a timed event
diff --git a/source/lib/events/events_util.c b/source/lib/events/events_util.c
new file mode 100644
index 0000000..74e1147
--- /dev/null
+++ b/source/lib/events/events_util.c
@@ -0,0 +1,129 @@
+/*
+   Unix SMB/CIFS implementation.
+
+   Copyright (C) Andrew Tridgell 2005
+   Copyright (C) Jelmer Vernooij 2005
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "replace.h"
+#include "talloc.h"
+
+/**
+  return the number of elements in a string list
+*/
+static size_t str_list_length(const char **list)
+{
+	size_t ret;
+	for (ret=0;list && list[ret];ret++) /* noop */ ;
+	return ret;
+}
+
+/**
+  add an entry to a string list
+*/
+const char **str_list_add(const char **list, const char *s)
+{
+	size_t len = str_list_length(list);
+	const char **ret;
+
+	ret = talloc_realloc(NULL, list, const char *, len+2);
+	if (ret == NULL) return NULL;
+


-- 
Samba Shared Repository


More information about the samba-cvs mailing list