Giter VIP home page Giter VIP logo

Comments (46)

saghul avatar saghul commented on August 11, 2024

I don't have a Windows machine here right now, can you please try the following? Replace this line: https://github.com/saghul/pyuv/blob/master/setup_libuv.py#L119 with:

exec_process(b'cmd.exe /C vcbuild.bat release', cwd=self.libuv_dir, env=env, shell=True)

and this line: https://github.com/saghul/pyuv/blob/master/setup_libuv.py#L131 with

exec_process(b'cmd.exe /C vcbuild.bat clean', cwd=self.libuv_dir, shell=True)

from pyuv.

saghul avatar saghul commented on August 11, 2024

Basically it's just adding the "b" in front, thus making it a bytes object which does support the buffer API.

from pyuv.

pfmoore avatar pfmoore commented on August 11, 2024

Fixing exec_command is messier than that. Making the command a bytes object just messes up stuff elsewhere :-( I don't have a complete fix, but I did manage to hack it to tell me what's really wrong, which is that vcbuild.bat isn't present in Visual Studio 2010, which is used for Python 3.3.

It's not at all obvious to me how to fix the build process for libuv to use VS2010, so I can't really take this much further. And I'm not sure how helpful it would be to try to properly address the various bytes/string issues in exec_command if the build is just going to fail anyway...

from pyuv.

saghul avatar saghul commented on August 11, 2024

Fixing exec_command is messier than that. Making the command a bytes object just messes up stuff elsewhere :-( I don't have a complete fix, but I did manage to hack it to tell me what's really wrong, which is that vcbuild.bat isn't present in Visual Studio 2010, which is used for Python 3.3.

vcbuild.bat is included in libuv, it's not taking it from the system. Or do you mean other vcbuild.bat? Can you please paste the output of the command when it failed? You can add silent=False to the exec_process call to see the full output.

It's not at all obvious to me how to fix the build process for libuv to use VS2010, so I can't really take this much further. And I'm not sure how helpful it would be to try to properly address the various bytes/string issues in exec_command if the build is just going to fail anyway...

It will try to use different VS2010 and it it's not available fallback to 2008, so if you have 2010 installed you should be fine.

from pyuv.

pfmoore avatar pfmoore commented on August 11, 2024

On 6 February 2013 18:15, Saúl Ibarra Corretgé [email protected]:

vcbuild.bat is included in libuv, it's not taking it from the system. Or
do you mean other vcbuild.bat?
Can you please paste the output of the command when it failed? You can
add silent=False to the
exec_process call to see the full output.

My apologies - I was misremembering the VC command names.

I'll try to set up a proper test in the next few days. A big part of the
problem is likely to be that I have a fairly unusual build environment - I
run Powershell as my main shell, and don't have Visual C in my PATH. This
does not harm standard distutils, as it does not rely on cmd.exe
functionality, and it gets the location of Visual C from the registry, but
it is prone to cause problems for more complex build setups.

I'll try two approaches to isolate the problem - I will run in my normal
environment adding silent=False and working round the str/bytes issues as
above, and I'll also set up a more conventional build environment (VC on
the PATH using cmd.exe) and see how that works. My build environment is on
a different system, though, so it may take me a couple of days to report
back.

from pyuv.

saghul avatar saghul commented on August 11, 2024

I see. I'll try to setup a test environment as well. Hopefully we can get to the bottom of this :-)

from pyuv.

saghul avatar saghul commented on August 11, 2024

You may want to hold the testing for now. I managed to get an environment for this, and things are a mess, to say the least. libuv uses gyp to generate the build files, but gyp itself is written in Python but it doesn't support Python 3. I managed to get around that by manually modifying some files, bus VS2010 seems to be very picky about variable declaration and initialization, I'll fix this and drop a line around here once it's done.

from pyuv.

saghul avatar saghul commented on August 11, 2024

Ok, I managed to get it working, sort of. pyuv compiles, but you'll need to have Python 2 installed and modify vcbuild.bat from deps/libuv to use it, in order for GYP to work. Yes, it's a mess but right now I don't know a better solution...

from pyuv.

saghul avatar saghul commented on August 11, 2024

Hum, I guess I could add a patch only for Windows and if Python 3 is used, but the path would be hardcoded to C:\Python27\python.exe

from pyuv.

schlamar avatar schlamar commented on August 11, 2024

I would say this patch is fine for developer releases, while for a stable release you could include the already generated project files for VS 2008 and VS 2010 and just pick the right one depending on the interpreter.

from pyuv.

saghul avatar saghul commented on August 11, 2024

The problem is that GYP doesn't generate generic project files, they are either Debug or Release and arch specific.

Ideally libuv (or pyuv) should contain a VS project file to avoid using GYP altogether, since it's a no-go on Python 3 at the moment... :-S

from pyuv.

schlamar avatar schlamar commented on August 11, 2024

@pfmoore The bytes/string issue should be fixed by #82 so you should get a proper error message from executing vcbuild.bat.

from pyuv.

schlamar avatar schlamar commented on August 11, 2024

Update: The build succeeds if python in PATH is pointing to 2.6 or 2.7 and setup.py is executed with a Python 3 version.

from pyuv.

schlamar avatar schlamar commented on August 11, 2024

I made an upstream report for this: joyent/libuv#723

from pyuv.

saghul avatar saghul commented on August 11, 2024

Great! I added some feedback there :-)

