public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [edk2-staging/EdkRepo] [PATCH v2 0/6] EdkRepo: Add Initial Config Factory Support for Multiple Manifest Repositories
@ 2020-04-17 17:18 Ashley E Desimone
  2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 1/6] EdkRepo: Support Updated CFG Format Defining Multiple Manifest Repos Ashley E Desimone
                   ` (7 more replies)
  0 siblings, 8 replies; 14+ messages in thread
From: Ashley E Desimone @ 2020-04-17 17:18 UTC (permalink / raw)
  To: devel
  Cc: Nate DeSimone, Puja Pandya, Erik Bjorge, Bret Barkelew,
	Prince Agyeman

This version amends patch 4/6 to use Erik's feeback
regardling list comprehensions. All other patches are
unchanged.

This patch set adds the initial support for consuming
multiple manifest repositories to the BaseConfig, GlobalConfig
and GlobalUserConfig classes defined in edkrepo/config/config_factory.py

Signed-off-by: Ashley E Desimone <ashley.e.desimone@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Puja Pandya <puja.pandya@intel.com>
Cc: Erik Bjorge <erik.c.bjorge@intel.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Cc: Prince Agyeman <prince.agyeman@intel.com>

Ashley E Desimone (6):
  EdkRepo: Support Updated CFG Format Defining Multiple Manifest Repos
  EdkRepo: Add new sections to edkrepo.cfg
  EdkRepo: Add the manifest_repo_list property to BaseConfig
  EdkRepo: Add manifest_repo_props()
  EdkRepo: Move edkrepo_global_data directory to BaseConfig
  EdkRepo: Add 'get' functions for Manifest Repo data

 edkrepo/config/config_factory.py     | 68 ++++++++++++++++++++++++++++++++----
 edkrepo_installer/Vendor/edkrepo.cfg |  8 +++++
 2 files changed, 70 insertions(+), 6 deletions(-)

-- 
2.16.2.windows.1


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

* [edk2-staging/EdkRepo] [PATCH v2 1/6] EdkRepo: Support Updated CFG Format Defining Multiple Manifest Repos
  2020-04-17 17:18 [edk2-staging/EdkRepo] [PATCH v2 0/6] EdkRepo: Add Initial Config Factory Support for Multiple Manifest Repositories Ashley E Desimone
@ 2020-04-17 17:18 ` Ashley E Desimone
  2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 2/6] EdkRepo: Add new sections to edkrepo.cfg Ashley E Desimone
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 14+ messages in thread
From: Ashley E Desimone @ 2020-04-17 17:18 UTC (permalink / raw)
  To: devel
  Cc: Nate DeSimone, Puja Pandya, Erik Bjorge, Bret Barkelew,
	Prince Agyeman

Add support for the following cfg format to the
BaseConfig class enabling it to be consumed by
both the Global and User configuration file
classes. CfgProps for each listed manifest repository
will be dynamically added to the classes prop_list.

Configuration Example:

[Manifest_A]
...

[Manifest_B]
...

[manifest-repos]
Manifest_A
Manifest_B

Signed-off-by: Ashley E Desimone <ashley.e.desimone@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Puja Pandya <puja.pandya@intel.com>
Cc: Erik Bjorge <erik.c.bjorge@intel.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Cc: Prince Agyeman <prince.agyeman@intel.com>
---
 edkrepo/config/config_factory.py | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/edkrepo/config/config_factory.py b/edkrepo/config/config_factory.py
index c342838..6c14f1b 100644
--- a/edkrepo/config/config_factory.py
+++ b/edkrepo/config/config_factory.py
@@ -85,6 +85,12 @@ class BaseConfig():
         if os.path.isfile(self.filename):
             self.cfg.read(self.filename)
 
+        if self.cfg.has_section('manifest-repos'):
+            for option in self.cfg.options('manifest-repos'):
+                self.prop_list.append(CfgProp('{}'.format(option), 'URL', '{}-manifest_repo_url.'.format(option), None, False))
+                self.prop_list.append(CfgProp('{}'.format(option), 'Branch', '{}-manifest_repo_branch'.format(option), None, False))
+                self.prop_list.append(CfgProp('{}'.format(option), 'LocalPath', '{}-manifest_repo_local_path.'.format(option), None, False))
+
         # Create properties defined by the prop_list
         cfg_updated = False
         for prop in self.prop_list:
-- 
2.16.2.windows.1


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

* [edk2-staging/EdkRepo] [PATCH v2 2/6] EdkRepo: Add new sections to edkrepo.cfg
  2020-04-17 17:18 [edk2-staging/EdkRepo] [PATCH v2 0/6] EdkRepo: Add Initial Config Factory Support for Multiple Manifest Repositories Ashley E Desimone
  2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 1/6] EdkRepo: Support Updated CFG Format Defining Multiple Manifest Repos Ashley E Desimone
