Erweiterte Anwendungsfälle

Zusätzliche Dateien

Falls Sie zusätzliche Dateien in Ihren Quellcodepaketen ausliefern müssen, können Sie die folgenden Makros in der Präambel verwenden:

  • %global goextensions Eine durch Leerzeichen getrennte Liste von Erweiterungen, die zusätzlich zu den standardmäßigen Go-Dateierweiterungen in das Entwicklungspaket aufgenommen werden sollen.

  • %global gosupfiles: Eine durch Leerzeichen getrennte Liste von Shell-Globs, die mit anderen Dateien übereinstimmen, die in das Entwicklungspaket aufgenommen werden sollen.

  • %global gosupfilesex Eine durch Leerzeichen getrennte Liste von Shell-Globs, die anderen Dateien entsprechen, die Sie von Paketlisten ausschließen möchten. Funktioniert nur mit Dateien, die mit „gosupfiles“ angegeben wurden.

Wenn Sie beispielsweise Glide-Dateien ausliefern möchten:

%global gosupfiles glide.yaml glide.lock

Zusätzliche Header-Deklarationen

Verwenden Sie %godevelheader, um spezifische Teilpaketdeklarationen hinzuzufügen. Beispielsweise möchten Sie eventuell das Hauptpaket, das die Binärdateien enthält, einbinden oder im Falle einer Umbenennung andere Obsoletes/Provides verwenden.

%global godevelheader %{expand:
Requires:
Obsoletes:
Provides:
}

Umgang mit zirkulären Abhängigkeiten

In vielen Fällen stößt man auf Pakete, die voneinander abhängig sind, sogenannte zirkuläre Abhängigkeiten, was das Erstellen der einzelnen Pakete erschwert.

Wenn problematische Abhängigkeiten auftreten, werden sie üblicherweise nur in bestimmten Teilpaketen eines Projekts verwendet, und die meisten Projektabhängigkeiten benötigen diese Teilpakete weder direkt noch indirekt. Die Idee besteht darin, die GoI-Pfade der problematischen Unterpakete in ein separates -devel-RPM-Paket umzuleiten, um den Abhängigkeitsgraphen zu vereinfachen.

Nehmen wir als Beispiel folgende Pakete an: cloud.google.com/go und golang.org/x/oauth2.

cloud.google.com/go hat den folgenden Abhängigkeitsgraphen:

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
[…]

Für golang.org/x/oauth2 ergibt sich der folgende Abhängigkeitsgraph:

cloud.google.com/go/compute/metadata
golang.org/x/net/context/ctxhttp

Wie Sie sehen können, hängen beide Pakete voneinander ab. Wir suchen danach, wo cloud.google.com/go in golang.org/x/oauth2 verwendet wird:

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"

Wir sehen, dass es im Unterpaket golang.org/x/oauth2/google verwendet wird, welches genau von cloud.google.com/go benötigt wird. Daher ist es nicht möglich, golang.org/x/oauth2/google in ein separates -devel-Teilpaket auszulagern, um unseren zirkulären Abhängigkeitsgraphen aufzulösen.

Nun suchen wir danach, wo golang.org/x/oauth2 in cloud.google.com/go verwendet wird:

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"

Wir sehen, dass es im Teilpaket cloud.google.com/go/compute/metadata nicht verwendet wird. Daher können wir cloud.google.com/go/compute/metadata in ein separates -devel-Teilpaket auslagern, um unseren zirkulären Abhängigkeitsgraphen aufzulösen.

Um dies zu erreichen, verwenden wir mehrere goipaths in der Präambel:

%global goipaths0       cloud.google.com/go
%global goipathsex0     cloud.google.com/go/compute

%global goipaths1       cloud.google.com/go/compute

goipaths0 ist das Hauptpaket, aus dem wir compute ausschließen, und goipaths1 ist das Teilaket, das es enthält.

Nach dem Bau erhalten wir zwei Pakete:

  • golang-cloud-google-devel-0.36.0-1.fc31.x86_64.rpm, was Folgendes bereitstellt:

    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, was Folgendes bereitstellt:

    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

Wir haben den zirkulären Abhängigkeitsgraphen durchbrochen: golang.org/x/oauth2 kann nun separat von golang-cloud-google-compute-devel abhängen.

Hier ist das vollständige Beispiel:

golang-cloud-google-go.spec
# 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