From c5d13d0c60703bf4e15d67dfc2cb37a453060e02 Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Thu, 10 Feb 2011 19:57:22 +0100 Subject: [PATCH] [entropy] some more misc python3.x fixes --- libraries/entropy/dep.py | 10 ++++++++++ libraries/entropy/misc.py | 2 +- libraries/entropy/security.py | 11 ++++++++++- .../plugins/interfaces/portage_plugin/__init__.py | 12 +++++++----- .../spm/plugins/interfaces/portage_plugin/xpak.py | 9 ++++----- 5 files changed, 32 insertions(+), 12 deletions(-) diff --git a/libraries/entropy/dep.py b/libraries/entropy/dep.py index 1d2477a30..17b58d11e 100644 --- a/libraries/entropy/dep.py +++ b/libraries/entropy/dep.py @@ -819,6 +819,16 @@ class Dependency(object): """ return self.__dep + def __bool__(self): + """ + Same as __nonzero__ but meant for Python 3.x support + """ + for entropy_repository in self.__entropy_repository_list: + pkg_id, res = entropy_repository.atomMatch(self.__dep) + if res == 0: + return True + return False + def __nonzero__(self): """ Tries to match entropy_dep and returns True or False if dependency diff --git a/libraries/entropy/misc.py b/libraries/entropy/misc.py index cbcf03db2..fdfd174a3 100644 --- a/libraries/entropy/misc.py +++ b/libraries/entropy/misc.py @@ -148,7 +148,7 @@ class Lifo(object): @return: None @rtype: None """ - for key, buf_entry in self.__buf.items(): + for key, buf_entry in tuple(self.__buf.items()): # identity is generally faster, so try # this first if self.__buf is None: # shutting down py diff --git a/libraries/entropy/security.py b/libraries/entropy/security.py index 76395852a..0692ff144 100644 --- a/libraries/entropy/security.py +++ b/libraries/entropy/security.py @@ -13,6 +13,7 @@ """ import os +import sys import errno import shutil import subprocess @@ -22,7 +23,8 @@ import time from entropy.exceptions import EntropyException from entropy.const import etpConst, etpUi, const_setup_perms, \ - const_debug_write, const_setup_file, const_convert_to_unicode + const_debug_write, const_setup_file, const_convert_to_unicode, \ + const_convert_to_rawstring from entropy.i18n import _ from entropy.output import blue, bold, red, darkgreen, darkred, purple, brown from entropy.cache import EntropyCacher @@ -1558,6 +1560,8 @@ class Repository: proc = subprocess.Popen(args, **self.__default_popen_args(stderr = True)) try: + if sys.hexversion >= 0x3000000: + key_input = const_convert_to_rawstring(key_input) # feed gpg with data proc_stdout, proc_stderr = proc.communicate(input = key_input) # wait for process to terminate @@ -1569,6 +1573,9 @@ class Repository: raise Repository.GPGError( "cannot generate key, exit status %s" % (proc_rc,)) + if sys.hexversion >= 0x3000000: + proc_stdout = const_convert_to_unicode(proc_stdout) + proc_stderr = const_convert_to_unicode(proc_stderr) # now get fucking fingerprint key_data = [x.strip() for x in (proc_stdout+proc_stderr).split("\n") \ if x.strip() and "KEY_CREATED" in x.split()] @@ -1812,6 +1819,8 @@ class Repository: fingerprint, proc_rc,)) key_string = proc.stdout.read() + if sys.hexversion >= 0x3000000: + key_string = const_convert_to_unicode(key_string) return key_string finally: self.__default_popen_close(proc) diff --git a/libraries/entropy/spm/plugins/interfaces/portage_plugin/__init__.py b/libraries/entropy/spm/plugins/interfaces/portage_plugin/__init__.py index da962743b..83f960203 100644 --- a/libraries/entropy/spm/plugins/interfaces/portage_plugin/__init__.py +++ b/libraries/entropy/spm/plugins/interfaces/portage_plugin/__init__.py @@ -928,7 +928,6 @@ class PortagePlugin(SpmPlugin): tmp_fd, tmp_file = tempfile.mkstemp(prefix = "etp_portage") try: with os.fdopen(tmp_fd, "w") as std_f: - cmd = const_convert_to_rawstring(cmd) proc = subprocess.Popen(shlex.split(cmd), stdout = std_f, stderr = std_f) sts = proc.wait() @@ -1686,7 +1685,7 @@ class PortagePlugin(SpmPlugin): static_file_class = sets_obj.files.StaticFileSet # filter out Portage-generated sets object, those not being # an instance of portage._sets.files.StaticFileSet - for key, obj in mysets.items(): + for key, obj in tuple(mysets.items()): if not isinstance(obj, static_file_class): mysets.pop(key) @@ -2518,7 +2517,10 @@ class PortagePlugin(SpmPlugin): portdb = self._get_portage_portagetree(root).dbapi mdigest = hashlib.md5() # this way, if no matches are found, the same value is returned - mdigest.update("begin") + if sys.hexversion >= 0x3000000: + mdigest.update(const_convert_to_rawstring("begin")) + else: + mdigest.update("begin") for repo_name in portdb.getRepositories(): repo_path = portdb.getRepositoryPath(repo_name) @@ -3172,12 +3174,12 @@ class PortagePlugin(SpmPlugin): new = open(world_file_tmp, "wb") old = open(world_file, "rb") line = old.readline() - key = const_convert_to_rawstring(key) + key_raw = const_convert_to_rawstring(key) keyslot = const_convert_to_rawstring(key+":"+slot) while line: - if line.find(key) != -1: + if line.find(key_raw) != -1: line = old.readline() continue if line.find(keyslot) != -1: diff --git a/libraries/entropy/spm/plugins/interfaces/portage_plugin/xpak.py b/libraries/entropy/spm/plugins/interfaces/portage_plugin/xpak.py index b39e9f9ee..3012248a1 100644 --- a/libraries/entropy/spm/plugins/interfaces/portage_plugin/xpak.py +++ b/libraries/entropy/spm/plugins/interfaces/portage_plugin/xpak.py @@ -45,7 +45,7 @@ def _addtolist(mylist, curdir, _nested = False): mylist.append(x_path) if not _nested: - for idx in xrange(len(mylist)): + for idx in range(len(mylist)): mylist[idx] = mylist[idx][len(curdir)+1:] def encodeint(myint): @@ -86,10 +86,9 @@ def xpak(rootdir, outfile=None): mylist.sort() mydata = {} for x in mylist: - x_path = os.path.join(rootdir, x) - a = open(x_path, "rb") - mydata[x] = a.read() - a.close() + x_path = os.path.join(const_convert_to_rawstring(rootdir), x) + with open(x_path, "rb") as a: + mydata[x] = a.read() xpak_segment = xpak_mem(mydata) if outfile: