justwatchcom / sql_exporter

Flexible SQL Exporter for Prometheus.
MIT License
393 stars 108 forks source link

The Makefile does not work #71

Closed oseiberts11 closed 1 year ago

oseiberts11 commented 2 years ago

This happens when I try to use the Makefile:

oseibert:~/git$ git clone https://github.com/justwatchcom/sql_exporter.git
Cloning into 'sql_exporter'...
remote: Enumerating objects: 4092, done.
remote: Counting objects: 100% (381/381), done.
remote: Compressing objects: 100% (273/273), done.
remote: Total 4092 (delta 134), reused 275 (delta 92), pack-reused 3711
Receiving objects: 100% (4092/4092), 7.10 MiB | 7.08 MiB/s, done.
Resolving deltas: 100% (1487/1487), done.
oseibert:~/git$ cd sql_exporter/
oseibert:~/git/sql_exporter$ make
>> formatting code
go: added github.com/Masterminds/semver v1.5.0
go: upgraded github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d => v0.0.0-20211218093645-b94a6e3cc137
go: added github.com/google/go-github/v25 v25.1.3
go: added github.com/google/go-querystring v1.1.0
go: upgraded github.com/prometheus/client_golang v1.12.0 => v1.13.0
go: upgraded github.com/prometheus/common v0.32.1 => v0.37.0
go: upgraded github.com/prometheus/procfs v0.7.3 => v0.8.0
go: added github.com/prometheus/promu v0.13.0
go: added go.uber.org/atomic v1.9.0
go: upgraded golang.org/x/net v0.0.0-20211118161319-6a13c67c3ce4 => v0.0.0-20220809012201-f428fae20770
go: upgraded golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c => v0.0.0-20220808172628-8227340efae7
go: upgraded golang.org/x/sys v0.0.0-20220429233432-b5fbb4746d32 => v0.0.0-20220808155132-1c4a2a72c664
go: upgraded google.golang.org/appengine v1.6.6 => v1.6.7
go: upgraded google.golang.org/protobuf v1.27.1 => v1.28.1
>> building binaries
make: /bin/promu: No such file or directory
make: *** [build] Error 1
oseibert:~/git/sql_exporter$