from pyuv.

saghul avatar saghul commented on August 11, 2024

Providing a PYTHON env variable as an override and setting it to an appropriate value from setup_libuv.py seems like the way to go. Are you willing to provide such a patch for libuv? Otherwise I'll add it to my TODO list :-)

from pyuv.

schlamar avatar schlamar commented on August 11, 2024

joyent/libuv#725

from pyuv.

saghul avatar saghul commented on August 11, 2024

Awesome!

from pyuv.

saghul avatar saghul commented on August 11, 2024

It landed on libuv master, great!

from pyuv.

saghul avatar saghul commented on August 11, 2024

Not to put any pressure or anything :-) but are you planning to send a pull request with a fix for this? Otherwise I'll work on the fix myself. I thought I'd ask, since you have been doing some great work on the Windows side recently and I want to avoid doing duplicated work.

from pyuv.

schlamar avatar schlamar commented on August 11, 2024

What do you even propose as solution? :)

from pyuv.

saghul avatar saghul commented on August 11, 2024

Check if %SYSTEMDRIVE%\Python26\python.exe or %SYSTEMDRIVE%\Python27\python.exe exist and if so set the PYTHON env variable, else raise an exception asking the user to either export the PYTHON env variable or install Python 2.

from pyuv.

schlamar avatar schlamar commented on August 11, 2024

Alright, I will look into it tomorrow. In the meantime you could upgrade libuv so PYTHON will be understood :)

from pyuv.

saghul avatar saghul commented on August 11, 2024

Done in 2e5be78, all yours ;-)

from pyuv.

pfmoore avatar pfmoore commented on August 11, 2024

Still not working for me (Python 3.3, with PYTHON set to the directory of a Python 2.7 interpreter)

