From patchwork Sun May 13 11:44:49 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [bitbake-devel] bitbake/fetch2: Remove hardcoded file removal and use clean method Date: Sun, 13 May 2012 11:44:49 -0000 From: Richard Purdie X-Patchwork-Id: 27529 Message-Id: <1336909489.2711.4.camel@ted> To: bitbake-devel Under certain circumstances, bitbake could remove files which were outside its control since it unconditionally removes ud.localpath. In the file:// case this can point at external paths. This patch converts it to use the clean() method which will remove files when its safe to do so but not in the file:// case since the file:// handler has an empty clean method. This means bitbake no longer removes files outside its control and is generally much safer. Signed-off-by: Richard Purdie diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py index e5c4b34..8ae8caa 100644 --- a/bitbake/lib/bb/fetch2/__init__.py +++ b/bitbake/lib/bb/fetch2/__init__.py @@ -506,8 +506,7 @@ def try_mirrors(d, origud, mirrors, check = False): logger.debug(1, "Mirror fetch failure for url %s (original url: %s)" % (newuri, origud.url)) logger.debug(1, str(e)) try: - if os.path.isfile(ud.localpath): - bb.utils.remove(ud.localpath) + ud.method.clean(ud, ld) except UnboundLocalError: pass continue @@ -981,8 +980,7 @@ class Fetch(object): logger.debug(1, str(e)) firsterr = e # Remove any incomplete fetch - if os.path.isfile(ud.localpath): - bb.utils.remove(ud.localpath) + m.clean(ud, self.d) logger.debug(1, "Trying MIRRORS") mirrors = mirror_from_string(self.d.getVar('MIRRORS', True)) localpath = try_mirrors (self.d, ud, mirrors)