diff --git a/hdlmake b/hdlmake index 89b05285cf3eed54ccc81344829bf80183ff0cc7..f1bd74f6d3d407f279aa174a906a50fe9183f392 100755 Binary files a/hdlmake and b/hdlmake differ diff --git a/src/hdlmake_kernel.py b/src/hdlmake_kernel.py index 29c8caa891dbbb4e800030d560be4203c77bf982..da42c4b51bc71aaf16e2d0f6df02bd0b7a4ed791 100644 --- a/src/hdlmake_kernel.py +++ b/src/hdlmake_kernel.py @@ -254,6 +254,11 @@ class HdlmakeKernel(object): f.write("process run {Generate Programming File} -force rerun_all\n") f.close() + def clean_modules(self): + for m in self.modules_pool: + if m.source in ["svn", "git"]: + m.remove() + def generate_fetch_makefile(self): pool = self.modules_pool diff --git a/src/module.py b/src/module.py index 140aa8ae6a7174ef7953c9dbf3a86b46740d6fe3..37359d372d70079013ca2e58a35a8a5318180d22 100644 --- a/src/module.py +++ b/src/module.py @@ -76,8 +76,8 @@ class Module(object): self.path = url self.isfetched = True else: - if os.path.exists(os.path.join(fetchto, self.basename)): - self.path = os.path.join(fetchto, self.basename) + if os.path.exists(os.path.abspath(os.path.join(fetchto, self.basename))): + self.path = os.path.abspath(os.path.join(fetchto, self.basename)) self.isfetched = True else: self.path = None @@ -125,6 +125,26 @@ class Module(object): sth = [] return sth + def remove(self): + if not self.isfetched: + return + + import shutil + import os + + p.vprint("Removing " + self.path) + shutil.rmtree(self.path) + + parts = self.path.split('/') + while True: + try: + parts = parts[:-1] + tmp = '/'.join(parts) + p.vprint("Trying to remove " + tmp) + os.rmdir(tmp) + except OSError: #a catologue is not empty - we are done + break + def parse_manifest(self): if self.isparsed == True or self.isfetched == False: return