> > > 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 <[email protected]> > > | 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
signature.asc
Description: PGP signature
