Go Back   Rhinocerus > Newsgroup > Newsgroup comp.lang.python

Reply
 
Thread Tools Display Modes
  #1 (permalink)  
Old 02-05-2012, 01:40 PM
Alec Taylor
Guest
 
Posts: n/a
Default PyCrypto builds neither with MSVC nor MinGW

PIL, PyCrypto and many other modules require a C compiler and linker.

Unfortunately neither install on my computer, with a PATH with the following:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC
C:\libraries\MinGW\msys\1.0\bin
C:\libraries\MinGW
C:\Python27\Scripts

Output from G:\pycrypto>vcvarsall.bat
Setting environment for using Microsoft Visual Studio 2010 x86 tools.

Error output from G:\pycrypto>python setup.py build --compiler msvc
http://pastebin.com/nBsuXDGg

Error output from G:\pycrypto>python setup.py build --compiler mingw32
1> log1 2> log2
Log1: http://pastebin.com/yG3cbdZv
Log2: http://pastebin.com/qvnshPeh

Will there ever be support for newer MSVC versions? - Also, why
doesn't even MinGW install PyCrypto for me?

Thanks for all suggestions,

Alec Taylor
Reply With Quote
Alt Today
Advertising
 
and become member of Rhinocerus
Standard Sponsored Links

  #2 (permalink)  
Old 02-06-2012, 10:27 PM
casevh
Guest
 
Posts: n/a
Default Re: PyCrypto builds neither with MSVC nor MinGW

On Feb 5, 6:40*am, Alec Taylor <alec.tayl...@gmail.com> wrote:
> PIL, PyCrypto and many other modules require a C compiler and linker.
>
> Unfortunately neither install on my computer, with a PATH with the following:
>
> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC
> C:\libraries\MinGW\msys\1.0\bin
> C:\libraries\MinGW
> C:\Python27\Scripts
>
> Output from G:\pycrypto>vcvarsall.bat
> Setting environment for using Microsoft Visual Studio 2010 x86 tools.
>
> Error output from G:\pycrypto>python setup.py build --compiler msvc
> http://pastebin.com/nBsuXDGg

A couple of comments. You will need to complile either GMP or MPIR
first.

MPIR is a windows friendly fork of GMP and I use it create Windows
binaries
for gmpy.
>
> Error output from G:\pycrypto>python setup.py build --compiler mingw32
> 1> log1 2> log2
> Log1:http://pastebin.com/yG3cbdZv
> Log2:http://pastebin.com/qvnshPeh
>
> Will there ever be support for newer MSVC versions? - Also, why


Python 2.7 uses VS2008. I use the command line compiler included with
in
Microsoft's SDK 7.0 which is still available for download. I have
step-
by-step build instructions included in gmpy's source download. I would
try to build MPIR and gmpy first and then adapt/modify the process for
PyCrypto.

MPIR home page: www.mpir.org
gmpy source: gmpy.googlecode.com/files/gmpy-1.15.zip

> doesn't even MinGW install PyCrypto for me?
>


> Thanks for all suggestions,
>
> Alec Taylor

Hope these comments help...
casevh
Reply With Quote
  #3 (permalink)  
Old 02-08-2012, 04:37 AM
Alec Taylor
Guest
 
Posts: n/a
Default Re: PyCrypto builds neither with MSVC nor MinGW

Thanks all for your replies.

I have now installed MSVC8 and YASM.

I was able to successfully run configure.bat and make.bat (including
make.bat check).

However, I'm unsure what to do about install, since there is no
install arg. Do I copy it across to my VC\bin folder, or does it need
it's own place in PATH + system variables?

I am asking because I don't know where it is looking for the MPIR library.

Thanks for all suggestions,

Alec Taylor
Reply With Quote
  #4 (permalink)  
Old 02-08-2012, 09:48 AM
Case Van Horsen
Guest
 
Posts: n/a
Default Re: PyCrypto builds neither with MSVC nor MinGW

On Tue, Feb 7, 2012 at 9:37 PM, Alec Taylor <alec.taylor6@gmail.com> wrote:
> Thanks all for your replies.
>
> I have now installed MSVC8 and YASM.

I assume you installed Visual Studio. I've omitted the commands to use
the SDK compiler below.
>
> I was able to successfully run configure.bat and make.bat (including
> make.bat check).
>
> However, I'm unsure what to do about install, since there is no
> install arg. Do I copy it across to my VC\bin folder, or does it need
> it's own place in PATH + system variables?


