Re: [gentoo-dev] Stable masks on multilib packages

2014-04-02 Thread Matt Turner
On Wed, Apr 2, 2014 at 2:25 AM, Ben de Groot  wrote:
> I'm strongly considering reverting these changes in the packages I
> maintain. I'm tired of having to deal time and again with multilib
> breakage.
>
> Either that, or someone else can take over primary maintainership.

I'd be happy for you to remove yourself as a maintainer of cairo.
You've got one commit (not removing ebuilds) since July 2012,
according to the changelog. At least three X11 team members have more
commits than that, and I don't know how much sense it makes to have a
non-X11-team member being the primary maintainer of a critical X11
package anyway.



Re: [gentoo-dev] Stable masks on multilib packages

2014-04-02 Thread Ciaran McCreesh
On Tue, 1 Apr 2014 20:58:30 -0400
Rich Freeman  wrote:
> On Tue, Apr 1, 2014 at 8:13 PM, Patrick Lauer 
> wrote:
> > Now let's just continue to ignore the existing multilib-portage
> > work so we can claim it's irrelevant, while shifting the conditions
> > for accepting it whenever it is convenient, while silently adding
> > the competing method in-tree so it's all decided now anyway ...
> 
> Conditions for accepting it?  What are those, and how have they
> changed?

The conditions have always been "someone has to be able to explain
exactly what the changes are"...

-- 
Ciaran McCreesh


signature.asc
Description: PGP signature


Re: [gentoo-dev] Stable masks on multilib packages

2014-04-02 Thread Alexandre Rostovtsev
On Wed, 2014-04-02 at 17:25 +0800, Ben de Groot wrote:
> I'm strongly considering reverting these changes in the packages I
> maintain. I'm tired of having to deal time and again with multilib
> breakage.
> 
> Either that, or someone else can take over primary maintainership.

Ben, if you are uncomfortable with multilib changes in cairo and don't
want to see it unmasked ~arch, I am volunteering to co-maintain it.
Assign any multilib issues with it to me. It's worth it to me because I
am a wine maintainer, and wine will benefit enormously once all of its
dependencies have finally been multilibbed and we can unmask the flags
in stable.


signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] Stable masks on multilib packages

2014-04-02 Thread Alexandre Rostovtsev
On Wed, 2014-04-02 at 17:14 +0800, Ben de Groot wrote:
> On 1 April 2014 21:58, Alexandre Rostovtsev  wrote:
> > On Tue, 2014-04-01 at 13:13 +0800, Ben de Groot wrote:
> >> On 1 April 2014 06:16, Michał Górny  wrote:
> >> > Hello, all.
> >> >
> >> > The late multilib ppc issues made me re-check our stable masks on
> >> > abi_x86_* flags and, honestly, I'm not sure if we're doing things
> >> > the right way.
> >> >
> >> > That said, I have an alternate idea inspired by the ppc breakage.
> >> >
> >> > Your thoughts?
> >>
> >> In my opinion your multilib approach introduces an unnecessary degree
> >> of complexity, which --as has been shown here again-- is prone to
> >> breakage.
> >>
> >> It would be best for our beloved distro to revert all the multilib
> >> changes, and try a different approach, or leave this prone-to-breakage
> >> implementation to an overlay for the few people who would actually
> >> benefit from it.
> >
> > Speaking as a wine maintainer, the emul-linux-x86-* approach has many
> > times been proven to be an embarrassing failure and the main source of
> > pain and frustration for wine users. The sooner emul-linux-x86-* can be
> > removed from the tree, the better for Gentoo.
> 
> I would like to see an honest cost-benefit analysis of the
> emul-linux-x86 approach compared to the multilib eclass approach.
> Because in my experience the latter introduces more breakage and
> higher maintenance costs.

libfoo-1.5 becomes available ~arch. Users install it. Users realize that
libfoo-1.5's headers are incompatible with libfoo-1.4 binaries from
emul-linux-x86-bar after they try to build wine and get a failure 30
minutes into the compile. So users complain about gentoo's wine support.

libfoo-1.5 is stabilized. Of course, emul-linux-x86-bar has not been
updated immediately, because *all* parts of emul-linux-x86 need to be
updated at once due to a complex network of library interdependencies,
and then manually checked for sanity, and the folks taking care of
emul-linux-x86 can only really afford to do it 2, max 3 times per year.
So more users install libfoo-1.5, and see wine fail, and complain more
about gentoo's wine support until a new emul-linux-x86 release is rolled
out a couple months later.

But meanwhile, libbaz-5.0 becomes available in ~arch, and its headers
are backwards-incompatible with libbaz-4.2 binaries in
emul-linux-x86-wombatlibs...

And this happens, oh, only every time there are API changes in libpng,
jpeg, llvm, gnutls, libxml2, pulseaudio, etc.


signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] Stable masks on multilib packages

