public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-dev] Stable masks on multilib packages
@ 2014-03-31 22:16 Michał Górny
  2014-03-31 23:09 ` Anthony G. Basile
                   ` (3 more replies)
  0 siblings, 4 replies; 25+ messages in thread
From: Michał Górny @ 2014-03-31 22:16 UTC (permalink / raw
  To: multilib; +Cc: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 3424 bytes --]

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

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 966 bytes --]

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2014-04-03 12:46 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-31 22:16 [gentoo-dev] Stable masks on multilib packages Michał Górny
2014-03-31 23:09 ` Anthony G. Basile
2014-04-01  5:54   ` Michał Górny
2014-04-01 11:26     ` [gentoo-dev] " Duncan
2014-04-01 15:49       ` Ian Stakenvicius
2014-04-01 15:55         ` Michał Górny
2014-04-01 11:40     ` [gentoo-dev] " Anthony G. Basile
2014-04-01 12:04       ` Anthony G. Basile
2014-04-01  5:13 ` Ben de Groot
2014-04-01 13:58   ` Alexandre Rostovtsev
2014-04-01 14:43     ` Rich Freeman
2014-04-02  0:13       ` Patrick Lauer
2014-04-02  0:58         ` Rich Freeman
2014-04-02 17:42           ` Ciaran McCreesh
2014-04-02  9:14     ` Ben de Groot
2014-04-02 13:07       ` Mike Frysinger
2014-04-02 13:43       ` Alexandre Rostovtsev
2014-04-01 23:38   ` Patrick Lauer
2014-04-02  9:25     ` Ben de Groot
2014-04-02 13:55       ` Alexandre Rostovtsev
2014-04-02 20:52       ` Matt Turner
2014-04-01 15:12 ` Ian Stakenvicius
2014-04-01 15:32   ` Michał Górny
2014-04-01 17:15 ` Michał Górny
2014-04-02  8:12   ` [gentoo-dev] " Duncan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox