commit:     5ed5adad0197d06d6f3dbe7d4ea16b2bf7e4ed2d
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Apr 24 08:25:10 2020 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Apr 24 08:25:10 2020 +0000
URL:        https://gitweb.gentoo.org/proj/gentoolkit.git/commit/?id=5ed5adad

profile: Add initial support for arches.desc

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 .../tests/profiles/arches-desc/profiles/arch.list  |  45 ++++
 .../profiles/arches-desc/profiles/arches.desc      |  17 ++
 .../profiles/arches-desc/profiles/profiles.desc    | 295 +++++++++++++++++++++
 pym/gentoolkit/profile.py                          |  28 +-
 pym/gentoolkit/test/test_profile.py                |  12 +
 5 files changed, 394 insertions(+), 3 deletions(-)

diff --git 
a/pym/gentoolkit/ekeyword/tests/profiles/arches-desc/profiles/arch.list 
b/pym/gentoolkit/ekeyword/tests/profiles/arches-desc/profiles/arch.list
new file mode 100644
index 0000000..e4787c0
--- /dev/null
+++ b/pym/gentoolkit/ekeyword/tests/profiles/arches-desc/profiles/arch.list
@@ -0,0 +1,45 @@
+alpha
+amd64
+amd64-fbsd
+arm
+arm64
+hppa
+ia64
+m68k
+mips
+ppc
+ppc64
+s390
+sh
+sparc
+sparc-fbsd
+x86
+x86-fbsd
+
+# Prefix keywords
+ppc-aix
+x86-freebsd
+x64-freebsd
+sparc64-freebsd
+hppa-hpux
+ia64-hpux
+x86-interix
+amd64-linux
+arm-linux
+ia64-linux
+ppc64-linux
+x86-linux
+ppc-macos
+x86-macos
+x64-macos
+m68k-mint
+x86-netbsd
+ppc-openbsd
+x86-openbsd
+x64-openbsd
+sparc-solaris
+sparc64-solaris
+x64-solaris
+x86-solaris
+x86-winnt
+x86-cygwin

diff --git 
a/pym/gentoolkit/ekeyword/tests/profiles/arches-desc/profiles/arches.desc 
b/pym/gentoolkit/ekeyword/tests/profiles/arches-desc/profiles/arches.desc
new file mode 100644
index 0000000..ca9f946
--- /dev/null
+++ b/pym/gentoolkit/ekeyword/tests/profiles/arches-desc/profiles/arches.desc
@@ -0,0 +1,17 @@
+alpha          testing
+amd64          stable
+amd64-fbsd     testing
+arm            stable
+arm64          stable
+hppa           stable
+ia64           testing
+m68k           testing
+mips           testing
+ppc            stable
+ppc64          stable
+s390           stable
+sh             stable
+sparc          stable
+sparc-fbsd     testing
+x86            stable
+x86-fbsd       testing