@ 2020-04-17 17:18 ` Ashley E Desimone
  2020-04-17 20:27   ` Bjorge, Erik C
  2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 3/6] EdkRepo: Add the manifest_repo_list property to BaseConfig Ashley E Desimone
                   ` (5 subsequent siblings)
  7 siblings, 1 reply; 14+ messages in thread
From: Ashley E Desimone @ 2020-04-17 17:18 UTC (permalink / raw)
  To: devel
  Cc: Nate DeSimone, Puja Pandya, Erik Bjorge, Bret Barkelew,
	Prince Agyeman

Add manifest-repos and edk2-staging sections
to the edkrepo.cfg to enable support of multiple
manifest repositories.

Signed-off-by: Ashley E Desimone <ashley.e.desimone@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Puja Pandya <puja.pandya@intel.com>
Cc: Erik Bjorge <erik.c.bjorge@intel.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Cc: Prince Agyeman <prince.agyeman@intel.com>
---
 edkrepo_installer/Vendor/edkrepo.cfg | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/edkrepo_installer/Vendor/edkrepo.cfg b/edkrepo_installer/Vendor/edkrepo.cfg
index 7dcaf20..97ebdd2 100644
--- a/edkrepo_installer/Vendor/edkrepo.cfg
+++ b/edkrepo_installer/Vendor/edkrepo.cfg
@@ -1,3 +1,11 @@
+[manifest-repos]
+edk2-staging = 
+
+[edk2-staging]
+URL = https://github.com/tianocore/edk2-staging.git
+Branch = EdkRepo-Manifest
+LocalPath = edk2-staging-manifest-master
+
 [manifest-repo]
 URL = https://github.com/tianocore/edk2-staging.git
 Branch = EdkRepo-Manifest
-- 
2.16.2.windows.1


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

* [edk2-staging/EdkRepo] [PATCH v2 3/6] EdkRepo: Add the manifest_repo_list property to BaseConfig
  2020-04-17 17:18 [edk2-staging/EdkRepo] [PATCH v2 0/6] EdkRepo: Add Initial Config Factory Support for Multiple Manifest Repositories Ashley E Desimone
  2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 1/6] EdkRepo: Support Updated CFG Format Defining Multiple Manifest Repos Ashley E Desimone
  2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 2/6] EdkRepo: Add new sections to edkrepo.cfg Ashley E Desimone
@ 2020-04-17 17:18 ` Ashley E Desimone
  2020-04-17 20:26   ` Bjorge, Erik C
  2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 4/6] EdkRepo: Add manifest_repo_props() Ashley E Desimone
                   ` (4 subsequent siblings)
  7 siblings, 1 reply; 14+ messages in thread
From: Ashley E Desimone @ 2020-04-17 17:18 UTC (permalink / raw)
  To: devel
  Cc: Nate DeSimone, Puja Pandya, Erik Bjorge, Bret Barkelew,
	Prince Agyeman

Add the manifest_repo_list property to the BaseConfig class
to return a list of manfiest repo sections in the config file.

Signed-off-by: Ashley E Desimone <ashley.e.desimone@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Puja Pandya <puja.pandya@intel.com>
Cc: Erik Bjorge <erik.c.bjorge@intel.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Cc: Prince Agyeman <prince.agyeman@intel.com>
---
 edkrepo/config/config_factory.py | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/edkrepo/config/config_factory.py b/edkrepo/config/config_factory.py
index 6c14f1b..6f89589 100644
--- a/edkrepo/config/config_factory.py
+++ b/edkrepo/config/config_factory.py
@@ -113,6 +113,12 @@ class BaseConfig():
             with open(self.filename, 'w') as cfg_stream:
                 self.cfg.write(cfg_stream)
 
+    @property
+    def manifest_repo_list(self):
+        """Returns a list of available manifest repos"""
+        if self.cfg.has_section('manifest-repos'):
+            return self.cfg.options('manifest-repos')
+
 class GlobalConfig(BaseConfig):
     """
     Class access structure for the edkrepo.cfg file.  This file is read only and maintained by the
-- 
2.16.2.windows.1


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

* [edk2-staging/EdkRepo] [PATCH v2 4/6] EdkRepo: Add manifest_repo_props()
  2020-04-17 17:18 [edk2-staging/EdkRepo] [PATCH v2 0/6] EdkRepo: Add Initial Config Factory Support for Multiple Manifest Repositories Ashley E Desimone
                   ` (2 preceding siblings ...)
  2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 3/6] EdkRepo: Add the manifest_repo_list property to BaseConfig Ashley E Desimone
@ 2020-04-17 17:18 ` Ashley E Desimone
  2020-04-17 20:27   ` Bjorge, Erik C
  2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 5/6] EdkRepo: Move edkrepo_global_data directory to BaseConfig Ashley E Desimone
                   ` (3 subsequent siblings)
  7 siblings, 1 reply; 14+ messages in thread
From: Ashley E Desimone @ 2020-04-17 17:18 UTC (permalink / raw)
  To: devel
  Cc: Nate DeSimone, Puja Pandya, Erik Bjorge, Bret Barkelew,
	Prince Agyeman

Add the manifest_repo_props() function to the
BaseConfig class which returns a list of all
CfgProp objects for a given manifest repository.

Signed-off-by: Ashley E Desimone <ashley.e.desimone@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Puja Pandya <puja.pandya@intel.com>
Cc: Erik Bjorge <erik.c.bjorge@intel.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Cc: Prince Agyeman <prince.agyeman@intel.com>
---
 edkrepo/config/config_factory.py | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/edkrepo/config/config_factory.py b/edkrepo/config/config_factory.py
index 6f89589..1afa221 100644
--- a/edkrepo/config/config_factory.py
+++ b/edkrepo/config/config_factory.py
@@ -118,6 +118,13 @@ class BaseConfig():
         """Returns a list of available manifest repos"""
         if self.cfg.has_section('manifest-repos'):
             return self.cfg.options('manifest-repos')
+    
+    def manifest_repo_props(self, manifest_repo):
+        """
+        Returns a list of cfg_prop objects that pertain to a given manifest
+        repo
+        """
+        return [x for x in self.prop_list if manifest_repo in x.name]
 
 class GlobalConfig(BaseConfig):
     """
