Skip to content

Commit

Permalink
feat: bitmap
Browse files Browse the repository at this point in the history
  • Loading branch information
vinland-avalon committed Jun 28, 2023
1 parent 479c01a commit df3e696
Show file tree
Hide file tree
Showing 20 changed files with 1,204 additions and 516 deletions.
322 changes: 161 additions & 161 deletions GNUmakefile
Original file line number Diff line number Diff line change
@@ -1,194 +1,194 @@
# Top level Makefile for the entire project
#
# This Makefile encodes the "go generate" prerequisites ensuring that the proper tooling is installed and
# that the generate steps are executed when their prerequisite files change.
#
# This Makefile follows a few conventions:
#
# * All cmds must be added to this top level Makefile.
# * All binaries are placed in ./bin, its recommended to add this directory to your PATH.
#
export GOPATH=$(shell go env GOPATH)
export GOOS=$(shell go env GOOS)
export GOARCH=$(shell go env GOARCH)

ifneq (,$(filter $(GOARCH),amd64 s390x))
# Including the assets tag requires the UI to be built for compilation to succeed.
# Don't force it for running tests.
GO_TEST_TAGS :=
GO_BUILD_TAGS := assets
else
# noasm needed to avoid a panic in Flux for non-amd64, non-s390x.
GO_TEST_TAGS := noasm
GO_BUILD_TAGS := assets,noasm
endif

# Tags used for builds and tests on all architectures
COMMON_TAGS := sqlite_foreign_keys,sqlite_json

GO_TEST_ARGS := -tags '$(COMMON_TAGS),$(GO_TEST_TAGS)'
GO_BUILD_ARGS := -tags '$(COMMON_TAGS),$(GO_BUILD_TAGS)'

# Use default flags, but allow adding -gcflags "..." if desired. Eg, for debug
# builds, may want to use GCFLAGS="all=-N -l" in the build environment.
GCFLAGS ?=
ifneq ($(GCFLAGS),)
GO_BUILD_ARGS += -gcflags "$(GCFLAGS)"
endif

ifeq ($(OS), Windows_NT)
VERSION := $(shell git describe --exact-match --tags 2>nil)
else
VERSION := $(shell git describe --exact-match --tags 2>/dev/null)
endif
COMMIT := $(shell git rev-parse --short HEAD)

LDFLAGS := $(LDFLAGS) -X main.commit=$(COMMIT)
ifdef VERSION
LDFLAGS += -X main.version=$(VERSION)
endif

# Allow for `go test` to be swapped out by other tooling, i.e. `gotestsum`
GO_TEST_CMD=go test
# Allow for a subset of tests to be specified.
GO_TEST_PATHS=./...

# Test vars can be used by all recursive Makefiles
export PKG_CONFIG:=$(PWD)/scripts/pkg-config.sh
export GO_BUILD=env GO111MODULE=on go build $(GO_BUILD_ARGS) -ldflags "$(LDFLAGS)"
export GO_INSTALL=env GO111MODULE=on go install $(GO_BUILD_ARGS) -ldflags "$(LDFLAGS)"
export GO_TEST=env GOTRACEBACK=all GO111MODULE=on $(GO_TEST_CMD) $(GO_TEST_ARGS)
# Do not add GO111MODULE=on to the call to go generate so it doesn't pollute the environment.
export GO_GENERATE=go generate $(GO_BUILD_ARGS)
export GO_VET=env GO111MODULE=on go vet $(GO_TEST_ARGS)
export GO_RUN=env GO111MODULE=on go run $(GO_BUILD_ARGS)
export PATH := $(PWD)/bin/$(GOOS):$(PATH)

# # Top level Makefile for the entire project
# #
# # This Makefile encodes the "go generate" prerequisites ensuring that the proper tooling is installed and
# # that the generate steps are executed when their prerequisite files change.
# #
# # This Makefile follows a few conventions:
# #
# # * All cmds must be added to this top level Makefile.
# # * All binaries are placed in ./bin, its recommended to add this directory to your PATH.
# #
# export GOPATH=$(shell go env GOPATH)
# export GOOS=$(shell go env GOOS)
# export GOARCH=$(shell go env GOARCH)

# ifneq (,$(filter $(GOARCH),amd64 s390x))
# # Including the assets tag requires the UI to be built for compilation to succeed.
# # Don't force it for running tests.
# GO_TEST_TAGS :=
# GO_BUILD_TAGS := assets
# else
# # noasm needed to avoid a panic in Flux for non-amd64, non-s390x.
# GO_TEST_TAGS := noasm
# GO_BUILD_TAGS := assets,noasm
# endif

# # Tags used for builds and tests on all architectures
# COMMON_TAGS := sqlite_foreign_keys,sqlite_json

# GO_TEST_ARGS := -tags '$(COMMON_TAGS),$(GO_TEST_TAGS)'
# GO_BUILD_ARGS := -tags '$(COMMON_TAGS),$(GO_BUILD_TAGS)'