2014-04-02 Thread Mike Frysinger
On Wed 02 Apr 2014 17:14:02 Ben de Groot wrote:
> On 1 April 2014 21:58, Alexandre Rostovtsev  wrote:
> > On Tue, 2014-04-01 at 13:13 +0800, Ben de Groot wrote:
> >> On 1 April 2014 06:16, Michał Górny  wrote:
> >> > Hello, all.
> >> > 
> >> > The late multilib ppc issues made me re-check our stable masks on
> >> > abi_x86_* flags and, honestly, I'm not sure if we're doing things
> >> > the right way.
> >> > 
> >> > That said, I have an alternate idea inspired by the ppc breakage.
> >> > 
> >> > Your thoughts?
> >> 
> >> In my opinion your multilib approach introduces an unnecessary degree
> >> of complexity, which --as has been shown here again-- is prone to
> >> breakage.
> >> 
> >> It would be best for our beloved distro to revert all the multilib
> >> changes, and try a different approach, or leave this prone-to-breakage
> >> implementation to an overlay for the few people who would actually
> >> benefit from it.
> > 
> > Speaking as a wine maintainer, the emul-linux-x86-* approach has many
> > times been proven to be an embarrassing failure and the main source of
> > pain and frustration for wine users. The sooner emul-linux-x86-* can be
> > removed from the tree, the better for Gentoo.
> 
> I would like to see an honest cost-benefit analysis of the
> emul-linux-x86 approach compared to the multilib eclass approach.
> Because in my experience the latter introduces more breakage and
> higher maintenance costs.

the emul-linux-* approach is a terrible idea.  it has obviously proven to:
 - not scale (sorry, but x86 is not the only ABI out there people care about)
 - be a huge pita to update/maintain
 - require shipping a lot of precompiled code

the multilib eclasses aren't perfect, but they're a hell of a lot better than 
the emul-linux-* approach.  we've been carrying that crap for over 10 years 
and it's gone literally nowhere.  considering it as a viable alternative to 
the multilib eclasses is preposterous at best.
-mike

signature.asc
Description: This is a digitally signed message part.


Re: [gentoo-dev] Stable masks on multilib packages

2014-04-02 Thread Ben de Groot
On 2 April 2014 07:38, Patrick Lauer  wrote:
> On 04/01/2014 01:13 PM, Ben de Groot wrote:
>> On 1 April 2014 06:16, Michał Górny  wrote:
>>> Hello, all.
>>>
>>> The late multilib ppc issues made me re-check our stable masks on
>>> abi_x86_* flags and, honestly, I'm not sure if we're doing things
>>> the right way.
>>>
>>> That said, I have an alternate idea inspired by the ppc breakage.
>>>
>>> Your thoughts?
>>
>> In my opinion your multilib approach introduces an unnecessary degree
>> of complexity, which --as has been shown here again-- is prone to
>> breakage.
>
> And it removes any chance of writing ebuilds - I seriously have no idea
> how to fix those things now. They are multibuilds, not ebuilds.

This is part of the complexity I mentioned. I significantly raises
maintenance costs, and I'm not convinced of the benefit.

>>
>> It would be best for our beloved distro to revert all the multilib
>> changes, and try a different approach, or leave this prone-to-breakage
>> implementation to an overlay for the few people who would actually
>> benefit from it.
>>
> As a temporary stage they are kinda okish, maybe ... but ...
>
> the whole transition strategy has been very very silly and should have
> been staged in an overlay. I'd even build-test them and file bugs - just
> don't do this salami tactic of one breakage a day.
>

I'm strongly considering reverting these changes in the packages I
maintain. I'm tired of having to deal time and again with multilib
breakage.

Either that, or someone else can take over primary maintainership.

-- 
Cheers,

Ben | yngwin
Gentoo developer



Re: [gentoo-dev] Stable masks on multilib packages

2014-04-02 Thread Ben de Groot
On 1 April 2014 21:58, Alexandre Rostovtsev  wrote:
> On Tue, 2014-04-01 at 13:13 +0800, Ben de Groot wrote:
>> On 1 April 2014 06:16, Michał Górny  wrote:
>> > Hello, all.
>> >
>> > The late multilib ppc issues made me re-check our stable masks on
>> > abi_x86_* flags and, honestly, I'm not sure if we're doing things
>> > the right way.
>> >
>> > That said, I have an alternate idea inspired by the ppc breakage.
>> >
>> > Your thoughts?
>>
>> In my opinion your multilib approach introduces an unnecessary degree
>> of complexity, which --as has been shown here again-- is prone to
>> breakage.
>>
>> It would be best for our beloved distro to revert all the multilib
>> changes, and try a different approach, or leave this prone-to-breakage
>> implementation to an overlay for the few people who would actually
>> benefit from it.
>
> Speaking as a wine maintainer, the emul-linux-x86-* approach has many
> times been proven to be an embarrassing failure and the main source of
> pain and frustration for wine users. The sooner emul-linux-x86-* can be
> removed from the tree, the better for Gentoo.

I would like to see an honest cost-benefit analysis of the
emul-linux-x86 approach compared to the multilib eclass approach.
Because in my experience the latter introduces more breakage and
higher maintenance costs.

> I am aware of only two solutions to the emul-linux-x86-* problems :
> multilib-portage and multilib-build.eclass. The first requires everybody
> to switch to a new package manager. The second allows us to keep using
> portage, but requires library maintainers to add some simple boilerplate
> to their ebuilds for multilib support.
>
> Do you have yet another alternative in mind?

In my mind the emul-linux-x86 approach is more acceptable. I don't
have experience with multilib-portage, as I don't have a use case for
it. Another option, which seems to me to be more reasonable and which
has greatly lower maintenance costs, is using a chroot.

-- 
Cheers,

Ben | yngwin
Gentoo developer



Re: [gentoo-dev] Stable masks on multilib packages

2014-04-01 Thread Rich Freeman
On Tue, Apr 1, 2014 at 8:13 PM, Patrick Lauer  wrote:
> Now let's just continue to ignore the existing multilib-portage work so
> we can claim it's irrelevant, while shifting the conditions for
> accepting it whenever it is convenient, while silently adding the
> competing method in-tree so it's all decided now anyway ...

Conditions for accepting it?  What are those, and how have they changed?

