File Python-3.0b1-record-rpm.patch of Package python3.28101

--- a/Lib/distutils/command/install.py
+++ b/Lib/distutils/command/install.py
@@ -131,6 +131,8 @@ class install(Command):
 
         ('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']
@@ -213,6 +215,7 @@ class install(Command):
         #self.install_info = None
 
         self.record = None
+        self.record_rpm = None
 
 
     # -- Option finalizing methods -------------------------------------
@@ -560,12 +563,61 @@ class install(Command):
             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 range(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 range(len(rejectdirs)):
+                    if len(rejectdirs[counter]) > root_len:
+                        rejectdirs[counter] = rejectdirs[counter][root_len:]
+                for counter in range(len(rejectdirs2)):
+                    if len(rejectdirs2[counter]) > root_len:
+                        rejectdirs2[counter] = rejectdirs2[counter][root_len:]
+                for counter in range(len(rejectdirs3)):
+                    if len(rejectdirs3[counter]) > root_len:
+                        rejectdirs3[counter] = rejectdirs3[counter][root_len:]
+                for counter in range(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'" %
openSUSE Build Service is sponsored by