-- 
2.16.2.windows.1


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

* [edk2-staging/EdkRepo] [PATCH v2 5/6] EdkRepo: Move edkrepo_global_data directory to BaseConfig
  2020-04-17 17:18 [edk2-staging/EdkRepo] [PATCH v2 0/6] EdkRepo: Add Initial Config Factory Support for Multiple Manifest Repositories Ashley E Desimone
                   ` (3 preceding siblings ...)
  2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 4/6] EdkRepo: Add manifest_repo_props() Ashley E Desimone
@ 2020-04-17 17:18 ` Ashley E Desimone
  2020-04-17 20:28   ` Bjorge, Erik C
  2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 6/6] EdkRepo: Add 'get' functions for Manifest Repo data Ashley E Desimone
                   ` (2 subsequent siblings)
  7 siblings, 1 reply; 14+ messages in thread
From: Ashley E Desimone @ 2020-04-17 17:18 UTC (permalink / raw)
  To: devel
  Cc: Nate DeSimone, Puja Pandya, Erik Bjorge, Bret Barkelew,
	Prince Agyeman

Move the edkrepo_global_data_directory from the
GlobalConfig class to the base config class.

Updated the assignments of self.filename in both
the GlobalConfig and the GlobalUserConfig classes
as well as the initializaion of the BaseConfig
class to use get_edkrepo_global_data_directory()

Signed-off-by: Ashley E Desimone <ashley.e.desimone@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Puja Pandya <puja.pandya@intel.com>
Cc: Erik Bjorge <erik.c.bjorge@intel.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Cc: Prince Agyeman <prince.agyeman@intel.com>
---
 edkrepo/config/config_factory.py | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/edkrepo/config/config_factory.py b/edkrepo/config/config_factory.py
index 1afa221..4ae06f6 100644
--- a/edkrepo/config/config_factory.py
+++ b/edkrepo/config/config_factory.py
@@ -77,10 +77,11 @@ class BaseConfig():
     for the class.  Property generation and verification is based off of a list of CfgProp classes.
     """
     prop_list = []
-    def __init__(self, filename, read_only=True):
+    def __init__(self, filename, global_data_dir, read_only=True):
         # Do basic initialization of private variables
         self.read_only = read_only
         self.filename = filename
+        self.global_data_dir = global_data_dir
         self.cfg = configparser.ConfigParser(allow_no_value=True, delimiters='=')
         if os.path.isfile(self.filename):
             self.cfg.read(self.filename)
@@ -132,8 +133,7 @@ class GlobalConfig(BaseConfig):
     edkrepo installer.
     """
     def __init__(self):
-        self.edkrepo_global_data_directory = get_edkrepo_global_data_directory()
-        self.filename = os.path.join(self.edkrepo_global_data_directory, "edkrepo.cfg")
+        self.filename = os.path.join(get_edkrepo_global_data_directory(), "edkrepo.cfg")
         self.prop_list = [
                 CfgProp('manifest-repo', 'URL', 'manifest_repo_url', None, True),
                 CfgProp('manifest-repo', 'Branch', 'manifest_repo_branch', None, True),
@@ -148,7 +148,7 @@ class GlobalConfig(BaseConfig):
                 CfgProp('preferred-entry-point', 'entry-point', 'pref_entry_point', None, True)]
         if not os.path.isfile(self.filename):
             raise EdkrepoGlobalConfigNotFoundException(humble.GLOBAL_CFG_NOT_FOUND.format(self.filename))
-        super().__init__(self.filename, True)
+        super().__init__(self.filename, get_edkrepo_global_data_directory(), True)
 
     @property
     def preferred_entry(self):
@@ -165,7 +165,7 @@ class GlobalConfig(BaseConfig):
     @property
     def manifest_repo_abs_local_path(self):
         """Provides an absolute path to the manifest repo based on configuration file values."""
-        return os.path.join(self.edkrepo_global_data_directory, self.manifest_repo_local_path)
+        return os.path.join(self.global_data_dir, self.manifest_repo_local_path)
 
     @property
     def sparsecheckout_data(self):
@@ -192,7 +192,7 @@ class GlobalUserConfig(BaseConfig):
             CfgProp('scm', 'mirror_geo', 'geo', 'none', False),
             CfgProp('send-review', 'max-patch-set', 'max_patch_set', '10', False)
             ]
-        super().__init__(self.filename, False)
+        super().__init__(self.filename, get_edkrepo_global_data_directory(), False)
 
     @property
     def max_patch_set_int(self):
-- 
2.16.2.windows.1


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

