public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/_parallel_manifest/
@ 2012-10-03 20:16 Zac Medico
  0 siblings, 0 replies; 11+ messages in thread
From: Zac Medico @ 2012-10-03 20:16 UTC (permalink / raw
  To: gentoo-commits

commit:     6799588506c12f05c7bb4e19c6a0d1d95a10664e
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  3 20:16:06 2012 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Wed Oct  3 20:16:06 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=67995885

ManifestTask: add missing signatures

If the existing Manifest already has the correct content, but it is
not signed, then sign it if appropriate.

---
 .../ebuild/_parallel_manifest/ManifestTask.py      |   20 ++++++++++++++++++--
 1 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py b/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
index 53b85b2..2c09ebc 100644
--- a/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
+++ b/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
@@ -1,6 +1,8 @@
 # Copyright 2012 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
+import errno
+
 from portage import os
 from portage.util import shlex_split, varexpand, writemsg
 from _emerge.CompositeTask import CompositeTask
@@ -12,6 +14,8 @@ class ManifestTask(CompositeTask):
 	__slots__ = ("cp", "distdir", "fetchlist_dict", "gpg_cmd",
 		"gpg_vars", "repo_config", "_manifest_path")
 
+	_PGP_HEADER = b"BEGIN PGP SIGNED MESSAGE"
+
 	def _start(self):
 		self._manifest_path = os.path.join(self.repo_config.location,
 			self.cp, "Manifest")
@@ -29,9 +33,12 @@ class ManifestTask(CompositeTask):
 			return
 
 		modified = manifest_proc.returncode == manifest_proc.MODIFIED
+		sign = self.gpg_cmd is not None
+
+		if not modified and sign:
+			sign = self._need_signature()
 
-		if self.gpg_cmd is None or not modified or \
-			not os.path.exists(self._manifest_path):
+		if not sign or not os.path.exists(self._manifest_path):
 			self.returncode = os.EX_OK
 			self._current_task = None
 			self.wait()
@@ -73,3 +80,12 @@ class ManifestTask(CompositeTask):
 
 		self._current_task = None
 		self.wait()
+
+	def _need_signature(self):
+		try:
+			with open(self._manifest_path, 'rb') as f:
+				return self._PGP_HEADER not in f.readline()
+		except IOError as e:
+			if e.errno in (errno.ENOENT, errno.ESTALE):
+				return False
+			raise


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

* [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/_parallel_manifest/
@ 2012-10-03 20:21 Zac Medico
  0 siblings, 0 replies; 11+ messages in thread
From: Zac Medico @ 2012-10-03 20:21 UTC (permalink / raw
  To: gentoo-commits

commit:     c41055e0698320221f3c42905f413ae9c87a5a85
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  3 20:16:06 2012 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Wed Oct  3 20:21:01 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=c41055e0

ManifestTask: add missing signatures

If the existing Manifest already has the correct content, but it is
not signed, then sign it if appropriate.

---
 .../ebuild/_parallel_manifest/ManifestTask.py      |   22 ++++++++++++++++++-
 1 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py b/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
index 53b85b2..1b954f0 100644
--- a/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
+++ b/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
@@ -1,7 +1,10 @@
 # Copyright 2012 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
+import errno
+
 from portage import os
+from portage import _unicode_encode, _encodings
 from portage.util import shlex_split, varexpand, writemsg
 from _emerge.CompositeTask import CompositeTask
 from _emerge.SpawnProcess import SpawnProcess
@@ -12,6 +15,8 @@ class ManifestTask(CompositeTask):
 	__slots__ = ("cp", "distdir", "fetchlist_dict", "gpg_cmd",
 		"gpg_vars", "repo_config", "_manifest_path")
 
+	_PGP_HEADER = b"BEGIN PGP SIGNED MESSAGE"
+
 	def _start(self):
 		self._manifest_path = os.path.join(self.repo_config.location,
 			self.cp, "Manifest")
@@ -29,9 +34,12 @@ class ManifestTask(CompositeTask):
 			return
 
 		modified = manifest_proc.returncode == manifest_proc.MODIFIED
+		sign = self.gpg_cmd is not None
+
+		if not modified and sign:
+			sign = self._need_signature()
 
-		if self.gpg_cmd is None or not modified or \
-			not os.path.exists(self._manifest_path):
+		if not sign or not os.path.exists(self._manifest_path):
 			self.returncode = os.EX_OK
 			self._current_task = None
 			self.wait()
@@ -73,3 +81,13 @@ class ManifestTask(CompositeTask):
 
 		self._current_task = None
 		self.wait()
+
+	def _need_signature(self):
+		try:
+			with open(_unicode_encode(self._manifest_path,
+				encoding=_encodings['fs'], errors='strict'), 'rb') as f:
+				return self._PGP_HEADER not in f.readline()
+		except IOError as e:
+			if e.errno in (errno.ENOENT, errno.ESTALE):
+				return False
+			raise


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

* [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/_parallel_manifest/
@ 2012-10-03 23:32 Zac Medico
  0 siblings, 0 replies; 11+ messages in thread
From: Zac Medico @ 2012-10-03 23:32 UTC (permalink / raw
  To: gentoo-commits

commit:     66c95f2ab154f1ac15a4f22b1b5d14ecf2f661ba
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Wed Oct  3 23:29:15 2012 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Wed Oct  3 23:31:43 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=66c95f2a

ManifestScheduler: handle InvalidDependString

---
 .../ebuild/_parallel_manifest/ManifestScheduler.py |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/pym/portage/package/ebuild/_parallel_manifest/ManifestScheduler.py b/pym/portage/package/ebuild/_parallel_manifest/ManifestScheduler.py
index b480e77..b002066 100644
--- a/pym/portage/package/ebuild/_parallel_manifest/ManifestScheduler.py
+++ b/pym/portage/package/ebuild/_parallel_manifest/ManifestScheduler.py
@@ -4,6 +4,7 @@
 import portage
 from portage import os
 from portage.dep import _repo_separator
+from portage.exception import InvalidDependString
 from portage.localization import _
 from portage.util._async.AsyncScheduler import AsyncScheduler
 from .ManifestTask import ManifestTask
@@ -61,9 +62,17 @@ class ManifestScheduler(AsyncScheduler):
 				if not cpv_list:
 					continue
 				fetchlist_dict = {}
-				for cpv in cpv_list:
-					fetchlist_dict[cpv] = \
-						list(portdb.getFetchMap(cpv, mytree=mytree))
+				try:
+					for cpv in cpv_list:
+						fetchlist_dict[cpv] = \
+							list(portdb.getFetchMap(cpv, mytree=mytree))
+				except InvalidDependString as e:
+					portage.writemsg(
+						_("!!! %s%s%s: SRC_URI: %s\n") %
+						(cp, _repo_separator, repo_config.name, e),
+						noiselevel=-1)
+					self._error_count += 1
+					continue
 
 				yield ManifestTask(cp=cp, distdir=distdir,
 					fetchlist_dict=fetchlist_dict, repo_config=repo_config,


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

* [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/_parallel_manifest/
@ 2012-10-06 17:26 Zac Medico
  0 siblings, 0 replies; 11+ messages in thread
From: Zac Medico @ 2012-10-06 17:26 UTC (permalink / raw
  To: gentoo-commits

commit:     ddabf811a04a2e12f1f98e623a17f928deb2b3ba
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sat Oct  6 17:26:26 2012 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sat Oct  6 17:26:26 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=ddabf811

ManifestScheduler: tweak _task_exit output order

This ensures that errors are logged before new jobs are scheduled.

---
 .../ebuild/_parallel_manifest/ManifestScheduler.py |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/pym/portage/package/ebuild/_parallel_manifest/ManifestScheduler.py b/pym/portage/package/ebuild/_parallel_manifest/ManifestScheduler.py
index b002066..77d4133 100644
--- a/pym/portage/package/ebuild/_parallel_manifest/ManifestScheduler.py
+++ b/pym/portage/package/ebuild/_parallel_manifest/ManifestScheduler.py
@@ -79,10 +79,12 @@ class ManifestScheduler(AsyncScheduler):
 					gpg_cmd=self._gpg_cmd, gpg_vars=self._gpg_vars)
 
 	def _task_exit(self, task):
-		AsyncScheduler._task_exit(self, task)
+
 		if task.returncode != os.EX_OK:
 			if not self._terminated_tasks:
 				portage.writemsg(
 					"Error processing %s%s%s, continuing...\n" %
 					(task.cp, _repo_separator, task.repo_config.name),
 					noiselevel=-1)
+
+		AsyncScheduler._task_exit(self, task)


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

* [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/_parallel_manifest/
@ 2012-10-16 22:45 Zac Medico
  0 siblings, 0 replies; 11+ messages in thread
From: Zac Medico @ 2012-10-16 22:45 UTC (permalink / raw
  To: gentoo-commits

commit:     687000cd2512155bde70d71df65ba9b88673ae4b
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Tue Oct 16 22:45:17 2012 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Tue Oct 16 22:45:17 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=687000cd

ManifestTask: remove unneeded _proc attribute

It's enough to reference the PopenProcess instance as
self._current_task while it's alive (CompositeTask._cancel() can kill
it via this).

---
 .../ebuild/_parallel_manifest/ManifestTask.py      |   24 ++++++++-----------
 1 files changed, 10 insertions(+), 14 deletions(-)

diff --git a/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py b/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
index 83ef890..bfa7bd7 100644
--- a/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
+++ b/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
@@ -19,8 +19,7 @@ from .ManifestProcess import ManifestProcess
 class ManifestTask(CompositeTask):
 
 	__slots__ = ("cp", "distdir", "fetchlist_dict", "gpg_cmd",
-		"gpg_vars", "repo_config", "force_sign_key", "_manifest_path",
-		"_proc")
+		"gpg_vars", "repo_config", "force_sign_key", "_manifest_path")
 
 	_PGP_HEADER = b"BEGIN PGP SIGNED MESSAGE"
 	_manifest_line_re = re.compile(r'^(%s) ' % "|".join(MANIFEST2_IDENTIFIERS))
@@ -33,11 +32,6 @@ class ManifestTask(CompositeTask):
 			scheduler=self.scheduler)
 		self._start_task(manifest_proc, self._manifest_proc_exit)
 
-	def _cancel(self):
-		if self._proc is not None:
-			self._proc.cancel()
-		CompositeTask._cancel(self)
-
 	def _manifest_proc_exit(self, manifest_proc):
 		self._assert_current(manifest_proc)
 		if manifest_proc.returncode not in (os.EX_OK, manifest_proc.MODIFIED):
@@ -65,14 +59,13 @@ class ManifestTask(CompositeTask):
 		self._start_gpg_proc()
 
 	def _check_sig_key(self):
-		self._proc = PopenProcess(proc=subprocess.Popen(
+		popen_proc = PopenProcess(proc=subprocess.Popen(
 			["gpg", "--verify", self._manifest_path],
 			stdout=subprocess.PIPE, stderr=subprocess.STDOUT),
-			pipe_reader=PipeReader(scheduler=self.scheduler),
-			scheduler=self.scheduler)
-		self._proc.pipe_reader.input_files = {
-			"producer" : self._proc.proc.stdout}
-		self._start_task(self._proc, self._check_sig_key_exit)
+			pipe_reader=PipeReader())
+		popen_proc.pipe_reader.input_files = {
+			"producer" : popen_proc.proc.stdout}
+		self._start_task(popen_proc, self._check_sig_key_exit)
 
 	@staticmethod
 	def _parse_gpg_key(output):
@@ -90,7 +83,6 @@ class ManifestTask(CompositeTask):
 	def _check_sig_key_exit(self, proc):
 		self._assert_current(proc)
 
-		self._proc = None
 		parsed_key = self._parse_gpg_key(
 			proc.pipe_reader.getvalue().decode('utf_8', 'replace'))
 		if parsed_key is not None and \
@@ -100,6 +92,10 @@ class ManifestTask(CompositeTask):
 			self.wait()
 			return
 
+		if self._was_cancelled():
+			self.wait()
+			return
+
 		self._strip_sig(self._manifest_path)
 		self._start_gpg_proc()
 


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

* [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/_parallel_manifest/
@ 2012-10-17  2:01 Zac Medico
  0 siblings, 0 replies; 11+ messages in thread
From: Zac Medico @ 2012-10-17  2:01 UTC (permalink / raw
  To: gentoo-commits

commit:     8a28c000ce225b79076e36f212162f58e01188b7
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Wed Oct 17 02:01:35 2012 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Wed Oct 17 02:01:35 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=8a28c000

ManifestTask: improve gpg key parsing

This fixes it to correctly parse longer key IDs, which do not fit on
the first line of gpg output. Without this fix, failure to parse the
key results in manifest being re-signed even though they already have
a signature with the correct key.

---
 .../ebuild/_parallel_manifest/ManifestTask.py      |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py b/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
index bfa7bd7..d51400a 100644
--- a/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
+++ b/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
@@ -23,6 +23,8 @@ class ManifestTask(CompositeTask):
 
 	_PGP_HEADER = b"BEGIN PGP SIGNED MESSAGE"
 	_manifest_line_re = re.compile(r'^(%s) ' % "|".join(MANIFEST2_IDENTIFIERS))
+	_gpg_key_id_re = re.compile(r'^[0-9A-F]*$')
+	_gpg_key_id_lengths = (8, 16, 24, 32, 40)
 
 	def _start(self):
 		self._manifest_path = os.path.join(self.repo_config.location,
@@ -70,14 +72,15 @@ class ManifestTask(CompositeTask):
 	@staticmethod
 	def _parse_gpg_key(output):
 		"""
-		Returns the last token of the first line, or None if there
-		is no such token.
+		Returns the first token which appears to represent a gpg key
+		id, or None if there is no such token.
 		"""
-		output = output.splitlines()
-		if output:
-			output = output[0].split()
-			if output:
-				return output[-1]
+		regex = ManifestTask._gpg_key_id_re
+		lengths = ManifestTask._gpg_key_id_lengths
+		for token in output.split():
+			m = regex.match(token)
+			if m is not None and len(m.group(0)) in lengths:
+				return m.group(0)
 		return None
 
 	def _check_sig_key_exit(self, proc):


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

* [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/_parallel_manifest/
@ 2012-10-18  1:24 Zac Medico
  0 siblings, 0 replies; 11+ messages in thread
From: Zac Medico @ 2012-10-18  1:24 UTC (permalink / raw
  To: gentoo-commits

commit:     4bd612e8521983f5b8ad939ba3ccf27fccb0d874
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Thu Oct 18 01:24:34 2012 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Thu Oct 18 01:24:34 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=4bd612e8

ManifestTask: use PopenProcess more

---
 .../ebuild/_parallel_manifest/ManifestTask.py      |    4 +---
 1 files changed, 1 insertions(+), 3 deletions(-)

diff --git a/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py b/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
index d51400a..e155bc9 100644
--- a/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
+++ b/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
@@ -13,7 +13,6 @@ from portage.util import (atomic_ofstream, grablines,
 from portage.util._async.PopenProcess import PopenProcess
 from _emerge.CompositeTask import CompositeTask
 from _emerge.PipeReader import PipeReader
-from _emerge.SpawnProcess import SpawnProcess
 from .ManifestProcess import ManifestProcess
 
 class ManifestTask(CompositeTask):
@@ -130,8 +129,7 @@ class ManifestTask(CompositeTask):
 		gpg_vars["FILE"] = self._manifest_path
 		gpg_cmd = varexpand(self.gpg_cmd, mydict=gpg_vars)
 		gpg_cmd = shlex_split(gpg_cmd)
-		gpg_proc = SpawnProcess(
-			args=gpg_cmd, env=os.environ, scheduler=self.scheduler)
+		gpg_proc = PopenProcess(proc=subprocess.Popen(gpg_cmd))
 		self._start_task(gpg_proc, self._gpg_proc_exit)
 
 	def _gpg_proc_exit(self, gpg_proc):


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

* [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/_parallel_manifest/
@ 2012-10-18  1:43 Zac Medico
  0 siblings, 0 replies; 11+ messages in thread
From: Zac Medico @ 2012-10-18  1:43 UTC (permalink / raw
  To: gentoo-commits

commit:     4ec3c49862c9b3cf0ccd7bd2d8112faf36bb04f0
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Thu Oct 18 01:43:27 2012 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Thu Oct 18 01:43:27 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=4ec3c498

ManifestTask: stricter gpg key comparison

Use normalization and == comparison instead of the "in" operator.

---
 .../ebuild/_parallel_manifest/ManifestTask.py      |   15 ++++++++++++++-
 1 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py b/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
index e155bc9..d923088 100644
--- a/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
+++ b/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
@@ -82,13 +82,26 @@ class ManifestTask(CompositeTask):
 				return m.group(0)
 		return None
 
+	@staticmethod
+	def _normalize_gpg_key(key_str):
+		"""
+		Strips leading "0x" and trailing "!", and converts to uppercase
+		(intended to be the same format as that in gpg --verify output).
+		"""
+		key_str = key_str.upper()
+		if key_str.startswith("0X"):
+			key_str = key_str[2:]
+		key_str = key_str.rstrip("!")
+		return key_str
+
 	def _check_sig_key_exit(self, proc):
 		self._assert_current(proc)
 
 		parsed_key = self._parse_gpg_key(
 			proc.pipe_reader.getvalue().decode('utf_8', 'replace'))
 		if parsed_key is not None and \
-			parsed_key.lower() in self.force_sign_key.lower():
+			self._normalize_gpg_key(parsed_key) == \
+			self._normalize_gpg_key(self.force_sign_key):
 			self.returncode = os.EX_OK
 			self._current_task = None
 			self.wait()


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

* [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/_parallel_manifest/
@ 2012-10-18  6:37 Zac Medico
  0 siblings, 0 replies; 11+ messages in thread
From: Zac Medico @ 2012-10-18  6:37 UTC (permalink / raw
  To: gentoo-commits

commit:     c34b00b7b402b199cc6b7db1a7d1d4547ef3b413
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Thu Oct 18 06:37:20 2012 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Thu Oct 18 06:37:20 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=c34b00b7

ManifestTask: use null stdin when checking sig

---
 .../ebuild/_parallel_manifest/ManifestTask.py      |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py b/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
index d923088..e2d023a 100644
--- a/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
+++ b/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
@@ -60,10 +60,12 @@ class ManifestTask(CompositeTask):
 		self._start_gpg_proc()
 
 	def _check_sig_key(self):
+		null_fd = os.open('/dev/null', os.O_RDONLY)
 		popen_proc = PopenProcess(proc=subprocess.Popen(
 			["gpg", "--verify", self._manifest_path],
-			stdout=subprocess.PIPE, stderr=subprocess.STDOUT),
+			stdin=null_fd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT),
 			pipe_reader=PipeReader())
+		os.close(null_fd)
 		popen_proc.pipe_reader.input_files = {
 			"producer" : popen_proc.proc.stdout}
 		self._start_task(popen_proc, self._check_sig_key_exit)


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

* [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/_parallel_manifest/
@ 2013-01-06 11:06 Zac Medico
  0 siblings, 0 replies; 11+ messages in thread
From: Zac Medico @ 2013-01-06 11:06 UTC (permalink / raw
  To: gentoo-commits

commit:     b04d876dc648c4e813ddc5f3036c5d3c94a41b74
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sun Jan  6 11:05:58 2013 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sun Jan  6 11:05:58 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=b04d876d

ManifestScheduler: fix signal interrupt handling

---
 .../ebuild/_parallel_manifest/ManifestScheduler.py |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/pym/portage/package/ebuild/_parallel_manifest/ManifestScheduler.py b/pym/portage/package/ebuild/_parallel_manifest/ManifestScheduler.py
index 3dc9556..50c9c74 100644
--- a/pym/portage/package/ebuild/_parallel_manifest/ManifestScheduler.py
+++ b/pym/portage/package/ebuild/_parallel_manifest/ManifestScheduler.py
@@ -1,4 +1,4 @@
-# Copyright 2012 Gentoo Foundation
+# Copyright 2012-2013 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 import portage
@@ -31,7 +31,7 @@ class ManifestScheduler(AsyncScheduler):
 
 	def _iter_every_cp(self):
 		every_cp = self._portdb.cp_all()
-		every_cp.sort(reverse=True)
+		every_cp.reverse()
 		try:
 			while not self._terminated_tasks:
 				yield every_cp.pop()
@@ -44,11 +44,13 @@ class ManifestScheduler(AsyncScheduler):
 		disabled_repos = set()
 
 		for cp in self._cp_iter:
-			if self._terminated_tasks:
+			if self._terminated.is_set():
 				break
 			# We iterate over portdb.porttrees, since it's common to
 			# tweak this attribute in order to adjust repo selection.
 			for mytree in portdb.porttrees:
+				if self._terminated.is_set():
+					break
 				repo_config = portdb.repositories.get_repo_for_location(mytree)
 				if not repo_config.create_manifest:
 					if repo_config.name not in disabled_repos:


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

* [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/_parallel_manifest/
@ 2013-01-08  1:48 Zac Medico
  0 siblings, 0 replies; 11+ messages in thread
From: Zac Medico @ 2013-01-08  1:48 UTC (permalink / raw
  To: gentoo-commits

commit:     f254a3a8135e9b32ae931dffdc36c4fbfe813cc3
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Tue Jan  8 01:48:11 2013 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Tue Jan  8 01:48:11 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=f254a3a8

ManifestTask: use PipeLogger for monitoring

---
 .../ebuild/_parallel_manifest/ManifestTask.py      |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py b/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
index e2d023a..0ee2b91 100644
--- a/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
+++ b/pym/portage/package/ebuild/_parallel_manifest/ManifestTask.py
@@ -1,4 +1,4 @@
-# Copyright 2012 Gentoo Foundation
+# Copyright 2012-2013 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 import errno
@@ -10,6 +10,7 @@ from portage import _unicode_encode, _encodings
 from portage.const import MANIFEST2_IDENTIFIERS
 from portage.util import (atomic_ofstream, grablines,
 	shlex_split, varexpand, writemsg)
+from portage.util._async.PipeLogger import PipeLogger
 from portage.util._async.PopenProcess import PopenProcess
 from _emerge.CompositeTask import CompositeTask
 from _emerge.PipeReader import PipeReader
@@ -144,7 +145,12 @@ class ManifestTask(CompositeTask):
 		gpg_vars["FILE"] = self._manifest_path
 		gpg_cmd = varexpand(self.gpg_cmd, mydict=gpg_vars)
 		gpg_cmd = shlex_split(gpg_cmd)
-		gpg_proc = PopenProcess(proc=subprocess.Popen(gpg_cmd))
+		gpg_proc = PopenProcess(proc=subprocess.Popen(gpg_cmd,
+			stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
+		# PipeLogger echos output and efficiently monitors for process
+		# exit by listening for the stdout EOF event.
+		gpg_proc.pipe_reader = PipeLogger(background=self.background,
+			input_fd=gpg_proc.proc.stdout, scheduler=self.scheduler)
 		self._start_task(gpg_proc, self._gpg_proc_exit)
 
 	def _gpg_proc_exit(self, gpg_proc):


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

end of thread, other threads:[~2013-01-08  1:48 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-16 22:45 [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/_parallel_manifest/ Zac Medico
  -- strict thread matches above, loose matches on Subject: below --
2013-01-08  1:48 Zac Medico
2013-01-06 11:06 Zac Medico
2012-10-18  6:37 Zac Medico
2012-10-18  1:43 Zac Medico
2012-10-18  1:24 Zac Medico
2012-10-17  2:01 Zac Medico
2012-10-06 17:26 Zac Medico
2012-10-03 23:32 Zac Medico
2012-10-03 20:21 Zac Medico
2012-10-03 20:16 Zac Medico

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