Rich



Re: [gentoo-dev] Stable masks on multilib packages

2014-04-01 Thread Patrick Lauer
On 04/01/2014 10:43 PM, Rich Freeman wrote:
> On Tue, Apr 1, 2014 at 9:58 AM, Alexandre Rostovtsev
>  wrote:
>> On Tue, 2014-04-01 at 13:13 +0800, Ben de Groot wrote:
>>>
>>> In my opinion your multilib approach introduces an unnecessary degree
>>> of complexity, which --as has been shown here again-- is prone to
>>> breakage.
>>>
>>> It would be best for our beloved distro to revert all the multilib
>>> changes, and try a different approach, or leave this prone-to-breakage
>>> implementation to an overlay for the few people who would actually
>>> benefit from it.
>>
>> I am aware of only two solutions to the emul-linux-x86-* problems :
>> multilib-portage and multilib-build.eclass. The first requires everybody
>> to switch to a new package manager. The second allows us to keep using
>> portage, but requires library maintainers to add some simple boilerplate
>> to their ebuilds for multilib support.
>>
>> Do you have yet another alternative in mind?
> 
> ++
> 
> I'm all for better solutions.  I'm not in favor of abandoning
> solutions that work moderately well in favor of talking about maybe
> coming up with something better sometime down the road.
> 
> The multilib eclass isn't a perfect solution.  It will have issues in
> concept, design, and implementation.  These will come up from time to
> time.  I don't think it is productive that anytime any of these pop up
> that we end up having a discussion about just reverting it entirely.

So why do we have this discussion?

> By all means work on a competing solution.  Get it working and
> supported by portage.  When the day comes that we want to endorse one
> solution or the other as the preferred solution we can have that
> discussion.

That is hilariously funny. Wow.

Now let's just continue to ignore the existing multilib-portage work so
we can claim it's irrelevant, while shifting the conditions for
accepting it whenever it is convenient, while silently adding the
competing method in-tree so it's all decided now anyway ...





Re: [gentoo-dev] Stable masks on multilib packages

2014-04-01 Thread Patrick Lauer
On 04/01/2014 01:13 PM, Ben de Groot wrote:
> On 1 April 2014 06:16, Michał Górny  wrote:
>> Hello, all.
>>
>> The late multilib ppc issues made me re-check our stable masks on
>> abi_x86_* flags and, honestly, I'm not sure if we're doing things
>> the right way.
>>
>> That said, I have an alternate idea inspired by the ppc breakage.
>>
>> Your thoughts?
> 
> In my opinion your multilib approach introduces an unnecessary degree
> of complexity, which --as has been shown here again-- is prone to
> breakage.

And it removes any chance of writing ebuilds - I seriously have no idea
how to fix those things now. They are multibuilds, not ebuilds.
> 
> It would be best for our beloved distro to revert all the multilib
> changes, and try a different approach, or leave this prone-to-breakage
> implementation to an overlay for the few people who would actually
> benefit from it.
> 
As a temporary stage they are kinda okish, maybe ... but ...

the whole transition strategy has been very very silly and should have
been staged in an overlay. I'd even build-test them and file bugs - just
don't do this salami tactic of one breakage a day.



Re: [gentoo-dev] Stable masks on multilib packages

2014-04-01 Thread Michał Górny
Dnia 2014-04-01, o godz. 00:16:17
Michał Górny  napisał(a):

> Your thoughts?

Following the feedback on the mailing list, IRC and bugzilla, and some
of my own thoughts, I'd like to put a few important extra points I've
missed in the original mail:

1. playing with the masks will cause a large unnecessary --changed-use
rebuild for stable users, including the users of no-multilib profiles,

2. prebuilt software ebuilds are allowed to unconditionally use abi_*
flags in USE dependencies. Masking the native flags would break those
dependencies.

For those unaware, 2. here means that a pre-built x86 software can use
a single dependency like:

  dev-libs/libfoo[abi_x86_32]

that would satisfy both x86 (since abi_x86_32 is use.forced) and amd64
(by pulling in multilib).

Considering the two points above, I'd like to withdraw the idea of
adding global masks for abi_* and just leave it amd64-specific.


Additionally, the following important points were raised:

1. ulm believes that the use.force implicit IUSE magic is a bug in
portage and oughtn't be trusted upon,

2. keeping extra package.use.stable.masks for different arches seems
pretty much unmaintainable. It would mean a lot of duplicate package
lists in different profiles that need to be kept in sync.

Instead, I'd like to limit the scope of stable masks necessity and just
focus on stabilizing packages properly.


That is, the new position is:

1. we keep the flags for packages that are in emul-linux stable-masked
on amd64 until we decide to replace emul-linux,

2. we stabilize package dependencies properly so that there are no
dependency tree breakage when new ABIs are added.

Rationale: the multilib conversions are no longer moving in the fast
pace they used to, and the stabilization interest conflicts are less
likely than they were at the time of introducing
package.use.stable.masks.

Especially now that new multilib conversions are made package.masked,
we can give them enough time for people to be ready to stabilize
in some sane way.

We'd like to still keep the emul-linux-replacing packages masked
in order to keep emul-linux as single multilib provider for stable
packages. This is in order to avoid exposing stable users to issues
involved with partial conversions, and to confusing --autounmask
behavior that can possibly be created through mixing emul-linux
and multilib packages.


If nobody minds, I'm doing a repoman run now and in a few hours I
should have a list of packages that need to be stabilized in order to
clean up the dependency trees for multilib packages.

-- 
Best regards,
Michał Górny


signature.asc
Description: PGP signature


