Page MenuHomePhabricator

Installation of `unicodedata2` is failing on Appveyor builds with x64 Python 2.6.6, 2.7.2, and 3.3.0
Closed, ResolvedPublic

Description

Searching for unicodedata2>=7.0.0-2
Reading https://pypi.python.org/simple/unicodedata2/
Downloading https://pypi.python.org/packages/d1/15/45d6b4a6f9ce48682498ba24303b2a578cc8ab934f5ef01d5388000192f9/unicodedata2-10.0.0.post2.tar.gz#md5=8d5e55787a4b89502ac0cb460564fd2b
Best match: unicodedata2 10.0.0.post2
Processing unicodedata2-10.0.0.post2.tar.gz
Writing c:\users\appveyor\appdata\local\temp\1\easy_install-ph30fk\unicodedata2-10.0.0.post2\setup.cfg
Running unicodedata2-10.0.0.post2\setup.py -q bdist_egg --dist-dir c:\users\appveyor\appdata\local\temp\1\easy_install-ph30fk\unicodedata2-10.0.0.post2\egg-dist-tmp-bgavsw
c:\projects\pywikibot-core-hdpnk\env\lib\site-packages\setuptools\dist.py:351: UserWarning: Normalizing '10.0.0-2' to '10.0.0.post2'
  normalized_version,
warning: no files found matching 'README'
unicodedata.c
./unicodedata2/py2/unicodedata.c(454) : warning C4267: '=' : conversion from 'size_t' to 'int', possible loss of data
./unicodedata2/py2/unicodedata.c(463) : warning C4267: '+=' : conversion from 'size_t' to 'int', possible loss of data
./unicodedata2/py2/unicodedata.c(1022) : warning C4267: '=' : conversion from 'size_t' to 'int', possible loss of data
unicodectype.c
unicodedata.obj : warning LNK4197: export 'initunicodedata2' specified multiple times; using first specification
   Creating library build\temp.win32-2.7\Release\./unicodedata2/py2\unicodedata2.lib and object build\temp.win32-2.7\Release\./unicodedata2/py2\unicodedata2.exp
unicodedata.obj : error LNK2001: unresolved external symbol PyObject_GenericGetAttr
unicodedata.obj : error LNK2001: unresolved external symbol PyObject_Free
unicodedata.obj : error LNK2019: unresolved external symbol __imp__PyObject_New referenced in function new_previous_version
unicodedata.obj : error LNK2019: unresolved external symbol __imp_PyErr_SetString referenced in function getuchar
unicodedata.obj : error LNK2019: unresolved external symbol __imp_PyExc_TypeError referenced in function getuchar
unicodedata.obj : error LNK2019: unresolved external symbol __imp_PyInt_FromLong referenced in function unicodedata_decimal
unicodedata.obj : error LNK2019: unresolved external symbol __imp_PyExc_ValueError referenced in function unicodedata_decimal
unicodedata.obj : error LNK2019: unresolved external symbol __imp_PyArg_ParseTuple referenced in function unicodedata_decimal
unicodedata.obj : error LNK2019: unresolved external symbol __imp_PyUnicode_Type referenced in function unicodedata_decimal
unicodedata.obj : error LNK2019: unresolved external symbol __imp_PyFloat_FromDouble referenced in function unicodedata_numeric
unicodedata.obj : error LNK2019: unresolved external symbol __imp_PyString_FromString referenced in function unicodedata_category
unicodedata.obj : error LNK2019: unresolved external symbol __imp_PyOS_snprintf referenced in function unicodedata_decomposition
unicodedata.obj : error LNK2019: unresolved external symbol __imp_PyUnicodeUCS2_Resize referenced in function nfd_nfkd
unicodedata.obj : error LNK2019: unresolved external symbol __imp_PyUnicodeUCS2_FromUnicode referenced in function nfd_nfkd
unicodedata.obj : error LNK2019: unresolved external symbol __imp_PyUnicodeUCS2_GetSize referenced in function unicodedata_normalize
unicodedata.obj : error LNK2019: unresolved external symbol __imp__Py_ctype_toupper referenced in function _gethash
unicodedata.obj : error LNK2019: unresolved external symbol __imp_Py_BuildValue referenced in function unicodedata_name
unicodedata.obj : error LNK2019: unresolved external symbol __imp_PyErr_Format referenced in function unicodedata_lookup
unicodedata.obj : error LNK2019: unresolved external symbol __imp_PyExc_KeyError referenced in function unicodedata_lookup
unicodedata.obj : error LNK2019: unresolved external symbol __imp_PyModule_AddObject referenced in function initunicodedata2
unicodedata.obj : error LNK2019: unresolved external symbol __imp_PyModule_AddStringConstant referenced in function initunicodedata2
unicodedata.obj : error LNK2019: unresolved external symbol __imp_Py_InitModule4_64 referenced in function initunicodedata2
unicodedata.obj : error LNK2019: unresolved external symbol __imp_PyType_Type referenced in function initunicodedata2
unicodectype.obj : error LNK2019: unresolved external symbol __imp__PyUnicodeUCS2_ToDecimalDigit referenced in function _PyUnicode2_IsDecimalDigit
unicodectype.obj : error LNK2019: unresolved external symbol __imp__PyUnicodeUCS2_ToDigit referenced in function _PyUnicode2_IsDigit
build\lib.win32-2.7\unicodedata2.pyd : fatal error LNK1120: 25 unresolved externals
error: Setup script exited with error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 9.0\\VC\\Bin\\amd64\\link.exe' failed with exit status 1120