* [edk2-staging/EdkRepo] [PATCH v2 6/6] EdkRepo: Add 'get' functions for Manifest Repo data
  2020-04-17 17:18 [edk2-staging/EdkRepo] [PATCH v2 0/6] EdkRepo: Add Initial Config Factory Support for Multiple Manifest Repositories Ashley E Desimone
                   ` (4 preceding siblings ...)
  2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 5/6] EdkRepo: Move edkrepo_global_data directory to BaseConfig Ashley E Desimone
@ 2020-04-17 17:18 ` Ashley E Desimone
  2020-04-17 20:27   ` Bjorge, Erik C
  2020-04-19  2:13 ` [edk2-devel] [edk2-staging/EdkRepo] [PATCH v2 0/6] EdkRepo: Add Initial Config Factory Support for Multiple Manifest Repositories Nate DeSimone
  2020-04-19  2:18 ` Nate DeSimone
  7 siblings, 1 reply; 14+ messages in thread
From: Ashley E Desimone @ 2020-04-17 17:18 UTC (permalink / raw)
  To: devel
  Cc: Nate DeSimone, Puja Pandya, Erik Bjorge, Bret Barkelew,
	Prince Agyeman

Added functions to get the URL, LocalPath, Branch
and the absolute path for individual manifest
repositories to the BaseConfig class.

Signed-off-by: Ashley E Desimone <ashley.e.desimone@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Puja Pandya <puja.pandya@intel.com>
Cc: Erik Bjorge <erik.c.bjorge@intel.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Cc: Prince Agyeman <prince.agyeman@intel.com>
---
 edkrepo/config/config_factory.py | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/edkrepo/config/config_factory.py b/edkrepo/config/config_factory.py
index 4ae06f6..90f393c 100644
--- a/edkrepo/config/config_factory.py
+++ b/edkrepo/config/config_factory.py
@@ -127,6 +127,43 @@ class BaseConfig():
         """
         return [x for x in self.prop_list if manifest_repo in x.name]
 
+    def get_manifest_repo_url(self, manifest_repo):
+        """ 
+        Returns the URL value for a given manifest repo based on config
+        file contents.
+        """
+        for prop in self.manifest_repo_props(manifest_repo):
+            if 'URL' == prop.key:
+                return self.cfg[prop.section][prop.key]
+        return None
+
+    def get_manifest_repo_branch(self, manifest_repo):
+        """
+        Returns the Branch value for a given manifest repo based on config file
+        contents.
+        """
+        for prop in self.manifest_repo_props(manifest_repo):
+            if 'Branch' == prop.key:
+                return self.cfg[prop.section][prop.key]
+        return None
+
+    def get_manifest_repo_local_path(self, manifest_repo):
+        """
+        Returns the Local path value for a given manifest repo based on config
+        file contents.
+        """
+        for prop in self.manifest_repo_props(manifest_repo):
+            if 'LocalPath' == prop.key:
+                return self.cfg[prop.section][prop.key]
+        return None
+
+    def manifest_repo_abs_path(self, manifest_repo):
+        """
+        Returns the absolute path of a single manifest repo based on config
+        file contents and the global_data_dir location.
+        """
+        return os.path.join(self.global_data_dir, self.get_manifest_repo_local_path(manifest_repo))
+
 class GlobalConfig(BaseConfig):
     """
     Class access structure for the edkrepo.cfg file.  This file is read only and maintained by the
-- 
2.16.2.windows.1


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

* Re: [edk2-staging/EdkRepo] [PATCH v2 3/6] EdkRepo: Add the manifest_repo_list property to BaseConfig
  2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 3/6] EdkRepo: Add the manifest_repo_list property to BaseConfig Ashley E Desimone
@ 2020-04-17 20:26   ` Bjorge, Erik C
  0 siblings, 0 replies; 14+ messages in thread
From: Bjorge, Erik C @ 2020-04-17 20:26 UTC (permalink / raw)
  To: Desimone, Ashley E, devel@edk2.groups.io
  Cc: Desimone, Nathaniel L, Pandya, Puja, Bret Barkelew,
	Agyeman, Prince

Reviewed-by: Erik Bjorge <erik.c.bjorge@intel.com>

-----Original Message-----
From: Desimone, Ashley E <ashley.e.desimone@intel.com> 
Sent: Friday, April 17, 2020 10:18 AM
To: devel@edk2.groups.io
Cc: Desimone, Nathaniel L <nathaniel.l.desimone@intel.com>; Pandya, Puja <puja.pandya@intel.com>; Bjorge, Erik C <erik.c.bjorge@intel.com>; Bret Barkelew <Bret.Barkelew@microsoft.com>; Agyeman, Prince <prince.agyeman@intel.com>
Subject: [edk2-staging/EdkRepo] [PATCH v2 3/6] EdkRepo: Add the manifest_repo_list property to BaseConfig

Add the manifest_repo_list property to the BaseConfig class to return a list of manfiest repo sections in the config file.

Signed-off-by: Ashley E Desimone <ashley.e.desimone@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Puja Pandya <puja.pandya@intel.com>
Cc: Erik Bjorge <erik.c.bjorge@intel.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Cc: Prince Agyeman <prince.agyeman@intel.com>
---
 edkrepo/config/config_factory.py | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/edkrepo/config/config_factory.py b/edkrepo/config/config_factory.py
index 6c14f1b..6f89589 100644
--- a/edkrepo/config/config_factory.py
+++ b/edkrepo/config/config_factory.py
@@ -113,6 +113,12 @@ class BaseConfig():
             with open(self.filename, 'w') as cfg_stream:
                 self.cfg.write(cfg_stream)
 
