# vi: encoding=utf-8 ts=8 sts=4 sw=4 et
-import re
+import re, os
import string
import StringIO
'poldek',
'rpm-build',
'pdksh',
+ 'mksh',
'coreutils'
]
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($| .*)")
# 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 = {}
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);
if len(needed) == 0:
b.log_line("no BR needed")
return True
-
+
nbr = ""
for bre in needed.keys():
nbr = nbr + " " + re.escape(bre)