Re: [gentoo-dev] Stable masks on multilib packages

2014-04-01 Thread Michał Górny
Dnia 2014-04-01, o godz. 11:12:11
Ian Stakenvicius  napisał(a):

> -BEGIN PGP SIGNED MESSAGE-
> Hash: SHA256
> 
> On 31/03/14 06:16 PM, Michał Górny wrote:
> > Hello, all.
> > 
> > The late multilib ppc issues made me re-check our stable masks on 
> > abi_x86_* flags and, honestly, I'm not sure if we're doing things 
> > the right way. First, a quick summary.
> > 
> > 
> > Let's consider dev-libs/elfutils that has a dependency on
> > app-arch/bzip2. If we're building 32-bit elfutils, it needs 32-bit 
> > libbz2. This is enforced through a dep in form of:
> > 
> > app-arch/bzip2[${MULTILIB_USEDEP}]
> > 
> > that gets expanded into:
> > 
> > app-arch/bzip2[abi_x86_32(-)?,abi_x86_64(-)?,...,abi_mips_o32(-)?,...]
> >
> >  which means that any of the ABI_* flags that gets enabled on
> > elfutils, needs to be enabled on bzip2 as well. Of course, some of
> > use.forcing and masking gets applied here but that doesn't really
> > matter.
> > 
> > 
> > Now, since we're pretty much converting a lot of different
> > packages, some of them are eligible for stabilization earlier than
> > the others. However, the extra MULTILIB_USEDEPs enforce stabilizing
> > multilib dependencies before the actual packages which made a few
> > developers unhappy.
> > 
> > That's why we decided to stable-mask the flags on affected
> > packages. Since the flags are masked on stable, people can
> > stabilize packages independently of whether their converted deps
> > are stable or not. We will be worrying about that consistency once
> > we decide to unmask the flags.
> > 
> > The extra advantage of that is that we can avoid pushing stable
> > users into the mess involved with partial conversion of emul-linux.
> > The idea is pretty simple: we keep emul-linux for stable, and once
> > everything is ready, we stable-unmask the flags and let stable
> > users grok multilib.
> > 
> > 
> > Now, to the problem. Currently we're just stable-masking
> > abi_x86_32 on amd64. This serves the latter purpose well and seems
> > to work for the former. This is probably because the remaining flag
> > is use.forced (abi_x86_64 on amd64, and abi_x86_32 on x86) which
> > seems to add it to implicit IUSE somehow.
> > 
> > floppym has done some research w/ stable elfutils and no stable 
> > converted bzip2. It seems that if abi_x86_32 is stable.use.masked 
> > and abi_x86_64 is use.forced, repoman groks it. However, if we
> > remove abi_x86_64 from use.force, it properly reports flag mismatch
> > error (since no stable bzip2 has IUSE=abi_x86_64).
> > 
> > Now, I honestly have no idea if this implicit use.force behavior
> > is PMS-y or not, and how other PMs handle it. I can't find
> > something like this in the PMS but that doc is horribly hard to
> > cross-reference, so I might be missing something. I'd appreciate if
> > someone could help me with that.
> > 
> > 
> > That said, I have an alternate idea inspired by the ppc breakage.
> > I'm thinking of replacing the amd64 abi_x86_32 mask with a global
> > stable mask of all abi_*_* flags on the relevant packages.
> > 
> > Differences:
> > 
> > 1) old solution: native flag is forced, other flags are masked. new
> > solution: all flags are masked.
> > 
> > 2) old solution: we need to replicate the masks properly for
> > different arches/profiles. new solution: we can keep a single mask
> > for all arches.
> > 
> > 3) old solution: MULTILIB_USEDEP magically works (w/ portage at
> > least). new solution: since all flags are disabled,
> > MULTILIB_USEDEP is a no-op and old packages match correctly.
> > 
> > 4) old solution: forced native flag runs the native build. new
> > solution: fallback code runs the native build (since no flags are
> > enabled).
> > 
> > 
> > Your thoughts?
> > 
> 
> 
> ... how messy is this going to be on current systems, if implemented?
>  This -is- going to cause use flag changes on a whackload of packages,
> which at minimum I expect means a bunch of needless rebuilds.
> 
> I think it's probably best to keep with the current path, and just
> hurry up the migration on x86.  If we switch to masking all abi_*_*'s,
> then not only do we rebuild a whackload of packages now, but we also
> end up rebuilding them again when we remove the abi_*_* mask, -even
> if- the alternative abi's aren't needed.

Note that the same issue is spilling into ppc now that vapier wants to
introduce multilib there. If we keep going the current way, we need to
mask abi_ppc_32 in the ppc profiles, and that means yet another copy of
the same mask to maintain in sync.

> A note on #3: if MULTILIB_USEDEP -isnt- working on other PMs, i hope
> we have bug reports and we should work to resolve those ASAP or
> abandon the project/find a different solution.  We're over a year into
> it though (i think?) so i expect it's fine since I don't remember
> hearing of any issues yet...

I don't know how many people are using Gentoo with alternative PMs
and stable keywords. I think Paludis could be a case but then, I don't
know ho

Re: [gentoo-dev] Stable masks on multilib packages

2014-04-01 Thread Ian Stakenvicius
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA256

