> > > Looks like 'arch/amd64/no-multilib' profile inclusion is kept in
> > > sync with 'features/64bit-native' one: [1]. Exception is
> > > 'hardened/linux/amd64/no-multilib' profile. Looks like a bug.
> > 
> > Synced this bit with a fix:
> > 
> > |  11 Feb 2012; Sergei Trofimovich <sly...@gentoo.org>
> > |  hardened/linux/amd64/no-multilib/parent:
> > |  Make hardened/linux/amd64/no-multilib include arch/amd64/no-multilib
> > |  
> > (http://archives.gentoo.org/gentoo-dev/msg_7c41ab6653426048c2e8b0f271637bf3.x
> > |  ml).
> 
> And the change brought the breakage:
> 
> New profiles popped up:
> | /usr/portage/profiles/arch/base
> | /usr/portage/profiles/features/multilib
> | /usr/portage/profiles/features/multilib/lib32
> 
> Likely because of double inclusion of some suspicious
> parent profiles.
> 
> Reverted the change :[

Zorry and blueness helped me to investigated the issue further.
'default/linux/amd64/10.0/no-multilib' contains duplicate inheritance chain:

Simple script [1] shows us profile loading order:

    /subvolumes/gentoo-portage/profiles/base
    /subvolumes/gentoo-portage/profiles/default/linux
    /subvolumes/gentoo-portage/profiles/arch/base
    /subvolumes/gentoo-portage/profiles/features/multilib
    /subvolumes/gentoo-portage/profiles/features/multilib/lib32
    /subvolumes/gentoo-portage/profiles/arch/amd64
    /subvolumes/gentoo-portage/profiles/default/linux/amd64
    /subvolumes/gentoo-portage/profiles/releases
    /subvolumes/gentoo-portage/profiles/releases/10.0
    /subvolumes/gentoo-portage/profiles/default/linux/amd64/10.0
    /subvolumes/gentoo-portage/profiles/arch/base
    /subvolumes/gentoo-portage/profiles/features/multilib
    /subvolumes/gentoo-portage/profiles/features/multilib/lib32
    /subvolumes/gentoo-portage/profiles/arch/amd64
    /subvolumes/gentoo-portage/profiles/arch/amd64/no-multilib
    /subvolumes/gentoo-portage/profiles/features/64bit-native
    /subvolumes/gentoo-portage/profiles/default/linux/amd64/10.0/no-multilib

What we see here is repeating block:
    /subvolumes/gentoo-portage/profiles/arch/base
    /subvolumes/gentoo-portage/profiles/features/multilib
    /subvolumes/gentoo-portage/profiles/features/multilib/lib32
    /subvolumes/gentoo-portage/profiles/arch/amd64
    /subvolumes/gentoo-portage/profiles/default/linux/amd64

which can rollback all changes introduced by the profiles:
    /subvolumes/gentoo-portage/profiles/releases
    /subvolumes/gentoo-portage/profiles/releases/10.0
    /subvolumes/gentoo-portage/profiles/default/linux/amd64/10.0

Does not sound like a good thing.

For those who can't read:
    http://dev.gentoo.org/~slyfox/profiles_default.png

Notice the 'arch/amd64' inheritance both by
    'arch/amd64/no-multilib'
    'default/linux/amd64'

I think 'arch/amd64/no-multilib' does not need any parents as any profile
belongs to some arch, so pulls it explicitely.

Even thing like prefix (has the same double-inclusion "feature" as well):
    http://dev.gentoo.org/~slyfox/profiles_prefix.png

I suggest to:
 - drop 'parents' for 'profiles/arch/amd64/no-multilib'
 - [optionally] move 'profiles/arch/amd64/no-multilib' to 
'features/amd64-no-multilib'
 - and 'profiles/arch/amd64/no-multilib' back to 
'hardened/linux/amd64/no-multilib'
It would state explicitely that it does not inherit anything.

[ Another option would be to simplify 'default/linux/amd64' thing not to 
include 'profiles/arch' ]

Thoughts?

Feature request:
    Can we add a double-inclusion detector for profiles to repoman?

Thanks for your patience!

[1]
#!/usr/bin/env python

import portage
for p in portage.settings.profiles:
        print "%s" % p

-- 

  Sergei

Attachment: signature.asc
Description: PGP signature

Reply via email to