PS 09:23 D:\Work\Scratch\pyuv
>$env:PYTHON="D:\Apps\Python27"
PS 09:24 D:\Work\Scratch\pyuv
>D:\Apps\Python33\python.exe .\setup.py build
running build
running build_ext
libuv needs to be compiled.
Building libuv...
building 'pyuv' extension
creating build
creating build\temp.win-amd64-3.3
creating build\temp.win-amd64-3.3\Release
creating build\temp.win-amd64-3.3\Release\src
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -DMODULE_VERSION=0.9.7.dev -DLIBUV_REVISION=85124d7 -ID:\Apps\Python33\include
-ID:\Apps\Python33\include -Ideps\libuv\include /Tcsrc/pyuv.c /Fobuild\temp.win-amd64-3.3\Release\src/pyuv.obj
pyuv.c
d:\work\scratch\pyuv\src\pyuv.h(536) : warning C4244: '=' : conversion from 'Py_ssize_t' to 'int', possible loss of data
d:\work\scratch\pyuv\src\pyuv.h(565) : warning C4244: '=' : conversion from 'Py_ssize_t' to 'ULONG', possible loss of data
d:\work\scratch\pyuv\src\stream.c(336) : warning C4244: 'function' : conversion from 'Py_ssize_t' to 'unsigned int', possible loss of data
d:\work\scratch\pyuv\src\pipe.c(373) : warning C4244: 'function' : conversion from 'Py_ssize_t' to 'unsigned int', possible loss of data
d:\work\scratch\pyuv\src\udp.c(282) : warning C4244: 'function' : conversion from 'Py_ssize_t' to 'unsigned int', possible loss of data
d:\work\scratch\pyuv\src\fs.c(950) : warning C4244: '=' : conversion from 'ssize_t' to 'int', possible loss of data
d:\work\scratch\pyuv\src\process.c(345) : warning C4267: '=' : conversion from 'size_t' to 'int', possible loss of data
d:\work\scratch\pyuv\src\util.c(247) : warning C4267: 'function' : conversion from 'size_t' to 'int', possible loss of data
creating build\lib.win-amd64-3.3
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64\link.exe /DLL /nologo /INCREMENTAL:NO /LIBPATH:D:\Apps\Python33\libs /LIBPATH:D:\Apps\Python33\PCbuild\amd64 advapi32.lib iphlpapi.lib psapi.lib ws2_32.lib /EXPORT:PyInit_pyuv build\temp.win-amd64-3.3\Release\src/pyuv.obj deps\libuv\Release\lib\libuv.lib /OUT:build\lib.win-amd64-3.3\pyuv.pyd /IMPLIB:build\temp.win-amd64-3.3\Release\src\pyuv.lib /MANIFESTFILE:build\temp.win-amd64-3.3\Release\src\pyuv.pyd.manifest /NODEFAULTLIB:libcmt /LTCG
LINK : fatal error LNK1181: cannot open input file 'deps\libuv\Release\lib\libuv.lib'
error: command '"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64\link.exe"' failed with exit status 1181

There is no Release folder in deps/libuv. And there's no build log for libuv anywhere that I can see :-(

from pyuv.

schlamar avatar schlamar commented on August 11, 2024

@pfmoore PYTHON must point to the executable.

from pyuv.

schlamar avatar schlamar commented on August 11, 2024

@pfmoore And make a rm -rf deps. If gyp fails the libuv directory isn't in a clean state anymore.

from pyuv.

schlamar avatar schlamar commented on August 11, 2024

@pfmoore If both does not work execute vcbuild.bat directly to debug it.

from pyuv.

pfmoore avatar pfmoore commented on August 11, 2024

Builds OK now, but link errors:

>D:\Apps\Python33\python.exe .\setup.py build
running build
running build_ext
Downloading libuv...
Building libuv...
building 'pyuv' extension
creating build
creating build\temp.win-amd64-3.3
creating build\temp.win-amd64-3.3\Release
creating build\temp.win-amd64-3.3\Release\src
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -DMODULE_VERSION=0.9.7.dev -DLIBUV_REVISION=85124d7 -ID:\Apps\Python33\include
-ID:\Apps\Python33\include -Ideps\libuv\include /Tcsrc/pyuv.c /Fobuild\temp.win-amd64-3.3\Release\src/pyuv.obj
pyuv.c
d:\work\scratch\pyuv\src\pyuv.h(536) : warning C4244: '=' : conversion from 'Py_ssize_t' to 'int', possible loss of data
d:\work\scratch\pyuv\src\pyuv.h(565) : warning C4244: '=' : conversion from 'Py_ssize_t' to 'ULONG', possible loss of data
d:\work\scratch\pyuv\src\stream.c(336) : warning C4244: 'function' : conversion from 'Py_ssize_t' to 'unsigned int', possible loss of data
d:\work\scratch\pyuv\src\pipe.c(373) : warning C4244: 'function' : conversion from 'Py_ssize_t' to 'unsigned int', possible loss of data
d:\work\scratch\pyuv\src\udp.c(282) : warning C4244: 'function' : conversion from 'Py_ssize_t' to 'unsigned int', possible loss of data
d:\work\scratch\pyuv\src\fs.c(950) : warning C4244: '=' : conversion from 'ssize_t' to 'int', possible loss of data
d:\work\scratch\pyuv\src\process.c(345) : warning C4267: '=' : conversion from 'size_t' to 'int', possible loss of data
d:\work\scratch\pyuv\src\util.c(247) : warning C4267: 'function' : conversion from 'size_t' to 'int', possible loss of data
creating build\lib.win-amd64-3.3
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64\link.exe /DLL /nologo /INCREMENTAL:NO /LIBPATH:D:\Apps\Python33\libs /LIBPATH:D:\Apps\Python33\PCbuild\amd64 advapi32.lib iphlpapi.lib psapi.lib ws2_32.lib /EXPORT:PyInit_pyuv build\temp.win-amd64-3.3\Release\src/pyuv.obj deps\libuv\Release\lib\libuv.lib /OUT:build\lib.win-amd64-3.3\pyuv.pyd /IMPLIB:build\temp.win-amd64-3.3\Release\src\pyuv.lib /MANIFESTFILE:build\temp.win-amd64-3.3\Release\src\pyuv.pyd.manifest /NODEFAULTLIB:libcmt /LTCG
pyuv.obj : warning LNK4197: export 'PyInit_pyuv' specified multiple times; using first specification
   Creating library build\temp.win-amd64-3.3\Release\src\pyuv.lib and object build\temp.win-amd64-3.3\Release\src\pyuv.exp
