[MacPorts] #63366: python27: OpenSSL error causing hashlib to malfunction

MacPorts noreply at macports.org
Fri Aug 13 16:33:31 UTC 2021


#63366: python27: OpenSSL error causing hashlib to malfunction
-------------------------+-------------------------------------------------
  Reporter:  Lord-       |      Owner:  (none)
  Kamina                 |
      Type:  defect      |     Status:  new
  Priority:  Normal      |  Milestone:
 Component:  ports       |    Version:
Resolution:              |   Keywords:  python27 py27 python2 openssl
      Port:  python27    |  hashlib sqlite3
-------------------------+-------------------------------------------------
Description changed by Lord-Kamina:

Old description:

> So... I originally noticed these errors a couple days ago when trying to
> build `qt5-qtwebengine`. After some google, I found identical errors from
> people running Homebrew, which I've copied below,
>
> {{{
> ERROR:root:code for hash md5 was not found.
> Traceback (most recent call last):
>   File
> "/usr/local/Cellar/python at 2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py",
> line 147, in <module>
>     globals()[__func_name] = __get_hash(__func_name)
>   File
> "/usr/local/Cellar/python at 2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py",
> line 97, in __get_builtin_constructor
>     raise ValueError('unsupported hash type ' + name)
> ValueError: unsupported hash type md5
> ERROR:root:code for hash sha1 was not found.
> Traceback (most recent call last):
>   File
> "/usr/local/Cellar/python at 2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py",
> line 147, in <module>
>     globals()[__func_name] = __get_hash(__func_name)
>   File
> "/usr/local/Cellar/python at 2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py",
> line 97, in __get_builtin_constructor
>     raise ValueError('unsupported hash type ' + name)
> ValueError: unsupported hash type sha1
> ERROR:root:code for hash sha224 was not found.
> Traceback (most recent call last):
>   File
> "/usr/local/Cellar/python at 2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py",
> line 147, in <module>
>     globals()[__func_name] = __get_hash(__func_name)
>   File
> "/usr/local/Cellar/python at 2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py",
> line 97, in __get_builtin_constructor
>     raise ValueError('unsupported hash type ' + name)
> }}}
>
> And these were corrected by using OpenSSL-1.0. I tried that, everything
> went without a hitch and thus I made https://github.com/macports
> /macports-ports/pull/11868
>
> @jmroot pointed out that he didn't have the same issue and thus, this was
> probably a symptom and not the actual issue.
>
> I did some more digging and I think I found what's actually happening.
>
> For context, I build most of my ports targetting older systems. In this
> case I was targetting 10.13 (although I also tried 10.12 and 10.14 and
> the error persisted).
>
> Checking the python build log I saw the following:
>
> {{{
> usr/bin/clang -bundle -undefined dynamic_lookup -m64 -mmacosx-version-
> min=10.14
> -Wl,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk
> -arch x86_64
> build/temp.macosx-10.13-x86_64-2.7/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_python27/python27/work/Python-2.7.18/Modules/_sqlite/cache.o
> build/temp.macosx-10.13-x86_64-2.7/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_python27/python27/work/Python-2.7.18/Modules/_sqlite/connection.o
> build/temp.macosx-10.13-x86_64-2.7/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_python27/python27/work/Python-2.7.18/Modules/_sqlite/cursor.o
> build/temp.macosx-10.13-x86_64-2.7/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_python27/python27/work/Python-2.7.18/Modules/_sqlite/microprotocols.o
> build/temp.macosx-10.13-x86_64-2.7/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_python27/python27/work/Python-2.7.18/Modules/_sqlite/module.o
> build/temp.macosx-10.13-x86_64-2.7/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_python27/python27/work/Python-2.7.18/Modules/_sqlite/prepare_protocol.o
> build/temp.macosx-10.13-x86_64-2.7/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_python27/python27/work/Python-2.7.18/Modules/_sqlite/row.o
> build/temp.macosx-10.13-x86_64-2.7/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_python27/python27/work/Python-2.7.18/Modules/_sqlite/statement.o
> build/temp.macosx-10.13-x86_64-2.7/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_python27/python27/work/Python-2.7.18/Modules/_sqlite/util.o
> -L/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/lib
> -lsqlite3 -o build/lib.macosx-10.13-x86_64-2.7/_sqlite3.so
> -Wl,-search_paths_first
> *** WARNING: renaming "_sqlite3" since importing it failed:
> dlopen(build/lib.macosx-10.13-x86_64-2.7/_sqlite3.so, 2): Symbol not
> found: _sqlite3_enable_load_extension
>   Referenced from: build/lib.macosx-10.13-x86_64-2.7/_sqlite3.so
>   Expected in: flat namespace
>  in build/lib.macosx-10.13-x86_64-2.7/_sqlite3.so
>
> Python build finished, but the necessary bits to build these modules were
> not found:
> _ssl               bsddb185           dl
> gdbm               imageop            linuxaudiodev
> ossaudiodev        spwd               sunaudiodev
> To find the necessary bits, look in setup.py in detect_modules() for the
> module's name.
>

> Failed to build these modules:
> _sqlite3
> }}}
>
> Running `otool -L` on the failed .so file showed me it was built against
> /usr/lib/libsqlite3.dylib instead of the macports version.
>
> Adding a `-L/opt/local/lib` to the `configure.ldflags` when building
> python27 makes it link against the macports library instead, eliminating
> the above errors.

