1 |
вт, 29 дек. 2020 г. в 13:33, David Seifert <soap@g.o>: |
2 |
> |
3 |
> On Tue, 2020-12-29 at 13:21 +0000, Peter Stuge wrote: |
4 |
> > Michał Górny wrote: |
5 |
> > > > 2. Install them into different prefixes (eg /usr/lib/openssl + |
6 |
> > > > /usr/lib/libressl and have the linker link to a specific version, |
7 |
> > > > /usr/include/{openssl,libressl} too). |
8 |
> > > |
9 |
> > > For the record, this is something I've been wondering about for a |
10 |
> > > long |
11 |
> > > time. However, there are two problems with that: a small one |
12 |
> > > and a huge one. |
13 |
> > > |
14 |
> > > The small problem is that this requires a lot of additional |
15 |
> > > downstream |
16 |
> > > work. I mean, you have to explicitly support the choice in ebuilds, |
17 |
> > > and this means making things even harder for newcomers. |
18 |
> > |
19 |
> > pkg-config/pkgconf and .pc files can help with this part, taking care |
20 |
> > of all abstraction if/when downstream uses a libressl.pc. |
21 |
> |
22 |
> As we have learned from the ncurses[tinfo] debacle, 80% of build systems |
23 |
> don't use the .pc files, and just guess "-lssl" flags and a bunch of |
24 |
> include dirs. Hence, this boils down to patching a mountain of build |
25 |
> systems again, which while being the ultimately correct way, is a pipe |
26 |
> dream. |
27 |
|
28 |
If it's the ultimately correct way, such patches can be sent upstream, |
29 |
regardless of whether libressl stays. |
30 |
|
31 |
> |
32 |
> > > The big problem is that (unless I'm mistaken) we won't be able to |
33 |
> > > load |
34 |
> > > LibreSSL and OpenSSL to the same executable. So we'd actually have |
35 |
> > > to |
36 |
> > > enforce that the whole link chain links to the same SSL provider, |
37 |
> > > and effectively land pretty close to where we are now. |
38 |
> > |
39 |
> > I'd suggest investigating whether symbol versioning could help with |
40 |
> > this, |
41 |
> > or if the only way forward would indeed be to require some symbol |
42 |
> > mangling/rewriting. |
43 |
> |
44 |
> While this sounds like a theoretical solution, it isn't tractable |
45 |
> because |
46 |
> 1. We're inventing our own ABI that is incompatible with everyone else's |
47 |
> 2. We'd have to maintain a huge swamp of downstream patches |
48 |
> 3. ABI can still break even with perfect symbol versioning |
49 |
> |
50 |
> |