Skip to content

build_modules script #1

@acejam

Description

@acejam

Hey,

I followed your "Compiling python with emscripten" wiki page exactly, step-by-step. I'm 95% of the way there trying to compile Python 2.7.5. I have tried Python 2.7.4 as well and I get the exact same errors, so I suspect I'm just missing a system package or library in general. Building the _socket module seems to be failing. Did you ever come across this issue?

Stack trace from a 2.7.5 modules build:

Building _socket...
emcc -fPIC -fno-strict-aliasing -I.. -IInclude -I ../Include -I../Modules/expat -Wstrict-prototypes ../Modules/socketmodule.c -o socketmodule.c.o
clang: warning: argument unused during compilation: '-nostdinc++'
In file included from ../Modules/socketmodule.c:355:
../Modules/getaddrinfo.c:267:22: error: use of undeclared identifier 'PF_UNSPEC'
pai->ai_family = PF_UNSPEC;
^
../Modules/getaddrinfo.c:286:14: error: use of undeclared identifier 'PF_UNSPEC'
case PF_UNSPEC:
^
../Modules/getaddrinfo.c:362:23: warning: implicit declaration of function 'getservbyname' is invalid
in C99 [-Wimplicit-function-declaration]
if ((sp = getservbyname(servname, proto)) == NULL)
^
../Modules/getaddrinfo.c:362:21: warning: incompatible integer to pointer conversion assigning to
'struct servent *' from 'int' [-Wint-conversion]
if ((sp = getservbyname(servname, proto)) == NULL)
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../Modules/getaddrinfo.c:364:22: error: incomplete definition of type 'struct servent'
port = sp->s_port;
~~^
../Modules/getaddrinfo.c:344:20: note: forward declaration of 'struct servent'
struct servent *sp;
^
../Modules/getaddrinfo.c:366:30: error: incomplete definition of type 'struct servent'
if (strcmp(sp->s_proto, "udp") == 0) {
~~^
../Modules/getaddrinfo.c:344:20: note: forward declaration of 'struct servent'
struct servent *sp;
^
../Modules/getaddrinfo.c:369:37: error: incomplete definition of type 'struct servent'
} else if (strcmp(sp->s_proto, "tcp") == 0) {
~~^
../Modules/getaddrinfo.c:344:20: note: forward declaration of 'struct servent'
struct servent *sp;
^
../Modules/getaddrinfo.c:387:37: error: use of undeclared identifier 'PF_UNSPEC'
if (!(pai->ai_family == PF_UNSPEC
^
../Modules/getaddrinfo.c:427:25: error: use of undeclared identifier 'IN_CLASSA_NSHIFT'
v4a >>= IN_CLASSA_NSHIFT;
^
../Modules/getaddrinfo.c:441:35: error: use of undeclared identifier 'PF_UNSPEC'
pai->ai_family == PF_UNSPEC) {
^
../Modules/socketmodule.c:900:32: error: use of undeclared identifier 'INADDR_BROADCAST'
sin->sin_addr.s_addr = INADDR_BROADCAST;
^
../Modules/socketmodule.c:965:9: error: use of undeclared identifier 'NI_NUMERICHOST'
NI_NUMERICHOST);
^
../Modules/socketmodule.c:1222:36: error: invalid application of 'sizeof' to an incomplete type
'char []'
sizeof(addr->sa_data));
^~~~~~~~~~~~~~~
../Modules/socketmodule.c:1055:10: error: duplicate case value '1'
case AF_UNIX:
^
/vagrant/python-sandbox/emscripten/system/include/sys/socket.h:18:17: note: expanded from macro
'AF_UNIX'

define AF_UNIX PF_UNIX

            ^

/vagrant/python-sandbox/emscripten/system/include/sys/socket.h:15:17: note: expanded from macro
'PF_UNIX'

define PF_UNIX PF_LOCAL

            ^

/vagrant/python-sandbox/emscripten/system/include/sys/socket.h:14:18: note: expanded from macro
'PF_LOCAL'

define PF_LOCAL 1

             ^

../Modules/socketmodule.c:1041:10: note: previous case defined here
case AF_INET:
^
/vagrant/python-sandbox/emscripten/system/include/sys/socket.h:41:17: note: expanded from macro
'AF_INET'

define AF_INET 1

            ^

../Modules/socketmodule.c:1304:10: error: duplicate case value '1'
case AF_INET:
^
/vagrant/python-sandbox/emscripten/system/include/sys/socket.h:41:17: note: expanded from macro
'AF_INET'

define AF_INET 1

            ^

../Modules/socketmodule.c:1240:10: note: previous case defined here
case AF_UNIX:
^
/vagrant/python-sandbox/emscripten/system/include/sys/socket.h:18:17: note: expanded from macro
'AF_UNIX'

define AF_UNIX PF_UNIX

            ^

/vagrant/python-sandbox/emscripten/system/include/sys/socket.h:15:17: note: expanded from macro
'PF_UNIX'

define PF_UNIX PF_LOCAL

            ^

/vagrant/python-sandbox/emscripten/system/include/sys/socket.h:14:18: note: expanded from macro
'PF_LOCAL'

define PF_LOCAL 1

             ^

../Modules/socketmodule.c:1622:10: error: duplicate case value '1'
case AF_INET:
^
/vagrant/python-sandbox/emscripten/system/include/sys/socket.h:41:17: note: expanded from macro
'AF_INET'

define AF_INET 1

            ^

../Modules/socketmodule.c:1608:10: note: previous case defined here
case AF_UNIX:
^
/vagrant/python-sandbox/emscripten/system/include/sys/socket.h:18:17: note: expanded from macro
'AF_UNIX'

define AF_UNIX PF_UNIX

            ^

/vagrant/python-sandbox/emscripten/system/include/sys/socket.h:15:17: note: expanded from macro
'PF_UNIX'

define PF_UNIX PF_LOCAL

            ^

/vagrant/python-sandbox/emscripten/system/include/sys/socket.h:14:18: note: expanded from macro
'PF_LOCAL'

define PF_LOCAL 1

             ^

../Modules/socketmodule.c:3601:8: warning: incompatible integer to pointer conversion assigning to
'struct servent *' from 'int' [-Wint-conversion]
sp = getservbyname(name, proto);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~
../Modules/socketmodule.c:3607:42: error: incomplete definition of type 'struct servent'
return PyInt_FromLong((long) ntohs(sp->s_port));
~~^
../Modules/socketmodule.c:3597:12: note: forward declaration of 'struct servent'
struct servent *sp;
^
../Modules/socketmodule.c:3638:10: warning: implicit declaration of function 'getservbyport' is invalid
in C99 [-Wimplicit-function-declaration]
sp = getservbyport(htons((short)port), proto);
^
../Modules/socketmodule.c:3638:8: warning: incompatible integer to pointer conversion assigning to
'struct servent *' from 'int' [-Wint-conversion]
sp = getservbyport(htons((short)port), proto);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../Modules/socketmodule.c:3644:34: error: incomplete definition of type 'struct servent'
return PyString_FromString(sp->s_name);
~~^
../Modules/socketmodule.c:3628:12: note: forward declaration of 'struct servent'
struct servent *sp;
^
../Modules/socketmodule.c:3672:10: warning: implicit declaration of function 'getprotobyname' is
invalid in C99 [-Wimplicit-function-declaration]
sp = getprotobyname(name);
^
../Modules/socketmodule.c:3672:8: warning: incompatible integer to pointer conversion assigning to
'struct protoent *' from 'int' [-Wint-conversion]
sp = getprotobyname(name);
^ ~~~~~~~~~~~~~~~~~~~~
../Modules/socketmodule.c:3678:36: error: incomplete definition of type 'struct protoent'
return PyInt_FromLong((long) sp->p_proto);
~~^
../Modules/socketmodule.c:3663:12: note: forward declaration of 'struct protoent'
struct protoent *sp;
^
../Modules/socketmodule.c:3948:28: warning: incompatible pointer types passing 'struct in_addr *' to
parameter of type 'struct in_addr *' [-Wincompatible-pointer-types]
if (inet_aton(ip_addr, &buf))
^~~~
/vagrant/python-sandbox/emscripten/system/include/net/arpa/inet.h:18:47: note: passing argument to
parameter 'addr' here
int inet_aton(const char *cp, struct in_addr *addr);
^
../Modules/socketmodule.c:4012:42: error: argument type 'struct in_addr' is incomplete
return PyString_FromString(inet_ntoa(packed_addr));
^~~~~~~~~~~
/vagrant/python-sandbox/emscripten/system/include/net/arpa/inet.h:19:24: note: forward declaration of
'struct in_addr'
char *inet_ntoa(struct in_addr in);
^
8 warnings and 18 errors generated.
ERROR emcc: compiler frontend failed to generate LLVM bitcode, halting

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions