Advanced uses cases
Shipping additional files
If you need to ship additional files in your source code packages, you can use the following macros in the preamble:
-
%global goextensions
A space separated list of extensions that should be included in the devel package in addition to Go default file extensions. -
%global gosupfiles
: A space-separated list of shell globs matching other files to include in the devel package. -
%global gosupfilesex
A space-separated list of shell globs matching other files you wish to exclude from package lists. Only works with “gosupfiles”-specified files.
For example, if you have glide files to ship:
%global gosupfiles glide.yaml glide.lock
Additional header declarations
Use %godevelheader
to add specific subpackage declarations. For example, you
might want to require the main package containing the binaries, or
Obsoletes/Provides another package in case of renaming.
%global godevelheader %{expand:
Requires:
Obsoletes:
Provides:
}
Dealing with cyclic dependencies
In many cases, you’ll encounter packages that depend on each other, also known as cyclic dependencies, making it difficult to build either package.
Typically, when you have a problematic requires, it is only used in specific project subpackages, and most project dependents do not need those subpackages directly or indirectly. The idea is then to affect the goipaths associated with the problematic subpackages to a separate -devel rpm package, to simplify your dependency graph.
Let’s take for example the following packages: cloud.google.com/go
and
golang.org/x/oauth2
.
cloud.google.com/go
has the following dependency graph:
github.com/golang/mock/gomock
github.com/golang/protobuf/proto
github.com/golang/protobuf/ptypes
github.com/golang/protobuf/ptypes/any
github.com/golang/protobuf/ptypes/duration
github.com/golang/protobuf/ptypes/empty
github.com/golang/protobuf/ptypes/struct
github.com/golang/protobuf/ptypes/timestamp
github.com/golang/protobuf/ptypes/wrappers
github.com/google/btree
github.com/google/go-cmp/cmp
github.com/google/martian
github.com/google/martian/fifo
github.com/google/martian/httpspec
github.com/google/martian/martianhttp
github.com/google/martian/martianlog
github.com/google/martian/mitm
github.com/google/pprof/profile
github.com/googleapis/gax-go/v2
go.opencensus.io/plugin/ocgrpc
go.opencensus.io/stats
go.opencensus.io/stats/view
go.opencensus.io/tag
go.opencensus.io/trace
golang.org/x/build/kubernetes
golang.org/x/build/kubernetes/api
golang.org/x/build/kubernetes/gke
golang.org/x/oauth2
golang.org/x/oauth2/google
golang.org/x/oauth2/jwt
golang.org/x/sync/errgroup
golang.org/x/sync/semaphore
golang.org/x/text/language
golang.org/x/time/rate
[…]
And golang.org/x/oauth2
has the following dependency graph:
cloud.google.com/go/compute/metadata
golang.org/x/net/context/ctxhttp
As you can see both packages depend on each other.
If we search for where cloud.google.com/go
is used in
golang.org/x/oauth2
:
grep -nr "cloud.google.com/go/compute/metadata" $GOPATH/src/golang.org/x/oauth2
/home/user/go/src/golang.org/x/oauth2/google/default.go:17: "cloud.google.com/go/compute/metadata"
/home/user/go/src/golang.org/x/oauth2/google/google.go:15: "cloud.google.com/go/compute/metadata"
We can see that it is used in the golang.org/x/oauth2/google
subpackage,
which is precisely the subpackage needed by cloud.google.com/go
. It is thus
not possible to split golang.org/x/oauth2/google
into separate devel
subpackage to resolve our cyclic dependency graph.
Now if we search for where golang.org/x/oauth2
is used in
cloud.google.com/go
:
grep -nr "golang.org/x/oauth2/google" $GOPATH/src/cloud.google.com/go
/home/user/go/src/cloud.google.com/go/cmd/go-cloud-debug-agent/debuglet.go:38: "golang.org/x/oauth2/google"
/home/user/go/src/cloud.google.com/go/internal/testutil/context.go:26: "golang.org/x/oauth2/google"
/home/user/go/src/cloud.google.com/go/profiler/integration_test.go:30: "golang.org/x/oauth2/google"
/home/user/go/src/cloud.google.com/go/authexample_test.go:22: "golang.org/x/oauth2/google"
We can see that it is not used in the cloud.google.com/go/compute/metadata
subpackage. As a result we can split cloud.google.com/go/compute/metadata
into a separate devel subpackage to resolve our cyclic dependency graph.
To achieve this, we use multiple goipaths
in the preamble:
%global goipaths0 cloud.google.com/go
%global goipathsex0 cloud.google.com/go/compute
%global goipaths1 cloud.google.com/go/compute
goipaths0
will be the main package from which we exclude compute
, and
goipaths1
will be the split package containing it.
After building, we end up with two packages:
-
golang-cloud-google-devel-0.36.0-1.fc31.x86_64.rpm
, which provides:golang(cloud.google.com/go) = 0.36.0-1.fc31 golang(cloud.google.com/go/asset/apiv1beta1) = 0.36.0-1.fc31 golang(cloud.google.com/go/asset/v1beta1) = 0.36.0-1.fc31 golang(cloud.google.com/go/bigquery) = 0.36.0-1.fc31 golang(cloud.google.com/go/bigquery/datatransfer/apiv1) = 0.36.0-1.fc31 golang(cloud.google.com/go/bigquery/storage/apiv1beta1) = 0.36.0-1.fc31 golang(cloud.google.com/go/bigtable) = 0.36.0-1.fc31 golang(cloud.google.com/go/bigtable/bttest) = 0.36.0-1.fc31 golang(cloud.google.com/go/bigtable/internal/cbtconfig) = 0.36.0-1.fc31 golang(cloud.google.com/go/bigtable/internal/gax) = 0.36.0-1.fc31 golang(cloud.google.com/go/bigtable/internal/option) = 0.36.0-1.fc31 golang(cloud.google.com/go/bigtable/internal/stat) = 0.36.0-1.fc31 golang(cloud.google.com/go/civil) = 0.36.0-1.fc31 golang(cloud.google.com/go/cloudtasks/apiv2beta2) = 0.36.0-1.fc31 golang(cloud.google.com/go/cloudtasks/apiv2beta3) = 0.36.0-1.fc31 golang(cloud.google.com/go/cmd/go-cloud-debug-agent/internal/breakpoints) = 0.36.0-1.fc31 golang(cloud.google.com/go/cmd/go-cloud-debug-agent/internal/controller) = 0.36.0-1.fc31 golang(cloud.google.com/go/cmd/go-cloud-debug-agent/internal/debug) = 0.36.0-1.fc31 golang(cloud.google.com/go/cmd/go-cloud-debug-agent/internal/debug/arch) = 0.36.0-1.fc31 golang(cloud.google.com/go/cmd/go-cloud-debug-agent/internal/debug/dwarf) = 0.36.0-1.fc31 golang(cloud.google.com/go/cmd/go-cloud-debug-agent/internal/debug/elf) = 0.36.0-1.fc31 golang(cloud.google.com/go/cmd/go-cloud-debug-agent/internal/debug/gosym) = 0.36.0-1.fc31 golang(cloud.google.com/go/cmd/go-cloud-debug-agent/internal/debug/local) = 0.36.0-1.fc31 golang(cloud.google.com/go/cmd/go-cloud-debug-agent/internal/debug/remote) = 0.36.0-1.fc31 golang(cloud.google.com/go/cmd/go-cloud-debug-agent/internal/debug/server) = 0.36.0-1.fc31 golang(cloud.google.com/go/cmd/go-cloud-debug-agent/internal/debug/server/protocol) = 0.36.0-1.fc31 golang(cloud.google.com/go/cmd/go-cloud-debug-agent/internal/debug/tests/peek) = 0.36.0-1.fc31 golang(cloud.google.com/go/cmd/go-cloud-debug-agent/internal/valuecollector) = 0.36.0-1.fc31 golang(cloud.google.com/go/container) = 0.36.0-1.fc31 golang(cloud.google.com/go/container/apiv1) = 0.36.0-1.fc31 golang(cloud.google.com/go/containeranalysis/apiv1beta1) = 0.36.0-1.fc31 golang(cloud.google.com/go/dataproc/apiv1) = 0.36.0-1.fc31 golang(cloud.google.com/go/dataproc/apiv1beta2) = 0.36.0-1.fc31 golang(cloud.google.com/go/datastore) = 0.36.0-1.fc31 golang(cloud.google.com/go/debugger/apiv2) = 0.36.0-1.fc31 golang(cloud.google.com/go/dialogflow/apiv2) = 0.36.0-1.fc31 golang(cloud.google.com/go/dlp/apiv2) = 0.36.0-1.fc31 golang(cloud.google.com/go/errorreporting) = 0.36.0-1.fc31 golang(cloud.google.com/go/errorreporting/apiv1beta1) = 0.36.0-1.fc31 golang(cloud.google.com/go/expr/apiv1alpha1) = 0.36.0-1.fc31 golang(cloud.google.com/go/firestore) = 0.36.0-1.fc31 golang(cloud.google.com/go/firestore/apiv1) = 0.36.0-1.fc31 golang(cloud.google.com/go/firestore/apiv1beta1) = 0.36.0-1.fc31 golang(cloud.google.com/go/firestore/genproto) = 0.36.0-1.fc31 golang(cloud.google.com/go/firestore/internal) = 0.36.0-1.fc31 golang(cloud.google.com/go/functions/metadata) = 0.36.0-1.fc31 golang(cloud.google.com/go/httpreplay) = 0.36.0-1.fc31 golang(cloud.google.com/go/httpreplay/internal/proxy) = 0.36.0-1.fc31 golang(cloud.google.com/go/iam) = 0.36.0-1.fc31 golang(cloud.google.com/go/iam/admin/apiv1) = 0.36.0-1.fc31 golang(cloud.google.com/go/iam/credentials/apiv1) = 0.36.0-1.fc31 golang(cloud.google.com/go/internal) = 0.36.0-1.fc31 golang(cloud.google.com/go/internal/btree) = 0.36.0-1.fc31 golang(cloud.google.com/go/internal/fields) = 0.36.0-1.fc31 golang(cloud.google.com/go/internal/leakcheck) = 0.36.0-1.fc31 golang(cloud.google.com/go/internal/optional) = 0.36.0-1.fc31 golang(cloud.google.com/go/internal/pretty) = 0.36.0-1.fc31 golang(cloud.google.com/go/internal/protostruct) = 0.36.0-1.fc31 golang(cloud.google.com/go/internal/testutil) = 0.36.0-1.fc31 golang(cloud.google.com/go/internal/trace) = 0.36.0-1.fc31 golang(cloud.google.com/go/internal/tracecontext) = 0.36.0-1.fc31 golang(cloud.google.com/go/internal/uid) = 0.36.0-1.fc31 golang(cloud.google.com/go/internal/version) = 0.36.0-1.fc31 golang(cloud.google.com/go/irm/apiv1alpha2) = 0.36.0-1.fc31 golang(cloud.google.com/go/kms/apiv1) = 0.36.0-1.fc31 golang(cloud.google.com/go/language/apiv1) = 0.36.0-1.fc31 golang(cloud.google.com/go/language/apiv1beta2) = 0.36.0-1.fc31 golang(cloud.google.com/go/logging) = 0.36.0-1.fc31 golang(cloud.google.com/go/logging/apiv2) = 0.36.0-1.fc31 golang(cloud.google.com/go/logging/internal) = 0.36.0-1.fc31 golang(cloud.google.com/go/logging/internal/testing) = 0.36.0-1.fc31 golang(cloud.google.com/go/logging/logadmin) = 0.36.0-1.fc31 golang(cloud.google.com/go/longrunning) = 0.36.0-1.fc31 golang(cloud.google.com/go/longrunning/autogen) = 0.36.0-1.fc31 golang(cloud.google.com/go/monitoring/apiv3) = 0.36.0-1.fc31 golang(cloud.google.com/go/oslogin/apiv1) = 0.36.0-1.fc31 golang(cloud.google.com/go/oslogin/apiv1beta) = 0.36.0-1.fc31 golang(cloud.google.com/go/profiler) = 0.36.0-1.fc31 golang(cloud.google.com/go/profiler/mocks) = 0.36.0-1.fc31 golang(cloud.google.com/go/profiler/proftest) = 0.36.0-1.fc31 golang(cloud.google.com/go/pubsub) = 0.36.0-1.fc31 golang(cloud.google.com/go/pubsub/apiv1) = 0.36.0-1.fc31 golang(cloud.google.com/go/pubsub/internal/distribution) = 0.36.0-1.fc31 golang(cloud.google.com/go/pubsub/loadtest) = 0.36.0-1.fc31 golang(cloud.google.com/go/pubsub/loadtest/pb) = 0.36.0-1.fc31 golang(cloud.google.com/go/pubsub/pstest) = 0.36.0-1.fc31 golang(cloud.google.com/go/redis/apiv1) = 0.36.0-1.fc31 golang(cloud.google.com/go/redis/apiv1beta1) = 0.36.0-1.fc31 golang(cloud.google.com/go/rpcreplay) = 0.36.0-1.fc31 golang(cloud.google.com/go/rpcreplay/proto/intstore) = 0.36.0-1.fc31 golang(cloud.google.com/go/rpcreplay/proto/rpcreplay) = 0.36.0-1.fc31 golang(cloud.google.com/go/scheduler/apiv1beta1) = 0.36.0-1.fc31 golang(cloud.google.com/go/securitycenter/apiv1beta1) = 0.36.0-1.fc31 golang(cloud.google.com/go/spanner) = 0.36.0-1.fc31 golang(cloud.google.com/go/spanner/admin/database/apiv1) = 0.36.0-1.fc31 golang(cloud.google.com/go/spanner/admin/instance/apiv1) = 0.36.0-1.fc31 golang(cloud.google.com/go/spanner/apiv1) = 0.36.0-1.fc31 golang(cloud.google.com/go/spanner/internal/backoff) = 0.36.0-1.fc31 golang(cloud.google.com/go/spanner/internal/testutil) = 0.36.0-1.fc31 golang(cloud.google.com/go/speech/apiv1) = 0.36.0-1.fc31 golang(cloud.google.com/go/speech/apiv1p1beta1) = 0.36.0-1.fc31 golang(cloud.google.com/go/storage) = 0.36.0-1.fc31 golang(cloud.google.com/go/talent/apiv4beta1) = 0.36.0-1.fc31 golang(cloud.google.com/go/texttospeech/apiv1) = 0.36.0-1.fc31 golang(cloud.google.com/go/trace) = 0.36.0-1.fc31 golang(cloud.google.com/go/trace/apiv1) = 0.36.0-1.fc31 golang(cloud.google.com/go/trace/apiv2) = 0.36.0-1.fc31 golang(cloud.google.com/go/translate) = 0.36.0-1.fc31 golang(cloud.google.com/go/translate/internal/translate/v2) = 0.36.0-1.fc31 golang(cloud.google.com/go/videointelligence/apiv1) = 0.36.0-1.fc31 golang(cloud.google.com/go/videointelligence/apiv1beta1) = 0.36.0-1.fc31 golang(cloud.google.com/go/videointelligence/apiv1beta2) = 0.36.0-1.fc31 golang(cloud.google.com/go/vision/apiv1) = 0.36.0-1.fc31 golang(cloud.google.com/go/vision/apiv1p1beta1) = 0.36.0-1.fc31 golang-cloud-google-devel = 0.36.0-1.fc31 golang-cloud-google-devel(x86-64) = 0.36.0-1.fc31 golang-ipath(cloud.google.com/go) = 0.36.0-1.fc31
-
golang-cloud-google-compute-devel-0.36.0-1.fc31.x86_64.rpm
, which provides:golang(cloud.google.com/go/compute/metadata) = 0.36.0-1.fc31 golang-cloud-google-compute-devel = 0.36.0-1.fc31 golang-cloud-google-compute-devel(x86-64) = 0.36.0-1.fc31 golang-ipath(cloud.google.com/go/compute) = 0.36.0-1.fc31
We now have broken the cyclic dependency graph: golang.org/x/oauth2
can now
depend separately on golang-cloud-google-compute-devel
.
Here is the full example:
# Generated by go2rpm
%bcond_without check
%bcond_without bootstrap
# https://github.com/GoogleCloudPlatform/google-cloud-go
%global goipath cloud.google.com/go
%global forgeurl https://github.com/GoogleCloudPlatform/google-cloud-go
Version: 0.37.4
%gometa
%if %{without bootstrap}
%global goipaths0 cloud.google.com/go
%global goipathsex0 cloud.google.com/go/compute
%endif
%global goipaths1 cloud.google.com/go/compute
%global common_description %{expand:
Go packages for Google Cloud Platform services.}
%global golicenses LICENSE
%global godocs AUTHORS CODE_OF_CONDUCT.md CONTRIBUTING.md CONTRIBUTORS RELEASING.md old-news.md CHANGES.md README.md
Name: %{goname}
Release: 1%{?dist}
Summary: Google Cloud client libraries for Go
# Upstream license specification: Apache-2.0
License: Apache-2.0
URL: %{gourl}
Source: %{gosource}
%if %{without bootstrap}
BuildRequires: golang(github.com/golang/mock/gomock)
BuildRequires: golang(github.com/golang/protobuf/proto)
BuildRequires: golang(github.com/golang/protobuf/ptypes)
BuildRequires: golang(github.com/golang/protobuf/ptypes/any)
BuildRequires: golang(github.com/golang/protobuf/ptypes/duration)
BuildRequires: golang(github.com/golang/protobuf/ptypes/empty)
BuildRequires: golang(github.com/golang/protobuf/ptypes/struct)
BuildRequires: golang(github.com/golang/protobuf/ptypes/timestamp)
BuildRequires: golang(github.com/golang/protobuf/ptypes/wrappers)
BuildRequires: golang(github.com/google/btree)
BuildRequires: golang(github.com/google/go-cmp/cmp)
BuildRequires: golang(github.com/google/martian)
BuildRequires: golang(github.com/google/martian/fifo)
BuildRequires: golang(github.com/google/martian/httpspec)
BuildRequires: golang(github.com/google/martian/martianhttp)
BuildRequires: golang(github.com/google/martian/martianlog)
BuildRequires: golang(github.com/google/martian/mitm)
BuildRequires: golang(github.com/google/pprof/profile)
BuildRequires: golang(github.com/googleapis/gax-go/v2)
BuildRequires: golang(go.opencensus.io/plugin/ocgrpc)
BuildRequires: golang(go.opencensus.io/stats)
BuildRequires: golang(go.opencensus.io/stats/view)
BuildRequires: golang(go.opencensus.io/tag)
BuildRequires: golang(go.opencensus.io/trace)
BuildRequires: golang(golang.org/x/oauth2)
BuildRequires: golang(golang.org/x/oauth2/google)
BuildRequires: golang(golang.org/x/oauth2/jwt)
BuildRequires: golang(golang.org/x/sync/errgroup)
BuildRequires: golang(golang.org/x/sync/semaphore)
BuildRequires: golang(golang.org/x/text/language)
BuildRequires: golang(golang.org/x/time/rate)
BuildRequires: golang(google.golang.org/api/bigquery/v2)
BuildRequires: golang(google.golang.org/api/clouddebugger/v2)
BuildRequires: golang(google.golang.org/api/cloudresourcemanager/v1)
BuildRequires: golang(google.golang.org/api/cloudtrace/v1)
BuildRequires: golang(google.golang.org/api/compute/v1)
BuildRequires: golang(google.golang.org/api/container/v1)
BuildRequires: golang(google.golang.org/api/gensupport)
BuildRequires: golang(google.golang.org/api/googleapi)
BuildRequires: golang(google.golang.org/api/iterator)
BuildRequires: golang(google.golang.org/api/option)
BuildRequires: golang(google.golang.org/api/storage/v1)
BuildRequires: golang(google.golang.org/api/support/bundler)
BuildRequires: golang(google.golang.org/api/transport)
BuildRequires: golang(google.golang.org/api/transport/grpc)
BuildRequires: golang(google.golang.org/api/transport/http)
BuildRequires: golang(google.golang.org/genproto/googleapis/api/expr/v1alpha1)
BuildRequires: golang(google.golang.org/genproto/googleapis/api/label)
BuildRequires: golang(google.golang.org/genproto/googleapis/api/metric)
BuildRequires: golang(google.golang.org/genproto/googleapis/api/monitoredres)
BuildRequires: golang(google.golang.org/genproto/googleapis/appengine/logging/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/bigtable/admin/v2)
BuildRequires: golang(google.golang.org/genproto/googleapis/bigtable/v2)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/asset/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/asset/v1beta1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/audit)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/bigquery/datatransfer/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/bigquery/storage/v1beta1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/dataproc/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/dialogflow/v2)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/iot/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/irm/v1alpha2)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/kms/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/language/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/language/v1beta2)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/oslogin/common)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/oslogin/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/oslogin/v1beta)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/redis/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/redis/v1beta1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/scheduler/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/scheduler/v1beta1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/securitycenter/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/securitycenter/v1beta1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/speech/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/speech/v1p1beta1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/talent/v4beta1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/tasks/v2)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/tasks/v2beta2)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/tasks/v2beta3)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/texttospeech/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/videointelligence/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta2)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/vision/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1)
BuildRequires: golang(google.golang.org/genproto/googleapis/cloud/webrisk/v1beta1)
BuildRequires: golang(google.golang.org/genproto/googleapis/container/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/datastore/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/devtools/clouddebugger/v2)
BuildRequires: golang(google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1)
BuildRequires: golang(google.golang.org/genproto/googleapis/devtools/cloudprofiler/v2)
BuildRequires: golang(google.golang.org/genproto/googleapis/devtools/cloudtrace/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/devtools/cloudtrace/v2)
BuildRequires: golang(google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1)
BuildRequires: golang(google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/grafeas)
BuildRequires: golang(google.golang.org/genproto/googleapis/firestore/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/iam/admin/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/iam/credentials/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/iam/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/logging/type)
BuildRequires: golang(google.golang.org/genproto/googleapis/logging/v2)
BuildRequires: golang(google.golang.org/genproto/googleapis/longrunning)
BuildRequires: golang(google.golang.org/genproto/googleapis/monitoring/v3)
BuildRequires: golang(google.golang.org/genproto/googleapis/privacy/dlp/v2)
BuildRequires: golang(google.golang.org/genproto/googleapis/pubsub/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/rpc/code)
BuildRequires: golang(google.golang.org/genproto/googleapis/rpc/errdetails)
BuildRequires: golang(google.golang.org/genproto/googleapis/rpc/status)
BuildRequires: golang(google.golang.org/genproto/googleapis/spanner/admin/database/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/spanner/admin/instance/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/spanner/v1)
BuildRequires: golang(google.golang.org/genproto/googleapis/type/latlng)
BuildRequires: golang(google.golang.org/genproto/protobuf/field_mask)
BuildRequires: golang(google.golang.org/grpc)
BuildRequires: golang(google.golang.org/grpc/codes)
BuildRequires: golang(google.golang.org/grpc/credentials)
BuildRequires: golang(google.golang.org/grpc/keepalive)
BuildRequires: golang(google.golang.org/grpc/metadata)
BuildRequires: golang(google.golang.org/grpc/status)
%if %{with check}
# Tests
BuildRequires: golang(github.com/google/go-cmp/cmp/cmpopts)
BuildRequires: golang(google.golang.org/api/iterator/testing)
BuildRequires: golang(google.golang.org/api/logging/v2)
%endif
%endif
%description
%{common_description}
%gopkg
%prep
%goprep
%install
%gopkginstall
%if %{without bootstrap}
%if %{with check}
%check
%gocheck
%endif
%endif
%gopkgfiles
%changelog
* Tue Apr 23 09:48:52 CEST 2019 Robert-André Mauchin <zebob.m@gmail.com> - 0.37.4-1
- Release 0.37.4
Want to help? Learn how to contribute to Fedora Docs ›