commit:     ad72389ed8067d740dd0e3f975a33f0c1cbfd8b5
Author:     Arfrever Frehtes Taifersar Arahesis <Arfrever <AT> Apache <DOT> Org>
AuthorDate: Sun Mar  4 02:25:34 2018 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sun Mar  4 02:37:09 2018 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=ad72389e

movefile: Fix preservation of security.capability xattr

Call _apply_stat() before copying extended attributes, because
_apply_stat() calls os.chown() which results in deleting
security.capability extended attribute.

Bug: https://bugs.gentoo.org/649418

 pym/portage/util/movefile.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pym/portage/util/movefile.py b/pym/portage/util/movefile.py
index 37c809eb5..5477a669f 100644
--- a/pym/portage/util/movefile.py
+++ b/pym/portage/util/movefile.py
@@ -1,4 +1,4 @@
-# Copyright 2010-2013 Gentoo Foundation
+# Copyright 2010-2018 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 from __future__ import absolute_import, unicode_literals
@@ -272,6 +272,7 @@ def movefile(src, dest, newmtime=None, sstat=None, 
mysettings=None,
                                errors='strict')
                        try: # For safety copy then move it over.
                                _copyfile(src_bytes, dest_tmp_bytes)
+                               _apply_stat(sstat, dest_tmp_bytes)
                                if xattr_enabled:
                                        try:
                                                _copyxattr(src_bytes, 
dest_tmp_bytes,
@@ -286,7 +287,6 @@ def movefile(src, dest, newmtime=None, sstat=None, 
mysettings=None,
                                                for line in msg:
                                                        writemsg("!!! %s\n" % 
(line,), noiselevel=-1)
                                                raise
-                               _apply_stat(sstat, dest_tmp_bytes)
                                _rename(dest_tmp_bytes, dest_bytes)
                                _os.unlink(src_bytes)
                        except SystemExit as e:

Reply via email to