commit: 80493d8d32cb21d622bb2f514da68ac3106b7c35 Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org> AuthorDate: Sat Jun 1 06:24:46 2013 +0000 Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org> CommitDate: Thu Jan 1 05:58:07 2015 +0000 URL: http://sources.gentoo.org/gitweb/?p=proj/catalyst.git;a=commit;h=80493d8d
Refactor ClearBase code to remove code duplication. --- catalyst/base/clearbase.py | 73 ++++++++++++++++++---------------------------- 1 file changed, 29 insertions(+), 44 deletions(-) diff --git a/catalyst/base/clearbase.py b/catalyst/base/clearbase.py index 585d4f2..8462a3c 100644 --- a/catalyst/base/clearbase.py +++ b/catalyst/base/clearbase.py @@ -41,60 +41,20 @@ class ClearBase(object): def clear_chroot(self): - myemp=self.settings["chroot_path"] - if os.path.isdir(myemp): - print "Emptying directory",myemp - """ - stat the dir, delete the dir, recreate the dir and set - the proper perms and ownership - """ - mystat=os.stat(myemp) - #cmd("rm -rf "+myemp, "Could not remove existing file: "+myemp,env=self.env) - """ There's no easy way to change flags recursively in python """ - if os.uname()[0] == "FreeBSD": - os.system("chflags -R noschg "+myemp) - shutil.rmtree(myemp) - ensure_dirs(myemp, mode=0755) - os.chown(myemp,mystat[ST_UID],mystat[ST_GID]) - os.chmod(myemp,mystat[ST_MODE]) + print 'Clearing the chroot path ...' + self.clear_dir(self.settings["chroot_path"], 0755, True) def clear_packages(self): if "pkgcache" in self.settings["options"]: print "purging the pkgcache ..." - - myemp=self.settings["pkgcache_path"] - if os.path.isdir(myemp): - print "Emptying directory",myemp - """ - stat the dir, delete the dir, recreate the dir and set - the proper perms and ownership - """ - mystat=os.stat(myemp) - #cmd("rm -rf "+myemp, "Could not remove existing file: "+myemp,env=self.env) - shutil.rmtree(myemp) - ensure_dirs(myemp, mode=0755) - os.chown(myemp,mystat[ST_UID],mystat[ST_GID]) - os.chmod(myemp,mystat[ST_MODE]) + self.clear_dir(self.settings["pkgcache_path"]) def clear_kerncache(self): if "kerncache" in self.settings["options"]: print "purging the kerncache ..." - - myemp=self.settings["kerncache_path"] - if os.path.isdir(myemp): - print "Emptying directory",myemp - """ - stat the dir, delete the dir, recreate the dir and set - the proper perms and ownership - """ - mystat=os.stat(myemp) - #cmd("rm -rf "+myemp, "Could not remove existing file: "+myemp,env=self.env) - shutil.rmtree(myemp) - ensure_dirs(myemp, mode=0755) - os.chown(myemp,mystat[ST_UID],mystat[ST_GID]) - os.chmod(myemp,mystat[ST_MODE]) + self.clear_dir(self.settings["kerncache_path"]) def purge(self): @@ -113,3 +73,28 @@ class ClearBase(object): print "clearing kerncache ..." self.clear_kerncache() + + def clear_dir(self, myemp, mode=0755, chg_flags=False): + '''Universal directory clearing function + ''' + if not myemp: + return False + if os.path.isdir(myemp): + print "Emptying directory" , myemp + """ + stat the dir, delete the dir, recreate the dir and set + the proper perms and ownership + """ + try: + mystat=os.stat(myemp) + """ There's no easy way to change flags recursively in python """ + if chg_flags and os.uname()[0] == "FreeBSD": + os.system("chflags -R noschg " + myemp) + shutil.rmtree(myemp) + ensure_dirs(myemp, mode=mode) + os.chown(myemp,mystat[ST_UID],mystat[ST_GID]) + os.chmod(myemp,mystat[ST_MODE]) + except Exception as e: + print CatalystError("clear_dir(); Exeption: %s" % str(e)) + return False + return True