diff --git 
a/pym/gentoolkit/ekeyword/tests/profiles/arches-desc/profiles/profiles.desc 
b/pym/gentoolkit/ekeyword/tests/profiles/arches-desc/profiles/profiles.desc
new file mode 100644
index 0000000..be751a8
--- /dev/null
+++ b/pym/gentoolkit/ekeyword/tests/profiles/arches-desc/profiles/profiles.desc
@@ -0,0 +1,295 @@
+#############################################
+# This is a list of valid profiles for each architecture.  This file is used by
+# repoman when doing a repoman scan or repoman full.
+# DO NOT ADD PROFILES WITH A "die" or "exit" IN THEM OR IT KILLS REPOMAN
+#
+#layout:
+#arch          profile_directory                               status
+
+# Alpha Profiles
+alpha           default/linux/alpha/13.0                        stable
+alpha           default/linux/alpha/13.0/desktop                stable
+alpha           default/linux/alpha/13.0/desktop/gnome          stable
+alpha           default/linux/alpha/13.0/desktop/gnome/systemd  stable
+alpha           default/linux/alpha/13.0/desktop/kde            stable
+alpha           default/linux/alpha/13.0/desktop/kde/systemd    stable
+alpha           default/linux/alpha/13.0/developer              stable
+
+# AMD64 Profiles
+amd64           default/linux/amd64/13.0                        stable
+amd64           default/linux/amd64/13.0/selinux                dev
+amd64           default/linux/amd64/13.0/desktop                stable
+amd64           default/linux/amd64/13.0/desktop/gnome          stable
+amd64           default/linux/amd64/13.0/desktop/gnome/systemd  stable
+amd64           default/linux/amd64/13.0/desktop/kde            stable
+amd64           default/linux/amd64/13.0/desktop/kde/systemd    stable
+amd64           default/linux/amd64/13.0/developer              stable
+amd64           default/linux/amd64/13.0/no-multilib            dev
+amd64           default/linux/amd64/13.0/x32                    dev
+
+# ARM Profiles
+arm             default/linux/arm/13.0                          stable
+arm             default/linux/arm/13.0/desktop                  dev
+arm             default/linux/arm/13.0/desktop/gnome            dev
+arm             default/linux/arm/13.0/desktop/gnome/systemd    dev
+arm             default/linux/arm/13.0/desktop/kde              dev
+arm             default/linux/arm/13.0/desktop/kde/systemd      dev
+arm             default/linux/arm/13.0/developer                dev
+arm             default/linux/arm/13.0/armv4                    dev
+arm             default/linux/arm/13.0/armv4/desktop            dev
+arm             default/linux/arm/13.0/armv4/desktop/gnome      dev
+arm             default/linux/arm/13.0/armv4/desktop/kde        dev
+arm             default/linux/arm/13.0/armv4/developer          dev
+arm             default/linux/arm/13.0/armv4t                   dev
+arm             default/linux/arm/13.0/armv4t/desktop           dev
+arm             default/linux/arm/13.0/armv4t/desktop/gnome     dev
+arm             default/linux/arm/13.0/armv4t/desktop/kde       dev
+arm             default/linux/arm/13.0/armv4t/developer         dev
+arm             default/linux/arm/13.0/armv5te                  dev
+arm             default/linux/arm/13.0/armv5te/desktop          dev
+arm             default/linux/arm/13.0/armv5te/desktop/gnome    dev
+arm             default/linux/arm/13.0/armv5te/desktop/kde      dev
+arm             default/linux/arm/13.0/armv5te/developer        dev
+arm             default/linux/arm/13.0/armv6j                   dev
+arm             default/linux/arm/13.0/armv6j/desktop           dev
+arm             default/linux/arm/13.0/armv6j/desktop/gnome     dev
+arm             default/linux/arm/13.0/armv6j/desktop/kde       dev
+arm             default/linux/arm/13.0/armv6j/developer         dev
+arm             default/linux/arm/13.0/armv7a                   dev
+arm             default/linux/arm/13.0/armv7a/desktop           dev
+arm             default/linux/arm/13.0/armv7a/desktop/gnome     dev
+arm             default/linux/arm/13.0/armv7a/desktop/kde       dev
+arm             default/linux/arm/13.0/armv7a/developer         dev
+
+# ARM64 Profiles
+arm64           default/linux/arm64/13.0                        exp
+arm64           default/linux/arm64/13.0/desktop                exp
+arm64           default/linux/arm64/13.0/developer              exp
+
+# HPPA Profiles
+hppa            default/linux/hppa/13.0                         stable
+hppa            default/linux/hppa/13.0/desktop                 dev
+hppa            default/linux/hppa/13.0/developer               dev
+
+# IA64 Profiles
+ia64            default/linux/ia64/13.0                         stable
+ia64            default/linux/ia64/13.0/desktop                 stable
+ia64            default/linux/ia64/13.0/desktop/gnome           stable
+ia64            default/linux/ia64/13.0/desktop/gnome/systemd   stable
+ia64            default/linux/ia64/13.0/desktop/kde             stable
+ia64            default/linux/ia64/13.0/desktop/kde/systemd     stable
+ia64            default/linux/ia64/13.0/developer               stable
+
+# M68K Profiles
+m68k            default/linux/m68k/13.0                         dev
+m68k            default/linux/m68k/13.0/desktop                 dev
+m68k            default/linux/m68k/13.0/desktop/gnome           dev
+m68k            default/linux/m68k/13.0/desktop/kde             dev
+m68k            default/linux/m68k/13.0/developer               dev
+
+# MIPS Profiles
+mips            default/linux/mips/13.0                         dev
+mips            default/linux/mips/13.0/n32                     dev
+mips            default/linux/mips/13.0/n64                     exp
+mips            default/linux/mips/13.0/multilib                dev
+mips            default/linux/mips/13.0/multilib/n32            dev
+mips            default/linux/mips/13.0/multilib/n64            exp
+mips            default/linux/mips/13.0/mipsel                  dev
+mips            default/linux/mips/13.0/mipsel/n32              dev
+mips            default/linux/mips/13.0/mipsel/n64              exp
+mips            default/linux/mips/13.0/mipsel/multilib         dev
+mips            default/linux/mips/13.0/mipsel/multilib/n32     dev
+mips            default/linux/mips/13.0/mipsel/multilib/n64     exp
+
+# PPC32 Profiles
+ppc             default/linux/powerpc/ppc32/13.0                       stable
+ppc             default/linux/powerpc/ppc32/13.0/desktop               stable
+ppc             default/linux/powerpc/ppc32/13.0/desktop/gnome         stable
+ppc             default/linux/powerpc/ppc32/13.0/desktop/gnome/systemd stable
+ppc             default/linux/powerpc/ppc32/13.0/desktop/kde           stable
+ppc             default/linux/powerpc/ppc32/13.0/desktop/kde/systemd   stable
+ppc             default/linux/powerpc/ppc32/13.0/developer             stable
+
+# PPC64 Profiles
+ppc             default/linux/powerpc/ppc64/13.0/32bit-userland                
         stable
+ppc             default/linux/powerpc/ppc64/13.0/32bit-userland/desktop        
         stable
+ppc             default/linux/powerpc/ppc64/13.0/32bit-userland/desktop/gnome  
         stable
+ppc             
default/linux/powerpc/ppc64/13.0/32bit-userland/desktop/gnome/systemd   stable
+ppc             default/linux/powerpc/ppc64/13.0/32bit-userland/desktop/kde    
         stable
+ppc             
default/linux/powerpc/ppc64/13.0/32bit-userland/desktop/kde/systemd     stable
+ppc             default/linux/powerpc/ppc64/13.0/32bit-userland/developer      
         stable
+ppc64           default/linux/powerpc/ppc64/13.0/64bit-userland                
         stable
+ppc64           default/linux/powerpc/ppc64/13.0/64bit-userland/desktop        
         stable
+ppc64           default/linux/powerpc/ppc64/13.0/64bit-userland/desktop/gnome  
         stable
+ppc64           
default/linux/powerpc/ppc64/13.0/64bit-userland/desktop/gnome/systemd   stable
+ppc64           default/linux/powerpc/ppc64/13.0/64bit-userland/desktop/kde    
         stable
+ppc64           
default/linux/powerpc/ppc64/13.0/64bit-userland/desktop/kde/systemd     stable
+ppc64           default/linux/powerpc/ppc64/13.0/64bit-userland/developer      
         stable
