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
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)
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)
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)
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