Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 796374 - dev-lang/python-3.8.10_p2 fails to compile with openssl-1.0.2u: error: implicit declaration of function 'SSL_CTX_set_min_proto_version'
Summary: dev-lang/python-3.8.10_p2 fails to compile with openssl-1.0.2u: error: implic...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: AMD64 Linux
: Normal normal
Assignee: Python Gentoo Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-06-16 21:08 UTC by ahudson.news
Modified: 2021-07-11 00:58 UTC (History)
3 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description ahudson.news 2021-06-16 21:08:42 UTC
On an AMD64 system with dev-libs/openssl-1.0.2u (stable amd64), gcc-9.3.0 and glibc-2.33, the recently stabilized dev-lang/python-3.8.10_p2 fails to compile. The previous dev-lang/python-3.8.9_p2 can still be (re)built successfully.


Relevant packages and flags:

[ebuild   R    ] dev-libs/openssl-1.0.2u::gentoo  USE="asm test tls-heartbeat zlib -bindist -gmp -kerberos -rfc3779 -sctp -sslv2 -sslv3* -static-libs -vanilla" ABI_X86="(64) -32 (-x32)" CPU_FLAGS_X86="(sse2)" 0 KiB
[ebuild     U  ] dev-lang/python-3.8.10_p2:3.8::gentoo [3.8.9_p2:3.8::gentoo] USE="gdbm ipv6 ncurses readline sqlite ssl test xml -bluetooth -build -examples -hardened -tk -verify-sig -wininst" 0 KiB


Error message during Python compile:

x86_64-pc-linux-gnu-gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -O2 -pipe -march=atom -fomit-frame-pointer -fwrapv -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -I./Include/internal -I./Include -I. -I/usr/include/ncursesw -I/tmp/portage/portage/dev-lang/python-3.8.10_p2/work/Python-3.8.10/Include -I/tmp/portage/portage/dev-lang/python-3.8.10_p2/work/Python-3.8.10 -c /tmp/portage/portage/dev-lang/python-3.8.10_p2/work/Python-3.8.10/Modules/md5module.c -o build/temp.linux-x86_64-3.8/tmp/portage/portage/dev-lang/python-3.8.10_p2/work/Python-3.8.10/Modules/md5module.o
/tmp/portage/portage/dev-lang/python-3.8.10_p2/work/Python-3.8.10/Modules/_ssl.c: In function '_ssl__SSLContext_impl':
/tmp/portage/portage/dev-lang/python-3.8.10_p2/work/Python-3.8.10/Modules/_ssl.c:3271:18: error: implicit declaration of function 'SSL_CTX_set_min_proto_version'; did you mean 'SSL_CTX_set_ssl_version'? [-Werror=implicit-function-declaration]
 3271 |         result = SSL_CTX_set_min_proto_version(ctx, PY_SSL_MIN_PROTOCOL);
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                  SSL_CTX_set_ssl_version
[...]
Python build finished successfully!
The necessary bits to build these optional modules were not found:
_tkinter                                                       
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

The following modules found by detect_modules() in setup.py, have been
built by the Makefile instead, as configured by the Setup files:
_abc                  atexit                pwd                
time                                                           

Failed to build these modules:
_ssl                                                           

Could not build the ssl module!
Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host().
LibreSSL 2.6.4 and earlier do not provide the necessary APIs, https://github.com/libressl-portable/portable/issues/381


Reproducible: Always

Steps to Reproduce:
1. try to upgrade python:3.8 from 3.8.9_p2 to 3.8.10_p2

Actual Results:  
fails compile

