fbcaed
From d4cd779ea38a42a2f122738e7c8083ca3ac6a367 Mon Sep 17 00:00:00 2001
fbcaed
From: Colin Walters <walters@verbum.org>
fbcaed
Date: Tue, 2 Dec 2014 21:47:43 -0500
fbcaed
Subject: [PATCH] rpmostreepayload: Avoid shutil.copytree in favor of cp -r to
fbcaed
 fix symlinks
fbcaed
fbcaed
shutil.copytree() follows symlinks by default which I didn't realize,
fbcaed
and this actively breaks things as grubenv is a symlink.
fbcaed
fbcaed
Since we're shelling out to 'cp' in a case above, might as well do it
fbcaed
here.
fbcaed
fbcaed
This also means that if we hit e.g. ENOSPC we'll enter the error
fbcaed
handling codepath instead of an uncaught traceback.
fbcaed
fbcaed
(Yes, this code is crappy, should probably live in bootloader.py,
fbcaed
 except I'm going through gyrations here to avoid requiring
fbcaed
 any changes in how mainline bootloaders work)
fbcaed
---
fbcaed
 pyanaconda/packaging/rpmostreepayload.py | 2 +-
fbcaed
 1 file changed, 1 insertion(+), 1 deletion(-)
fbcaed
fbcaed
diff --git a/pyanaconda/packaging/rpmostreepayload.py b/pyanaconda/packaging/rpmostreepayload.py
fbcaed
index ade664c..f96a316 100644
fbcaed
--- a/pyanaconda/packaging/rpmostreepayload.py
fbcaed
+++ b/pyanaconda/packaging/rpmostreepayload.py
fbcaed
@@ -119,7 +119,7 @@ class RPMOSTreePayload(ArchivePayload):
fbcaed
                     self._safeExecWithRedirect('cp', ['-r', '-p', sub_srcpath, sub_destpath])
fbcaed
             else:
fbcaed
                 log.info("Copying bootloader data: " + fname)
fbcaed
-                shutil.copytree(srcpath, destpath)
fbcaed
+                self._safeExecWithRedirect('cp', ['-r', '-p', srcpath, destpath])
fbcaed
 
fbcaed
     def install(self):
fbcaed
         mainctx = GLib.MainContext.new()
fbcaed
-- 
fbcaed
1.8.3.1
fbcaed