diff options
author | Anas Nashif <anas.nashif@intel.com> | 2012-11-07 07:29:36 -0800 |
---|---|---|
committer | Chanho Park <chanho61.park@samsung.com> | 2014-08-19 19:35:28 +0900 |
commit | 61c65d0a24df984986752313f4acdb1dbef96a4c (patch) | |
tree | a5925f2ebfa95fe20f6666d8ab29407dcb757936 | |
parent | e333ca4775fd9f05eb41cfd3eed85a03a4c3e3e0 (diff) | |
download | python-61c65d0a24df984986752313f4acdb1dbef96a4c.tar.gz python-61c65d0a24df984986752313f4acdb1dbef96a4c.tar.bz2 python-61c65d0a24df984986752313f4acdb1dbef96a4c.zip |
python-distutils-rpm-8
===================================================================
-rw-r--r-- | Lib/distutils/command/install.py | 54 |
1 files changed, 53 insertions, 1 deletions
diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py index b9f1c6c..9557e4c 100644 --- a/Lib/distutils/command/install.py +++ b/Lib/distutils/command/install.py @@ -154,6 +154,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', 'user'] @@ -229,6 +231,7 @@ class install (Command): #self.install_info = None self.record = None + self.record_rpm = None # -- Option finalizing methods ------------------------------------- @@ -578,12 +581,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 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'" % |