diff --git a/src/tito/builder.py b/src/tito/builder.py index e4a981f..8eef389 100644 --- a/src/tito/builder.py +++ b/src/tito/builder.py @@ -43,7 +43,8 @@ class Builder(object): def __init__(self, name=None, version=None, tag=None, build_dir=None, pkg_config=None, global_config=None, user_config=None, dist=None, - test=False, offline=False, auto_install=False): + test=False, offline=False, auto_install=False, + rpmbuild_options=None): self.git_root = find_git_root() self.rel_eng_dir = os.path.join(self.git_root, "rel-eng") @@ -58,6 +59,9 @@ class Builder(object): self.offline=offline self.no_cleanup = False self.auto_install = auto_install + self.rpmbuild_options = rpmbuild_options + if not self.rpmbuild_options: + self.rpmbuild_options = '' # Override global configurations using local configurations for section in pkg_config.sections(): @@ -200,8 +204,9 @@ class Builder(object): define_dist = "--define 'dist %s'" % dist cmd = ('rpmbuild --define "_source_filedigest_algorithm md5" --define' - ' "_binary_filedigest_algorithm md5" %s %s --nodeps -bs %s' % ( - self._get_rpmbuild_dir_options(), define_dist, self.spec_file)) + ' "_binary_filedigest_algorithm md5" %s %s %s --nodeps -bs %s' % ( + self.rpmbuild_options, self._get_rpmbuild_dir_options(), + define_dist, self.spec_file)) output = run_command(cmd) print(output) self.srpm_location = self._find_wrote_in_rpmbuild_output(output)[0] @@ -220,9 +225,9 @@ class Builder(object): if self.dist: define_dist = "--define 'dist %s'" % self.dist cmd = ('rpmbuild --define "_source_filedigest_algorithm md5" ' - '--define "_binary_filedigest_algorithm md5" %s %s --clean ' - '-ba %s' % ( - self._get_rpmbuild_dir_options(), define_dist, self.spec_file)) + '--define "_binary_filedigest_algorithm md5" %s %s %s --clean ' + '-ba %s' % (self.rpmbuild_options, + self._get_rpmbuild_dir_options(), define_dist, self.spec_file)) output = run_command(cmd) print(output) files_written = self._find_wrote_in_rpmbuild_output(output) @@ -666,13 +671,15 @@ class NoTgzBuilder(Builder): def __init__(self, name=None, version=None, tag=None, build_dir=None, pkg_config=None, global_config=None, user_config=None, dist=None, - test=False, offline=False, auto_install=False): + test=False, offline=False, auto_install=False, + rpmbuild_options=None): Builder.__init__(self, name=name, version=version, tag=tag, build_dir=build_dir, pkg_config=pkg_config, global_config=global_config, user_config=user_config, dist=dist, test=test, offline=offline, - auto_install=auto_install) + auto_install=auto_install, + rpmbuild_options=rpmbuild_options) # When syncing files with CVS, copy everything from git: self.cvs_copy_extensions = ("", ) @@ -734,13 +741,14 @@ class CvsBuilder(NoTgzBuilder): def __init__(self, name=None, version=None, tag=None, build_dir=None, pkg_config=None, global_config=None, user_config=None, dist=None, - test=False, offline=False, auto_install=False): + test=False, offline=False, auto_install=False, + rpmbuild_options=None): NoTgzBuilder.__init__(self, name=name, version=version, tag=tag, build_dir=build_dir, pkg_config=pkg_config, global_config=global_config, user_config=user_config, dist=dist, test=test, offline=offline, - auto_install=auto_install) + auto_install=auto_install, rpmbuild_options=rpmbuild_options) # TODO: Hack to override here, patches are in a weird place with this # builder. @@ -842,13 +850,14 @@ class UpstreamBuilder(NoTgzBuilder): def __init__(self, name=None, version=None, tag=None, build_dir=None, pkg_config=None, global_config=None, user_config=None, dist=None, - test=False, offline=False, auto_install=False): + test=False, offline=False, auto_install=False, + rpmbuild_options=None): NoTgzBuilder.__init__(self, name=name, version=version, tag=tag, build_dir=build_dir, pkg_config=pkg_config, global_config=global_config, user_config=user_config, dist=dist, test=test, offline=offline, - auto_install=auto_install) + auto_install=auto_install, rpmbuild_options=rpmbuild_options) if not pkg_config or not pkg_config.has_option("buildconfig", "upstream_name"): diff --git a/src/tito/cli.py b/src/tito/cli.py index d7382c5..746215c 100644 --- a/src/tito/cli.py +++ b/src/tito/cli.py @@ -351,6 +351,10 @@ class BuildModule(BaseCliModule): "(i.e. runs 'make new-sources') Must be " "used until 'sources' file is committed to CVS.")) + self.parser.add_option("--rpmbuild-options", dest='rpmbuild_options', + default='', + metavar="OPTIONS", help="Options to pass to rpmbuild.") + def main(self, argv): BaseCliModule.main(self, argv) @@ -409,7 +413,8 @@ class BuildModule(BaseCliModule): dist=options.dist, test=options.test, offline=options.offline, - auto_install=options.auto_install) + auto_install=options.auto_install, + rpmbuild_options=options.rpmbuild_options) return builder def _validate_options(self):