The proposed removal of pypy3 [armhf] is based on an incorrect
assumption. This failure is not specific to armhf, and it has nothing to
do with setuptools >= 80 or Debian's dfsg-2 (which only addressed
autopkgtest runner behavior).

The actual root cause is the transition to OpenSSL 4.0 in Ubuntu
stonking (libssl-dev 4.0.1-1ubuntu4, libssl4).

1. Why other architectures are currently marked "built":
Looking at the build dates in Launchpad:
- amd64 (build #32914291): built on 2026-05-29 with libssl-dev:amd64 
(3.5.5-1ubuntu3)
- arm64 (build #32914293): built on 2026-05-29 with libssl-dev:arm64 
(3.5.5-1ubuntu3)
- armhf (build #32914294): built on 2026-09-24 with libssl-dev:armhf 
(4.0.1-1ubuntu4)

Ubuntu stonking uploaded OpenSSL 4.0 in August 2026. The armhf build was
dispatched in late September and was the only architecture to build
against OpenSSL 4.0.1.

2. Build failure details against OpenSSL 4.0:
pypy3 bundles CFFI OpenSSL bindings in lib_pypy/_cffi_ssl (derived from 
python-cryptography):
- In OpenSSL 4.0, OPENSSL_NO_ENGINE is defined in <openssl/configuration.h>. 
However, <openssl/engine.h> is no longer wrapped in #ifndef OPENSSL_NO_ENGINE 
and still declares:
    ENGINE_FUNC(ENGINE *, ENGINE_by_id, (const char *id), NULL)
  Meanwhile, lib_pypy/_cffi_ssl/_cffi_src/openssl/engine.py checks #ifdef 
OPENSSL_NO_ENGINE and declares a dummy function pointer:
    ENGINE *(*ENGINE_by_id)(const char *) = NULL;
  This causes a symbol conflict:
    _pypy_openssl.c:1258:11: error: ‘ENGINE_by_id’ redeclared as different kind 
of symbol
- OpenSSL 4.0 makes struct asn1_string_st opaque. Direct member access and 
sizeof() fail:
    _pypy_openssl.c:60936:13: error: invalid use of incomplete typedef 
‘ASN1_OCTET_STRING’
    _pypy_openssl.c:61271:12: error: invalid application of ‘sizeof’ to 
incomplete type ‘ASN1_OCTET_STRING’
- Legacy protocol methods (SSLv3_client_method, TLSv1_1_method) are completely 
removed.

3. Verification on x86_64:
We extracted libssl-dev 4.0.1 headers and compiled the exact snippet on x86_64:

$ cat test_openssl4.c
#include <openssl/engine.h>
#include <openssl/asn1.h>

#ifdef OPENSSL_NO_ENGINE
ENGINE *(*ENGINE_by_id)(const char *) = NULL;
#endif

size_t get_size(void) {
    return sizeof(ASN1_OCTET_STRING);
}

$ gcc -I/usr/include/openssl4/arm-linux-gnueabihf -I/usr/include/openssl4 -c 
test_openssl4.c
test_openssl4.c:5:11: error: ‘ENGINE_by_id’ redeclared as different kind of 
symbol
    5 | ENGINE *(*ENGINE_by_id)(const char *) = NULL;
      |           ^~~~~~~~~~~~
In file included from test_openssl4.c:1:
/usr/include/openssl4/openssl/engine.h:421:23: note: previous declaration of 
‘ENGINE_by_id’ with type ‘ENGINE *(const char *)’
  421 | ENGINE_FUNC(ENGINE *, ENGINE_by_id, (const char *id), NULL)
test_openssl4.c: In function ‘get_size’:
test_openssl4.c:10:19: error: invalid application of ‘sizeof’ to incomplete 
type ‘ASN1_OCTET_STRING’
   10 |     return sizeof(ASN1_OCTET_STRING);

If a rebuild is triggered for amd64 or arm64 in stonking right now, both
will fail with the exact same error.

Removing the armhf binary does not solve the underlying breakage in
pypy3 caused by OpenSSL 4.0 across the archive.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2168487

Title:
  RM: pypy3 [armhf] - FTBFS, blocking migration

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/pypy3/+bug/2168487/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to