]> git.ipfire.org Git - pakfire.git/commitdiff
Make sure to kill all running processes in chroot.
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 5 Aug 2011 16:23:46 +0000 (18:23 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 5 Aug 2011 16:23:46 +0000 (18:23 +0200)
pakfire/builder.py
pakfire/util.py
po/pakfire.pot

index d8f12d21db840a226a9dc86485063e4222b14a49..401b0bdf949f7f97c7a1b947fae828078171bad7 100644 (file)
@@ -442,6 +442,8 @@ class Builder(object):
                os.mknod(filename, mode, device)
 
        def destroy(self):
+               util.orphans_kill(self.path)
+
                logging.debug("Destroying environment %s" % self.path)
 
                if os.path.exists(self.path):
index 774b495210d8e28f3ba6f0db42adc4533a67ccb3..44fd454a714fb8ac2e04fdb82e9e6247dad0a30d 100644 (file)
@@ -4,10 +4,12 @@ from __future__ import division
 
 import fcntl
 import hashlib
+import logging
 import os
 import progressbar
 import random
 import shutil
+import signal
 import string
 import struct
 import sys
@@ -199,3 +201,21 @@ def text_wrap(s, length=65):
                t.append(l)
 
        return [" ".join(l) for l in t]
+
+def orphans_kill(root, killsig=signal.SIGTERM):
+       """
+               kill off anything that is still chrooted.
+       """
+       logging.debug("Killing orphans...")
+
+       for fn in [d for d in os.listdir("/proc") if d.isdigit()]:
+               try:
+                       r = os.readlink("/proc/%s/root" % fn)
+                       if os.path.realpath(root) == os.path.realpath(r):
+                               logging.warning("Process ID %s is still running in chroot. Killing..." % fn)
+
+                               pid = int(fn, 10)
+                               os.kill(pid, killsig)
+                               os.waitpid(pid, 0)
+               except OSError, e:
+                       pass
index 1d94de78ca19f0bf9c30551a6150e522d1bff6c6..b4d8631df450c22583f04e74d1a809e29a1f706e 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-08-04 00:03+0200\n"
+"POT-Creation-Date: 2011-08-05 18:22+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -38,16 +38,16 @@ msgstr ""
 msgid "Downgrading"
 msgstr ""
 
-#: ../pakfire/base.py:156 ../pakfire/base.py:198 ../pakfire/base.py:228
-#: ../pakfire/base.py:249
+#: ../pakfire/base.py:157 ../pakfire/base.py:199 ../pakfire/base.py:230
+#: ../pakfire/base.py:252
 msgid "Nothing to do"
 msgstr ""
 
-#: ../pakfire/base.py:184
+#: ../pakfire/base.py:185
 msgid "There are no packages to install."
 msgstr ""
 
-#: ../pakfire/base.py:445
+#: ../pakfire/base.py:448
 msgid "Everything is fine."
 msgstr ""
 
@@ -461,7 +461,7 @@ msgstr ""
 msgid "Running transaction"
 msgstr ""
 
-#: ../pakfire/util.py:44
+#: ../pakfire/util.py:46
 #, python-format
 msgid "%s [y/N]"
 msgstr ""