Компилятор protobuf не видит descriptor.proto

у меня есть такой proto файл:

syntax = "proto3";

option go_package = "./;newtype";

package my.types;

import "google/protobuf/descriptor.proto";

extend google.protobuf.FieldOptions{
  optional string my_size = 50001;
}

message Block{
  bytes arr = 1 [(my_size) = "3"];
}

Путь к файлу:

/${PATH}/proto/newtype/block.proto

Я компилирую данный файл командой:

protoc --proto_path=/${PATH}/proto/newtype --go_out=. block.proto

И получаю ошибку:

PCName newtype % ls -al
total 8
drwxr-xr-x 3 Username staff 96 6 окт 10:04 .

drwxr-xr-x 5 Username staff 160 30 сен 12:10 ..

-rw-r--r-- 1 Username staff 1527 6 окт 10:04 block.proto

PCName newtype % protoc --proto_path=/{$PATH}/proto/newtype -I$(go env GOPATH)/pkg --go_out=. block.proto
google/protobuf/descriptor.proto: File not found. block.proto:7:1: Import "google/protobuf/descriptor.proto" was not found or had errors. block.proto:9:8: "google.protobuf.FieldOptions" is not defined.
block.proto: "google.protobuf.FieldOptions" is not defined.

Как указать компилятору protobuf где ему искать файл descriptor.proto?


Ответы (1 шт):

Автор решения: Аяз Аюпов

protobuf те еще танцы с бубнами, тоже были проблемы с ним решал я их так:

это мой Maikefile

install-protobuf-compiler-for-linux: 
    sudo  apt install -y protobuf-compiler
    protoc --version
    make get-protobuf-dependencies

proto-version ?= v1.3.2
get-protobuf-dependencies:
    go get github.com/golang/protobuf/[email protected]
    go get github.com/gogo/protobuf/proto@$(proto-version)
    go get github.com/gogo/protobuf/protoc-gen-gogo@$(proto-version)
    go get github.com/gogo/protobuf/gogoproto@$(proto-version)
    go get github.com/gogo/protobuf/protoc-gen-gofast@$(proto-version)
    go get github.com/gogo/protobuf/protoc-gen-gogofast@$(proto-version)
    go get github.com/gogo/protobuf/protoc-gen-gogofaster@$(proto-version)

cp-protobuf-package:
    # костыль
    mkdir -p $(GOPATH)/src/github.com/gogo/
    cp -r $(GOPATH)/pkg/mod/github.com/gogo/protobuf@$(proto-version) $(GOPATH)/src/github.com/gogo/protobuf




clear:
    find ./ -name *.gen.go -delete
    find ./ -name *pb.go -delete
    find ./ -name prog.go -delete
    find ./ -name *gen.go.tmp -delete

generate-proto:
    go generate ./protobuf

generate:  clear generate-proto
    go generate ./...

выполняю по очереди

сами протобаф файлы храню в 1 месте + держу go файл где прописаны команды для генерации каждого файла в том порядке, в котором для меня удобно.

protobuf_dir

так выглядит сам файл где прописаны команды для генерации, посмотрите может быть вам что-то поможет

введите сюда описание изображения

→ Ссылка