]> TLD Linux GIT Repositories - tld-builder.git/blobdiff - TLD_Builder/chroot.py
- import shutil
[tld-builder.git] / TLD_Builder / chroot.py
index de2459891ee81b227019d1c505c2d5892bbdddc9..7485e7213add7996c1d4c08f84e7ce0f216d9356 100644 (file)
@@ -4,13 +4,9 @@ import os
 import re
 import random
 import util
+import shutil
 import subprocess
 
-try:
-    from hashlib import md5 as md5
-except ImportError:
-    from md5 import md5
-
 from config import config
 
 def quote(cmd):
@@ -55,36 +51,16 @@ def run(cmd, user = "builder", logfile = None, logstdout = None):
         return r
 
 def cp(file, outfile, user="builder", rm=False):
-    m = md5()
-    m.update(util.to_bytes(str(random.sample(range(100000), 500))))
-    digest = m.hexdigest()
-
-    marker_start = "--- FILE BEGIN DIGEST %s ---" % digest
-    marker_end = "--- FILE END DIGEST %s ---" % digest
-
-    f = open(outfile, 'wb')
-    cmd = "echo \"%s\"; cat %s; echo \"%s\"" % (marker_start, file, marker_end)
+    f_out = open(outfile, 'wb')
+    cmd = "cat %s" % file
     if rm:
         cmd += "; rm %s" % file
-    c = command(cmd, user)
-    p = os.popen(c)
-    # get file contents
-    marker = False
-    for l in p:
-        if not marker and l.strip() == marker_start:
-            marker = True
-            continue
-        me = l.find(marker_end)
-        if me != -1:
-            l = l[:me]
-            f.write(util.to_bytes(l))
-            marker = False
-            break
-        if marker:
-            f.write(util.to_bytes(l))
-    rp = p.close()
-    rf = f.close()
-    if rp == None:
+    p = subprocess.Popen(command(cmd, user), shell=True, stdout=subprocess.PIPE, close_fds=True)
+    f_in = p.stdout
+    shutil.copyfileobj(f_in, f_out)
+    f_out.close()
+    r = f_in.close()
+    if r == None:
         return 0
     else:
-        return rp
+        return r