From 98de34e61473c332a8748885b2b6271970a81081 Mon Sep 17 00:00:00 2001 From: Evan Culver Date: Fri, 20 Dec 2024 11:39:42 -0800 Subject: [PATCH] [BLD] Update Golang README and Makefile for generating protobuf dependencies --- .gitignore | 1 + go/Makefile | 3 ++- go/README.md | 40 ++++++++++++++++++++++++++++------------ 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index 7fbf5582d14..16be36b7155 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ go/bin/ go/**/testdata/ go/coordinator/bin/ +go/pkg/proto/ clients/js/package-lock.json diff --git a/go/Makefile b/go/Makefile index 1b101fb6430..e381cdf771f 100644 --- a/go/Makefile +++ b/go/Makefile @@ -1,12 +1,13 @@ .PHONY: build test lint clean docker proto log_db_clean log_db_generate log_db_migration +PROTOC_BIN_PATH=$(if $(shell which protoc),$(shell which protoc),"${GOPATH}/bin/protoc") PROTOC_GEN_GO_BIN_PATH := $(if $(shell which protoc-gen-go),$(shell which protoc-gen-go),"${GOPATH}/bin/protoc-gen-go") PROTOC_GEN_GO_GRPC_BIN_PATH := $(if $(shell which protoc-gen-go-grpc),$(shell which protoc-gen-go-grpc),"${GOPATH}/bin/protoc-gen-go-grpc") proto: @echo "Generating gRPC code for Golang..." @mkdir -p pkg/proto/coordinatorpb pkg/proto/logservicepb - @protoc \ + @$(PROTOC_BIN_PATH) \ -I../idl/ \ --go_out=pkg/proto/coordinatorpb \ --go_opt paths=source_relative \ diff --git a/go/README.md b/go/README.md index 0cfe009a428..2e706241539 100644 --- a/go/README.md +++ b/go/README.md @@ -1,19 +1,35 @@ -# Set up Local Postgres +# Chroma Golang Codebase + +## Set up Local Postgres - Install Postgres on Mac - - `brew install postgresql@14` + - `brew install postgresql@14` - Start & Stop - - `brew services start postgresql` - - `brew services stop postgresql` + - `brew services start postgresql` + - `brew services stop postgresql` - create testing db - - terminal: `psql postgres` - - postgres=# `create role chroma with login password 'chroma';` - - postgres=# `alter role chroma with superuser;` - - postgres=# `create database chroma;` + - terminal: `psql postgres` + - postgres=# `create role chroma with login password 'chroma';` + - postgres=# `alter role chroma with superuser;` + - postgres=# `create database chroma;` - Set postgres ENV Vars Several tests (such as record_log_service_test.go) require the following environment variables to be set: - - `export POSTGRES_HOST=localhost` - - `export POSTGRES_PORT=5432` + - `export POSTGRES_HOST=localhost` + - `export POSTGRES_PORT=5432` - Atlas schema migration - - [~/chroma/go]: `atlas migrate diff --env dev` - - [~/chroma/go]: `atlas --env dev migrate apply --url "postgres://chroma:chroma@localhost:5432/chroma?sslmode=disable"` + - [~/chroma/go]: `atlas migrate diff --env dev` + - [~/chroma/go]: `atlas --env dev migrate apply --url "postgres://chroma:chroma@localhost:5432/chroma?sslmode=disable"` + +## Building + +The biggest challenge to getting the project to build correctly is ensuring you have the correct versions for Protobuf. Refer to the "source of truth" for the version in `Dockerfile`. Note, you need all three of these: + +- `protoc` +- `protoc-gen-go` +- `protoc-gen-go-grpc` + +For MacOS users, you can download the version of `protoc` from the [release page](https://github.com/protocolbuffers/protobuf/releases). Ensure that you copy the `protoc` binary to `/usr/local/bin` or add it to your `GOPATH/bin`. + +ALSO, ensure you have copied the `/include` directory of the release to `../include` relative to wherever you installed the binary. + +Once those are installed, you can run `make build` to build the project and most importantly, the generated protobuf files which your IDE will complain about until they are generated.