public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/catalyst:pending commit in: catalyst/base/, catalyst/
@ 2015-01-01  5:59 Brian Dolbec
  0 siblings, 0 replies; 6+ messages in thread
From: Brian Dolbec @ 2015-01-01  5:59 UTC (permalink / raw
  To: gentoo-commits

commit:     a519c380faabe8278863d4615e24194d17c78c75
Author:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 25 03:52:44 2013 +0000
Commit:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Thu Jan  1 05:58:06 2015 +0000
URL:        http://sources.gentoo.org/gitweb/?p=proj/catalyst.git;a=commit;h=a519c380

Fix typo in error message, clean up useless tracebacks

Remove useless python tracebacks for bash side target failures.

Conflicts:
	catalyst/main.py

---
 catalyst/base/stagebase.py | 2 +-
 catalyst/main.py           | 2 --
 catalyst/support.py        | 2 +-
 3 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/catalyst/base/stagebase.py b/catalyst/base/stagebase.py
index c16ef86..3056ce2 100644
--- a/catalyst/base/stagebase.py
+++ b/catalyst/base/stagebase.py
@@ -1296,7 +1296,7 @@ class StageBase(TargetBase, ClearBase, GenBase):
 			except CatalystError:
 				self.unbind()
 				raise CatalystError("Stage build aborting due to error.",
-					print_traceback=True)
+					print_traceback=False)
 
 	def setup_environment(self):
 		"""

diff --git a/catalyst/main.py b/catalyst/main.py
index 56e57c6..7fea4e7 100644
--- a/catalyst/main.py
+++ b/catalyst/main.py
@@ -163,8 +163,6 @@ def build_target(addlargs):
 	try:
 		target.run()
 	except:
-		print "Target run() exception:  Python traceback output follows:"
-		catalyst.util.print_traceback()
 		print "!!! catalyst: Error encountered during run of target " + \
 			addlargs["target"]
 		sys.exit(1)

diff --git a/catalyst/support.py b/catalyst/support.py
index 8c4876f..8f2e5df 100644
--- a/catalyst/support.py
+++ b/catalyst/support.py
@@ -90,7 +90,7 @@ class CatalystError(Exception):
 				(type,value)=sys.exc_info()[:2]
 				if value!=None:
 					print
-					print "Traceback valuse found.  listing..."
+					print "Traceback values found.  listing..."
 					print traceback.print_exc(file=sys.stdout)
 			print
 			print "!!! catalyst: "+message


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [gentoo-commits] proj/catalyst:pending commit in: catalyst/base/, catalyst/
@ 2015-01-01  5:59 Brian Dolbec
  0 siblings, 0 replies; 6+ messages in thread
From: Brian Dolbec @ 2015-01-01  5:59 UTC (permalink / raw
  To: gentoo-commits

commit:     6f01be26fb22e2b9c89453f9a4d2eeba2babf6e6
Author:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Jan 22 08:39:18 2013 +0000
Commit:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Thu Jan  1 05:58:06 2015 +0000
URL:        http://sources.gentoo.org/gitweb/?p=proj/catalyst.git;a=commit;h=6f01be26

Rename a make.conf key to make_conf due to bash variable name restrictions

---
 catalyst/base/stagebase.py | 10 +++++-----
 catalyst/defaults.py       |  4 ++--
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/catalyst/base/stagebase.py b/catalyst/base/stagebase.py
index b44a957..96b1c19 100644
--- a/catalyst/base/stagebase.py
+++ b/catalyst/base/stagebase.py
@@ -1020,7 +1020,7 @@ class StageBase(TargetBase, ClearBase, GenBase):
 
 	def chroot_setup(self):
 		self.makeconf=read_makeconf(normpath(self.settings["chroot_path"]+
-			self.settings["make.conf"]))
+			self.settings["make_conf"]))
 		self.override_cbuild()
 		self.override_chost()
 		self.override_cflags()
@@ -1068,7 +1068,7 @@ class StageBase(TargetBase, ClearBase, GenBase):
 
 			""" Modify and write out make.conf (for the chroot) """
 			makepath = normpath(self.settings["chroot_path"] +
-				self.settings["make.conf"])
+				self.settings["make_conf"])
 			cmd("rm -f " + makepath,\
 				"Could not remove " + makepath, env=self.env)
 			myf=open(makepath, "w")
@@ -1122,9 +1122,9 @@ class StageBase(TargetBase, ClearBase, GenBase):
 
 			myf.close()
 			makepath = normpath(self.settings["chroot_path"] +
-				self.settings["make.conf"])
+				self.settings["make_conf"])
 			cmd("cp " + makepath + " " + makepath + ".catalyst",\
-				"Could not backup " + self.settings["make.conf"],env=self.env)
+				"Could not backup " + self.settings["make_conf"],env=self.env)
 			touch(self.settings["autoresume_path"]+"chroot_setup")
 
 	def fsscript(self):
@@ -1172,7 +1172,7 @@ class StageBase(TargetBase, ClearBase, GenBase):
 			cmd("rm -rf " + self.settings["chroot_path"] + self.settings["local_overlay"],
 				"Could not remove " + self.settings["local_overlay"], env=self.env)
 			cmd("sed -i '/^PORTDIR_OVERLAY/d' "+self.settings["chroot_path"]+\
-				"/etc/portage/make.conf",\
+				self.settings["make_conf"],\
 				"Could not remove PORTDIR_OVERLAY from make.conf",env=self.env)
 
 		""" Clean up old and obsoleted files in /etc """

diff --git a/catalyst/defaults.py b/catalyst/defaults.py
index ce7e919..2839a3d 100644
--- a/catalyst/defaults.py
+++ b/catalyst/defaults.py
@@ -25,8 +25,8 @@ confdefaults={
 	"hash_function": "crc32",
 	"icecream": "/var/cache/icecream",
 	"local_overlay": "/usr/local/portage",
-	"make.conf": "/etc/portage/make.conf",
-	"options": "",
+	"make_conf": "/etc/portage/make.conf",
+	"options": set(),
 	"packagedir": "/usr/portage/packages",
 	"portdir": "/usr/portage",
 	"port_tmpdir": "/var/tmp/portage",


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [gentoo-commits] proj/catalyst:pending commit in: catalyst/base/, catalyst/
@ 2015-01-01  5:59 Brian Dolbec
  0 siblings, 0 replies; 6+ messages in thread
From: Brian Dolbec @ 2015-01-01  5:59 UTC (permalink / raw
  To: gentoo-commits

commit:     f186361602b69e1c80bea5b43098d7cde7bddc15
Author:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Feb 12 04:13:13 2013 +0000
Commit:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Thu Jan  1 05:58:06 2015 +0000
URL:        http://sources.gentoo.org/gitweb/?p=proj/catalyst.git;a=commit;h=f1863616

Add archdir to settings

---
 catalyst/base/stagebase.py | 8 +++-----
 catalyst/defaults.py       | 2 ++
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/catalyst/base/stagebase.py b/catalyst/base/stagebase.py
index 96b1c19..daf8e54 100644
--- a/catalyst/base/stagebase.py
+++ b/catalyst/base/stagebase.py
@@ -66,17 +66,15 @@ class StageBase(TargetBase, ClearBase, GenBase):
 		self.archmap = {}
 		self.subarchmap = {}
 		machinemap = {}
-		arch_dir = self.settings["PythonDir"] + "/arch/"
-		for x in [x[:-3] for x in os.listdir(arch_dir) if x.endswith(".py")]:
-			if x == "__init__":
-				continue
+		arch_dir = self.settings["archdir"] + "/"
+		for x in [x[:-3] for x in os.listdir(arch_dir) if x.endswith(".py") and x != "__init__.py"]:
 			try:
 				fh=open(arch_dir + x + ".py")
 				"""
 				This next line loads the plugin as a module and assigns it to
 				archmap[x]
 				"""
-				self.archmap[x]=imp.load_module(x,fh,"../arch/" + x + ".py",
+				self.archmap[x]=imp.load_module(x,fh, arch_dir + x + ".py",
 					(".py", "r", imp.PY_SOURCE))
 				"""
 				This next line registers all the subarches supported in the