+
+# S390 Profiles
+s390            default/linux/s390/13.0                         dev
+s390            default/linux/s390/13.0/s390x                   dev
+
+# SH Profiles
+sh              default/linux/sh/13.0                           dev
+sh              default/linux/sh/13.0/desktop                   dev
+sh              default/linux/sh/13.0/desktop/gnome             dev
+sh              default/linux/sh/13.0/desktop/kde               dev
+sh              default/linux/sh/13.0/developer                 dev
+
+# SPARC Profiles
+sparc           default/linux/sparc/13.0                        stable
+sparc           default/linux/sparc/13.0/desktop                stable
+sparc           default/linux/sparc/13.0/desktop/gnome          stable
+sparc           default/linux/sparc/13.0/desktop/kde            stable
+sparc           default/linux/sparc/13.0/developer              stable
+
+# x86 Profiles
+x86             default/linux/x86/13.0                          stable
+x86             default/linux/x86/13.0/selinux                  dev
+x86             default/linux/x86/13.0/desktop                  stable
+x86             default/linux/x86/13.0/desktop/gnome            stable
+x86             default/linux/x86/13.0/desktop/gnome/systemd    stable
+x86             default/linux/x86/13.0/desktop/kde              stable
+x86             default/linux/x86/13.0/desktop/kde/systemd      stable
+x86             default/linux/x86/13.0/developer                stable
+
+# Gentoo/FreeBSD Profiles
+amd64-fbsd     default/bsd/fbsd/amd64/9.1                      stable
+amd64-fbsd     default/bsd/fbsd/amd64/9.2                      dev
+amd64-fbsd     default/bsd/fbsd/amd64/9.1/clang                exp
+amd64-fbsd     default/bsd/fbsd/amd64/9.2/clang                exp
+sparc-fbsd      default/bsd/fbsd/sparc/8.2                      exp
+x86-fbsd       default/bsd/fbsd/x86/9.1                        dev
+x86-fbsd       default/bsd/fbsd/x86/9.2                        dev
+
+# Hardened Profiles
+amd64          hardened/linux/amd64                                    stable
+amd64          hardened/linux/amd64/selinux                            stable
+amd64          hardened/linux/amd64/no-multilib                        stable
+amd64          hardened/linux/amd64/no-multilib/selinux                stable
+amd64          hardened/linux/amd64/x32                                dev
+amd64          hardened/linux/uclibc/amd64                             dev
+arm            hardened/linux/arm/armv7a                               dev
+arm            hardened/linux/arm/armv6j                               dev
+arm            hardened/linux/uclibc/arm/armv7a                        dev
+ia64           hardened/linux/ia64                                     dev
+mips           hardened/linux/uclibc/mips                              exp
+mips           hardened/linux/uclibc/mips/mipsel                       exp
+ppc            hardened/linux/powerpc/ppc32                            dev
+ppc            hardened/linux/powerpc/ppc64/32bit-userland             dev
+ppc64          hardened/linux/powerpc/ppc64/64bit-userland             dev
+x86            hardened/linux/x86                                      stable
+x86            hardened/linux/x86/selinux                              stable
+x86            hardened/linux/uclibc/x86                               dev
+
+# uclibc/embedded multiarch profiles
+#amd64         uclibc/amd64                                    dev
+#arm           uclibc/arm                                      dev
+#arm           uclibc/arm/2.4                                  dev
+#mips          uclibc/mips                                     dev
+#mips          uclibc/mips/hardened                            dev
+#ppc           uclibc/ppc                                      dev
+#ppc           uclibc/ppc/2.4                                  dev
+#ppc           uclibc/ppc/hardened                             dev
+#ppc           uclibc/ppc/hardened/2.4                         dev
+#sh            uclibc/sh                                       dev
+#sh            uclibc/sh/2.4                                   dev
+#x86           uclibc/x86                                      dev
+#x86           uclibc/x86/2.4                                  dev
+#x86           uclibc/x86/2005.1                               dev
+#x86           uclibc/x86/2005.1/2.4                           dev
+#x86           uclibc/x86/hardened                             dev
+#x86           uclibc/x86/hardened/2.4                         dev
+
+
+# These are Gentoo Prefix profiles, maintained by the Prefix team
+
+# Linux Profiles
+amd64-linux            prefix/linux/amd64                              exp
+arm-linux              prefix/linux/arm                                exp
+ia64-linux             prefix/linux/ia64                               exp
+ppc64-linux            prefix/linux/ppc64                              exp
+x86-linux              prefix/linux/x86                                exp
+
+# Mac OS X Profiles
+ppc-macos              prefix/darwin/macos/10.4/ppc                    exp
+x86-macos              prefix/darwin/macos/10.4/x86                    exp
+ppc-macos              prefix/darwin/macos/10.5/ppc                    exp
+x86-macos              prefix/darwin/macos/10.5/x86                    exp
+x64-macos              prefix/darwin/macos/10.5/x64                    exp
+x86-macos              prefix/darwin/macos/10.6/x86                    exp
+x64-macos              prefix/darwin/macos/10.6/x64                    exp
+x86-macos              prefix/darwin/macos/10.7/x86                    exp
+x64-macos              prefix/darwin/macos/10.7/x64                    exp
+x86-macos              prefix/darwin/macos/10.8/x86                    exp
+x64-macos              prefix/darwin/macos/10.8/x64                    exp
+x86-macos              prefix/darwin/macos/10.9/x86                    exp
+x64-macos              prefix/darwin/macos/10.9/x64                    exp
+
+# Solaris Profiles
+sparc-solaris          prefix/sunos/solaris/5.9/sparc                  exp
+sparc-solaris          prefix/sunos/solaris/5.10/sparc                 exp
+sparc64-solaris                prefix/sunos/solaris/5.10/sparc64               
exp
+x86-solaris            prefix/sunos/solaris/5.10/x86                   exp
+x64-solaris            prefix/sunos/solaris/5.10/x64                   exp
+sparc-solaris          prefix/sunos/solaris/5.11/sparc                 exp
+sparc64-solaris                prefix/sunos/solaris/5.11/sparc64               
exp
+x86-solaris            prefix/sunos/solaris/5.11/x86                   exp
+x64-solaris            prefix/sunos/solaris/5.11/x64                   exp
+
+# AIX Profiles
+ppc-aix                        prefix/aix/5.2.0.0/ppc                          
exp
+ppc-aix                        prefix/aix/5.3.0.0/ppc                          
exp
+ppc-aix                        prefix/aix/6.1.0.0/ppc                          
exp
+
+# Interix Profiles
+x86-interix            prefix/windows/interix/3.5/x86                  exp
+x86-interix            prefix/windows/interix/5.2/x86                  exp
+x86-interix            prefix/windows/interix/6.0/x86                  exp
+x86-interix            prefix/windows/interix/6.1/x86                  exp
+
+# Windows Profiles
+x86-winnt              prefix/windows/winnt/3.5/x86                    exp
+x86-winnt              prefix/windows/winnt/5.2/x86                    exp
+x86-winnt              prefix/windows/winnt/6.0/x86                    exp
+x86-winnt              prefix/windows/winnt/6.1/x86                    exp
+
+# Cygwin Profiles
+x86-cygwin             prefix/windows/cygwin/1.7/x86                   exp
+
+# HP-UX Profiles
+ia64-hpux              prefix/hpux/B.11.23/ia64                        exp
+hppa-hpux              prefix/hpux/B.11.31/hppa2.0                     exp
+ia64-hpux              prefix/hpux/B.11.31/ia64                        exp
+
+# FreeBSD Profiles
+x86-freebsd            prefix/bsd/freebsd/7.1/x86                      exp
+x64-freebsd            prefix/bsd/freebsd/7.1/x64                      exp
+x86-freebsd            prefix/bsd/freebsd/7.2/x86                      exp
+x64-freebsd            prefix/bsd/freebsd/7.2/x64                      exp
+x86-freebsd            prefix/bsd/freebsd/8.0/x86                      exp
+x64-freebsd            prefix/bsd/freebsd/8.0/x64                      exp
+x86-freebsd            prefix/bsd/freebsd/8.1/x86                      exp
+x64-freebsd            prefix/bsd/freebsd/8.1/x64                      exp
+sparc64-freebsd                prefix/bsd/freebsd/8.1/sparc64                  
exp
+x86-freebsd            prefix/bsd/freebsd/8.2/x86                      exp
+x64-freebsd            prefix/bsd/freebsd/8.2/x64                      exp
+x86-freebsd            prefix/bsd/freebsd/9.0/x86                      exp
+x64-freebsd            prefix/bsd/freebsd/9.0/x64                      exp
+x86-freebsd            prefix/bsd/freebsd/9.1/x86                      exp
+x64-freebsd            prefix/bsd/freebsd/9.1/x64                      exp
+
+
+# OpenBSD Profiles
+ppc-openbsd            prefix/bsd/openbsd/4.2/ppc                      exp
+x86-openbsd            prefix/bsd/openbsd/4.2/x86                      exp
+x64-openbsd            prefix/bsd/openbsd/4.2/x64                      exp
+
+# NetBSD Profiles
+x86-netbsd             prefix/bsd/netbsd/4.0/x86                       exp
+
+# FreeMiNT
+m68k-mint              prefix/mint/m68k                                exp
+
+# vim: set ts=8:

