Giter Club home page Giter Club logo

fapws3's People

Contributors

k3d3 avatar lqs avatar satori avatar stiletto avatar willdignazio avatar william-os4y avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fapws3's Issues

FAPWS3 fails to report proper status when using yielded results

While writing a WSGI reliability benchmark suite, I ran into what seems to be an issue with FAPWS3. In my test, FAPWS3 fails to report 404 Not Found if the content is yielded rather than return.

See this example code, tested against version 0.4 dev:
def application(environ, start_response):
status = '404 Not Found'
output = 'Pong!'

    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]

    start_response(status, response_headers)
    # return [output] # <- works OK
    yield output # <- does not convey 404 status to client


import fapws._evwsgi as evwsgi
from fapws import base

evwsgi.start("0.0.0.0", 8080)
evwsgi.set_base_module(base)
evwsgi.wsgi_cb(("/", application))
evwsgi.set_debug(0)
evwsgi.run()

PATH_INFO set by fapws3 differs from Python's wsgiref

The PATH_INFO set by fapws3 does not prepend a leading '/', whereas wsgiref's simple_server does. This causes problems in places such as wsgiref.utils.shift_path_info, where an IndexError is raised due to lack of the leading slash.

PEP333 states that:
PATH_INFO
The remainder of the request URL's "path", designating the virtual "location" of the request's target within the application. This may be an empty string, if the request URL targets the application root and does not have a trailing slash.

So in this case it seems that wsgiref is at fault in not handling the empty string correctly.

I am basing my use of fapws3 from code on http://nichol.as/benchmark-of-python-web-servers

import fapws._evwsgi as evwsgi
from fapws import base
from pong import application

def start():
    evwsgi.start("0.0.0.0", 8080)
    evwsgi.set_base_module(base)

    evwsgi.wsgi_cb(("/", application))

    evwsgi.set_debug(0)
    evwsgi.run()

if __name__=="__main__":
    start()

Is there any particular reason that fapws3's behaviour differs from wsgiref? It seems that since wsgi_cb was called with '/' as the first argument, the PATH_INFO should reflect that.

A simple package for supporting paste style deployment

Hi,

I just wrote a simple package for support paste style deployment with fapws. You can download here.

http://static.ez2learn.com/paste_fapws.zip

It is really very simple, just install the package, and modify your paste deploy config file:

[server:main]
use = egg:PasteFapws#evwsgi
host = 0.0.0.0
port = 8080

The package expose an entry point of a function which runs fapws server. With this, pylons and TurboGears2 can all be deploy with fapws easily. I hope you can just build this feature in the fawps. Thanks.
Victor Lin.

WSGI POST reading

I am currently trying to benchmark wsgi apps with posting. What puzzles me is that it seems that every framework I try POSTing creates a delay of one second on top of the processing time.

If I compare fapws3 with uwsgi, the POST performance is similar, where uwsgi outperforms fapws3 if a client posts to the server, while the server is not touching the wsgi.input object. When enabling post buffering in uwsgi, a similar latency of fapws3 is observed.

Reproducability:

import fapws._evwsgi as evwsgi
from fapws import base

def KV55(environ, start_response):
    #response = environ['wsgi.input'].read(int(environ['CONTENT_LENGTH']))
    response = ''
    start_response('200 OK', [('Content-Type', 'text/xml'), ('Content-length', str(len(response)))])
    yield response

def start():
    evwsgi.start("0.0.0.0", "8181")
    evwsgi.set_base_module(base)

    evwsgi.wsgi_cb(("/", KV55))

    evwsgi.set_debug(0)
    evwsgi.run()

start()

time curl -X POST -T kv55.xml http://127.0.0.1:8181

real 0m1.014s
user 0m0.008s
sys 0m0.004s

(document is about 3k)

Because I started with uwsgi, I figured out that the delay seems to be on an epoll_wait.

{{EPOLLIN, {u32=3, u64=4294967299}}}, 64, 59743) = 1
clock_gettime(CLOCK_MONOTONIC, {19638, 918400814}) = 0
accept(3, {sa_family=AF_INET, sin_port=htons(48250), sin_addr=inet_addr("127.0.0.1")}, [16]) = 6
fcntl(6, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(6, F_SETFL, O_RDWR|O_NONBLOCK) = 0
epoll_ctl(4, EPOLL_CTL_ADD, 6, {EPOLLIN, {u32=6, u64=12884901894}}) = 0
clock_gettime(CLOCK_MONOTONIC, {19638, 918913760}) = 0
epoll_wait(4, {{EPOLLIN, {u32=6, u64=12884901894}}}, 64, 59743) = 1
clock_gettime(CLOCK_MONOTONIC, {19638, 919034276}) = 0
read(6, "POST /kv55.xml HTTP/1.1\r\nUser-Ag"..., 32768) = 196
clock_gettime(CLOCK_MONOTONIC, {19638, 919240711}) = 0

epoll_wait(4, {{EPOLLIN, {u32=6, u64=12884901894}}}, 64, 59743) = 1

clock_gettime(CLOCK_MONOTONIC, {19639, 919742520}) = 0
read(6, "\n\n<DRIS_55>"..., 32768) = 3935
epoll_ctl(4, EPOLL_CTL_MOD, 6, {EPOLLOUT, {u32=6, u64=17179869190}}) = 0
clock_gettime(CLOCK_MONOTONIC, {19639, 920070711}) = 0
epoll_wait(4, {{EPOLLOUT, {u32=6, u64=17179869190}}}, 64, 59743) = 1
clock_gettime(CLOCK_MONOTONIC, {19639, 920205867}) = 0
write(6, "HTTP/1.0 200 OK\r\nDate: Tue, 24 J"..., 119) = 119
clock_gettime(CLOCK_MONOTONIC, {19639, 920982086}) = 0
epoll_wait(4, {{EPOLLOUT, {u32=6, u64=17179869190}}}, 64, 59743) = 1
clock_gettime(CLOCK_MONOTONIC, {19639, 921086163}) = 0
close(6) = 0
clock_gettime(CLOCK_MONOTONIC, {19639, 921306357}) = 0

Response headers are spoiled

The last version of fapws3, event backend is poll. Sometimes, very unexpectedly, instead of the usual 302 respond like this:

HTTP/1.0 302 FOUND
Content-Length: 539
Access-Control-Max-Age: 21600
Server: ...

I observe this:

�   /1.0 302 FOUND
Content-Length: 539
Access-Control-Max-Age: 21600
Server: ...

Note the first four symbols are spoiled. Probably, it might be related to the use of threading module in my server, but this is just a guess.

Django: extra leading characters in response body

The main page of the Django admin site for a logged in user has two extra bytes (hex 38 01) before <!DOCTYPE. Other admin pages and the login form page don't have these characters.

Here's how to reproduce on Ubuntu 8.10 Intrepid with Python 2.5.2:

  • compile libev 3.6
  • install fapws3 0.2
  • install Django trunk revision 10727
  • run django-admin.py startproject <project_name>
  • configure an sqlite database in settings.py
  • add admin to installed apps and uncomment the admin rule in urls.py
  • in urls.py, add admin.site.root_path = '/admin/' as a temporary fix for django ticket 10061
  • run manage.py syncdb, create superuser
  • run fapws3/sample/django/run.py with the correct PYTHONPATH and DJANGO_SETTINGS_MODULE env vars
  • open http://localhost:8080/admin/ and log in with the superuser account

Incompatible with static_file in bottlepy

fapws3 will print the below line when I'm using static_file() in bottlepy

wsgi output of is neither a list, neither a fileobject, neither an iterable object!!!!!

Demo code can be found here: http://bottlepy.org/docs/dev/tutorial.html#routing-static-files

btw, return a static_file("index.html", root = ".").output which is a file object also fails. Even return an open("index.html") fails. Only return open("index.html").readlines() works.

p.s. Thank you for putting my name on the contributor list

yield example segfaults on Ubuntu / amd64

Python version:

Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) 
[GCC 4.4.3] on linux2

After downloading http://github.com/william-os4y/fapws3/raw/master/sample/iter/test.py

marc@nava:/tmp$ sudo pip install -U fapws3
Downloading/unpacking fapws3
  Downloading fapws3-0.5.dev.tar.gz
  Running setup.py egg_info for package fapws3
