Ejemplo n.º 1
0
  def startVC(self, branch, revision, patch):
    warnings = []
    args = copy.copy(self.args)

    if args.get('gclient_spec'):
      self.adjustGclientSpecForBlink(branch, revision, args)
      self.adjustGclientSpecForNaCl(branch, revision, patch, args)
      self.adjustGclientSpecForV8(branch, revision, patch, args)
      self.adjustGclientSpecForWebRTC(branch, revision, patch, args)

    try:
      # parent_cr_revision might be set, but empty.
      if self.getProperty('parent_cr_revision'):
        revision = 'src@' + self.getProperty('parent_cr_revision')
    except KeyError:
      pass
    self.setProperty('primary_repo', args['primary_repo'], 'Source')
    args['revision'] = revision
    args['branch'] = branch

    if patch:
      args['patch'] = patch
    elif args.get('patch') is None:
      del args['patch']

    args['project'] = self.build.getSourceStamp().project
    cmd = buildstep.LoggedRemoteCommand('gclient', args)
    self.startCommand(cmd, warnings)
Ejemplo n.º 2
0
    def copy(self):
        cmd = buildstep.LoggedRemoteCommand('rmdir', {'dir': self.workdir})
        cmd.useLog(self.stdio_log, False)
        d = self.runCommand(cmd)

        self.workdir = 'source'
        d.addCallback(lambda _: self.incremental())

        def copy(_):
            cmd = buildstep.LoggedRemoteCommand('cpdir', {
                'fromdir': 'source',
                'todir': 'build'
            })
            cmd.useLog(self.stdio_log, False)
            d = self.runCommand(cmd)
            return d

        d.addCallback(copy)

        def resetWorkdir(_):
            self.workdir = 'build'
            return 0

        d.addCallback(resetWorkdir)
        return d
Ejemplo n.º 3
0
 def clobber(self, _):
     cmd = buildstep.LoggedRemoteCommand('rmdir', {'dir': self.workdir})
     cmd.useLog(self.stdio_log, False)
     d = self.runCommand(cmd)
     d.addCallback(lambda _: self._dovccmd(
         ['clone', '--noupdate', self.repourl, "."]))
     d.addCallback(self._update)
     return d
Ejemplo n.º 4
0
 def copy(_):
     cmd = buildstep.LoggedRemoteCommand('cpdir',
                                         {'fromdir': 'source',
                                          'todir':'build',
                                          'logEnviron': self.logEnviron,})
     cmd.useLog(self.stdio_log, False)
     d = self.runCommand(cmd)
     return d
Ejemplo n.º 5
0
    def copy(self):
        cmd = buildstep.LoggedRemoteCommand('rmdir', {
            'dir': self.workdir,
            'logEnviron': self.logEnviron,
        })
        cmd.useLog(self.stdio_log, False)
        wfd = defer.waitForDeferred(self.runCommand(cmd))
        yield wfd
        wfd.getResult()

        if cmd.rc != 0:
            raise buildstep.BuildStepFailed()

        # temporarily set workdir = 'source' and do an incremental checkout
        try:
            old_workdir = self.workdir
            self.workdir = 'source'
            wfd = defer.waitForDeferred(self.incremental(None))
            yield wfd
            wfd.getResult()
        except:  # finally doesn't work in python-2.4
            self.workdir = old_workdir
            raise
        self.workdir = old_workdir

        # if we're copying, copy; otherwise, export from source to build
        if self.method == 'copy':
            cmd = buildstep.LoggedRemoteCommand(
                'cpdir', {
                    'fromdir': 'source',
                    'todir': self.workdir,
                    'logEnviron': self.logEnviron
                })
        else:
            cmd = buildstep.RemoteShellCommand(
                '', ['svn', 'export', 'source', self.workdir],
                env=self.env,
                logEnviron=self.logEnviron)
        cmd.useLog(self.stdio_log, False)

        wfd = defer.waitForDeferred(self.runCommand(cmd))
        yield wfd
        wfd.getResult()

        if cmd.rc != 0:
            raise buildstep.BuildStepFailed()
Ejemplo n.º 6
0
 def start(self):
     slavever = self.slaveVersion('stat')
     if not slavever:
         raise BuildSlaveTooOldError("slave is too old, does not know "
                                     "about stat")
     cmd = buildstep.LoggedRemoteCommand('stat', {'file': self.file})
     d = self.runCommand(cmd)
     d.addCallback(lambda res: self.commandComplete(cmd))
     d.addErrback(self.failed)
Ejemplo n.º 7
0
 def _sourcedirIsUpdatable(self):
     cmd = buildstep.LoggedRemoteCommand('stat', {'file': self.workdir + '/CVS',
                                                  'logEnviron': self.logEnviron})
     cmd.useLog(self.stdio_log, False)
     d = self.runCommand(cmd)
     def _fail(tmp):
         if cmd.rc != 0:
             return False
         return True
     d.addCallback(_fail)
     return d