On 31/03/14 06:16 PM, Michał Górny wrote:
> Hello, all.
> 
> The late multilib ppc issues made me re-check our stable masks on 
> abi_x86_* flags and, honestly, I'm not sure if we're doing things 
> the right way. First, a quick summary.
> 
> 
> Let's consider dev-libs/elfutils that has a dependency on
> app-arch/bzip2. If we're building 32-bit elfutils, it needs 32-bit 
> libbz2. This is enforced through a dep in form of:
> 
> app-arch/bzip2[${MULTILIB_USEDEP}]
> 
> that gets expanded into:
> 
> app-arch/bzip2[abi_x86_32(-)?,abi_x86_64(-)?,...,abi_mips_o32(-)?,...]
>
>  which means that any of the ABI_* flags that gets enabled on
> elfutils, needs to be enabled on bzip2 as well. Of course, some of
> use.forcing and masking gets applied here but that doesn't really
> matter.
> 
> 
> Now, since we're pretty much converting a lot of different
> packages, some of them are eligible for stabilization earlier than
> the others. However, the extra MULTILIB_USEDEPs enforce stabilizing
> multilib dependencies before the actual packages which made a few
> developers unhappy.
> 
> That's why we decided to stable-mask the flags on affected
> packages. Since the flags are masked on stable, people can
> stabilize packages independently of whether their converted deps
> are stable or not. We will be worrying about that consistency once
> we decide to unmask the flags.
> 
> The extra advantage of that is that we can avoid pushing stable
> users into the mess involved with partial conversion of emul-linux.
> The idea is pretty simple: we keep emul-linux for stable, and once
> everything is ready, we stable-unmask the flags and let stable
> users grok multilib.
> 
> 
> Now, to the problem. Currently we're just stable-masking
> abi_x86_32 on amd64. This serves the latter purpose well and seems
> to work for the former. This is probably because the remaining flag
> is use.forced (abi_x86_64 on amd64, and abi_x86_32 on x86) which
> seems to add it to implicit IUSE somehow.
> 
> floppym has done some research w/ stable elfutils and no stable 
> converted bzip2. It seems that if abi_x86_32 is stable.use.masked 
> and abi_x86_64 is use.forced, repoman groks it. However, if we
> remove abi_x86_64 from use.force, it properly reports flag mismatch
> error (since no stable bzip2 has IUSE=abi_x86_64).
> 
> Now, I honestly have no idea if this implicit use.force behavior
> is PMS-y or not, and how other PMs handle it. I can't find
> something like this in the PMS but that doc is horribly hard to
> cross-reference, so I might be missing something. I'd appreciate if
> someone could help me with that.
> 
> 
> That said, I have an alternate idea inspired by the ppc breakage.
> I'm thinking of replacing the amd64 abi_x86_32 mask with a global
> stable mask of all abi_*_* flags on the relevant packages.
> 
> Differences:
> 
> 1) old solution: native flag is forced, other flags are masked. new
> solution: all flags are masked.
> 
> 2) old solution: we need to replicate the masks properly for
> different arches/profiles. new solution: we can keep a single mask
> for all arches.
> 
> 3) old solution: MULTILIB_USEDEP magically works (w/ portage at
> least). new solution: since all flags are disabled,
> MULTILIB_USEDEP is a no-op and old packages match correctly.
> 
> 4) old solution: forced native flag runs the native build. new
> solution: fallback code runs the native build (since no flags are
> enabled).
> 
> 
> Your thoughts?
> 


... how messy is this going to be on current systems, if implemented?
 This -is- going to cause use flag changes on a whackload of packages,
which at minimum I expect means a bunch of needless rebuilds.

I think it's probably best to keep with the current path, and just
hurry up the migration on x86.  If we switch to masking all abi_*_*'s,
then not only do we rebuild a whackload of packages now, but we also
end up rebuilding them again when we remove the abi_*_* mask, -even
if- the alternative abi's aren't needed.

A note on #3: if MULTILIB_USEDEP -isnt- working on other PMs, i hope
we have bug reports and we should work to resolve those ASAP or
abandon the project/find a different solution.  We're over a year into
it though (i think?) so i expect it's fine since I don't remember
hearing of any issues yet...


on a side note, to follow up -- when we do remove the masks, what're
the thoughts on perhaps changing the multilib profile on amd64 to
auto-enable abi_x86_32 flags on some packages?  Indeed, if the
toolchain is converted to multilib-build, would this be enough to
differentiate between amd64-multilib and pure64?  (bootstrapping may
of course still be a problem if users are trying to switch, but
probably not any more of a problem than it is right now, right?)



-BEGIN PGP SIGNATURE-
Version: GnuPG v2.0.22 (GNU/Linux)

iF4EAREIAAYFAlM610sACgkQ2ugaI38ACPAPoQD/TpzYLaAwLiRBSVLRII/lI1OK
fN9hOQ8wvMaHoKfuHK4A/RmUtt1G7k8HEsAhsMSWAYFUd0KdlbEd4snhcxaR6W+M
=n7yQ
--

Re: [gentoo-dev] Stable masks on multilib packages

2014-04-01 Thread Rich Freeman
On Tue, Apr 1, 2014 at 9:58 AM, Alexandre Rostovtsev
 wrote:
> On Tue, 2014-04-01 at 13:13 +0800, Ben de Groot wrote:
>>
>> In my opinion your multilib approach introduces an unnecessary degree
>> of complexity, which --as has been shown here again-- is prone to
>> breakage.
>>
>> It would be best for our beloved distro to revert all the multilib
>> changes, and try a different approach, or leave this prone-to-breakage
>> implementation to an overlay for the few people who would actually
>> benefit from it.
>
> I am aware of only two solutions to the emul-linux-x86-* problems :
> multilib-portage and multilib-build.eclass. The first requires everybody
> to switch to a new package manager. The second allows us to keep using
> portage, but requires library maintainers to add some simple boilerplate
> to their ebuilds for multilib support.
>
> Do you have yet another alternative in mind?

