From 2c8a1a2871c0a4b4555d3f124689327cafc402f1 Mon Sep 17 00:00:00 2001 From: Andrew Thornton Date: Sun, 4 Sep 2022 17:34:05 +0100 Subject: [PATCH 01/10] Move go-licenses to generate The go-licenses check introduced in #21034 is being run on make vendor and occassionally causes an empty go-licenses file if the vendors need to change. This should be moved to the generate task as it is a generated file. Ref #21034 Signed-off-by: Andrew Thornton --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index d1bfb2645f283..73180e59f0817 100644 --- a/Makefile +++ b/Makefile @@ -259,7 +259,7 @@ clean: fmt: @MISSPELL_PACKAGE=$(MISSPELL_PACKAGE) GOFUMPT_PACKAGE=$(GOFUMPT_PACKAGE) $(GO) run build/code-batch-process.go gitea-fmt -w '{file-list}' $(eval TEMPLATES := $(shell find templates -type f -name '*.tmpl')) - @# strip whitespace after '{{' and before `}}` unless there is only whitespace before it + @# strip whitespace after '{{' and before `}}` unless there is only whitespace before it @$(SED_INPLACE) -e 's/{{[ ]\{1,\}/{{/g' -e '/^[ ]\{1,\}}}/! s/[ ]\{1,\}}}/}}/g' $(TEMPLATES) .PHONY: vet @@ -398,7 +398,6 @@ unit-test-coverage: tidy: $(eval MIN_GO_VERSION := $(shell grep -Eo '^go\s+[0-9]+\.[0-9.]+' go.mod | cut -d' ' -f2)) $(GO) mod tidy -compat=$(MIN_GO_VERSION) - @$(MAKE) --no-print-directory assets/go-licenses.json .PHONY: vendor vendor: tidy @@ -709,6 +708,7 @@ backend: go-check generate $(EXECUTABLE) .PHONY: generate generate: $(TAGS_PREREQ) + @$(MAKE) --no-print-directory assets/go-licenses.json @echo "Running go generate..." @CC= GOOS= GOARCH= $(GO) generate -tags '$(TAGS)' $(GO_PACKAGES) From e7396aeaaab9a659f75334f8e6d863878a3fba82 Mon Sep 17 00:00:00 2001 From: Andrew Thornton Date: Sun, 4 Sep 2022 18:43:08 +0100 Subject: [PATCH 02/10] Only update the generated files if necessary Signed-off-by: Andrew Thornton --- modules/charset/ambiguous/generate.go | 11 +++++++++++ modules/charset/invisible/generate.go | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/modules/charset/ambiguous/generate.go b/modules/charset/ambiguous/generate.go index 43cdb217a79ac..8c8375a11026f 100644 --- a/modules/charset/ambiguous/generate.go +++ b/modules/charset/ambiguous/generate.go @@ -110,6 +110,17 @@ func runTemplate(t *template.Template, filename string, data interface{}) error verbosef("Bad source:\n%s", buf.String()) return fmt.Errorf("unable to format source: %w", err) } + + old, err := os.ReadFile(filename) + if err != nil && !os.IsNotExist(err) { + return fmt.Errorf("failed to read old file %s because %w", filename, err) + } else if err == nil { + if res := bytes.Compare(bs, old); res == 0 { + // files are the same don't rewrite it. + return nil + } + } + file, err := os.Create(filename) if err != nil { return fmt.Errorf("failed to create file %s because %w", filename, err) diff --git a/modules/charset/invisible/generate.go b/modules/charset/invisible/generate.go index 230ff0b832169..5990cb7d6dcf8 100644 --- a/modules/charset/invisible/generate.go +++ b/modules/charset/invisible/generate.go @@ -63,6 +63,17 @@ func runTemplate(t *template.Template, filename string, data interface{}) error verbosef("Bad source:\n%s", buf.String()) return fmt.Errorf("unable to format source: %w", err) } + + old, err := os.ReadFile(filename) + if err != nil && !os.IsNotExist(err) { + return fmt.Errorf("failed to read old file %s because %w", filename, err) + } else if err == nil { + if res := bytes.Compare(bs, old); res == 0 { + // files are the same don't rewrite it. + return nil + } + } + file, err := os.Create(filename) if err != nil { return fmt.Errorf("failed to create file %s because %w", filename, err) From 2aab7293dcc760fea8ce9eba49cdcd212def3731 Mon Sep 17 00:00:00 2001 From: Andrew Thornton Date: Sun, 4 Sep 2022 18:45:09 +0100 Subject: [PATCH 03/10] Separate out generate into a frontend and backend Make generate-swagger part of generate-frontend too Signed-off-by: Andrew Thornton --- Makefile | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 73180e59f0817..31f7ace93d921 100644 --- a/Makefile +++ b/Makefile @@ -278,7 +278,9 @@ TAGS_PREREQ := $(TAGS_EVIDENCE) endif .PHONY: generate-swagger -generate-swagger: +generate-swagger: $(SWAGGER_SPEC) + +$(SWAGGER_SPEC): $(GO_SOURCES) $(GO) run $(SWAGGER_PACKAGE) generate spec -x "$(SWAGGER_EXCLUDE)" -o './$(SWAGGER_SPEC)' $(SED_INPLACE) '$(SWAGGER_SPEC_S_TMPL)' './$(SWAGGER_SPEC)' $(SED_INPLACE) $(SWAGGER_NEWLINE_COMMAND) './$(SWAGGER_SPEC)' @@ -701,17 +703,24 @@ install: $(wildcard *.go) build: frontend backend .PHONY: frontend -frontend: $(WEBPACK_DEST) +frontend: generate-frontend $(WEBPACK_DEST) .PHONY: backend -backend: go-check generate $(EXECUTABLE) +backend: go-check generate-backend $(EXECUTABLE) +# We generate the backend before the frontend in case we in future we want to generate things in the frontend from generated files in backend .PHONY: generate -generate: $(TAGS_PREREQ) - @$(MAKE) --no-print-directory assets/go-licenses.json +generate: generate-backend generate-frontend + +.PHONY: generate-backend +generate-backend: $(TAGS_PREREQ) @echo "Running go generate..." @CC= GOOS= GOARCH= $(GO) generate -tags '$(TAGS)' $(GO_PACKAGES) +.PHONY: generate-frontend +generate-frontend: $(TAGS_PREREQ) generate-backend generate-swagger go-licenses + + $(EXECUTABLE): $(GO_SOURCES) $(TAGS_PREREQ) CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' -o $@ From 055e3d238b9e0cc42f8fa42223917d51007c13f3 Mon Sep 17 00:00:00 2001 From: Andrew Thornton Date: Sun, 4 Sep 2022 18:45:43 +0100 Subject: [PATCH 04/10] commit the results of running fmt Signed-off-by: Andrew Thornton --- services/migrations/dump.go | 1 - templates/repo/sub_menu.tmpl | 2 +- tests/integration/compare_test.go | 1 + tests/integration/cors_test.go | 1 + tests/integration/nonascii_branches_test.go | 1 + tests/integration/pull_compare_test.go | 1 + tests/integration/pull_create_test.go | 1 + tests/integration/repo_commits_search_test.go | 1 + tests/integration/view_test.go | 1 + 9 files changed, 8 insertions(+), 2 deletions(-) diff --git a/services/migrations/dump.go b/services/migrations/dump.go index 2dc35b9d9fbef..188f2775e07b0 100644 --- a/services/migrations/dump.go +++ b/services/migrations/dump.go @@ -26,7 +26,6 @@ import ( "code.gitea.io/gitea/modules/structs" "github.com/google/uuid" - "gopkg.in/yaml.v2" ) diff --git a/templates/repo/sub_menu.tmpl b/templates/repo/sub_menu.tmpl index 7ba234dccfad2..e63cb50df1bb8 100644 --- a/templates/repo/sub_menu.tmpl +++ b/templates/repo/sub_menu.tmpl @@ -39,7 +39,7 @@ {{range .LanguageStats}} -
 