+    @property
+    def manifest_repo_list(self):
+        """Returns a list of available manifest repos"""
+        if self.cfg.has_section('manifest-repos'):
+            return self.cfg.options('manifest-repos')
+
 class GlobalConfig(BaseConfig):
     """
     Class access structure for the edkrepo.cfg file.  This file is read only and maintained by the
--
2.16.2.windows.1


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

* Re: [edk2-staging/EdkRepo] [PATCH v2 4/6] EdkRepo: Add manifest_repo_props()
  2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 4/6] EdkRepo: Add manifest_repo_props() Ashley E Desimone
@ 2020-04-17 20:27   ` Bjorge, Erik C
  0 siblings, 0 replies; 14+ messages in thread
From: Bjorge, Erik C @ 2020-04-17 20:27 UTC (permalink / raw)
  To: Desimone, Ashley E, devel@edk2.groups.io
  Cc: Desimone, Nathaniel L, Pandya, Puja, Bret Barkelew,
	Agyeman, Prince

Reviewed-by: Erik Bjorge <erik.c.bjorge@intel.com>

-----Original Message-----
From: Desimone, Ashley E <ashley.e.desimone@intel.com> 
Sent: Friday, April 17, 2020 10:18 AM
To: devel@edk2.groups.io
Cc: Desimone, Nathaniel L <nathaniel.l.desimone@intel.com>; Pandya, Puja <puja.pandya@intel.com>; Bjorge, Erik C <erik.c.bjorge@intel.com>; Bret Barkelew <Bret.Barkelew@microsoft.com>; Agyeman, Prince <prince.agyeman@intel.com>
Subject: [edk2-staging/EdkRepo] [PATCH v2 4/6] EdkRepo: Add manifest_repo_props()

Add the manifest_repo_props() function to the BaseConfig class which returns a list of all CfgProp objects for a given manifest repository.

Signed-off-by: Ashley E Desimone <ashley.e.desimone@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Puja Pandya <puja.pandya@intel.com>
Cc: Erik Bjorge <erik.c.bjorge@intel.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Cc: Prince Agyeman <prince.agyeman@intel.com>
---
 edkrepo/config/config_factory.py | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/edkrepo/config/config_factory.py b/edkrepo/config/config_factory.py
index 6f89589..1afa221 100644
--- a/edkrepo/config/config_factory.py
+++ b/edkrepo/config/config_factory.py
@@ -118,6 +118,13 @@ class BaseConfig():
         """Returns a list of available manifest repos"""
         if self.cfg.has_section('manifest-repos'):
             return self.cfg.options('manifest-repos')
+    
+    def manifest_repo_props(self, manifest_repo):
+        """
+        Returns a list of cfg_prop objects that pertain to a given manifest
+        repo
+        """
+        return [x for x in self.prop_list if manifest_repo in x.name]
 
 class GlobalConfig(BaseConfig):
     """
--
2.16.2.windows.1


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

* Re: [edk2-staging/EdkRepo] [PATCH v2 6/6] EdkRepo: Add 'get' functions for Manifest Repo data
  2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 6/6] EdkRepo: Add 'get' functions for Manifest Repo data Ashley E Desimone
@ 2020-04-17 20:27   ` Bjorge, Erik C
  0 siblings, 0 replies; 14+ messages in thread
From: Bjorge, Erik C @ 2020-04-17 20:27 UTC (permalink / raw)
  To: Desimone, Ashley E, devel@edk2.groups.io
  Cc: Desimone, Nathaniel L, Pandya, Puja, Bret Barkelew,
	Agyeman, Prince

Reviewed-by: Erik Bjorge <erik.c.bjorge@intel.com>

-----Original Message-----
From: Desimone, Ashley E <ashley.e.desimone@intel.com> 
Sent: Friday, April 17, 2020 10:18 AM
To: devel@edk2.groups.io
Cc: Desimone, Nathaniel L <nathaniel.l.desimone@intel.com>; Pandya, Puja <puja.pandya@intel.com>; Bjorge, Erik C <erik.c.bjorge@intel.com>; Bret Barkelew <Bret.Barkelew@microsoft.com>; Agyeman, Prince <prince.agyeman@intel.com>
Subject: [edk2-staging/EdkRepo] [PATCH v2 6/6] EdkRepo: Add 'get' functions for Manifest Repo data

Added functions to get the URL, LocalPath, Branch and the absolute path for individual manifest repositories to the BaseConfig class.

Signed-off-by: Ashley E Desimone <ashley.e.desimone@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Puja Pandya <puja.pandya@intel.com>
Cc: Erik Bjorge <erik.c.bjorge@intel.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Cc: Prince Agyeman <prince.agyeman@intel.com>
---
 edkrepo/config/config_factory.py | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/edkrepo/config/config_factory.py b/edkrepo/config/config_factory.py
index 4ae06f6..90f393c 100644
--- a/edkrepo/config/config_factory.py
+++ b/edkrepo/config/config_factory.py
@@ -127,6 +127,43 @@ class BaseConfig():
         """
         return [x for x in self.prop_list if manifest_repo in x.name]
 
+    def get_manifest_repo_url(self, manifest_repo):
+        """ 
+        Returns the URL value for a given manifest repo based on config
+        file contents.
+        """
+        for prop in self.manifest_repo_props(manifest_repo):
+            if 'URL' == prop.key:
+                return self.cfg[prop.section][prop.key]
+        return None
+
+    def get_manifest_repo_branch(self, manifest_repo):
+        """
+        Returns the Branch value for a given manifest repo based on config file
+        contents.
+        """
+        for prop in self.manifest_repo_props(manifest_repo):
+            if 'Branch' == prop.key:
+                return self.cfg[prop.section][prop.key]
+        return None
+
+    def get_manifest_repo_local_path(self, manifest_repo):
+        """
+        Returns the Local path value for a given manifest repo based on config
+        file contents.
+        """
+        for prop in self.manifest_repo_props(manifest_repo):
+            if 'LocalPath' == prop.key:
+                return self.cfg[prop.section][prop.key]
+        return None
+
+    def manifest_repo_abs_path(self, manifest_repo):
+        """
+        Returns the absolute path of a single manifest repo based on config
+        file contents and the global_data_dir location.
+        """
+        return os.path.join(self.global_data_dir, 
+ self.get_manifest_repo_local_path(manifest_repo))
+
 class GlobalConfig(BaseConfig):
     """
     Class access structure for the edkrepo.cfg file.  This file is read only and maintained by the
--
2.16.2.windows.1


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

* Re: [edk2-staging/EdkRepo] [PATCH v2 2/6] EdkRepo: Add new sections to edkrepo.cfg
  2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 2/6] EdkRepo: Add new sections to edkrepo.cfg Ashley E Desimone
@ 2020-04-17 20:27   ` Bjorge, Erik C
  0 siblings, 0 replies; 14+ messages in thread
