unbit / uwsgi

uWSGI application server container
http://projects.unbit.it/uwsgi
Other
3.45k stars 691 forks source link

Issue when building on musl based distro with default profile #1211

Closed patrick91 closed 8 years ago

patrick91 commented 8 years ago

As noted in #1210 there are some issue when trying to install uwsgi on a distro which is using musl. I've done a small test with docker using Alpine. Here is the docker file:

FROM alpine:3.3

RUN apk add --no-cache python python-dev gcc musl-dev linux-headers
RUN apk add --no-cache --virtual=build-dependencies wget ca-certificates && \
    wget "https://bootstrap.pypa.io/get-pip.py" -O /dev/stdout | python

RUN apk add --no-cache git
RUN pip install -e git+git://github.com/unbit/uwsgi.git#egg=uwsgi

And this is the full log of the error

/tmp/uwsgi-alpine docker build -t uwsgi .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM alpine:3.3
 ---> 70c557e50ed6
Step 2 : RUN apk add --no-cache python python-dev gcc musl-dev linux-headers
 ---> Using cache
 ---> a5ee82f679dc
Step 3 : RUN apk add --no-cache --virtual=build-dependencies wget ca-certificates &&     wget "https://bootstrap.pypa.io/get-pip.py" -O /dev/stdout | python
 ---> Using cache
 ---> 5b0ca26cd71d
Step 4 : RUN apk add --no-cache git
 ---> Using cache
 ---> ca3e4d94fec4
Step 5 : RUN pip install -e git+git://github.com/unbit/uwsgi.git#egg=uwsgi
 ---> Running in 12861e040918
Obtaining uwsgi from git+git://github.com/unbit/uwsgi.git#egg=uwsgi
  Cloning git://github.com/unbit/uwsgi.git to /src/uwsgi