The following is just a guess.

I copy the files to a convenient location and then specify that
location to setup.py. Below is an excerpt from my build process.

mkdir c:\src\lib
mkdir c:\src\include
xcopy /Y mpir.h c:\src\include\*.*
xcopy /Y win\mpir.lib c:\src\lib\*.*

python setup.py build_ext -Ic:\src\include -Lc:\src\lib install

>
> I am asking because I don't know where it is looking for the MPIR library.
>
> Thanks for all suggestions,
>
> Alec Taylor

Reply With Quote
  #5 (permalink)  
Old 02-08-2012, 11:24 AM
Alec Taylor
Guest
 
Posts: n/a
Default Re: PyCrypto builds neither with MSVC nor MinGW

Thanks, but to get it to work with pip, wouldn't I need to add it to
PATH? - Or can I just add those library args to pip?

On Wed, Feb 8, 2012 at 9:48 PM, Case Van Horsen <casevh@gmail.com> wrote:
> On Tue, Feb 7, 2012 at 9:37 PM, Alec Taylor <alec.taylor6@gmail.com> wrote:
>> Thanks all for your replies.
>>
>> I have now installed MSVC8 and YASM.

> I assume you installed Visual Studio. I've omitted the commands to use
> the SDK compiler below.
>>
>> I was able to successfully run configure.bat and make.bat (including
>> make.bat check).
>>
>> However, I'm unsure what to do about install, since there is no
>> install arg. Do I copy it across to my VC\bin folder, or does it need
>> it's own place in PATH + system variables?

>
> The following is just a guess.
>
> I copy the files to a convenient location and then specify that
> location to setup.py. Below is an excerpt from my build process.
>
> mkdir c:\src\lib
> mkdir c:\src\include
> xcopy /Y mpir.h c:\src\include\*.*
> xcopy /Y win\mpir.lib c:\src\lib\*.*
>
> python setup.py build_ext -Ic:\src\include -Lc:\src\lib install
>
>>
>> I am asking because I don't know where it is looking for the MPIR library.
>>
>> Thanks for all suggestions,
>>
>> Alec Taylor

Reply With Quote
  #6 (permalink)  
Old 02-08-2012, 11:31 AM
Case Van Horsen
Guest
 
Posts: n/a
Default Re: PyCrypto builds neither with MSVC nor MinGW

On Wed, Feb 8, 2012 at 4:24 AM, Alec Taylor <alec.taylor6@gmail.com> wrote:
> Thanks, but to get it to work with pip, wouldn't I need to add it to
> PATH? - Or can I just add those library args to pip?

I don't think so. pyCrypto probably builds a single DLL so the MPIR library is
statically linked into that DLL. Only the innvocation of setup.py should need
to refer to the MPIR library locations. I don't use pip so I'm not sure how to
get pip to install the resulting DLL, etc.
>
> On Wed, Feb 8, 2012 at 9:48 PM, Case Van Horsen <casevh@gmail.com> wrote:
>> On Tue, Feb 7, 2012 at 9:37 PM, Alec Taylor <alec.taylor6@gmail.com> wrote:
>>> Thanks all for your replies.
>>>
>>> I have now installed MSVC8 and YASM.

>> I assume you installed Visual Studio. I've omitted the commands to use
>> the SDK compiler below.
>>>
>>> I was able to successfully run configure.bat and make.bat (including
>>> make.bat check).
>>>
>>> However, I'm unsure what to do about install, since there is no
>>> install arg. Do I copy it across to my VC\bin folder, or does it need
>>> it's own place in PATH + system variables?

>>
>> The following is just a guess.
>>
>> I copy the files to a convenient location and then specify that
>> location to setup.py. Below is an excerpt from my build process.
>>
>> mkdir c:\src\lib
>> mkdir c:\src\include
>> xcopy /Y mpir.h c:\src\include\*.*
>> xcopy /Y win\mpir.lib c:\src\lib\*.*
>>
>> python setup.py build_ext -Ic:\src\include -Lc:\src\lib install
>>
>>>
>>> I am asking because I don't know where it is looking for the MPIR library.
>>>
>>> Thanks for all suggestions,
>>>
>>> Alec Taylor

Reply With Quote
  #7 (permalink)  
Old 03-12-2012, 07:38 PM
Alec Taylor
Guest
 
Posts: n/a
Default Re: PyCrypto builds neither with MSVC nor MinGW