That error happens because there is no $GOPATH set. If I work around that (and the use of $GOPATH doesn't expect a colon-separated list of directories, but just a single one):

oseibert:~/git/sql_exporter$ env GOPATH=$(go env GOPATH) make build
>> building binaries
 >   sql_exporter
go: inconsistent vendoring in /Users/oseibert/git/sql_exporter:
    github.com/prometheus/client_golang@v1.13.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
    github.com/prometheus/common@v0.37.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
    github.com/Masterminds/semver@v1.5.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
    github.com/alecthomas/template@v0.0.0-20190718012654-fb15b899a751: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
    github.com/alecthomas/units@v0.0.0-20211218093645-b94a6e3cc137: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
    github.com/google/go-github/v25@v25.1.3: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
    github.com/google/go-querystring@v1.1.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
    github.com/pkg/errors@v0.9.1: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
    github.com/prometheus/procfs@v0.8.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
    github.com/prometheus/promu@v0.13.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
    go.uber.org/atomic@v1.9.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
    golang.org/x/net@v0.0.0-20220809012201-f428fae20770: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
    golang.org/x/oauth2@v0.0.0-20220808172628-8227340efae7: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
    golang.org/x/sys@v0.0.0-20220808155132-1c4a2a72c664: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
    google.golang.org/appengine@v1.6.7: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
    google.golang.org/protobuf@v1.28.1: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
    gopkg.in/alecthomas/kingpin.v2@v2.2.6: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
    github.com/prometheus/client_golang@v1.12.0: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
    github.com/prometheus/common@v0.32.1: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
    github.com/prometheus/procfs@v0.7.3: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
    golang.org/x/net@v0.0.0-20211118161319-6a13c67c3ce4: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
    golang.org/x/sys@v0.0.0-20220429233432-b5fbb4746d32: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
    google.golang.org/protobuf@v1.27.1: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod

    To ignore the vendor directory, use -mod=readonly or -mod=mod.
    To sync the vendor directory, run:
        go mod vendor
!! command failed: build -o /Users/oseibert/git/sql_exporter/sql_exporter -ldflags -X github.com/justwatchcom/sql_exporter/vendor/github.com/prometheus/common/version.Version=0.4.0 -X github.com/justwatchcom/sql_exporter/vendor/github.com/prometheus/common/version.Revision=a9da0f5d1b4e2092e30389e3eb8465d2eafd500c -X github.com/justwatchcom/sql_exporter/vendor/github.com/prometheus/common/version.Branch=master -X github.com/justwatchcom/sql_exporter/vendor/github.com/prometheus/common/version.BuildUser=oseibert@oseibert -X github.com/justwatchcom/sql_exporter/vendor/github.com/prometheus/common/version.BuildDate=20220809-12:23:07  -a -tags netgo github.com/justwatchcom/sql_exporter: exit status 1
make: *** [build] Error 1
oseibert:~/git/sql_exporter$
Hubbitus commented 1 year ago

I also have same error. What interesting this failed to build in docker also by provided Dockerfile:

$ podman build -t sql_exporter:1 .
[1/2] STEP 1/6: FROM golang:1.17-alpine AS builder
✔ docker.io/library/golang:1.17-alpine
Trying to pull docker.io/library/golang:1.17-alpine...
Getting image source signatures
Copying blob 5b4b56e6b994 done  
Copying blob ff63b82a42d3 done  
Copying blob 8162171ecb65 done  
Copying blob 530afca65e2e skipped: already exists  
Copying blob d450d4da0343 done  
Copying config 270c4f5875 done  
Writing manifest to image destination
Storing signatures
[1/2] STEP 2/6: RUN apk add git bash
fetch https://dl-cdn.alpinelinux.org/alpine/v3.16/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.16/community/x86_64/APKINDEX.tar.gz
(1/10) Installing ncurses-terminfo-base (6.3_p20220521-r1)
(2/10) Installing ncurses-libs (6.3_p20220521-r1)
(3/10) Installing readline (8.1.2-r0)
(4/10) Installing bash (5.1.16-r2)
Executing bash-5.1.16-r2.post-install
(5/10) Installing brotli-libs (1.0.9-r6)
(6/10) Installing nghttp2-libs (1.47.0-r0)
(7/10) Installing libcurl (8.1.2-r0)
(8/10) Installing expat (2.5.0-r0)
(9/10) Installing pcre2 (10.40-r0)
(10/10) Installing git (2.36.6-r0)
Executing busybox-1.35.0-r15.trigger
OK: 22 MiB in 25 packages
--> 7f871fe4aec6
[1/2] STEP 3/6: ENV GO111MODULE=on
--> 2738cf7e72d4
[1/2] STEP 4/6: COPY ./ /src
--> 1678a00af378
[1/2] STEP 5/6: WORKDIR /src
--> c2eb2ea47f9f
[1/2] STEP 6/6: RUN GOGC=off go build -mod=vendor -v -o /sql_exporter .
go: inconsistent vendoring in /src:
        github.com/go-kit/log@v0.2.1: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        github.com/prometheus/client_golang@v1.16.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        github.com/prometheus/common@v0.44.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        github.com/Masterminds/semver@v1.5.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        github.com/alecthomas/template@v0.0.0-20190718012654-fb15b899a751: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        github.com/alecthomas/units@v0.0.0-20211218093645-b94a6e3cc137: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        github.com/cespare/xxhash/v2@v2.2.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        github.com/golang/protobuf@v1.5.3: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        github.com/google/go-github/v25@v25.1.3: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        github.com/google/go-querystring@v1.1.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        github.com/matttproud/golang_protobuf_extensions@v1.0.4: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        github.com/pkg/errors@v0.9.1: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        github.com/prometheus/client_model@v0.4.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        github.com/prometheus/procfs@v0.11.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        github.com/prometheus/promu@v0.14.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        go.uber.org/atomic@v1.11.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        golang.org/x/crypto@v0.10.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        golang.org/x/net@v0.11.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        golang.org/x/oauth2@v0.9.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        golang.org/x/sys@v0.9.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        golang.org/x/text@v0.10.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        google.golang.org/appengine@v1.6.7: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        google.golang.org/protobuf@v1.30.0: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        gopkg.in/alecthomas/kingpin.v2@v2.2.6: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        github.com/cespare/xxhash/v2@v2.1.2: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
        github.com/go-kit/log@v0.2.0: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
        github.com/golang/protobuf@v1.5.2: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
        github.com/matttproud/golang_protobuf_extensions@v1.0.1: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
        github.com/prometheus/client_golang@v1.12.0: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
        github.com/prometheus/client_model@v0.2.0: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
        github.com/prometheus/common@v0.32.1: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
        github.com/prometheus/procfs@v0.7.3: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
        golang.org/x/crypto@v0.0.0-20211117183948-ae814b36b871: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
        golang.org/x/net@v0.0.0-20211118161319-6a13c67c3ce4: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
        golang.org/x/sys@v0.0.0-20220429233432-b5fbb4746d32: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
        golang.org/x/text@v0.3.7: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod
        google.golang.org/protobuf@v1.27.1: is marked as explicit in vendor/modules.txt, but not explicitly required in go.mod

        To ignore the vendor directory, use -mod=readonly or -mod=mod.
        To sync the vendor directory, run:
                go mod vendor
Error: building at STEP "RUN GOGC=off go build -mod=vendor -v -o /sql_exporter .": while running runtime: exit status 1
dewey commented 1 year ago

This should be fixed now, please give it a try with latest master.

dewey commented 1 year ago

New version is tagged and released. I'll close this, but feel free to open a new issue if this is still a problem for you.

Hubbitus commented 1 year ago

Master now built without any problems! Thank you very much.