Installing collected packages: uwsgi
  Running setup.py develop for uwsgi
    Complete output from command /usr/bin/python -c "import setuptools, tokenize;__file__='/src/uwsgi/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" develop --no-deps:
    /usr/lib/python2.7/site-packages/setuptools/dist.py:294: UserWarning: The version specified ('2.1-dev-3dc786f') is an invalid version, this may not work as expected with newer versions of setuptools, pip, and PyPI. Please see PEP 440 for more details.
      "details." % self.metadata.version
    running develop
    running egg_info
    writing uWSGI.egg-info/PKG-INFO
    writing top-level names to uWSGI.egg-info/top_level.txt
    writing dependency_links to uWSGI.egg-info/dependency_links.txt
    warning: manifest_maker: standard file '-c' not found

    reading manifest file 'uWSGI.egg-info/SOURCES.txt'
    writing manifest file 'uWSGI.egg-info/SOURCES.txt'
    running build_ext
    using profile: buildconf/default.ini
    detected include path: ['/usr/include', '/usr/lib/gcc/x86_64-alpine-linux-musl/5.3.0/include']
    Patching "bin_name" to properly install_scripts dir
    detected CPU cores: 1
    configured CFLAGS: -O2 -I. -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -DUWSGI_HAS_IFADDRS -DUWSGI_LOCK_USE_MUTEX -DUWSGI_EVENT_USE_EPOLL -DUWSGI_EVENT_TIMER_USE_TIMERFD -DUWSGI_EVENT_FILEMONITOR_USE_INOTIFY -DUWSGI_VERSION="\"2.1-dev-3dc786f\"" -DUWSGI_VERSION_BASE="2" -DUWSGI_VERSION_MAJOR="1" -DUWSGI_VERSION_MINOR="0" -DUWSGI_VERSION_REVISION="0" -DUWSGI_VERSION_CUSTOM="\"dev-3dc786f\"" -DUWSGI_YAML -DUWSGI_PLUGIN_DIR="\".\"" -DUWSGI_DECLARE_EMBEDDED_PLUGINS="UDEP(python);UDEP(gevent);UDEP(ping);UDEP(cache);UDEP(nagios);UDEP(rrdtool);UDEP(carbon);UDEP(rpc);UDEP(corerouter);UDEP(fastrouter);UDEP(http);UDEP(ugreen);UDEP(signal);UDEP(syslog);UDEP(rsyslog);UDEP(logsocket);UDEP(router_uwsgi);UDEP(router_redirect);UDEP(router_basicauth);UDEP(zergpool);UDEP(redislog);UDEP(mongodblog);UDEP(router_rewrite);UDEP(router_http);UDEP(logfile);UDEP(router_cache);UDEP(rawrouter);UDEP(router_static);UDEP(sslrouter);UDEP(spooler);UDEP(cheaper_busyness);UDEP(symcall);UDEP(transformation_tofile);UDEP(transformation_gzip);UDEP(transformation_chunked);UDEP(transformation_offload);UDEP(router_memcached);UDEP(router_redis);UDEP(router_hash);UDEP(router_expires);UDEP(router_metrics);UDEP(transformation_template);UDEP(stats_pusher_socket);" -DUWSGI_LOAD_EMBEDDED_PLUGINS="ULEP(python);ULEP(gevent);ULEP(ping);ULEP(cache);ULEP(nagios);ULEP(rrdtool);ULEP(carbon);ULEP(rpc);ULEP(corerouter);ULEP(fastrouter);ULEP(http);ULEP(ugreen);ULEP(signal);ULEP(syslog);ULEP(rsyslog);ULEP(logsocket);ULEP(router_uwsgi);ULEP(router_redirect);ULEP(router_basicauth);ULEP(zergpool);ULEP(redislog);ULEP(mongodblog);ULEP(router_rewrite);ULEP(router_http);ULEP(logfile);ULEP(router_cache);ULEP(rawrouter);ULEP(router_static);ULEP(sslrouter);ULEP(spooler);ULEP(cheaper_busyness);ULEP(symcall);ULEP(transformation_tofile);ULEP(transformation_gzip);ULEP(transformation_chunked);ULEP(transformation_offload);ULEP(router_memcached);ULEP(router_redis);ULEP(router_hash);ULEP(router_expires);ULEP(router_metrics);ULEP(transformation_template);ULEP(stats_pusher_socket);"
    *** uWSGI compiling server core ***
    [gcc] core/utils.o
    [gcc] core/protocol.o
    [gcc] core/socket.o
    [gcc] core/logging.o
    [gcc] core/master.o
    [gcc] core/master_utils.o
    [gcc] core/emperor.o
    [gcc] core/notify.o
    [gcc] core/mule.o
    [gcc] core/subscription.o
    [gcc] core/stats.o
    [gcc] core/sendfile.o
    [gcc] core/async.o
    [gcc] core/master_checks.o
    [gcc] core/fifo.o
    [gcc] core/offload.o
    [gcc] core/io.o
    [gcc] core/static.o
    [gcc] core/websockets.o
    [gcc] core/spooler.o
    [gcc] core/snmp.o
    [gcc] core/exceptions.o
    [gcc] core/config.o
    [gcc] core/setup_utils.o
    [gcc] core/clock.o
    [gcc] core/init.o
    [gcc] core/buffer.o
    [gcc] core/reader.o
    [gcc] core/writer.o
    [gcc] core/alarm.o
    [gcc] core/cron.o
    [gcc] core/hooks.o
    [gcc] core/plugins.o
    [gcc] core/lock.o
    [gcc] core/cache.o
    [gcc] core/daemons.o
    [gcc] core/errors.o
    [gcc] core/hash.o
    [gcc] core/master_events.o
    [gcc] core/chunked.o
    [gcc] core/queue.o
    [gcc] core/event.o
    [gcc] core/signal.o
    [gcc] core/strings.o
    [gcc] core/progress.o
    [gcc] core/timebomb.o
    [gcc] core/ini.o
    [gcc] core/fsmon.o
    [gcc] core/mount.o
    [gcc] core/metrics.o
    [gcc] core/plugins_builder.o
    [gcc] core/sharedarea.o
    [gcc] core/fork_server.o
    [gcc] core/webdav.o
    [gcc] core/zeus.o
    [gcc] core/rpc.o
    [gcc] core/gateway.o
    [gcc] core/loop.o
    [gcc] core/cookie.o
    [gcc] core/querystring.o
    [gcc] core/rb_timers.o
    [gcc] core/transformations.o
    [gcc] core/uwsgi.o
    [gcc] proto/base.o
    [gcc] proto/uwsgi.o
    [gcc] proto/http.o
    [gcc] proto/fastcgi.o
    [gcc] proto/scgi.o
    [gcc] proto/puwsgi.o
    [gcc] lib/linux_ns.o
    [gcc] core/yaml.o
    [gcc] core/dot_h.o
    [gcc] core/config_py.o
    *** uWSGI compiling embedded plugins ***
    [gcc] plugins/python/python_plugin.o
    [gcc] plugins/python/pyutils.o
    [gcc] plugins/python/pyloader.o
    [gcc] plugins/python/wsgi_handlers.o
    [gcc] plugins/python/wsgi_headers.o
    [gcc] plugins/python/wsgi_subhandler.o
    [gcc] plugins/python/web3_subhandler.o
    [gcc] plugins/python/pump_subhandler.o
    [gcc] plugins/python/gil.o
    [gcc] plugins/python/uwsgi_pymodule.o
    [gcc] plugins/python/profiler.o
    [gcc] plugins/python/symimporter.o
    [gcc] plugins/python/tracebacker.o
    [gcc] plugins/python/raw.o
    [gcc] plugins/gevent/gevent.o
    [gcc] plugins/gevent/hooks.o
    [gcc] plugins/ping/ping_plugin.o
    [gcc] plugins/cache/cache.o
    [gcc] plugins/nagios/nagios.o
    [gcc] plugins/rrdtool/rrdtool.o
    [gcc] plugins/carbon/carbon.o
    [gcc] plugins/rpc/rpc_plugin.o
    [gcc] plugins/corerouter/cr_common.o
    [gcc] plugins/corerouter/cr_map.o
    [gcc] plugins/corerouter/corerouter.o
    [gcc] plugins/fastrouter/fastrouter.o
    [gcc] plugins/http/http.o
    [gcc] plugins/http/keepalive.o
    [gcc] plugins/http/https.o
    [gcc] plugins/http/spdy3.o
    [gcc] plugins/ugreen/ugreen.o
    [gcc] plugins/signal/signal_plugin.o
    [gcc] plugins/syslog/syslog_plugin.o
    [gcc] plugins/rsyslog/rsyslog_plugin.o
    [gcc] plugins/logsocket/logsocket_plugin.o
    [gcc] plugins/router_uwsgi/router_uwsgi.o
    [gcc] plugins/router_redirect/router_redirect.o
    [gcc] plugins/router_basicauth/router_basicauth.o
    [gcc] plugins/zergpool/zergpool.o
    [gcc] plugins/redislog/redislog_plugin.o
    [gcc] plugins/mongodblog/mongodblog_plugin.o
    [gcc] plugins/router_rewrite/router_rewrite.o
    [gcc] plugins/router_http/router_http.o
    [gcc] plugins/logfile/logfile.o
    [gcc] plugins/router_cache/router_cache.o
    [gcc] plugins/rawrouter/rawrouter.o
    [gcc] plugins/router_static/router_static.o
    [gcc] plugins/sslrouter/sslrouter.o
    [gcc] plugins/spooler/spooler_plugin.o
    [gcc] plugins/cheaper_busyness/cheaper_busyness.o
    [gcc] plugins/symcall/symcall_plugin.o
    [gcc] plugins/transformation_tofile/tofile.o
    [gcc] plugins/transformation_gzip/gzip.o
    [gcc] plugins/transformation_chunked/chunked.o
    [gcc] plugins/transformation_offload/offload.o
    [gcc] plugins/router_memcached/router_memcached.o
    [gcc] plugins/router_redis/router_redis.o
    [gcc] plugins/router_hash/router_hash.o
    [gcc] plugins/router_expires/expires.o
    [gcc] plugins/router_metrics/plugin.o
    [gcc] plugins/transformation_template/tt.o
    [gcc] plugins/stats_pusher_socket/plugin.o
    *** uWSGI linking ***
    gcc -o /usr/bin/uwsgi -L/usr/lib -Wl,-rpath,/usr/lib core/utils.o core/protocol.o core/socket.o core/logging.o core/master.o core/master_utils.o core/emperor.o core/notify.o core/mule.o core/subscription.o core/stats.o core/sendfile.o core/async.o core/master_checks.o core/fifo.o core/offload.o core/io.o core/static.o core/websockets.o core/spooler.o core/snmp.o core/exceptions.o core/config.o core/setup_utils.o core/clock.o core/init.o core/buffer.o core/reader.o core/writer.o core/alarm.o core/cron.o core/hooks.o core/plugins.o core/lock.o core/cache.o core/daemons.o core/errors.o core/hash.o core/master_events.o core/chunked.o core/queue.o core/event.o core/signal.o core/strings.o core/progress.o core/timebomb.o core/ini.o core/fsmon.o core/mount.o core/metrics.o core/plugins_builder.o core/sharedarea.o core/fork_server.o core/webdav.o core/zeus.o core/rpc.o core/gateway.o core/loop.o core/cookie.o core/querystring.o core/rb_timers.o core/transformations.o core/uwsgi.o proto/base.o proto/uwsgi.o proto/http.o proto/fastcgi.o proto/scgi.o proto/puwsgi.o lib/linux_ns.o core/yaml.o core/dot_h.o core/config_py.o plugins/python/python_plugin.o plugins/python/pyutils.o plugins/python/pyloader.o plugins/python/wsgi_handlers.o plugins/python/wsgi_headers.o plugins/python/wsgi_subhandler.o plugins/python/web3_subhandler.o plugins/python/pump_subhandler.o plugins/python/gil.o plugins/python/uwsgi_pymodule.o plugins/python/profiler.o plugins/python/symimporter.o plugins/python/tracebacker.o plugins/python/raw.o plugins/gevent/gevent.o plugins/gevent/hooks.o plugins/ping/ping_plugin.o plugins/cache/cache.o plugins/nagios/nagios.o plugins/rrdtool/rrdtool.o plugins/carbon/carbon.o plugins/rpc/rpc_plugin.o plugins/corerouter/cr_common.o plugins/corerouter/cr_map.o plugins/corerouter/corerouter.o plugins/fastrouter/fastrouter.o plugins/http/http.o plugins/http/keepalive.o plugins/http/https.o plugins/http/spdy3.o plugins/ugreen/ugreen.o plugins/signal/signal_plugin.o plugins/syslog/syslog_plugin.o plugins/rsyslog/rsyslog_plugin.o plugins/logsocket/logsocket_plugin.o plugins/router_uwsgi/router_uwsgi.o plugins/router_redirect/router_redirect.o plugins/router_basicauth/router_basicauth.o plugins/zergpool/zergpool.o plugins/redislog/redislog_plugin.o plugins/mongodblog/mongodblog_plugin.o plugins/router_rewrite/router_rewrite.o plugins/router_http/router_http.o plugins/logfile/logfile.o plugins/router_cache/router_cache.o plugins/rawrouter/rawrouter.o plugins/router_static/router_static.o plugins/sslrouter/sslrouter.o plugins/spooler/spooler_plugin.o plugins/cheaper_busyness/cheaper_busyness.o plugins/symcall/symcall_plugin.o plugins/transformation_tofile/tofile.o plugins/transformation_gzip/gzip.o plugins/transformation_chunked/chunked.o plugins/transformation_offload/offload.o plugins/router_memcached/router_memcached.o plugins/router_redis/router_redis.o plugins/router_hash/router_hash.o plugins/router_expires/expires.o plugins/router_metrics/plugin.o plugins/transformation_template/tt.o plugins/stats_pusher_socket/plugin.o -lpthread -lm -rdynamic -ldl -ldl -lm -lpython2.7 -lcryptplugins/ugreen/ugreen.o: In function `u_green_init':
    ugreen.c:(.text+0xca): undefined reference to `getcontext'
    plugins/ugreen/ugreen.o: In function `u_green_schedule_to_req':
    ugreen.c:(.text+0x2db): undefined reference to `swapcontext'
    ugreen.c:(.text+0x329): undefined reference to `makecontext'
    plugins/ugreen/ugreen.o: In function `u_green_schedule_to_main':
    ugreen.c:(.text+0x39a): undefined reference to `swapcontext'
    collect2: error: ld returned 1 exit status

    *** error linking uWSGI ***

    ----------------------------------------
Command "/usr/bin/python -c "import setuptools, tokenize;__file__='/src/uwsgi/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" develop --no-deps" failed with error code 1 in /src/uwsgi/
The command '/bin/sh -c pip install -e git+git://github.com/unbit/uwsgi.git#egg=uwsgi' returned a non-zero code: 1

If I change the profile to be core it works nicely:

RUN UWSGI_PROFILE=core pip install -e git+git://github.com/unbit/uwsgi.git#egg=uwsgi
xrmx commented 8 years ago

@patrick91 does pip install uwsgi fails in the same way?

bodgit commented 8 years ago

AFAIK none of the committed musl libc fixes have made it into a formal release yet so it will fail on many of the problems fixed in #522.

patrick91 commented 8 years ago

Here are the errors:

/tmp/uwsgi-alpine docker build -t uwsgi .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM alpine:3.3
 ---> 70c557e50ed6
Step 2 : RUN apk add --no-cache python python-dev gcc musl-dev linux-headers
 ---> Using cache
 ---> a5ee82f679dc
Step 3 : RUN apk add --no-cache --virtual=build-dependencies wget ca-certificates &&     wget "https://bootstrap.pypa.io/get-pip.py" -O /dev/stdout | python
 ---> Using cache
 ---> 5b0ca26cd71d
Step 4 : RUN apk add --no-cache git
 ---> Using cache
 ---> ca3e4d94fec4
Step 5 : RUN pip install uwsgi
 ---> Running in 322c3b25763e
Collecting uwsgi
  Downloading uwsgi-2.0.12.tar.gz (784kB)
Building wheels for collected packages: uwsgi
  Running setup.py bdist_wheel for uwsgi: started
  Running setup.py bdist_wheel for uwsgi: finished with status 'error'
  Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-Itgblv/uwsgi/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" bdist_wheel -d /tmp/tmprOdipBpip-wheel- --python-tag cp27:
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib
  copying uwsgidecorators.py -> build/lib
  installing to build/bdist.linux-x86_64/wheel
  running install
  using profile: buildconf/default.ini
  detected include path: ['/usr/include', '/usr/lib/gcc/x86_64-alpine-linux-musl/5.3.0/include']
  Patching "bin_name" to properly install_scripts dir
  detected CPU cores: 1
  configured CFLAGS: -O2 -I. -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -DUWSGI_HAS_IFADDRS -DUWSGI_LOCK_USE_MUTEX -DUWSGI_EVENT_USE_EPOLL -DUWSGI_EVENT_TIMER_USE_TIMERFD -DUWSGI_EVENT_FILEMONITOR_USE_INOTIFY -DUWSGI_VERSION="\"2.0.12\"" -DUWSGI_VERSION_BASE="2" -DUWSGI_VERSION_MAJOR="0" -DUWSGI_VERSION_MINOR="12" -DUWSGI_VERSION_REVISION="0" -DUWSGI_VERSION_CUSTOM="\"\"" -DUWSGI_YAML -DUWSGI_PLUGIN_DIR="\".\"" -DUWSGI_DECLARE_EMBEDDED_PLUGINS="UDEP(python);UDEP(gevent);UDEP(ping);UDEP(cache);UDEP(nagios);UDEP(rrdtool);UDEP(carbon);UDEP(rpc);UDEP(corerouter);UDEP(fastrouter);UDEP(http);UDEP(ugreen);UDEP(signal);UDEP(syslog);UDEP(rsyslog);UDEP(logsocket);UDEP(router_uwsgi);UDEP(router_redirect);UDEP(router_basicauth);UDEP(zergpool);UDEP(redislog);UDEP(mongodblog);UDEP(router_rewrite);UDEP(router_http);UDEP(logfile);UDEP(router_cache);UDEP(rawrouter);UDEP(router_static);UDEP(sslrouter);UDEP(spooler);UDEP(cheaper_busyness);UDEP(symcall);UDEP(transformation_tofile);UDEP(transformation_gzip);UDEP(transformation_chunked);UDEP(transformation_offload);UDEP(router_memcached);UDEP(router_redis);UDEP(router_hash);UDEP(router_expires);UDEP(router_metrics);UDEP(transformation_template);UDEP(stats_pusher_socket);" -DUWSGI_LOAD_EMBEDDED_PLUGINS="ULEP(python);ULEP(gevent);ULEP(ping);ULEP(cache);ULEP(nagios);ULEP(rrdtool);ULEP(carbon);ULEP(rpc);ULEP(corerouter);ULEP(fastrouter);ULEP(http);ULEP(ugreen);ULEP(signal);ULEP(syslog);ULEP(rsyslog);ULEP(logsocket);ULEP(router_uwsgi);ULEP(router_redirect);ULEP(router_basicauth);ULEP(zergpool);ULEP(redislog);ULEP(mongodblog);ULEP(router_rewrite);ULEP(router_http);ULEP(logfile);ULEP(router_cache);ULEP(rawrouter);ULEP(router_static);ULEP(sslrouter);ULEP(spooler);ULEP(cheaper_busyness);ULEP(symcall);ULEP(transformation_tofile);ULEP(transformation_gzip);ULEP(transformation_chunked);ULEP(transformation_offload);ULEP(router_memcached);ULEP(router_redis);ULEP(router_hash);ULEP(router_expires);ULEP(router_metrics);ULEP(transformation_template);ULEP(stats_pusher_socket);"
  *** uWSGI compiling server core ***
  [gcc] core/utils.o
  core/utils.c: In function 'uwsgi_as_root':
  core/utils.c:344:7: error: implicit declaration of function 'unshare' [-Werror=implicit-function-declaration]
     if (unshare(uwsgi.unshare)) {
         ^
  core/utils.c:564:5: error: implicit declaration of function 'sigfillset' [-Werror=implicit-function-declaration]
       sigfillset(&smask);
       ^
  core/utils.c:565:5: error: implicit declaration of function 'sigprocmask' [-Werror=implicit-function-declaration]
       sigprocmask(SIG_BLOCK, &smask, NULL);
       ^
  core/utils.c:565:17: error: 'SIG_BLOCK' undeclared (first use in this function)
       sigprocmask(SIG_BLOCK, &smask, NULL);
                   ^
  core/utils.c:565:17: note: each undeclared identifier is reported only once for each function it appears in
  core/utils.c:586:7: error: implicit declaration of function 'chroot' [-Werror=implicit-function-declaration]
     if (chroot(uwsgi.chroot)) {
         ^
  core/utils.c:791:5: error: unknown type name 'ushort'
       ushort *array;
       ^
  core/utils.c:833:8: error: implicit declaration of function 'setgroups' [-Werror=implicit-function-declaration]
      if (setgroups(0, NULL)) {
          ^
  core/utils.c:848:8: error: implicit declaration of function 'initgroups' [-Werror=implicit-function-declaration]
      if (initgroups(uidname, uwsgi.gid)) {
          ^
  core/utils.c: In function 'uwsgi_close_request':
  core/utils.c:1145:18: error: 'WAIT_ANY' undeclared (first use in this function)
     while (waitpid(WAIT_ANY, &waitpid_status, WNOHANG) > 0);
                    ^
  core/utils.c: In function 'uwsgi_resolve_ip':
  core/utils.c:1802:7: error: implicit declaration of function 'gethostbyname' [-Werror=implicit-function-declaration]
    he = gethostbyname(domain);
         ^
  core/utils.c:1802:5: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
    he = gethostbyname(domain);
       ^
  core/utils.c: In function 'uwsgi_unix_signal':
  core/utils.c:1936:19: error: storage size of 'sa' isn't known
    struct sigaction sa;
                     ^
  core/utils.c:1938:24: error: invalid application of 'sizeof' to incomplete type 'struct sigaction'
    memset(&sa, 0, sizeof(struct sigaction));
                          ^
  core/utils.c:1942:2: error: implicit declaration of function 'sigemptyset' [-Werror=implicit-function-declaration]
    sigemptyset(&sa.sa_mask);
    ^
  core/utils.c:1944:6: error: implicit declaration of function 'sigaction' [-Werror=implicit-function-declaration]
    if (sigaction(signum, &sa, NULL) < 0) {
        ^
  core/utils.c:1936:19: error: unused variable 'sa' [-Werror=unused-variable]
    struct sigaction sa;
                     ^
  In file included from core/utils.c:1:0:
  core/utils.c: In function 'uwsgi_list_has_num':
  ./uwsgi.h:140:47: error: implicit declaration of function 'strtok_r' [-Werror=implicit-function-declaration]
   #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                 ^
  core/utils.c:1953:2: note: in expansion of macro 'uwsgi_foreach_token'
    uwsgi_foreach_token(list2, ",", p, ctx) {
    ^
  ./uwsgi.h:140:46: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
   #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                ^
  core/utils.c:1953:2: note: in expansion of macro 'uwsgi_foreach_token'
    uwsgi_foreach_token(list2, ",", p, ctx) {
    ^
  ./uwsgi.h:140:70: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
   #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                                        ^
  core/utils.c:1953:2: note: in expansion of macro 'uwsgi_foreach_token'
    uwsgi_foreach_token(list2, ",", p, ctx) {
    ^
  core/utils.c: In function 'uwsgi_list_has_str':
  ./uwsgi.h:140:46: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
   #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                ^
  core/utils.c:1968:2: note: in expansion of macro 'uwsgi_foreach_token'
    uwsgi_foreach_token(list2, " ", p, ctx) {
    ^
  ./uwsgi.h:140:70: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
   #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                                        ^
  core/utils.c:1968:2: note: in expansion of macro 'uwsgi_foreach_token'
    uwsgi_foreach_token(list2, " ", p, ctx) {
    ^
  core/utils.c:1969:8: error: implicit declaration of function 'strcasecmp' [-Werror=implicit-function-declaration]
     if (!strcasecmp(p, str)) {
          ^
  core/utils.c: In function 'uwsgi_sig_pause':
  core/utils.c:2361:2: error: implicit declaration of function 'sigsuspend' [-Werror=implicit-function-declaration]
    sigsuspend(&mask);
    ^
  core/utils.c: In function 'uwsgi_run_command_putenv_and_wait':
  core/utils.c:2453:7: error: implicit declaration of function 'putenv' [-Werror=implicit-function-declaration]
     if (putenv(envs[i])) {
         ^
  In file included from core/utils.c:1:0:
  core/utils.c: In function 'uwsgi_build_unshare':
  ./uwsgi.h:140:46: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
   #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                ^
  core/utils.c:2855:2: note: in expansion of macro 'uwsgi_foreach_token'
    uwsgi_foreach_token(list, ",", p, ctx) {
    ^
  ./uwsgi.h:140:70: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
   #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                                        ^
  core/utils.c:2855:2: note: in expansion of macro 'uwsgi_foreach_token'
    uwsgi_foreach_token(list, ",", p, ctx) {
    ^
  core/utils.c: In function 'uwsgi_tmpfd':
  core/utils.c:3533:7: error: implicit declaration of function 'mkstemp' [-Werror=implicit-function-declaration]
    fd = mkstemp(template);
         ^
  core/utils.c: In function 'uwsgi_expand_path':
  core/utils.c:3615:7: error: implicit declaration of function 'realpath' [-Werror=implicit-function-declaration]
    if (!realpath(src, dst)) {
         ^
  core/utils.c: In function 'uwsgi_set_cpu_affinity':
  core/utils.c:3641:3: error: unknown type name 'cpu_set_t'
     cpu_set_t cpuset;
     ^
  core/utils.c:3646:3: error: implicit declaration of function 'CPU_ZERO' [-Werror=implicit-function-declaration]
     CPU_ZERO(&cpuset);
     ^
  core/utils.c:3651:4: error: implicit declaration of function 'CPU_SET' [-Werror=implicit-function-declaration]
      CPU_SET(base_cpu, &cpuset);
      ^
  core/utils.c:3662:7: error: implicit declaration of function 'sched_setaffinity' [-Werror=implicit-function-declaration]
     if (sched_setaffinity(0, sizeof(cpu_set_t), &cpuset)) {
         ^
  core/utils.c:3662:35: error: 'cpu_set_t' undeclared (first use in this function)
     if (sched_setaffinity(0, sizeof(cpu_set_t), &cpuset)) {
                                     ^
  core/utils.c: In function 'uwsgi_thread_run':
  core/utils.c:3782:2: error: implicit declaration of function 'pthread_sigmask' [-Werror=implicit-function-declaration]
    pthread_sigmask(SIG_BLOCK, &smask, NULL);
    ^
  core/utils.c:3782:18: error: 'SIG_BLOCK' undeclared (first use in this function)
    pthread_sigmask(SIG_BLOCK, &smask, NULL);
                    ^
  core/utils.c: In function 'uwsgi_envdir':
  core/utils.c:4349:8: error: implicit declaration of function 'unsetenv' [-Werror=implicit-function-declaration]
      if (unsetenv(de->d_name)) {
          ^
  core/utils.c:4380:7: error: implicit declaration of function 'setenv' [-Werror=implicit-function-declaration]
     if (setenv(de->d_name, content, 1)) {
         ^
  cc1: all warnings being treated as errors

  ----------------------------------------
  Running setup.py clean for uwsgi
  Failed building wheel for uwsgi
Failed to build uwsgi
Installing collected packages: uwsgi
  Running setup.py install for uwsgi: started
    Running setup.py install for uwsgi: finished with status 'error'
    Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-Itgblv/uwsgi/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-M3fYX3-record/install-record.txt --single-version-externally-managed --compile:
    running install
    using profile: buildconf/default.ini
    detected include path: ['/usr/include', '/usr/lib/gcc/x86_64-alpine-linux-musl/5.3.0/include']
    Patching "bin_name" to properly install_scripts dir
    detected CPU cores: 1
    configured CFLAGS: -O2 -I. -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -DUWSGI_HAS_IFADDRS -DUWSGI_LOCK_USE_MUTEX -DUWSGI_EVENT_USE_EPOLL -DUWSGI_EVENT_TIMER_USE_TIMERFD -DUWSGI_EVENT_FILEMONITOR_USE_INOTIFY -DUWSGI_VERSION="\"2.0.12\"" -DUWSGI_VERSION_BASE="2" -DUWSGI_VERSION_MAJOR="0" -DUWSGI_VERSION_MINOR="12" -DUWSGI_VERSION_REVISION="0" -DUWSGI_VERSION_CUSTOM="\"\"" -DUWSGI_YAML -DUWSGI_PLUGIN_DIR="\".\"" -DUWSGI_DECLARE_EMBEDDED_PLUGINS="UDEP(python);UDEP(gevent);UDEP(ping);UDEP(cache);UDEP(nagios);UDEP(rrdtool);UDEP(carbon);UDEP(rpc);UDEP(corerouter);UDEP(fastrouter);UDEP(http);UDEP(ugreen);UDEP(signal);UDEP(syslog);UDEP(rsyslog);UDEP(logsocket);UDEP(router_uwsgi);UDEP(router_redirect);UDEP(router_basicauth);UDEP(zergpool);UDEP(redislog);UDEP(mongodblog);UDEP(router_rewrite);UDEP(router_http);UDEP(logfile);UDEP(router_cache);UDEP(rawrouter);UDEP(router_static);UDEP(sslrouter);UDEP(spooler);UDEP(cheaper_busyness);UDEP(symcall);UDEP(transformation_tofile);UDEP(transformation_gzip);UDEP(transformation_chunked);UDEP(transformation_offload);UDEP(router_memcached);UDEP(router_redis);UDEP(router_hash);UDEP(router_expires);UDEP(router_metrics);UDEP(transformation_template);UDEP(stats_pusher_socket);" -DUWSGI_LOAD_EMBEDDED_PLUGINS="ULEP(python);ULEP(gevent);ULEP(ping);ULEP(cache);ULEP(nagios);ULEP(rrdtool);ULEP(carbon);ULEP(rpc);ULEP(corerouter);ULEP(fastrouter);ULEP(http);ULEP(ugreen);ULEP(signal);ULEP(syslog);ULEP(rsyslog);ULEP(logsocket);ULEP(router_uwsgi);ULEP(router_redirect);ULEP(router_basicauth);ULEP(zergpool);ULEP(redislog);ULEP(mongodblog);ULEP(router_rewrite);ULEP(router_http);ULEP(logfile);ULEP(router_cache);ULEP(rawrouter);ULEP(router_static);ULEP(sslrouter);ULEP(spooler);ULEP(cheaper_busyness);ULEP(symcall);ULEP(transformation_tofile);ULEP(transformation_gzip);ULEP(transformation_chunked);ULEP(transformation_offload);ULEP(router_memcached);ULEP(router_redis);ULEP(router_hash);ULEP(router_expires);ULEP(router_metrics);ULEP(transformation_template);ULEP(stats_pusher_socket);"
    *** uWSGI compiling server core ***
    [gcc] core/utils.o
    core/utils.c: In function 'uwsgi_as_root':
    core/utils.c:344:7: error: implicit declaration of function 'unshare' [-Werror=implicit-function-declaration]
       if (unshare(uwsgi.unshare)) {
           ^
    core/utils.c:564:5: error: implicit declaration of function 'sigfillset' [-Werror=implicit-function-declaration]
         sigfillset(&smask);
         ^
    core/utils.c:565:5: error: implicit declaration of function 'sigprocmask' [-Werror=implicit-function-declaration]
         sigprocmask(SIG_BLOCK, &smask, NULL);
         ^
    core/utils.c:565:17: error: 'SIG_BLOCK' undeclared (first use in this function)
         sigprocmask(SIG_BLOCK, &smask, NULL);
                     ^
    core/utils.c:565:17: note: each undeclared identifier is reported only once for each function it appears in
    core/utils.c:586:7: error: implicit declaration of function 'chroot' [-Werror=implicit-function-declaration]
       if (chroot(uwsgi.chroot)) {
           ^
    core/utils.c:791:5: error: unknown type name 'ushort'
         ushort *array;
         ^
    core/utils.c:833:8: error: implicit declaration of function 'setgroups' [-Werror=implicit-function-declaration]
        if (setgroups(0, NULL)) {
            ^
    core/utils.c:848:8: error: implicit declaration of function 'initgroups' [-Werror=implicit-function-declaration]
        if (initgroups(uidname, uwsgi.gid)) {
            ^
    core/utils.c: In function 'uwsgi_close_request':
    core/utils.c:1145:18: error: 'WAIT_ANY' undeclared (first use in this function)
       while (waitpid(WAIT_ANY, &waitpid_status, WNOHANG) > 0);
                      ^
    core/utils.c: In function 'uwsgi_resolve_ip':
    core/utils.c:1802:7: error: implicit declaration of function 'gethostbyname' [-Werror=implicit-function-declaration]
      he = gethostbyname(domain);
           ^
    core/utils.c:1802:5: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
      he = gethostbyname(domain);
         ^
    core/utils.c: In function 'uwsgi_unix_signal':
    core/utils.c:1936:19: error: storage size of 'sa' isn't known
      struct sigaction sa;
                       ^
    core/utils.c:1938:24: error: invalid application of 'sizeof' to incomplete type 'struct sigaction'
      memset(&sa, 0, sizeof(struct sigaction));
                            ^
    core/utils.c:1942:2: error: implicit declaration of function 'sigemptyset' [-Werror=implicit-function-declaration]
      sigemptyset(&sa.sa_mask);
      ^
    core/utils.c:1944:6: error: implicit declaration of function 'sigaction' [-Werror=implicit-function-declaration]
      if (sigaction(signum, &sa, NULL) < 0) {
          ^
    core/utils.c:1936:19: error: unused variable 'sa' [-Werror=unused-variable]
      struct sigaction sa;
                       ^
    In file included from core/utils.c:1:0:
    core/utils.c: In function 'uwsgi_list_has_num':
    ./uwsgi.h:140:47: error: implicit declaration of function 'strtok_r' [-Werror=implicit-function-declaration]
     #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                   ^
    core/utils.c:1953:2: note: in expansion of macro 'uwsgi_foreach_token'
      uwsgi_foreach_token(list2, ",", p, ctx) {
      ^
    ./uwsgi.h:140:46: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
     #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                  ^
    core/utils.c:1953:2: note: in expansion of macro 'uwsgi_foreach_token'
      uwsgi_foreach_token(list2, ",", p, ctx) {
      ^
    ./uwsgi.h:140:70: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
     #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                                          ^
    core/utils.c:1953:2: note: in expansion of macro 'uwsgi_foreach_token'
      uwsgi_foreach_token(list2, ",", p, ctx) {
      ^
    core/utils.c: In function 'uwsgi_list_has_str':
    ./uwsgi.h:140:46: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
     #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                  ^
    core/utils.c:1968:2: note: in expansion of macro 'uwsgi_foreach_token'
      uwsgi_foreach_token(list2, " ", p, ctx) {
      ^
    ./uwsgi.h:140:70: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
     #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                                          ^
    core/utils.c:1968:2: note: in expansion of macro 'uwsgi_foreach_token'
      uwsgi_foreach_token(list2, " ", p, ctx) {
      ^
    core/utils.c:1969:8: error: implicit declaration of function 'strcasecmp' [-Werror=implicit-function-declaration]
       if (!strcasecmp(p, str)) {
            ^
    core/utils.c: In function 'uwsgi_sig_pause':
    core/utils.c:2361:2: error: implicit declaration of function 'sigsuspend' [-Werror=implicit-function-declaration]
      sigsuspend(&mask);
      ^
    core/utils.c: In function 'uwsgi_run_command_putenv_and_wait':
    core/utils.c:2453:7: error: implicit declaration of function 'putenv' [-Werror=implicit-function-declaration]
       if (putenv(envs[i])) {
           ^
    In file included from core/utils.c:1:0:
    core/utils.c: In function 'uwsgi_build_unshare':
    ./uwsgi.h:140:46: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
     #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                  ^
    core/utils.c:2855:2: note: in expansion of macro 'uwsgi_foreach_token'
      uwsgi_foreach_token(list, ",", p, ctx) {
      ^
    ./uwsgi.h:140:70: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
     #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                                          ^
    core/utils.c:2855:2: note: in expansion of macro 'uwsgi_foreach_token'
      uwsgi_foreach_token(list, ",", p, ctx) {
      ^
    core/utils.c: In function 'uwsgi_tmpfd':
    core/utils.c:3533:7: error: implicit declaration of function 'mkstemp' [-Werror=implicit-function-declaration]
      fd = mkstemp(template);
           ^
    core/utils.c: In function 'uwsgi_expand_path':
    core/utils.c:3615:7: error: implicit declaration of function 'realpath' [-Werror=implicit-function-declaration]
      if (!realpath(src, dst)) {
           ^
    core/utils.c: In function 'uwsgi_set_cpu_affinity':
    core/utils.c:3641:3: error: unknown type name 'cpu_set_t'
       cpu_set_t cpuset;
       ^
    core/utils.c:3646:3: error: implicit declaration of function 'CPU_ZERO' [-Werror=implicit-function-declaration]
       CPU_ZERO(&cpuset);
       ^
    core/utils.c:3651:4: error: implicit declaration of function 'CPU_SET' [-Werror=implicit-function-declaration]
        CPU_SET(base_cpu, &cpuset);
        ^
    core/utils.c:3662:7: error: implicit declaration of function 'sched_setaffinity' [-Werror=implicit-function-declaration]
       if (sched_setaffinity(0, sizeof(cpu_set_t), &cpuset)) {
           ^
    core/utils.c:3662:35: error: 'cpu_set_t' undeclared (first use in this function)
       if (sched_setaffinity(0, sizeof(cpu_set_t), &cpuset)) {
                                       ^
    core/utils.c: In function 'uwsgi_thread_run':
    core/utils.c:3782:2: error: implicit declaration of function 'pthread_sigmask' [-Werror=implicit-function-declaration]
      pthread_sigmask(SIG_BLOCK, &smask, NULL);
      ^
    core/utils.c:3782:18: error: 'SIG_BLOCK' undeclared (first use in this function)
      pthread_sigmask(SIG_BLOCK, &smask, NULL);
                      ^
    core/utils.c: In function 'uwsgi_envdir':
    core/utils.c:4349:8: error: implicit declaration of function 'unsetenv' [-Werror=implicit-function-declaration]
        if (unsetenv(de->d_name)) {
            ^
    core/utils.c:4380:7: error: implicit declaration of function 'setenv' [-Werror=implicit-function-declaration]
       if (setenv(de->d_name, content, 1)) {
           ^
    cc1: all warnings being treated as errors

    ----------------------------------------
Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-Itgblv/uwsgi/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-M3fYX3-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-Itgblv/uwsgi/
The command '/bin/sh -c pip install uwsgi' returned a non-zero code: 1
xrmx commented 8 years ago

@patrick91 Can you please check that muslfixes branch is on par with master?

RUN pip install -e git+git://github.com/unbit/uwsgi.git@muslfixes#egg=uwsgi
patrick91 commented 8 years ago

This is what I get running that command:

/tmp/uwsgi-alpine docker build -t uwsgi .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM alpine:3.3
 ---> 70c557e50ed6
Step 2 : RUN apk add --no-cache python python-dev gcc musl-dev linux-headers
 ---> Using cache
 ---> a5ee82f679dc
Step 3 : RUN apk add --no-cache --virtual=build-dependencies wget ca-certificates &&     wget "https://bootstrap.pypa.io/get-pip.py" -O /dev/stdout | python
 ---> Using cache
 ---> 5b0ca26cd71d
Step 4 : RUN apk add --no-cache git
 ---> Using cache
 ---> ca3e4d94fec4
Step 5 : RUN pip install -e git+git://github.com/unbit/uwsgi.git@muslfixes#egg=uwsgi
 ---> Running in 9326be4194e7
Obtaining uwsgi from git+git://github.com/unbit/uwsgi.git@muslfixes#egg=uwsgi
  Cloning git://github.com/unbit/uwsgi.git (to muslfixes) to /src/uwsgi
Installing collected packages: uwsgi
  Running setup.py develop for uwsgi
    Complete output from command /usr/bin/python -c "import setuptools, tokenize;__file__='/src/uwsgi/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" develop --no-deps:
    running develop
    running egg_info
    writing uWSGI.egg-info/PKG-INFO
    writing top-level names to uWSGI.egg-info/top_level.txt
    writing dependency_links to uWSGI.egg-info/dependency_links.txt
    warning: manifest_maker: standard file '-c' not found

    reading manifest file 'uWSGI.egg-info/SOURCES.txt'
    writing manifest file 'uWSGI.egg-info/SOURCES.txt'
    running build_ext
    using profile: buildconf/default.ini
    detected include path: ['/usr/include', '/usr/lib/gcc/x86_64-alpine-linux-musl/5.3.0/include']
    Patching "bin_name" to properly install_scripts dir
    detected CPU cores: 1
    configured CFLAGS: -O2 -I. -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -DUWSGI_HAS_IFADDRS -DUWSGI_LOCK_USE_MUTEX -DUWSGI_EVENT_USE_EPOLL -DUWSGI_EVENT_TIMER_USE_TIMERFD -DUWSGI_EVENT_FILEMONITOR_USE_INOTIFY -DUWSGI_VERSION="\"2.0.13\"" -DUWSGI_VERSION_BASE="2" -DUWSGI_VERSION_MAJOR="0" -DUWSGI_VERSION_MINOR="13" -DUWSGI_VERSION_REVISION="0" -DUWSGI_VERSION_CUSTOM="\"\"" -DUWSGI_YAML -DUWSGI_PLUGIN_DIR="\".\"" -DUWSGI_DECLARE_EMBEDDED_PLUGINS="UDEP(python);UDEP(gevent);UDEP(ping);UDEP(cache);UDEP(nagios);UDEP(rrdtool);UDEP(carbon);UDEP(rpc);UDEP(corerouter);UDEP(fastrouter);UDEP(http);UDEP(ugreen);UDEP(signal);UDEP(syslog);UDEP(rsyslog);UDEP(logsocket);UDEP(router_uwsgi);UDEP(router_redirect);UDEP(router_basicauth);UDEP(zergpool);UDEP(redislog);UDEP(mongodblog);UDEP(router_rewrite);UDEP(router_http);UDEP(logfile);UDEP(router_cache);UDEP(rawrouter);UDEP(router_static);UDEP(sslrouter);UDEP(spooler);UDEP(cheaper_busyness);UDEP(symcall);UDEP(transformation_tofile);UDEP(transformation_gzip);UDEP(transformation_chunked);UDEP(transformation_offload);UDEP(router_memcached);UDEP(router_redis);UDEP(router_hash);UDEP(router_expires);UDEP(router_metrics);UDEP(transformation_template);UDEP(stats_pusher_socket);" -DUWSGI_LOAD_EMBEDDED_PLUGINS="ULEP(python);ULEP(gevent);ULEP(ping);ULEP(cache);ULEP(nagios);ULEP(rrdtool);ULEP(carbon);ULEP(rpc);ULEP(corerouter);ULEP(fastrouter);ULEP(http);ULEP(ugreen);ULEP(signal);ULEP(syslog);ULEP(rsyslog);ULEP(logsocket);ULEP(router_uwsgi);ULEP(router_redirect);ULEP(router_basicauth);ULEP(zergpool);ULEP(redislog);ULEP(mongodblog);ULEP(router_rewrite);ULEP(router_http);ULEP(logfile);ULEP(router_cache);ULEP(rawrouter);ULEP(router_static);ULEP(sslrouter);ULEP(spooler);ULEP(cheaper_busyness);ULEP(symcall);ULEP(transformation_tofile);ULEP(transformation_gzip);ULEP(transformation_chunked);ULEP(transformation_offload);ULEP(router_memcached);ULEP(router_redis);ULEP(router_hash);ULEP(router_expires);ULEP(router_metrics);ULEP(transformation_template);ULEP(stats_pusher_socket);"core/utils.c: In function 'uwsgi_as_root':
    core/utils.c:344:7: error: implicit declaration of function 'unshare' [-Werror=implicit-function-declaration]
       if (unshare(uwsgi.unshare)) {
           ^
    core/utils.c:564:5: error: implicit declaration of function 'sigfillset' [-Werror=implicit-function-declaration]
         sigfillset(&smask);
         ^
    core/utils.c:565:5: error: implicit declaration of function 'sigprocmask' [-Werror=implicit-function-declaration]
         sigprocmask(SIG_BLOCK, &smask, NULL);
         ^
    core/utils.c:565:17: error: 'SIG_BLOCK' undeclared (first use in this function)
         sigprocmask(SIG_BLOCK, &smask, NULL);
                     ^
    core/utils.c:565:17: note: each undeclared identifier is reported only once for each function it appears in
    core/utils.c:586:7: error: implicit declaration of function 'chroot' [-Werror=implicit-function-declaration]
       if (chroot(uwsgi.chroot)) {
           ^
    core/utils.c:791:5: error: unknown type name 'ushort'
         ushort *array;
         ^
    core/utils.c:833:8: error: implicit declaration of function 'setgroups' [-Werror=implicit-function-declaration]
        if (setgroups(0, NULL)) {
            ^
    core/utils.c:848:8: error: implicit declaration of function 'initgroups' [-Werror=implicit-function-declaration]
        if (initgroups(uidname, uwsgi.gid)) {
            ^
    core/utils.c: In function 'uwsgi_resolve_ip':
    core/utils.c:1802:7: error: implicit declaration of function 'gethostbyname' [-Werror=implicit-function-declaration]
      he = gethostbyname(domain);
           ^
    core/utils.c:1802:5: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
      he = gethostbyname(domain);
         ^
    core/utils.c: In function 'uwsgi_unix_signal':
    core/utils.c:1936:19: error: storage size of 'sa' isn't known
      struct sigaction sa;
                       ^
    core/utils.c:1938:24: error: invalid application of 'sizeof' to incomplete type 'struct sigaction'
      memset(&sa, 0, sizeof(struct sigaction));
                            ^
    core/utils.c:1942:2: error: implicit declaration of function 'sigemptyset' [-Werror=implicit-function-declaration]
      sigemptyset(&sa.sa_mask);
      ^
    core/utils.c:1944:6: error: implicit declaration of function 'sigaction' [-Werror=implicit-function-declaration]
      if (sigaction(signum, &sa, NULL) < 0) {
          ^
    core/utils.c:1936:19: error: unused variable 'sa' [-Werror=unused-variable]
      struct sigaction sa;
                       ^
    In file included from core/utils.c:1:0:
    core/utils.c: In function 'uwsgi_list_has_num':
    ./uwsgi.h:140:47: error: implicit declaration of function 'strtok_r' [-Werror=implicit-function-declaration]
     #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                   ^
    core/utils.c:1953:2: note: in expansion of macro 'uwsgi_foreach_token'
      uwsgi_foreach_token(list2, ",", p, ctx) {
      ^
    ./uwsgi.h:140:46: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
     #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                  ^
    core/utils.c:1953:2: note: in expansion of macro 'uwsgi_foreach_token'
      uwsgi_foreach_token(list2, ",", p, ctx) {
      ^
    ./uwsgi.h:140:70: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
     #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                                          ^
    core/utils.c:1953:2: note: in expansion of macro 'uwsgi_foreach_token'
      uwsgi_foreach_token(list2, ",", p, ctx) {
      ^
    core/utils.c: In function 'uwsgi_list_has_str':
    ./uwsgi.h:140:46: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
     #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                  ^
    core/utils.c:1968:2: note: in expansion of macro 'uwsgi_foreach_token'
      uwsgi_foreach_token(list2, " ", p, ctx) {
      ^
    ./uwsgi.h:140:70: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
     #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                                          ^
    core/utils.c:1968:2: note: in expansion of macro 'uwsgi_foreach_token'
      uwsgi_foreach_token(list2, " ", p, ctx) {
      ^
    core/utils.c:1969:8: error: implicit declaration of function 'strcasecmp' [-Werror=implicit-function-declaration]
       if (!strcasecmp(p, str)) {
            ^
    core/utils.c: In function 'uwsgi_sig_pause':
    core/utils.c:2361:2: error: implicit declaration of function 'sigsuspend' [-Werror=implicit-function-declaration]
      sigsuspend(&mask);
      ^
    core/utils.c: In function 'uwsgi_run_command_putenv_and_wait':
    core/utils.c:2453:7: error: implicit declaration of function 'putenv' [-Werror=implicit-function-declaration]
       if (putenv(envs[i])) {
           ^
    In file included from core/utils.c:1:0:
    core/utils.c: In function 'uwsgi_build_unshare':
    ./uwsgi.h:140:46: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
     #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                  ^
    core/utils.c:2855:2: note: in expansion of macro 'uwsgi_foreach_token'
      uwsgi_foreach_token(list, ",", p, ctx) {
      ^
    ./uwsgi.h:140:70: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
     #define uwsgi_foreach_token(x, y, z, w) for(z=strtok_r(x, y, &w);z;z = strtok_r(NULL, y, &w))
                                                                          ^
    core/utils.c:2855:2: note: in expansion of macro 'uwsgi_foreach_token'
      uwsgi_foreach_token(list, ",", p, ctx) {
      ^
    core/utils.c: In function 'uwsgi_tmpfd':
    core/utils.c:3533:7: error: implicit declaration of function 'mkstemp' [-Werror=implicit-function-declaration]
      fd = mkstemp(template);
           ^
    core/utils.c: In function 'uwsgi_expand_path':
    core/utils.c:3615:7: error: implicit declaration of function 'realpath' [-Werror=implicit-function-declaration]
      if (!realpath(src, dst)) {
           ^
    core/utils.c: In function 'uwsgi_set_cpu_affinity':
    core/utils.c:3641:3: error: unknown type name 'cpu_set_t'
       cpu_set_t cpuset;
       ^
    core/utils.c:3646:3: error: implicit declaration of function 'CPU_ZERO' [-Werror=implicit-function-declaration]
       CPU_ZERO(&cpuset);
       ^
    core/utils.c:3651:4: error: implicit declaration of function 'CPU_SET' [-Werror=implicit-function-declaration]
        CPU_SET(base_cpu, &cpuset);
        ^
    core/utils.c:3662:7: error: implicit declaration of function 'sched_setaffinity' [-Werror=implicit-function-declaration]
       if (sched_setaffinity(0, sizeof(cpu_set_t), &cpuset)) {
           ^
    core/utils.c:3662:35: error: 'cpu_set_t' undeclared (first use in this function)
       if (sched_setaffinity(0, sizeof(cpu_set_t), &cpuset)) {
                                       ^
    core/utils.c: In function 'uwsgi_thread_run':
    core/utils.c:3782:2: error: implicit declaration of function 'pthread_sigmask' [-Werror=implicit-function-declaration]
      pthread_sigmask(SIG_BLOCK, &smask, NULL);
      ^
    core/utils.c:3782:18: error: 'SIG_BLOCK' undeclared (first use in this function)
      pthread_sigmask(SIG_BLOCK, &smask, NULL);
                      ^
    core/utils.c: In function 'uwsgi_envdir':
    core/utils.c:4349:8: error: implicit declaration of function 'unsetenv' [-Werror=implicit-function-declaration]
        if (unsetenv(de->d_name)) {
            ^
    core/utils.c:4380:7: error: implicit declaration of function 'setenv' [-Werror=implicit-function-declaration]
       if (setenv(de->d_name, content, 1)) {
           ^
    cc1: all warnings being treated as errors

    *** uWSGI compiling server core ***
    [gcc] core/utils.o

    ----------------------------------------
Command "/usr/bin/python -c "import setuptools, tokenize;__file__='/src/uwsgi/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" develop --no-deps" failed with error code 1 in /src/uwsgi/
The command '/bin/sh -c pip install -e git+git://github.com/unbit/uwsgi.git@muslfixes#egg=uwsgi' returned a non-zero code: 1
xrmx commented 8 years ago

@patrick91 @bodgit updated the muslfixes branch, if that works for you i'll merge it in the uwsgi-2,0 branch

patrick91 commented 8 years ago

@xrmx thanks, unfortunately I still have issues. The ugreen plugin won't compile (as noted here)

Here is the log:

Removing intermediate container ee310aa0a713
Step 5 : RUN pip install -e git+git://github.com/unbit/uwsgi.git@muslfixes#egg=uwsgi
 ---> Running in 5cdf837bb1f1
Obtaining uwsgi from git+git://github.com/unbit/uwsgi.git@muslfixes#egg=uwsgi
  Cloning git://github.com/unbit/uwsgi.git (to muslfixes) to /src/uwsgi
Installing collected packages: uwsgi
  Running setup.py develop for uwsgi
    Complete output from command /usr/bin/python -c "import setuptools, tokenize;__file__='/src/uwsgi/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" develop --no-deps:
    running develop
    running egg_info
    writing uWSGI.egg-info/PKG-INFO
    writing top-level names to uWSGI.egg-info/top_level.txt
    writing dependency_links to uWSGI.egg-info/dependency_links.txt
    warning: manifest_maker: standard file '-c' not found

    reading manifest file 'uWSGI.egg-info/SOURCES.txt'
    writing manifest file 'uWSGI.egg-info/SOURCES.txt'
    running build_ext
    using profile: buildconf/default.ini
    detected include path: ['/usr/include', '/usr/lib/gcc/x86_64-alpine-linux-musl/5.3.0/include']
    Patching "bin_name" to properly install_scripts dir
    detected CPU cores: 1
    configured CFLAGS: -O2 -I. -Wall -Werror -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fno-strict-aliasing -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -DUWSGI_HAS_IFADDRS -DUWSGI_LOCK_USE_MUTEX -DUWSGI_EVENT_USE_EPOLL -DUWSGI_EVENT_TIMER_USE_TIMERFD -DUWSGI_EVENT_FILEMONITOR_USE_INOTIFY -DUWSGI_VERSION="\"2.0.13\"" -DUWSGI_VERSION_BASE="2" -DUWSGI_VERSION_MAJOR="0" -DUWSGI_VERSION_MINOR="13" -DUWSGI_VERSION_REVISION="0" -DUWSGI_VERSION_CUSTOM="\"\"" -DUWSGI_YAML -DUWSGI_PLUGIN_DIR="\".\"" -DUWSGI_DECLARE_EMBEDDED_PLUGINS="UDEP(python);UDEP(gevent);UDEP(ping);UDEP(cache);UDEP(nagios);UDEP(rrdtool);UDEP(carbon);UDEP(rpc);UDEP(corerouter);UDEP(fastrouter);UDEP(http);UDEP(ugreen);UDEP(signal);UDEP(syslog);UDEP(rsyslog);UDEP(logsocket);UDEP(router_uwsgi);UDEP(router_redirect);UDEP(router_basicauth);UDEP(zergpool);UDEP(redislog);UDEP(mongodblog);UDEP(router_rewrite);UDEP(router_http);UDEP(logfile);UDEP(router_cache);UDEP(rawrouter);UDEP(router_static);UDEP(sslrouter);UDEP(spooler);UDEP(cheaper_busyness);UDEP(symcall);UDEP(transformation_tofile);UDEP(transformation_gzip);UDEP(transformation_chunked);UDEP(transformation_offload);UDEP(router_memcached);UDEP(router_redis);UDEP(router_hash);UDEP(router_expires);UDEP(router_metrics);UDEP(transformation_template);UDEP(stats_pusher_socket);" -DUWSGI_LOAD_EMBEDDED_PLUGINS="ULEP(python);ULEP(gevent);ULEP(ping);ULEP(cache);ULEP(nagios);ULEP(rrdtool);ULEP(carbon);ULEP(rpc);ULEP(corerouter);ULEP(fastrouter);ULEP(http);ULEP(ugreen);ULEP(signal);ULEP(syslog);ULEP(rsyslog);ULEP(logsocket);ULEP(router_uwsgi);ULEP(router_redirect);ULEP(router_basicauth);ULEP(zergpool);ULEP(redislog);ULEP(mongodblog);ULEP(router_rewrite);ULEP(router_http);ULEP(logfile);ULEP(router_cache);ULEP(rawrouter);ULEP(router_static);ULEP(sslrouter);ULEP(spooler);ULEP(cheaper_busyness);ULEP(symcall);ULEP(transformation_tofile);ULEP(transformation_gzip);ULEP(transformation_chunked);ULEP(transformation_offload);ULEP(router_memcached);ULEP(router_redis);ULEP(router_hash);ULEP(router_expires);ULEP(router_metrics);ULEP(transformation_template);ULEP(stats_pusher_socket);"
    *** uWSGI compiling server core ***
    [gcc] core/utils.o
    [gcc] core/protocol.o
    [gcc] core/socket.o
    [gcc] core/logging.o
    [gcc] core/master.o
    [gcc] core/master_utils.o
    [gcc] core/emperor.o
    [gcc] core/notify.o
    [gcc] core/mule.o
    [gcc] core/subscription.o
    [gcc] core/stats.o
    [gcc] core/sendfile.o
    [gcc] core/async.o
    [gcc] core/master_checks.o
    [gcc] core/fifo.o
    [gcc] core/offload.o
    [gcc] core/io.o
    [gcc] core/static.o
    [gcc] core/websockets.o
    [gcc] core/spooler.o
    [gcc] core/snmp.o
    [gcc] core/exceptions.o
    [gcc] core/config.o
    [gcc] core/setup_utils.o
    [gcc] core/clock.o
    [gcc] core/init.o
    [gcc] core/buffer.o
    [gcc] core/reader.o
    [gcc] core/writer.o
    [gcc] core/alarm.o
    [gcc] core/cron.o
    [gcc] core/hooks.o
    [gcc] core/plugins.o
    [gcc] core/lock.o
    [gcc] core/cache.o
    [gcc] core/daemons.o
    [gcc] core/errors.o
    [gcc] core/hash.o
    [gcc] core/master_events.o
    [gcc] core/chunked.o
    [gcc] core/queue.o
    [gcc] core/event.o
    [gcc] core/signal.o
    [gcc] core/strings.o
    [gcc] core/progress.o
    [gcc] core/timebomb.o
    [gcc] core/ini.o
    [gcc] core/fsmon.o
    [gcc] core/mount.o
    [gcc] core/metrics.o
    [gcc] core/plugins_builder.o
    [gcc] core/sharedarea.o
    [gcc] core/rpc.o
    [gcc] core/gateway.o
    [gcc] core/loop.o
    [gcc] core/cookie.o
    [gcc] core/querystring.o
    [gcc] core/rb_timers.o
    [gcc] core/transformations.o
    [gcc] core/uwsgi.o
    [gcc] proto/base.o
    [gcc] proto/uwsgi.o
    [gcc] proto/http.o
    [gcc] proto/fastcgi.o
    [gcc] proto/scgi.o
    [gcc] proto/puwsgi.o
    [gcc] lib/linux_ns.o
    [gcc] core/yaml.o
    [gcc] core/dot_h.o
    [gcc] core/config_py.o
    *** uWSGI compiling embedded plugins ***
    [gcc] plugins/python/python_plugin.o
    [gcc] plugins/python/pyutils.o
    [gcc] plugins/python/pyloader.o
    [gcc] plugins/python/wsgi_handlers.o
    [gcc] plugins/python/wsgi_headers.o
    [gcc] plugins/python/wsgi_subhandler.o
    [gcc] plugins/python/web3_subhandler.o
    [gcc] plugins/python/pump_subhandler.o
    [gcc] plugins/python/gil.o
    [gcc] plugins/python/uwsgi_pymodule.o
    [gcc] plugins/python/profiler.o
    [gcc] plugins/python/symimporter.o
    [gcc] plugins/python/tracebacker.o
    [gcc] plugins/python/raw.o
    [gcc] plugins/gevent/gevent.o
    [gcc] plugins/gevent/hooks.o
    [gcc] plugins/ping/ping_plugin.o
    [gcc] plugins/cache/cache.o
    [gcc] plugins/nagios/nagios.o
    [gcc] plugins/rrdtool/rrdtool.o
    [gcc] plugins/carbon/carbon.o
    [gcc] plugins/rpc/rpc_plugin.o
    [gcc] plugins/corerouter/cr_common.o
    [gcc] plugins/corerouter/cr_map.o
    [gcc] plugins/corerouter/corerouter.o
    [gcc] plugins/fastrouter/fastrouter.o
    [gcc] plugins/http/http.o
    [gcc] plugins/http/keepalive.o
    [gcc] plugins/http/https.o
    [gcc] plugins/http/spdy3.o
    [gcc] plugins/ugreen/ugreen.o
    [gcc] plugins/signal/signal_plugin.o
    [gcc] plugins/syslog/syslog_plugin.o
    [gcc] plugins/rsyslog/rsyslog_plugin.o
    [gcc] plugins/logsocket/logsocket_plugin.o
    [gcc] plugins/router_uwsgi/router_uwsgi.o
    [gcc] plugins/router_redirect/router_redirect.o
    [gcc] plugins/router_basicauth/router_basicauth.o
    [gcc] plugins/zergpool/zergpool.o
    [gcc] plugins/redislog/redislog_plugin.o
    [gcc] plugins/mongodblog/mongodblog_plugin.o
    [gcc] plugins/router_rewrite/router_rewrite.o
    [gcc] plugins/router_http/router_http.o
    [gcc] plugins/logfile/logfile.o
    [gcc] plugins/router_cache/router_cache.o
    [gcc] plugins/rawrouter/rawrouter.o
    [gcc] plugins/router_static/router_static.o
    [gcc] plugins/sslrouter/sslrouter.o
    [gcc] plugins/spooler/spooler_plugin.o
    [gcc] plugins/cheaper_busyness/cheaper_busyness.o
    [gcc] plugins/symcall/symcall_plugin.o
    [gcc] plugins/transformation_tofile/tofile.o
    [gcc] plugins/transformation_gzip/gzip.o
    [gcc] plugins/transformation_chunked/chunked.o
    [gcc] plugins/transformation_offload/offload.o
    [gcc] plugins/router_memcached/router_memcached.o
    [gcc] plugins/router_redis/router_redis.o
    [gcc] plugins/router_hash/router_hash.o
    [gcc] plugins/router_expires/expires.o
    [gcc] plugins/router_metrics/plugin.o
    [gcc] plugins/transformation_template/tt.o
    [gcc] plugins/stats_pusher_socket/plugin.o
    *** uWSGI linking ***
    gcc -o /usr/bin/uwsgi -L/usr/lib -Wl,-rpath,/usr/lib core/utils.o core/protocol.o core/socket.o core/logging.o core/master.o core/master_utils.o core/emperor.o core/notify.o core/mule.o core/subscription.o core/stats.o core/sendfile.o core/async.o core/master_checks.o core/fifo.o core/offload.o core/io.o core/static.o core/websockets.o core/spooler.o core/snmp.o core/exceptions.o core/config.o core/setup_utils.o core/clock.o core/init.o core/buffer.o core/reader.o core/writer.o core/alarm.o core/cron.o core/hooks.o core/plugins.o core/lock.o core/cache.o core/daemons.o core/errors.o core/hash.o core/master_events.o core/chunked.o core/queue.o core/event.o core/signal.o core/strings.o core/progress.o core/timebomb.o core/ini.o core/fsmon.o core/mount.o core/metrics.o core/plugins_builder.o core/sharedarea.o core/rpc.o core/gateway.o core/loop.o core/cookie.o core/querystring.o core/rb_timers.o core/transformations.o core/uwsgi.o proto/base.o proto/uwsgi.o proto/http.o proto/fastcgi.o proto/scgi.o proto/puwsgi.o lib/linux_ns.o core/yaml.o core/dot_h.o core/config_py.o plugins/python/python_plugin.o plugins/python/pyutils.o plugins/python/pyloader.o plugins/python/wsgi_handlers.o plugins/python/wsgi_headers.o plugins/python/wsgi_subhandler.o plugins/python/web3_subhandler.o plugins/python/pump_subhandler.o plugins/python/gil.o plugins/python/uwsgi_pymodule.o plugins/python/profiler.o plugins/python/symimporter.o plugins/python/tracebacker.o plugins/python/raw.o plugins/gevent/gevent.o plugins/gevent/hooks.o plugins/ping/ping_plugin.o plugins/cache/cache.o plugins/nagios/nagios.o plugins/rrdtool/rrdtool.o plugins/carbon/carbon.o plugins/rpc/rpc_plugin.o plugins/corerouter/cr_common.o plugins/corerouter/cr_map.o plugins/corerouter/corerouter.o plugins/fastrouter/fastrouter.o plugins/http/http.o plugins/http/keepalive.o plugins/http/https.o plugins/http/spdy3.o plugins/ugreen/ugreen.o plugins/signal/signal_plugin.o plugins/syslog/syslog_plugin.o plugins/rsyslog/rsyslog_plugin.o plugins/logsocket/logsocket_plugin.o plugins/router_uwsgi/router_uwsgi.o plugins/router_redirect/router_redirect.o plugins/router_basicauth/router_basicauth.o plugins/zergpool/zergpool.o plugins/redislog/redislog_plugin.o plugins/mongodblog/mongodblog_plugin.o plugins/router_rewrite/router_rewrite.o plugins/router_http/router_http.o plugins/logfile/logfile.o plugins/router_cache/router_cache.o plugins/rawrouter/rawrouter.o plugins/router_static/router_static.o plugins/sslrouter/sslrouter.o plugins/spooler/spooler_plugin.o plugins/cheaper_busyness/cheaper_busyness.o plugins/symcall/symcall_plugin.o plugins/transformation_tofile/tofile.o plugins/transformation_gzip/gzip.o plugins/transformation_chunked/chunked.o plugins/transformation_offload/offload.o plugins/router_memcached/router_memcached.o plugins/router_redis/router_redis.o plugins/router_hash/router_hash.o plugins/router_expires/expires.o plugins/router_metrics/plugin.o plugins/transformation_template/tt.o plugins/stats_pusher_socket/plugin.o -lpthread -lm -rdynamic -ldl -ldl -lm -lpython2.7 -lcryptplugins/ugreen/ugreen.o: In function `u_green_init':
    ugreen.c:(.text+0xca): undefined reference to `getcontext'
    plugins/ugreen/ugreen.o: In function `u_green_schedule_to_req':
    ugreen.c:(.text+0x2db): undefined reference to `swapcontext'
    ugreen.c:(.text+0x329): undefined reference to `makecontext'
    plugins/ugreen/ugreen.o: In function `u_green_schedule_to_main':
    ugreen.c:(.text+0x39a): undefined reference to `swapcontext'
    collect2: error: ld returned 1 exit status

    *** error linking uWSGI ***

    ----------------------------------------
