1 |
On 07/12/16 05:40 AM, konsolebox wrote: |
2 |
> On Wed, Dec 7, 2016 at 5:16 PM, Michał Górny <mgorny@g.o> wrote: |
3 |
>> On Wed, 7 Dec 2016 16:16:45 +0800 |
4 |
>> konsolebox <konsolebox@×××××.com> wrote: |
5 |
>> |
6 |
>>> On Wed, Dec 7, 2016 at 1:23 PM, Michał Górny <mgorny@g.o> wrote: |
7 |
>>>> On Tue, 6 Dec 2016 20:11:34 -0600 |
8 |
>>>> William Hubbs <williamh@g.o> wrote: |
9 |
>>>> |
10 |
>>>>> On Tue, Dec 06, 2016 at 05:26:19PM -0500, Mike Gilbert wrote: |
11 |
>>>>>> On Tue, Dec 6, 2016 at 4:15 PM, Michał Górny <mgorny@g.o> wrote: |
12 |
>>>>>>> On Tue, 6 Dec 2016 12:54:26 -0500 |
13 |
>>>>>>> Mike Gilbert <floppym@g.o> wrote: |
14 |
>>>>>>> |
15 |
>>>>>>>> On Mon, Dec 5, 2016 at 6:13 AM, konsolebox <konsolebox@×××××.com> wrote: |
16 |
>>>>>>>>> Please consider promoting the use of tinfo flag in packages that |
17 |
>>>>>>>>> depend on sys-libs/ncurses so that they would synchronize properly |
18 |
>>>>>>>>> with sys-libs/ncurses[tinfo]. |
19 |
>>>>>>>> |
20 |
>>>>>>>> I would rather see the tinfo USE flag removed from ncurses. |
21 |
>>>>>>> |
22 |
>>>>>>> vapier doesn't consider this QA violation a QA violation. |
23 |
>>>>>>> |
24 |
>>>>>>> https://bugs.gentoo.org/487844 |
25 |
>>>>>> |
26 |
>>>>>> Perhaps QA could take some action then? |
27 |
>>>>>> |
28 |
>>>>>> Updating ~1500 ebuilds with a [tinfo=] use-dep seems like a poor solution. |
29 |
>>>>> |
30 |
>>>>> <qa hat on> |
31 |
>>>>> Our policies are in the dev manual, so please cite the violation there. |
32 |
>>>>> If you can't, this is not a qa violation, so please don't call it one. |
33 |
>>>>> </qa hat> |
34 |
>>>>> |
35 |
>>>>> I don't see a problem with the use flag and suggest updating the other ebuilds. |
36 |
>>>> |
37 |
>>>> The flag randomly changes ABI, breaking all reverse dependencies. |
38 |
>>>> Please tell me this is a good practice. |
39 |
>>> |
40 |
>>> And there you had just proven that the ncurses package is installed in |
41 |
>>> two modes, showing that a flag like tinfo is needed to represent them. |
42 |
>>> It's not the ncurses package's fault. It's the depending packages' |
43 |
>>> responsibility to properly adapt to it. |
44 |
>> |
45 |
>> Packages are not intelligent beings, so they can't have responsibility. |
46 |
> |
47 |
> Of course. |
48 |
> |
49 |
>> Package maintainers have. You can't expect people to spend a lot of |
50 |
>> time updating a lot of packages every time a new ABI-breaking flag is |
51 |
>> suddenly introduced in a core package, if it's not even clear if it |
52 |
>> going to stay long-term. |
53 |
> |
54 |
> So you're suggesting to wait and keep things [partly] broken until |
55 |
> then. Why not fix things first then remove the [-tinfo] feature when |
56 |
> everything no longer needs it instead. This is even just a one-time |
57 |
> solution, and is not much different with the massive number of |
58 |
> pkg-config patches currently being implemented among ebuilds. (Again, |
59 |
> I'm not exactly liking the use of pkg-config. I'd rather have a |
60 |
> simple export since it's good enough, easier to implement, less |
61 |
> compromising with the source, and is more universal.) |
62 |
> |
63 |
|
64 |
Here's the thing -- ncurses provides all functionality regardless of |
65 |
whether it's split into two libs (libncurses+libtinfo) or not. So |
66 |
what this flag is really doing is providing the capability of linking |
67 |
to just part of ncurses instead of all of it, if a project desires. |
68 |
And projects(binary ones at that) are doing this, which is why we have |
69 |
some deps that require the tinfo flag to be enabled currently. |
70 |
|
71 |
There is only one instance of a dependency atom that requires the |
72 |
tinfo flag to be disabled, and that package is an old game whos build |
73 |
system and ebuild is flawed in this regard. All others are fine with |
74 |
the flag being enabled so far as I can tell (and if they're not then |
75 |
it's a bug that needs to be addressed anyhow). |
76 |
|
77 |
SO, in summary, it would seem to make sense (since anything prebuilt |
78 |
will work as-is, and anything compiled will be built to work with it) |
79 |
to remove the tinfo flag but force libtinfo to be built and installed |
80 |
-- simply make it non-optional. Additionally, we can set |
81 |
SLOT="0/6tinfo" which will trigger subslot rebuilds to ensure anything |
82 |
that may need to be rebuilt to link to both libncurses and libtinfo |
83 |
will be rebuilt when the tinfo-IUSE-less version gets installed. |
84 |
|
85 |
We not only have a solution that'll address the |
86 |
ABI-break-on-USE-change issue, but also a migration path that will be |
87 |
transparent to users via a -uDN @world. I call that a win-win. The |
88 |
only thing we lose is the easy ability to build an all-in-one |
89 |
libncurses. So if there is an actual need for that which we have yet |
90 |
to find, this is an official request for comments to let us know. |