Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '_support/makegen.go')
-rw-r--r--_support/makegen.go285
1 files changed, 7 insertions, 278 deletions
diff --git a/_support/makegen.go b/_support/makegen.go
index 1ffaa80d8..3a076317a 100644
--- a/_support/makegen.go
+++ b/_support/makegen.go
@@ -309,281 +309,10 @@ func (gm *gitalyMake) ProtoCSHA256() string {
return protoCDownload[runtime.GOOS+"/"+runtime.GOARCH].sha256
}
-var templateText = `
-# _build/Makefile
-#
-# This is an auto-generated Makefile. Do not edit. Do not invoke
-# directly, use ../Makefile instead. This file is generated using
-# makegen.go.
-#
-
-# These variables may be overridden at runtime by top-level make
-PREFIX ?= /usr/local
-INSTALL_DEST_DIR := $(DESTDIR)$(PREFIX)/bin/
-BUNDLE_FLAGS ?= --deployment
-ASSEMBLY_ROOT ?= {{ .BuildDir }}/assembly
-BUILD_TAGS := tracer_static tracer_static_jaeger
-
-unexport GOROOT
-export GOBIN = {{ .BuildDir }}/bin
-export GO111MODULE=on
-export GOPROXY ?= https://proxy.golang.org
-
-.NOTPARALLEL:
-
-.PHONY: all
-all: build
-
-{{ .Git2GoVendorDir }}/.ok:
- rm -rf {{ .Git2GoVendorDir }}
- mkdir -p {{ .Git2GoVendorDir }}
-
- cd {{ .Git2GoVendorDir }} && curl -L -o libgit2.tar.gz https://github.com/libgit2/libgit2/archive/v{{ .LibGit2Version }}.tar.gz
- cd {{ .Git2GoVendorDir }} && echo '{{ .LibGit2SHA }} libgit2.tar.gz' | shasum -a256 -c -
- cd {{ .Git2GoVendorDir }} && tar -xvf libgit2.tar.gz
- cd {{ .Git2GoVendorDir }} && mv libgit2-{{ .LibGit2Version }} libgit2
-
- mkdir -p {{ .Git2GoVendorDir }}/libgit2/build
- mkdir -p {{ .Git2GoVendorDir }}/libgit2/install/lib
- cd {{ .Git2GoVendorDir }}/libgit2/build && cmake -DTHREADSAFE=ON -DBUILD_CLAR=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_C_FLAGS=-fPIC -DCMAKE_BUILD_TYPE="RelWithDebInfo" -DCMAKE_INSTALL_PREFIX=../install ..
- cd {{ .Git2GoVendorDir }}/libgit2/build && cmake --build .
-
- touch $@
-
-.PHONY: build-gitaly-remote
-build-gitaly-remote: {{ .Git2GoVendorDir }}/.ok
- cd {{ .SourceDir }} && go install {{ .GoLdFlags }} -tags "$(BUILD_TAGS) static" {{ .GitalyRemotePackage }}
-
-.PHONY: test-gitaly-remote
-test-gitaly-remote: prepare-tests {{ .Git2GoVendorDir }}/.ok
- @go test -tags "$(BUILD_TAGS) static" -count=1 {{ .GitalyRemotePackage }}
-
-.PHONY: build
-build: ../.ruby-bundle
- # go install
- @cd {{ .SourceDir }} && go install {{ .GoLdFlags }} -tags "$(BUILD_TAGS)" {{ join .CommandPackages " " }}
-
-# This file is used by Omnibus and CNG to skip the "bundle install"
-# step. Both Omnibus and CNG assume it is in the Gitaly root, not in
-# _build. Hence the '../' in front.
-../.ruby-bundle: {{ .GitalyRubyDir }}/Gemfile.lock {{ .GitalyRubyDir }}/Gemfile
- cd {{ .GitalyRubyDir }} && bundle config # for debugging
- cd {{ .GitalyRubyDir }} && bundle install $(BUNDLE_FLAGS)
- touch $@
-
-.PHONY: install
-install: build
- mkdir -p $(INSTALL_DEST_DIR)
- cd bin && install {{ join .Commands " " }} $(INSTALL_DEST_DIR)
-
-.PHONY: force-ruby-bundle
-force-ruby-bundle:
- rm -f ../.ruby-bundle
-
-# Assembles all runtime components into a directory
-# Used by the GDK: run 'make assemble ASSEMBLY_ROOT=.../gitaly'
-.PHONY: assemble
-assemble: force-ruby-bundle build assemble-internal
-
-# assemble-internal does not force 'bundle install' to run again
-.PHONY: assemble-internal
-assemble-internal: assemble-ruby assemble-go
-
-.PHONY: assemble-go
-assemble-go: build
- rm -rf $(ASSEMBLY_ROOT)/bin
- mkdir -p $(ASSEMBLY_ROOT)/bin
- cd bin && install {{ join .Commands " " }} $(ASSEMBLY_ROOT)/bin
-
-.PHONY: assemble-ruby
-assemble-ruby:
- mkdir -p $(ASSEMBLY_ROOT)
- rm -rf {{ .GitalyRubyDir }}/tmp {{ .GitlabShellDir }}/tmp
- mkdir -p $(ASSEMBLY_ROOT)/ruby/
- rsync -a --delete {{ .GitalyRubyDir }}/ $(ASSEMBLY_ROOT)/ruby/
- rm -rf $(ASSEMBLY_ROOT)/ruby/spec $(ASSEMBLY_ROOT)/{{ .GitlabShellRelDir }}/spec $(ASSEMBLY_ROOT)/{{ .GitlabShellRelDir }}/gitlab-shell.log
-
-binaries: assemble
- @if [ $$(uname -m) != 'x86_64' ]; then echo Incorrect architecture for build: $(uname -m); exit 1; fi
- @cd $(ASSEMBLY_ROOT) && shasum -a 256 bin/* | tee checksums.sha256.txt
-
-{{ .TestRepo }}:
- git clone --bare --quiet https://gitlab.com/gitlab-org/gitlab-test.git $@
- # Git notes aren't fetched by default with git clone
- git -C $@ fetch origin refs/notes/*:refs/notes/*
- rm -rf $@/refs
- mkdir -p $@/refs/heads $@/refs/tags
- cp {{ .SourceDir }}/_support/gitlab-test.git-packed-refs $@/packed-refs
- git -C $@ fsck --no-progress
-
-{{ .GitTestRepo }}:
- git clone --bare --quiet https://gitlab.com/gitlab-org/gitlab-git-test.git $@
- rm -rf $@/refs
- mkdir -p $@/refs/heads $@/refs/tags
- cp {{ .SourceDir }}/_support/gitlab-git-test.git-packed-refs $@/packed-refs
- git -C $@ fsck --no-progress
-
-.PHONY: prepare-tests
-prepare-tests: {{ .GitlabShellDir }}/config.yml {{ .TestRepo }} {{ .GitTestRepo }} ../.ruby-bundle
-
-{{ .GitlabShellDir }}/config.yml: {{ .GitlabShellDir }}/config.yml.example
- cp $< $@
-
-.PHONY: test
-test: test-go rspec rspec-gitlab-shell
-
-.PHONY: test-go
-test-go: prepare-tests
- @cd {{ .SourceDir }} && go test -tags "$(BUILD_TAGS)" -count=1 {{ join .AllPackages " " }} # count=1 bypasses go 1.10 test caching
-
-.PHONY: test-with-proxies
-test-with-proxies: prepare-tests
- @cd {{ .SourceDir }} &&\
- go test -tags "$(BUILD_TAGS)" -count=1 -exec {{ .SourceDir }}/_support/bad-proxies {{ .Pkg }}/internal/rubyserver/
-
-.PHONY: race-go
-race-go: prepare-tests
- @cd {{ .SourceDir }} && go test -tags "$(BUILD_TAGS)" -race {{ join .AllPackages " " }}
-
-.PHONY: rspec
-rspec: assemble-go prepare-tests
- cd {{ .GitalyRubyDir }} && bundle exec rspec
-
-.PHONY: rspec-gitlab-shell
-rspec-gitlab-shell: {{ .GitlabShellDir }}/config.yml assemble-go prepare-tests
- # rspec in {{ .GitlabShellRelDir }}
- @cd {{ .GitalyRubyDir }} && bundle exec bin/ruby-cd {{ .GitlabShellDir }} rspec
-
-.PHONY: verify
-verify: check-mod-tidy lint check-formatting staticcheck notice-up-to-date check-proto rubocop
-
-.PHONY: check-mod-tidy
-check-mod-tidy:
- # check-mod-tidy
- @cd {{ .SourceDir }} && _support/check-mod-tidy
-
-.PHONY: lint
-lint: {{ .GoLint }}
- # golint
- @cd {{ .SourceDir }} && go run _support/lint.go
-
-{{ .GoLint }}:
- go get golang.org/x/lint/golint@959b441ac422379a43da2230f62be024250818b0
-
-.PHONY: check-formatting
-check-formatting: {{ .GoImports }}
- # goimports
- @cd {{ .SourceDir }} && goimports -e -l {{ join .GoFiles " " }} | awk '{ print } END { if(NR>0) { print "Formatting error, run make format"; exit(1) } }'
-
-{{ .GoImports }}:
- go get golang.org/x/tools/cmd/goimports@2538eef75904eff384a2551359968e40c207d9d2
-
-.PHONY: format
-format: {{ .GoImports }}
- # In addition to fixing imports, goimports also formats your code in the same style as gofmt
- # so it can be used as a replacement.
- @cd {{ .SourceDir }} && goimports -w -l {{ join .GoFiles " " }}
-
-.PHONY: staticcheck
-staticcheck: {{ .StaticCheck }}
- # staticcheck
- @cd {{ .SourceDir }} && {{ .StaticCheck }} -tags "$(BUILD_TAGS) static" {{ join .AllPackages " " }}
-
-# Install staticcheck
-{{ .StaticCheck }}:
- go get honnef.co/go/tools/cmd/staticcheck@95959eaf5e3c41c66151dcfd91779616b84077a8
-
-{{ .GoVendor }}:
- go get github.com/kardianos/govendor@e07957427183a9892f35634ffc9ea48dedc6bbb4
-
-.PHONY: notice-up-to-date
-notice-up-to-date: notice-tmp
- # notice-up-to-date
- @(cmp {{ .BuildDir }}/NOTICE {{ .SourceDir }}/NOTICE) || (echo >&2 "NOTICE requires update: 'make notice'" && false)
-
-.PHONY: notice
-notice: notice-tmp
- mv {{ .BuildDir }}/NOTICE {{ .SourceDir }}/NOTICE
-
-.PHONY: notice-tmp
-notice-tmp: {{ .GoVendor }} clean-ruby-vendor-go
- rm -rf {{ .SourceDir }}/vendor
- cd {{ .SourceDir }} && go mod vendor
- cd {{ .GopathSourceDir }} && env GOPATH={{ .BuildDir }} GO111MODULE=off govendor license -template _support/notice.template -o {{ .BuildDir }}/NOTICE
-
-.PHONY: clean-ruby-vendor-go
-clean-ruby-vendor-go:
- cd {{ .SourceDir }} && mkdir -p ruby/vendor && find ruby/vendor -type f -name '*.go' -delete
-
-.PHONY: check-proto
-check-proto: proto no-changes
-
-.PHONY: rubocop
-rubocop: ../.ruby-bundle
- cd {{ .GitalyRubyDir }} && bundle exec rubocop --parallel
-
-.PHONY: cover
-cover: prepare-tests {{ .GoCovMerge }}
- @echo "NOTE: make cover does not exit 1 on failure, don't use it to check for tests success!"
- mkdir -p "{{ .CoverageDir }}"
- rm -f {{ .CoverageDir }}/*.out "{{ .CoverageDir }}/all.merged" "{{ .CoverageDir }}/all.html"
- @cd {{ .SourceDir }} && go run _support/test-cover-parallel.go {{ .CoverageDir }} {{ join .AllPackages " " }}
- {{ .GoCovMerge }} {{ .CoverageDir }}/*.out > "{{ .CoverageDir }}/all.merged"
- @cd {{ .SourceDir }} && go tool cover -html "{{ .CoverageDir }}/all.merged" -o "{{ .CoverageDir }}/all.html"
- @echo ""
- @echo "=====> Total test coverage: <====="
- @echo ""
- @@cd {{ .SourceDir }} && go tool cover -func "{{ .CoverageDir }}/all.merged"
-
-{{ .GoCovMerge }}:
- go get github.com/wadey/gocovmerge@b5bfa59ec0adc420475f97f89b58045c721d761c
-
-.PHONY: docker
-docker:
- rm -rf docker/
- mkdir -p docker/bin/
- rm -rf {{ .GitalyRubyDir }}/tmp
- cp -r {{ .GitalyRubyDir }} docker/ruby
- rm -rf docker/ruby/vendor/bundle
-{{ $pkg := .Pkg }}
-{{ $goLdFlags := .GoLdFlags }}
-{{ range $cmd := .Commands }}
- GOOS=linux GOARCH=amd64 go build -tags "$(BUILD_TAGS)" {{ $goLdFlags }} -o "docker/bin/{{ $cmd }}" {{ $pkg }}/cmd/{{ $cmd }}
-{{ end }}
- cp {{ .SourceDir }}/Dockerfile docker/
- docker build -t gitlab/gitaly:{{ .VersionPrefixed }} -t gitlab/gitaly:latest docker/
-
-.PHONY: proto
-proto: {{ .ProtoC }} {{ .ProtoCGenGo }} {{ .ProtoCGenGitaly }} {{ .GrpcToolsRuby }}
- mkdir -p {{ .SourceDir }}/proto/go/gitalypb
- rm -rf {{ .SourceDir }}/proto/go/gitalypb/*.pb.go
- cd {{ .SourceDir }} && {{ .ProtoC }} --gitaly_out=proto_dir=./proto,gitalypb_dir=./proto/go/gitalypb:. --go_out=paths=source_relative,plugins=grpc:./proto/go/gitalypb -I./proto ./proto/*.proto
- cd {{ .SourceDir }} && _support/generate-proto-ruby
-
-{{ .ProtoC }}: {{ .BuildDir }}/protoc.zip
- mkdir -p {{ .BuildDir }}/protoc
- cd {{ .BuildDir }}/protoc && unzip {{ .BuildDir }}/protoc.zip
- touch $@
-
-{{ .BuildDir }}/protoc.zip:
- curl -o $@.tmp --silent -L {{ .ProtoCURL }}
- printf '{{ .ProtoCSHA256 }} $@.tmp' | shasum -a256 -c -
- mv $@.tmp $@
-
-{{ .ProtoCGenGo }}:
- go get github.com/golang/protobuf/protoc-gen-go@v1.3.2
-
-{{ .ProtoCGenGitaly }}:
- # Todo fix protoc-gen-gitaly versioning
- go install gitlab.com/gitlab-org/gitaly-proto/go/internal/cmd/protoc-gen-gitaly
-
-{{ .GrpcToolsRuby }}:
- gem install --bindir {{ .BuildDir }}/bin -v 1.0.1 grpc-tools
-
-no-changes:
- # looking for changed files
- @cd {{ .SourceDir }} && git status --porcelain | awk '{ print } END { if (NR > 0) { exit 1 } }'
-
-smoke-test: all rspec
- @cd {{ .SourceDir }} && go test ./internal/rubyserver
-`
+var templateText = func() string {
+ contents, err := ioutil.ReadFile("../_support/Makefile.template")
+ if err != nil {
+ panic(err)
+ }
+ return string(contents)
+}()