Command "/usr/bin/python -c "import setuptools, tokenize;__file__='/src/uwsgi/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" develop --no-deps" failed with error code 1 in /src/uwsgi/
The command '/bin/sh -c pip install -e git+git://github.com/unbit/uwsgi.git@muslfixes#egg=uwsgi' returned a non-zero code: 1
patrick91 commented 8 years ago

Same error with the master branch :)

xrmx commented 8 years ago

@patrick91 that was the expected outout, thanks for checking.

xrmx commented 8 years ago

@patrick91 could you please check this branch? https://github.com/xrmx/uwsgi/tree/configurecheck No need to dump all the output here, just cut the errors please :)

patrick91 commented 8 years ago

It worked fine :)

🍕  /tmp/uwsgi-alpine docker build -t uwsgi .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM alpine:3.3
 ---> 70c557e50ed6
Step 2 : RUN apk add --no-cache python python-dev gcc musl-dev linux-headers
 ---> Using cache
 ---> c550f69a9813
Step 3 : RUN apk add --no-cache --virtual=build-dependencies wget ca-certificates &&     wget "https://bootstrap.pypa.io/get-pip.py" -O /dev/stdout | python
 ---> Using cache
 ---> 56adad094f05
Step 4 : RUN apk add --no-cache git
 ---> Using cache
 ---> 9ceefe34e321