On a brand new Windows install now, with a brand new VS8 installed
with new YASM and MPIR in c:\usr\src\include and c:\usr\src\lib.

But it still isn't working:

C:\workingdir\pycrypto>python setup.py build_ext -Ic:\usr\src\include
-Lc:\usr\src\lib install
running build_ext
warning: GMP or MPIR library not found; Not building Crypto.PublicKey._fastmath.

building 'Crypto.Random.OSRNG.winrandom' extension
Traceback (most recent call last):
File "setup.py", line 452, in <module>
core.setup(**kw)
File "C:\Python27\lib\distutils\core.py", line 152, in setup
dist.run_commands()
File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands
self.run_command(cmd)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "setup.py", line 249, in run
build_ext.run(self)
File "C:\Python27\lib\distutils\command\build_ext.p y", line 339, in run
self.build_extensions()
File "setup.py", line 146, in build_extensions
build_ext.build_extensions(self)
File "C:\Python27\lib\distutils\command\build_ext.p y", line 448, in
build_extensions
self.build_extension(ext)
File "C:\Python27\lib\distutils\command\build_ext.p y", line 498, in
build_extension
depends=ext.depends)
File "C:\Python27\lib\distutils\msvc9compiler.py", line 473, in compile
self.initialize()
File "C:\Python27\lib\distutils\msvc9compiler.py", line 383, in initialize
vc_env = query_vcvarsall(VERSION, plat_spec)
File "C:\Python27\lib\distutils\msvc9compiler.py", line 299, in
query_vcvarsall
raise ValueError(str(list(result.keys())))
ValueError: [u'path']

On Wed, Feb 8, 2012 at 11:31 PM, Case Van Horsen <casevh@gmail.com> wrote:
> On Wed, Feb 8, 2012 at 4:24 AM, Alec Taylor <alec.taylor6@gmail.com> wrote:
>> Thanks, but to get it to work with pip, wouldn't I need to add it to
>> PATH? - Or can I just add those library args to pip?

> I don't think so. pyCrypto probably builds a single DLL so the MPIR library is
> statically linked into that DLL. Only the innvocation of setup.py should need
> to refer to the MPIR library locations. *I don't use pip so I'm not sure how to
> get pip to install the resulting DLL, etc.
>>
>> On Wed, Feb 8, 2012 at 9:48 PM, Case Van Horsen <casevh@gmail.com> wrote:
>>> On Tue, Feb 7, 2012 at 9:37 PM, Alec Taylor <alec.taylor6@gmail.com> wrote:
>>>> Thanks all for your replies.
>>>>
>>>> I have now installed MSVC8 and YASM.
>>> I assume you installed Visual Studio. I've omitted the commands to use
>>> the SDK compiler below.
>>>>
>>>> I was able to successfully run configure.bat and make.bat (including
>>>> make.bat check).
>>>>
>>>> However, I'm unsure what to do about install, since there is no
>>>> install arg. Do I copy it across to my VC\bin folder, or does it need
>>>> it's own place in PATH + system variables?
>>>
>>> The following is just a guess.
>>>
>>> I copy the files to a convenient location and then specify that
>>> location to setup.py. Below is an excerpt from my build process.
>>>
>>> mkdir c:\src\lib
>>> mkdir c:\src\include
>>> xcopy /Y mpir.h c:\src\include\*.*
>>> xcopy /Y win\mpir.lib c:\src\lib\*.*
>>>
>>> python setup.py build_ext -Ic:\src\include -Lc:\src\lib install
>>>
>>>>
>>>> I am asking because I don't know where it is looking for the MPIR library.
>>>>
>>>> Thanks for all suggestions,
>>>>
>>>> Alec Taylor

Reply With Quote
  #8 (permalink)  
Old 03-12-2012, 08:21 PM
Alec Taylor
Guest
 
Posts: n/a
Default Re: PyCrypto builds neither with MSVC nor MinGW

FYI: When running "vcvarsall" manually, I get a variety of linker
errors, even though I have the SDK and everything else installed:

