Fairly simple update. Notable additions include SSL support, filters,
config modules, better reloading support, speed improvments, many
bugfixes, and most of our patches being included upstream.
Regress tests have one failure on both amd64 and i386, a segfault in a
gmtime call:
GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-unknown-openbsd4.9"...
Core was generated by `dir_tests'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/lib/libpthread.so.13.1...done.
Loaded symbols for /usr/lib/libpthread.so.13.1
Reading symbols from /usr/local/lib/libzmq.so.0.0...done.
Loaded symbols for /usr/local/lib/libzmq.so.0.0
Reading symbols from /usr/local/lib/libsqlite3.so.15.1...done.
Loaded symbols for /usr/local/lib/libsqlite3.so.15.1
Symbols already loaded for /usr/lib/libpthread.so.13.1
Reading symbols from /usr/lib/libc.so.58.2...done.
Loaded symbols for /usr/lib/libc.so.58.2
Reading symbols from /usr/lib/libstdc++.so.51.0...done.
Loaded symbols for /usr/lib/libstdc++.so.51.0
Reading symbols from /usr/lib/libssl.so.16.0...done.
Reading symbols from /usr/lib/libcrypto.so.19.0...done.
Loaded symbols for /usr/lib/libcrypto.so.19.0
Reading symbols from /usr/lib/libm.so.5.3...done.
Loaded symbols for /usr/lib/libm.so.5.3
Reading symbols from /usr/libexec/ld.so...done.
Loaded symbols for /usr/libexec/ld.so
#0 tzload (name=0x2ead12a0 "GMT", sp=0x2eaf82a0, doextend=1) at
/usr/src/lib/libc/time/localtime.c:332
332 {
(gdb) bt
#0 tzload (name=0x2ead12a0 "GMT", sp=0x2eaf82a0, doextend=1) at
/usr/src/lib/libc/time/localtime.c:332
#1 0x0eb6b3cc in gmtload (sp=0x2eaf82a0) at
/usr/src/lib/libc/time/localtime.c:1161
#2 0x0eb6b495 in gmtsub (timep=0x7f0a8854, offset=0, tmp=0x84b00280) at
/usr/src/lib/libc/time/localtime.c:1402
#3 0x0eb6b501 in gmtime_r (timep=0x7f0a8854, p_tm=0x84b00280) at
/usr/src/lib/libc/time/localtime.c:1437
#4 0x0eb6bb1f in gmtime (timep=0x7f0a8854) at
/usr/src/lib/libc/time/localtime.c:1450
#5 0x1c00cf64 in Dir_find_file (path=0x7f685060, default_type=0x7f685050) at
src/dir.c:111
#6 0x1c00326d in test_Dir_find_file () at tests/dir_tests.c:12
#7 0x1c00331d in all_tests () at tests/dir_tests.c:172
#8 0x1c0034c9 in taskmain (argc=1, argv=0xcfbe04f8) at tests/dir_tests.c:181
#9 0x1c009328 in taskmainstart (v=0x0) at src/task/task.c:325
#10 0x1c009044 in taskstart (y=2092347392, x=0) at src/task/task.c:37
#11 0x00000000 in ?? ()
Not sure if that's a bug in the test code or a bug in our gmtime
implementation, though. Simple testing with a ruby application using
rack-mongrel2 shows no errors.
I plan to commit this next week unless I hear objections.
Jeremy
Index: Makefile
===================================================================
RCS file: /cvs/ports/www/mongrel2/Makefile,v
retrieving revision 1.2
diff -u -p -r1.2 Makefile
--- Makefile 16 Apr 2011 10:45:09 -0000 1.2
+++ Makefile 30 Jun 2011 16:21:42 -0000
@@ -2,10 +2,11 @@
# Some assembly required
ONLY_FOR_ARCHS =i386 amd64
+SHARED_ONLY = Yes
COMMENT = language agnostic asynchronous web server
-DISTNAME = mongrel2-1.5
+DISTNAME = mongrel2-1.7.5
CATEGORIES = www
HOMEPAGE = http://mongrel2.org/
@@ -25,7 +26,9 @@ LIB_DEPENDS = net/zeromq \
databases/sqlite3
USE_GMAKE = Yes
-ALL_TARGET = openbsd
+MAKE_ARGS = OPTFLAGS="-I${LOCALBASE}/include" \
+ OPTLIBS="-L${LOCALBASE}/lib"
+ALL_TARGET = openbsd filters config_modules ${MAKE_ARGS}
EXAMPLE_DIR = ${PREFIX}/share/examples/mongrel2
@@ -37,6 +40,6 @@ post-install:
tar -cf - -C ${WRKSRC}/examples . | tar -xf - -C ${EXAMPLE_DIR}
chown -R ${SHAREOWN}:${SHAREGRP} ${EXAMPLE_DIR}
-REGRESS_TARGET = tests
+REGRESS_TARGET = tests ${MAKE_ARGS}
.include <bsd.port.mk>
Index: distinfo
===================================================================
RCS file: /cvs/ports/www/mongrel2/distinfo,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 distinfo
--- distinfo 1 Apr 2011 22:28:02 -0000 1.1.1.1
+++ distinfo 30 Jun 2011 15:24:19 -0000
@@ -1,5 +1,5 @@
-MD5 (mongrel2-1.5.tar.bz2) = tpn/x++SKtfXA/zTmol5EA==
-RMD160 (mongrel2-1.5.tar.bz2) = crwmKxVWs+1qCmBYXA1/QoXX7rI=
-SHA1 (mongrel2-1.5.tar.bz2) = 8XnBFwJVbta/EP4JK6ek4c3OLGc=
-SHA256 (mongrel2-1.5.tar.bz2) = dCkENkynUXIJj4KNVOTYdpTDgeChZgNVfcXz4CGGizM=
-SIZE (mongrel2-1.5.tar.bz2) = 733493
+MD5 (mongrel2-1.7.5.tar.bz2) = wkPvxZ5Zcvo4G9E6fur9xw==
+RMD160 (mongrel2-1.7.5.tar.bz2) = 5iO7F6Qt+lCdnRTBIIuPtgR/IqI=
+SHA1 (mongrel2-1.7.5.tar.bz2) = RWVh/gTxwO5KmWz8nerauMV+5tw=
+SHA256 (mongrel2-1.7.5.tar.bz2) = SOSzuolZvgAeW6x14KP+5ijJF7CPEVvgi81TSKxmOwE=
+SIZE (mongrel2-1.7.5.tar.bz2) = 745357
Index: patches/patch-Makefile
===================================================================
RCS file: /cvs/ports/www/mongrel2/patches/patch-Makefile,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 patch-Makefile
--- patches/patch-Makefile 1 Apr 2011 22:28:02 -0000 1.1.1.1
+++ patches/patch-Makefile 30 Jun 2011 15:50:56 -0000
@@ -1,41 +1,32 @@
$OpenBSD: patch-Makefile,v 1.1.1.1 2011/04/01 22:28:02 jeremy Exp $
---- Makefile.orig Sun Jan 9 15:18:13 2011
-+++ Makefile Fri Feb 25 08:40:22 2011
-@@ -11,7 +11,7 @@ LIB_OBJ=$(filter-out src/mongrel2.o,${OBJECTS})
- TEST_SRC=$(wildcard tests/*.c)
+--- Makefile.orig Wed Jun 22 09:25:12 2011
++++ Makefile Thu Jun 30 08:50:40 2011
+@@ -1,5 +1,5 @@
+ CFLAGS=-g -O2 -Wall -Wextra -Isrc -pthread -rdynamic -DNDEBUG $(OPTFLAGS)
-D_FILE_OFFSET_BITS=64
+-LIBS=-lzmq -ldl -lsqlite3 $(OPTLIBS)
++LIBS=-lzmq -lsqlite3 $(OPTLIBS)
+ PREFIX?=/usr/local
+
+ get_objs = $(addsuffix .o,$(basename $(wildcard $(1))))
+@@ -16,7 +16,7 @@ TEST_SRC=$(wildcard tests/*_tests.c)
TESTS=$(patsubst %.c,%,${TEST_SRC})
+ MAKEOPTS=OPTFLAGS="${NOEXTCFLAGS} ${OPTFLAGS}" OPTLIBS="${OPTLIBS}"
LIBS="${LIBS}" DESTDIR="${DESTDIR}" PREFIX="${PREFIX}"
-all: bin/mongrel2 tests m2sh
+all: bin/mongrel2 m2sh
- dev: CFLAGS=-g -Wall -Isrc -Wall -Wextra $(OPTFLAGS)
+ dev: CFLAGS=-g -Wall -Isrc -Wall -Wextra $(OPTFLAGS) -D_FILE_OFFSET_BITS=64
dev: all
-@@ -43,6 +43,8 @@ pristine: clean
- ${MAKE} -C tools/m2sh pristine
-
- .PHONY: tests
-+tests: OPTFLAGS=-I${LOCALBASE}/include
-+tests: OPTLIBS=-L${LOCALBASE}/lib -pthread
- tests: build/libm2.a tests/config.sqlite ${TESTS}
- sh ./tests/runtests.sh
-
-@@ -66,7 +68,7 @@ check:
- m2sh:
- ${MAKE} OPTFLAGS="${OPTFLAGS}" OPTLIBS="${OPTLIBS}" -C tools/m2sh all
-
--install: all install-bin install-m2sh
-+install: install-bin install-m2sh
-
- install-bin:
- install -d $(PREFIX)/bin/
-@@ -113,8 +115,8 @@ freebsd: OPTFLAGS=-I/usr/local/include
- freebsd: OPTLIBS=-L/usr/local/lib -pthread
- freebsd: all
-
--openbsd: OPTFLAGS=-l/usr/local/include
--openbsd: OPTLIBS=-L/usr/local/lib -pthread
-+openbsd: OPTFLAGS=-I${LOCALBASE}/include
-+openbsd: OPTLIBS=-L${LOCALBASE}/lib -pthread
- openbsd: all
-
- solaris: OPTFLAGS=-I/usr/local/include
+@@ -93,9 +93,9 @@ filters: build/libm2.a
+ config_modules: build/libm2.a
+ ${MAKE} ${MAKEOPTS} -C tools/config_modules all
+
+-install: all
+- install -d $(DESTDIR)/$(PREFIX)/bin/
+- install bin/mongrel2 $(DESTDIR)/$(PREFIX)/bin/
++install:
++ install -d $(PREFIX)/bin/
++ install bin/mongrel2 $(PREFIX)/bin/
+ ${MAKE} ${MAKEOPTS} -C tools/m2sh install
+ ${MAKE} ${MAKEOPTS} -C tools/config_modules install
+ ${MAKE} ${MAKEOPTS} -C tools/filters install
Index: patches/patch-src_bsd_specific_c
===================================================================
RCS file: patches/patch-src_bsd_specific_c
diff -N patches/patch-src_bsd_specific_c
--- patches/patch-src_bsd_specific_c 1 Apr 2011 22:28:02 -0000 1.1.1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,57 +0,0 @@
-$OpenBSD: patch-src_bsd_specific_c,v 1.1.1.1 2011/04/01 22:28:02 jeremy Exp $
---- src/bsd_specific.c.orig Sun Jan 9 15:18:13 2011
-+++ src/bsd_specific.c Fri Feb 25 08:29:53 2011
-@@ -71,10 +71,52 @@ error:
-
- #else
-
-+extern int fdrecv(int fd, void *buf, int n);
-+extern int fdsend(int fd, void *buf, int n);
-+
-+#define BSD_SENDFILE_BUF_SIZE 16384
-+#include <unistd.h>
-+
- /** For the BSDs without sendfile like open and net.**/
-
- int bsd_sendfile(int out_fd, int in_fd, off_t *offset, size_t count) {
-- return -1;
-+ char buf[BSD_SENDFILE_BUF_SIZE];
-+ int tot, cur, rem, sent;
-+ int ret = -1;
-+ off_t orig_offset;
-+
-+ if (offset != NULL) {
-+ orig_offset = lseek(in_fd, 0, SEEK_CUR);
-+ check(orig_offset >= 0, "lseek failure when determining current
position");
-+ check(lseek(in_fd, *offset, SEEK_SET) >= 0, "lseek failure when setting
new position");
-+ }
-+
-+ for (tot = 0, rem = count, cur = rem; cur != 0 && tot < count; tot += cur,
rem -= cur) {
-+ if (rem >= BSD_SENDFILE_BUF_SIZE) {
-+ cur = BSD_SENDFILE_BUF_SIZE;
-+ } else {
-+ cur = rem;
-+ }
-+
-+ cur = fdread(in_fd, buf, cur);
-+ check(cur >= 0, "Internal sendfile emulation failed: fdread: %i", cur);
-+
-+ if (cur != 0) {
-+ sent = fdwrite(out_fd, buf, cur);
-+ check(sent == cur, "Internal sendfile emulation failed: fdread: %i,
fdwrite: %i", cur, sent);
-+ }
-+ }
-+
-+ ret = tot;
-+
-+error:
-+ if (offset != NULL) {
-+ if (ret != -1) {
-+ *offset += tot;
-+ }
-+ lseek(in_fd, orig_offset, SEEK_SET);
-+ }
-+ return ret;
- }
-
- #endif
Index: patches/patch-src_io_h
===================================================================
RCS file: patches/patch-src_io_h
diff -N patches/patch-src_io_h
--- patches/patch-src_io_h 1 Apr 2011 22:28:02 -0000 1.1.1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,12 +0,0 @@
-$OpenBSD: patch-src_io_h,v 1.1.1.1 2011/04/01 22:28:02 jeremy Exp $
---- src/io.h.orig Thu Feb 24 11:30:31 2011
-+++ src/io.h Thu Feb 24 11:31:51 2011
-@@ -86,7 +86,7 @@ int IOBuf_stream_file(IOBuf *buf, int fd, int len);
-
- #define IOBuf_fd(I) ((I)->fd)
-
--#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__)
-+#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__NetBSD__) ||
defined(__OpenBSD__)
- #define Dir_send bsd_sendfile
- #else
- #define Dir_send sendfile
Index: patches/patch-src_polarssl_net_c
===================================================================
RCS file: patches/patch-src_polarssl_net_c
diff -N patches/patch-src_polarssl_net_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_polarssl_net_c 30 Jun 2011 15:27:13 -0000
@@ -0,0 +1,12 @@
+$OpenBSD$
+--- src/polarssl/net.c.orig Thu Jun 30 08:27:01 2011
++++ src/polarssl/net.c Thu Jun 30 08:27:02 2011
+@@ -59,7 +59,7 @@ static int wsa_init_done = 0;
+ #include <netdb.h>
+ #include <errno.h>
+
+-#if defined(__FreeBSD__)
++#if defined(__FreeBSD__) || defined(__OpenBSD__)
+ #include <sys/endian.h>
+ #elif defined(__APPLE__)
+ #include <machine/endian.h>
Index: patches/patch-src_task_asm_S
===================================================================
RCS file: patches/patch-src_task_asm_S
diff -N patches/patch-src_task_asm_S
--- patches/patch-src_task_asm_S 1 Apr 2011 22:28:02 -0000 1.1.1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,21 +0,0 @@
-$OpenBSD: patch-src_task_asm_S,v 1.1.1.1 2011/04/01 22:28:02 jeremy Exp $
---- src/task/asm.S.orig Thu Feb 24 13:03:43 2011
-+++ src/task/asm.S Thu Feb 24 13:05:01 2011
-@@ -6,10 +6,16 @@
- #define GET getmcontext
- #endif
-
--#if defined(__OpenBSD__) && defined(__i386__)
-+#if defined(__OpenBSD__)
-+#if defined(__i386__)
- #define NEEDX86CONTEXT 1
- #define SET setmcontext
- #define GET getmcontext
-+#elif defined(__x86_64__)
-+#define NEEDAMD64CONTEXT 1
-+#define SET setmcontext
-+#define GET getmcontext
-+#endif
- #endif
-
- #if defined(__APPLE__)
Index: patches/patch-src_task_context_c
===================================================================
RCS file: patches/patch-src_task_context_c
diff -N patches/patch-src_task_context_c
--- patches/patch-src_task_context_c 1 Apr 2011 22:28:02 -0000 1.1.1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,19 +0,0 @@
-$OpenBSD: patch-src_task_context_c,v 1.1.1.1 2011/04/01 22:28:02 jeremy Exp $
---- src/task/context.c.orig Sun Jan 9 15:18:13 2011
-+++ src/task/context.c Thu Feb 24 12:36:11 2011
-@@ -20,9 +20,14 @@
- #define NEEDSWAPCONTEXT
- #endif
-
--#if defined(__OpenBSD__) && defined(__i386__)
-+#if defined(__OpenBSD__)
-+#if defined(__i386__)
- #define NEEDX86MAKECONTEXT
- #define NEEDSWAPCONTEXT
-+#elif defined(__x86_64__)
-+#define NEEDAMD64MAKECONTEXT
-+#define NEEDSWAPCONTEXT
-+#endif
- #endif
-
- #if defined(__linux__) && defined(__arm__)
Index: patches/patch-src_task_taskimpl_h
===================================================================
RCS file: patches/patch-src_task_taskimpl_h
diff -N patches/patch-src_task_taskimpl_h
--- patches/patch-src_task_taskimpl_h 1 Apr 2011 22:28:02 -0000 1.1.1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,12 +0,0 @@
-$OpenBSD: patch-src_task_taskimpl_h,v 1.1.1.1 2011/04/01 22:28:02 jeremy Exp $
---- src/task/taskimpl.h.orig Thu Feb 24 12:21:50 2011
-+++ src/task/taskimpl.h Thu Feb 24 12:22:11 2011
-@@ -88,6 +88,8 @@ extern void makecontext(ucontext_t*, void(*)
- # define ucontext_t libthread_ucontext_t
- # if defined __i386__
- # include "386-ucontext.h"
-+# elif defined(__x86_64__)
-+# include "amd64-ucontext.h"
- # else
- # include "power-ucontext.h"
- # endif
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/www/mongrel2/pkg/PLIST,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 PLIST
--- pkg/PLIST 1 Apr 2011 22:28:02 -0000 1.1.1.1
+++ pkg/PLIST 30 Jun 2011 15:52:26 -0000
@@ -1,7 +1,14 @@
@comment $OpenBSD: PLIST,v 1.1.1.1 2011/04/01 22:28:02 jeremy Exp $
@bin bin/m2sh
@bin bin/mongrel2
+lib/mongrel2/
+lib/mongrel2/config_modules/
+lib/mongrel2/config_modules/null.so
+lib/mongrel2/config_modules/zmq.so
+lib/mongrel2/filters/
+lib/mongrel2/filters/null.so
share/examples/mongrel2/
+share/examples/mongrel2/.dexy
share/examples/mongrel2/bbs/
share/examples/mongrel2/bbs/bbs.lua
share/examples/mongrel2/bbs/client.py
@@ -55,6 +62,7 @@ share/examples/mongrel2/configs/any.conf
share/examples/mongrel2/configs/complex.conf
share/examples/mongrel2/configs/mongrel2.conf
share/examples/mongrel2/configs/multi.conf
+share/examples/mongrel2/configs/multi_handler.conf
share/examples/mongrel2/configs/sample.conf
share/examples/mongrel2/http_0mq/
share/examples/mongrel2/http_0mq/http.py
@@ -104,10 +112,12 @@ share/examples/mongrel2/python/mongrel2/
share/examples/mongrel2/python/mongrel2/config/commands.py
share/examples/mongrel2/python/mongrel2/config/model.py
share/examples/mongrel2/python/mongrel2/config/rc.py
+share/examples/mongrel2/python/mongrel2/control.py
share/examples/mongrel2/python/mongrel2/handler.py
share/examples/mongrel2/python/mongrel2/request.py
share/examples/mongrel2/python/mongrel2/sql/
share/examples/mongrel2/python/mongrel2/sql/config.sql
+share/examples/mongrel2/python/mongrel2/tnetstrings.py
share/examples/mongrel2/python/setup.py
share/examples/mongrel2/python/tests/
share/examples/mongrel2/python/tests/__init__.py