Step 5 : RUN pip install -e git+git://github.com/xrmx/uwsgi.git@configurecheck#egg=uwsgi
 ---> Running in d3b962bd8a84
Obtaining uwsgi from git+git://github.com/xrmx/uwsgi.git@configurecheck#egg=uwsgi
  Cloning git://github.com/xrmx/uwsgi.git (to configurecheck) to /src/uwsgi

Installing collected packages: uwsgi
  Running setup.py develop for uwsgi
Successfully installed uwsgi
 ---> dee68b37e239
Removing intermediate container d3b962bd8a84
Successfully built dee68b37e239
xrmx commented 8 years ago

Cool, thanks for checking!

xrmx commented 8 years ago

FYI I've backported all musl related fixed to uwsgi-2.0 branch.

patrick91 commented 8 years ago

Thank you! I confirm that now it works with:

RUN pip install -e git+git://github.com/unbit/uwsgi.git#egg=uwsgi

I'll check it again tomorrow to see if there's any issue at runtime.

bodgit commented 8 years ago

I've just tried pip install'ing master and I get the following error:

    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/usr/src/app/src/uwsgi/setup.py", line 109, in <module>
        distclass=uWSGIDistribution,
      File "/usr/local/lib/python3.5/distutils/core.py", line 148, in setup
        dist.run_commands()
      File "/usr/local/lib/python3.5/distutils/dist.py", line 955, in run_commands
        self.run_command(cmd)
      File "/usr/local/lib/python3.5/distutils/dist.py", line 974, in run_command
        cmd_obj.run()
      File "/usr/local/lib/python3.5/site-packages/setuptools/command/develop.py", line 32, in run
        self.install_for_development()
      File "/usr/local/lib/python3.5/site-packages/setuptools/command/develop.py", line 117, in install_for_development
        self.run_command('build_ext')
      File "/usr/local/lib/python3.5/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/local/lib/python3.5/distutils/dist.py", line 974, in run_command
        cmd_obj.run()
      File "/usr/src/app/src/uwsgi/setup.py", line 62, in run
        uc.build_uwsgi(conf)
      File "/usr/src/app/src/uwsgi/uwsgiconfig.py", line 266, in build_uwsgi
        gcc_list, cflags, ldflags, libs = uc.get_gcll()
      File "/usr/src/app/src/uwsgi/uwsgiconfig.py", line 883, in get_gcll
        report['ucontext'] = has_usable_ucontext()
      File "/usr/src/app/src/uwsgi/uwsgiconfig.py", line 187, in has_usable_ucontext
        }""")
      File "/usr/src/app/src/uwsgi/uwsgiconfig.py", line 167, in test_snippet
        p.communicate(snippet)
      File "/usr/local/lib/python3.5/subprocess.py", line 1068, in communicate
        stdout, stderr = self._communicate(input, endtime, timeout)
      File "/usr/local/lib/python3.5/subprocess.py", line 1687, in _communicate
        input_view = memoryview(self._input)
    TypeError: memoryview: a bytes-like object is required, not 'str'
    using profile: buildconf/default.ini
    detected include path: ['/usr/include/fortify', '/usr/include', '/usr/lib/gcc/x86_64-alpine-linux-musl/5.3.0/include']
    Patching "bin_name" to properly install_scripts dir

I'm guessing it's a Python 2.x/3.x thing.

xrmx commented 8 years ago

@bodgit indeed, making the snippet a byte string by prefixing it with b should do the trick.

bodgit commented 8 years ago

Yes, just tested and the following appears to work for me:

diff --git a/uwsgiconfig.py b/uwsgiconfig.py
index 772fefe..baa9e01 100644
--- a/uwsgiconfig.py
+++ b/uwsgiconfig.py
@@ -188,7 +188,7 @@ def has_usable_ucontext():
     if uwsgi_cpu[0:3] == 'arm':
         return False
     # check for ucontext.h functions definitions, musl has only declarations
-    return test_snippet("""#include <ucontext.h>
+    return test_snippet(b"""#include <ucontext.h>
 int main()
 {
        ucontext_t uc;
bodgit commented 8 years ago

Not sure how far back you go with support for Python versions, but this notation works with 2.6 but doesn't work on 2.4.

xrmx commented 8 years ago

@bodgit indeed, thanks for noticing. We may want to cast to a byte string in python3 then. Still running python 2.4 in 2016 is a crime.

stavxyz commented 8 years ago

@xrmx @bodgit https://github.com/unbit/uwsgi/pull/1215

bodgit commented 8 years ago

Confirmed that now works for me on 3.x.

andrekeller commented 8 years ago

When I build uwsgi with pcre-dev installed (i.e building with internal routing support) this still fails:

pip3 install -e git+git://github.com/unbit/uwsgi.git#egg=uwsgi

    plugins/router_basicauth/router_basicauth.c: In function 'htpasswd_check':
    plugins/router_basicauth/router_basicauth.c:73:5: error: 'struct crypt_data' has no member named 'current_salt'
       cd.current_salt[0] = ~cpwd[0];
         ^

Anybody else having this problem?

xrmx commented 8 years ago

@andrekeller Thanks for reporting! care to open another issue please? Looks like we may not poke with struct crypt_data fields on musl.

andrekeller commented 8 years ago

@xrmx done, #1220