Ejemplo n.º 1
0
  def select(self, context):
    self.get_options()
    workdir = os.path.join(self.get_options().pants_workdir, self.options_scope,
                           'versions', self.get_options().version)
    tool_path = os.path.join(workdir, 'bin/protoc-gen-go')

    if not os.path.exists(tool_path):
      safe_mkdir(workdir, clean=True)

      # Checkout the git repo at a given version. `go get` always gets master.
      repo = Git.clone('https://github.com/golang/protobuf.git',
                       os.path.join(workdir, 'src/github.com/golang/protobuf'))
      repo.set_state(self.get_options().version)

      go = GoDistribution.global_instance()
      result, go_cmd = go.execute_go_cmd(
        cmd='install',
        gopath=workdir,
        args=['github.com/golang/protobuf/protoc-gen-go'],
        workunit_factory=context.new_workunit,
        workunit_labels=[WorkUnitLabel.BOOTSTRAP],
      )

      if result != 0:
        raise SubsystemError('{} failed with exit code {}'.format(go_cmd, result))

    logger.info('Selected {} binary bootstrapped to: {}'.format(self.options_scope, tool_path))
    return tool_path
Ejemplo n.º 2
0
  def select(self, context):
    self.get_options()
    workdir = os.path.join(self.get_options().pants_workdir, self.options_scope,
                           'versions', self.get_options().version)
    tool_path = os.path.join(workdir, 'bin/protoc-gen-go')

    if not os.path.exists(tool_path):
      safe_mkdir(workdir, clean=True)

      # Checkout the git repo at a given version. `go get` always gets master.
      repo = Git.clone('https://github.com/golang/protobuf.git',
                       os.path.join(workdir, 'src/github.com/golang/protobuf'))
      repo.set_state(self.get_options().version)

      go = GoDistribution.global_instance()
      result, go_cmd = go.execute_go_cmd(
        cmd='install',
        gopath=workdir,
        args=['github.com/golang/protobuf/protoc-gen-go'],
        workunit_factory=context.new_workunit,
        workunit_labels=[WorkUnitLabel.BOOTSTRAP],
      )

      if result != 0:
        raise SubsystemError('{} failed with exit code {}'.format(go_cmd, result))

    logger.info('Selected {} binary bootstrapped to: {}'.format(self.options_scope, tool_path))
    return tool_path
Ejemplo n.º 3
0
 def _do_clone_and_checkout(self, download_path):
     desired_sha = self.version()
     try:
         checkout = Git.clone(self._GIT_CLONE_HTTPS_URL, download_path)
         checkout.set_state(desired_sha)
     except Scm.ScmException as e:
         raise self.RakudoBrewBootstrapError(
             "Error checking out revision '{}' from {}: {}".format(
                 desired_sha, self._GIT_CLONE_HTTPS_URL, e), e)
Ejemplo n.º 4
0
 def fetch(self, dest, rev=None):
   imported_repo = self._meta_tag_reader.get_imported_repo(self.import_path)
   if not imported_repo:
     raise FetchError('No <meta name="go-import"> tag found, so cannot fetch repo '
                      'at {}'.format(self.import_path))
   if imported_repo.vcs != 'git':
     # TODO: Support other vcs systems as needed.
     raise FetchError("Don't know how to fetch for vcs type {}.".format(imported_repo.vcs))
   # TODO: Do this in a workunit (see https://github.com/pantsbuild/pants/issues/3502).
   logger.info('Cloning {} into {}'.format(imported_repo.url, dest))
   repo = Git.clone(imported_repo.url, dest)
   if rev:
     repo.set_state(rev)
Ejemplo n.º 5
0
 def fetch(self, dest, rev=None):
     imported_repo = self._meta_tag_reader.get_imported_repo(
         self.import_path)
     if not imported_repo:
         raise FetchError(
             'No <meta name="go-import"> tag found, so cannot fetch repo '
             'at {}'.format(self.import_path))
     if imported_repo.vcs != 'git':
         # TODO: Support other vcs systems as needed.
         raise FetchError("Don't know how to fetch for vcs type {}.".format(
             imported_repo.vcs))
     # TODO: Do this in a workunit (see https://github.com/pantsbuild/pants/issues/3502).
     logger.info('Cloning {} into {}'.format(imported_repo.url, dest))
     repo = Git.clone(imported_repo.url, dest)
     if rev:
         repo.set_state(rev)
Ejemplo n.º 6
0
    def select(self, context):
        self.get_options()
        workdir = os.path.join(
            self.get_options().pants_workdir,
            self.options_scope,
            "versions",
            self.get_options().version,
        )
        tool_path = os.path.join(workdir, "bin/protoc-gen-go")

        if not os.path.exists(tool_path):
            safe_mkdir(workdir, clean=True)

            # Checkout the git repo at a given version. `go get` always gets master.
            repo = Git.clone(
                "https://github.com/golang/protobuf.git",
                os.path.join(workdir, "src/github.com/golang/protobuf"),
            )
            repo.set_state(self.get_options().version)

            go = GoDistribution.global_instance()
            result, go_cmd = go.execute_go_cmd(
                cmd="install",
                gopath=workdir,
                args=["github.com/golang/protobuf/protoc-gen-go"],
                workunit_factory=context.new_workunit,
                workunit_labels=[WorkUnitLabel.BOOTSTRAP],
            )

            if result != 0:
                raise SubsystemError(
                    f"{go_cmd} failed with exit code {result}")

        logger.info(
            f"Selected {self.options_scope} binary bootstrapped to: {tool_path}"
        )
        return tool_path