mirror of https://github.com/python/cpython
- Patch #1060577: Extract list of RPM files from spec file in
bdist_rpm Will backport to 2.5.
This commit is contained in:
parent
abd8a336a3
commit
5310e5078a
|
@ -337,37 +337,47 @@ class bdist_rpm (Command):
|
||||||
if not self.keep_temp:
|
if not self.keep_temp:
|
||||||
rpm_cmd.append('--clean')
|
rpm_cmd.append('--clean')
|
||||||
rpm_cmd.append(spec_path)
|
rpm_cmd.append(spec_path)
|
||||||
|
# Determine the binary rpm names that should be built out of this spec
|
||||||
|
# file
|
||||||
|
# Note that some of these may not be really built (if the file
|
||||||
|
# list is empty)
|
||||||
|
nvr_string = "%{name}-%{version}-%{release}"
|
||||||
|
src_rpm = nvr_string + ".src.rpm"
|
||||||
|
non_src_rpm = "%{arch}/" + nvr_string + ".%{arch}.rpm"
|
||||||
|
q_cmd = r"rpm -q --qf '%s %s\n' --specfile '%s'" % (
|
||||||
|
src_rpm, non_src_rpm, spec_path)
|
||||||
|
|
||||||
|
out = os.popen(q_cmd)
|
||||||
|
binary_rpms = []
|
||||||
|
source_rpm = None
|
||||||
|
while 1:
|
||||||
|
line = out.readline()
|
||||||
|
if not line:
|
||||||
|
break
|
||||||
|
l = string.split(string.strip(line))
|
||||||
|
assert(len(l) == 2)
|
||||||
|
binary_rpms.append(l[1])
|
||||||
|
# The source rpm is named after the first entry in the spec file
|
||||||
|
if source_rpm is None:
|
||||||
|
source_rpm = l[0]
|
||||||
|
|
||||||
|
status = out.close()
|
||||||
|
if status:
|
||||||
|
raise DistutilsExecError("Failed to execute: %s" % repr(q_cmd))
|
||||||
|
|
||||||
self.spawn(rpm_cmd)
|
self.spawn(rpm_cmd)
|
||||||
|
|
||||||
# XXX this is a nasty hack -- we really should have a proper way to
|
|
||||||
# find out the names of the RPM files created; also, this assumes
|
|
||||||
# that RPM creates exactly one source and one binary RPM.
|
|
||||||
if not self.dry_run:
|
if not self.dry_run:
|
||||||
if not self.binary_only:
|
if not self.binary_only:
|
||||||
srpms = glob.glob(os.path.join(rpm_dir['SRPMS'], "*.rpm"))
|
srpm = os.path.join(rpm_dir['SRPMS'], source_rpm)
|
||||||
assert len(srpms) == 1, \
|
assert(os.path.exists(srpm))
|
||||||
"unexpected number of SRPM files found: %s" % srpms
|
self.move_file(srpm, self.dist_dir)
|
||||||
dist_file = ('bdist_rpm', 'any',
|
|
||||||
self._dist_path(srpms[0]))
|
|
||||||
self.distribution.dist_files.append(dist_file)
|
|
||||||
self.move_file(srpms[0], self.dist_dir)
|
|
||||||
|
|
||||||
if not self.source_only:
|
if not self.source_only:
|
||||||
rpms = glob.glob(os.path.join(rpm_dir['RPMS'], "*/*.rpm"))
|
for rpm in binary_rpms:
|
||||||
debuginfo = glob.glob(os.path.join(rpm_dir['RPMS'],
|
rpm = os.path.join(rpm_dir['RPMS'], rpm)
|
||||||
"*/*debuginfo*.rpm"))
|
if os.path.exists(rpm):
|
||||||
if debuginfo:
|
self.move_file(rpm, self.dist_dir)
|
||||||
rpms.remove(debuginfo[0])
|
|
||||||
assert len(rpms) == 1, \
|
|
||||||
"unexpected number of RPM files found: %s" % rpms
|
|
||||||
dist_file = ('bdist_rpm', get_python_version(),
|
|
||||||
self._dist_path(rpms[0]))
|
|
||||||
self.distribution.dist_files.append(dist_file)
|
|
||||||
self.move_file(rpms[0], self.dist_dir)
|
|
||||||
if debuginfo:
|
|
||||||
dist_file = ('bdist_rpm', get_python_version(),
|
|
||||||
self._dist_path(debuginfo[0]))
|
|
||||||
self.move_file(debuginfo[0], self.dist_dir)
|
|
||||||
# run()
|
# run()
|
||||||
|
|
||||||
def _dist_path(self, path):
|
def _dist_path(self, path):
|
||||||
|
|
|
@ -92,6 +92,9 @@ Core and builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Patch #1060577: Extract list of RPM files from spec file in
|
||||||
|
bdist_rpm
|
||||||
|
|
||||||
- Bug #1586613: fix zlib and bz2 codecs' incremental en/decoders.
|
- Bug #1586613: fix zlib and bz2 codecs' incremental en/decoders.
|
||||||
|
|
||||||
- Patch #1583880: fix tarfile's problems with long names and posix/
|
- Patch #1583880: fix tarfile's problems with long names and posix/
|
||||||
|
|
Loading…
Reference in New Issue