summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-03-10 14:49:47 -0800
committerZac Medico <zmedico@gentoo.org>2011-03-14 09:23:19 -0700
commitef6643061e9c7f1447968d916cc876d91da59b76 (patch)
treea92660665905c770b9eb08d300cd5d8cf0c1e27d /bin
parent157382fae7b4b4c74a6f7ce319c602c269cc7e96 (diff)
downloadportage-ef6643061e9c7f1447968d916cc876d91da59b76.tar.gz
portage-ef6643061e9c7f1447968d916cc876d91da59b76.tar.bz2
portage-ef6643061e9c7f1447968d916cc876d91da59b76.zip
ebuild-ipc: use plain file read instead of array
Array.fromfile() seems to be more error prone. For example, see bug 337465.
Diffstat (limited to 'bin')
-rwxr-xr-xbin/ebuild-ipc.py15
1 files changed, 6 insertions, 9 deletions
diff --git a/bin/ebuild-ipc.py b/bin/ebuild-ipc.py
index 45d71202e..d8e7e5512 100755
--- a/bin/ebuild-ipc.py
+++ b/bin/ebuild-ipc.py
@@ -1,11 +1,10 @@
#!/usr/bin/python
-# Copyright 2010 Gentoo Foundation
+# Copyright 2010-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
#
# This is a helper which ebuild processes can use
# to communicate with portage's main python process.
-import array
import logging
import os
import pickle
@@ -141,13 +140,11 @@ class EbuildIpc(object):
# read and write of whole pickles.
input_file = open(self.ipc_out_fifo, 'rb', 0)
- # For maximum portability, us an array in order to force
- # a single atomic read of a whole pickle (bug #337465).
- buf = array.array('B')
-
+ # For maximum portability, use a single atomic read.
+ buf = None
try:
- buf.fromfile(input_file, self._BUFSIZE)
- except (EOFError, IOError) as e:
+ buf = input_file.read(self._BUFSIZE)
+ except IOError as e:
if not buf:
portage.util.writemsg_level(
"ebuild-ipc: %s\n" % (e,),
@@ -167,7 +164,7 @@ class EbuildIpc(object):
else:
try:
- reply = pickle.loads(buf.tostring())
+ reply = pickle.loads(buf)
except SystemExit:
raise
except Exception as e: