aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/setuptools/py2/setuptools/command/bdist_rpm.py
blob: 5f1a15e2d96b74c0fdc1eeac91c29393b3514df6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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