++

I'm all for better solutions.  I'm not in favor of abandoning
solutions that work moderately well in favor of talking about maybe
coming up with something better sometime down the road.

The multilib eclass isn't a perfect solution.  It will have issues in
concept, design, and implementation.  These will come up from time to
time.  I don't think it is productive that anytime any of these pop up
that we end up having a discussion about just reverting it entirely.

By all means work on a competing solution.  Get it working and
supported by portage.  When the day comes that we want to endorse one
solution or the other as the preferred solution we can have that
discussion.

Dirty hack or not the multilib eclass seems to be working fairly well
in practice, especially considering just how big a change it is.  The
emul-linux packages were an even dirtier hack and those worked well
for a decade.

Progress can be incremental.

Rich



Re: [gentoo-dev] Stable masks on multilib packages

2014-04-01 Thread Alexandre Rostovtsev
On Tue, 2014-04-01 at 13:13 +0800, Ben de Groot wrote:
> On 1 April 2014 06:16, Michał Górny  wrote:
> > Hello, all.
> >
> > The late multilib ppc issues made me re-check our stable masks on
> > abi_x86_* flags and, honestly, I'm not sure if we're doing things
> > the right way.
> >
> > That said, I have an alternate idea inspired by the ppc breakage.
> >
> > Your thoughts?
> 
> In my opinion your multilib approach introduces an unnecessary degree
> of complexity, which --as has been shown here again-- is prone to
> breakage.
> 
> It would be best for our beloved distro to revert all the multilib
> changes, and try a different approach, or leave this prone-to-breakage
> implementation to an overlay for the few people who would actually
> benefit from it.

Speaking as a wine maintainer, the emul-linux-x86-* approach has many
times been proven to be an embarrassing failure and the main source of
pain and frustration for wine users. The sooner emul-linux-x86-* can be
removed from the tree, the better for Gentoo.

I am aware of only two solutions to the emul-linux-x86-* problems :
multilib-portage and multilib-build.eclass. The first requires everybody
to switch to a new package manager. The second allows us to keep using
portage, but requires library maintainers to add some simple boilerplate
to their ebuilds for multilib support.

Do you have yet another alternative in mind?


signature.asc
Description: This is a digitally signed message part


Re: [gentoo-dev] Stable masks on multilib packages

2014-04-01 Thread Anthony G. Basile

On 04/01/2014 07:40 AM, Anthony G. Basile wrote:

On 04/01/2014 01:54 AM, Michał Górny wrote:

>Also, I don't see that it should be an issue, but do you think this
>might affect catalyst runs --- I have to ask because
>repairing/reconfiguring seeds is a lot of work.

Well, I think this mostly depends on whether you want multiple multilib
ABIs in stages -- or if you assume that the toolchain is enough,
and people will build other ABIs as they need.

Though I think that once toolchain switches to abi_* flags (vapier
seems to show interest in that), we will use.force the necessary ABIs
on it and its dependencies, so there should be no explicit need for
change.

However, I guess the toolchain changes will be sent out for testing
anyway, so releng can check first hand.
I have taken a non-standard approach to the hardened/linux/uclibc 
profiles where I do no inherit from arch.  There was too much cruft in 
arch, so I just mirror the relevant stuff including the abi flag 
stuff.  I understand my approach has pros/cons ...



but give out the should when 



Sorry, my fingers and brains are not in sync.  ... give out the SHOUT 
when ...



the change is being tested and I'll see if I'm about to have any 
breakage.   I currently seed at least 12 different 
arches/isa/abi/hard-soft float combinations which would be a pita to 
fix manually on native (read slow) hardware.





--
Anthony G. Basile, Ph.D.
Gentoo Linux Developer [Hardened]
E-Mail: bluen...@gentoo.org
GnuPG FP  : 1FED FAD9 D82C 52A5 3BAB  DC79 9384 FA6E F52D 4BBA
GnuPG ID  : F52D4BBA




Re: [gentoo-dev] Stable masks on multilib packages

2014-04-01 Thread Anthony G. Basile

On 04/01/2014 01:54 AM, Michał Górny wrote:

>Also, I don't see that it should be an issue, but do you think this
>might affect catalyst runs --- I have to ask because
>repairing/reconfiguring seeds is a lot of work.

Well, I think this mostly depends on whether you want multiple multilib
ABIs in stages -- or if you assume that the toolchain is enough,
and people will build other ABIs as they need.

Though I think that once toolchain switches to abi_* flags (vapier
seems to show interest in that), we will use.force the necessary ABIs
on it and its dependencies, so there should be no explicit need for
change.

However, I guess the toolchain changes will be sent out for testing
anyway, so releng can check first hand.
I have taken a non-standard approach to the hardened/linux/uclibc 
profiles where I do no inherit from arch.  There was too much cruft in 
arch, so I just mirror the relevant stuff including the abi flag stuff.  
I understand my approach has pros/cons ... but give out the should when 
the change is being tested and I'll see if I'm about to have any 
breakage.   I currently seed at least 12 different 
arches/isa/abi/hard-soft float combinations which would be a pita to fix 
manually on native (read slow) hardware.


--
Anthony G. Basile, Ph.D.
Gentoo Linux Developer [Hardened]
E-Mail: bluen...@gentoo.org
GnuPG FP  : 1FED FAD9 D82C 52A5 3BAB  DC79 9384 FA6E F52D 4BBA
GnuPG ID  : F52D4BBA




