]> git.pld-linux.org Git - projects/pld-builder.new.git/blobdiff - PLD_Builder/install.py
Switch to https for client/request handler server and between builders communication...
[projects/pld-builder.new.git] / PLD_Builder / install.py
index d2e46857a1d62033fac60f287c48728f69387220..c5170886030ea866c15d3bf9f3be3fc2823e7135 100644 (file)
@@ -1,6 +1,6 @@
 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
 
-import re
+import re, os
 import string
 import StringIO
 
@@ -13,6 +13,7 @@ hold = [
     'poldek',
     'rpm-build',
     'pdksh',
+    'mksh',
     'coreutils'
 ]
 
@@ -67,6 +68,7 @@ def upgrade_from_batch(r, b):
             res = chroot.run("rpm -e %s" % k, logfile = b.logfile, user = "root")
             if res != 0:
                 b.log_line("package removal failed")
+                return False
             else:
                 b.log_line("packages removed sucessfuly")
         else:
@@ -90,20 +92,22 @@ def uninstall(conflicting, b):
         b.log_line("error: conflicting packages uninstallation failed")
         return False
     else:
-        k = string.join(conflicting.keys())
-        b.log_line("removing %s" % k)
-        res = chroot.run("poldek --noask --erase %s" % k, logfile = b.logfile, user = "root")
-        if res != 0:
-            b.log_line("package removal failed")
-            return False
+        for k in conflicting.keys():
+            b.log_line("removing %s" % k)
+            res = chroot.run("poldek --noask --erase %s" % k, logfile = b.logfile, user = "root")
+            if res != 0:
+                b.log_line("package %s removal failed" % k)
     return True
 
 def uninstall_self_conflict(b):
     b.log_line("checking BuildConflict-ing packages")
-    rpmbuild_opt = "%s %s %s" % (b.target_string(), b.kernel_string(), b.bconds_string())
-    tmpdir = "/tmp/BR." + b.b_id[0:6]
-    f = chroot.popen("cd rpm/SPECS; TMPDIR=%s rpmbuild -bp --nobuild --short-circuit --define 'prep exit 0' %s %s 2>&1" \
-            % (tmpdir, rpmbuild_opt, b.spec))
+    f = chroot.popen("set -e; TMPDIR=%(tmpdir)s " \
+        "rpmbuild -bp --nobuild --short-circuit --define 'prep exit 0' %(rpmdefs)s %(topdir)s/%(spec)s 2>&1" % {
+        'tmpdir': b.tmpdir(),
+        'rpmdefs' : b.rpmbuild_opts(),
+        'topdir' : b._topdir,
+        'spec': b.spec,
+    })
     # java-sun >= 1.5 conflicts with soprano-2.1.67-1.src
     # java-sun conflicts with soprano-2.1.67-1.src
     rx = re.compile(r"\s+(?P<name>[\w-]+)\s+.*conflicts with [^\s]+-[^-]+-[^-]+\.src($| .*)")
@@ -124,10 +128,13 @@ def install_br(r, b):
         # ignore internal rpm dependencies, see lib/rpmns.c for list
         ignore_br = re.compile(r'^\s*(rpmlib|cpuinfo|getconf|uname|soname|user|group|mounted|diskspace|digest|gnupg|macro|envvar|running|sanitycheck|vcheck|signature|verify|exists|executable|readable|writable)\(.*')
 
-        tmpdir = "/tmp/BR." + b.b_id[0:6]
-        chroot.run("install -m 700 -d %s" % tmpdir)
-        cmd = "cd rpm/SPECS; TMPDIR=%s rpmbuild --nobuild %s %s 2>&1" \
-                    % (tmpdir, b.bconds_string(), b.spec)
+        tmpdir = b.tmpdir()
+        cmd = "set -e; TMPDIR=%(tmpdir)s rpmbuild --nobuild %(rpmdefs)s %(topdir)s/%(spec)s 2>&1" % {
+            'tmpdir': tmpdir,
+            'topdir' : b._topdir,
+            'rpmdefs' : b.rpmbuild_opts(),
+            'spec': b.spec,
+        }
         f = chroot.popen(cmd)
         rx = re.compile(r"^\s*(?P<name>[^\s]+) .*is needed by")
         needed = {}
@@ -138,7 +145,6 @@ def install_br(r, b):
             if m and not ignore_br.match(l):
                 needed[m.group('name')] = 1
         f.close()
-        chroot.run("rm -rf %s" % tmpdir)
         return needed
 
     needed = get_missing_br(r, b);
@@ -178,7 +184,7 @@ def install_br(r, b):
     if len(needed) == 0:
         b.log_line("no BR needed")
         return True
-    
+
     nbr = ""
     for bre in needed.keys():
         nbr = nbr + " " + re.escape(bre)
This page took 0.082948 seconds and 4 git commands to generate.