[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