Installing collected packages: fapws3
  Running setup.py install for fapws3
    building 'fapws._evwsgi' extension
    gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include -I/usr/local/include -I/opt/local/include -I/usr/include/python2.6 -c fapws/_evwsgi.c -o build/temp.linux-x86_64-2.6/fapws/_evwsgi.o
    In file included from /usr/include/python2.6/Python.h:8,
                     from fapws/_evwsgi.c:38:
    /usr/include/python2.6/pyconfig.h:1031:1: warning: "_POSIX_C_SOURCE" redefined
    In file included from /usr/include/fcntl.h:27,
                     from fapws/_evwsgi.c:19:
    /usr/include/features.h:210:1: warning: this is the location of the previous definition
    gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions build/temp.linux-x86_64-2.6/fapws/_evwsgi.o -L/usr/local/lib -L/opt/local/lib -lev -o build/lib.linux-x86_64-2.6/fapws/_evwsgi.so
Successfully installed fapws3
marc@nava:/tmp$ python test.py
listen on 0.0.0.0:8000
Using epoll as event backend
host:127.0.0.1,port:57760 accept_cb: cli:0x238d7a0, input_header:0x2462830
host=127.0.0.1,port=57760 connection_cb:cli:0x238d7a0, input_header:0x2451730, input_pos:427, r:427
host=127.0.0.1,port=57760:python_handler:HEADER:
GET / HTTP/1.1
Host: localhost:8000
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2.7) Gecko/20100716 Ubuntu/10.04 (lucid) Firefox/3.6.7
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cache-Control: max-age=0

**
Segmentation fault

Django: admin stylesheet .css file truncated

Serving static media with fapws3 as shown in the example fapws3/sample/django/run.py on lines 20–21 exhibits a bug:

The file /media/css/base.css is truncated from 12230 bytes (almost 747 lines) to 11854 bytes (almost 705 lines). Here's how to reproduce on Ubuntu 8.10 Intrepid with Python 2.5.2:

  • compile libev 3.6
  • install fapws3 0.2
  • install Django trunk revision 10727
  • run django-admin.py startproject <project_name>
  • configure an sqlite database in settings.py
  • add admin to installed apps and uncomment the admin rule in urls.py
  • in urls.py, add admin.site.root_path = '/admin/' as a temporary fix for django ticket 10061
  • run manage.py syncdb, create superuser
  • run fapws3/sample/django/run.py with the correct PYTHONPATH and DJANGO_SETTINGS_MODULE env vars
  • open http://localhost:8080/media/css/base.css and scroll to the bottom or check document info, then compare to actual file in the Django source tree

running out of file descriptors

I was running benchmarks of various async web frameworks ala http://brizzled.clapper.org/id/88.html.

I was using examples/hello and hitting http://localhost:8080/short (which serves a small file from disk via a standard blocking open() call) with 50 concurrent connections via ab. What of course happens is that the process quickly runs out of file descriptors.

I wonder if the authors of this software have ideas about how to do file io in a non-blocking way from within a fapws3 server? Node.js (which I was also benching) uses libeio with a thread pool to prevent io from blocking the main thread, and handles large concurrent loads easily. I haven't found anything similar for python, but I feel like it's probably out there somewhere.

Wrong REMOTE_ADDR/fapws.remote_addr reported

I find this problem on a heavily loaded web server running python-bottle 0.10.7-1 on Debian, with fapws3 0.10.dev.

At first I post a bug report at bottle: bottlepy/bottle#290, but then I find it's really a fapws3 bug:

I wrote the simple test script:

!/usr/bin/env python

import fapws._evwsgi as evwsgi
from fapws import base

def start():
evwsgi.start('0.0.0.0', '8000')
evwsgi.set_base_module(base)

def hello(environ, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return ['%s\n%s\n' % (environ['REMOTE_ADDR'], environ['fapws.remote_addr'])]

    
evwsgi.wsgi_cb(('/', hello))

evwsgi.set_debug(0)    
evwsgi.run()

if name == 'main':
start()

Then, by frequent execution of curl, I got

~$ curl http://localhost:8000/
127.0.0.1
127.0.0.1
~$ curl http://localhost:8000/
127.0.0.1
127.0.0.1
~$ curl http://localhost:8000/
127.0.0.1
127.0.0.1
~$ curl http://localhost:8000/ & curl http://10.20.1.50:8000
[1] 26257
127.0.0.1
127.0.0.1
127.0.0.1
127.0.0.1
[1]+ DONE curl http://localhost:8000/

and sometimes

~$ curl http://localhost:8000/ & curl http://10.20.1.50:8000
[4] 26331
10.20.1.50
10.20.1.50
10.20.1.50
10.20.1.50

strcpy cause a crash

when doing strcpy we must assure we are staying within the size defined by MAXHEADER.
Either add a test, either remove the limit.
This problem has been identified by Alex V. (cfr mailing list)

add detection for port argument type

I Know that fapws3 uses getaddrinfo internally which receives port as char*. However, most inetaddress api take port as an integer.
To make the api of fapws3 portable enough, I suggest you to add a type detection on the port argument. If integer input detected, just convert it to string.

Content-Length 0 _should_ be allowed

According to the HTTP 1.1 spec:

Any Content-Length greater than or equal to zero is a valid value. Section 4.4 describes how to determine the length of a message-body if a Content-Length is not given.

I have some REST-style APIs that use POST requests with 0 content-length, so I think there's real practical value in allowing 0-length POST requests. Since the HTTP spec says it should be allowed, I think we should try to make FAPWS allow that as well.

Proposing a PR to fix a few small typos

Issue Type

[x] Bug (Typo)

Steps to Replicate and Expected Behaviour

  • Examine fapws/base.py, fapws/contrib/sessions.py, tests/unittests/mybase.py and observe retreive, however expect to see retrieve.
  • Examine fapws/contrib/siforms/widgets.py, fapws/mainloop.c and observe additonal, however expect to see additional.
  • Examine fapws/contrib/multipart.py and observe useually, however expect to see usually.
  • Examine fapws/contrib/multipart.py and observe strored, however expect to see stored.
  • Examine fapws/contrib/multipart.py and observe porovide, however expect to see provide.
  • Examine fapws/extra.c and observe procefure, however expect to see procedure.
  • Examine fapws/_evwsgi.c and observe fucntion, however expect to see function.
  • Examine fapws/contrib/siforms/forms.py and observe medthod, however expect to see method.

Notes

Semi-automated issue generated by
https://github.com/timgates42/meticulous/blob/master/docs/NOTE.md

To avoid wasting CI processing resources a branch with the fix has been
prepared but a pull request has not yet been created. A pull request fixing
the issue can be prepared from the link below, feel free to create it or
request @timgates42 create the PR. Alternatively if the fix is undesired please
close the issue with a small comment about the reasoning.

https://github.com/timgates42/fapws3/pull/new/bugfix_typos

Thanks.

pip install fails on Mac OS X/installing as non-root: Permission Error

This situation can arise on any unix-alike, but it appears to happen in practice on Mac OS X. It is the result of the find_file in setup.py not being robust against directories where one lacks read-access (as can be the case when one uses virtualenv and is not installing as root).

Instead, it would seem reasonable to simply skip such a directory and not crash; the crash blocks the installation as-is.

The issue is in setup.py, line 20: "for elem in os.listdir(ckdir):"

Calls to listdir can fail if a subdirectory doesn't have the necessary permissions with an OSError: Permission Denied.

Here's a stack trace with 0.5.dev as found by pip:

  File "/Users/fdr/codes/RegistryStop/env_reg_stop/build/fapws3/setup.py", line 58, in <module>

    if find_file('libev.a',library_dirs)==False:

  File "build/fapws3/setup.py", line 25, in find_file

    res=find_file(fname,localdirs)

  File "/build/fapws3/setup.py", line 25, in find_file

    res=find_file(fname,localdirs)

  File "/build/fapws3/setup.py", line 20, in find_file

    for elem in os.listdir(ckdir):

OSError: [Errno 13] Permission denied: '/usr/lib/cron/tabs'

"iter" example does not work as expected

The iter-example basically looks like this:

def application(environ, start_response):
    start_response('404 Not Found', [('Content-type', 'text/plain')])
    yield 'Pong!'
    time.sleep(5)
    yield "and"
    time.sleep(5)
    yield "Ping!!!"

The example implies that you can defer parts of the response and the server processes other requests in the meantime. This is how I understand asynchrony: To not wait for blocking calls but do useful stuff in the meantime.

A quick test shows that fapws3 blocks completely instead of handling the requests in parallel:

$ ab -n10 -c10 http://0.0.0.0:8080/
Concurrency Level:      10
Time taken for tests:   100.066 seconds
Complete requests:      10
Time per request:       100065.744 [ms] (mean)

10 concurrent requests took 100 seconds. That is an actual concurrency of exactly one :( The time.sleep() call blocks the entire server, which is no surprise if you look at it. sleep() (as any other blocking API) blocks the thread it is called in and fapws3 only utilises the main-thread. If an application blocks, the libev event-loop blocks too.

I think this should be documented. Fapws3 is asynchronous at network-side but totally synchronous at application-side. Ajax with long polling (for example) is not possible with fapws3.

By the way: This actually works with thread-based servers (until the worker thread-pool is exhausted that is).

FAPWS3 crashed behind Haproxy

I found that fapws3 crashed behind haproxy load balancer.
here is the screenshot url: http://img521.imageshack.us/img521/2727/fapws3behindhaproxycras.png

fapws3 crashed immediately after i start haproxy daemon, or after i stop/start fapws instance.
my fapws3 application is just a hello world app.
i think it crashed when haproxy do a health check, maybe.

here is my haproxy config, thanks:

global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
#debug
#quiet
user haproxy
group haproxy

defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000

backend rpc_rmq_01
mode http
balance roundrobin
server rmq_01_01 127.0.0.1:8997 check
server rmq_01_02 127.0.0.1:8999 check

backend default_rpc
mode http
balance roundrobin
server mainwebsite 127.0.0.1:80 check

frontend myfrontend *:8998
log global
maxconn 25000
option forwardfor
acl acl_rmq_01 url_beg /rpc/rmq-01
use_backend rpc_rmq_01 if acl_rmq_01
default_backend default_rpc

Static file server exposes directory traversal vulnerability

The current default file server implementation lets remote users access the full file system the server is running on using a basic directory traversal attack.

Assuming a file structure like:

myserver.py
static/
    hello.txt

And a static file server view like:

staticfile = views.Staticfile('static', maxage=2629000)
evwsgi.wsgi_cb(('/static', staticfile))

Attackers can access the python file, and any other file accessible to the user running the fapws server:

GET /static/..%2fmyserver.py
GET /static/..%2f..%2f..%2f..%2f..%2f/etc/passwd

I realize it is meant as an example, but people will very likely end up using this in production, because users are the way they are :) Really enjoying using FAPWS3, btw!

SERVER_PORT should be string

After a whole day tring to run moinmoin on fapws3, I fall into a a simple subject.

Moinmoin uses the environ['SERVER_PORT'] to create the cookie_name, if you don't provide one

    url_components = [
        # cookies do not store the port, thus we add it to the cookie name:
        request.environ['SERVER_PORT'],
        # we always store path=/ into cookie, thus we add the path to the name:
        ('ROOT' + request.script_root).replace('/', '_'),
    ]
    name = '_'.join(url_components)

But the SERVER_PORT on fapws3 comes as a integer, and this will cause problem. This even breaks the WSGI standart "it is a violation of this specification for a CGI variable's value to be of any type other than str."

A very simple to fix bug :)