Re: [gentoo-dev] Stable masks on multilib packages

2014-03-31 Thread Michał Górny
Dnia 2014-03-31, o godz. 19:09:44
"Anthony G. Basile"  napisał(a):

> On 03/31/2014 06:16 PM, Michał Górny wrote:
> > That said, I have an alternate idea inspired by the ppc breakage. I'm
> > thinking of replacing the amd64 abi_x86_32 mask with a global stable
> > mask of all abi_*_* flags on the relevant packages.
> I'm not sure exactly what you mean here --- where/how does this global 
> stable masking happen?  Right now you have a bunch of maskings of 
> abi_x86_32 on various packages in arch/amd64/package.use.stable.mask but 
> not on any other arches where you just have the use.mask/use.force 
> combination.  Are you going to migrate the amd64 file to other multilib 
> arches and mask non-native abis?  Like on mips64el/multilib/n32 would 
> you be masking abi_mips_o32 and abi_mips_n64 for all those packages?

The new solution would be base/package.use.stable.mask that would mask
all of multilib on all stable arches, on this long list of packages.
So, not only the two ABIs but all of them. Which would effectively make
ebuild behave like it had no multilib at all.

> > Your thoughts?
> 
> How does this "go live" once these flags are enabled?  Do you just 
> remove the global mask all at once?  That sounds a bit scarier than just 
> removing the masks one package + deps at a time.  (Maybe a non-question 
> because I'm still now sure how this masking works.)

Something like this, yes. Once all packages are migrated and some time
passes, we unmask all the flags locally and do a repoman run. We find
out what needs to go stable, report bugs, wait and repeat.

Then we do a second stabilization request, this time for testing
the tree (mostly emul-linux replacement) with multilib enabled. Once
arch teams are done testing, they remove the stable masks for
particular ABI.

When all reverse dependencies are fixed to use || () deps instead of
emul-linux (and rev-bumped) we can move away from emul-linux through
the usual procedure of last rites with a proper announcement. This is
likely the most fragile step of all but we will do our best to make it
as simple as possible, and I think our users can handle that.

> Also, I don't see that it should be an issue, but do you think this 
> might affect catalyst runs --- I have to ask because 
> repairing/reconfiguring seeds is a lot of work.

Well, I think this mostly depends on whether you want multiple multilib
ABIs in stages -- or if you assume that the toolchain is enough,
and people will build other ABIs as they need.

Though I think that once toolchain switches to abi_* flags (vapier
seems to show interest in that), we will use.force the necessary ABIs
on it and its dependencies, so there should be no explicit need for
change.

However, I guess the toolchain changes will be sent out for testing
anyway, so releng can check first hand.

-- 
Best regards,
Michał Górny


signature.asc
Description: PGP signature


Re: [gentoo-dev] Stable masks on multilib packages

2014-03-31 Thread Ben de Groot
On 1 April 2014 06:16, Michał Górny  wrote:
> Hello, all.
>
> The late multilib ppc issues made me re-check our stable masks on
> abi_x86_* flags and, honestly, I'm not sure if we're doing things
> the right way.
>
> That said, I have an alternate idea inspired by the ppc breakage.
>
> Your thoughts?

In my opinion your multilib approach introduces an unnecessary degree
of complexity, which --as has been shown here again-- is prone to
breakage.

It would be best for our beloved distro to revert all the multilib
changes, and try a different approach, or leave this prone-to-breakage
implementation to an overlay for the few people who would actually
benefit from it.

-- 
Cheers,

Ben | yngwin
Gentoo developer



Re: [gentoo-dev] Stable masks on multilib packages

2014-03-31 Thread Anthony G. Basile

On 03/31/2014 06:16 PM, Michał Górny wrote:

Hello, all.

The late multilib ppc issues made me re-check our stable masks on
abi_x86_* flags and, honestly, I'm not sure if we're doing things
the right way. First, a quick summary.


Let's consider dev-libs/elfutils that has a dependency
on app-arch/bzip2. If we're building 32-bit elfutils, it needs 32-bit
libbz2. This is enforced through a dep in form of:

   app-arch/bzip2[${MULTILIB_USEDEP}]

that gets expanded into:

   app-arch/bzip2[abi_x86_32(-)?,abi_x86_64(-)?,...,abi_mips_o32(-)?,...]

which means that any of the ABI_* flags that gets enabled on elfutils,
needs to be enabled on bzip2 as well. Of course, some of use.forcing
and masking gets applied here but that doesn't really matter.


Now, since we're pretty much converting a lot of different packages,
some of them are eligible for stabilization earlier than the others.
However, the extra MULTILIB_USEDEPs enforce stabilizing multilib
dependencies before the actual packages which made a few developers
unhappy.

That's why we decided to stable-mask the flags on affected packages.
Since the flags are masked on stable, people can stabilize packages
independently of whether their converted deps are stable or not. We
will be worrying about that consistency once we decide to unmask
the flags.

The extra advantage of that is that we can avoid pushing stable users
into the mess involved with partial conversion of emul-linux. The idea
is pretty simple: we keep emul-linux for stable, and once everything is
ready, we stable-unmask the flags and let stable users grok multilib.


Now, to the problem. Currently we're just stable-masking abi_x86_32
on amd64. This serves the latter purpose well and seems to work for the
former. This is probably because the remaining flag is use.forced
(abi_x86_64 on amd64, and abi_x86_32 on x86) which seems to add it to
implicit IUSE somehow.

floppym has done some research w/ stable elfutils and no stable
converted bzip2. It seems that if abi_x86_32 is stable.use.masked
and abi_x86_64 is use.forced, repoman groks it. However, if we remove
abi_x86_64 from use.force, it properly reports flag mismatch error
(since no stable bzip2 has IUSE=abi_x86_64).

Now, I honestly have no idea if this implicit use.force behavior is
PMS-y or not, and how other PMs handle it. I can't find something like
this in the PMS but that doc is horribly hard to cross-reference, so I
might be missing something. I'd appreciate if someone could help me
with that.


That said, I have an alternate idea inspired by the ppc breakage. I'm
thinking of replacing the amd64 abi_x86_32 mask with a global stable
mask of all abi_*_* flags on the relevant packages.
I'm not sure exactly what you mean here --- where/how does this global 
stable masking happen?  Right now you have a bunch of maskings of 
abi_x86_32 on various packages in arch/amd64/package.use.stable.mask but 
not on any other arches where you just have the use.mask/use.force 
combination.  Are you going to migrate the amd64 file to other multilib 
arches and mask non-native abis?  Like on mips64el/multilib/n32 would 
you be masking abi_mips_o32 and abi_mips_n64 for all those packages?




Differences:

1) old solution: native flag is forced, other flags are masked.
new solution: all flags are masked.

