dev-libs/openssl-1.1.0j installs /usr/include/openssl/ossl_typ.h which defines typedef struct evp_cipher_st EVP_CIPHER; typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX; but these structs don't exist anywhere. This breaks many packages some of which are reported already
The subject is misleading: openssl-1.1 is not broken. It just has a very different API. > these structs don't exist anywhere. This is intentional, see https://wiki.openssl.org/index.php/OpenSSL_1.1.0_Changes > This breaks many packages Packages have to be modified to use the openssl-1.1 API. Since this API is so vastly different, this can mean an almost complete rewrite for some packages. It can also mean that certain functionalities are no longer available at all for some packages. See also bug 662246
See https://github.com/openssl/openssl/issues/962
(In reply to Martin Väth from comment #1) > The subject is misleading: openssl-1.1 is not broken. But it installs invalid typedefs - I call that broken!
> But it installs invalid typedefs A typedef to an (implicitly) declared but not defined structure is valid, see e.g. this sample code: typedef struct evp_cipher_st EVP_CIPHER; int main() { EVP_CIPHER *a = 0; return a!=0; } Of course, you get errors if you attempt to write code which uses anything else than a pointer to that type (e.g. if you want to define a variable of that type which would require the compiler to know internals of the structure like its size). But as explained in the above links, this this exactly the intention and nature of the openssl-1.1 API that such internals must not be used.
s/this this/it is/ Sorry, I am currently still too ill to think clearly. Not replying for while now.