83 lines
3.7 KiB
Diff
83 lines
3.7 KiB
Diff
|
--- a/Lib/distutils/command/install.py
|
||
|
+++ b/Lib/distutils/command/install.py
|
||
|
@@ -154,6 +154,8 @@
|
||
|
|
||
|
('record=', None,
|
||
|
"filename in which to record list of installed files"),
|
||
|
+ ('record-rpm=', None,
|
||
|
+ "filename in which to record list of installed files and directories suitable as filelist for rpm"),
|
||
|
]
|
||
|
|
||
|
boolean_options = ['compile', 'force', 'skip-build', 'user']
|
||
|
@@ -229,6 +231,7 @@
|
||
|
#self.install_info = None
|
||
|
|
||
|
self.record = None
|
||
|
+ self.record_rpm = None
|
||
|
|
||
|
|
||
|
# -- Option finalizing methods -------------------------------------
|
||
|
@@ -578,12 +581,61 @@
|
||
|
self.create_path_file()
|
||
|
|
||
|
# write list of installed files, if requested.
|
||
|
- if self.record:
|
||
|
+ if self.record or self.record_rpm:
|
||
|
outputs = self.get_outputs()
|
||
|
if self.root: # strip any package prefix
|
||
|
root_len = len(self.root)
|
||
|
for counter in xrange(len(outputs)):
|
||
|
outputs[counter] = outputs[counter][root_len:]
|
||
|
+ if self.record_rpm: # add directories
|
||
|
+ self.record = self.record_rpm
|
||
|
+ dirs = []
|
||
|
+ # directories to reject:
|
||
|
+ rejectdirs = [
|
||
|
+ '/etc',
|
||
|
+ '/',
|
||
|
+ '',
|
||
|
+ self.prefix,
|
||
|
+ self.exec_prefix,
|
||
|
+ self.install_base,
|
||
|
+ self.install_platbase,
|
||
|
+ self.install_purelib,
|
||
|
+ self.install_platlib,
|
||
|
+ self.install_headers[:len(self.install_headers) - len(self.distribution.get_name()) - 1],
|
||
|
+ self.install_libbase,
|
||
|
+ self.install_scripts,
|
||
|
+ self.install_data,
|
||
|
+ os.path.join(self.install_data, 'share'),
|
||
|
+ os.path.join(self.install_data, 'share', 'doc'),
|
||
|
+ ]
|
||
|
+ # directories whose childs reject:
|
||
|
+ rejectdirs2 = [
|
||
|
+ os.path.join(self.install_data, 'share', 'man'),
|
||
|
+ ]
|
||
|
+ # directories whose grandsons reject:
|
||
|
+ rejectdirs3 = [
|
||
|
+ os.path.join(self.install_data, 'share', 'man'),
|
||
|
+ os.path.join(self.install_data, 'share', 'locale'),
|
||
|
+ ]
|
||
|
+ for counter in xrange(len(rejectdirs)):
|
||
|
+ if len(rejectdirs[counter]) > root_len:
|
||
|
+ rejectdirs[counter] = rejectdirs[counter][root_len:]
|
||
|
+ for counter in xrange(len(rejectdirs2)):
|
||
|
+ if len(rejectdirs2[counter]) > root_len:
|
||
|
+ rejectdirs2[counter] = rejectdirs2[counter][root_len:]
|
||
|
+ for counter in xrange(len(rejectdirs3)):
|
||
|
+ if len(rejectdirs3[counter]) > root_len:
|
||
|
+ rejectdirs3[counter] = rejectdirs3[counter][root_len:]
|
||
|
+ for counter in xrange(len(outputs)):
|
||
|
+ directory = os.path.dirname(outputs[counter])
|
||
|
+ while directory not in rejectdirs and \
|
||
|
+ os.path.dirname(directory) not in rejectdirs2 and \
|
||
|
+ os.path.dirname(os.path.dirname(directory)) not in rejectdirs3:
|
||
|
+ dirname = '%dir ' + directory
|
||
|
+ if dirname not in dirs:
|
||
|
+ dirs.append(dirname)
|
||
|
+ directory = os.path.dirname(directory)
|
||
|
+ outputs += dirs
|
||
|
self.execute(write_file,
|
||
|
(self.record, outputs),
|
||
|
"writing list of installed files to '%s'" %
|