diff --git a/pym/gentoolkit/profile.py b/pym/gentoolkit/profile.py
index 031b497..01f823a 100644
--- a/pym/gentoolkit/profile.py
+++ b/pym/gentoolkit/profile.py
@@ -81,12 +81,34 @@ def load_profile_data(portdir=None, repo='gentoo'):
                warning('could not read profile files: %s' % arch_list)
                warning('will not be able to verify args are correct')
 
-       # TODO: support arches.desc once the GLEP is finalized
-       # for now, we just hardcode everything + *-* (fbsd, prefix)
+       arches_desc = {}
+       try:
+               arches_list = os.path.join(portdir, 'profiles', 'arches.desc')
+               with open(_unicode_encode(arches_list, 
encoding=_encodings['fs']),
+                               encoding=_encodings['content']) as f:
+                       for line in f:
+                               line = line.split('#', 1)[0].split()
+                               if line:
+                                       arch, status = line
+                                       arches_desc[arch] = status
+       except IOError:
+               # backwards compatibility
+               arches_desc = {
+                       'alpha': 'testing',
+                       'ia64': 'testing',
+                       'm68k': 'testing',
+                       'mips': 'testing',
+                       'riscv': 'testing',
+               }
+               for k in arch_status:
+                       if '-' in k:
+                               arches_desc[k] = 'testing'
+
        for k, v in arch_status.items():