From: Bjorge, Erik C @ 2020-04-17 20:27 UTC (permalink / raw)
  To: Desimone, Ashley E, devel@edk2.groups.io
  Cc: Desimone, Nathaniel L, Pandya, Puja, Bret Barkelew,
	Agyeman, Prince

Reviewed-by: Erik Bjorge <erik.c.bjorge@intel.com>

-----Original Message-----
From: Desimone, Ashley E <ashley.e.desimone@intel.com> 
Sent: Friday, April 17, 2020 10:18 AM
To: devel@edk2.groups.io
Cc: Desimone, Nathaniel L <nathaniel.l.desimone@intel.com>; Pandya, Puja <puja.pandya@intel.com>; Bjorge, Erik C <erik.c.bjorge@intel.com>; Bret Barkelew <Bret.Barkelew@microsoft.com>; Agyeman, Prince <prince.agyeman@intel.com>
Subject: [edk2-staging/EdkRepo] [PATCH v2 2/6] EdkRepo: Add new sections to edkrepo.cfg

Add manifest-repos and edk2-staging sections to the edkrepo.cfg to enable support of multiple manifest repositories.

Signed-off-by: Ashley E Desimone <ashley.e.desimone@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Puja Pandya <puja.pandya@intel.com>
Cc: Erik Bjorge <erik.c.bjorge@intel.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Cc: Prince Agyeman <prince.agyeman@intel.com>
---
 edkrepo_installer/Vendor/edkrepo.cfg | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/edkrepo_installer/Vendor/edkrepo.cfg b/edkrepo_installer/Vendor/edkrepo.cfg
index 7dcaf20..97ebdd2 100644
--- a/edkrepo_installer/Vendor/edkrepo.cfg
+++ b/edkrepo_installer/Vendor/edkrepo.cfg
@@ -1,3 +1,11 @@
+[manifest-repos]
+edk2-staging =
+
+[edk2-staging]
+URL = https://github.com/tianocore/edk2-staging.git
+Branch = EdkRepo-Manifest
+LocalPath = edk2-staging-manifest-master
+
 [manifest-repo]
 URL = https://github.com/tianocore/edk2-staging.git
 Branch = EdkRepo-Manifest
--
2.16.2.windows.1


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

* Re: [edk2-staging/EdkRepo] [PATCH v2 5/6] EdkRepo: Move edkrepo_global_data directory to BaseConfig
  2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 5/6] EdkRepo: Move edkrepo_global_data directory to BaseConfig Ashley E Desimone
