Hi Erza,

I'm not sure if glib is installed by default on macs. (Seems like it
should be but I don't see it on mine.) If you use fink you can do
  apt-get install glib2-dev
The makefile is pretty hacky - make sure you have libev in your
LIBRARY_PATH and ev.h in your CPATH

ry

On Jan 14, 2008 10:03 PM, Ezra Zygmuntowicz <[EMAIL PROTECTED]> wrote:
>
>
> On Jan 14, 2008, at 8:43 AM, ry dahl wrote:
>
> > Hello Mongrel Users,
> >
> > I'm writing a web server called Ebb. It's written in C, makes use of
> > the Mongrel HTTP parser, and uses libev its event loop. The goal is to
> > be small, fast, and language independent server that can host web
> > frameworks. I have written a small Ruby binding which provides a Rack
> > handler - this will allow Ebb to host Rails, Merb, and other Ruby
> > frameworks. In the future I will write a Python WSGI binding.
> >
> > The design is similar to the evented Mongrel web server. Connections
> > are processed as follows:
> >
> > 1. libev loops and waits for incoming connections.
> > 2. When Ebb can read from a client socket, it passes the buffer into
> > the
> >   mongrel state machine which parses the headers into name value
> > pairs.
> > 3. Ebb starts a new thread and passes the request information and
> > peer socket
> >   to a user supplied callback. The thread lasts only for the length
> > of that
> >   callback.
> > 4. The included Ruby binding, supplying this callback transforms the
> > request
> >   into a Rack compatible "env" variable and passes it on a Rack
> > adapter.
> >
> > The code measures in at less than 1000 lines of C code.
> >
> > There is much work to do; it is not ready for use. I am soliciting
> > help from the community for testing and development. You may browse
> > the git repository at http://repo.or.cz/w/ebb.git or check out the
> > code with this command:
> > git clone git://repo.or.cz/ebb.git
> > I release Ebb under the MIT license.
> > It is very fun to program Ebb so I suggest you do too :)
> >
> >
> > Ry Dahl
>
> Hey Ry-
>
>         Is glib-2.0 a dependency? It seems like 2.0 is an old version of
> glib. So ebb doesn't compile on leopard out of the box. What do I need
> to install to make it work?
>
> ~/ebb > make
> gcc -g -Wall `pkg-config --cflags glib-2.0` -I/opt/libev-2.01/include -
> L/opt/libev-2.01/lib -c tcp.c -o tcp.o
> Package glib-2.0 was not found in the pkg-config search path.
> Perhaps you should add the directory containing `glib-2.0.pc'
> to the PKG_CONFIG_PATH environment variable
> No package 'glib-2.0' found
> tcp.c:18:16: error: ev.h: No such file or directory
> tcp.c:19:18: error: glib.h: No such file or directory
> In file included from tcp.c:23:
> tcp.h:48: error: syntax error before 'GQueue'
> tcp.h:48: warning: no semicolon at end of struct or union
> tcp.h:53: error: syntax error before '*' token
> tcp.h:53: warning: type defaults to 'int' in declaration of
> 'accept_watcher'
> tcp.h:53: warning: data definition has no type or storage class
> tcp.h:55: error: syntax error before '}' token
> tcp.h:72: error: syntax error before 'ev_io'
> tcp.h:72: warning: no semicolon at end of struct or union
> tcp.c: In function 'tcp_client_write':
> tcp.c:33: error: dereferencing pointer to incomplete type
> tcp.c:34: error: dereferencing pointer to incomplete type
> tcp.c:36: warning: implicit declaration of function 'g_log'
> tcp.c:36: error: 'G_LOG_LEVEL_ERROR' undeclared (first use in this
> function)
> tcp.c:36: error: (Each undeclared identifier is reported only once
> tcp.c:36: error: for each function it appears in.)
> tcp.c: At top level:
> tcp.c:46: warning: 'struct ev_io' declared inside parameter list
> tcp.c:46: warning: its scope is only this definition or declaration,
> which is probably not what you want
> tcp.c: In function 'tcp_client_on_readable':
> tcp.c:48: error: dereferencing pointer to incomplete type
> tcp.c:52: error: 'EV_ERROR' undeclared (first use in this function)
> tcp.c:53: error: 'G_LOG_LEVEL_ERROR' undeclared (first use in this
> function)
> tcp.c:57: error: dereferencing pointer to incomplete type
> tcp.c:58: error: dereferencing pointer to incomplete type
> tcp.c:59: error: dereferencing pointer to incomplete type
> tcp.c:60: error: dereferencing pointer to incomplete type
> tcp.c:62: error: dereferencing pointer to incomplete type
> tcp.c:64: error: dereferencing pointer to incomplete type
> tcp.c:64: error: dereferencing pointer to incomplete type
> tcp.c:67: warning: implicit declaration of function 'g_debug'
> tcp.c:81: error: dereferencing pointer to incomplete type
> tcp.c:81: error: dereferencing pointer to incomplete type
> tcp.c:81: error: dereferencing pointer to incomplete type
> tcp.c: In function 'tcp_client_new':
> tcp.c:95: warning: implicit declaration of function 'g_new0'
> tcp.c:95: error: syntax error before 'tcp_client'
> tcp.c:97: error: dereferencing pointer to incomplete type
> tcp.c:99: error: dereferencing pointer to incomplete type
> tcp.c:99: error: dereferencing pointer to incomplete type
> tcp.c:99: error: dereferencing pointer to incomplete type
> tcp.c:100: error: dereferencing pointer to incomplete type
> tcp.c:101: error: 'G_LOG_LEVEL_ERROR' undeclared (first use in this
> function)
> tcp.c:105: error: dereferencing pointer to incomplete type
> tcp.c:105: error: 'TRUE' undeclared (first use in this function)
> tcp.c:107: error: dereferencing pointer to incomplete type
> tcp.c:113: error: dereferencing pointer to incomplete type
> tcp.c:115: error: dereferencing pointer to incomplete type
> tcp.c:115: error: syntax error before 'struct'
> tcp.c:116: error: dereferencing pointer to incomplete type
> tcp.c:117: warning: implicit declaration of function 'ev_init'
> tcp.c:117: error: dereferencing pointer to incomplete type
> tcp.c:118: warning: implicit declaration of function 'ev_io_set'
> tcp.c:118: error: dereferencing pointer to incomplete type
> tcp.c:118: error: dereferencing pointer to incomplete type
> tcp.c:118: error: 'EV_READ' undeclared (first use in this function)
> tcp.c:118: error: 'EV_ERROR' undeclared (first use in this function)
> tcp.c:119: warning: implicit declaration of function 'ev_io_start'
> tcp.c:119: error: dereferencing pointer to incomplete type
> tcp.c:119: error: dereferencing pointer to incomplete type
> tcp.c: In function 'tcp_client_stop_read_watcher':
> tcp.c:131: error: dereferencing pointer to incomplete type
> tcp.c:134: error: dereferencing pointer to incomplete type
> tcp.c:136: warning: implicit declaration of function 'ev_io_stop'
> tcp.c:136: error: dereferencing pointer to incomplete type
> tcp.c:136: error: dereferencing pointer to incomplete type
> tcp.c:137: error: dereferencing pointer to incomplete type
> tcp.c:138: error: dereferencing pointer to incomplete type
> tcp.c: In function 'tcp_client_free':
> tcp.c:146: error: dereferencing pointer to incomplete type
> tcp.c: In function 'tcp_client_close':
> tcp.c:153: error: dereferencing pointer to incomplete type
> tcp.c:155: error: dereferencing pointer to incomplete type
> tcp.c:156: error: dereferencing pointer to incomplete type
> tcp.c:156: error: 'FALSE' undeclared (first use in this function)
> tcp.c: In function 'tcp_server_new':
> tcp.c:165: error: syntax error before 'tcp_server'
> tcp.c:167: error: dereferencing pointer to incomplete type
> tcp.c:168: error: dereferencing pointer to incomplete type
> tcp.c:170: error: 'G_LOG_LEVEL_ERROR' undeclared (first use in this
> function)
> tcp.c:175: error: dereferencing pointer to incomplete type
> tcp.c:189: error: dereferencing pointer to incomplete type
> tcp.c:189: warning: implicit declaration of function 'ev_loop_new'
> tcp.c:191: error: dereferencing pointer to incomplete type
> tcp.c:191: warning: implicit declaration of function 'g_queue_new'
> tcp.c:192: error: dereferencing pointer to incomplete type
> tcp.c:192: error: 'FALSE' undeclared (first use in this function)
> tcp.c: In function 'tcp_server_free':
> tcp.c:203: warning: implicit declaration of function 'g_queue_free'
> tcp.c:203: error: dereferencing pointer to incomplete type
> tcp.c: In function 'tcp_server_close':
> tcp.c:211: error: dereferencing pointer to incomplete type
> tcp.c:214: warning: implicit declaration of function 'g_queue_pop_head'
> tcp.c:214: error: dereferencing pointer to incomplete type
> tcp.c:214: warning: assignment makes pointer from integer without a cast
> tcp.c:217: error: dereferencing pointer to incomplete type
> tcp.c:218: error: dereferencing pointer to incomplete type
> tcp.c:219: error: dereferencing pointer to incomplete type
> tcp.c:221: error: dereferencing pointer to incomplete type
> tcp.c:222: error: dereferencing pointer to incomplete type
> tcp.c:223: error: dereferencing pointer to incomplete type
> tcp.c:225: error: dereferencing pointer to incomplete type
> tcp.c:227: error: dereferencing pointer to incomplete type
> tcp.c:227: error: dereferencing pointer to incomplete type
> tcp.c:228: error: dereferencing pointer to incomplete type
> tcp.c:229: error: dereferencing pointer to incomplete type
> tcp.c:231: warning: implicit declaration of function 'ev_unloop'
> tcp.c:231: error: dereferencing pointer to incomplete type
> tcp.c:231: error: 'EVUNLOOP_ALL' undeclared (first use in this function)
> tcp.c:232: warning: implicit declaration of function 'ev_loop_destroy'
> tcp.c:232: error: dereferencing pointer to incomplete type
> tcp.c:233: error: dereferencing pointer to incomplete type
> tcp.c:235: error: dereferencing pointer to incomplete type
> tcp.c:236: error: dereferencing pointer to incomplete type
> tcp.c:236: error: 'FALSE' undeclared (first use in this function)
> tcp.c: At top level:
> tcp.c:242: warning: 'struct ev_io' declared inside parameter list
> tcp.c: In function 'tcp_server_accept':
> tcp.c:244: error: dereferencing pointer to incomplete type
> tcp.c:247: error: dereferencing pointer to incomplete type
> tcp.c:248: error: dereferencing pointer to incomplete type
> tcp.c:251: error: 'EV_ERROR' undeclared (first use in this function)
> tcp.c:252: error: 'G_LOG_LEVEL_ERROR' undeclared (first use in this
> function)
> tcp.c:258: warning: implicit declaration of function 'g_queue_push_head'
> tcp.c:258: error: dereferencing pointer to incomplete type
> tcp.c:258: error: 'gpointer' undeclared (first use in this function)
> tcp.c:258: error: syntax error before 'client'
> tcp.c:260: error: dereferencing pointer to incomplete type
> tcp.c:261: error: dereferencing pointer to incomplete type
> tcp.c:261: error: dereferencing pointer to incomplete type
> tcp.c: In function 'tcp_server_listen':
> tcp.c:276: error: dereferencing pointer to incomplete type
> tcp.c:277: error: dereferencing pointer to incomplete type
> tcp.c:280: error: dereferencing pointer to incomplete type
> tcp.c:281: error: dereferencing pointer to incomplete type
> tcp.c:283: error: dereferencing pointer to incomplete type
> tcp.c:284: error: dereferencing pointer to incomplete type
> tcp.c:284: error: dereferencing pointer to incomplete type
> tcp.c:285: error: 'G_LOG_LEVEL_ERROR' undeclared (first use in this
> function)
> tcp.c:288: error: dereferencing pointer to incomplete type
> tcp.c:288: error: dereferencing pointer to incomplete type
> tcp.c:298: error: dereferencing pointer to incomplete type
> tcp.c:298: error: dereferencing pointer to incomplete type
> tcp.c:298: error: dereferencing pointer to incomplete type
> tcp.c:304: error: dereferencing pointer to incomplete type
> tcp.c:310: error: dereferencing pointer to incomplete type
> tcp.c:310: error: 'FALSE' undeclared (first use in this function)
> tcp.c:311: error: dereferencing pointer to incomplete type
> tcp.c:311: error: 'TRUE' undeclared (first use in this function)
> tcp.c:313: error: dereferencing pointer to incomplete type
> tcp.c:313: error: syntax error before 'struct'
> tcp.c:314: error: dereferencing pointer to incomplete type
> tcp.c:315: error: dereferencing pointer to incomplete type
> tcp.c:316: error: dereferencing pointer to incomplete type
> tcp.c:318: error: dereferencing pointer to incomplete type
> tcp.c:319: error: dereferencing pointer to incomplete type
> tcp.c:319: error: dereferencing pointer to incomplete type
> tcp.c:319: error: 'EV_READ' undeclared (first use in this function)
> tcp.c:319: error: 'EV_ERROR' undeclared (first use in this function)
> tcp.c:320: error: dereferencing pointer to incomplete type
> tcp.c:320: error: dereferencing pointer to incomplete type
> tcp.c:321: warning: implicit declaration of function 'ev_loop'
> tcp.c:321: error: dereferencing pointer to incomplete type
> tcp.c: In function 'tcp_server_address':
> tcp.c:331: error: dereferencing pointer to incomplete type
> tcp.c:332: error: dereferencing pointer to incomplete type
> tcp.c:335: warning: control reaches end of non-void function
> make: *** [tcp.o] Error 1
>
>
> Thanks
>
>
> - Ezra Zygmuntowicz
> -- Founder & Software Architect
> -- [EMAIL PROTECTED]
> -- EngineYard.com
>
>
> _______________________________________________
> Mongrel-users mailing list
> Mongrel-users@rubyforge.org
> http://rubyforge.org/mailman/listinfo/mongrel-users
>
_______________________________________________
Mongrel-users mailing list
Mongrel-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/mongrel-users

Reply via email to