pld-builder.new: PLD_Builder/install.py, PLD_Builder/rpm_builder.py Uninsta...
arekm
arekm at pld-linux.org
Sun Aug 10 23:19:31 CEST 2008
Author: arekm Date: Sun Aug 10 21:19:31 2008 GMT
Module: pld-builder.new Tag: HEAD
---- Log message:
Uninstall BuildConflicting packages.
---- Files affected:
pld-builder.new/PLD_Builder:
install.py (1.1 -> 1.2) , rpm_builder.py (1.63 -> 1.64)
---- Diffs:
================================================================
Index: pld-builder.new/PLD_Builder/install.py
diff -u pld-builder.new/PLD_Builder/install.py:1.1 pld-builder.new/PLD_Builder/install.py:1.2
--- pld-builder.new/PLD_Builder/install.py:1.1 Sun Aug 10 22:59:29 2008
+++ pld-builder.new/PLD_Builder/install.py Sun Aug 10 23:19:26 2008
@@ -4,6 +4,7 @@
import string
import StringIO
+from config import config, init_conf
import chroot
import util
import log
@@ -81,6 +82,41 @@
logbuf.close()
return True
+def uninstall(conflicting, b):
+ b.log_line("uninstalling conflicting packages")
+ err = close_killset(conflicting)
+ if err != "":
+ util.append_to(b.logfile, err)
+ 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
+ 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())
+ f = chroot.popen("cd rpm/SPECS; TMPDIR=%s rpmbuild -bp --nobuild --short-circuit --define 'prep exit 0' %s %s 2>&1" \
+ % (tmpdir, config.nice, rpmbuild_opt, b.spec))
+ rx = re.compile(r".*conflicts with ([^\s]+-[^-]+-[^-]+)\.src$")
+ conflicting = {}
+ for l in f.xreadlines():
+ b.log_line("rpmbuild: %s" % l.rstrip())
+ m = rx.search(l)
+ if m: conflicting[m.group(1)] = 1
+ f.close()
+ if len(conflicting) == 0:
+ b.log_line("no BuildConflicts found")
+ else:
+ if not uninstall(conflicting):
+ return False
+ return True
+
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)\(.*')
@@ -122,18 +158,8 @@
if len(conflicting) == 0:
b.log_line("no conflicts found")
else:
- b.log_line("uninstalling conflicting packages")
- err = close_killset(conflicting)
- if err != "":
- util.append_to(b.logfile, err)
- b.log_line("error: conflicting packages uninstallation failed")
- 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 res
+ if not uninstall(conflicting):
+ return False
b.log_line("installing BR: %s" % br)
res = chroot.run("poldek --noask --caplookup -Q -v --upgrade %s" % br,
user = "root",
================================================================
Index: pld-builder.new/PLD_Builder/rpm_builder.py
diff -u pld-builder.new/PLD_Builder/rpm_builder.py:1.63 pld-builder.new/PLD_Builder/rpm_builder.py:1.64
--- pld-builder.new/PLD_Builder/rpm_builder.py:1.63 Sun Aug 10 22:59:29 2008
+++ pld-builder.new/PLD_Builder/rpm_builder.py Sun Aug 10 23:19:26 2008
@@ -118,6 +118,8 @@
b.log_line("error: build arch check (%s) failed" % cmd)
if not res:
+ if ("no-install-br" not in r.flags) and install.uninstall_self_conflict(b):
+ res = 1
if ("no-install-br" not in r.flags) and install.install_br(r, b):
res = 1
if not res:
================================================================
---- CVS-web:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/pld-builder.new/PLD_Builder/install.py?r1=1.1&r2=1.2&f=u
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/pld-builder.new/PLD_Builder/rpm_builder.py?r1=1.63&r2=1.64&f=u
More information about the pld-cvs-commit
mailing list