segfault trouble

I've not had any luck with fapws3. Have tried libev 3.8 and 3.9 and python 2.6.6 and 2.7. Works fine on 404's but any page with a callback causes a segfault. Using fapws 0.8 dev.

On your FAQ you mention:
Q: FAPWS crash (segmentation fault) with the hello_world sample !
A: assure you have compiled it with correct python and libev libraries. On some 64bits linux distro, you have both 32bits and 64bits libraries, do not mix them up. You can manage this via the environmental parameters: LD_LIBRARY_PATH and C_INCLUDE_PATH before compiling. An another possibility would be to change the event's backend via the environmental parameter: LIBEV_FLAGS

I don't quite understand what could be wrong, I don't have a 32-bit version of python or libev. I'm not sure what I should be looking for.

GNU gdb 6.8
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu"...
(no debugging symbols found)
(gdb) run hello.py
Starting program: /srv/event/bin/python hello.py
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
[Thread debugging using libthread_db enabled]
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
[New Thread 0x7ff1d26ef700 (LWP 29508)]
(no debugging symbols found)
listen on 0.0.0.0:8088
Using epoll as event backend

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ff1d26ef700 (LWP 29508)]
0x00007ff1d21cb0ad in PyString_FromString () from /usr/lib/libpython2.7.so.1.0
(gdb) bt
#0  0x00007ff1d21cb0ad in PyString_FromString () from /usr/lib/libpython2.7.so.1.0
#1  0x00007ff1d1186045 in python_handler () from /srv/event/lib/python2.7/site-packages/fapws3-0.8.dev-py2.7-linux-x86_64.egg/fapws/_evwsgi.so
#2  0x00007ff1d1186b3b in write_cb () from /srv/event/lib/python2.7/site-packages/fapws3-0.8.dev-py2.7-linux-x86_64.egg/fapws/_evwsgi.so
#3  0x00007ff1d0f754f1 in ev_invoke_pending (loop=0x7ff1d117f060) at ev.c:1997
#4  0x00007ff1d0f7a89c in ev_loop (loop=0x7ff1d117f060, flags=1) at ev.c:2359
#5  0x00007ff1d1187d5c in py_run_loop () from /srv/event/lib/python2.7/site-packages/fapws3-0.8.dev-py2.7-linux-x86_64.egg/fapws/_evwsgi.so
#6  0x00007ff1d2215746 in PyEval_EvalFrameEx () from /usr/lib/libpython2.7.so.1.0
#7  0x00007ff1d2215885 in PyEval_EvalFrameEx () from /usr/lib/libpython2.7.so.1.0
#8  0x00007ff1d221668f in PyEval_EvalCodeEx () from /usr/lib/libpython2.7.so.1.0
#9  0x00007ff1d221679f in PyEval_EvalCode () from /usr/lib/libpython2.7.so.1.0
#10 0x00007ff1d222e76a in ?? () from /usr/lib/libpython2.7.so.1.0
#11 0x00007ff1d222e81a in PyRun_FileExFlags () from /usr/lib/libpython2.7.so.1.0
#12 0x00007ff1d222fbc7 in PyRun_SimpleFileExFlags () from /usr/lib/libpython2.7.so.1.0
#13 0x00007ff1d223f44d in Py_Main () from /usr/lib/libpython2.7.so.1.0
#14 0x00007ff1d1be4be6 in __libc_start_main () from /lib/libc.so.6
#15 0x00007ff1d27059a9 in _start () from /srv/event/bin/python

Build fails on OS X Lion 10.7.2

Trying to build fapws3 on OS X Lion 10.7.2:

python
Python 2.7.1 (r271:86832, Jun 25 2011, 05:09:01)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

brew list
libev pkg-config

sudo python setup.py build
Find python 2.4 or higher
----------Find ev.h in /usr/include/sys
----------Find Python.h in /System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7
----------Find libev.a in /usr/local/lib
running build
running build_py
running egg_info
writing fapws3.egg-info/PKG-INFO
writing top-level names to fapws3.egg-info/top_level.txt
writing dependency_links to fapws3.egg-info/dependency_links.txt
writing entry points to fapws3.egg-info/entry_points.txt
reading manifest file 'fapws3.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'fapws3.egg-info/SOURCES.txt'
running build_ext
building 'fapws._evwsgi' extension
llvm-gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch i386 -arch x86_64 -pipe -I/usr/include/sys -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c fapws/extra.c -o build/temp.macosx-10.7-intel-2.7/fapws/extra.o
fapws/extra.c: In function ‘cur_time’:
fapws/extra.c:124: warning: implicit declaration of function ‘time’
fapws/extra.c:125: warning: implicit declaration of function ‘gmtime’
fapws/extra.c:125: warning: assignment makes pointer from integer without a cast
fapws/extra.c:131: warning: implicit declaration of function ‘strftime’
fapws/extra.c:131: warning: incompatible implicit declaration of built-in function ‘strftime’
fapws/extra.c: In function ‘time_rfc1123’:
fapws/extra.c:150: warning: assignment makes pointer from integer without a cast
fapws/extra.c:151: warning: incompatible implicit declaration of built-in function ‘strftime’
fapws/extra.c:152: error: dereferencing pointer to incomplete type
fapws/extra.c:153: error: dereferencing pointer to incomplete type
fapws/extra.c: In function ‘cur_time’:
fapws/extra.c:124: warning: implicit declaration of function ‘time’
fapws/extra.c:125: warning: implicit declaration of function ‘gmtime’
fapws/extra.c:125: warning: assignment makes pointer from integer without a cast
fapws/extra.c:131: warning: implicit declaration of function ‘strftime’
fapws/extra.c:131: warning: incompatible implicit declaration of built-in function ‘strftime’
fapws/extra.c: In function ‘time_rfc1123’:
fapws/extra.c:150: warning: assignment makes pointer from integer without a cast
fapws/extra.c:151: warning: incompatible implicit declaration of built-in function ‘strftime’
fapws/extra.c:152: error: dereferencing pointer to incomplete type
fapws/extra.c:153: error: dereferencing pointer to incomplete type
lipo: can't open input file: /var/tmp//cctEwHqX.out (No such file or directory)
error: command 'llvm-gcc-4.2' failed with exit status 1