@ 2020-04-17 20:28   ` Bjorge, Erik C
  0 siblings, 0 replies; 14+ messages in thread
From: Bjorge, Erik C @ 2020-04-17 20:28 UTC (permalink / raw)
  To: Desimone, Ashley E, devel@edk2.groups.io
  Cc: Desimone, Nathaniel L, Pandya, Puja, Bret Barkelew,
	Agyeman, Prince

Reviewed-by: Erik Bjorge <erik.c.bjorge@intel.com>

-----Original Message-----
From: Desimone, Ashley E <ashley.e.desimone@intel.com> 
Sent: Friday, April 17, 2020 10:18 AM
To: devel@edk2.groups.io
Cc: Desimone, Nathaniel L <nathaniel.l.desimone@intel.com>; Pandya, Puja <puja.pandya@intel.com>; Bjorge, Erik C <erik.c.bjorge@intel.com>; Bret Barkelew <Bret.Barkelew@microsoft.com>; Agyeman, Prince <prince.agyeman@intel.com>
Subject: [edk2-staging/EdkRepo] [PATCH v2 5/6] EdkRepo: Move edkrepo_global_data directory to BaseConfig

Move the edkrepo_global_data_directory from the GlobalConfig class to the base config class.

Updated the assignments of self.filename in both the GlobalConfig and the GlobalUserConfig classes as well as the initializaion of the BaseConfig class to use get_edkrepo_global_data_directory()

Signed-off-by: Ashley E Desimone <ashley.e.desimone@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Puja Pandya <puja.pandya@intel.com>
Cc: Erik Bjorge <erik.c.bjorge@intel.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Cc: Prince Agyeman <prince.agyeman@intel.com>
---
 edkrepo/config/config_factory.py | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/edkrepo/config/config_factory.py b/edkrepo/config/config_factory.py
index 1afa221..4ae06f6 100644
--- a/edkrepo/config/config_factory.py
+++ b/edkrepo/config/config_factory.py
@@ -77,10 +77,11 @@ class BaseConfig():
     for the class.  Property generation and verification is based off of a list of CfgProp classes.
     """
     prop_list = []
-    def __init__(self, filename, read_only=True):
+    def __init__(self, filename, global_data_dir, read_only=True):
         # Do basic initialization of private variables
         self.read_only = read_only
         self.filename = filename
+        self.global_data_dir = global_data_dir
         self.cfg = configparser.ConfigParser(allow_no_value=True, delimiters='=')
         if os.path.isfile(self.filename):
             self.cfg.read(self.filename) @@ -132,8 +133,7 @@ class GlobalConfig(BaseConfig):
     edkrepo installer.
     """
     def __init__(self):
-        self.edkrepo_global_data_directory = get_edkrepo_global_data_directory()
-        self.filename = os.path.join(self.edkrepo_global_data_directory, "edkrepo.cfg")
+        self.filename = 
+ os.path.join(get_edkrepo_global_data_directory(), "edkrepo.cfg")
         self.prop_list = [
                 CfgProp('manifest-repo', 'URL', 'manifest_repo_url', None, True),
                 CfgProp('manifest-repo', 'Branch', 'manifest_repo_branch', None, True), @@ -148,7 +148,7 @@ class GlobalConfig(BaseConfig):
                 CfgProp('preferred-entry-point', 'entry-point', 'pref_entry_point', None, True)]
         if not os.path.isfile(self.filename):
             raise EdkrepoGlobalConfigNotFoundException(humble.GLOBAL_CFG_NOT_FOUND.format(self.filename))
-        super().__init__(self.filename, True)
+        super().__init__(self.filename, 
+ get_edkrepo_global_data_directory(), True)
 
     @property
     def preferred_entry(self):
@@ -165,7 +165,7 @@ class GlobalConfig(BaseConfig):
     @property
     def manifest_repo_abs_local_path(self):
         """Provides an absolute path to the manifest repo based on configuration file values."""
-        return os.path.join(self.edkrepo_global_data_directory, self.manifest_repo_local_path)
+        return os.path.join(self.global_data_dir, 
+ self.manifest_repo_local_path)
 
     @property
     def sparsecheckout_data(self):
@@ -192,7 +192,7 @@ class GlobalUserConfig(BaseConfig):
             CfgProp('scm', 'mirror_geo', 'geo', 'none', False),
             CfgProp('send-review', 'max-patch-set', 'max_patch_set', '10', False)
             ]
-        super().__init__(self.filename, False)
+        super().__init__(self.filename, 
+ get_edkrepo_global_data_directory(), False)
 
     @property
     def max_patch_set_int(self):
--
2.16.2.windows.1


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

* Re: [edk2-devel] [edk2-staging/EdkRepo] [PATCH v2 0/6] EdkRepo: Add Initial Config Factory Support for Multiple Manifest Repositories
  2020-04-17 17:18 [edk2-staging/EdkRepo] [PATCH v2 0/6] EdkRepo: Add Initial Config Factory Support for Multiple Manifest Repositories Ashley E Desimone
                   ` (5 preceding siblings ...)
  2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 6/6] EdkRepo: Add 'get' functions for Manifest Repo data Ashley E Desimone
@ 2020-04-19  2:13 ` Nate DeSimone
  2020-04-19  2:18 ` Nate DeSimone
  7 siblings, 0 replies; 14+ messages in thread
From: Nate DeSimone @ 2020-04-19  2:13 UTC (permalink / raw)
  To: devel@edk2.groups.io, Desimone, Ashley E
  Cc: Pandya, Puja, Bjorge, Erik C, Bret Barkelew, Agyeman, Prince

For the series...

Reviewed-by: Nate DeSimone <nathaniel.l.desimone@intel.com>

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Ashley E Desimone
Sent: Friday, April 17, 2020 10:18 AM
To: devel@edk2.groups.io
Cc: Desimone, Nathaniel L <nathaniel.l.desimone@intel.com>; Pandya, Puja <puja.pandya@intel.com>; Bjorge, Erik C <erik.c.bjorge@intel.com>; Bret Barkelew <Bret.Barkelew@microsoft.com>; Agyeman, Prince <prince.agyeman@intel.com>
Subject: [edk2-devel] [edk2-staging/EdkRepo] [PATCH v2 0/6] EdkRepo: Add Initial Config Factory Support for Multiple Manifest Repositories

This version amends patch 4/6 to use Erik's feeback regardling list comprehensions. All other patches are unchanged.

This patch set adds the initial support for consuming multiple manifest repositories to the BaseConfig, GlobalConfig and GlobalUserConfig classes defined in edkrepo/config/config_factory.py

Signed-off-by: Ashley E Desimone <ashley.e.desimone@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Puja Pandya <puja.pandya@intel.com>
Cc: Erik Bjorge <erik.c.bjorge@intel.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Cc: Prince Agyeman <prince.agyeman@intel.com>