# # Use default flags, but allow adding -gcflags "..." if desired. Eg, for debug
# # builds, may want to use GCFLAGS="all=-N -l" in the build environment.
# GCFLAGS ?=
# ifneq ($(GCFLAGS),)
# GO_BUILD_ARGS += -gcflags "$(GCFLAGS)"
# endif

# ifeq ($(OS), Windows_NT)
# VERSION := $(shell git describe --exact-match --tags 2>nil)
# else
# VERSION := $(shell git describe --exact-match --tags 2>/dev/null)
# endif
# COMMIT := $(shell git rev-parse --short HEAD)

# LDFLAGS := $(LDFLAGS) -X main.commit=$(COMMIT)
# ifdef VERSION
# LDFLAGS += -X main.version=$(VERSION)
# endif

# # Allow for `go test` to be swapped out by other tooling, i.e. `gotestsum`
# GO_TEST_CMD=go test
# # Allow for a subset of tests to be specified.
# GO_TEST_PATHS=./...

# # Test vars can be used by all recursive Makefiles
# export PKG_CONFIG:=$(PWD)/scripts/pkg-config.sh
# export GO_BUILD=env GO111MODULE=on go build $(GO_BUILD_ARGS) -ldflags "$(LDFLAGS)"
# export GO_INSTALL=env GO111MODULE=on go install $(GO_BUILD_ARGS) -ldflags "$(LDFLAGS)"
# export GO_TEST=env GOTRACEBACK=all GO111MODULE=on $(GO_TEST_CMD) $(GO_TEST_ARGS)
# # Do not add GO111MODULE=on to the call to go generate so it doesn't pollute the environment.
# export GO_GENERATE=go generate $(GO_BUILD_ARGS)
# export GO_VET=env GO111MODULE=on go vet $(GO_TEST_ARGS)
# export GO_RUN=env GO111MODULE=on go run $(GO_BUILD_ARGS)
# export PATH := $(PWD)/bin/$(GOOS):$(PATH)


# All go source files
SOURCES := $(shell find . -name '*.go' -not -name '*_test.go') go.mod go.sum
# # All go source files
# SOURCES := $(shell find . -name '*.go' -not -name '*_test.go') go.mod go.sum

# All go source files excluding the vendored sources.
SOURCES_NO_VENDOR := $(shell find . -path ./vendor -prune -o -name "*.go" -not -name '*_test.go' -print)
# # All go source files excluding the vendored sources.
# SOURCES_NO_VENDOR := $(shell find . -path ./vendor -prune -o -name "*.go" -not -name '*_test.go' -print)

# List of binary cmds to build
CMDS := \
bin/$(GOOS)/influxd
# # List of binary cmds to build
# CMDS := \
# bin/$(GOOS)/influxd

all: generate $(CMDS)
# all: generate $(CMDS)

#
# Define targets for commands
#
bin/$(GOOS)/influxd: $(SOURCES)
$(GO_BUILD) -o $@ ./cmd/$(shell basename "$@")

influxd: bin/$(GOOS)/influxd

static/data/build: scripts/fetch-ui-assets.sh
./scripts/fetch-ui-assets.sh

static/data/swagger.json: scripts/fetch-swagger.sh
./scripts/fetch-swagger.sh

# static/static_gen.go is the output of go-bindata, embedding all assets used by the UI.
static/static_gen.go: static/data/build static/data/swagger.json
$(GO_GENERATE) ./static

#
# Define action only targets
#

fmt: $(SOURCES_NO_VENDOR)
./etc/fmt.sh
# #
# # Define targets for commands
# #
# bin/$(GOOS)/influxd: $(SOURCES)
# $(GO_BUILD) -o $@ ./cmd/$(shell basename "$@")

# influxd: bin/$(GOOS)/influxd

# static/data/build: scripts/fetch-ui-assets.sh
# ./scripts/fetch-ui-assets.sh

# static/data/swagger.json: scripts/fetch-swagger.sh
# ./scripts/fetch-swagger.sh

# # static/static_gen.go is the output of go-bindata, embedding all assets used by the UI.
# static/static_gen.go: static/data/build static/data/swagger.json
# $(GO_GENERATE) ./static

# #
# # Define action only targets
# #

# fmt: $(SOURCES_NO_VENDOR)
# ./etc/fmt.sh

checkfmt:
./etc/checkfmt.sh
$(GO_RUN) github.com/editorconfig-checker/editorconfig-checker/cmd/editorconfig-checker
# checkfmt:
# ./etc/checkfmt.sh
# $(GO_RUN) github.com/editorconfig-checker/editorconfig-checker/cmd/editorconfig-checker

tidy:
GO111MODULE=on go mod tidy
# tidy:
# GO111MODULE=on go mod tidy

checktidy:
./etc/checktidy.sh
# checktidy:
# ./etc/checktidy.sh

checkgenerate:
./etc/checkgenerate.sh
# checkgenerate:
# ./etc/checkgenerate.sh

checksqlmigrations:
./etc/check-sql-migrations.sh
# checksqlmigrations:
# ./etc/check-sql-migrations.sh

# generate-web-assets outputs all the files needed to link the UI to the back-end.
# Currently, none of these files are tracked by git.
generate-web-assets: static/static_gen.go
# # generate-web-assets outputs all the files needed to link the UI to the back-end.
# # Currently, none of these files are tracked by git.
# generate-web-assets: static/static_gen.go

# generate-sources outputs all the Go files generated from protobufs, tmpls, and other tooling.
# These files are tracked by git; CI will enforce that they are up-to-date.
generate-sources: protoc tmpl stringer goimports
$(GO_GENERATE) ./influxql/... ./models/... ./pkg/... ./storage/... ./tsdb/... ./v1/...
# # generate-sources outputs all the Go files generated from protobufs, tmpls, and other tooling.
# # These files are tracked by git; CI will enforce that they are up-to-date.
# generate-sources: protoc tmpl stringer goimports
# $(GO_GENERATE) ./influxql/... ./models/... ./pkg/... ./storage/... ./tsdb/... ./v1/...

generate: generate-web-assets generate-sources
# generate: generate-web-assets generate-sources

protoc:
$(GO_INSTALL) google.golang.org/protobuf/cmd/[email protected]
# protoc:
# $(GO_INSTALL) google.golang.org/protobuf/cmd/[email protected]

tmpl:
$(GO_INSTALL) github.com/benbjohnson/tmpl
# tmpl:
# $(GO_INSTALL) github.com/benbjohnson/tmpl

stringer:
$(GO_INSTALL) golang.org/x/tools/cmd/stringer
# stringer:
# $(GO_INSTALL) golang.org/x/tools/cmd/stringer

goimports:
$(GO_INSTALL) golang.org/x/tools/cmd/goimports
# goimports:
# $(GO_INSTALL) golang.org/x/tools/cmd/goimports

test-go:
$(GO_TEST) $(GO_TEST_PATHS)
# test-go:
# $(GO_TEST) $(GO_TEST_PATHS)

test-flux:
@./etc/test-flux.sh
# test-flux:
# @./etc/test-flux.sh

test-tls:
@./etc/test-tls.sh
# test-tls:
# @./etc/test-tls.sh

test-integration: GO_TAGS=integration
test-integration:
$(GO_TEST) -count=1 $(GO_TEST_PATHS)
# test-integration: GO_TAGS=integration
# test-integration:
# $(GO_TEST) -count=1 $(GO_TEST_PATHS)

test: test-go
# test: test-go

test-go-race:
$(GO_TEST) -v -race -count=1 $(GO_TEST_PATHS)
# test-go-race:
# $(GO_TEST) -v -race -count=1 $(GO_TEST_PATHS)

vet:
$(GO_VET) -v ./...
# vet:
# $(GO_VET) -v ./...

bench:
$(GO_TEST) -bench=. -run=^$$ ./...
# bench:
# $(GO_TEST) -bench=. -run=^$$ ./...

build: all
# build: all

pkg-config:
$(GO_INSTALL) github.com/influxdata/pkg-config
# pkg-config:
# $(GO_INSTALL) github.com/influxdata/pkg-config

clean:
$(RM) -r static/static_gen.go static/data
$(RM) -r bin
$(RM) -r dist
# clean:
# $(RM) -r static/static_gen.go static/data
# $(RM) -r bin
# $(RM) -r dist

# generate feature flags
flags:
$(GO_GENERATE) ./kit/feature
# # generate feature flags
# flags:
# $(GO_GENERATE) ./kit/feature

docker-image-influx:
@cp .gitignore .dockerignore
@docker image build -t influxdb:dev --target influx .
# docker-image-influx:
# @cp .gitignore .dockerignore
# @docker image build -t influxdb:dev --target influx .

dshell-image:
@cp .gitignore .dockerignore
@docker image build --build-arg "USERID=$(shell id -u)" -t influxdb:dshell --target dshell .
# dshell-image:
# @cp .gitignore .dockerignore
# @docker image build --build-arg "USERID=$(shell id -u)" -t influxdb:dshell --target dshell .

dshell: dshell-image
@docker container run --rm -p 8086:8086 -p 8080:8080 -u $(shell id -u) -it -v $(shell pwd):/code -w /code influxdb:dshell
# dshell: dshell-image
# @docker container run --rm -p 8086:8086 -p 8080:8080 -u $(shell id -u) -it -v $(shell pwd):/code -w /code influxdb:dshell

# .PHONY targets represent actions that do not create an actual file.
.PHONY: all $(SUBDIRS) run fmt checkfmt tidy checktidy checkgenerate test test-go test-go-race test-tls bench clean node_modules vet nightly dist protoc influxd libflux flags dshell dclean docker-image-flux docker-image-influx pkg-config
# # .PHONY targets represent actions that do not create an actual file.
# .PHONY: all $(SUBDIRS) run fmt checkfmt tidy checktidy checkgenerate test test-go test-go-race test-tls bench clean node_modules vet nightly dist protoc influxd libflux flags dshell dclean docker-image-flux docker-image-influx pkg-config
Binary file added felipecaputo.vscode-go-gvm-1.0.1.vsix
Binary file not shown.
Empty file.
Loading

0 comments on commit df3e696

Please sign in to comment.