protomaps / go-pmtiles

Single-file executable tool for working with PMTiles archives
https://docs.protomaps.com/pmtiles/cli
BSD 3-Clause "New" or "Revised" License
370 stars 51 forks source link

How to compile #33

Closed wipfli closed 1 year ago

wipfli commented 1 year ago

How can I compile and run go-pmtiles on Ubuntu? I would like to mess around a bit with the source code...

wipfli commented 1 year ago

I tried this but it failed:

➜  go-pmtiles git:(main) go run main.go                                   
go: downloading gocloud.dev v0.27.0
go: downloading zombiezen.com/go/sqlite v0.10.1
go: downloading github.com/schollz/progressbar/v3 v3.11.0
go: downloading github.com/RoaringBitmap/roaring v1.2.1
go: downloading github.com/dustin/go-humanize v1.0.0
go: extracting github.com/dustin/go-humanize v1.0.0
go: extracting zombiezen.com/go/sqlite v0.10.1
go: downloading modernc.org/sqlite v1.17.3
go: downloading modernc.org/libc v1.16.7
go: extracting github.com/schollz/progressbar/v3 v3.11.0
go: downloading github.com/mattn/go-runewidth v0.0.13
go: extracting github.com/mattn/go-runewidth v0.0.13
go: downloading github.com/rivo/uniseg v0.2.0
go: extracting github.com/rivo/uniseg v0.2.0
go: downloading github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db
go: extracting github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db
go: downloading golang.org/x/term v0.0.0-20220722155259-a9ba230a4035
go: extracting modernc.org/libc v1.16.7
go: extracting golang.org/x/term v0.0.0-20220722155259-a9ba230a4035
go: downloading golang.org/x/sys v0.0.0-20220829200755-d48e67d00261
go: extracting gocloud.dev v0.27.0
go: downloading github.com/aws/aws-sdk-go v1.44.68
go: downloading google.golang.org/api v0.91.0
go: downloading github.com/Azure/azure-sdk-for-go v66.0.0+incompatible
go: downloading go.opencensus.io v0.23.0
go: downloading cloud.google.com/go v0.103.0
go: downloading github.com/googleapis/gax-go/v2 v2.4.0
go: extracting golang.org/x/sys v0.0.0-20220829200755-d48e67d00261
go: extracting github.com/googleapis/gax-go/v2 v2.4.0
go: downloading github.com/google/wire v0.5.0
go: extracting go.opencensus.io v0.23.0
go: downloading github.com/Azure/go-autorest v14.2.0+incompatible
go: extracting cloud.google.com/go v0.103.0
go: downloading cloud.google.com/go/compute v1.7.0
go: extracting github.com/google/wire v0.5.0
go: extracting github.com/Azure/go-autorest v14.2.0+incompatible
go: downloading github.com/Azure/go-autorest/autorest v0.11.28
go: downloading cloud.google.com/go/iam v0.3.0
go: extracting cloud.google.com/go/compute v1.7.0
go: extracting github.com/Azure/go-autorest/autorest v0.11.28
go: downloading github.com/Azure/go-autorest/autorest/to v0.4.0
go: extracting cloud.google.com/go/iam v0.3.0
go: extracting github.com/Azure/go-autorest/autorest/to v0.4.0
go: extracting github.com/aws/aws-sdk-go v1.44.68
go: downloading google.golang.org/protobuf v1.28.1
go: downloading github.com/aws/aws-sdk-go-v2 v1.16.8
go: extracting google.golang.org/api v0.91.0
go: extracting github.com/aws/aws-sdk-go-v2 v1.16.8
go: downloading github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.21
go: extracting google.golang.org/protobuf v1.28.1
go: downloading google.golang.org/grpc v1.48.0
go: extracting github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.21
go: downloading github.com/google/uuid v1.3.0
go: extracting github.com/google/uuid v1.3.0
go: downloading modernc.org/mathutil v1.4.1
go: extracting modernc.org/mathutil v1.4.1
go: downloading golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f
go: downloading golang.org/x/oauth2 v0.0.0-20220722155238-128564f6959c
go: extracting golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f
go: extracting google.golang.org/grpc v1.48.0
go: downloading github.com/mattn/go-isatty v0.0.16
go: downloading google.golang.org/genproto v0.0.0-20220802133213-ce4fa296bf78
go: extracting golang.org/x/oauth2 v0.0.0-20220722155238-128564f6959c
go: downloading github.com/jmespath/go-jmespath v0.4.0
go: downloading github.com/golang/protobuf v1.5.2
go: extracting github.com/mattn/go-isatty v0.0.16
go: downloading github.com/aws/smithy-go v1.12.0
go: extracting github.com/jmespath/go-jmespath v0.4.0
go: downloading cloud.google.com/go/storage v1.24.0
go: extracting github.com/golang/protobuf v1.5.2
go: extracting github.com/aws/smithy-go v1.12.0
go: downloading modernc.org/memory v1.1.1
go: downloading golang.org/x/net v0.0.0-20220802222814-0bcc04d9c69b
go: extracting cloud.google.com/go/storage v1.24.0
go: downloading github.com/aws/aws-sdk-go-v2/service/s3 v1.27.2
go: extracting modernc.org/memory v1.1.1
go: downloading github.com/google/go-cmp v0.5.8
go: extracting golang.org/x/net v0.0.0-20220802222814-0bcc04d9c69b
go: extracting github.com/aws/aws-sdk-go-v2/service/s3 v1.27.2
go: downloading github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.3
go: extracting github.com/google/go-cmp v0.5.8
go: downloading github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0
go: extracting github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.3
go: downloading github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.10
go: extracting github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0
go: extracting github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.10
go: downloading github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.9
go: extracting github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.9
go: downloading github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
go: extracting github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
go: downloading golang.org/x/text v0.3.7
go: extracting golang.org/x/text v0.3.7
go: downloading github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.9
go: extracting github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.9
go: extracting google.golang.org/genproto v0.0.0-20220802133213-ce4fa296bf78
go: downloading github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.3
go: downloading github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.6
go: downloading github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.15
go: downloading github.com/aws/aws-sdk-go-v2/config v1.15.15
go: extracting github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.3
go: downloading github.com/googleapis/enterprise-certificate-proxy v0.1.0
go: extracting github.com/aws/aws-sdk-go-v2/config v1.15.15
go: downloading github.com/aws/aws-sdk-go-v2/service/sts v1.16.10
go: extracting github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.15
go: downloading github.com/aws/aws-sdk-go-v2/internal/ini v1.3.16
go: extracting github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.6
go: downloading github.com/aws/aws-sdk-go-v2/credentials v1.12.10
go: extracting github.com/googleapis/enterprise-certificate-proxy v0.1.0
go: downloading github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.9
go: extracting github.com/aws/aws-sdk-go-v2/service/sts v1.16.10
go: extracting github.com/aws/aws-sdk-go-v2/internal/ini v1.3.16
go: downloading github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.9
go: extracting github.com/aws/aws-sdk-go-v2/credentials v1.12.10
go: downloading github.com/aws/aws-sdk-go-v2/service/sso v1.11.13
go: extracting github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.9
go: extracting github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.9
go: extracting github.com/aws/aws-sdk-go-v2/service/sso v1.11.13
go: extracting github.com/Azure/azure-sdk-for-go v66.0.0+incompatible
go: downloading github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1
go: downloading github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1
go: downloading github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0
go: extracting github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1
go: extracting github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0
go: extracting github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1
go: extracting modernc.org/sqlite v1.17.3
go: extracting github.com/RoaringBitmap/roaring v1.2.1
go: finding github.com/RoaringBitmap/roaring v1.2.1
go: finding github.com/dustin/go-humanize v1.0.0
go: finding github.com/schollz/progressbar/v3 v3.11.0
go: finding github.com/mattn/go-runewidth v0.0.13
go: finding github.com/rivo/uniseg v0.2.0
go: finding github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db
go: finding golang.org/x/term v0.0.0-20220722155259-a9ba230a4035
go: finding golang.org/x/sys v0.0.0-20220829200755-d48e67d00261
go: finding gocloud.dev v0.27.0
go: finding go.opencensus.io v0.23.0
go: finding github.com/googleapis/gax-go/v2 v2.4.0
go: finding google.golang.org/genproto v0.0.0-20220802133213-ce4fa296bf78
go: finding google.golang.org/protobuf v1.28.1
go: finding google.golang.org/api v0.91.0
go: finding google.golang.org/grpc v1.48.0
go: finding github.com/golang/protobuf v1.5.2
go: finding golang.org/x/net v0.0.0-20220802222814-0bcc04d9c69b
go: finding golang.org/x/text v0.3.7
go: finding golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f
go: finding github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
go: finding zombiezen.com/go/sqlite v0.10.1
go: finding modernc.org/libc v1.16.7
go: finding github.com/google/uuid v1.3.0
go: finding github.com/mattn/go-isatty v0.0.16
go: finding modernc.org/mathutil v1.4.1
go: finding github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0
go: finding modernc.org/memory v1.1.1
go: finding modernc.org/sqlite v1.17.3
build github.com/Azure/azure-sdk-for-go/sdk/azcore: cannot load github.com/Azure/azure-sdk-for-go/sdk/azcore: no Go source files
bdon commented 1 year ago

I remember seeing this and I think you need a newer version of go. can you try 1.18?

wipfli commented 1 year ago

Ah OK I installed GO with apt get..

wipfli commented 1 year ago

tada...

➜  go-pmtiles git:(main) ✗ go version    
go version go1.18.8 linux/amd64
➜  go-pmtiles git:(main) ✗ go run main.go
go: downloading github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0
go: downloading github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0
go: downloading golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa
go: downloading github.com/kylelemons/godebug v1.1.0
go: downloading github.com/golang-jwt/jwt v3.2.1+incompatible
go: downloading github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4
go: updates to go.mod needed; to update it:
        go mod tidy
➜  go-pmtiles git:(main) ✗ go mod tidy   
go: downloading github.com/stretchr/testify v1.8.0
go: downloading github.com/bits-and-blooms/bitset v1.2.0
go: downloading github.com/google/go-replayers/grpcreplay v1.1.0
go: downloading github.com/google/go-replayers/httpreplay v1.1.1
go: downloading github.com/golang-jwt/jwt/v4 v4.4.2
go: downloading google.golang.org/appengine v1.6.7
go: downloading github.com/mschoch/smat v0.2.0
go: downloading github.com/dnaeon/go-vcr v1.2.0
go: downloading gopkg.in/yaml.v2 v2.4.0
go: downloading github.com/davecgh/go-spew v1.1.1
go: downloading github.com/pmezard/go-difflib v1.0.0
go: downloading gopkg.in/yaml.v3 v3.0.1
go: downloading github.com/google/martian/v3 v3.3.2
go: downloading github.com/jmespath/go-jmespath/internal/testify v1.5.1
go: downloading gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c
go: downloading github.com/kr/pretty v0.3.0
go: downloading github.com/rogpeppe/go-internal v1.6.1
go: downloading github.com/kr/text v0.2.0
go: downloading github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible
➜  go-pmtiles git:(main) ✗ go run main.go
Usage: pmtiles [COMMAND] [ARGS]

Inspecting pmtiles:
pmtiles show file:// INPUT.pmtiles
pmtiles show "s3://BUCKET_NAME INPUT.pmtiles

Creating pmtiles:
pmtiles convert INPUT.mbtiles OUTPUT.pmtiles
pmtiles convert INPUT_V2.pmtiles OUTPUT_V3.pmtiles

Uploading pmtiles:
pmtiles upload INPUT.pmtiles s3://BUCKET_NAME REMOTE.pmtiles

Running a proxy server:
pmtiles serve "s3://BUCKET_NAME"
exit status 1

Thanks, @bdon!

bdon commented 1 year ago

@wipfli there are some places in go.mod and the Github Actions that still have 1.17 specified, PR welcome :)

wipfli commented 1 year ago

34