pyuv.obj : error LNK2001: unresolved external symbol uv_inet_pton
pyuv.obj : error LNK2001: unresolved external symbol uv_strerror
pyuv.obj : error LNK2001: unresolved external symbol uv_loop_new
pyuv.obj : error LNK2001: unresolved external symbol uv_default_loop
pyuv.obj : error LNK2001: unresolved external symbol uv_run
pyuv.obj : error LNK2001: unresolved external symbol uv_stop
pyuv.obj : error LNK2001: unresolved external symbol uv_now
pyuv.obj : error LNK2001: unresolved external symbol uv_update_time
pyuv.obj : error LNK2001: unresolved external symbol uv_walk
pyuv.obj : error LNK2001: unresolved external symbol uv_backend_fd
pyuv.obj : error LNK2001: unresolved external symbol uv_backend_timeout
pyuv.obj : error LNK2001: unresolved external symbol uv_last_error
pyuv.obj : error LNK2001: unresolved external symbol uv_queue_work
pyuv.obj : error LNK2001: unresolved external symbol uv_loop_delete
pyuv.obj : error LNK2001: unresolved external symbol uv_ref
pyuv.obj : error LNK2001: unresolved external symbol uv_is_closing
pyuv.obj : error LNK2001: unresolved external symbol uv_unref
pyuv.obj : error LNK2001: unresolved external symbol uv_close
pyuv.obj : error LNK2001: unresolved external symbol uv_is_active
pyuv.obj : error LNK2001: unresolved external symbol uv_cancel
pyuv.obj : error LNK2001: unresolved external symbol uv_async_send
pyuv.obj : error LNK2001: unresolved external symbol uv_async_init
pyuv.obj : error LNK2001: unresolved external symbol uv_timer_start
pyuv.obj : error LNK2001: unresolved external symbol uv_timer_stop
pyuv.obj : error LNK2001: unresolved external symbol uv_timer_again
pyuv.obj : error LNK2001: unresolved external symbol uv_timer_get_repeat
pyuv.obj : error LNK2001: unresolved external symbol uv_timer_set_repeat
pyuv.obj : error LNK2001: unresolved external symbol uv_timer_init
pyuv.obj : error LNK2001: unresolved external symbol uv_prepare_start
pyuv.obj : error LNK2001: unresolved external symbol uv_prepare_stop
pyuv.obj : error LNK2001: unresolved external symbol uv_prepare_init
pyuv.obj : error LNK2001: unresolved external symbol uv_idle_start
pyuv.obj : error LNK2001: unresolved external symbol uv_idle_stop
pyuv.obj : error LNK2001: unresolved external symbol uv_idle_init
pyuv.obj : error LNK2001: unresolved external symbol uv_check_start
pyuv.obj : error LNK2001: unresolved external symbol uv_check_stop
pyuv.obj : error LNK2001: unresolved external symbol uv_check_init
pyuv.obj : error LNK2001: unresolved external symbol uv_signal_start
pyuv.obj : error LNK2001: unresolved external symbol uv_signal_stop
pyuv.obj : error LNK2001: unresolved external symbol uv_signal_init
pyuv.obj : error LNK2001: unresolved external symbol uv_buf_init
pyuv.obj : error LNK2001: unresolved external symbol uv_read_stop
pyuv.obj : error LNK2001: unresolved external symbol uv_shutdown
pyuv.obj : error LNK2001: unresolved external symbol uv_read_start
pyuv.obj : error LNK2001: unresolved external symbol uv_write
pyuv.obj : error LNK2001: unresolved external symbol uv_write2
pyuv.obj : error LNK2001: unresolved external symbol uv_is_readable
pyuv.obj : error LNK2001: unresolved external symbol uv_is_writable
pyuv.obj : error LNK2001: unresolved external symbol uv_pipe_bind
pyuv.obj : error LNK2001: unresolved external symbol uv_listen
pyuv.obj : error LNK2001: unresolved external symbol uv_accept
pyuv.obj : error LNK2001: unresolved external symbol uv_pipe_connect
pyuv.obj : error LNK2001: unresolved external symbol uv_pipe_open
pyuv.obj : error LNK2001: unresolved external symbol uv_pipe_pending_instances
pyuv.obj : error LNK2001: unresolved external symbol uv_read2_start
pyuv.obj : error LNK2001: unresolved external symbol uv_pipe_init
pyuv.obj : error LNK2001: unresolved external symbol uv_tcp_bind6
pyuv.obj : error LNK2001: unresolved external symbol uv_ip6_addr
pyuv.obj : error LNK2001: unresolved external symbol uv_tcp_bind
pyuv.obj : error LNK2001: unresolved external symbol uv_ip4_addr
pyuv.obj : error LNK2001: unresolved external symbol uv_tcp_connect6
pyuv.obj : error LNK2001: unresolved external symbol uv_tcp_connect
pyuv.obj : error LNK2001: unresolved external symbol uv_ip6_name
pyuv.obj : error LNK2001: unresolved external symbol uv_ip4_name
pyuv.obj : error LNK2001: unresolved external symbol uv_tcp_getsockname
pyuv.obj : error LNK2001: unresolved external symbol uv_tcp_getpeername
pyuv.obj : error LNK2001: unresolved external symbol uv_tcp_nodelay
pyuv.obj : error LNK2001: unresolved external symbol uv_tcp_keepalive
pyuv.obj : error LNK2001: unresolved external symbol uv_tcp_simultaneous_accepts
pyuv.obj : error LNK2001: unresolved external symbol uv_tcp_open
pyuv.obj : error LNK2001: unresolved external symbol uv_tcp_init
pyuv.obj : error LNK2001: unresolved external symbol uv_tty_set_mode
pyuv.obj : error LNK2001: unresolved external symbol uv_tty_reset_mode
pyuv.obj : error LNK2001: unresolved external symbol uv_tty_get_winsize
pyuv.obj : error LNK2001: unresolved external symbol uv_tty_init
pyuv.obj : error LNK2001: unresolved external symbol uv_udp_bind6
pyuv.obj : error LNK2001: unresolved external symbol uv_udp_bind
pyuv.obj : error LNK2001: unresolved external symbol uv_udp_recv_start
pyuv.obj : error LNK2001: unresolved external symbol uv_udp_recv_stop
pyuv.obj : error LNK2001: unresolved external symbol uv_udp_send6
pyuv.obj : error LNK2001: unresolved external symbol uv_udp_send
pyuv.obj : error LNK2001: unresolved external symbol uv_udp_set_membership
pyuv.obj : error LNK2001: unresolved external symbol uv_udp_getsockname
pyuv.obj : error LNK2001: unresolved external symbol uv_udp_set_multicast_ttl
pyuv.obj : error LNK2001: unresolved external symbol uv_udp_set_broadcast
pyuv.obj : error LNK2001: unresolved external symbol uv_udp_set_multicast_loop
pyuv.obj : error LNK2001: unresolved external symbol uv_udp_set_ttl
pyuv.obj : error LNK2001: unresolved external symbol uv_udp_open
pyuv.obj : error LNK2001: unresolved external symbol uv_udp_init
pyuv.obj : error LNK2001: unresolved external symbol uv_poll_start
pyuv.obj : error LNK2001: unresolved external symbol uv_poll_stop
pyuv.obj : error LNK2001: unresolved external symbol uv_poll_init_socket
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_req_cleanup
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_lstat
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_stat
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_fstat
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_unlink
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_mkdir
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_rmdir
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_rename
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_chmod
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_fchmod
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_link
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_symlink
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_readlink
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_chown
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_fchown
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_open
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_close
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_read
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_write
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_fsync
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_fdatasync
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_ftruncate
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_readdir
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_sendfile
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_utime
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_futime
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_event_init
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_poll_start
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_poll_stop
pyuv.obj : error LNK2001: unresolved external symbol uv_fs_poll_init
pyuv.obj : error LNK2001: unresolved external symbol uv_spawn
pyuv.obj : error LNK2001: unresolved external symbol uv_process_kill
pyuv.obj : error LNK2001: unresolved external symbol uv_disable_stdio_inheritance
pyuv.obj : error LNK2001: unresolved external symbol uv_hrtime
pyuv.obj : error LNK2001: unresolved external symbol uv_get_free_memory
pyuv.obj : error LNK2001: unresolved external symbol uv_get_total_memory
pyuv.obj : error LNK2001: unresolved external symbol uv_loadavg
pyuv.obj : error LNK2001: unresolved external symbol uv_uptime
pyuv.obj : error LNK2001: unresolved external symbol uv_resident_set_memory
pyuv.obj : error LNK2001: unresolved external symbol uv_free_interface_addresses
pyuv.obj : error LNK2001: unresolved external symbol uv_interface_addresses
pyuv.obj : error LNK2001: unresolved external symbol uv_free_cpu_info
pyuv.obj : error LNK2001: unresolved external symbol uv_cpu_info
pyuv.obj : error LNK2001: unresolved external symbol uv_freeaddrinfo
pyuv.obj : error LNK2001: unresolved external symbol uv_getaddrinfo
pyuv.obj : error LNK2001: unresolved external symbol uv_barrier_wait
pyuv.obj : error LNK2001: unresolved external symbol uv_barrier_init
pyuv.obj : error LNK2001: unresolved external symbol uv_barrier_destroy
pyuv.obj : error LNK2001: unresolved external symbol uv_mutex_lock
pyuv.obj : error LNK2001: unresolved external symbol uv_mutex_unlock
pyuv.obj : error LNK2001: unresolved external symbol uv_mutex_trylock
pyuv.obj : error LNK2001: unresolved external symbol uv_mutex_init
pyuv.obj : error LNK2001: unresolved external symbol uv_mutex_destroy
pyuv.obj : error LNK2001: unresolved external symbol uv_rwlock_rdlock
pyuv.obj : error LNK2001: unresolved external symbol uv_rwlock_rdunlock
pyuv.obj : error LNK2001: unresolved external symbol uv_rwlock_tryrdlock
pyuv.obj : error LNK2001: unresolved external symbol uv_rwlock_wrlock
pyuv.obj : error LNK2001: unresolved external symbol uv_rwlock_wrunlock
pyuv.obj : error LNK2001: unresolved external symbol uv_rwlock_trywrlock
pyuv.obj : error LNK2001: unresolved external symbol uv_rwlock_init
pyuv.obj : error LNK2001: unresolved external symbol uv_rwlock_destroy
pyuv.obj : error LNK2001: unresolved external symbol uv_cond_signal
pyuv.obj : error LNK2001: unresolved external symbol uv_cond_broadcast
pyuv.obj : error LNK2001: unresolved external symbol uv_cond_wait
pyuv.obj : error LNK2001: unresolved external symbol uv_cond_timedwait
pyuv.obj : error LNK2001: unresolved external symbol uv_cond_init
pyuv.obj : error LNK2001: unresolved external symbol uv_cond_destroy
pyuv.obj : error LNK2001: unresolved external symbol uv_sem_post
pyuv.obj : error LNK2001: unresolved external symbol uv_sem_wait
pyuv.obj : error LNK2001: unresolved external symbol uv_sem_trywait
pyuv.obj : error LNK2001: unresolved external symbol uv_sem_init
pyuv.obj : error LNK2001: unresolved external symbol uv_sem_destroy
build\lib.win-amd64-3.3\pyuv.pyd : fatal error LNK1120: 164 unresolved externals
error: command '"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64\link.exe"' failed with exit status 1120

Odd as libuv.lib is in the link. Could it be because I'm on 64 bit Windows? Or because Python 3.3 uses VS10? These seem unlikely, but I can't see anything obvious...

from pyuv.

saghul avatar saghul commented on August 11, 2024

Are you using a 64bit Python?

from pyuv.

pfmoore avatar pfmoore commented on August 11, 2024

Yes.

from pyuv.

saghul avatar saghul commented on August 11, 2024

Heh, this is a known issue. I plan to solve it tonight. Can you test this:

Edit setup_libuv.py and replace this line

https://github.com/saghul/pyuv/blob/master/setup_libuv.py#L162

with:

exec_process(['cmd.exe', '/C', 'vcbuild.bat', 'x64', 'release'], cwd=self.libuv_dir, env=env, shell=True)

from pyuv.

schlamar avatar schlamar commented on August 11, 2024

@saghul Solved :)

from pyuv.

pfmoore avatar pfmoore commented on August 11, 2024

Builds and works fine now. Many thanks!

from pyuv.

saghul avatar saghul commented on August 11, 2024

Glad to hear! Thanks guys!

from pyuv.

schlamar avatar schlamar commented on August 11, 2024

There is still one issue: We don't get any error if vcbuild.bat fails. This should be fixed with: joyent/libuv#727

from pyuv.

saghul avatar saghul commented on August 11, 2024

No problem, I'll bump the revision on pyuv once it's merged.

from pyuv.

schlamar avatar schlamar commented on August 11, 2024

@pfmoore Could you upload a 64bit build of pyuv 0.9.7 (for Python 3) somewhere? I can't build 64bit because I have only VS Express, but I really would like to test it. Thanks a lot 🍰

from pyuv.

pfmoore avatar pfmoore commented on August 11, 2024

Just tried and it broke with the following:

>python .\setup.py bdist_wininst
running bdist_wininst
running build
running build_ext
Downloading libuv...
Building libuv...
error: Got return value 1 while executing "cmd.exe /C vcbuild.bat x64 release", stderr output was:
Checking out files: 100% (1084/1084), done.

Running vcbuild.bat manually gets:

Setting environment for using Microsoft Visual Studio 2010 x64 tools.
['-Dtarget_arch=x64', '-Dlibrary=static_library', '.\\uv.gyp', '-I', '.\\common.gypi', '--depth=.', '-Dhost_arch=AMD64', '-Dcomponent=static_library']
Project files generated.
  libuv.vcxproj -> C:\Work\Projects\pyuv\deps\libuv\Release\lib\libuv.lib
libuv.lib(util.obj) : error LNK2001: unresolved external symbol __imp_RegQueryValueExW [C:\Work\Projects\pyuv\deps\libuv\run-benchmarks.vcxproj]
libuv.lib(util.obj) : error LNK2001: unresolved external symbol __imp_RegOpenKeyExW [C:\Work\Projects\pyuv\deps\libuv\run-benchmarks.vcxproj]
libuv.lib(util.obj) : error LNK2001: unresolved external symbol __imp_RegCloseKey [C:\Work\Projects\pyuv\deps\libuv\run-benchmarks.vcxproj]
C:\Work\Projects\pyuv\deps\libuv\Release\run-benchmarks.exe : fatal error LNK1120: 3 unresolved externals [C:\Work\Projects\pyuv\deps\libuv\run-benchmarks.vcxp
roj]
test-spawn.obj : error LNK2001: unresolved external symbol __imp_CommandLineToArgvW [C:\Work\Projects\pyuv\deps\libuv\run-tests.vcxproj]
libuv.lib(util.obj) : error LNK2001: unresolved external symbol __imp_RegQueryValueExW [C:\Work\Projects\pyuv\deps\libuv\run-tests.vcxproj]
libuv.lib(util.obj) : error LNK2001: unresolved external symbol __imp_RegOpenKeyExW [C:\Work\Projects\pyuv\deps\libuv\run-tests.vcxproj]
libuv.lib(util.obj) : error LNK2001: unresolved external symbol __imp_RegCloseKey [C:\Work\Projects\pyuv\deps\libuv\run-tests.vcxproj]
C:\Work\Projects\pyuv\deps\libuv\Release\run-tests.exe : fatal error LNK1120: 4 unresolved externals [C:\Work\Projects\pyuv\deps\libuv\run-tests.vcxproj]

Hope this helps - sorry, but I don't have any time to diagnose further.

from pyuv.

saghul avatar saghul commented on August 11, 2024

@pfmoore a libuv revision bump fixes this. I'll bump it later today.

from pyuv.

schlamar avatar schlamar commented on August 11, 2024

@pfmoore Running it a second time should succeed, though. The linked libuv revision has only some build issues with tests.

from pyuv.

schlamar avatar schlamar commented on August 11, 2024

I meant python setup.py ... :)

from pyuv.

pfmoore avatar pfmoore commented on August 11, 2024

OK, worked now. I have a wininst exe for Python 3.3, 64-bit. I don't have any public space to upload to, can you suggest somewhere I can put it?

from pyuv.

schlamar avatar schlamar commented on August 11, 2024

You could create an issue with attachment here: https://code.google.com/p/pyuv/issues/list

Or just push it into a GitHub repo/branch if you don't have a Google account (you can delete it after I downloaded it)

Thanks for your effort 👍

from pyuv.

pfmoore avatar pfmoore commented on August 11, 2024

Uploaded as issue 1 to google code.

from pyuv.

schlamar avatar schlamar commented on August 11, 2024

Thanks 👍

from pyuv.

Related Issues (20)

Recommend Projects

  • React photo React

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

  • Vue.js photo Vue.js

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

  • Typescript photo Typescript

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

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

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

Recommend Topics

  • javascript

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

  • web

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

  • server

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

  • Machine learning

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

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

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

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.