running build_ext
building 'Crypto.Random.OSRNG.winrandom' extension
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c
/nologo /Ox /MD /W3 /GS- /DNDEBUG -Isrc/ -Isrc/inc-msvc/
-Ic:\usr\src\include -IC:\Python27\include -IC:\Python27\PC
/Tcsrc/winrand.c /Fobuild\temp.win-amd64-2.7\Release\src/winrand.obj
winrand.c
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\link.exe
/DLL /nologo /INCREMENTAL:NO /LIBPATH:c:\usr\src\lib
/LIBPATH:C:\Python27\libs /LIBPATH:C:\Python27\PCbuild\amd64
ws2_32.lib advapi32.lib /EXPORT:initwinrandom
build\temp.win-amd64-2.7\Release\src/winrand.obj
/OUT:build\lib.win-amd64-2.7\Crypto\Random\OSRNG\winrandom.pyd
/IMPLIB:build\temp.win-amd64-2.7\Release\src\winrandom.lib
/MANIFESTFILE:build\temp.win-amd64-2.7\Release\src\winrandom.pyd.manifest
Creating library build\temp.win-amd64-2.7\Release\src\winrandom.lib
and object build\temp.win-amd64-2.7\Release\src\winrandom.exp
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyObject_Free referenced in function _WRdealloc
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyExc_SystemError referenced in function _WRdealloc
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyErr_Format referenced in function _WRdealloc
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyExc_TypeError referenced in function _WRdealloc
winrand.obj : error LNK2019: unresolved external symbol
__imp___PyObject_New referenced in function _winrandom_new
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyArg_ParseTupleAndKeywords referenced in function
_winrandom_new
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyString_FromStringAndSize referenced in function _WR_get_bytes
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyMem_Free referenced in function _WR_get_bytes
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyErr_NoMemory referenced in function _WR_get_bytes
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyMem_Malloc referenced in function _WR_get_bytes
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyErr_SetString referenced in function _WR_get_bytes
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyExc_ValueError referenced in function _WR_get_bytes
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyArg_ParseTuple referenced in function _WR_get_bytes
winrand.obj : error LNK2019: unresolved external symbol
__imp__Py_FindMethod referenced in function _WRgetattr
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyInt_FromLong referenced in function _WRgetattr
winrand.obj : error LNK2019: unresolved external symbol
__imp__Py_FatalError referenced in function _initwinrandom
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyErr_Occurred referenced in function _initwinrandom
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyModule_AddStringConstant referenced in function
_initwinrandom
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyModule_AddIntConstant referenced in function _initwinrandom
winrand.obj : error LNK2019: unresolved external symbol
__imp__Py_InitModule4 referenced in function _initwinrandom
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyType_Type referenced in function _initwinrandom
build\lib.win-amd64-2.7\Crypto\Random\OSRNG\winrandom.pyd : fatal
error LNK1120: 21 unresolved externals
Reply With Quote
  #9 (permalink)  
Old 03-13-2012, 02:59 AM
casevh@gmail.com
Guest
 
Posts: n/a
Default Re: PyCrypto builds neither with MSVC nor MinGW

On Monday, March 12, 2012 1:38:29 PM UTC-7, Alec Taylor wrote:
> On a brand new Windows install now, with a brand new VS8 installed
> with new YASM and MPIR in c:\usr\src\include and c:\usr\src\lib.
>
> But it still isn't working:
>

This was a little challenging. I looked through the setup.py to figure out what assumptions their build process made. First, the file pycrypto-2.5\src\inc-msvc\config.h must be modified. Below is the file I used:

config.h
================================================== =================
/* Define to 1 if you have the declaration of `mpz_powm', and to 0 if you
don't. */
#define HAVE_DECL_MPZ_POWM 1

/* Define to 1 if you have the declaration of `mpz_powm_sec', and to 0 if you
don't. */
#define HAVE_DECL_MPZ_POWM_SEC 0

/* Define to 1 if you have the `gmp' library (-lgmp). */
#undef HAVE_LIBGMP

/* Define to 1 if you have the `mpir' library (-lmpir). */
#define HAVE_LIBMPIR 1

/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
================================================== =================

Although I was able to specify an include directory for mpir.h with -Ic:\usr\include, I was not able specify a lib directory with -Lc:\usr\lib. It looks like setup.py does not honor the -L option. So I finally gave up and just copied the mpir.h file into my Python27\include directory and the mpir.lib file into my Python27\libs directory.

After copying the files "python setup.py install" was successful. I createda binary installer with "python setup.py bdist-wininst".

There may be a cleaner way to build PyCrypto, but these steps worked for me..

casevh
Reply With Quote
  #10 (permalink)  
Old 03-13-2012, 02:59 AM
casevh@gmail.com
Guest
 
Posts: n/a
Default Re: PyCrypto builds neither with MSVC nor MinGW