Ashley E Desimone (6):
  EdkRepo: Support Updated CFG Format Defining Multiple Manifest Repos
  EdkRepo: Add new sections to edkrepo.cfg
  EdkRepo: Add the manifest_repo_list property to BaseConfig
  EdkRepo: Add manifest_repo_props()
  EdkRepo: Move edkrepo_global_data directory to BaseConfig
  EdkRepo: Add 'get' functions for Manifest Repo data

 edkrepo/config/config_factory.py     | 68 ++++++++++++++++++++++++++++++++----
 edkrepo_installer/Vendor/edkrepo.cfg |  8 +++++
 2 files changed, 70 insertions(+), 6 deletions(-)

--
2.16.2.windows.1





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

* Re: [edk2-devel] [edk2-staging/EdkRepo] [PATCH v2 0/6] EdkRepo: Add Initial Config Factory Support for Multiple Manifest Repositories
  2020-04-17 17:18 [edk2-staging/EdkRepo] [PATCH v2 0/6] EdkRepo: Add Initial Config Factory Support for Multiple Manifest Repositories Ashley E Desimone
                   ` (6 preceding siblings ...)
  2020-04-19  2:13 ` [edk2-devel] [edk2-staging/EdkRepo] [PATCH v2 0/6] EdkRepo: Add Initial Config Factory Support for Multiple Manifest Repositories Nate DeSimone
@ 2020-04-19  2:18 ` Nate DeSimone
  7 siblings, 0 replies; 14+ messages in thread
From: Nate DeSimone @ 2020-04-19  2:18 UTC (permalink / raw)
  To: devel@edk2.groups.io, Desimone, Ashley E
  Cc: Pandya, Puja, Bjorge, Erik C, Bret Barkelew, Agyeman, Prince

The series has been pushed as 6964bf3d~..c0cf9832

-----Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Ashley E Desimone
Sent: Friday, April 17, 2020 10:18 AM
To: devel@edk2.groups.io
Cc: Desimone, Nathaniel L <nathaniel.l.desimone@intel.com>; Pandya, Puja <puja.pandya@intel.com>; Bjorge, Erik C <erik.c.bjorge@intel.com>; Bret Barkelew <Bret.Barkelew@microsoft.com>; Agyeman, Prince <prince.agyeman@intel.com>
Subject: [edk2-devel] [edk2-staging/EdkRepo] [PATCH v2 0/6] EdkRepo: Add Initial Config Factory Support for Multiple Manifest Repositories

This version amends patch 4/6 to use Erik's feeback regardling list comprehensions. All other patches are unchanged.

This patch set adds the initial support for consuming multiple manifest repositories to the BaseConfig, GlobalConfig and GlobalUserConfig classes defined in edkrepo/config/config_factory.py

Signed-off-by: Ashley E Desimone <ashley.e.desimone@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Puja Pandya <puja.pandya@intel.com>
Cc: Erik Bjorge <erik.c.bjorge@intel.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Cc: Prince Agyeman <prince.agyeman@intel.com>

Ashley E Desimone (6):
  EdkRepo: Support Updated CFG Format Defining Multiple Manifest Repos
  EdkRepo: Add new sections to edkrepo.cfg
  EdkRepo: Add the manifest_repo_list property to BaseConfig
  EdkRepo: Add manifest_repo_props()
  EdkRepo: Move edkrepo_global_data directory to BaseConfig
  EdkRepo: Add 'get' functions for Manifest Repo data

 edkrepo/config/config_factory.py     | 68 ++++++++++++++++++++++++++++++++----
 edkrepo_installer/Vendor/edkrepo.cfg |  8 +++++
 2 files changed, 70 insertions(+), 6 deletions(-)

--
2.16.2.windows.1





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

end of thread, other threads:[~2020-04-19  2:18 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-04-17 17:18 [edk2-staging/EdkRepo] [PATCH v2 0/6] EdkRepo: Add Initial Config Factory Support for Multiple Manifest Repositories Ashley E Desimone
2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 1/6] EdkRepo: Support Updated CFG Format Defining Multiple Manifest Repos Ashley E Desimone
2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 2/6] EdkRepo: Add new sections to edkrepo.cfg Ashley E Desimone
2020-04-17 20:27   ` Bjorge, Erik C
2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 3/6] EdkRepo: Add the manifest_repo_list property to BaseConfig Ashley E Desimone
2020-04-17 20:26   ` Bjorge, Erik C
2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 4/6] EdkRepo: Add manifest_repo_props() Ashley E Desimone
2020-04-17 20:27   ` Bjorge, Erik C
2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 5/6] EdkRepo: Move edkrepo_global_data directory to BaseConfig Ashley E Desimone
2020-04-17 20:28   ` Bjorge, Erik C
2020-04-17 17:18 ` [edk2-staging/EdkRepo] [PATCH v2 6/6] EdkRepo: Add 'get' functions for Manifest Repo data Ashley E Desimone
2020-04-17 20:27   ` Bjorge, Erik C
2020-04-19  2:13 ` [edk2-devel] [edk2-staging/EdkRepo] [PATCH v2 0/6] EdkRepo: Add Initial Config Factory Support for Multiple Manifest Repositories Nate DeSimone
2020-04-19  2:18 ` Nate DeSimone

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