New description:

 So... I originally noticed these errors a couple days ago when trying to
 build `qt5-qtwebengine`. After some google, I found identical errors from
 people running Homebrew, which I've copied below,

 {{{
 ERROR:root:code for hash md5 was not found.
 Traceback (most recent call last):
   File
 "/usr/local/Cellar/python at 2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py",
 line 147, in <module>
     globals()[__func_name] = __get_hash(__func_name)
   File
 "/usr/local/Cellar/python at 2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py",
 line 97, in __get_builtin_constructor
     raise ValueError('unsupported hash type ' + name)
 ValueError: unsupported hash type md5
 ERROR:root:code for hash sha1 was not found.
 Traceback (most recent call last):
   File
 "/usr/local/Cellar/python at 2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py",
 line 147, in <module>
     globals()[__func_name] = __get_hash(__func_name)
   File
 "/usr/local/Cellar/python at 2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py",
 line 97, in __get_builtin_constructor
     raise ValueError('unsupported hash type ' + name)
 ValueError: unsupported hash type sha1
 ERROR:root:code for hash sha224 was not found.
 Traceback (most recent call last):
   File
 "/usr/local/Cellar/python at 2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py",
 line 147, in <module>
     globals()[__func_name] = __get_hash(__func_name)
   File
 "/usr/local/Cellar/python at 2/2.7.15_3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/hashlib.py",
 line 97, in __get_builtin_constructor
     raise ValueError('unsupported hash type ' + name)
 }}}

 And these were corrected by using OpenSSL-1.0. I tried that, everything
 went without a hitch and thus I made https://github.com/macports/macports-
 ports/pull/11868

 @jmroot pointed out that he didn't have the same issue and thus, this was
 probably a symptom and not the actual issue.

 I did some more digging and I think I found what's actually happening.

 For context, I build most of my ports targetting older systems. In this
 case I was targetting 10.13 (although I also tried 10.12 and 10.14 and the
 error persisted).

 Checking the python build log I saw the following:

 {{{
 usr/bin/clang -bundle -undefined dynamic_lookup -m64 -mmacosx-version-
 min=10.13
 -Wl,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk
 -arch x86_64
 build/temp.macosx-10.13-x86_64-2.7/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_python27/python27/work/Python-2.7.18/Modules/_sqlite/cache.o
 build/temp.macosx-10.13-x86_64-2.7/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_python27/python27/work/Python-2.7.18/Modules/_sqlite/connection.o
 build/temp.macosx-10.13-x86_64-2.7/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_python27/python27/work/Python-2.7.18/Modules/_sqlite/cursor.o
 build/temp.macosx-10.13-x86_64-2.7/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_python27/python27/work/Python-2.7.18/Modules/_sqlite/microprotocols.o
 build/temp.macosx-10.13-x86_64-2.7/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_python27/python27/work/Python-2.7.18/Modules/_sqlite/module.o
 build/temp.macosx-10.13-x86_64-2.7/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_python27/python27/work/Python-2.7.18/Modules/_sqlite/prepare_protocol.o
 build/temp.macosx-10.13-x86_64-2.7/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_python27/python27/work/Python-2.7.18/Modules/_sqlite/row.o
 build/temp.macosx-10.13-x86_64-2.7/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_python27/python27/work/Python-2.7.18/Modules/_sqlite/statement.o
 build/temp.macosx-10.13-x86_64-2.7/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_lang_python27/python27/work/Python-2.7.18/Modules/_sqlite/util.o
 -L/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/lib
 -lsqlite3 -o build/lib.macosx-10.13-x86_64-2.7/_sqlite3.so
 -Wl,-search_paths_first
 *** WARNING: renaming "_sqlite3" since importing it failed:
 dlopen(build/lib.macosx-10.13-x86_64-2.7/_sqlite3.so, 2): Symbol not
 found: _sqlite3_enable_load_extension
   Referenced from: build/lib.macosx-10.13-x86_64-2.7/_sqlite3.so
   Expected in: flat namespace
  in build/lib.macosx-10.13-x86_64-2.7/_sqlite3.so

 Python build finished, but the necessary bits to build these modules were
 not found:
 _ssl               bsddb185           dl
 gdbm               imageop            linuxaudiodev
 ossaudiodev        spwd               sunaudiodev
 To find the necessary bits, look in setup.py in detect_modules() for the
 module's name.


 Failed to build these modules:
 _sqlite3
 }}}

 Running `otool -L` on the failed .so file showed me it was built against
 /usr/lib/libsqlite3.dylib instead of the macports version.

 Adding a `-L/opt/local/lib` to the `configure.ldflags` when building
 python27 makes it link against the macports library instead, eliminating
 the above errors.

--

-- 
Ticket URL: <https://trac.macports.org/ticket/63366#comment:1>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list