2) old solution: we need to replicate the masks properly for different
  arches/profiles.
new solution: we can keep a single mask for all arches.


This sounds like a partial answer to my above question.



3) old solution: MULTILIB_USEDEP magically works (w/ portage at least).
new solution: since all flags are disabled, MULTILIB_USEDEP
  is a no-op and old packages match correctly.

4) old solution: forced native flag runs the native build.
new solution: fallback code runs the native build (since no flags
  are enabled).


Your thoughts?



How does this "go live" once these flags are enabled?  Do you just 
remove the global mask all at once?  That sounds a bit scarier than just 
removing the masks one package + deps at a time.  (Maybe a non-question 
because I'm still now sure how this masking works.)


Also, I don't see that it should be an issue, but do you think this 
might affect catalyst runs --- I have to ask because 
repairing/reconfiguring seeds is a lot of work.


--
Anthony G. Basile, Ph.D.
Gentoo Linux Developer [Hardened]
E-Mail: bluen...@gentoo.org
GnuPG FP  : 1FED FAD9 D82C 52A5 3BAB  DC79 9384 FA6E F52D 4BBA
GnuPG ID  : F52D4BBA




[gentoo-dev] Stable masks on multilib packages

2014-03-31 Thread Michał Górny
Hello, all.

The late multilib ppc issues made me re-check our stable masks on
abi_x86_* flags and, honestly, I'm not sure if we're doing things
the right way. First, a quick summary.


Let's consider dev-libs/elfutils that has a dependency
on app-arch/bzip2. If we're building 32-bit elfutils, it needs 32-bit
libbz2. This is enforced through a dep in form of:

  app-arch/bzip2[${MULTILIB_USEDEP}]

that gets expanded into:

  app-arch/bzip2[abi_x86_32(-)?,abi_x86_64(-)?,...,abi_mips_o32(-)?,...]

which means that any of the ABI_* flags that gets enabled on elfutils,
needs to be enabled on bzip2 as well. Of course, some of use.forcing
and masking gets applied here but that doesn't really matter.


Now, since we're pretty much converting a lot of different packages,
some of them are eligible for stabilization earlier than the others.
However, the extra MULTILIB_USEDEPs enforce stabilizing multilib
dependencies before the actual packages which made a few developers
unhappy.

That's why we decided to stable-mask the flags on affected packages.
Since the flags are masked on stable, people can stabilize packages
independently of whether their converted deps are stable or not. We
will be worrying about that consistency once we decide to unmask
the flags.

The extra advantage of that is that we can avoid pushing stable users
into the mess involved with partial conversion of emul-linux. The idea
is pretty simple: we keep emul-linux for stable, and once everything is
ready, we stable-unmask the flags and let stable users grok multilib.


Now, to the problem. Currently we're just stable-masking abi_x86_32
on amd64. This serves the latter purpose well and seems to work for the
former. This is probably because the remaining flag is use.forced
(abi_x86_64 on amd64, and abi_x86_32 on x86) which seems to add it to
implicit IUSE somehow.

floppym has done some research w/ stable elfutils and no stable
converted bzip2. It seems that if abi_x86_32 is stable.use.masked
and abi_x86_64 is use.forced, repoman groks it. However, if we remove
abi_x86_64 from use.force, it properly reports flag mismatch error
(since no stable bzip2 has IUSE=abi_x86_64).

Now, I honestly have no idea if this implicit use.force behavior is
PMS-y or not, and how other PMs handle it. I can't find something like
this in the PMS but that doc is horribly hard to cross-reference, so I
might be missing something. I'd appreciate if someone could help me
with that.


That said, I have an alternate idea inspired by the ppc breakage. I'm
thinking of replacing the amd64 abi_x86_32 mask with a global stable
mask of all abi_*_* flags on the relevant packages.

Differences:

1) old solution: native flag is forced, other flags are masked.
   new solution: all flags are masked.

2) old solution: we need to replicate the masks properly for different
 arches/profiles.
   new solution: we can keep a single mask for all arches.

3) old solution: MULTILIB_USEDEP magically works (w/ portage at least).
   new solution: since all flags are disabled, MULTILIB_USEDEP
 is a no-op and old packages match correctly.

4) old solution: forced native flag runs the native build.
   new solution: fallback code runs the native build (since no flags
 are enabled).


Your thoughts?

-- 
Best regards,
Michał Górny


signature.asc
Description: PGP signature