Seems like a problem with the #include <time.h>.
Same errors and warnings installing from the python3 branch.
Any suggestions?

Mikko

Can not install on OS X 10.6.4

Trying to install fapws3 on OS X 10.6.4, all latest updates applied.

python
Python 2.6.4 (r264:75706, Nov 24 2009, 00:57:38)
[GCC 4.2.1 (Apple Inc. build 5646) (dot 1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

port installed | grep libev
libev @3.9_0 (active)

sudo easy_install fapws3
Searching for fapws3
Reading http://pypi.python.org/simple/fapws3/
Reading http://william-os4y.livejournal.com/
Best match: fapws3 0.6.dev
Downloading http://pypi.python.org/packages/source/f/fapws3/fapws3-0.6.dev.tar.gz#md5=5e2acfa044a3f23ff530931e4e4c002b
Processing fapws3-0.6.dev.tar.gz
Running fapws3-0.6.dev/setup.py -q bdist_egg --dist-dir /tmp/easy_install-khhBmW/fapws3-0.6.dev/egg-dist-tmp-CZZdOi
----------Find ev.h in /usr/include/sys
----------Find Python.h in /usr/local/include/python2.6
----------Find libev.so in /usr/local/lib
In file included from /usr/include/wchar.h:114,
from /usr/local/include/python2.6/unicodeobject.h:120,
from /usr/local/include/python2.6/Python.h:85,
from fapws/_evwsgi.c:38:
/usr/include/_wctype.h:52: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘wctype_t’
/usr/include/_wctype.h:90: error: expected declaration specifiers or ‘...’ before ‘wctype_t’
/usr/include/_wctype.h: In function ‘iswctype’:
/usr/include/_wctype.h:92: error: ‘_charclass’ undeclared (first use in this function)
/usr/include/_wctype.h:92: error: (Each undeclared identifier is reported only once
/usr/include/_wctype.h:92: error: for each function it appears in.)
/usr/include/_wctype.h: At top level:
/usr/include/_wctype.h:178: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘wctype’
fapws/_evwsgi.c:51: error: expected specifier-qualifier-list before ‘ev_io’
fapws/_evwsgi.c:74: error: expected specifier-qualifier-list before ‘ev_timer’
fapws/_evwsgi.c: In function ‘close_connection’:
fapws/_evwsgi.c:120: error: ‘struct client’ has no member named ‘remote_addr’
fapws/_evwsgi.c:120: error: ‘struct client’ has no member named ‘remote_port’
fapws/_evwsgi.c:120: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:121: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:122: error: ‘struct client’ has no member named ‘cmd’
fapws/_evwsgi.c:123: error: ‘struct client’ has no member named ‘uri’
fapws/_evwsgi.c:124: error: ‘struct client’ has no member named ‘protocol’
fapws/_evwsgi.c:125: error: ‘struct client’ has no member named ‘uri_path’
fapws/_evwsgi.c:127: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:127: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:127: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:127: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:128: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:130: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:130: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:130: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:132: error: ‘struct client’ has no member named ‘response_fp’
fapws/_evwsgi.c:135: warning: implicit declaration of function ‘close’
fapws/_evwsgi.c: In function ‘header_to_dict’:
fapws/_evwsgi.c:284: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:286: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:288: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:295: error: ‘struct client’ has no member named ‘cmd’
fapws/_evwsgi.c:297: error: ‘struct client’ has no member named ‘cmd’
fapws/_evwsgi.c:304: error: ‘struct client’ has no member named ‘uri’
fapws/_evwsgi.c:306: error: ‘struct client’ has no member named ‘uri’
fapws/_evwsgi.c:316: error: ‘struct client’ has no member named ‘protocol’
fapws/_evwsgi.c:318: error: ‘struct client’ has no member named ‘protocol’
fapws/_evwsgi.c: In function ‘handle_uri’:
fapws/_evwsgi.c:375: error: ‘struct client’ has no member named ‘uri’
fapws/_evwsgi.c:378: error: ‘struct client’ has no member named ‘uri_path’
fapws/_evwsgi.c:379: error: ‘struct client’ has no member named ‘uri_path’
fapws/_evwsgi.c:380: error: ‘struct client’ has no member named ‘wsgi_cb’
fapws/_evwsgi.c: In function ‘py_build_method_variables’:
fapws/_evwsgi.c:404: error: ‘struct client’ has no member named ‘uri’
fapws/_evwsgi.c:409: error: ‘struct client’ has no member named ‘uri’
fapws/_evwsgi.c:409: error: ‘struct client’ has no member named ‘uri_path’
fapws/_evwsgi.c:411: error: ‘struct client’ has no member named ‘uri’
fapws/_evwsgi.c:411: error: ‘struct client’ has no member named ‘uri_path’
fapws/_evwsgi.c:412: error: ‘struct client’ has no member named ‘uri_path’
fapws/_evwsgi.c: In function ‘py_get_request_info’:
fapws/_evwsgi.c:456: error: ‘struct client’ has no member named ‘remote_addr’
fapws/_evwsgi.c:460: error: ‘struct client’ has no member named ‘remote_port’
fapws/_evwsgi.c:463: error: ‘struct client’ has no member named ‘protocol’
fapws/_evwsgi.c: In function ‘manage_header_body’:
fapws/_evwsgi.c:483: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:497: error: ‘struct client’ has no member named ‘input_body’
fapws/_evwsgi.c:521: error: ‘struct client’ has no member named ‘input_body’
fapws/_evwsgi.c: In function ‘python_handler’:
fapws/_evwsgi.c:543: error: ‘struct client’ has no member named ‘remote_addr’
fapws/_evwsgi.c:543: error: ‘struct client’ has no member named ‘remote_port’
fapws/_evwsgi.c:543: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:569: error: ‘struct client’ has no member named ‘cmd’
fapws/_evwsgi.c:580: error: ‘struct client’ has no member named ‘cmd’
fapws/_evwsgi.c:594: error: ‘struct client’ has no member named ‘response_header’
fapws/_evwsgi.c:595: error: ‘struct client’ has no member named ‘response_header_length’
fapws/_evwsgi.c:595: error: ‘struct client’ has no member named ‘response_header’
fapws/_evwsgi.c:596: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:612: error: ‘struct client’ has no member named ‘wsgi_cb’
fapws/_evwsgi.c:613: error: ‘struct client’ has no member named ‘wsgi_cb’
fapws/_evwsgi.c:623: error: ‘struct client’ has no member named ‘cmd’
fapws/_evwsgi.c:643: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:643: error: ‘struct client’ has no member named ‘wsgi_cb’
fapws/_evwsgi.c:644: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:646: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:646: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:646: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:646: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:648: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:648: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:649: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:649: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:653: error: ‘struct client’ has no member named ‘wsgi_cb’
fapws/_evwsgi.c:653: error: ‘struct client’ has no member named ‘wsgi_cb’
fapws/_evwsgi.c:653: error: ‘struct client’ has no member named ‘wsgi_cb’
fapws/_evwsgi.c:653: error: ‘struct client’ has no member named ‘wsgi_cb’
fapws/_evwsgi.c:654: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:662: error: ‘struct client’ has no member named ‘response_header’
fapws/_evwsgi.c:663: error: ‘struct client’ has no member named ‘response_header_length’
fapws/_evwsgi.c:663: error: ‘struct client’ has no member named ‘response_header’
fapws/_evwsgi.c:670: error: ‘struct client’ has no member named ‘response_header’
fapws/_evwsgi.c:671: error: ‘struct client’ has no member named ‘response_header_length’
fapws/_evwsgi.c:671: error: ‘struct client’ has no member named ‘response_header’
fapws/_evwsgi.c:694: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:696: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:697: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:698: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:701: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:709: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:710: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c: In function ‘write_cli’:
fapws/_evwsgi.c:725: error: ‘EV_WRITE’ undeclared (first use in this function)
fapws/_evwsgi.c:734: warning: implicit declaration of function ‘write’
fapws/_evwsgi.c:737: error: ‘struct client’ has no member named ‘remote_addr’
fapws/_evwsgi.c:737: error: ‘struct client’ has no member named ‘remote_port’
fapws/_evwsgi.c:737: error: ‘struct client’ has no member named ‘uri’
fapws/_evwsgi.c:740: error: ‘struct client’ has no member named ‘retry’
fapws/_evwsgi.c:741: error: ‘struct client’ has no member named ‘remote_addr’
fapws/_evwsgi.c:741: error: ‘struct client’ has no member named ‘remote_port’
fapws/_evwsgi.c:741: error: ‘struct client’ has no member named ‘retry’
fapws/_evwsgi.c:742: error: ‘struct client’ has no member named ‘retry’
fapws/_evwsgi.c:744: error: ‘struct client’ has no member named ‘retry’
fapws/_evwsgi.c:747: warning: implicit declaration of function ‘usleep’
fapws/_evwsgi.c: At top level:
fapws/_evwsgi.c:772: warning: ‘struct ev_io’ declared inside parameter list
fapws/_evwsgi.c:772: warning: ‘struct ev_loop’ declared inside parameter list
fapws/_evwsgi.c: In function ‘write_cb’:
fapws/_evwsgi.c:777: error: ‘struct client’ has no member named ‘ev_write’
fapws/_evwsgi.c:778: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:811: error: ‘struct client’ has no member named ‘response_header’
fapws/_evwsgi.c:811: error: ‘struct client’ has no member named ‘response_header_length’
fapws/_evwsgi.c:812: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:815: error: ‘struct client’ has no member named ‘cmd’
fapws/_evwsgi.c:823: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:823: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:825: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:826: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:826: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:828: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:828: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:841: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:841: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:846: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:853: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:853: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:853: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:855: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:857: error: ‘struct client’ has no member named ‘response_fp’
fapws/_evwsgi.c:857: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:859: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:861: error: ‘struct client’ has no member named ‘response_fp’
fapws/_evwsgi.c:880: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:880: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:882: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:883: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:907: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:910: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:910: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:911: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:915: error: ‘struct client’ has no member named ‘remote_addr’
fapws/_evwsgi.c:915: error: ‘struct client’ has no member named ‘remote_port’
fapws/_evwsgi.c:915: error: ‘struct client’ has no member named ‘uri’
fapws/_evwsgi.c:930: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:931: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:933: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:938: warning: implicit declaration of function ‘ev_io_stop’
fapws/evwsgi.c:938: error: ‘EV_A’ undeclared (first use in this function)
fapws/_evwsgi.c:938: error: expected ‘)’ before ‘w’
fapws/_evwsgi.c:943: error: expected ‘)’ before ‘w’
fapws/_evwsgi.c: At top level:
fapws/_evwsgi.c:951: warning: ‘struct ev_io’ declared inside parameter list
fapws/_evwsgi.c:951: warning: ‘struct ev_loop’ declared inside parameter list
fapws/_evwsgi.c: In function ‘connection_cb’:
fapws/_evwsgi.c:953: error: ‘struct client’ has no member named ‘ev_read’
fapws/_evwsgi.c:958: error: ‘EV_READ’ undeclared (first use in this function)
fapws/_evwsgi.c:960: warning: implicit declaration of function ‘read’
fapws/_evwsgi.c:963: error: ‘struct client’ has no member named ‘retry’
fapws/_evwsgi.c:964: error: ‘struct client’ has no member named ‘retry’
fapws/_evwsgi.c:965: error: ‘struct client’ has no member named ‘retry’
fapws/_evwsgi.c:967: error: ‘struct client’ has no member named ‘retry’
fapws/evwsgi.c:968: error: ‘EV_A’ undeclared (first use in this function)
fapws/_evwsgi.c:968: error: expected ‘)’ before ‘w’
fapws/_evwsgi.c:979: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:979: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:979: error: ‘struct client’ has no member named ‘input_pos’
fapws/_evwsgi.c:980: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:980: error: ‘struct client’ has no member named ‘input_pos’
fapws/_evwsgi.c:981: error: ‘struct client’ has no member named ‘input_pos’
fapws/_evwsgi.c:982: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:982: error: ‘struct client’ has no member named ‘input_pos’
fapws/_evwsgi.c:984: error: ‘struct client’ has no member named ‘remote_addr’
fapws/_evwsgi.c:984: error: ‘struct client’ has no member named ‘remote_port’
fapws/_evwsgi.c:984: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:984: error: ‘struct client’ has no member named ‘input_pos’
fapws/_evwsgi.c:986: error: ‘struct client’ has no member named ‘input_body’
fapws/_evwsgi.c:986: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:987: error: ‘struct client’ has no member named ‘input_body’
fapws/_evwsgi.c:987: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:988: error: ‘struct client’ has no member named ‘input_body’
fapws/_evwsgi.c:991: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:1000: error: ‘struct client’ has no member named ‘input_pos’
fapws/_evwsgi.c:1003: error: ‘struct client’ has no member named ‘input_body’
fapws/_evwsgi.c:1010: error: expected ‘)’ before ‘w’
fapws/_evwsgi.c:1011: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:1013: warning: implicit declaration of function ‘ev_io_init’
fapws/_evwsgi.c:1013: error: ‘struct client’ has no member named ‘ev_write’
fapws/_evwsgi.c:1013: error: ‘EV_WRITE’ undeclared (first use in this function)
fapws/_evwsgi.c:1014: warning: implicit declaration of function ‘ev_io_start’
fapws/_evwsgi.c:1014: error: ‘struct client’ has no member named ‘ev_write’
fapws/_evwsgi.c:1020: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c: At top level:
fapws/_evwsgi.c:1032: warning: ‘struct ev_io’ declared inside parameter list
fapws/_evwsgi.c:1032: warning: ‘struct ev_loop’ declared inside parameter list
fapws/_evwsgi.c: In function ‘accept_cb’:
fapws/_evwsgi.c:1038: error: dereferencing pointer to incomplete type
fapws/_evwsgi.c:1045: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:1046: error: ‘struct client’ has no member named ‘input_body’
fapws/_evwsgi.c:1047: error: ‘struct client’ has no member named ‘uri’
fapws/_evwsgi.c:1048: error: ‘struct client’ has no member named ‘cmd’
fapws/_evwsgi.c:1049: error: ‘struct client’ has no member named ‘protocol’
fapws/_evwsgi.c:1050: error: ‘struct client’ has no member named ‘uri_path’
fapws/_evwsgi.c:1051: error: ‘struct client’ has no member named ‘wsgi_cb’
fapws/_evwsgi.c:1052: error: ‘struct client’ has no member named ‘response_header’
fapws/_evwsgi.c:1053: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:1054: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:1056: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:1057: error: ‘struct client’ has no member named ‘input_pos’
fapws/_evwsgi.c:1058: error: ‘struct client’ has no member named ‘retry’
fapws/_evwsgi.c:1059: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:1060: error: ‘struct client’ has no member named ‘remote_addr’
fapws/_evwsgi.c:1061: error: ‘struct client’ has no member named ‘remote_port’
fapws/_evwsgi.c:1064: error: ‘struct client’ has no member named ‘ev_read’
fapws/_evwsgi.c:1064: error: ‘EV_READ’ undeclared (first use in this function)
fapws/_evwsgi.c:1066: error: ‘struct client’ has no member named ‘ev_read’
fapws/_evwsgi.c: At top level:
fapws/_evwsgi.c:1072: error: expected declaration specifiers or ‘...’ before ‘ev_signal’
fapws/_evwsgi.c:1072: warning: ‘struct ev_loop’ declared inside parameter list
fapws/_evwsgi.c: In function ‘sigint_cb’:
fapws/_evwsgi.c:1075: warning: implicit declaration of function ‘ev_unloop’
fapws/_evwsgi.c:1075: error: ‘EVUNLOOP_ALL’ undeclared (first use in this function)
fapws/_evwsgi.c: At top level:
fapws/_evwsgi.c:1081: error: expected declaration specifiers or ‘...’ before ‘ev_signal’
fapws/_evwsgi.c:1081: warning: ‘struct ev_loop’ declared inside parameter list
fapws/_evwsgi.c:1152: error: expected declaration specifiers or ‘...’ before ‘ev_timer’
fapws/_evwsgi.c:1152: warning: ‘struct ev_loop’ declared inside parameter list
fapws/_evwsgi.c: In function ‘timer_cb’:
fapws/_evwsgi.c:1154: error: ‘w’ undeclared (first use in this function)
fapws/_evwsgi.c:1154: error: ‘struct TimerObj’ has no member named ‘timerwatcher’
fapws/_evwsgi.c:1155: error: ‘struct TimerObj’ has no member named ‘py_cb’
fapws/_evwsgi.c:1162: warning: implicit declaration of function ‘ev_timer_stop’
fapws/_evwsgi.c: In function ‘py_run_loop’:
fapws/_evwsgi.c:1181: error: ‘ev_io’ undeclared (first use in this function)
fapws/_evwsgi.c:1181: error: expected ‘;’ before ‘accept_watcher’
fapws/_evwsgi.c:1182: error: ‘ev_signal’ undeclared (first use in this function)
fapws/_evwsgi.c:1182: error: expected ‘;’ before ‘signal_watcher’
fapws/_evwsgi.c:1184: warning: implicit declaration of function ‘ev_default_loop’
fapws/_evwsgi.c:1184: warning: initialization makes pointer from integer without a cast
fapws/_evwsgi.c:1185: warning: implicit declaration of function ‘ev_backend’
fapws/_evwsgi.c:1201: error: ‘accept_watcher’ undeclared (first use in this function)
fapws/_evwsgi.c:1201: error: ‘EV_READ’ undeclared (first use in this function)
fapws/_evwsgi.c:1203: warning: implicit declaration of function ‘ev_signal_init’
fapws/_evwsgi.c:1203: error: ‘signal_watcher’ undeclared (first use in this function)
fapws/_evwsgi.c:1204: warning: implicit declaration of function ‘ev_signal_start’
fapws/_evwsgi.c:1205: error: ‘signal_watcher2’ undeclared (first use in this function)
fapws/_evwsgi.c:1212: warning: implicit declaration of function ‘ev_timer_init’
fapws/_evwsgi.c:1212: error: ‘struct TimerObj’ has no member named ‘timerwatcher’
fapws/_evwsgi.c:1212: error: ‘struct TimerObj’ has no member named ‘delay’
fapws/_evwsgi.c:1212: error: ‘struct TimerObj’ has no member named ‘delay’
fapws/_evwsgi.c:1213: warning: implicit declaration of function ‘ev_timer_start’
fapws/_evwsgi.c:1213: error: ‘struct TimerObj’ has no member named ‘timerwatcher’
fapws/_evwsgi.c:1216: warning: implicit declaration of function ‘ev_loop’
fapws/_evwsgi.c: In function ‘py_libev_version’:
fapws/_evwsgi.c:1226: warning: implicit declaration of function ‘ev_version_major’
fapws/_evwsgi.c:1226: warning: implicit declaration of function ‘ev_version_minor’
fapws/_evwsgi.c: In function ‘py_add_timer_cb’:
fapws/_evwsgi.c:1310: error: ‘struct TimerObj’ has no member named ‘delay’
fapws/_evwsgi.c:1310: error: ‘struct TimerObj’ has no member named ‘py_cb’
fapws/_evwsgi.c: In function ‘py_stop_timer’:
fapws/_evwsgi.c:1331: warning: initialization makes pointer from integer without a cast
fapws/_evwsgi.c:1335: error: ‘struct TimerObj’ has no member named ‘timerwatcher’
fapws/_evwsgi.c: In function ‘py_restart_timer’:
fapws/_evwsgi.c:1348: warning: initialization makes pointer from integer without a cast
fapws/_evwsgi.c:1354: warning: implicit declaration of function ‘ev_timer_again’
fapws/_evwsgi.c:1354: error: ‘struct TimerObj’ has no member named ‘timerwatcher’
error: Setup script exited with error: command 'gcc' failed with exit status 1

