[elbe-devel] [PATCH v3 2/6] elbexml: Handle mirror's options

Olivier Dion dion at linutronix.de
Thu Jul 23 18:31:51 CEST 2020


This also remove the global 'noauth'.  It should be passed as a
<option> tag instead for individual mirror.

Signed-off-by: Olivier Dion <dion at linutronix.de>
---
 elbepack/elbexml.py | 87 +++++++++++++++++++++++++--------------------
 1 file changed, 49 insertions(+), 38 deletions(-)

diff --git a/elbepack/elbexml.py b/elbepack/elbexml.py
index 2550a0bf..022e5b3f 100644
--- a/elbepack/elbexml.py
+++ b/elbepack/elbexml.py
@@ -152,65 +152,76 @@ class ElbeXML(object):
 
     # XXX: maybe add cdrom path param ?
     def create_apt_sources_list(self, build_sources=False, initvm=True, hostsysroot=False):
+
+        # pylint: disable=too-many-branches
+
         if self.prj is None:
             return "# No Project"
 
         if not self.prj.has("mirror") and not self.prj.has("mirror/cdrom"):
             return "# no mirrors configured"
 
-        global_options = []
-        primary_options = []
-        if self.prj.has("noauth"):
-            global_options.append("trusted=yes")
-
-        if hostsysroot:
-            arch = self.text("project/buildimage/sdkarch", key="sdkarch")
-        else:
-            arch = self.text("project/buildimage/arch", key="arch")
-
-        primary_options.append("arch=%s" % arch)
+        goptions = []
+        mirrors  = []
+        suite    = self.prj.text("suite")
 
-        mirror = []
         if self.prj.has("mirror/primary_host"):
+
             pmirror = self.get_primary_mirror(None, hostsysroot=hostsysroot)
-            mirror.append("deb [%s] %s %s main" %
-                          (' '.join(global_options+primary_options), pmirror, self.prj.text("suite")))
+
+            if self.prj.has("mirror/options"):
+                poptions = [opt.et.text.strip(' \t\n')
+                            for opt
+                            in self.prj.all("mirror/options/option")]
+            else:
+                poptions = []
+
+            if hostsysroot:
+                arch = self.text("project/buildimage/sdkarch", key="sdkarch")
+            else:
+                arch = self.text("project/buildimage/arch", key="arch")
+
+            poptions.append("arch=%s" % arch)
+
+            poptions = goptions + poptions
+
+            mirrors.append("deb [%s] %s %s main" %
+                           (' '.join(poptions),
+                            pmirror, suite))
 
             if build_sources:
-                mirror.append("deb-src [%s] %s %s main" %
-                              (' '.join(global_options+primary_options), pmirror, self.prj.text("suite")))
+                mirrors.append("deb-src [%s] %s %s main" %
+                               (' '.join(poptions),
+                                pmirror, suite))
 
             if self.prj.has("mirror/url-list") and not hostsysroot:
-                for url in self.prj.node("mirror/url-list"):
 
-                    if url.has("binary"):
-                        binurl = url.text("binary").strip()
-                        m = re.match(r'\[(.*)\] (.*)', binurl)
+                for url in self.prj.node("mirror/url-list"):
 
-                        local_options = []
-                        if m:
-                            local_options.append(m.group(1))
-                            binurl = m.group(2)
+                    if url.has("options"):
+                        options = [opt.et.text.strip(' \t\n')
+                                   for opt
+                                   in url.all("options/option")]
+                    else:
+                        options = []
 
-                        mirror.append("deb [%s] %s" %
-                                      (' '.join(global_options+local_options), binurl))
-                    if url.has("source"):
-                        srcurl = url.text("source").strip()
-                        m = re.match(r'\[(.*)\] (.*)', srcurl)
+                    options = goptions + options
 
-                        local_options = []
-                        if m:
-                            local_options.append(m.group(1))
-                            srcurl = m.group(2)
+                    if url.has("binary"):
+                        bin_url = url.text("binary").strip()
+                        mirrors.append("deb [%s] %s" %
+                                       (' '.join(options), bin_url))
 
-                        mirror.append("deb-src [%s] %s" %
-                                      (' '.join(global_options+local_options), srcurl))
+                    if url.has("source"):
+                        src_url = url.text("source").strip()
+                        mirrors.append("deb-src [%s] %s" %
+                                       (' '.join(options), src_url))
 
         if self.prj.has("mirror/cdrom"):
-            mirror.append("deb copy:///cdrom/targetrepo %s main added" %
-                          (self.prj.text("suite")))
+            mirrors.append("deb copy:///cdrom/targetrepo %s main added" %
+                           suite)
 
-        return replace_localmachine('\n'.join(mirror), initvm)
+        return replace_localmachine('\n'.join(mirrors), initvm)
 
     @staticmethod
     def validate_repo(r):
-- 
2.27.0



More information about the elbe-devel mailing list