bitbake: fetch2/local.py: Provide better debug output when fetch of a local file fails

When a fetch failure occurs for a local file, this patch ensures we print the
locations searched making it easier for the user to debug the problem.

(Bitbake rev: a461adbc5f09b41c771a7603370f6f2d1299ae8e)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2012-08-02 20:41:02 +00:00
parent 67bfb37475
commit 43a25fff55
1 changed files with 19 additions and 6 deletions

View File

@ -30,7 +30,8 @@ import urllib
import bb import bb
import bb.utils import bb.utils
from bb import data from bb import data
from bb.fetch2 import FetchMethod from bb.fetch2 import FetchMethod, FetchError
from bb.fetch2 import logger
class Local(FetchMethod): class Local(FetchMethod):
def supports(self, url, urldata, d): def supports(self, url, urldata, d):
@ -41,16 +42,15 @@ class Local(FetchMethod):
def urldata_init(self, ud, d): def urldata_init(self, ud, d):
# We don't set localfile as for this fetcher the file is already local! # We don't set localfile as for this fetcher the file is already local!
ud.basename = os.path.basename(urllib.unquote(ud.url.split("://")[1].split(";")[0])) ud.decodedurl = urllib.unquote(ud.url.split("://")[1].split(";")[0])
ud.basename = os.path.basename(ud.decodedurl)
return return
def localpath(self, url, urldata, d): def localpath(self, url, urldata, d):
""" """
Return the local filename of a given url assuming a successful fetch. Return the local filename of a given url assuming a successful fetch.
""" """
path = url.split("://")[1] path = urldata.decodedurl
path = path.split(";")[0]
path = urllib.unquote(path)
newpath = path newpath = path
if path[0] != "/": if path[0] != "/":
filespath = data.getVar('FILESPATH', d, True) filespath = data.getVar('FILESPATH', d, True)
@ -76,7 +76,20 @@ class Local(FetchMethod):
def download(self, url, urldata, d): def download(self, url, urldata, d):
"""Fetch urls (no-op for Local method)""" """Fetch urls (no-op for Local method)"""
# no need to fetch local files, we'll deal with them in place. # no need to fetch local files, we'll deal with them in place.
return 1 if self.supports_checksum(urldata) and not os.path.exists(urldata.localpath):
locations = []
filespath = data.getVar('FILESPATH', d, True)
if filespath:
locations = filespath.split(":")
filesdir = data.getVar('FILESDIR', d, True)
if filesdir:
locations.append(filesdir)
locations.append(d.getVar("DL_DIR", True))
msg = "Unable to find file " + url + " anywhere. The paths that were searched were:\n " + "\n ".join(locations)
raise FetchError(msg)
return True
def checkstatus(self, url, urldata, d): def checkstatus(self, url, urldata, d):
""" """