I try installing via source manually. I have an up to date git clone, with the last commit being: 1a11945

python setup.py build
----------Find ev.h in /usr/include/sys
----------Find Python.h in /usr/local/include/python2.6
----------Find libev.so in /usr/local/lib
running build
running build_py
creating build
creating build/lib.macosx-10.4-i386-2.6
creating build/lib.macosx-10.4-i386-2.6/fapws
copying fapws/init.py -> build/lib.macosx-10.4-i386-2.6/fapws
copying fapws/base.py -> build/lib.macosx-10.4-i386-2.6/fapws
copying fapws/config.py -> build/lib.macosx-10.4-i386-2.6/fapws
creating build/lib.macosx-10.4-i386-2.6/fapws/contrib
copying fapws/contrib/init.py -> build/lib.macosx-10.4-i386-2.6/fapws/contrib
copying fapws/contrib/cgiapp.py -> build/lib.macosx-10.4-i386-2.6/fapws/contrib
copying fapws/contrib/django_handler.py -> build/lib.macosx-10.4-i386-2.6/fapws/contrib
copying fapws/contrib/headers.py -> build/lib.macosx-10.4-i386-2.6/fapws/contrib
copying fapws/contrib/log.py -> build/lib.macosx-10.4-i386-2.6/fapws/contrib
copying fapws/contrib/views.py -> build/lib.macosx-10.4-i386-2.6/fapws/contrib
copying fapws/contrib/zip.py -> build/lib.macosx-10.4-i386-2.6/fapws/contrib
running egg_info
creating fapws3.egg-info
writing fapws3.egg-info/PKG-INFO
writing top-level names to fapws3.egg-info/top_level.txt
writing dependency_links to fapws3.egg-info/dependency_links.txt
writing entry points to fapws3.egg-info/entry_points.txt
writing manifest file 'fapws3.egg-info/SOURCES.txt'
reading manifest file 'fapws3.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'fapws3.egg-info/SOURCES.txt'
copying fapws/_evwsgi.c -> build/lib.macosx-10.4-i386-2.6/fapws
running build_ext
building 'fapws._evwsgi' extension
creating build/temp.macosx-10.4-i386-2.6
creating build/temp.macosx-10.4-i386-2.6/fapws
gcc -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/include/sys -I/usr/local/include/python2.6 -I/usr/local/include/python2.6 -c fapws/_evwsgi.c -o build/temp.macosx-10.4-i386-2.6/fapws/_evwsgi.o
In file included from /usr/include/wchar.h:114,
from /usr/local/include/python2.6/unicodeobject.h:120,
from /usr/local/include/python2.6/Python.h:85,
from fapws/_evwsgi.c:38:
/usr/include/_wctype.h:52: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘wctype_t’
/usr/include/_wctype.h:90: error: expected declaration specifiers or ‘...’ before ‘wctype_t’
/usr/include/_wctype.h: In function ‘iswctype’:
/usr/include/_wctype.h:92: error: ‘_charclass’ undeclared (first use in this function)
/usr/include/_wctype.h:92: error: (Each undeclared identifier is reported only once
/usr/include/_wctype.h:92: error: for each function it appears in.)
/usr/include/_wctype.h: At top level:
/usr/include/_wctype.h:178: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘wctype’
fapws/_evwsgi.c:51: error: expected specifier-qualifier-list before ‘ev_io’
fapws/_evwsgi.c:74: error: expected specifier-qualifier-list before ‘ev_timer’
fapws/_evwsgi.c:96: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘*’ token
fapws/_evwsgi.c: In function ‘close_connection’:
fapws/_evwsgi.c:122: error: ‘struct client’ has no member named ‘remote_addr’
fapws/_evwsgi.c:122: error: ‘struct client’ has no member named ‘remote_port’
fapws/_evwsgi.c:122: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:123: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:124: error: ‘struct client’ has no member named ‘cmd’
fapws/_evwsgi.c:125: error: ‘struct client’ has no member named ‘uri’
fapws/_evwsgi.c:126: error: ‘struct client’ has no member named ‘protocol’
fapws/_evwsgi.c:127: error: ‘struct client’ has no member named ‘uri_path’
fapws/_evwsgi.c:129: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:129: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:129: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:129: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:130: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:132: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:132: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:132: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:134: error: ‘struct client’ has no member named ‘response_fp’
fapws/_evwsgi.c:137: warning: implicit declaration of function ‘close’
fapws/_evwsgi.c: In function ‘header_to_dict’:
fapws/_evwsgi.c:286: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:288: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:290: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:297: error: ‘struct client’ has no member named ‘cmd’
fapws/_evwsgi.c:299: error: ‘struct client’ has no member named ‘cmd’
fapws/_evwsgi.c:306: error: ‘struct client’ has no member named ‘uri’
fapws/_evwsgi.c:308: error: ‘struct client’ has no member named ‘uri’
fapws/_evwsgi.c:318: error: ‘struct client’ has no member named ‘protocol’
fapws/_evwsgi.c:320: error: ‘struct client’ has no member named ‘protocol’
fapws/_evwsgi.c: In function ‘handle_uri’:
fapws/_evwsgi.c:377: error: ‘struct client’ has no member named ‘uri’
fapws/_evwsgi.c:380: error: ‘struct client’ has no member named ‘uri_path’
fapws/_evwsgi.c:381: error: ‘struct client’ has no member named ‘uri_path’
fapws/_evwsgi.c:382: error: ‘struct client’ has no member named ‘wsgi_cb’
fapws/_evwsgi.c: In function ‘py_build_method_variables’:
fapws/_evwsgi.c:406: error: ‘struct client’ has no member named ‘uri’
fapws/_evwsgi.c:411: error: ‘struct client’ has no member named ‘uri’
fapws/_evwsgi.c:411: error: ‘struct client’ has no member named ‘uri_path’
fapws/_evwsgi.c:413: error: ‘struct client’ has no member named ‘uri’
fapws/_evwsgi.c:413: error: ‘struct client’ has no member named ‘uri_path’
fapws/_evwsgi.c:414: error: ‘struct client’ has no member named ‘uri_path’
fapws/_evwsgi.c: In function ‘py_get_request_info’:
fapws/_evwsgi.c:458: error: ‘struct client’ has no member named ‘remote_addr’
fapws/_evwsgi.c:462: error: ‘struct client’ has no member named ‘remote_port’
fapws/_evwsgi.c:465: error: ‘struct client’ has no member named ‘protocol’
fapws/_evwsgi.c: In function ‘manage_header_body’:
fapws/_evwsgi.c:485: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:499: error: ‘struct client’ has no member named ‘input_body’
fapws/_evwsgi.c:523: error: ‘struct client’ has no member named ‘input_body’
fapws/_evwsgi.c: In function ‘python_handler’:
fapws/_evwsgi.c:545: error: ‘struct client’ has no member named ‘remote_addr’
fapws/_evwsgi.c:545: error: ‘struct client’ has no member named ‘remote_port’
fapws/_evwsgi.c:545: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:571: error: ‘struct client’ has no member named ‘cmd’
fapws/_evwsgi.c:582: error: ‘struct client’ has no member named ‘cmd’
fapws/_evwsgi.c:596: error: ‘struct client’ has no member named ‘response_header’
fapws/_evwsgi.c:597: error: ‘struct client’ has no member named ‘response_header_length’
fapws/_evwsgi.c:597: error: ‘struct client’ has no member named ‘response_header’
fapws/_evwsgi.c:598: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:614: error: ‘struct client’ has no member named ‘wsgi_cb’
fapws/_evwsgi.c:615: error: ‘struct client’ has no member named ‘wsgi_cb’
fapws/_evwsgi.c:625: error: ‘struct client’ has no member named ‘cmd’
fapws/_evwsgi.c:645: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:645: error: ‘struct client’ has no member named ‘wsgi_cb’
fapws/_evwsgi.c:646: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:648: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:648: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:648: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:648: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:650: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:650: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:651: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:651: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:655: error: ‘struct client’ has no member named ‘wsgi_cb’
fapws/_evwsgi.c:655: error: ‘struct client’ has no member named ‘wsgi_cb’
fapws/_evwsgi.c:655: error: ‘struct client’ has no member named ‘wsgi_cb’
fapws/_evwsgi.c:655: error: ‘struct client’ has no member named ‘wsgi_cb’
fapws/_evwsgi.c:656: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:664: error: ‘struct client’ has no member named ‘response_header’
fapws/_evwsgi.c:665: error: ‘struct client’ has no member named ‘response_header_length’
fapws/_evwsgi.c:665: error: ‘struct client’ has no member named ‘response_header’
fapws/_evwsgi.c:672: error: ‘struct client’ has no member named ‘response_header’
fapws/_evwsgi.c:673: error: ‘struct client’ has no member named ‘response_header_length’
fapws/_evwsgi.c:673: error: ‘struct client’ has no member named ‘response_header’
fapws/_evwsgi.c:696: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:698: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:699: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:700: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:703: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:711: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:712: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c: In function ‘write_cli’:
fapws/_evwsgi.c:727: error: ‘EV_WRITE’ undeclared (first use in this function)
fapws/_evwsgi.c:736: warning: implicit declaration of function ‘write’
fapws/_evwsgi.c:739: error: ‘struct client’ has no member named ‘remote_addr’
fapws/_evwsgi.c:739: error: ‘struct client’ has no member named ‘remote_port’
fapws/_evwsgi.c:739: error: ‘struct client’ has no member named ‘uri’
fapws/_evwsgi.c:742: error: ‘struct client’ has no member named ‘retry’
fapws/_evwsgi.c:743: error: ‘struct client’ has no member named ‘remote_addr’
fapws/_evwsgi.c:743: error: ‘struct client’ has no member named ‘remote_port’
fapws/_evwsgi.c:743: error: ‘struct client’ has no member named ‘retry’
fapws/_evwsgi.c:744: error: ‘struct client’ has no member named ‘retry’
fapws/_evwsgi.c:746: error: ‘struct client’ has no member named ‘retry’
fapws/_evwsgi.c:749: warning: implicit declaration of function ‘usleep’
fapws/_evwsgi.c: At top level:
fapws/_evwsgi.c:774: warning: ‘struct ev_io’ declared inside parameter list
fapws/_evwsgi.c: In function ‘write_cb’:
fapws/_evwsgi.c:779: error: ‘struct client’ has no member named ‘ev_write’
fapws/_evwsgi.c:780: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:813: error: ‘struct client’ has no member named ‘response_header’
fapws/_evwsgi.c:813: error: ‘struct client’ has no member named ‘response_header_length’
fapws/_evwsgi.c:814: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:817: error: ‘struct client’ has no member named ‘cmd’
fapws/_evwsgi.c:825: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:825: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:827: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:828: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:828: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:830: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:830: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:843: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:843: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:848: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:855: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:855: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:855: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:857: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:859: error: ‘struct client’ has no member named ‘response_fp’
fapws/_evwsgi.c:859: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:861: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:863: error: ‘struct client’ has no member named ‘response_fp’
fapws/_evwsgi.c:882: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:882: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:884: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:885: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:909: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:912: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:912: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:913: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:917: error: ‘struct client’ has no member named ‘remote_addr’
fapws/_evwsgi.c:917: error: ‘struct client’ has no member named ‘remote_port’
fapws/_evwsgi.c:917: error: ‘struct client’ has no member named ‘uri’
fapws/_evwsgi.c:932: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:933: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:935: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:940: warning: implicit declaration of function ‘ev_io_stop’
fapws/evwsgi.c:940: error: ‘EV_A’ undeclared (first use in this function)
fapws/_evwsgi.c:940: error: expected ‘)’ before ‘w’
fapws/_evwsgi.c:945: error: expected ‘)’ before ‘w’
fapws/_evwsgi.c: At top level:
fapws/_evwsgi.c:953: warning: ‘struct ev_io’ declared inside parameter list
fapws/_evwsgi.c: In function ‘connection_cb’:
fapws/_evwsgi.c:955: error: ‘struct client’ has no member named ‘ev_read’
fapws/_evwsgi.c:960: error: ‘EV_READ’ undeclared (first use in this function)
fapws/_evwsgi.c:962: warning: implicit declaration of function ‘read’
fapws/_evwsgi.c:965: error: ‘struct client’ has no member named ‘retry’
fapws/_evwsgi.c:966: error: ‘struct client’ has no member named ‘retry’
fapws/_evwsgi.c:967: error: ‘struct client’ has no member named ‘retry’
fapws/_evwsgi.c:969: error: ‘struct client’ has no member named ‘retry’
fapws/evwsgi.c:970: error: ‘EV_A’ undeclared (first use in this function)
fapws/_evwsgi.c:970: error: expected ‘)’ before ‘w’
fapws/_evwsgi.c:981: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:981: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:981: error: ‘struct client’ has no member named ‘input_pos’
fapws/_evwsgi.c:982: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:982: error: ‘struct client’ has no member named ‘input_pos’
fapws/_evwsgi.c:983: error: ‘struct client’ has no member named ‘input_pos’
fapws/_evwsgi.c:984: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:984: error: ‘struct client’ has no member named ‘input_pos’
fapws/_evwsgi.c:986: error: ‘struct client’ has no member named ‘remote_addr’
fapws/_evwsgi.c:986: error: ‘struct client’ has no member named ‘remote_port’
fapws/_evwsgi.c:986: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:986: error: ‘struct client’ has no member named ‘input_pos’
fapws/_evwsgi.c:988: error: ‘struct client’ has no member named ‘input_body’
fapws/_evwsgi.c:988: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:989: error: ‘struct client’ has no member named ‘input_body’
fapws/_evwsgi.c:989: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:990: error: ‘struct client’ has no member named ‘input_body’
fapws/_evwsgi.c:993: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:1002: error: ‘struct client’ has no member named ‘input_pos’
fapws/_evwsgi.c:1005: error: ‘struct client’ has no member named ‘input_body’
fapws/_evwsgi.c:1012: error: expected ‘)’ before ‘w’
fapws/_evwsgi.c:1013: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:1015: warning: implicit declaration of function ‘ev_io_init’
fapws/_evwsgi.c:1015: error: ‘struct client’ has no member named ‘ev_write’
fapws/_evwsgi.c:1015: error: ‘EV_WRITE’ undeclared (first use in this function)
fapws/_evwsgi.c:1016: warning: implicit declaration of function ‘ev_io_start’
fapws/_evwsgi.c:1016: error: ‘struct client’ has no member named ‘ev_write’
fapws/_evwsgi.c:1022: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c: At top level:
fapws/_evwsgi.c:1034: warning: ‘struct ev_io’ declared inside parameter list
fapws/_evwsgi.c: In function ‘accept_cb’:
fapws/_evwsgi.c:1040: error: dereferencing pointer to incomplete type
fapws/_evwsgi.c:1047: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:1048: error: ‘struct client’ has no member named ‘input_body’
fapws/_evwsgi.c:1049: error: ‘struct client’ has no member named ‘uri’
fapws/_evwsgi.c:1050: error: ‘struct client’ has no member named ‘cmd’
fapws/_evwsgi.c:1051: error: ‘struct client’ has no member named ‘protocol’
fapws/_evwsgi.c:1052: error: ‘struct client’ has no member named ‘uri_path’
fapws/_evwsgi.c:1053: error: ‘struct client’ has no member named ‘wsgi_cb’
fapws/_evwsgi.c:1054: error: ‘struct client’ has no member named ‘response_header’
fapws/_evwsgi.c:1055: error: ‘struct client’ has no member named ‘response_content’
fapws/_evwsgi.c:1056: error: ‘struct client’ has no member named ‘response_content_obj’
fapws/_evwsgi.c:1058: error: ‘struct client’ has no member named ‘input_header’
fapws/_evwsgi.c:1059: error: ‘struct client’ has no member named ‘input_pos’
fapws/_evwsgi.c:1060: error: ‘struct client’ has no member named ‘retry’
fapws/_evwsgi.c:1061: error: ‘struct client’ has no member named ‘response_iter_sent’
fapws/_evwsgi.c:1062: error: ‘struct client’ has no member named ‘remote_addr’
fapws/_evwsgi.c:1063: error: ‘struct client’ has no member named ‘remote_port’
fapws/_evwsgi.c:1066: error: ‘struct client’ has no member named ‘ev_read’
fapws/_evwsgi.c:1066: error: ‘EV_READ’ undeclared (first use in this function)
fapws/_evwsgi.c:1068: error: ‘struct client’ has no member named ‘ev_read’
fapws/_evwsgi.c: At top level:
fapws/_evwsgi.c:1074: error: expected declaration specifiers or ‘...’ before ‘ev_signal’
fapws/_evwsgi.c: In function ‘sigint_cb’:
fapws/_evwsgi.c:1077: warning: implicit declaration of function ‘ev_unloop’
fapws/_evwsgi.c:1077: error: ‘EVUNLOOP_ALL’ undeclared (first use in this function)
fapws/_evwsgi.c: At top level:
fapws/_evwsgi.c:1083: error: expected declaration specifiers or ‘...’ before ‘ev_signal’
fapws/_evwsgi.c:1154: error: expected declaration specifiers or ‘...’ before ‘ev_timer’
fapws/_evwsgi.c: In function ‘timer_cb’:
fapws/_evwsgi.c:1156: error: ‘w’ undeclared (first use in this function)
fapws/_evwsgi.c:1156: error: ‘struct TimerObj’ has no member named ‘timerwatcher’
fapws/_evwsgi.c:1157: error: ‘struct TimerObj’ has no member named ‘py_cb’
fapws/_evwsgi.c:1164: warning: implicit declaration of function ‘ev_timer_stop’
fapws/_evwsgi.c: At top level:
fapws/_evwsgi.c:1176: error: expected declaration specifiers or ‘...’ before ‘ev_idle’
fapws/_evwsgi.c: In function ‘idle_cb’:
fapws/_evwsgi.c:1206: warning: implicit declaration of function ‘ev_idle_stop’
fapws/_evwsgi.c:1206: error: ‘w’ undeclared (first use in this function)
fapws/_evwsgi.c: In function ‘py_run_loop’:
fapws/_evwsgi.c:1222: error: ‘ev_io’ undeclared (first use in this function)
fapws/_evwsgi.c:1222: error: expected ‘;’ before ‘accept_watcher’
fapws/_evwsgi.c:1223: error: ‘ev_signal’ undeclared (first use in this function)
fapws/_evwsgi.c:1223: error: expected ‘;’ before ‘signal_watcher’
fapws/_evwsgi.c:1225: warning: implicit declaration of function ‘ev_default_loop’
fapws/_evwsgi.c:1225: warning: assignment makes pointer from integer without a cast
fapws/_evwsgi.c:1226: warning: implicit declaration of function ‘ev_backend’
fapws/_evwsgi.c:1242: error: ‘accept_watcher’ undeclared (first use in this function)
fapws/_evwsgi.c:1242: error: ‘EV_READ’ undeclared (first use in this function)
fapws/_evwsgi.c:1244: warning: implicit declaration of function ‘ev_signal_init’
fapws/_evwsgi.c:1244: error: ‘signal_watcher’ undeclared (first use in this function)
fapws/_evwsgi.c:1245: warning: implicit declaration of function ‘ev_signal_start’
fapws/_evwsgi.c:1246: error: ‘signal_watcher2’ undeclared (first use in this function)
fapws/_evwsgi.c:1248: error: ‘idle_watcher’ undeclared (first use in this function)
fapws/_evwsgi.c:1248: error: ‘ev_idle’ undeclared (first use in this function)
fapws/_evwsgi.c:1249: warning: implicit declaration of function ‘ev_idle_init’
fapws/_evwsgi.c:1255: warning: implicit declaration of function ‘ev_timer_init’
fapws/_evwsgi.c:1255: error: ‘struct TimerObj’ has no member named ‘timerwatcher’
fapws/_evwsgi.c:1255: error: ‘struct TimerObj’ has no member named ‘delay’
fapws/_evwsgi.c:1255: error: ‘struct TimerObj’ has no member named ‘delay’
fapws/_evwsgi.c:1256: warning: implicit declaration of function ‘ev_timer_start’
fapws/_evwsgi.c:1256: error: ‘struct TimerObj’ has no member named ‘timerwatcher’
fapws/_evwsgi.c:1259: warning: implicit declaration of function ‘ev_loop’
fapws/_evwsgi.c: In function ‘py_libev_version’:
fapws/_evwsgi.c:1269: warning: implicit declaration of function ‘ev_version_major’
fapws/_evwsgi.c:1269: warning: implicit declaration of function ‘ev_version_minor’
fapws/_evwsgi.c: In function ‘py_add_timer_cb’:
fapws/_evwsgi.c:1353: error: ‘struct TimerObj’ has no member named ‘delay’
fapws/_evwsgi.c:1353: error: ‘struct TimerObj’ has no member named ‘py_cb’
fapws/_evwsgi.c: In function ‘py_stop_timer’:
fapws/_evwsgi.c:1374: warning: initialization makes pointer from integer without a cast
fapws/_evwsgi.c:1378: error: ‘struct TimerObj’ has no member named ‘timerwatcher’
fapws/_evwsgi.c: In function ‘py_restart_timer’:
fapws/_evwsgi.c:1391: warning: initialization makes pointer from integer without a cast
fapws/_evwsgi.c:1397: warning: implicit declaration of function ‘ev_timer_again’
fapws/_evwsgi.c:1397: error: ‘struct TimerObj’ has no member named ‘timerwatcher’
fapws/_evwsgi.c: In function ‘py_defer’:
fapws/_evwsgi.c:1457: warning: implicit declaration of function ‘ev_idle_start’
fapws/_evwsgi.c:1457: error: ‘idle_watcher’ undeclared (first use in this function)
error: command 'gcc' failed with exit status 1

I can install fapws3 on Debian, FreeBSD, etc. various versions. Little stumped on why it's not working on OS X.

Any ideas?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.