aboutsummaryrefslogtreecommitdiffstats
path: root/mini-dinstall
diff options
context:
space:
mode:
Diffstat (limited to 'mini-dinstall')
-rwxr-xr-xmini-dinstall53
1 files changed, 17 insertions, 36 deletions
diff --git a/mini-dinstall b/mini-dinstall
index 8d53edc..4ad64a1 100755
--- a/mini-dinstall
+++ b/mini-dinstall
@@ -21,7 +21,7 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
import os, sys, re, glob, getopt, time, traceback, lzma, getpass, socket
-import shutil, threading, select, queue, socketserver, datetime
+import shutil, threading, select, queue, socketserver, datetime, subprocess
import logging, logging.handlers
import apt_pkg
apt_pkg.init()
@@ -977,13 +977,10 @@ class ArchiveDir:
if not os.access(script, os.X_OK):
self._logger.error("Can't execute script \"%s\"" % script)
return True
- pid = os.fork()
- if pid == 0:
- os.execlp(script, script, changefilename)
- sys.exit(1)
- (pid, status) = os.waitpid(pid, 0)
- if status or (not os.WIFEXITED(status) and os.WEXITSTATUS(status) != 0):
- self._logger.error('script "%s" exited with error code %d' % (cmd, os.WEXITSTATUS(status)))
+ try:
+ subprocess.check_call([script, changefilename])
+ except subprocess.CalledProcessError as e:
+ self._logger.error('script "%s" exited with error code %d' % (cmd, e.returncode))
return True
return False
@@ -1101,17 +1098,6 @@ class ArchiveDirIndexer(threading.Thread):
self._logger.debug("Running: %s" % ' '.join(cmdline))
if no_act:
return
- (infd, outfd) = os.pipe()
- pid = os.fork()
- if pid == 0:
- os.chdir(self._dir)
- os.chdir('..')
- os.close(infd)
- misc.dup2(outfd, 1)
- os.execvp('apt-ftparchive', cmdline)
- os.exit(1)
- os.close(outfd)
- stdout = os.fdopen(infd)
if arch:
packagesfilename = os.path.join(dir, '%s-%s' % (name, arch))
else:
@@ -1119,17 +1105,17 @@ class ArchiveDirIndexer(threading.Thread):
newpackagesfilename = packagesfilename + '.new'
xzpackagesfilename = packagesfilename + '.xz'
newxzpackagesfilename = newpackagesfilename + '.xz'
- newpackagesfile = open(newpackagesfilename, 'w')
- newxzpackagesfile = lzma.open(newxzpackagesfilename, 'wt')
- buf = stdout.read(8192)
+ newpackagesfile = open(newpackagesfilename, 'wb')
+ newxzpackagesfile = lzma.open(newxzpackagesfilename, 'w')
+ process = subprocess.Popen(cmdline, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=os.path.join(self._dir, '..'))
+ buf = process.stdout.read(8192)
while buf:
newpackagesfile.write(buf)
newxzpackagesfile.write(buf)
- buf = stdout.read(8192)
- stdout.close()
- (pid, status) = os.waitpid(pid, 0)
- if status or (not os.WIFEXITED(status) and os.WEXITSTATUS(status) != 0):
- raise DinstallException("apt-ftparchive exited with status code %d" % status)
+ buf = process.stdout.read(8192)
+ process.wait()
+ if process.returncode != 0:
+ raise DinstallException("apt-ftparchive exited with status code %d" % process.returncode)
newpackagesfile.close()
newxzpackagesfile.close()
shutil.move(newpackagesfilename, packagesfilename)
@@ -1176,15 +1162,10 @@ class ArchiveDirIndexer(threading.Thread):
if not os.access(script, os.X_OK):
self._logger.error("Can't execute script \"%s\"" % script)
return True
- pid = os.fork()
- if pid == 0:
- if dir:
- os.chdir(dir)
- os.execlp(script, script, changefilename)
- sys.exit(1)
- (pid, status) = os.waitpid(pid, 0)
- if status or (not os.WIFEXITED(status) and os.WEXITSTATUS(status) != 0):
- self._logger.error('script "%s" exited with error code %d' % (cmd, os.WEXITSTATUS(status)))
+ try:
+ subprocess.check_call([script, changefilename], cwd=dir)
+ except subprocess.CalledProcessError as e:
+ self._logger.error('script "%s" exited with error code %d' % (cmd, e.returncode))
return True
return False