william-os4y / fapws3 Goto Github PK
View Code? Open in Web Editor NEWFast Asynchronous Python Web Server (based on libev)
License: GNU General Public License v2.0
Fast Asynchronous Python Web Server (based on libev)
License: GNU General Public License v2.0
There is a function in httplib can handle this for you:
>>> httplib.responses[200]
'OK'
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()
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.
Are support for PUT and DELETE on the roadmap?
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.
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
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.
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:
django-admin.py startproject <project_name>
settings.py
urls.py
urls.py
, add admin.site.root_path = '/admin/'
as a temporary fix for django ticket 10061manage.py syncdb
, create superuserfapws3/sample/django/run.py
with the correct PYTHONPATH
and DJANGO_SETTINGS_MODULE
env varshttp://localhost:8080/admin/
and log in with the superuser accountfapws3 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
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
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:
django-admin.py startproject <project_name>
settings.py
urls.py
urls.py
, add admin.site.root_path = '/admin/'
as a temporary fix for django ticket 10061manage.py syncdb
, create superuserfapws3/sample/django/run.py
with the correct PYTHONPATH
and DJANGO_SETTINGS_MODULE
env varshttp://localhost:8080/media/css/base.css
and scroll to the bottom or check document info, then compare to actual file in the Django source treeI 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.
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:
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
Why is that fapws.request_addr
is defined and REMOTE_ADDR
is not?
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)
In samples code (for example Django sample) there are lines:
sys.setcheckinterval=100000 # since we don't use threads, internal checks are no more requiredsetcheckinterval
But setcheckinterval is a function not data attribute
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.
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.
[x] Bug (Typo)
retreive
, however expect to see retrieve
.additonal
, however expect to see additional
.useually
, however expect to see usually
.strored
, however expect to see stored
.porovide
, however expect to see provide
.procefure
, however expect to see procedure
.fucntion
, however expect to see function
.medthod
, however expect to see method
.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.
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'
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).
It is currently impossible to use threads with a fapws3 server running in the same process. This is because the server event loop never releases the GIL and therefore never allows other threads to run.
http://docs.python.org/c-api/init.html#thread-state-and-the-global-interpreter-lock
It would be great if you could resolve this.
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
http://www.fapws.org/getting-started
[etucker: ]$ ./fapws.py
Traceback (most recent call last):
File "fapws.py", line 2, in <module>
import fapws.evwsgi as evwsgi
File "fapws.py", line 2, in <module>
import fapws.evwsgi as evwsgi
ImportError: No module named evwsgi
I've tried install fapws3 from both PIP and compiling from source. It does not work.
This is on both Fedora and Amazon EC2 using Python 2.7.
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!
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 :)
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
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
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?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.