diff options
| -rw-r--r-- | bitbake/lib/bb/fetch/cvs.py | 11 | ||||
| -rw-r--r-- | bitbake/lib/bb/fetch2/__init__.py | 34 | ||||
| -rw-r--r-- | bitbake/lib/bb/fetch2/cvs.py | 12 | ||||
| -rw-r--r-- | bitbake/lib/bb/fetch2/git.py | 6 | ||||
| -rw-r--r-- | bitbake/lib/bb/fetch2/local.py | 4 | ||||
| -rw-r--r-- | bitbake/lib/bb/fetch2/svn.py | 7 | ||||
| -rw-r--r-- | meta/classes/base.bbclass | 24 | 
7 files changed, 83 insertions, 15 deletions
| diff --git a/bitbake/lib/bb/fetch/cvs.py b/bitbake/lib/bb/fetch/cvs.py index 0edb794b04..7d0ccf2134 100644 --- a/bitbake/lib/bb/fetch/cvs.py +++ b/bitbake/lib/bb/fetch/cvs.py @@ -170,3 +170,14 @@ class Cvs(Fetch):              except OSError:                  pass              raise FetchError(ud.module) + +    def clean(self, ud, d): +        """ clean the git directory """ + +        pkg = data.expand('${PN}', d) +        localdata = data.createCopy(d) +        data.setVar('OVERRIDES', "cvs:%s" % data.getVar('OVERRIDES', localdata), localdata) +        data.update_data(localdata) +        pkgdir = os.path.join(data.expand('${CVSDIR}', localdata), pkg) +        bb.utils.remove(pkgdir, True) +        bb.utils.remove(ud.localpath) diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/bb/fetch2/__init__.py index ef9d75f3fe..1ec42717ff 100644 --- a/bitbake/lib/bb/fetch2/__init__.py +++ b/bitbake/lib/bb/fetch2/__init__.py @@ -491,6 +491,7 @@ class FetchData(object):      """      def __init__(self, url, d):          # localpath is the location of a downloaded result. If not set, the file is local. +        self.donestamp = None          self.localfile = ""          self.localpath = None          self.lockfile = None @@ -717,6 +718,12 @@ class FetchMethod(object):          return +    def clean(self, urldata, d): +       """ +       Clean any existing full or partial download +       """ +       bb.utils.remove(urldata.localpath) +      def try_premirror(self, url, urldata, d):          """          Should premirrors be used? @@ -958,6 +965,33 @@ class Fetch(object):              if ud.lockfile:                  bb.utils.unlockfile(lf) +    def clean(self, urls = []): +        """ +        Clean files that the fetcher gets or places +        """ + +        if len(urls) == 0: +            urls = self.urls + +        for url in urls: +            if url not in self.ud: +                self.ud[url] = FetchData(url, d) +            ud = self.ud[url] +            ud.setup_localpath(self.d) + +            if not ud.localfile or self.localpath is None: +                continue + +            if ud.lockfile: +                lf = bb.utils.lockfile(ud.lockfile) + +            ud.method.clean(ud, self.d) +            if ud.donestamp: +                bb.utils.remove(ud.donestamp) + +            if ud.lockfile: +                bb.utils.unlockfile(lf) +  from . import cvs  from . import git  from . import local diff --git a/bitbake/lib/bb/fetch2/cvs.py b/bitbake/lib/bb/fetch2/cvs.py index 3cd28b1fd5..ae03daf236 100644 --- a/bitbake/lib/bb/fetch2/cvs.py +++ b/bitbake/lib/bb/fetch2/cvs.py @@ -167,3 +167,15 @@ class Cvs(FetchMethod):          runfetchcmd(cmd, d, cleanup = [ud.localpath]) +    def clean(self, ud, d): +        """ Clean CVS Files and tarballs """ +         +        pkg = data.expand('${PN}', d) +        localdata = data.createCopy(d) +        data.setVar('OVERRIDES', "cvs:%s" % data.getVar('OVERRIDES', localdata), localdata) +        data.update_data(localdata) +        pkgdir = os.path.join(data.expand('${CVSDIR}', localdata), pkg) + +        bb.utils.remove(pkgdir, True) +        bb.utils.remove(ud.localpath) + diff --git a/bitbake/lib/bb/fetch2/git.py b/bitbake/lib/bb/fetch2/git.py index 6d99406777..6d82bdc88b 100644 --- a/bitbake/lib/bb/fetch2/git.py +++ b/bitbake/lib/bb/fetch2/git.py @@ -172,6 +172,12 @@ class Git(FetchMethod):              runfetchcmd("%s checkout-index -q -f -a" % ud.basecmd, d)          return True +    def clean(self, ud, d): +        """ clean the git directory """ + +        bb.utils.remove(ud.localpath, True) +        bb.utils.remove(ud.fullmirror) +      def supports_srcrev(self):          return True diff --git a/bitbake/lib/bb/fetch2/local.py b/bitbake/lib/bb/fetch2/local.py index d77d39375e..77a296ec67 100644 --- a/bitbake/lib/bb/fetch2/local.py +++ b/bitbake/lib/bb/fetch2/local.py @@ -74,3 +74,7 @@ class Local(FetchMethod):          if os.path.exists(urldata.localpath):              return True          return False + +    def clean(self, urldata, d): +        return + diff --git a/bitbake/lib/bb/fetch2/svn.py b/bitbake/lib/bb/fetch2/svn.py index 4ab643bcf7..d05dc02765 100644 --- a/bitbake/lib/bb/fetch2/svn.py +++ b/bitbake/lib/bb/fetch2/svn.py @@ -138,6 +138,13 @@ class Svn(FetchMethod):          # tar them up to a defined filename          runfetchcmd("tar %s -czf %s %s" % (tar_flags, ud.localpath, ud.module), d, cleanup = [ud.localpath]) +    def clean(self, ud, d): +        """ Clean SVN specific files and dirs """ + +        bb.utils.remove(ud.localpath) +        bb.utils.remove(ud.moddir, True) +         +      def supports_srcrev(self):          return True diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass index edb65eb96b..e4ea69d481 100644 --- a/meta/classes/base.bbclass +++ b/meta/classes/base.bbclass @@ -464,24 +464,18 @@ addtask cleanall after do_clean  python do_cleanall() {          sstate_clean_cachefiles(d) +        src_uri = (bb.data.getVar('SRC_URI', d, True) or "").split() +        if len(src_uri) == 0: +            return +  	localdata = bb.data.createCopy(d)  	bb.data.update_data(localdata) -	dl_dir = bb.data.getVar('DL_DIR', localdata, True) -	dl_dir = os.path.realpath(dl_dir) - -	src_uri = (bb.data.getVar('SRC_URI', localdata, True) or "").split() -	if len(src_uri) == 0: -		return -        fetcher = bb.fetch2.Fetch(src_uri, localdata) -	for url in src_uri: -                local = fetcher.localpath(url) -		if local is None: -			continue -		local = os.path.realpath(local) -                if local.startswith(dl_dir): -			bb.note("Removing %s*" % local) -			oe.path.remove(local + "*") +        try: +            fetcher = bb.fetch2.Fetch(src_uri, localdata) +            fetcher.clean() +        except bb.fetch2.BBFetchException, e: +            raise bb.build.FuncFailed(e)  }  do_cleanall[nostamp] = "1" | 