Ejemplo n.º 8
0
 def clobber(self):
     cmd = buildstep.LoggedRemoteCommand('rmdir', {'dir': self.workdir,
                                                   'logEnviron': self.logEnviron})
     cmd.useLog(self.stdio_log, False)
     d = self.runCommand(cmd)
     def checkRemoval(res):
         if res != 0:
             raise RuntimeError("Failed to delete directory")
         return res
     d.addCallback(lambda _: checkRemoval(cmd.rc))
     d.addCallback(lambda _: self.doCheckout(self.workdir))
     return d
Ejemplo n.º 9
0
 def removeFiles(self, files):
     for filename in files:
         cmd = buildstep.LoggedRemoteCommand('rmdir', {
             'dir': filename,
             'logEnviron': self.logEnviron,
         })
         cmd.useLog(self.stdio_log, False)
         wfd = defer.waitForDeferred(self.runCommand(cmd))
         yield wfd
         wfd.getResult()
         if cmd.rc != 0:
             yield cmd.rc
             return
     yield 0
Ejemplo n.º 10
0
 def startVC(self, branch, revision, patch):
     warnings = []
     args = copy.copy(self.args)
     args['revision'] = revision
     args['branch'] = branch
     if args.get('gclient_spec'):
         args['gclient_spec'] = args['gclient_spec'].replace(
             '$$WK_REV$$', str(revision or ''))
     if patch:
         args['patch'] = patch
     elif args.get('patch') is None:
         del args['patch']
     cmd = buildstep.LoggedRemoteCommand('gclient', args)
     self.startCommand(cmd, warnings)
Ejemplo n.º 11
0
    def clobber(self):
        cmd = buildstep.LoggedRemoteCommand('rmdir', {
            'dir': self.workdir,
            'logEnviron': self.logEnviron,
        })
        cmd.useLog(self.stdio_log, False)
        wfd = defer.waitForDeferred(self.runCommand(cmd))
        yield wfd
        wfd.getResult()
        if cmd.rc != 0:
            raise buildstep.BuildStepFailed()

        wfd = defer.waitForDeferred(
            self._dovccmd(['checkout', self.svnurl, '.']))
        yield wfd
        wfd.getResult()
Ejemplo n.º 12
0
 def parseAndRemove(stdout):
     files = []
     for filename in self.getUnversionedFiles(stdout,
                                              self.keep_on_purge):
         filename = self.workdir + '/' + str(filename)
         files.append(filename)
     if len(files) == 0:
         d = defer.succeed(0)
     else:
         if not self.slaveVersionIsOlderThan('rmdir', '2.14'):
             d = self.removeFiles(files)
         else:
             cmd = buildstep.LoggedRemoteCommand(
                 'rmdir', {
                     'dir': files,
                     'logEnviron': self.logEnviron,
                 })
             cmd.useLog(self.stdio_log, False)
             d = self.runCommand(cmd)
             d.addCallback(lambda _: cmd.rc)
     return d
Ejemplo n.º 13
0
    def copy(self):
        cmd = buildstep.LoggedRemoteCommand('rmdir', {
            'dir': 'build',
            'logEnviron': self.logEnviron,
        })
        cmd.useLog(self.stdio_log, False)
        d = self.runCommand(cmd)
        d.addCallback(lambda _: self.incremental())

        def copy(_):
            cmd = buildstep.LoggedRemoteCommand(
                'cpdir', {
                    'fromdir': 'source',
                    'todir': 'build',
                    'logEnviron': self.logEnviron,
                })
            cmd.useLog(self.stdio_log, False)
            d = self.runCommand(cmd)
            return d

        d.addCallback(copy)
        return d
Ejemplo n.º 14
0
 def startVC(self, branch, revision, patch):
   warnings = []
   args = copy.copy(self.args)
   wk_revision = revision
   try:
     # parent_wk_revision might be set, but empty.
     if self.getProperty('parent_wk_revision'):
       wk_revision = self.getProperty('parent_wk_revision')
   except KeyError:
     pass
   nacl_revision = revision
   try:
     # parent_nacl_revision might be set, but empty.
     if self.getProperty('parent_got_nacl_revision'):
       nacl_revision = self.getProperty('parent_got_nacl_revision')
   except KeyError:
     pass
   try:
     # parent_cr_revision might be set, but empty.
     if self.getProperty('parent_cr_revision'):
       revision = 'src@' + self.getProperty('parent_cr_revision')
   except KeyError:
     pass
   self.setProperty('primary_repo', args['primary_repo'], 'Source')
   args['revision'] = revision
   args['branch'] = branch
   if args.get('gclient_spec'):
     args['gclient_spec'] = args['gclient_spec'].replace(
         '$$WK_REV$$', str(wk_revision or ''))
     args['gclient_spec'] = args['gclient_spec'].replace(
         '$$NACL_REV$$', str(nacl_revision or ''))
   if patch:
     args['patch'] = patch
   elif args.get('patch') is None:
     del args['patch']
   cmd = buildstep.LoggedRemoteCommand('gclient', args)
   self.startCommand(cmd, warnings)
Ejemplo n.º 15
0
 def start(self):
     args = dict((name, self.build.render(value))
                 for name, value in self.args.iteritems())
     cmd = buildstep.LoggedRemoteCommand('apply_issue', args)
     self.startCommand(cmd)