Index: recipe_engine/third_party/setuptools/command/bdist_rpm.py |
diff --git a/recipe_engine/third_party/setuptools/command/bdist_rpm.py b/recipe_engine/third_party/setuptools/command/bdist_rpm.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..70730927ecaed778ebbdee98eb37c24ec3f1a8e6 |
--- /dev/null |
+++ b/recipe_engine/third_party/setuptools/command/bdist_rpm.py |
@@ -0,0 +1,43 @@ |
+import distutils.command.bdist_rpm as orig |
+ |
+ |
+class bdist_rpm(orig.bdist_rpm): |
+ """ |
+ Override the default bdist_rpm behavior to do the following: |
+ |
+ 1. Run egg_info to ensure the name and version are properly calculated. |
+ 2. Always run 'install' using --single-version-externally-managed to |
+ disable eggs in RPM distributions. |
+ 3. Replace dash with underscore in the version numbers for better RPM |
+ compatibility. |
+ """ |
+ |
+ def run(self): |
+ # ensure distro name is up-to-date |
+ self.run_command('egg_info') |
+ |
+ orig.bdist_rpm.run(self) |
+ |
+ def _make_spec_file(self): |
+ version = self.distribution.get_version() |
+ rpmversion = version.replace('-', '_') |
+ spec = orig.bdist_rpm._make_spec_file(self) |
+ line23 = '%define version ' + version |
+ line24 = '%define version ' + rpmversion |
+ spec = [ |
+ line.replace( |
+ "Source0: %{name}-%{version}.tar", |
+ "Source0: %{name}-%{unmangled_version}.tar" |
+ ).replace( |
+ "setup.py install ", |
+ "setup.py install --single-version-externally-managed " |
+ ).replace( |
+ "%setup", |
+ "%setup -n %{name}-%{unmangled_version}" |
+ ).replace(line23, line24) |
+ for line in spec |
+ ] |
+ insert_loc = spec.index(line24) + 1 |
+ unmangled_version = "%define unmangled_version " + version |
+ spec.insert(insert_loc, unmangled_version) |
+ return spec |