Commit d0e4b42e authored by Greg Ward's avatar Greg Ward

Added --python and --fix-python options for better control over what

  interpreter the .spec file refers to.
Cosmetic tweaks.
parent 4826a894
...@@ -7,7 +7,7 @@ distributions).""" ...@@ -7,7 +7,7 @@ distributions)."""
__revision__ = "$Id$" __revision__ = "$Id$"
import os, string import sys, os, string
import glob import glob
from types import * from types import *
from distutils.core import Command, DEBUG from distutils.core import Command, DEBUG
...@@ -28,6 +28,12 @@ class bdist_rpm (Command): ...@@ -28,6 +28,12 @@ class bdist_rpm (Command):
('dist-dir=', 'd', ('dist-dir=', 'd',
"directory to put final RPM files in " "directory to put final RPM files in "
"(and .spec files if --spec-only)"), "(and .spec files if --spec-only)"),
('python=', None,
"path to Python interpreter to hard-code in the .spec file "
"(default: \"python\")"),
('fix-python', None,
"hard-code the exact path to the current Python interpreter in "
"the .spec file"),
('spec-only', None, ('spec-only', None,
"only regenerate spec file"), "only regenerate spec file"),
('source-only', None, ('source-only', None,
...@@ -114,6 +120,8 @@ class bdist_rpm (Command): ...@@ -114,6 +120,8 @@ class bdist_rpm (Command):
self.bdist_base = None self.bdist_base = None
self.rpm_base = None self.rpm_base = None
self.dist_dir = None self.dist_dir = None
self.python = None
self.fix_python = None
self.spec_only = None self.spec_only = None
self.binary_only = None self.binary_only = None
self.source_only = None self.source_only = None
...@@ -159,6 +167,15 @@ class bdist_rpm (Command): ...@@ -159,6 +167,15 @@ class bdist_rpm (Command):
"you must specify --rpm-base in RPM 2 mode" "you must specify --rpm-base in RPM 2 mode"
self.rpm_base = os.path.join(self.bdist_base, "rpm") self.rpm_base = os.path.join(self.bdist_base, "rpm")
if self.python is None:
if self.fix_python:
self.python = sys.executable
else:
self.python = "python"
elif self.fix_python:
raise DistutilsOptionError, \
"--python and --fix-python are mutually exclusive options"
if os.name != 'posix': if os.name != 'posix':
raise DistutilsPlatformError, \ raise DistutilsPlatformError, \
("don't know how to create RPM " ("don't know how to create RPM "
...@@ -275,21 +292,21 @@ class bdist_rpm (Command): ...@@ -275,21 +292,21 @@ class bdist_rpm (Command):
# build package # build package
self.announce('Building RPMs') self.announce('building RPMs')
rpm_args = ['rpm',] rpm_cmd = ['rpm']
if self.source_only: # what kind of RPMs? if self.source_only: # what kind of RPMs?
rpm_args.append('-bs') rpm_cmd.append('-bs')
elif self.binary_only: elif self.binary_only:
rpm_args.append('-bb') rpm_cmd.append('-bb')
else: else:
rpm_args.append('-ba') rpm_cmd.append('-ba')
if self.rpm3_mode: if self.rpm3_mode:
rpm_args.extend(['--define', rpm_cmd.extend(['--define',
'_topdir %s/%s' % (os.getcwd(), self.rpm_base),]) '_topdir %s/%s' % (os.getcwd(), self.rpm_base),])
if self.clean: if self.clean:
rpm_args.append('--clean') rpm_cmd.append('--clean')
rpm_args.append(spec_path) rpm_cmd.append(spec_path)
self.spawn(rpm_args) self.spawn(rpm_cmd)
# XXX this is a nasty hack -- we really should have a proper way to # XXX this is a nasty hack -- we really should have a proper way to
# find out the names of the RPM files created; also, this assumes # find out the names of the RPM files created; also, this assumes
...@@ -398,10 +415,10 @@ class bdist_rpm (Command): ...@@ -398,10 +415,10 @@ class bdist_rpm (Command):
# rpm scripts # rpm scripts
# figure out default build script # figure out default build script
def_build = "%s setup.py build" % self.python
if self.use_rpm_opt_flags: if self.use_rpm_opt_flags:
def_build = 'env CFLAGS="$RPM_OPT_FLAGS" python setup.py build' def_build = 'env CFLAGS="$RPM_OPT_FLAGS" ' + def_build
else:
def_build = 'python setup.py build'
# insert contents of files # insert contents of files
# XXX this is kind of misleading: user-supplied options are files # XXX this is kind of misleading: user-supplied options are files
...@@ -412,9 +429,9 @@ class bdist_rpm (Command): ...@@ -412,9 +429,9 @@ class bdist_rpm (Command):
('prep', 'prep_script', "%setup"), ('prep', 'prep_script', "%setup"),
('build', 'build_script', def_build), ('build', 'build_script', def_build),
('install', 'install_script', ('install', 'install_script',
"python setup.py install " ("%s setup.py install "
"--root=$RPM_BUILD_ROOT " "--root=$RPM_BUILD_ROOT "
"--record=INSTALLED_FILES"), "--record=INSTALLED_FILES") % self.python),
('clean', 'clean_script', "rm -rf $RPM_BUILD_ROOT"), ('clean', 'clean_script', "rm -rf $RPM_BUILD_ROOT"),
('pre', 'pre_install', None), ('pre', 'pre_install', None),
('post', 'post_install', None), ('post', 'post_install', None),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment