Skip to contentSkip to conversation

Fixes for the fetcher

PATCH New Peter Kjellerstedt 1 participant 3 messages Jun 20, 2013

lore
Share & tools
lore
#0 lore raw

cover Fixes for the fetcher

We need the SFTP fetcher for one of our recipes. As it turned out when I wrote the recipe, the fetcher failed to retrieve the sources because it wanted me to specify checksums for them. However, the checksums _were_ specified in the recipe.

After examining the code for the fetcher, it turned out that the list of fetchers that expect a checksum is hardcoded in the constructor of FetchData in lib/bb/fetch2/__init__.py, whereas verify_checksum() uses ud.method.supports_checksum() and ud.method.recommends_checksum() to determine if a checksum is needed. Needless to say, this of course failed as the hardcoded values did not match reality.

This patch updates the list of hardcoded fetchers to include SFTP, but I consider it more of a bandage, and someone with better Python skills than mine should rewrite the constructor to not use a hardcoded list.

//Peter

The following changes since commit efb8a460d2a977dbd481a0650fba8eb637c65bec:

package.bbclass: Fix sources contents (2013-05-14 08:52:47 +0300)

are available in the git repository at:

git://git.yoctoproject.org/poky-contrib pkj/fetch_sftp
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=pkj/fetch_sftp

Peter Kjellerstedt (2):
Allow checksums to be used for files retrieved using SFTP Correct a typo

 bitbake/lib/bb/fetch2/__init__.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
Signature · 1 line
1.8.2.1
#1 lore raw

PATCH 1/2 Allow checksums to be used for files retrieved using SFTP

---
 bitbake/lib/bb/fetch2/__init__.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
bitbake/lib/bb/fetch2/__init__.py +2 -2
index dd1cc93..bf0ec45 100644
@@ -976,13 +976,13 @@ class FetchData(object):
             self.sha256_name = "sha256sum"
         if self.md5_name in self.parm:
             self.md5_expected = self.parm[self.md5_name]
-        elif self.type not in ["http", "https", "ftp", "ftps"]:
+        elif self.type not in ["http", "https", "ftp", "ftps", "sftp"]:
             self.md5_expected = None
         else:
             self.md5_expected = d.getVarFlag("SRC_URI", self.md5_name)
         if self.sha256_name in self.parm:
             self.sha256_expected = self.parm[self.sha256_name]
-        elif self.type not in ["http", "https", "ftp", "ftps"]:
+        elif self.type not in ["http", "https", "ftp", "ftps", "sftp"]:
             self.sha256_expected = None
         else:
             self.sha256_expected = d.getVarFlag("SRC_URI", self.sha256_name)
Signature · 1 line
1.8.2.1
#2 lore raw

PATCH 2/2 Correct a typo

In reply to Peter Kjellerstedt
---
 bitbake/lib/bb/fetch2/__init__.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
bitbake/lib/bb/fetch2/__init__.py +1 -1
index bf0ec45..ecd9b40 100644
@@ -1091,7 +1091,7 @@ class FetchMethod(object):
     def recommends_checksum(self, urldata):
         """
         Is the backend on where checksumming is recommended (should warnings 
-        by displayed if there is no checksum)?
+        be displayed if there is no checksum)?
         """
         return False
 
Signature · 1 line
1.8.2.1