]> git.pld-linux.org Git - projects/pld-builder.new.git/blame - PLD_Builder/install_br.py
Uninstall packages that are conflicting with packages in BuildRequires list.
[projects/pld-builder.new.git] / PLD_Builder / install_br.py
CommitLineData
dfff8bd5
MM
1# vi: encoding=utf-8 ts=8 sts=4 sw=4 et
2
deda9a51
MM
3import re
4import string
5
6import chroot
7
8def install_br(r, b):
cbaf0a71
AM
9 tmpdir = "/tmp/BR." + b.b_id[0:6]
10 chroot.run("install -m 700 -d %s" % tmpdir)
11 cmd = "cd rpm/SPECS; TMPDIR=%s rpmbuild --nobuild %s %s 2>&1" \
12 % (tmpdir, b.bconds_string(), b.spec)
dfff8bd5
MM
13 f = chroot.popen(cmd)
14 rx = re.compile(r"^\s*([^\s]+) .*is needed by")
15 needed = {}
16 b.log_line("checking BR")
17 for l in f.xreadlines():
18 b.log_line("rpm: %s" % l)
19 m = rx.search(l)
20 if m: needed[m.group(1)] = 1
21 f.close()
cbaf0a71 22 chroot.run("rm -rf %s" % tmpdir)
dfff8bd5
MM
23 if len(needed) == 0:
24 b.log_line("no BR needed")
25 return
26 nbr = ""
27 for bre in needed.keys():
28 nbr = nbr + " " + re.escape(bre)
29 br = string.strip(nbr)
caaac412
AM
30 b.log_line("updating poldek cache...")
31 chroot.run("poldek --up; poldek --upa",
32 user = "root",
33 logfile = b.logfile)
34 # check conflicts in BRed packages
35 b.log_line("checking conflicting packages in BRed packages")
36 f = chroot.popen("poldek --test --caplookup -Q -v --upgrade %s" % br, user = "root")
37 rx = re.compile(r".*conflicts with installed ([^\s]+)")
38 conflicting = {}
39 for l in f.xreadlines():
40 b.log_line("rpm: %s" % l)
41 m = rx.search(l)
42 if m: conflicting[m.group(1)] = 1
43 f.close()
44 if len(conflicting) == 0:
45 b.log_line("no conflicts found")
46 else:
47 ncf = ""
48 for cfe in conflicting.keys():
49 ncf = ncf + " " + re.escape(cfe)
50 cf = string.strip(cfe)
51 b.log_line("uninstalling conflicting packages")
52 res = chroot.run("poldek -Q -v --noask --erase %s" % br,
53 user = "root",
54 logfile = b.logfile)
55 if res != 0:
56 b.log_line("error: conflicting packages uninstallation failed")
dfff8bd5 57 b.log_line("installing BR: %s" % br)
caaac412
AM
58 res = chroot.run("poldek --caplookup -Q -v --upgrade %s" % br,
59 user = "root",
60 logfile = b.logfile)
dfff8bd5
MM
61 if res != 0:
62 b.log_line("error: BR installation failed")
63 return res
This page took 0.066652 seconds and 4 git commands to generate.