On Monday, March 12, 2012 1:38:29 PM UTC-7, Alec Taylor wrote:
> On a brand new Windows install now, with a brand new VS8 installed
> with new YASM and MPIR in c:\usr\src\include and c:\usr\src\lib.
>
> But it still isn't working:
>

This was a little challenging. I looked through the setup.py to figure out what assumptions their build process made. First, the file pycrypto-2.5\src\inc-msvc\config.h must be modified. Below is the file I used:

config.h
================================================== =================
/* Define to 1 if you have the declaration of `mpz_powm', and to 0 if you
don't. */
#define HAVE_DECL_MPZ_POWM 1

/* Define to 1 if you have the declaration of `mpz_powm_sec', and to 0 if you
don't. */
#define HAVE_DECL_MPZ_POWM_SEC 0

/* Define to 1 if you have the `gmp' library (-lgmp). */
#undef HAVE_LIBGMP

/* Define to 1 if you have the `mpir' library (-lmpir). */
#define HAVE_LIBMPIR 1

/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
================================================== =================

Although I was able to specify an include directory for mpir.h with -Ic:\usr\include, I was not able specify a lib directory with -Lc:\usr\lib. It looks like setup.py does not honor the -L option. So I finally gave up and just copied the mpir.h file into my Python27\include directory and the mpir.lib file into my Python27\libs directory.

After copying the files "python setup.py install" was successful. I createda binary installer with "python setup.py bdist-wininst".

There may be a cleaner way to build PyCrypto, but these steps worked for me..

casevh
Reply With Quote
  #11 (permalink)  
Old 03-13-2012, 03:57 AM
Alec Taylor
Guest
 
Posts: n/a
Default Re: PyCrypto builds neither with MSVC nor MinGW

Hmm, I just tried that method, but the output I got was still:

C:\workingdir\pycrypto>python setup.py install
running install
running build
running build_py
running build_ext
building 'Crypto.Random.OSRNG.winrandom' extension
Traceback (most recent call last):
File "setup.py", line 452, in <module>
core.setup(**kw)
File "C:\Python27\lib\distutils\core.py", line 152, in setup
dist.run_commands()
File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands
self.run_command(cmd)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Python27\lib\distutils\command\install.py" , line 563, in run
self.run_command('build')
File "C:\Python27\lib\distutils\cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "C:\Python27\lib\distutils\command\build.py", line 127, in run
self.run_command(cmd_name)
File "C:\Python27\lib\distutils\cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
cmd_obj.run()
File "setup.py", line 249, in run
build_ext.run(self)
File "C:\Python27\lib\distutils\command\build_ext.p y", line 339, in run
self.build_extensions()
File "setup.py", line 146, in build_extensions
build_ext.build_extensions(self)
File "C:\Python27\lib\distutils\command\build_ext.p y", line 448, in
build_extensions
self.build_extension(ext)
File "C:\Python27\lib\distutils\command\build_ext.p y", line 498, in
build_extension
depends=ext.depends)
File "C:\Python27\lib\distutils\msvc9compiler.py", line 473, in compile
self.initialize()
File "C:\Python27\lib\distutils\msvc9compiler.py", line 383, in initialize
vc_env = query_vcvarsall(VERSION, plat_spec)
File "C:\Python27\lib\distutils\msvc9compiler.py", line 299, in
query_vcvarsall
raise ValueError(str(list(result.keys())))
ValueError: [u'path']

--------------
and when I manually run vcvarsall (which is in PATH), I get the
aforementioned linker errors:
--------------