Expected Results:  
passes compile
Comment 1 ahudson.news 2021-06-16 21:10:36 UTC
(I also tried with USE=sslv3 , just in case... but that didn't help)
Comment 2 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2021-06-16 21:12:12 UTC
emerge --info please but slightly horrified you're on 1.0.2u. Why?
Comment 3 ahudson.news 2021-06-16 21:22:53 UTC
Interoperability :(

This box needs to connect to an rsync/ssh service which, last I checked, still refuses to cooperate when I am using openssl-1.1 on the client side. It's bothering me as well, but openssl-1.0.2u is technically still stable and listed as (supposedly) supported by the python:3.8 package.


emerge --info below:

Portage 3.0.18 (python 3.8.9-final-0, default/linux/amd64/17.0, gcc-9.3.0, glibc-2.33, 3.12.21-gentoo-r1 x86_64)
=================================================================
                         System Settings
=================================================================
System uname: Linux-3.12.21-gentoo-r1-x86_64-Intel-R-_Atom-TM-_CPU_C2758_@_2.40GHz-with-glibc2.2.5
KiB Mem:    32924264 total,  26249916 free
KiB Swap:     917500 total,    917500 free
Timestamp of repository gentoo: Mon, 14 Jun 2021 23:30:01 +0000
Head commit of repository gentoo: 449d7802c1c41097291ff82f28518ae7afffec3e
sh bash 5.1_p8
ld GNU ld (Gentoo 2.35.2 p1) 2.35.2
app-shells/bash:          5.1_p8::gentoo
dev-lang/perl:            5.32.1::gentoo
dev-lang/python:          2.7.18_p10::gentoo, 3.8.9_p2::gentoo
dev-util/cmake:           3.18.5::gentoo
dev-util/pkgconfig:       0.29.2::gentoo
sys-apps/baselayout:      2.7::gentoo
sys-apps/openrc:          0.42.1-r1::gentoo
sys-apps/sandbox:         2.24::gentoo
sys-devel/autoconf:       2.69-r5::gentoo
sys-devel/automake:       1.16.3-r1::gentoo
sys-devel/binutils:       2.35.2::gentoo
sys-devel/gcc:            4.7.3-r1::gentoo, 9.3.0-r2::gentoo
sys-devel/gcc-config:     2.4::gentoo
sys-devel/libtool:        2.4.6-r6::gentoo
sys-devel/make:           4.3::gentoo
sys-kernel/linux-headers: 5.10::gentoo (virtual/os-headers)
sys-libs/glibc:           2.33::gentoo
Repositories:

gentoo
    location: /usr/portage
    sync-type: rsync
    sync-uri: rsync://rsync.gentoo.org/gentoo-portage
    priority: -1000
    sync-rsync-verify-metamanifest: yes
    sync-rsync-verify-max-age: 24
    sync-rsync-verify-jobs: 1
    sync-rsync-extra-opts: 

local-overlay
    location: /usr/portage/local/local-overlay
    masters: gentoo
    priority: 0

ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="@FREE"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe -march=atom -fomit-frame-pointer"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/gnupg/qualified.txt /var/bind"
CONFIG_PROTECT_MASK="/etc/angband/gamedata/ /etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-O2 -pipe -march=atom -fomit-frame-pointer"
DISTDIR="/usr/portage/distfiles"
ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles ipc-sandbox merge-sync multilib-strict network-sandbox news parallel-fetch pid-sandbox preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms strict test unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="(redacted)"
LANG="en_US.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
LINGUAS="en en_GB de ja"
MAKEOPTS="-j8 -l10"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/tmp/portage"
USE="a52 aac acl acpi amd64 bash-completion berkdb bzip2 bzlib cjk cli crypt cscope curl dga dhcp dri elogind encode exif fam flac fortran ftp fuse gdbm gif hddtemp iconv icq idn imap ipv6 jabber jpeg jpeg2k kpathsea lapack lcms libglvnd libtirpc libwww lm_sensors loop-aes luks1_default lzo mbox mime mmx mmxext mozilla msn multilib ncurses nls nocd nptl numpy offensive openmp pam pcre pdf pic png posix postgres python rdesktop readline recode samba sasl seccomp slang sockets socks5 sox spell split-usr sse sse2 ssl ssse3 tcpd test tiff unicode vhosts vim-syntax vnc xattr xml zlib" ABI_X86="64" ADA_TARGET="gnat_2018" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" APACHE2_MODULES="actions alias auth_basic auth_digest authn_anon authn_dbd authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock dbd deflate dir disk_cache env expires ext_filter file_cache filter headers ident imagemap include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif so speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2" CURL_SSL="openssl" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 timing tsip tripmate tnt ublox ubx" GRUB_PLATFORMS="multiboot efi-64 pc" INPUT_DEVICES="libinput" KERNEL="linux" L10N="en" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php7-3 php7-4" POSTGRES_TARGETS="postgres11" PYTHON_SINGLE_TARGET="python3_8" PYTHON_TARGETS="python3_8" RUBY_TARGETS="ruby26" USERLAND="GNU" VIDEO_CARDS="dummy" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq proto steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CC, CPPFLAGS, CTARGET, CXX, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, RUSTFLAGS
[+] Comment 4 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2021-06-16 21:30:02 UTC Comment hidden (obsolete)
Comment 5 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2021-06-16 21:30:33 UTC
(In reply to ahudson.news from comment #3)
> Interoperability :(
> 
> This box needs to connect to an rsync/ssh service which, last I checked,
> still refuses to cooperate when I am using openssl-1.1 on the client side.
> It's bothering me as well, but openssl-1.0.2u is technically still stable
> and listed as (supposedly) supported by the python:3.8 package.
> 


Honestly, I'm worried there's not too much we can do for you. OpenSSL 1.0.2* came out in 2016.

It's possible there are some patches out there but this really feels like a stretch. I'm worried about
the security of your system too. Let's see what python@ says but I'm not optimistic (sorry).
Comment 6 ahudson.news 2021-06-16 21:40:19 UTC
I agree it's a stretch, and if it doesn't have a reasonable solution and upstream also can not be expected to fix it, then the result might just be that we have to flag 1.0.2 as no longer supported in the ebuild. I was just surprised that it suddenly broke during a minor update.
Comment 7 Larry the Git Cow gentoo-dev 2021-07-11 00:58:02 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=045920ca3310f9ac84e407eb826ee425dadd1968

commit 045920ca3310f9ac84e407eb826ee425dadd1968
Author:     Sam James <sam@gentoo.org>
AuthorDate: 2021-07-11 00:57:37 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2021-07-11 00:57:37 +0000

    dev-lang/python: depend on newer OpenSSL (>= 1.1.1)
    
    Upstream dropped compatibility and we don't have the capacity to maintain
    backports to an unsupported version of OpenSSL. The last version to
    work is ~3.8.6.
    
    No revision bump required given this is a build-time failure and we already
    depend on OpenSSL with a subslot operator (which handles upgrades/downgrades
    correctly).
    
    Bug: https://bugs.python.org/issue43669
    Closes: https://bugs.gentoo.org/796374
    Signed-off-by: Sam James <sam@gentoo.org>

 dev-lang/python/python-3.10.0_beta2.ebuild | 2 +-
 dev-lang/python/python-3.10.0_beta3.ebuild | 2 +-
 dev-lang/python/python-3.10.0_beta4.ebuild | 2 +-
 dev-lang/python/python-3.7.10_p6.ebuild    | 2 +-
 dev-lang/python/python-3.7.11.ebuild       | 2 +-
 dev-lang/python/python-3.8.10_p2.ebuild    | 2 +-
 dev-lang/python/python-3.8.11.ebuild       | 2 +-
 dev-lang/python/python-3.9.5_p2.ebuild     | 2 +-
 dev-lang/python/python-3.9.6.ebuild        | 2 +-
 9 files changed, 9 insertions(+), 9 deletions(-)