Summary
Running make dev-env-setup followed by make lint-test-all on macOS (Apple Silicon, darwin/arm64) fails at multiple stages due to missing tools and PATH configuration. Several manual interventions were required to get the full lint-test suite to pass.
Environment
- OS: macOS (Darwin, Apple Silicon / arm64)
- Shell: zsh
Steps to Reproduce
git clone https://github.com/NVIDIA/NVSentinel.git
cd NVSentinel
make dev-env-setup
make lint-test-all # fails repeatedly
Missing Dependencies / Issues Encountered
1. wget not installed
make dev-env-setup itself fails partway through because it uses wget to download Protocol Buffers, but wget is not pre-installed on macOS.
Error: scripts/setup-dev-env.sh: line 499: wget: command not found
Fix: brew install wget
2. go installation fails on macOS
make install-go-ci attempts to install Go to /usr/local/go but the tar extraction fails on macOS with numerous errors. The binary is not found at the expected location afterward.
Error: Warning: Go binary not found at expected location /usr/local/go/bin/go
Fix: brew install go
3. GOPATH/bin not added to PATH
After Go tools are installed via go install, they are placed in $(go env GOPATH)/bin (typically ~/go/bin/), but this directory is not on PATH. The Makefile finds some tools by absolute path (e.g., protoc-gen-crd) but not others.
Fix: export PATH="$PATH:$(go env GOPATH)/bin"
4. protoc-gen-go and protoc-gen-go-grpc not installed
These are required for protobuf generation but are not installed by dev-env-setup.
Error: /bin/sh: protoc-gen-go: command not found
Fix:
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.36.10
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.5.1
5. addlicense not installed
Required for license-headers-lint target but not installed by dev-env-setup.
Error: make: addlicense: No such file or directory
Fix: go install github.com/google/addlicense@latest
6. golangci-lint, gotestsum, gocover-cobertura not installed
Required for Go lint and test targets but not installed by dev-env-setup.
Error: /bin/sh: golangci-lint: command not found
Fix:
go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@v2.5.0
go install gotest.tools/gotestsum@v1.13.0
go install github.com/boumenot/gocover-cobertura@v1.4.0
7. grpcio-tools and black (Python) not installed
Required for Python protobuf generation and formatting, but not installed by dev-env-setup.
Error: grpcio-tools: not installed / black: not found
Fix: pip install grpcio-tools==1.75.1 black
8. poetry not on PATH
Required for Python health monitor lint/test but not available after setup.
Error: make[3]: poetry: No such file or directory
Fix: brew install pipx && pipx install poetry
9. Version sensitivity not documented
Installing latest versions of tools causes protos-lint to fail because generated code has version diffs (e.g., protoc-gen-go v1.36.11 vs expected v1.36.10, grpcio-tools 1.80.0 vs expected 1.75.1). The exact required versions are in .versions.yaml but dev-env-setup does not install them.
Expected Behavior
make dev-env-setup should install all tools at the exact versions specified in .versions.yaml, configure PATH appropriately, and leave the environment ready for make lint-test-all to pass without any manual intervention — at least on macOS and Ubuntu.
Suggested Improvements
- Add
wget as a prerequisite check (or use curl which is available on macOS by default)
- Use
brew install go on macOS instead of the manual tar extraction
- Have
dev-env-setup install all Go tools (protoc-gen-go, protoc-gen-go-grpc, addlicense, golangci-lint, gotestsum, gocover-cobertura) at the pinned versions from .versions.yaml
- Have
dev-env-setup install Python tools (grpcio-tools, black, poetry) at pinned versions
- Print a reminder or auto-configure
GOPATH/bin on PATH
- Document the full dependency list in
DEVELOPMENT.md as a fallback
Summary
Running
make dev-env-setupfollowed bymake lint-test-allon macOS (Apple Silicon, darwin/arm64) fails at multiple stages due to missing tools and PATH configuration. Several manual interventions were required to get the full lint-test suite to pass.Environment
Steps to Reproduce
Missing Dependencies / Issues Encountered
1.
wgetnot installedmake dev-env-setupitself fails partway through because it useswgetto download Protocol Buffers, butwgetis not pre-installed on macOS.Error:
scripts/setup-dev-env.sh: line 499: wget: command not foundFix:
brew install wget2.
goinstallation fails on macOSmake install-go-ciattempts to install Go to/usr/local/gobut the tar extraction fails on macOS with numerous errors. The binary is not found at the expected location afterward.Error:
Warning: Go binary not found at expected location /usr/local/go/bin/goFix:
brew install go3.
GOPATH/binnot added to PATHAfter Go tools are installed via
go install, they are placed in$(go env GOPATH)/bin(typically~/go/bin/), but this directory is not on PATH. The Makefile finds some tools by absolute path (e.g.,protoc-gen-crd) but not others.Fix:
export PATH="$PATH:$(go env GOPATH)/bin"4.
protoc-gen-goandprotoc-gen-go-grpcnot installedThese are required for protobuf generation but are not installed by
dev-env-setup.Error:
/bin/sh: protoc-gen-go: command not foundFix:
5.
addlicensenot installedRequired for
license-headers-linttarget but not installed bydev-env-setup.Error:
make: addlicense: No such file or directoryFix:
go install github.com/google/addlicense@latest6.
golangci-lint,gotestsum,gocover-coberturanot installedRequired for Go lint and test targets but not installed by
dev-env-setup.Error:
/bin/sh: golangci-lint: command not foundFix:
7.
grpcio-toolsandblack(Python) not installedRequired for Python protobuf generation and formatting, but not installed by
dev-env-setup.Error:
grpcio-tools: not installed/black: not foundFix:
pip install grpcio-tools==1.75.1 black8.
poetrynot on PATHRequired for Python health monitor lint/test but not available after setup.
Error:
make[3]: poetry: No such file or directoryFix:
brew install pipx && pipx install poetry9. Version sensitivity not documented
Installing
latestversions of tools causesprotos-lintto fail because generated code has version diffs (e.g.,protoc-gen-go v1.36.11vs expectedv1.36.10,grpcio-tools 1.80.0vs expected1.75.1). The exact required versions are in.versions.yamlbutdev-env-setupdoes not install them.Expected Behavior
make dev-env-setupshould install all tools at the exact versions specified in.versions.yaml, configure PATH appropriately, and leave the environment ready formake lint-test-allto pass without any manual intervention — at least on macOS and Ubuntu.Suggested Improvements
wgetas a prerequisite check (or usecurlwhich is available on macOS by default)brew install goon macOS instead of the manual tar extractiondev-env-setupinstall all Go tools (protoc-gen-go,protoc-gen-go-grpc,addlicense,golangci-lint,gotestsum,gocover-cobertura) at the pinned versions from.versions.yamldev-env-setupinstall Python tools (grpcio-tools,black,poetry) at pinned versionsGOPATH/binon PATHDEVELOPMENT.mdas a fallback