+
 
{{end}}
{{end}} diff --git a/tests/integration/compare_test.go b/tests/integration/compare_test.go index 7642109dd9573..134ae520a8762 100644 --- a/tests/integration/compare_test.go +++ b/tests/integration/compare_test.go @@ -10,6 +10,7 @@ import ( "testing" "code.gitea.io/gitea/tests" + "github.com/stretchr/testify/assert" ) diff --git a/tests/integration/cors_test.go b/tests/integration/cors_test.go index f5318016276f3..c702c62e48df6 100644 --- a/tests/integration/cors_test.go +++ b/tests/integration/cors_test.go @@ -9,6 +9,7 @@ import ( "testing" "code.gitea.io/gitea/tests" + "github.com/stretchr/testify/assert" ) diff --git a/tests/integration/nonascii_branches_test.go b/tests/integration/nonascii_branches_test.go index ae69506f1b563..638b9a61643e9 100644 --- a/tests/integration/nonascii_branches_test.go +++ b/tests/integration/nonascii_branches_test.go @@ -11,6 +11,7 @@ import ( "testing" "code.gitea.io/gitea/tests" + "github.com/stretchr/testify/assert" ) diff --git a/tests/integration/pull_compare_test.go b/tests/integration/pull_compare_test.go index 7934b6e77c05a..60e69e97eb3f2 100644 --- a/tests/integration/pull_compare_test.go +++ b/tests/integration/pull_compare_test.go @@ -9,6 +9,7 @@ import ( "testing" "code.gitea.io/gitea/tests" + "github.com/stretchr/testify/assert" ) diff --git a/tests/integration/pull_create_test.go b/tests/integration/pull_create_test.go index 24c73ab4e9c9b..b5cb7877bc9d8 100644 --- a/tests/integration/pull_create_test.go +++ b/tests/integration/pull_create_test.go @@ -13,6 +13,7 @@ import ( "testing" "code.gitea.io/gitea/tests" + "github.com/stretchr/testify/assert" ) diff --git a/tests/integration/repo_commits_search_test.go b/tests/integration/repo_commits_search_test.go index 75e692f0abdc3..83f30758a419b 100644 --- a/tests/integration/repo_commits_search_test.go +++ b/tests/integration/repo_commits_search_test.go @@ -11,6 +11,7 @@ import ( "testing" "code.gitea.io/gitea/tests" + "github.com/stretchr/testify/assert" ) diff --git a/tests/integration/view_test.go b/tests/integration/view_test.go index 63544dbe35195..f55afb038c980 100644 --- a/tests/integration/view_test.go +++ b/tests/integration/view_test.go @@ -9,6 +9,7 @@ import ( "testing" "code.gitea.io/gitea/tests" + "github.com/stretchr/testify/assert" ) From fe0218edefdb9c7bf4eabf0da4485d2dfb2615db Mon Sep 17 00:00:00 2001 From: Andrew Thornton Date: Sun, 4 Sep 2022 20:32:14 +0100 Subject: [PATCH 05/10] OK we cannot have the swagger be in the frontend generation so move it to backend Signed-off-by: Andrew Thornton --- Makefile | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 31f7ace93d921..f47a30bf895d8 100644 --- a/Makefile +++ b/Makefile @@ -111,6 +111,8 @@ WEBPACK_DEST_ENTRIES := public/js public/css public/fonts public/img/webpack pub BINDATA_DEST := modules/public/bindata.go modules/options/bindata.go modules/templates/bindata.go BINDATA_HASH := $(addsuffix .hash,$(BINDATA_DEST)) +GENERATED_GO_DEST := modules/charset/invisible_gen.go modules/charset/ambiguous_gen.go + SVG_DEST_DIR := public/img/svg AIR_TMP_DIR := .air @@ -130,9 +132,11 @@ GO_DIRS := cmd tests models modules routers build services tools GO_SOURCES := $(wildcard *.go) GO_SOURCES += $(shell find $(GO_DIRS) -type f -name "*.go" -not -path modules/options/bindata.go -not -path modules/public/bindata.go -not -path modules/templates/bindata.go) +GO_SOURCES += $(GENERATED_GO_DEST) ifeq ($(filter $(TAGS_SPLIT),bindata),bindata) GO_SOURCES += $(BINDATA_DEST) + GENERATED_GO_DEST += $(BINDATA_DEST) endif # Force installation of playwright dependencies by setting this flag @@ -713,13 +717,14 @@ backend: go-check generate-backend $(EXECUTABLE) generate: generate-backend generate-frontend .PHONY: generate-backend -generate-backend: $(TAGS_PREREQ) +generate-backend: $(TAGS_PREREQ) generate-go generate-swagger + +generate-go: $(TAGS_PREREQ) @echo "Running go generate..." @CC= GOOS= GOARCH= $(GO) generate -tags '$(TAGS)' $(GO_PACKAGES) .PHONY: generate-frontend -generate-frontend: $(TAGS_PREREQ) generate-backend generate-swagger go-licenses - +generate-frontend: $(TAGS_PREREQ) go-licenses $(EXECUTABLE): $(GO_SOURCES) $(TAGS_PREREQ) CGO_CFLAGS="$(CGO_CFLAGS)" $(GO) build $(GOFLAGS) $(EXTRA_GOFLAGS) -tags '$(TAGS)' -ldflags '-s -w $(LDFLAGS)' -o $@ From 2905adfb0ccd0b5af9fea00277f4f4de49f5cfb3 Mon Sep 17 00:00:00 2001 From: Andrew Thornton Date: Sun, 4 Sep 2022 20:45:27 +0100 Subject: [PATCH 06/10] do not rely on bindata for generate-swagger Signed-off-by: Andrew Thornton --- Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index f47a30bf895d8..db118f6dc8220 100644 --- a/Makefile +++ b/Makefile @@ -133,6 +133,7 @@ GO_DIRS := cmd tests models modules routers build services tools GO_SOURCES := $(wildcard *.go) GO_SOURCES += $(shell find $(GO_DIRS) -type f -name "*.go" -not -path modules/options/bindata.go -not -path modules/public/bindata.go -not -path modules/templates/bindata.go) GO_SOURCES += $(GENERATED_GO_DEST) +GO_SOURCES_NO_BINDATA := $(GO_SOURCES) ifeq ($(filter $(TAGS_SPLIT),bindata),bindata) GO_SOURCES += $(BINDATA_DEST) @@ -284,7 +285,7 @@ endif .PHONY: generate-swagger generate-swagger: $(SWAGGER_SPEC) -$(SWAGGER_SPEC): $(GO_SOURCES) +$(SWAGGER_SPEC): $(GO_SOURCES_NO_BINDATA) $(GO) run $(SWAGGER_PACKAGE) generate spec -x "$(SWAGGER_EXCLUDE)" -o './$(SWAGGER_SPEC)' $(SED_INPLACE) '$(SWAGGER_SPEC_S_TMPL)' './$(SWAGGER_SPEC)' $(SED_INPLACE) $(SWAGGER_NEWLINE_COMMAND) './$(SWAGGER_SPEC)' From b824367473633c9f7c18087479239c81f915d853 Mon Sep 17 00:00:00 2001 From: zeripath Date: Sun, 4 Sep 2022 23:09:06 +0100 Subject: [PATCH 07/10] Update modules/charset/invisible/generate.go Co-authored-by: delvh --- modules/charset/invisible/generate.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/charset/invisible/generate.go b/modules/charset/invisible/generate.go index 5990cb7d6dcf8..34c96ebb70f3f 100644 --- a/modules/charset/invisible/generate.go +++ b/modules/charset/invisible/generate.go @@ -68,7 +68,7 @@ func runTemplate(t *template.Template, filename string, data interface{}) error if err != nil && !os.IsNotExist(err) { return fmt.Errorf("failed to read old file %s because %w", filename, err) } else if err == nil { - if res := bytes.Compare(bs, old); res == 0 { + if bytes.Compare(bs, old) == 0 { // files are the same don't rewrite it. return nil } From be6bc12c17e7b93d5aac787888e87cf5a030ac7f Mon Sep 17 00:00:00 2001 From: zeripath Date: Sun, 4 Sep 2022 23:09:18 +0100 Subject: [PATCH 08/10] Update modules/charset/ambiguous/generate.go Co-authored-by: delvh --- modules/charset/ambiguous/generate.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/charset/ambiguous/generate.go b/modules/charset/ambiguous/generate.go index 8c8375a11026f..ae1dcbf729f31 100644 --- a/modules/charset/ambiguous/generate.go +++ b/modules/charset/ambiguous/generate.go @@ -115,7 +115,7 @@ func runTemplate(t *template.Template, filename string, data interface{}) error if err != nil && !os.IsNotExist(err) { return fmt.Errorf("failed to read old file %s because %w", filename, err) } else if err == nil { - if res := bytes.Compare(bs, old); res == 0 { + if bytes.Compare(bs, old) == 0 { // files are the same don't rewrite it. return nil } From 357cce5f4a57cae9d1a89fa5be8262eadb39651f Mon Sep 17 00:00:00 2001 From: zeripath Date: Sun, 4 Sep 2022 23:42:26 +0100 Subject: [PATCH 09/10] Apply suggestions from code review --- modules/charset/ambiguous/generate.go | 2 +- modules/charset/invisible/generate.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/charset/ambiguous/generate.go b/modules/charset/ambiguous/generate.go index ae1dcbf729f31..7dd2821aae257 100644 --- a/modules/charset/ambiguous/generate.go +++ b/modules/charset/ambiguous/generate.go @@ -115,7 +115,7 @@ func runTemplate(t *template.Template, filename string, data interface{}) error if err != nil && !os.IsNotExist(err) { return fmt.Errorf("failed to read old file %s because %w", filename, err) } else if err == nil { - if bytes.Compare(bs, old) == 0 { + if bytes.Equal(bs, old) { // files are the same don't rewrite it. return nil } diff --git a/modules/charset/invisible/generate.go b/modules/charset/invisible/generate.go index 34c96ebb70f3f..39eddd58dd5a2 100644 --- a/modules/charset/invisible/generate.go +++ b/modules/charset/invisible/generate.go @@ -68,7 +68,7 @@ func runTemplate(t *template.Template, filename string, data interface{}) error if err != nil && !os.IsNotExist(err) { return fmt.Errorf("failed to read old file %s because %w", filename, err) } else if err == nil { - if bytes.Compare(bs, old) == 0 { + if bytes.Equal(bs, old) { // files are the same don't rewrite it. return nil } From 035e698a2bf4ba77584c4e0e9d1ff22391896b8d Mon Sep 17 00:00:00 2001 From: zeripath Date: Mon, 5 Sep 2022 03:03:36 +0100 Subject: [PATCH 10/10] Update Makefile --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index db118f6dc8220..ebd108d99cc3b 100644 --- a/Makefile +++ b/Makefile @@ -718,7 +718,7 @@ backend: go-check generate-backend $(EXECUTABLE) generate: generate-backend generate-frontend .PHONY: generate-backend -generate-backend: $(TAGS_PREREQ) generate-go generate-swagger +generate-backend: $(TAGS_PREREQ) generate-go generate-go: $(TAGS_PREREQ) @echo "Running go generate..."