[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