diff --git a/catalyst/defaults.py b/catalyst/defaults.py
index 2839a3d..2f4f429 100644
--- a/catalyst/defaults.py
+++ b/catalyst/defaults.py
@@ -21,6 +21,7 @@ valid_config_file_values.extend([ "distcc", "envscript",
 verbosity = 1
 
 confdefaults={
+	"archdir": "%(PythonDir)s/arch",
 	"distdir": "/usr/portage/distfiles",
 	"hash_function": "crc32",
 	"icecream": "/var/cache/icecream",
@@ -30,6 +31,7 @@ confdefaults={
 	"packagedir": "/usr/portage/packages",
 	"portdir": "/usr/portage",
 	"port_tmpdir": "/var/tmp/portage",
+	"PythonDir": "./catalyst",
 	"repo_name": "portage",
 	"sharedir": "/usr/lib/catalyst",
 	"shdir": "/usr/lib/catalyst/targets/",


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [gentoo-commits] proj/catalyst:pending commit in: catalyst/base/, catalyst/
  2015-02-26 22:18 [gentoo-commits] proj/catalyst:master commit in: catalyst/, catalyst/base/ Brian Dolbec
@ 2015-02-26 20:44 ` Brian Dolbec
  0 siblings, 0 replies; 6+ messages in thread
From: Brian Dolbec @ 2015-02-26 20:44 UTC (permalink / raw
  To: gentoo-commits

commit:     2f8312854d9fac7476f8f972660824941dc4c852
Author:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Dec 30 21:19:28 2013 +0000
Commit:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Thu Feb 26 20:08:06 2015 +0000
URL:        http://sources.gentoo.org/gitweb/?p=proj/catalyst.git;a=commit;h=2f831285

Move some duplicate code to fileops, extend it's capability to not re-make the directory.

---
 catalyst/base/clearbase.py | 71 +++++++++++++++-------------------------------
 catalyst/base/resume.py    | 26 ++++-------------
 catalyst/fileops.py        | 43 +++++++++++++++++++++++++++-
 3 files changed, 70 insertions(+), 70 deletions(-)

diff --git a/catalyst/base/clearbase.py b/catalyst/base/clearbase.py
index 0ebe299..e38b1a8 100644
--- a/catalyst/base/clearbase.py
+++ b/catalyst/base/clearbase.py
@@ -5,7 +5,7 @@ from stat import ST_UID, ST_GID, ST_MODE
 
 
 from catalyst.support import cmd, countdown
-from catalyst.fileops import ensure_dirs
+from catalyst.fileops import ensure_dirs, clear_dir
 
 class ClearBase(object):
 	"""
@@ -16,68 +16,43 @@ class ClearBase(object):
 		self.resume = None
 
 
-	def clear_autoresume(self):
+	def clear_autoresume(self, remove=False):
 		""" Clean resume points since they are no longer needed """
 		if "autoresume" in self.settings["options"]:
 			print "Removing AutoResume Points: ..."
 			self.resume.clear_all()
 
 
-	def clear_chroot(self):
+	def clear_chroot(self, remove=False):
 		print 'Clearing the chroot path ...'
-		self.clear_dir(self.settings["chroot_path"], 0755, True)
+		clear_dir(self.settings["chroot_path"], 0755, True, remove)
 
 
-	def clear_packages(self):
+	def clear_packages(self, remove=False):
 		if "pkgcache" in self.settings["options"]:
 			print "purging the pkgcache ..."
-			self.clear_dir(self.settings["pkgcache_path"])
+			clear_dir(self.settings["pkgcache_path"], remove=remove)
 
 
-	def clear_kerncache(self):
+	def clear_kerncache(self, remove=False):
 		if "kerncache" in self.settings["options"]:
 			print "purging the kerncache ..."
-			self.clear_dir(self.settings["kerncache_path"])
+			clear_dir(self.settings["kerncache_path"], remove=remove)
 
 
-	def purge(self):
+	def purge(self, remove=False):
 		countdown(10,"Purging Caches ...")
-		if any(k in self.settings["options"] for k in ("purge","purgeonly","purgetmponly")):
-			print "clearing autoresume ..."
-			self.clear_autoresume()
-
-			print "clearing chroot ..."
-			self.clear_chroot()
-
-			if "PURGETMPONLY" not in self.settings:
-				print "clearing package cache ..."
-				self.clear_packages()
-
-			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
+		if any(k in self.settings["options"] for k in ("purge",
+				"purgeonly", "purgetmponly")):
+			print "purge(); clearing autoresume ..."
+			self.clear_autoresume(remove)
+
+			print "purge(); clearing chroot ..."
+			self.clear_chroot(remove)
+
+			if "purgetmponly" not in self.settings["options"]:
+				print "purge(); clearing package cache ..."
+				self.clear_packages(remove)
+
+			print "purge(); clearing kerncache ..."
+			self.clear_kerncache(remove)

diff --git a/catalyst/base/resume.py b/catalyst/base/resume.py
index e42c7dc..cf495fc 100644
--- a/catalyst/base/resume.py
+++ b/catalyst/base/resume.py
@@ -16,7 +16,7 @@ import shutil
 from stat import ST_UID, ST_GID, ST_MODE
 import traceback
 
-from catalyst.fileops import ensure_dirs, pjoin, listdir_files
+from catalyst.fileops import ensure_dirs, pjoin, listdir_files, clear_dir
 from catalyst.support import touch
 
 
@@ -139,28 +139,12 @@ class AutoResume(object):
 		return list(self._points)
 
 
-	def clear_all(self):
+	def clear_all(self, remove=False):
 		'''Clear all active resume points
 
 		@return boolean
 		'''
-		try:
-			print "Emptying directory---", self.basedir
-			"""
-			stat the dir, delete the dir, recreate the dir and set
-			the proper perms and ownership
-			"""
-			mystat=os.stat(self.basedir)
-			if os.uname()[0] == "FreeBSD":
-				cmd("chflags -R noschg " + self.basedir,\
-					"Could not remove immutable flag for file "\
-					+ self.basedir)
-			shutil.rmtree(self.basedir)
-			ensure_dirs(self.basedir, 0755)
-			os.chown(self.basedir,mystat[ST_UID],mystat[ST_GID])
-			os.chmod(self.basedir,mystat[ST_MODE])
+		if clear_dir(self.basedir, mode=0755, chg_flags=True, remove=remove):
 			self._points = {}
-		except Exception as e:
-			print AutoResumeError(str(e))
-			return False
-		return True
+			return True
+		return False

diff --git a/catalyst/fileops.py b/catalyst/fileops.py
index e3a4ead..245c83e 100644
--- a/catalyst/fileops.py
+++ b/catalyst/fileops.py
@@ -10,7 +10,13 @@ ensuring directories exist,... imports snakeoils osutils
 functions for use throughout catalyst.
 '''
 
-from snakeoil.osutils import (ensure_dirs as snakeoil_ensure_dirs, normpath,
+import os
+import shutil
+from stat import ST_UID, ST_GID, ST_MODE
+
+# NOTE: pjoin and listdir_files are imported here for export
+# to other catalyst modules
+from snakeoil.osutils import (ensure_dirs as snakeoil_ensure_dirs,
 	pjoin, listdir_files)
 from catalyst.support import CatalystError
 
@@ -42,3 +48,38 @@ def ensure_dirs(path, gid=-1, uid=-1, mode=0777, minimal=True,
 			raise CatalystError(
 				"Failed to create directory: %s" % path, print_traceback=True)
 	return succeeded
+
+
+def clear_dir(target, mode=0755, chg_flags=False, remove=False):
+	'''Universal directory clearing function
+	'''
+	#print "fileops.clear_dir()"
+	if not target:
+		#print "fileops.clear_dir(), no target... returning"
+		return False
+	if os.path.isdir(target):
+		print "Emptying directory" , target
+		"""
+		stat the dir, delete the dir, recreate the dir and set
+		the proper perms and ownership
+		"""
+		try:
+			#print "fileops.clear_dir(), os.stat()"
+			mystat=os.stat(target)
+			""" There's no easy way to change flags recursively in python """
+			if chg_flags and os.uname()[0] == "FreeBSD":
+				os.system("chflags -R noschg " + target)
+			#print "fileops.clear_dir(), shutil.rmtree()"
+			shutil.rmtree(target)
+			if not remove:
+				#print "fileops.clear_dir(), ensure_dirs()"
+				ensure_dirs(target, mode=mode)
+				os.chown(target, mystat[ST_UID], mystat[ST_GID])
+				os.chmod(target, mystat[ST_MODE])
+		except Exception as e:
+			print CatalystError("clear_dir(); Exeption: %s" % str(e))
+			return False
+	else:
+		print "fileops.clear_dir(), %s is not a directory" % (target)
+	#print "fileops.clear_dir(), DONE, returning True"
+	return True


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [gentoo-commits] proj/catalyst:master commit in: catalyst/, catalyst/base/
@ 2015-02-26 22:18 Brian Dolbec
  2015-02-26 20:44 ` [gentoo-commits] proj/catalyst:pending commit in: catalyst/base/, catalyst/ Brian Dolbec
  0 siblings, 1 reply; 6+ messages in thread
From: Brian Dolbec @ 2015-02-26 22:18 UTC (permalink / raw
  To: gentoo-commits

commit:     2f8312854d9fac7476f8f972660824941dc4c852
Author:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Dec 30 21:19:28 2013 +0000
Commit:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Thu Feb 26 20:08:06 2015 +0000
URL:        http://sources.gentoo.org/gitweb/?p=proj/catalyst.git;a=commit;h=2f831285

Move some duplicate code to fileops, extend it's capability to not re-make the directory.

---
 catalyst/base/clearbase.py | 71 +++++++++++++++-------------------------------
 catalyst/base/resume.py    | 26 ++++-------------
 catalyst/fileops.py        | 43 +++++++++++++++++++++++++++-
 3 files changed, 70 insertions(+), 70 deletions(-)

diff --git a/catalyst/base/clearbase.py b/catalyst/base/clearbase.py
index 0ebe299..e38b1a8 100644
--- a/catalyst/base/clearbase.py
+++ b/catalyst/base/clearbase.py
@@ -5,7 +5,7 @@ from stat import ST_UID, ST_GID, ST_MODE
 
 
 from catalyst.support import cmd, countdown
-from catalyst.fileops import ensure_dirs
+from catalyst.fileops import ensure_dirs, clear_dir
 
 class ClearBase(object):
 	"""
@@ -16,68 +16,43 @@ class ClearBase(object):
 		self.resume = None
 
 
-	def clear_autoresume(self):
+	def clear_autoresume(self, remove=False):
 		""" Clean resume points since they are no longer needed """
 		if "autoresume" in self.settings["options"]:
 			print "Removing AutoResume Points: ..."
 			self.resume.clear_all()
 
 
-	def clear_chroot(self):
+	def clear_chroot(self, remove=False):
 		print 'Clearing the chroot path ...'
-		self.clear_dir(self.settings["chroot_path"], 0755, True)
+		clear_dir(self.settings["chroot_path"], 0755, True, remove)
 
 
-	def clear_packages(self):
+	def clear_packages(self, remove=False):
 		if "pkgcache" in self.settings["options"]:
 			print "purging the pkgcache ..."
-			self.clear_dir(self.settings["pkgcache_path"])
+			clear_dir(self.settings["pkgcache_path"], remove=remove)
 
 
-	def clear_kerncache(self):
+	def clear_kerncache(self, remove=False):
 		if "kerncache" in self.settings["options"]:
 			print "purging the kerncache ..."
-			self.clear_dir(self.settings["kerncache_path"])
+			clear_dir(self.settings["kerncache_path"], remove=remove)
 
 
-	def purge(self):
+	def purge(self, remove=False):
 		countdown(10,"Purging Caches ...")
-		if any(k in self.settings["options"] for k in ("purge","purgeonly","purgetmponly")):
-			print "clearing autoresume ..."
-			self.clear_autoresume()
-
-			print "clearing chroot ..."
-			self.clear_chroot()
-
-			if "PURGETMPONLY" not in self.settings:
-				print "clearing package cache ..."
-				self.clear_packages()
-
-			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
+		if any(k in self.settings["options"] for k in ("purge",
+				"purgeonly", "purgetmponly")):
+			print "purge(); clearing autoresume ..."
+			self.clear_autoresume(remove)
+
+			print "purge(); clearing chroot ..."
+			self.clear_chroot(remove)
+
+			if "purgetmponly" not in self.settings["options"]:
+				print "purge(); clearing package cache ..."
+				self.clear_packages(remove)
+
+			print "purge(); clearing kerncache ..."
+			self.clear_kerncache(remove)

diff --git a/catalyst/base/resume.py b/catalyst/base/resume.py
index e42c7dc..cf495fc 100644
--- a/catalyst/base/resume.py
+++ b/catalyst/base/resume.py
@@ -16,7 +16,7 @@ import shutil
 from stat import ST_UID, ST_GID, ST_MODE
 import traceback
 
-from catalyst.fileops import ensure_dirs, pjoin, listdir_files
+from catalyst.fileops import ensure_dirs, pjoin, listdir_files, clear_dir
 from catalyst.support import touch
 
 
@@ -139,28 +139,12 @@ class AutoResume(object):
 		return list(self._points)
 
 
-	def clear_all(self):
+	def clear_all(self, remove=False):
 		'''Clear all active resume points
 
 		@return boolean
 		'''
-		try:
-			print "Emptying directory---", self.basedir
-			"""
-			stat the dir, delete the dir, recreate the dir and set
-			the proper perms and ownership
-			"""
-			mystat=os.stat(self.basedir)
-			if os.uname()[0] == "FreeBSD":
-				cmd("chflags -R noschg " + self.basedir,\
-					"Could not remove immutable flag for file "\
-					+ self.basedir)
-			shutil.rmtree(self.basedir)
-			ensure_dirs(self.basedir, 0755)
-			os.chown(self.basedir,mystat[ST_UID],mystat[ST_GID])
-			os.chmod(self.basedir,mystat[ST_MODE])
+		if clear_dir(self.basedir, mode=0755, chg_flags=True, remove=remove):
 			self._points = {}
-		except Exception as e:
-			print AutoResumeError(str(e))
-			return False
-		return True
+			return True
+		return False

diff --git a/catalyst/fileops.py b/catalyst/fileops.py
index e3a4ead..245c83e 100644
--- a/catalyst/fileops.py
+++ b/catalyst/fileops.py
@@ -10,7 +10,13 @@ ensuring directories exist,... imports snakeoils osutils
 functions for use throughout catalyst.
 '''
 
-from snakeoil.osutils import (ensure_dirs as snakeoil_ensure_dirs, normpath,
+import os
+import shutil
+from stat import ST_UID, ST_GID, ST_MODE
+
+# NOTE: pjoin and listdir_files are imported here for export
+# to other catalyst modules
+from snakeoil.osutils import (ensure_dirs as snakeoil_ensure_dirs,
 	pjoin, listdir_files)
 from catalyst.support import CatalystError
 
@@ -42,3 +48,38 @@ def ensure_dirs(path, gid=-1, uid=-1, mode=0777, minimal=True,
 			raise CatalystError(
 				"Failed to create directory: %s" % path, print_traceback=True)
 	return succeeded
+
+
+def clear_dir(target, mode=0755, chg_flags=False, remove=False):
+	'''Universal directory clearing function
+	'''
+	#print "fileops.clear_dir()"
+	if not target:
+		#print "fileops.clear_dir(), no target... returning"
+		return False
+	if os.path.isdir(target):
+		print "Emptying directory" , target
+		"""
+		stat the dir, delete the dir, recreate the dir and set
+		the proper perms and ownership
+		"""
+		try:
+			#print "fileops.clear_dir(), os.stat()"
+			mystat=os.stat(target)
+			""" There's no easy way to change flags recursively in python """
+			if chg_flags and os.uname()[0] == "FreeBSD":
+				os.system("chflags -R noschg " + target)
+			#print "fileops.clear_dir(), shutil.rmtree()"
+			shutil.rmtree(target)
+			if not remove:
+				#print "fileops.clear_dir(), ensure_dirs()"
+				ensure_dirs(target, mode=mode)
+				os.chown(target, mystat[ST_UID], mystat[ST_GID])
+				os.chmod(target, mystat[ST_MODE])
+		except Exception as e:
+			print CatalystError("clear_dir(); Exeption: %s" % str(e))
+			return False
+	else:
+		print "fileops.clear_dir(), %s is not a directory" % (target)
+	#print "fileops.clear_dir(), DONE, returning True"
+	return True


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [gentoo-commits] proj/catalyst:pending commit in: catalyst/base/, catalyst/
@ 2015-09-08 14:14 Brian Dolbec
  0 siblings, 0 replies; 6+ messages in thread
From: Brian Dolbec @ 2015-09-08 14:14 UTC (permalink / raw
  To: gentoo-commits

commit:     7536857c1a14d2eec224e80ba96ab9f3091e0d1c
Author:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Sep  8 00:35:41 2015 +0000
Commit:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue Sep  8 14:11:48 2015 +0000
URL:        https://gitweb.gentoo.org/proj/catalyst.git/commit/?id=7536857c

Make the new compress code handling compatible with existing specs

Clean out old snapshot setting code.
Make file_check() not traceback after printing it's error message.
Fix source auto extension handling in unpack()

 catalyst/base/stagebase.py | 53 ++++++++++++++++++++--------------------------
 catalyst/support.py        | 21 ++++++++++++++++++
 2 files changed, 44 insertions(+), 30 deletions(-)

diff --git a/catalyst/base/stagebase.py b/catalyst/base/stagebase.py
index bd6938c..31fbe8b 100644
--- a/catalyst/base/stagebase.py
+++ b/catalyst/base/stagebase.py
@@ -15,7 +15,8 @@ from DeComp.compress import CompressMap
 from catalyst.defaults import (SOURCE_MOUNT_DEFAULTS, TARGET_MOUNT_DEFAULTS,
 	PORT_LOGDIR_CLEAN)
 from catalyst.support import (CatalystError, msg, file_locate, normpath,
-	touch, cmd, warn, list_bashify, read_makeconf, read_from_clst, ismount)
+	touch, cmd, warn, list_bashify, read_makeconf, read_from_clst, ismount,
+	file_check)
 from catalyst.base.targetbase import TargetBase
 from catalyst.base.clearbase import ClearBase
 from catalyst.base.genbase import GenBase
@@ -193,7 +194,7 @@ class StageBase(TargetBase, ClearBase, GenBase):
 		on disk.
 		"""
 		#pdb.set_trace()
-		file_locate(self.settings,["source_path","snapshot_path","distdir"],\
+		file_locate(self.settings,["distdir"],\
 			expand=0)
 		""" If we are using portage_confdir, check that as well. """
 		if "portage_confdir" in self.settings:
@@ -430,8 +431,10 @@ class StageBase(TargetBase, ClearBase, GenBase):
 			self.settings["source_path"] = normpath(self.settings["storedir"] +
 				"/tmp/" + self.settings["source_subpath"] + "/")
 		else:
-			self.settings["source_path"]=normpath(self.settings["storedir"]+\
-				"/builds/"+self.settings["source_subpath"])
+			self.settings["source_path"] = file_check(
+				normpath(self.settings["storedir"] + "/builds/" +
+					self.settings["source_subpath"])
+				)
 			if os.path.isfile(self.settings["source_path"]):
 				# XXX: Is this even necessary if the previous check passes?
 				if os.path.exists(self.settings["source_path"]):
@@ -460,27 +463,15 @@ class StageBase(TargetBase, ClearBase, GenBase):
 			"/root/*", self.settings["portdir"]]
 
 	def set_snapshot_path(self):
-		self.settings["snapshot_path"]=normpath(self.settings["storedir"]+\
+		self.settings["snapshot_path"]= file_check(normpath(self.settings["storedir"]+\
 			"/snapshots/" + self.settings["snapshot_name"] +
-			self.settings["snapshot"].rstrip('/')+".tar.xz")
-
-		if os.path.exists(self.settings["snapshot_path"]):
-			self.settings["snapshot_path_hash"] = \
-				self.settings["hash_map"].generate_hash(
-					self.settings["snapshot_path"],
-					hash_ = self.settings["hash_function"],
-					verbose = False)
-		else:
-			self.settings["snapshot_path"]=normpath(self.settings["storedir"]+\
-				"/snapshots/" + self.settings["snapshot_name"] +
-				self.settings["snapshot"])
-
-			if os.path.exists(self.settings["snapshot_path"]):
-				self.settings["snapshot_path_hash"] = \
-					self.settings["hash_map"].generate_hash(
-						self.settings["snapshot_path"],
-						hash_ = self.settings["hash_function"],
-						verbose = False)
+			self.settings["snapshot"]))
+		print "*** SNAPSHOT_PATH set to:", self.settings["snapshot_path"]
+		self.settings["snapshot_path_hash"] = \
+			self.settings["hash_map"].generate_hash(
+				self.settings["snapshot_path"],
+				hash_ = self.settings["hash_function"],
+				verbose = False)
 
 	def set_snapcache_path(self):
 		self.settings["snapshot_cache_path"]=\
@@ -723,12 +714,10 @@ class StageBase(TargetBase, ClearBase, GenBase):
 			else:
 				""" SEEDCACHE is a not a directory, try untar'ing """
 				print "Referenced SEEDCACHE does not appear to be a directory, trying to untar..."
-				unpack_info['mode'] = self.decompressor.determine_mode(
-						self.settings["source_path"])
+				unpack_info['source'] = file_check(unpack_info['source'])
 		else:
 			""" No SEEDCACHE, use tar """
-			unpack_info['mode'] = self.decompressor.determine_mode(
-					unpack_info["source"])
+			unpack_info['source'] = file_check(unpack_info['source'])
 		# endif "seedcache"
 
 		if "autoresume" in self.settings["options"]:
@@ -742,19 +731,23 @@ class StageBase(TargetBase, ClearBase, GenBase):
 				and self.settings["source_path_hash"]==clst_unpack_hash:
 				""" Autoresume is valid, tarball is valid """
 				_unpack=False
-				invalid_snapshot=True
+				invalid_snapshot=False
 
 			elif os.path.isdir(self.settings["source_path"]) \
 				and self.resume.is_disabled("unpack"):
 				""" Autoresume is invalid, SEEDCACHE """
 				_unpack=True
-				invalid_snapshot=False
+				invalid_snapshot=True
+				# check and reset the unpack_info['source']
+				unpack_info['source'] = file_check(unpack_info['source'])
 
 			elif os.path.isfile(self.settings["source_path"]) \
 				and self.settings["source_path_hash"]!=clst_unpack_hash:
 				""" Autoresume is invalid, tarball """
 				_unpack=True
 				invalid_snapshot=True
+				unpack_info['source'] = file_check(unpack_info['source'])
+
 		else:
 			""" No autoresume, SEEDCACHE """
 			if "seedcache" in self.settings["options"]:

diff --git a/catalyst/support.py b/catalyst/support.py
index 2ac4816..b6705c9 100644
--- a/catalyst/support.py
+++ b/catalyst/support.py
@@ -1,4 +1,5 @@
 
+import glob
 import sys
 import string
 import os
@@ -144,6 +145,25 @@ def cmd(mycmd, myexc="", env={}, debug=False, fail_func=None):
 			print_traceback=False)
 
 
+def file_check(filepath):
+	'''Check for the files existence and that only one exists
+	if others are found with various extensions
+	'''
+	if os.path.exists(filepath):
+		return filepath
+	# it didn't exist
+	# so check if there are files of that name with an extension
+	files = glob.glob("%s.*" % filepath)
+	# remove any false positive files
+	files = [x for x in files if not x.endswith(".CONTENTS") and not x.endswith(".DIGESTS")]
+	if len(files) is 1:
+		return files[0]
+	elif len(files) > 1:
+		msg = "Ambiguos Filename: %s\nPlease specify the correct extension as well" % filepath
+		raise CatalystError(msg, print_traceback=False)
+	raise CatalystError("File Not Found: %s" % filepath)
+
+
 def file_locate(settings,filelist,expand=1):
 	#if expand=1, non-absolute paths will be accepted and
 	# expanded to os.getcwd()+"/"+localpath if file exists
@@ -186,6 +206,7 @@ defined are not preserved. In other words, "foo", "bar", "oni" ordering is prese
 """,
 					print_traceback=True)
 
+
 def parse_makeconf(mylines):
 	mymakeconf={}
 	pos=0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-09-08 14:14 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-02-26 22:18 [gentoo-commits] proj/catalyst:master commit in: catalyst/, catalyst/base/ Brian Dolbec
2015-02-26 20:44 ` [gentoo-commits] proj/catalyst:pending commit in: catalyst/base/, catalyst/ Brian Dolbec
  -- strict thread matches above, loose matches on Subject: below --
2015-09-08 14:14 Brian Dolbec
2015-01-01  5:59 Brian Dolbec
2015-01-01  5:59 Brian Dolbec
2015-01-01  5:59 Brian Dolbec

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox