diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-01-10 19:07:58 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-01-10 19:07:58 +0000 |
commit | 0964d05f4a513c07a3ee84b742ac486c86700056 (patch) | |
tree | 514ed0ae768bdb3925c16f100f74a202ee3a138c | |
parent | e25182005600e3e5d0591c1d3e2ccc232417419f (diff) | |
download | portage-0964d05f4a513c07a3ee84b742ac486c86700056.tar.gz portage-0964d05f4a513c07a3ee84b742ac486c86700056.tar.bz2 portage-0964d05f4a513c07a3ee84b742ac486c86700056.zip |
Use ebegin/eend to indicate when waiting for a lock and when it's acquired.
Thanks to Petteri Räty <belegeuse@g.o> for the suggestion.
svn path=/main/trunk/; revision=12415
-rw-r--r-- | pym/portage/locks.py | 23 | ||||
-rw-r--r-- | pym/portage/output.py | 9 |
2 files changed, 18 insertions, 14 deletions
diff --git a/pym/portage/locks.py b/pym/portage/locks.py index fc8779285..f557d8096 100644 --- a/pym/portage/locks.py +++ b/pym/portage/locks.py @@ -11,6 +11,7 @@ import errno, os, stat, time, types from portage.exception import DirectoryNotFound, FileNotFound, \ InvalidData, TryAgain from portage.data import portage_gid +from portage.output import EOutput from portage.util import writemsg from portage.localization import _ @@ -92,19 +93,21 @@ def lockfile(mypath, wantnewlockfile=0, unlinkfile=0, raise TryAgain(mypath) global _quiet - if _quiet: - pass - elif waiting_msg is None: + out = EOutput() + out.quiet = _quiet + if waiting_msg is None: if isinstance(mypath, int): - writemsg("waiting for lock on fd %i\n" % myfd, - noiselevel=-1) + waiting_msg = "waiting for lock on fd %i" % myfd else: - writemsg("waiting for lock on %s\n" % lockfilename, - noiselevel=-1) - elif waiting_msg: - writemsg(waiting_msg + "\n", noiselevel=-1) + waiting_msg = "waiting for lock on %s\n" % lockfilename + out.ebegin(waiting_msg) # try for the exclusive lock now. - fcntl.lockf(myfd,fcntl.LOCK_EX) + try: + fcntl.lockf(myfd, fcntl.LOCK_EX) + except EnvironmentError, e: + out.eend(1, str(e)) + raise + out.eend(os.EX_OK) elif e.errno == errno.ENOLCK: # We're not allowed to lock on this FS. os.close(myfd) diff --git a/pym/portage/output.py b/pym/portage/output.py index defcb478b..f833e8f5d 100644 --- a/pym/portage/output.py +++ b/pym/portage/output.py @@ -461,10 +461,11 @@ class EOutput(object): self.ewarn(msg[0]) if self.__last_e_cmd != "ebegin": self.__last_e_len = 0 - out = sys.stdout - out.write("%*s%s\n" % \ - ((self.term_columns - self.__last_e_len - 6), "", status_brackets)) - out.flush() + if not self.quiet: + out = sys.stdout + out.write("%*s%s\n" % ((self.term_columns - self.__last_e_len - 6), + "", status_brackets)) + out.flush() def ebegin(self, msg): """ |