diff options
Diffstat (limited to 'buildbot/buildbot/steps/package/rpm/rpmbuild.py')
-rw-r--r-- | buildbot/buildbot/steps/package/rpm/rpmbuild.py | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/buildbot/buildbot/steps/package/rpm/rpmbuild.py b/buildbot/buildbot/steps/package/rpm/rpmbuild.py deleted file mode 100644 index 38bce85..0000000 --- a/buildbot/buildbot/steps/package/rpm/rpmbuild.py +++ /dev/null @@ -1,144 +0,0 @@ -# Dan Radez <dradez+buildbot@redhat.com> -# Steve 'Ashcrow' Milner <smilner+buildbot@redhat.com> -# -# This software may be freely redistributed under the terms of the GNU -# general public license. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -""" -RPM Building steps. -""" - -from buildbot.steps.shell import ShellCommand -from buildbot.process.buildstep import RemoteShellCommand - - -class RpmBuild(ShellCommand): - """ - Build and RPM based on pased spec filename - """ - - import os.path - - name = "rpmbuilder" - haltOnFailure = 1 - flunkOnFailure = 1 - description = ["RPMBUILD"] - descriptionDone = ["RPMBUILD"] - - def __init__(self, - specfile=None, - topdir='`pwd`', - builddir='`pwd`', - rpmdir='`pwd`', - sourcedir='`pwd`', - specdir='`pwd`', - srcrpmdir='`pwd`', - dist='.el5', - autoRelease=False, - vcsRevision=False, - **kwargs): - """ - Creates the RpmBuild object. - - @type specfile: str - @param specfile: the name of the spec file for the rpmbuild - @type topdir: str - @param topdir: the top directory for rpm building. - @type builddir: str - @param builddir: the directory to use for building - @type rpmdir: str - @param rpmdir: the directory to dump the rpms into - @type sourcedir: str - @param sourcedir: the directory that houses source code - @type srcrpmdir: str - @param srcrpmdir: the directory to dump source rpms into - @type dist: str - @param dist: the distribution to build for - @type autoRelease: boolean - @param autoRelease: if the auto release mechanics should be used - @type vcsRevision: boolean - @param vcsRevision: if the vcs revision mechanics should be used - @type kwargs: dict - @param kwargs: All further keyword arguments. - """ - ShellCommand.__init__(self, **kwargs) - self.addFactoryArguments(topdir=topdir, - builddir=builddir, - rpmdir=rpmdir, - sourcedir=sourcedir, - specdir=specdir, - srcrpmdir=srcrpmdir, - specfile=specfile, - dist=dist, - autoRelease=autoRelease, - vcsRevision=vcsRevision) - self.rpmbuild = ( - 'rpmbuild --define "_topdir %s" --define "_builddir %s"' - ' --define "_rpmdir %s" --define "_sourcedir %s"' - ' --define "_specdir %s" --define "_srcrpmdir %s"' - ' --define "dist %s"' % (topdir, builddir, rpmdir, sourcedir, - specdir, srcrpmdir, dist)) - self.specfile = specfile - self.autoRelease = autoRelease - self.vcsRevision = vcsRevision - - def start(self): - """ - Buildbot Calls Me when it's time to start - """ - if self.autoRelease: - relfile = '%s.release' % ( - self.os.path.basename(self.specfile).split('.')[0]) - try: - rfile = open(relfile, 'r') - rel = int(rfile.readline().strip()) - rfile.close() - except: - rel = 0 - self.rpmbuild = self.rpmbuild + ' --define "_release %s"' % rel - rfile = open(relfile, 'w') - rfile.write(str(rel+1)) - rfile.close() - - if self.vcsRevision: - self.rpmbuild = self.rpmbuild + ' --define "_revision %s"' % \ - self.getProperty('got_revision') - - self.rpmbuild = self.rpmbuild + ' -ba %s' % self.specfile - - self.command = ['bash', '-c', self.rpmbuild] - - # create the actual RemoteShellCommand instance now - kwargs = self.remote_kwargs - kwargs['command'] = self.command - cmd = RemoteShellCommand(**kwargs) - self.setupEnvironment(cmd) - self.checkForOldSlaveAndLogfiles() - self.startCommand(cmd) - - def createSummary(self, log): - """ - Create nice summary logs. - - @param log: The log to create summary off of. - """ - rpm_prefixes = ['Provides:', 'Requires(rpmlib):', 'Requires:', - 'Checking for unpackaged', 'Wrote:', - 'Executing(%', '+ '] - rpm_err_pfx = [' ', 'RPM build errors:', 'error: '] - - rpmcmdlog = [] - rpmerrors = [] - - for line in log.readlines(): - for pfx in rpm_prefixes: - if pfx in line: - rpmcmdlog.append(line) - for err in rpm_err_pfx: - if err in line: - rpmerrors.append(line) - self.addCompleteLog('RPM Command Log', "".join(rpmcmdlog)) - self.addCompleteLog('RPM Errors', "".join(rpmerrors)) |