C:\workingdir\pycrypto>python setup.py install
running install
running build
running build_py
running build_ext
building 'Crypto.Random.OSRNG.winrandom' extension
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c
/nologo /Ox /MD /W3 /GS- /DNDEBUG -Isrc/ -Isrc/inc-msvc/
-IC:\Python27\include -IC:\Python27 \PC /Tcsrc/winrand.c
/Fobuild\temp.win-amd64-2.7\Release\src/winrand.obj winrand.c
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\link.exe
/DLL /nologo /INCREMENTAL:NO /LIBPATH:C:\Python27\libs
/LIBPATH:C:\Python27\PCbuild\amd64 ws2 _32.lib advapi32.lib
/EXPORT:initwinrandom build\temp.win-amd64-2.7\Release\src/
winrand.obj /OUT:build\lib.win-amd64-2.7\Crypto\Random\OSRNG\winrandom.pyd /IMPL
IB:build\temp.win-amd64-2.7\Release\src\winrandom.lib
/MANIFESTFILE:build\temp.win-amd64-2.7\Release\src\winrandom.pyd.manifest
Creating library build\temp.win-amd64-2.7\Release\src\winrandom.lib
and object build\temp.win-amd64-2.7\Release\src\winrandom.exp
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyObject_Free referenced in function _WRdealloc
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyExc_SystemError referenced in function _WRdealloc
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyErr_Format referenced in function _WRdealloc
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyExc_TypeError referenced in function _WRdealloc
winrand.obj : error LNK2019: unresolved external symbol
__imp___PyObject_New referenced in function _winrandom_new
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyArg_ParseTupleAndKeywords referenced in function
_winrandom_new
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyString_FromStringAndSize referenced in function _WR_get_bytes
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyMem_Free referenced in function _WR_get_bytes
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyErr_NoMemory referenced in function _WR_get_bytes
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyMem_Malloc referenced in function _WR_get_bytes
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyErr_SetString referenced in function _WR_get_bytes
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyExc_ValueError referenced in function _WR_get_bytes
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyArg_ParseTuple referenced in function _WR_get_bytes
winrand.obj : error LNK2019: unresolved external symbol
__imp__Py_FindMethod referenced in function _WRgetattr
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyInt_FromLong referenced in function _WRgetattr
winrand.obj : error LNK2019: unresolved external symbol
__imp__Py_FatalError referenced in function _initwinrandom
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyErr_Occurred referenced in function _initwinrandom
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyModule_AddStringConstant referenced in function
_initwinrandom
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyModule_AddIntConstant referenced in function _initwinrandom
winrand.obj : error LNK2019: unresolved external symbol
__imp__Py_InitModule4 referenced in function _initwinrandom
winrand.obj : error LNK2019: unresolved external symbol
__imp__PyType_Type referenced in function _initwinrandom
build\lib.win-amd64-2.7\Crypto\Random\OSRNG\winrandom.pyd : fatal error LNK1120:
21 unresolved externals
error: command '"C:\Program Files (x86)\Microsoft Visual Studio
9.0\VC\BIN\link.exe"' failed with exit status 1120

On Tue, Mar 13, 2012 at 2:59 PM, <casevh@gmail.com> wrote:
> On Monday, March 12, 2012 1:38:29 PM UTC-7, Alec Taylor wrote:
>> On a brand new Windows install now, with a brand new VS8 installed
>> with new YASM and MPIR in c:\usr\src\include and c:\usr\src\lib.
>>
>> But it still isn't working:
>>

> This was a little challenging. I looked through the setup.py to figure out what assumptions their build process made. First, the file pycrypto-2.5\src\inc-msvc\config.h must be modified. Below is the file I used:
>
> config.h
> ================================================== =================
> /* Define to 1 if you have the declaration of `mpz_powm', and to 0 if you
> * don't. */
> #define HAVE_DECL_MPZ_POWM 1
>
> /* Define to 1 if you have the declaration of `mpz_powm_sec', and to 0 ifyou
> * don't. */
> #define HAVE_DECL_MPZ_POWM_SEC 0
>
> /* Define to 1 if you have the `gmp' library (-lgmp). */
> #undef HAVE_LIBGMP
>
> /* Define to 1 if you have the `mpir' library (-lmpir). */
> #define HAVE_LIBMPIR 1
>
> /* Define to 1 if you have the <stdint.h> header file. */
> #define HAVE_STDINT_H 1
> ================================================== =================
>
> Although I was able to specify an include directory for mpir.h with -Ic:\usr\include, I was not able specify a lib directory with -Lc:\usr\lib. It looks like setup.py does not honor the -L option. So I finally gave up and just copied the mpir.h file into my Python27\include directory and the mpir.lib file into my Python27\libs directory.
>
> After copying the files "python setup.py install" was successful. I created a binary installer with "python setup.py bdist-wininst".
>
> There may be a cleaner way to build PyCrypto, but these steps worked for me.
>
> casevh
> --
> http://mail.python.org/mailman/listinfo/python-list

Reply With Quote
  #12 (permalink)  
Old 03-13-2012, 05:09 AM
Alec Taylor
Guest
 
Posts: n/a
Default Re: PyCrypto builds neither with MSVC nor MinGW

Nope, I have C:\Python27 (and C:\Python27\Scripts) in my PATH.

C:\workingdir\pycrypto>where python
C:\Python27\python.exe

