Add a BrewPreBuiltBuilder.

Allows you to use pre-submitted brew builds as if they were generated
locally. Build *must* have been submitted to brew beforehand, otherwise
this will fail.
This commit is contained in:
Devan Goodwin 2011-11-25 12:06:40 -04:00
parent 2703e77cac
commit 13fa8d03e5

View file

@ -876,7 +876,7 @@ class MockBuilder(Builder):
# Copy everything mock wrote out to /tmp/tito: # Copy everything mock wrote out to /tmp/tito:
files = os.listdir(mock_output_dir) files = os.listdir(mock_output_dir)
run_command("cp %s/*.rpm %s" % run_command("cp -v %s/*.rpm %s" %
(mock_output_dir, self.rpmbuild_basedir)) (mock_output_dir, self.rpmbuild_basedir))
print print
print("Wrote:") print("Wrote:")
@ -885,3 +885,58 @@ class MockBuilder(Builder):
print(" %s" % rpm_path) print(" %s" % rpm_path)
self.artifacts.append(rpm_path) self.artifacts.append(rpm_path)
print print
class BrewPreBuiltBuilder(Builder):
"""
A special case builder which uses pre-existing Brew builds and
pulls down the resulting rpms locally. Useful in some cases when
generating yum repositories during a release.
"""
REQUIRED_ARGS = ['disttag']
def __init__(self, name=None, version=None, tag=None, build_dir=None,
pkg_config=None, global_config=None, user_config=None,
options=None, args=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,
options=options, args=args)
self.brew_tag = 'meow' #args['brewtag']
self.dist_tag = args['disttag']
def _rpm(self):
"""
Uses the SRPM
Override the base builder rpm method.
"""
print("Fetching rpms for %s.%s from brew:" % (
self.build_tag, self.dist_tag))
self._fetch_from_brew()
def _fetch_from_brew(self):
brew_nvr = "%s.%s" % (self.build_tag, self.dist_tag)
debug("Brew NVR: %s" % brew_nvr)
os.chdir(self.rpmbuild_dir)
run_command("brew download-build %s" % brew_nvr)
# Wipe out the src rpm for now:
run_command("rm *.src.rpm")
# Copy everything brew downloaded out to /tmp/tito:
files = os.listdir(self.rpmbuild_dir)
run_command("cp -v %s/*.rpm %s" %
(self.rpmbuild_dir, self.rpmbuild_basedir))
print
print("Wrote:")
for rpm in files:
# Just incase anything slips into the build dir:
if not rpm.endswith(".rpm"):
continue
rpm_path = os.path.join(self.rpmbuild_basedir, rpm)
print(" %s" % rpm_path)
self.artifacts.append(rpm_path)
print