-               if k in ('alpha', 'ia64', 'm68k', 'mips', 'riscv') or '-' in k:
+               if arches_desc.get(k) == 'testing':
                        arch_status[k] = (v, '~arch')
                else:
+                       # TODO: explicit distinction of transitional, bad 
values?
                        arch_status[k] = (v, 'arch')
 
        return arch_status

diff --git a/pym/gentoolkit/test/test_profile.py 
b/pym/gentoolkit/test/test_profile.py
index 038525d..f91de6d 100644
--- a/pym/gentoolkit/test/test_profile.py
+++ b/pym/gentoolkit/test/test_profile.py
@@ -43,6 +43,18 @@ class TestLoadProfileData(unittest.TestCase):
                self.assertIn('arm64', ret)
                self.assertEqual(ret['arm64'], ('exp', 'arch'))
 
+       def testLoadArchesDesc(self):
+               """Test loading arch.list, arches.desc and profiles.desc"""
+               ret = self._test('arches-desc')
+               self.assertIn('arm', ret)
+               self.assertEqual(ret['arm'], ('stable', 'arch'))
+               self.assertIn('arm64', ret)
+               self.assertEqual(ret['arm64'], ('exp', 'arch'))
+               self.assertIn('alpha', ret)
+               self.assertEqual(ret['alpha'], ('stable', '~arch'))
+               self.assertIn('sparc-fbsd', ret)
+               self.assertEqual(ret['sparc-fbsd'], ('exp', '~arch'))
+
        def testLoadNone(self):
                """Test running when neither files exists"""
                ret = self._test('none')

Reply via email to