On Tue, Mar 13, 2012 at 4:44 PM, Case Van Horsen <casevh@gmail.com> wrote:
> On Mon, Mar 12, 2012 at 9:57 PM, Alec Taylor <alec.taylor6@gmail.com> wrote:
>> Hmm, I just tried that method, but the output I got was still:
>>
>> C:\workingdir\pycrypto>python setup.py install
>> running install
>> running build
>> running build_py
>> running build_ext
>> building 'Crypto.Random.OSRNG.winrandom' extension
>> Traceback (most recent call last):
>> *File "setup.py", line 452, in <module>
>> * *core.setup(**kw)
>> *File "C:\Python27\lib\distutils\core.py", line 152, in setup
>> * *dist.run_commands()
>> *File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands
>> * *self.run_command(cmd)
>> *File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
>> * *cmd_obj.run()
>> *File "C:\Python27\lib\distutils\command\install.py" , line 563, in run
>> * *self.run_command('build')
>> *File "C:\Python27\lib\distutils\cmd.py", line 326, in run_command
>> * *self.distribution.run_command(command)
>> *File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
>> * *cmd_obj.run()
>> *File "C:\Python27\lib\distutils\command\build.py", line 127, in run
>> * *self.run_command(cmd_name)
>> *File "C:\Python27\lib\distutils\cmd.py", line 326, in run_command
>> * *self.distribution.run_command(command)
>> *File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
>> * *cmd_obj.run()
>> *File "setup.py", line 249, in run
>> * *build_ext.run(self)
>> *File "C:\Python27\lib\distutils\command\build_ext.p y", line 339, in run
>> * *self.build_extensions()
>> *File "setup.py", line 146, in build_extensions
>> * *build_ext.build_extensions(self)
>> *File "C:\Python27\lib\distutils\command\build_ext.p y", line 448, in
>> build_extensions
>> * *self.build_extension(ext)
>> *File "C:\Python27\lib\distutils\command\build_ext.p y", line 498, in
>> build_extension
>> * *depends=ext.depends)
>> *File "C:\Python27\lib\distutils\msvc9compiler.py", line 473, in compile
>> * *self.initialize()
>> *File "C:\Python27\lib\distutils\msvc9compiler.py", line 383, in initialize
>> * *vc_env = query_vcvarsall(VERSION, plat_spec)
>> *File "C:\Python27\lib\distutils\msvc9compiler.py", line 299, in
>> query_vcvarsall
>> * *raise ValueError(str(list(result.keys())))
>> ValueError: [u'path']
>>
>> --------------
>> and when I manually run vcvarsall (which is in PATH), I get the
>> aforementioned linker errors:
>> --------------
>>
>> C:\workingdir\pycrypto>python setup.py install
>> running install
>> running build
>> running build_py
>> running build_ext
>> building 'Crypto.Random.OSRNG.winrandom' extension
>> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c
>> /nologo /Ox /MD /W3 /GS- /DNDEBUG -Isrc/ -Isrc/inc-msvc/
>> -IC:\Python27\include -IC:\Python27 \PC /Tcsrc/winrand.c
>> /Fobuild\temp.win-amd64-2.7\Release\src/winrand.obj winrand.c
>> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\link.exe
>> /DLL /nologo /INCREMENTAL:NO /LIBPATH:C:\Python27\libs
>> /LIBPATH:C:\Python27\PCbuild\amd64 ws2 _32.lib advapi32.lib
>> /EXPORT:initwinrandom build\temp.win-amd64-2.7\Release\src/
>> winrand.obj /OUT:build\lib.win-amd64-2.7\Crypto\Random\OSRNG\winrandom.pyd /IMPL
>> IB:build\temp.win-amd64-2.7\Release\src\winrandom.lib
>> /MANIFESTFILE:build\temp.win-amd64-2.7\Release\src\winrandom.pyd.manifest
>> * Creating library build\temp.win-amd64-2.7\Release\src\winrandom.lib
>> and object build\temp.win-amd64-2.7\Release\src\winrandom.exp
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp__PyObject_Free referenced in function _WRdealloc
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp__PyExc_SystemError referenced in function _WRdealloc
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp__PyErr_Format referenced in function _WRdealloc
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp__PyExc_TypeError referenced in function _WRdealloc
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp___PyObject_New referenced in function _winrandom_new
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp__PyArg_ParseTupleAndKeywords referenced in function
>> _winrandom_new
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp__PyString_FromStringAndSize referenced in function _WR_get_bytes
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp__PyMem_Free referenced in function _WR_get_bytes
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp__PyErr_NoMemory referenced in function _WR_get_bytes
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp__PyMem_Malloc referenced in function _WR_get_bytes
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp__PyErr_SetString referenced in function _WR_get_bytes
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp__PyExc_ValueError referenced in function _WR_get_bytes
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp__PyArg_ParseTuple referenced in function _WR_get_bytes
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp__Py_FindMethod referenced in function _WRgetattr
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp__PyInt_FromLong referenced in function _WRgetattr
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp__Py_FatalError referenced in function _initwinrandom
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp__PyErr_Occurred referenced in function _initwinrandom
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp__PyModule_AddStringConstant referenced in function
>> _initwinrandom
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp__PyModule_AddIntConstant referenced in function _initwinrandom
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp__Py_InitModule4 referenced in function _initwinrandom
>> winrand.obj : error LNK2019: unresolved external symbol
>> __imp__PyType_Type referenced in function _initwinrandom
>> build\lib.win-amd64-2.7\Crypto\Random\OSRNG\winrandom.pyd : fatal error LNK1120:
>> *21 unresolved externals
>> error: command '"C:\Program Files (x86)\Microsoft Visual Studio
>> 9.0\VC\BIN\link.exe"' failed with exit status 1120
>>

