b.log_line("package %s removal failed" % k)
return True
+def is_rpmorg():
+ f = chroot.popen("rpm --version 2>&1", encoding = "utf-8")
+ v = re.compile(r'(RPM version|rpm \(RPM\)) (?P<major>\d)\.(?P<minor>\d+)(\.\d+)?')
+ for l in f:
+ m = v.search(l)
+ if m:
+ major = int(m.group('major'))
+ minor = int(m.group('minor'))
+ if major == 4 and minor > 5:
+ f.close()
+ return True
+ f.close()
+ return False
+
def uninstall_self_conflict(b):
b.log_line("checking BuildConflict-ing packages")
- 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" % {
+ if is_rpmorg():
+ rpmcommand = "rpmbuild --nobuild -br"
+ else:
+ rpmcommand = "rpmbuild --nobuild"
+ cmd = "set -e; TMPDIR=%(tmpdir)s %(rpmcommand)s %(rpmdefs)s %(topdir)s/%(spec)s 2>&1" % {
+ 'rpmcommand': rpmcommand,
'tmpdir': b.tmpdir(),
- 'rpmdefs' : b.rpmbuild_opts(),
'topdir' : b.get_topdir(),
+ 'rpmdefs' : b.rpmbuild_opts(),
'spec': b.spec,
- }, encoding = "utf-8")
+ }
+ f = chroot.popen(cmd, encoding = "utf-8")
# java-sun >= 1.5 conflicts with soprano-2.1.67-1.src
# java-sun conflicts with soprano-2.1.67-1.src
# plplot conflicts with plplot-5.15.0-4.x86_64
rx = re.compile(r"\s+(?P<name>[\w-]+)\s+.*conflicts with [^\s]+-[^-]+-[^-]+\.[^.\s]+($| .*)")
conflicting = {}
for l in f:
+ b.log_line("rpm: %s" % l.rstrip())
m = rx.search(l)
if m:
- b.log_line("rpmbuild: %s" % l.rstrip())
conflicting[m.group('name')] = 1
f.close()
if len(conflicting) and not uninstall(conflicting, b):
return True
def install_br(r, b):
- def is_rpmorg():
- f = chroot.popen("rpm --version 2>&1", encoding = "utf-8")
- v = re.compile(r'(RPM version|rpm \(RPM\)) (?P<major>\d)\.(?P<minor>\d+)(\.\d+)?')
- for l in f:
- m = v.search(l)
- if m:
- major = int(m.group('major'))
- minor = int(m.group('minor'))
- if major == 4 and minor > 5:
- f.close()
- return True
- f.close()
- return False
-
def get_missing_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)\(.*')