From 51ed090de1a82b01904742401edb06724f9c8177 Mon Sep 17 00:00:00 2001 From: Peter Kjellerstedt Date: Thu, 14 Apr 2022 22:37:27 +0200 Subject: bitbake: fetch2/git: Simplify the validation of SHA-1 revisions Also correct two comments, and move slash_re from _revision_key() to the module top level (together with the new sha1_re). (Bitbake rev: 98cad8636e9c82bc40a033bb83633ec994758eb0) Signed-off-by: Peter Kjellerstedt Signed-off-by: Richard Purdie --- bitbake/lib/bb/fetch2/git.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'bitbake/lib/bb/fetch2/git.py') diff --git a/bitbake/lib/bb/fetch2/git.py b/bitbake/lib/bb/fetch2/git.py index b3eb8248d0..bdcfa4978c 100644 --- a/bitbake/lib/bb/fetch2/git.py +++ b/bitbake/lib/bb/fetch2/git.py @@ -74,6 +74,9 @@ from bb.fetch2 import runfetchcmd from bb.fetch2 import logger +sha1_re = re.compile(r'^[0-9a-f]{40}$') +slash_re = re.compile(r"/+") + class GitProgressHandler(bb.progress.LineFilterProgressHandler): """Extract progress information from git output""" def __init__(self, d): @@ -249,8 +252,8 @@ class Git(FetchMethod): ud.setup_revisions(d) for name in ud.names: - # Ensure anything that doesn't look like a sha256 checksum/revision is translated into one - if not ud.revisions[name] or len(ud.revisions[name]) != 40 or (False in [c in "abcdef0123456789" for c in ud.revisions[name]]): + # Ensure any revision that doesn't look like a SHA-1 is translated into one + if not sha1_re.match(ud.revisions[name] or ''): if ud.revisions[name]: ud.unresolvedrev[name] = ud.revisions[name] ud.revisions[name] = self.latest_revision(ud, d, name) @@ -259,10 +262,10 @@ class Git(FetchMethod): if gitsrcname.startswith('.'): gitsrcname = gitsrcname[1:] - # for rebaseable git repo, it is necessary to keep mirror tar ball - # per revision, so that even the revision disappears from the + # For a rebaseable git repo, it is necessary to keep a mirror tar ball + # per revision, so that even if the revision disappears from the # upstream repo in the future, the mirror will remain intact and still - # contains the revision + # contain the revision if ud.rebaseable: for name in ud.names: gitsrcname = gitsrcname + '_' + ud.revisions[name] @@ -697,7 +700,6 @@ class Git(FetchMethod): Return a unique key for the url """ # Collapse adjacent slashes - slash_re = re.compile(r"/+") return "git:" + ud.host + slash_re.sub(".", ud.path) + ud.unresolvedrev[name] def _lsremote(self, ud, d, search): -- cgit v1.2.3-54-g00ecf