>
> It almost seems that python can't find all its files. Are you using a
> macro or batch file to invoke python. I actually used
>
> "c:\x64\Python27\python.exe setup.py install"
>
> IIRC, I've had issues with a DOSKEY macro before so now I explicitly
> use the full path to python.exe.
>
> Otherwise I'm stumped.
>> On Tue, Mar 13, 2012 at 2:59 PM, *<casevh@gmail.com> wrote:
>>> On Monday, March 12, 2012 1:38:29 PM UTC-7, Alec Taylor wrote:
>>>> On a brand new Windows install now, with a brand new VS8 installed
>>>> with new YASM and MPIR in c:\usr\src\include and c:\usr\src\lib.
>>>>
>>>> But it still isn't working:
>>>>
>>> This was a little challenging. I looked through the setup.py to figure out what assumptions their build process made. First, the file pycrypto-2.5\src\inc-msvc\config.h must be modified. Below is the file I used:
>>>
>>> config.h
>>> ================================================== =================
>>> /* Define to 1 if you have the declaration of `mpz_powm', and to 0 if you
>>> * don't. */
>>> #define HAVE_DECL_MPZ_POWM 1
>>>
>>> /* Define to 1 if you have the declaration of `mpz_powm_sec', and to 0 if you
>>> * don't. */
>>> #define HAVE_DECL_MPZ_POWM_SEC 0
>>>
>>> /* Define to 1 if you have the `gmp' library (-lgmp). */
>>> #undef HAVE_LIBGMP
>>>
>>> /* Define to 1 if you have the `mpir' library (-lmpir). */
>>> #define HAVE_LIBMPIR 1
>>>
>>> /* Define to 1 if you have the <stdint.h> header file. */
>>> #define HAVE_STDINT_H 1
>>> ================================================== =================
>>>
>>> Although I was able to specify an include directory for mpir.h with -Ic:\usr\include, I was not able specify a lib directory with -Lc:\usr\lib. Itlooks like setup.py does not honor the -L option. So I finally gave up andjust copied the mpir.h file into my Python27\include directory and the mpir.lib file into my Python27\libs directory.
>>>
>>> After copying the files "python setup.py install" was successful. I created a binary installer with "python setup.py bdist-wininst".
>>>
>>> There may be a cleaner way to build PyCrypto, but these steps worked for me.
>>>
>>> casevh
>>> --
>>> http://mail.python.org/mailman/listinfo/python-list

Reply With Quote
  #13 (permalink)  
Old 03-14-2012, 08:47 AM
Alec Taylor
Guest
 
Posts: n/a
Default Re: PyCrypto builds neither with MSVC nor MinGW

Oh wait, just realised it was loading the (x86) tools. Doing a quick
search I noticed that I didn't have the x64 components installed, so
loading up the MSVC08 setup again and installing it, then:
copying vcvarsamd64.bat to vcvarsall.bat and adding its directory
(C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\) to
PATH....

AND IT WORKS!

=D
Reply With Quote
 
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off




All times are GMT. The time now is 06:15 AM.


Copyright ©2009

LinkBacks Enabled by vBSEO 3.3.0 RC2 © 2009, Crawlability, Inc.