From 3c3de3395dd43fbc686643bcd362de358daeb15e Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Tue, 5 Jan 2010 12:05:07 +0100 Subject: [PATCH] [entropy.spm] PortagePlugin: fix issue that caused pkg_postrm, pkg_prerm to not run due to missing portage_tmpdir directory --- .../spm/plugins/interfaces/portage_plugin/__init__.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libraries/entropy/spm/plugins/interfaces/portage_plugin/__init__.py b/libraries/entropy/spm/plugins/interfaces/portage_plugin/__init__.py index 7abcb6e9c..fd190267b 100644 --- a/libraries/entropy/spm/plugins/interfaces/portage_plugin/__init__.py +++ b/libraries/entropy/spm/plugins/interfaces/portage_plugin/__init__.py @@ -16,7 +16,7 @@ import shutil import tempfile import subprocess from entropy.const import etpConst, etpUi, const_get_stringtype, \ - const_convert_to_unicode, const_convert_to_rawstring + const_convert_to_unicode, const_convert_to_rawstring, const_setup_perms from entropy.exceptions import FileNotFound, SPMError, InvalidDependString, \ InvalidData, InvalidAtom from entropy.output import darkred, darkgreen, brown, darkblue, purple, red, \ @@ -1622,6 +1622,9 @@ class PortagePlugin(SpmPlugin): if portage_tmpdir is None: portage_tmpdir = tempfile.mkdtemp() portage_tmpdir_created = True + elif not os.path.isdir(portage_tmpdir): + os.makedirs(portage_tmpdir, 0o774) + const_setup_perms(portage_tmpdir, etpConst['entropygid']) if portage_tmpdir: mysettings['PORTAGE_TMPDIR'] = str(portage_tmpdir) @@ -1631,7 +1634,8 @@ class PortagePlugin(SpmPlugin): portdir = os.path.join(portage_tmpdir, "portdir") portdir_lic = os.path.join(portdir, "licenses") if not os.path.isdir(portdir): - os.mkdir(portdir) # portage_tmpdir must be available! + os.mkdir(portdir, 0o774) + const_setup_perms(portdir, etpConst['entropygid']) # create licenses subdir if not os.path.isdir(portdir_lic): os.mkdir(portdir_lic) @@ -1984,6 +1988,7 @@ class PortagePlugin(SpmPlugin): stdfile.flush() sys.stdout = oldstdout + sys.stderr = oldstderr entropy.tools.print_traceback() self.log_message(