summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgson <gson@pkgsrc.org>2002-08-25 19:40:16 +0000
committergson <gson@pkgsrc.org>2002-08-25 19:40:16 +0000
commit4a9659909c8a4a20c04086ed7156d6821d05e891 (patch)
tree62e51afecfb7f384a4b7b042f5bf926218b9755a
parentefb93b17bd48d49105d00f52887445a53f7cd60b (diff)
downloadpkgsrc-4a9659909c8a4a20c04086ed7156d6821d05e891.tar.gz
Add st: non-preemptive thread library for Internet applications
The State Threads Library is a small application library which provides a foundation for writing fast and highly scalable Internet applications (such as web servers, proxy servers, mail transfer agents, and so on, really any network-data-driven application) on UNIX-like platforms. It combines the simplicity of the multithreaded programming paradigm, in which one thread supports each simultaneous connection, with the performance and scalability of an event-driven state machine architecture. In other words, this library offers a threading API for structuring an Internet application as a state machine.
-rw-r--r--devel/st/DESCR10
-rw-r--r--devel/st/Makefile34
-rw-r--r--devel/st/PLIST15
-rw-r--r--devel/st/distinfo7
-rw-r--r--devel/st/patches/patch-aa85
-rw-r--r--devel/st/patches/patch-ab60
-rw-r--r--devel/st/patches/patch-ac45
7 files changed, 256 insertions, 0 deletions
diff --git a/devel/st/DESCR b/devel/st/DESCR
new file mode 100644
index 00000000000..433341edbcc
--- /dev/null
+++ b/devel/st/DESCR
@@ -0,0 +1,10 @@
+The State Threads Library is a small application library which
+provides a foundation for writing fast and highly scalable Internet
+applications (such as web servers, proxy servers, mail transfer
+agents, and so on, really any network-data-driven application) on
+UNIX-like platforms. It combines the simplicity of the multithreaded
+programming paradigm, in which one thread supports each simultaneous
+connection, with the performance and scalability of an event-driven
+state machine architecture. In other words, this library offers a
+threading API for structuring an Internet application as a state
+machine.
diff --git a/devel/st/Makefile b/devel/st/Makefile
new file mode 100644
index 00000000000..da39605c0b6
--- /dev/null
+++ b/devel/st/Makefile
@@ -0,0 +1,34 @@
+# $NetBSD: Makefile,v 1.1.1.1 2002/08/25 19:40:16 gson Exp $
+#
+
+DISTNAME= st-1.3
+CATEGORIES= devel
+MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=state-threads/}
+
+MAINTAINER= gson@netbsd.org
+HOMEPAGE= http://state-threads.sourceforge.net/
+COMMENT= Non-preemptive thread library for Internet applications
+
+ONLY_FOR_PLATFORM= NetBSD-*-i386 NetBSD-*-sparc
+
+USE_LIBTOOL= yes
+USE_GMAKE= yes
+ALL_TARGET= netbsd-debug
+
+HTMLDIR= ${PREFIX}/share/doc/html/st
+
+do-install:
+ ${LIBTOOL} --mode=install ${INSTALL_DATA} \
+ ${WRKSRC}/libst.la ${PREFIX}/lib
+ ${LIBTOOL} --mode=install ${INSTALL_PROGRAM} \
+ ${WRKSRC}/examples/lookupdns ${PREFIX}/bin/st-lookupdns
+ ${LIBTOOL} --mode=install ${INSTALL_PROGRAM} \
+ ${WRKSRC}/examples/proxy ${PREFIX}/bin/st-proxy
+ ${LIBTOOL} --mode=install ${INSTALL_PROGRAM} \
+ ${WRKSRC}/examples/server ${PREFIX}/bin/st-server
+ ${INSTALL_DATA_DIR} ${PREFIX}/include/st
+ ${INSTALL_DATA} ${WRKSRC}/public.h ${PREFIX}/include/st.h
+ ${INSTALL_DATA_DIR} ${HTMLDIR}
+ cd ${WRKSRC}/docs; ${INSTALL_DATA} *.html *.gif ${HTMLDIR}
+
+.include "../../mk/bsd.pkg.mk"
diff --git a/devel/st/PLIST b/devel/st/PLIST
new file mode 100644
index 00000000000..3b5e15d8357
--- /dev/null
+++ b/devel/st/PLIST
@@ -0,0 +1,15 @@
+@comment $NetBSD: PLIST,v 1.1.1.1 2002/08/25 19:40:16 gson Exp $
+bin/st-lookupdns
+bin/st-proxy
+bin/st-server
+include/st.h
+lib/libst.a
+lib/libst.la
+lib/libst.so
+lib/libst.so.1
+lib/libst.so.1.3
+share/doc/html/st/fig.gif
+share/doc/html/st/notes.html
+share/doc/html/st/reference.html
+share/doc/html/st/st.html
+@dirrm share/doc/html/st
diff --git a/devel/st/distinfo b/devel/st/distinfo
new file mode 100644
index 00000000000..3d94f039682
--- /dev/null
+++ b/devel/st/distinfo
@@ -0,0 +1,7 @@
+$NetBSD: distinfo,v 1.1.1.1 2002/08/25 19:40:16 gson Exp $
+
+SHA1 (st-1.3.tar.gz) = 5d97fc248a2a86602cbd3944ff78a9e916058672
+Size (st-1.3.tar.gz) = 75588 bytes
+SHA1 (patch-aa) = e01af9bcf55cbbbd0b4f2e93f5734a2c615431c3
+SHA1 (patch-ab) = 3c69a37f27c9d4fa4e85b23bb378ac2ae330c759
+SHA1 (patch-ac) = 7c832f17da0637d646685d49c0a43d12db066d65
diff --git a/devel/st/patches/patch-aa b/devel/st/patches/patch-aa
new file mode 100644
index 00000000000..bec7f90a657
--- /dev/null
+++ b/devel/st/patches/patch-aa
@@ -0,0 +1,85 @@
+$NetBSD: patch-aa,v 1.1.1.1 2002/08/25 19:40:16 gson Exp $
+
+--- Makefile.orig Mon Jan 21 19:59:08 2002
++++ Makefile
+@@ -86,6 +86,7 @@
+ irix-64-debug irix-64-optimized \
+ linux-debug linux-optimized \
+ linux-ia64-debug linux-ia64-optimized \
++ netbsd-debug netbsd-optimized \
+ openbsd-debug openbsd-optimized \
+ osf1-debug osf1-optimized \
+ solaris-debug solaris-optimized
+@@ -148,6 +149,13 @@
+ OTHER_FLAGS = -Wall
+ endif
+
++ifeq ($(OS), NETBSD)
++OTHER_FLAGS = -Wall
++TARGETDIR = .
++# The following is a lie; we do build dynamic libraries
++STATIC_ONLY = yes
++endif
++
+ ifeq ($(OS), OPENBSD)
+ SFLAGS = -fPIC
+ LDFLAGS = -shared -soname=$(SONAME) -lc
+@@ -203,14 +211,14 @@
+
+ CFLAGS += $(DEFINES) $(OTHER_FLAGS)
+
+-OBJS = $(TARGETDIR)/sched.o \
+- $(TARGETDIR)/stk.o \
+- $(TARGETDIR)/sync.o \
+- $(TARGETDIR)/key.o \
+- $(TARGETDIR)/io.o
++OBJS = $(TARGETDIR)/sched.lo \
++ $(TARGETDIR)/stk.lo \
++ $(TARGETDIR)/sync.lo \
++ $(TARGETDIR)/key.lo \
++ $(TARGETDIR)/io.lo
+ OBJS += $(EXTRA_OBJS)
+ HEADER = $(TARGETDIR)/st.h
+-SLIBRARY = $(TARGETDIR)/libst.a
++SLIBRARY = $(TARGETDIR)/libst.la
+ DLIBRARY = $(TARGETDIR)/libst.$(DSO_SUFFIX).$(VERSION)
+ EXAMPLES = examples
+
+@@ -248,8 +256,7 @@
+ if [ ! -d $(TARGETDIR) ]; then mkdir $(TARGETDIR); fi
+
+ $(SLIBRARY): $(OBJS)
+- $(AR) $(ARFLAGS) $@ $(OBJS)
+- $(RANLIB) $@
++ ${LIBTOOL} --mode=link ${CC} -o $@ ${OBJS} -rpath ${PREFIX}/lib -version-info 1:3
+ rm -f obj; $(LN) $(LNFLAGS) $(TARGETDIR) obj
+
+ $(DLIBRARY): $(OBJS:%.o=%-pic.o)
+@@ -261,11 +268,11 @@
+ rm -f $@
+ cp public.h $@
+
+-$(TARGETDIR)/%asm.o: %asm.S
+- $(CC) $(CFLAGS) -c $< -o $@
++$(TARGETDIR)/%asm.lo: %asm.S
++ $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c $< -o $@
+
+-$(TARGETDIR)/%.o: %.c common.h md.h
+- $(CC) $(CFLAGS) -c $< -o $@
++$(TARGETDIR)/%.lo: %.c common.h md.h
++ $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -c $< -o $@
+
+ examples::
+ @cd $@; $(MAKE) CC="$(CC)" CFLAGS="$(CFLAGS)" OS="$(OS)" TARGETDIR="$(TARGETDIR)"
+@@ -330,6 +337,11 @@
+ $(MAKE) OS="LINUX_IA64" BUILD="DBG"
+ linux-ia64-optimized:
+ $(MAKE) OS="LINUX_IA64" BUILD="OPT"
++
++netbsd-debug:
++ $(MAKE) OS="NETBSD" BUILD="DBG"
++netbsd-optimized:
++ $(MAKE) OS="NETBSD" BUILD="OPT"
+
+ openbsd-debug:
+ $(MAKE) OS="OPENBSD" BUILD="DBG"
diff --git a/devel/st/patches/patch-ab b/devel/st/patches/patch-ab
new file mode 100644
index 00000000000..9b461be1a97
--- /dev/null
+++ b/devel/st/patches/patch-ab
@@ -0,0 +1,60 @@
+$NetBSD: patch-ab,v 1.1.1.1 2002/08/25 19:40:16 gson Exp $
+
+--- examples/Makefile.orig Sat Nov 3 13:18:42 2001
++++ examples/Makefile
+@@ -38,6 +38,7 @@
+ # IRIX_64
+ # LINUX
+ # LINUX_IA64
++# NETBSD
+ # OPENBSD
+ # OSF1
+ # SOLARIS
+@@ -58,9 +59,9 @@
+ OTHER_FLAGS =
+
+ OBJDIR = $(DEPTH)/$(TARGETDIR)
+-INCDIR = $(DEPTH)/$(TARGETDIR)
+-LIBST = $(OBJDIR)/libst.a
+-HEADER = $(INCDIR)/st.h
++INCDIR = $(DEPTH)
++LIBST = $(DEPTH)/libst.la
++HEADER = $(DEPTH)/st.h
+
+ LIBRESOLV =
+ EXTRALIBS =
+@@ -68,7 +69,7 @@
+ ifeq ($(OS),)
+ EXAMPLES = unknown
+ else
+-EXAMPLES = $(OBJDIR)/lookupdns $(OBJDIR)/proxy $(OBJDIR)/server
++EXAMPLES = lookupdns proxy server
+ endif
+
+
+@@ -92,17 +93,17 @@
+
+ all: $(EXAMPLES)
+
+-$(OBJDIR)/lookupdns: lookupdns.c $(OBJDIR)/res.o $(LIBST) $(HEADER)
+- $(CC) $(CFLAGS) -I$(INCDIR) lookupdns.c $(OBJDIR)/res.o $(LIBST) $(LIBRESOLV) $(EXTRALIBS) -o $@
++lookupdns: lookupdns.lo res.lo $(LIBST) $(HEADER)
++ $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -I$(INCDIR) lookupdns.lo res.lo $(LIBST) $(LIBRESOLV) $(EXTRALIBS) -o $@
+
+-$(OBJDIR)/proxy: proxy.c $(LIBST) $(HEADER)
+- $(CC) $(CFLAGS) -I$(INCDIR) proxy.c $(LIBST) $(EXTRALIBS) -o $@
++proxy: proxy.lo $(LIBST) $(HEADER)
++ $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -I$(INCDIR) proxy.lo $(LIBST) $(EXTRALIBS) -o $@
+
+-$(OBJDIR)/server: server.c $(OBJDIR)/error.o $(LIBST) $(HEADER)
+- $(CC) $(CFLAGS) -I$(INCDIR) server.c $(OBJDIR)/error.o $(LIBST) $(EXTRALIBS) -o $@
++server: server.lo error.lo $(LIBST) $(HEADER)
++ $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -I$(INCDIR) server.lo error.lo $(LIBST) $(EXTRALIBS) -o $@
+
+-$(OBJDIR)/%.o: %.c
+- $(CC) $(CFLAGS) -I$(INCDIR) -c $< -o $@
++%.lo: %.c
++ $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) -I$(INCDIR) -c $< -o $@
+
+ .DEFAULT:
+ @cd $(DEPTH); $(MAKE) $@
diff --git a/devel/st/patches/patch-ac b/devel/st/patches/patch-ac
new file mode 100644
index 00000000000..bb8b75d85ef
--- /dev/null
+++ b/devel/st/patches/patch-ac
@@ -0,0 +1,45 @@
+$NetBSD: patch-ac,v 1.1.1.1 2002/08/25 19:40:16 gson Exp $
+
+--- md.h.orig Tue Jan 15 22:20:40 2002
++++ md.h
+@@ -245,6 +245,40 @@
+ (void) gettimeofday(&tv, NULL); \
+ return (tv.tv_sec * 1000000LL + tv.tv_usec)
+
++#elif defined (NETBSD)
++
++#define MD_STACK_GROWS_DOWN
++#define MD_USE_BSD_ANON_MMAP
++#define MD_ACCEPT_NB_INHERITED
++#define MD_ALWAYS_UNSERIALIZED_ACCEPT
++#define MD_HAVE_SOCKLEN_T
++
++#define MD_SETJMP(env) _setjmp(env)
++#define MD_LONGJMP(env, val) _longjmp(env, val)
++
++#if __sparc__
++#define MD_INIT_CONTEXT(_thread, _sp, _main) \
++ ST_BEGIN_MACRO \
++ (void) MD_SETJMP((_thread)->context); \
++ (_thread)->context[0] = (long) (_sp); \
++ (_thread)->context[1] = (long) (_main) - 8; \
++ ST_END_MACRO
++#elif __i386__
++#define MD_INIT_CONTEXT(_thread, _sp, _main) \
++ ST_BEGIN_MACRO \
++ (void) MD_SETJMP((_thread)->context); \
++ (_thread)->context[0] = (long) _main; \
++ (_thread)->context[2] = (long) (_sp); \
++ ST_END_MACRO
++#else
++#error Unsupported architecture
++#endif
++
++#define MD_GET_UTIME() \
++ struct timeval tv; \
++ (void) gettimeofday(&tv, NULL); \
++ return (tv.tv_sec * 1000000LL + tv.tv_usec)
++
+ #elif defined (OPENBSD)
+
+ #define MD_STACK_GROWS_DOWN