Event Timeline

Dalba triaged this task as High priority.Oct 25 2017, 2:10 AM

Even limiting the version to <10.0.0 (9.0.0.post4) which has been released on Dec 19, 2016 didn't fix the issue. Therefore the problem is not in the recent release of unicodedata2.

It's worth noting that unicodedata2 9.0.0.post4 has had wheel files for python 2.6, 2.7, and 3.3, but since version 10 there are no wheels for 2.6.

However this doesn't explain the failure for 2.7.2 and 3.3.0 or my previous comment.

unicodedata2 is being installed though setup.py therefore it won't use the wheel files available on pypi

Dalba renamed this task from Installation of `unicodedata2` is failing on Appveyor builds with Python 2.7.2, 2.6.6, and 3.3.0 to Installation of `unicodedata2` is failing on Appveyor builds with Python 2.6.6, 2.7.2x64, and 3.3.0x64.Oct 25 2017, 10:25 AM
Dalba renamed this task from Installation of `unicodedata2` is failing on Appveyor builds with Python 2.6.6, 2.7.2x64, and 3.3.0x64 to Installation of `unicodedata2` is failing on Appveyor builds with x64 Python 2.6.6, 2.7.2, and 3.3.0.Oct 25 2017, 10:30 AM

The last build that has been successful installing unicodedata2 (3c26042b):

The first build that could not install unicodedata2 (c058e8fc):

Both of them are trying to install unicodedata2 10.0.0.

The change in the following lines feels wrong. The newer builds have started to treat it as win32 instead of win64? And 2.7 instead of 2.6?

-    Creating library build\temp.win-amd64-2.6\Release\./unicodedata2/py2\unicodedata2.lib and object build\temp.win-amd64-2.6\Release\./unicodedata2/py2\unicodedata2.exp

+    Creating library build\temp.win32-2.7\Release\./unicodedata2/py2\unicodedata2.lib and object build\temp.win32-2.7\Release\./unicodedata2/py2\unicodedata2.exp

Another thing to notice is the following failure in installing pip in the newer builds:

Installing pip...
Exception calling "DownloadFile" with "2" argument(s): "The request was aborted: Could not create SSL/TLS secure channel."
At line:163 char:9
+         $webclient.DownloadFile($GET_PIP_URL, $GET_PIP_PATH)
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : WebException
 
Executing: C:\Python266-x64\python.exe C:\get-pip.py
python.exe : C:\Python266-x64\python.exe: can't open file 'C:\get-pip.py': [Errno 2] No such file or directory
At line:165 char:9
+         & $python_path $GET_PIP_PATH
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (C:\Python266-x6...le or directory:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

Change 403609 had a related patch set uploaded (by Dalba; owner: Dalba):
[pywikibot/core@master] Update requirements

https://gerrit.wikimedia.org/r/403609

Change 403609 merged by jenkins-bot:
[pywikibot/core@master] Update requirements

https://gerrit.wikimedia.org/r/403609