[elbe-devel] [PATCH 05/10] elbexml: rework repository validation a bit

Manuel Traut manut at linutronix.de
Wed Apr 10 11:24:16 CEST 2019


On 15:42 Mon 08 Apr     , Torben Hohn wrote:
> every repository has been validated to caintain both binaries and
> sources. This is not correct, when only a <binary> url is added.
> 
> Refactor the validation code, so that it checks whether r["binstr"]
> exists and only adds the r["binstr"] when the correct validation
> mode is used.
> 
> Since the validation mode is now implicit by adding the right values to
> the repo dict, the parameter url_validation can now be removed from
> the call to self.validate_repo(r)
> 
> Signed-off-by: Torben Hohn <torben.hohn at linutronix.de>

Reviewed-by: Manuel Traut <manut at linutronix.de>

> ---
>  elbepack/elbexml.py | 36 ++++++++++++++++++++++--------------
>  1 file changed, 22 insertions(+), 14 deletions(-)
> 
> diff --git a/elbepack/elbexml.py b/elbepack/elbexml.py
> index 97536af7..ac03e6a5 100644
> --- a/elbepack/elbexml.py
> +++ b/elbepack/elbexml.py
> @@ -163,7 +163,7 @@ class ElbeXML(object):
>  
>          return mirror.replace("LOCALMACHINE", "10.0.2.2")
>  
> -    def validate_repo(self, r, url_validation):
> +    def validate_repo(self, r):
>          try:
>              fp = urllib2.urlopen(r["url"] + "InRelease", None, 10)
>          except urllib2.URLError:
> @@ -173,24 +173,19 @@ class ElbeXML(object):
>                  return False
>  
>          ret = False
> -        if url_validation == ValidationMode.CHECK_ALL:
> -            found_bin = False
> -            found_src = False
> +        if "srcstr" in r:
>              for line in fp:
> -                if not found_bin and line.find(r["binstr"]) != -1:
> -                    found_bin = True
> -                elif not found_src and line.find(r["srcstr"]) != -1:
> -                    found_src = True
> -                if found_bin and found_src:
> +                if line.find(r["srcstr"]) != -1:
>                      ret = True
>                      break
> -        elif url_validation == ValidationMode.CHECK_BINARIES:
> +        elif "binstr" in r:
>              for line in fp:
>                  if line.find(r["binstr"]) != -1:
>                      ret = True
>                      break
>          else:
> -            ret = True
> +            # This should never happen, either bin or src
> +            ret = False
>  
>          fp.close()
>          return ret
> @@ -213,6 +208,16 @@ class ElbeXML(object):
>                  # This is a cdrom, we dont verify it
>                  pass
>              elif line.startswith("deb ") or line.startswith("deb-src "):
> +                # first check the validation mode, and
> +                # only add the repo, when it matches
> +                # the valudation mode
> +                if url_validation == ValidationMode.NO_CHECK:
> +                    continue
> +
> +                if line.startswith("deb-src ") and \
> +                   url_validation != ValidationMode.CHECK_ALL:
> +                    continue
> +
>                  lsplit = line.split(" ")
>                  url = lsplit[1]
>                  suite = lsplit[2]
> @@ -229,8 +234,11 @@ class ElbeXML(object):
>                      r["url"] = "%s/%s" % (url, suite)
>                  else:
>                      r["url"] = "%s/dists/%s/" % (url, suite)
> -                r["binstr"] = (section + "/binary-%s/Packages" % buildtype)
> -                r["srcstr"] = (section + "/source/Sources")
> +
> +                if line.startswith("deb "):
> +                    r["binstr"] = (section + "/binary-%s/Packages" % buildtype)
> +                else:
> +                    r["srcstr"] = (section + "/source/Sources")
>                  repos.append(r)
>  
>          if not self.prj:
> @@ -265,7 +273,7 @@ class ElbeXML(object):
>                  r["url"] = scheme + t[1]
>                  usr, passwd = auth.split(':')
>                  passman.add_password(None, r["url"], usr, passwd)
> -            if not self.validate_repo(r, url_validation):
> +            if not self.validate_repo(r):
>                  raise ValidationError(
>                      ["Repository %s can not be validated" % r["url"]])
>  
> -- 
> 2.11.0
> 
> 
> _______________________________________________
> elbe-devel mailing list
> elbe-devel at linutronix.de
> https://lists.linutronix.de/mailman/listinfo/elbe-devel



More information about the elbe-devel mailing list