From 0e65f0958034c4af2c5d4404bd997eb18121f296 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Mon, 8 Dec 2014 21:22:26 +0000 Subject: bitbake: wget: Add localpaths method which gives localpath with history In some cases for cache purpoes we not only need to know which file is going to be used but also which paths were considered. Add a localpaths method which includes the history. The core which() funciton already supports this, this just extends the function to preserve the extra data we need. localpath becomes just a special case of the case with history. (Bitbake rev: d71407dbbf82659f245e002ecaad02b26838f455) Signed-off-by: Richard Purdie --- bitbake/lib/bb/fetch2/local.py | 54 ++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 21 deletions(-) (limited to 'bitbake/lib') diff --git a/bitbake/lib/bb/fetch2/local.py b/bitbake/lib/bb/fetch2/local.py index 6fa188fc48..0785236a6b 100644 --- a/bitbake/lib/bb/fetch2/local.py +++ b/bitbake/lib/bb/fetch2/local.py @@ -51,29 +51,41 @@ class Local(FetchMethod): """ Return the local filename of a given url assuming a successful fetch. """ + return self.localpaths(urldata, d)[-1] + + def localpaths(self, urldata, d): + """ + Return the local filename of a given url assuming a successful fetch. + """ + searched = [] path = urldata.decodedurl newpath = path - if path[0] != "/": - filespath = data.getVar('FILESPATH', d, True) - if filespath: - logger.debug(2, "Searching for %s in paths:\n %s" % (path, "\n ".join(filespath.split(":")))) - newpath = bb.utils.which(filespath, path) - if not newpath: - filesdir = data.getVar('FILESDIR', d, True) - if filesdir: - logger.debug(2, "Searching for %s in path: %s" % (path, filesdir)) - newpath = os.path.join(filesdir, path) - if (not newpath or not os.path.exists(newpath)) and path.find("*") != -1: - # For expressions using '*', best we can do is take the first directory in FILESPATH that exists - newpath = bb.utils.which(filespath, ".") - logger.debug(2, "Searching for %s in path: %s" % (path, newpath)) - return newpath - if not os.path.exists(newpath): - dldirfile = os.path.join(d.getVar("DL_DIR", True), path) - logger.debug(2, "Defaulting to %s for %s" % (dldirfile, path)) - bb.utils.mkdirhier(os.path.dirname(dldirfile)) - return dldirfile - return newpath + if path[0] == "/": + return [path] + filespath = data.getVar('FILESPATH', d, True) + if filespath: + logger.debug(2, "Searching for %s in paths:\n %s" % (path, "\n ".join(filespath.split(":")))) + newpath, hist = bb.utils.which(filespath, path, history=True) + searched.extend(hist) + if not newpath: + filesdir = data.getVar('FILESDIR', d, True) + if filesdir: + logger.debug(2, "Searching for %s in path: %s" % (path, filesdir)) + newpath = os.path.join(filesdir, path) + searched.append(newpath) + if (not newpath or not os.path.exists(newpath)) and path.find("*") != -1: + # For expressions using '*', best we can do is take the first directory in FILESPATH that exists + newpath, hist = bb.utils.which(filespath, ".", history=True) + searched.extend(hist) + logger.debug(2, "Searching for %s in path: %s" % (path, newpath)) + return searched + if not os.path.exists(newpath): + dldirfile = os.path.join(d.getVar("DL_DIR", True), path) + logger.debug(2, "Defaulting to %s for %s" % (dldirfile, path)) + bb.utils.mkdirhier(os.path.dirname(dldirfile)) + searched.append(dldirfile) + return searched + return searched def need_update(self, ud, d): if ud.url.find("*") != -1: -- cgit v1.2.3-54-g00ecf