Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 673990 - dev-libs/openssl-1.1.0j is broken and breaks many packages
Summary: dev-libs/openssl-1.1.0j is broken and breaks many packages
Status: RESOLVED INVALID
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal
Assignee: Gentoo's Team for Core System packages
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-12-29 14:56 UTC by Helmut Jarausch
Modified: 2019-01-03 06:53 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 Helmut Jarausch 2018-12-29 14:56:48 UTC
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
Comment 1 Martin Väth 2018-12-30 15:57:58 UTC
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
Comment 2 Thomas Deutschmann (RETIRED) gentoo-dev 2018-12-30 16:07:14 UTC
See https://github.com/openssl/openssl/issues/962
Comment 3 Helmut Jarausch 2018-12-30 17:41:54 UTC
(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!
Comment 4 Martin Väth 2018-12-30 18:44:48 UTC
> 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.
Comment 5 Martin Väth 2018-12-31 08:40:19 UTC
s/this this/it is/

Sorry, I am currently still too ill to think clearly. Not replying for while now.