From ba57780cff4b239dd3410b13cd31204b2f3d8e15 Mon Sep 17 00:00:00 2001 From: Daniel Glinka Date: Sun, 6 Feb 2022 21:40:22 +0000 Subject: [PATCH 1/7] Add dummy files to preserve vendor directories --- imgui/dummy.go | 1 + imgui/misc/freetype/dummy.go | 1 + update_imgui.sh | 2 ++ wrapper/dummy.go | 1 + wrapper_cgo_hack.go | 20 ++++++++++++++++++++ 5 files changed, 25 insertions(+) create mode 100644 imgui/dummy.go create mode 100644 imgui/misc/freetype/dummy.go create mode 100644 wrapper/dummy.go create mode 100644 wrapper_cgo_hack.go diff --git a/imgui/dummy.go b/imgui/dummy.go new file mode 100644 index 00000000..b50c1090 --- /dev/null +++ b/imgui/dummy.go @@ -0,0 +1 @@ +package dummyimgui diff --git a/imgui/misc/freetype/dummy.go b/imgui/misc/freetype/dummy.go new file mode 100644 index 00000000..e46bee09 --- /dev/null +++ b/imgui/misc/freetype/dummy.go @@ -0,0 +1 @@ +package dummyfreetype diff --git a/update_imgui.sh b/update_imgui.sh index e459533e..c64263d3 100755 --- a/update_imgui.sh +++ b/update_imgui.sh @@ -25,10 +25,12 @@ rm -rf $DEST/* echo "Copying files" # Copy core files cp $TMP_IMGUI/*.{h,cpp} $DEST/ +echo "package dummy${DEST}" > $DEST/dummy.go # Copy freetype mkdir -p $DEST/misc/freetype cp $TMP_IMGUI/misc/freetype/*.{h,cpp} $DEST/misc/freetype +echo "package dummyfreetype" > $DEST/misc/freetype/dummy.go # Copy license cp $TMP_IMGUI/LICENSE.txt _licenses/imgui-LICENSE.txt diff --git a/wrapper/dummy.go b/wrapper/dummy.go new file mode 100644 index 00000000..d5eb0c39 --- /dev/null +++ b/wrapper/dummy.go @@ -0,0 +1 @@ +package dummywrapper diff --git a/wrapper_cgo_hack.go b/wrapper_cgo_hack.go new file mode 100644 index 00000000..43cccaa2 --- /dev/null +++ b/wrapper_cgo_hack.go @@ -0,0 +1,20 @@ +// +build required + +package imgui + +// This file exists purely to prevent the golang toolchain from stripping +// away the c source directories and files when `go mod vendor` is used +// to populate a `vendor/` directory of a project depending on `imgui-go`. +// https://github.com/golang/go/issues/26366 +// +// How it works: +// - every directory which only includes c source files receives a dummy.go file. +// - every directory we want to preserve is included here as a _ import. +// - this file is given a build to exclude it from the regular build. + +import ( + // Prevent go tooling from stripping out the c source files. + _ "github.com/inkyblackness/imgui-go/v4/imgui" + _ "github.com/inkyblackness/imgui-go/v4/wrapper" + _ "github.com/inkyblackness/imgui-go/v4/imgui/misc/freetype" +) From 56f04d6cd88d7e766b4f4d6712cb94eee1611327 Mon Sep 17 00:00:00 2001 From: Daniel Glinka Date: Mon, 7 Feb 2022 18:03:01 +0000 Subject: [PATCH 2/7] Rename dummy to govendorkeep --- imgui/dummy.go | 1 - imgui/govendorkeep.go | 1 + imgui/misc/freetype/dummy.go | 1 - imgui/misc/freetype/govendorkeep.go | 1 + update_imgui.sh | 4 ++-- wrapper/dummy.go | 1 - wrapper/govendorkeep.go | 1 + 7 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 imgui/dummy.go create mode 100644 imgui/govendorkeep.go delete mode 100644 imgui/misc/freetype/dummy.go create mode 100644 imgui/misc/freetype/govendorkeep.go delete mode 100644 wrapper/dummy.go create mode 100644 wrapper/govendorkeep.go diff --git a/imgui/dummy.go b/imgui/dummy.go deleted file mode 100644 index b50c1090..00000000 --- a/imgui/dummy.go +++ /dev/null @@ -1 +0,0 @@ -package dummyimgui diff --git a/imgui/govendorkeep.go b/imgui/govendorkeep.go new file mode 100644 index 00000000..e27122df --- /dev/null +++ b/imgui/govendorkeep.go @@ -0,0 +1 @@ +package cgoimgui diff --git a/imgui/misc/freetype/dummy.go b/imgui/misc/freetype/dummy.go deleted file mode 100644 index e46bee09..00000000 --- a/imgui/misc/freetype/dummy.go +++ /dev/null @@ -1 +0,0 @@ -package dummyfreetype diff --git a/imgui/misc/freetype/govendorkeep.go b/imgui/misc/freetype/govendorkeep.go new file mode 100644 index 00000000..e16489f2 --- /dev/null +++ b/imgui/misc/freetype/govendorkeep.go @@ -0,0 +1 @@ +package cgofreetype diff --git a/update_imgui.sh b/update_imgui.sh index c64263d3..2e340917 100755 --- a/update_imgui.sh +++ b/update_imgui.sh @@ -25,12 +25,12 @@ rm -rf $DEST/* echo "Copying files" # Copy core files cp $TMP_IMGUI/*.{h,cpp} $DEST/ -echo "package dummy${DEST}" > $DEST/dummy.go +echo "package cgo${DEST}" > $DEST/govendorkeep.go # Copy freetype mkdir -p $DEST/misc/freetype cp $TMP_IMGUI/misc/freetype/*.{h,cpp} $DEST/misc/freetype -echo "package dummyfreetype" > $DEST/misc/freetype/dummy.go +echo "package cgofreetype" > $DEST/misc/freetype/govendorkeep.go # Copy license cp $TMP_IMGUI/LICENSE.txt _licenses/imgui-LICENSE.txt diff --git a/wrapper/dummy.go b/wrapper/dummy.go deleted file mode 100644 index d5eb0c39..00000000 --- a/wrapper/dummy.go +++ /dev/null @@ -1 +0,0 @@ -package dummywrapper diff --git a/wrapper/govendorkeep.go b/wrapper/govendorkeep.go new file mode 100644 index 00000000..f564e648 --- /dev/null +++ b/wrapper/govendorkeep.go @@ -0,0 +1 @@ +package cgowrapper From c94b02c263dcf74c4d695bebe7a1f185b47b68c6 Mon Sep 17 00:00:00 2001 From: Daniel Glinka <8351869+0xd61@users.noreply.github.com> Date: Mon, 7 Feb 2022 18:10:21 +0000 Subject: [PATCH 3/7] Update wrapper_cgo_hack.go Co-authored-by: Christian Haas --- wrapper_cgo_hack.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wrapper_cgo_hack.go b/wrapper_cgo_hack.go index 43cccaa2..0ea022f4 100644 --- a/wrapper_cgo_hack.go +++ b/wrapper_cgo_hack.go @@ -8,7 +8,7 @@ package imgui // https://github.com/golang/go/issues/26366 // // How it works: -// - every directory which only includes c source files receives a dummy.go file. +// - every directory which only includes c source files receives a govendorkeep.go file. // - every directory we want to preserve is included here as a _ import. // - this file is given a build to exclude it from the regular build. From 8cfd08c0e8c71e8fef582ec21889a8ec384d64c4 Mon Sep 17 00:00:00 2001 From: Daniel Glinka Date: Tue, 8 Feb 2022 14:18:36 +0000 Subject: [PATCH 4/7] Ignore cgo directories in CI tests --- .github/workflows/tests.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b513bab1..73b95d00 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -23,4 +23,5 @@ jobs: - name: Download modules run: go mod tidy -v - name: Run tests - run: go test -race ./... + run: go test -race $(go list -e ./... | grep -v v4/imgui | grep -v v4/wrapper) + From 4d3e814c90e3d74edcc8c787f732cfe474ab412a Mon Sep 17 00:00:00 2001 From: Daniel Glinka Date: Tue, 8 Feb 2022 14:19:18 +0000 Subject: [PATCH 5/7] Do not lint govendorkeep files --- .golangci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.golangci.yml b/.golangci.yml index 48071598..88554bc3 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,5 +1,7 @@ run: deadline: 5m + skip-files: + - ".*govendorkeep.go$" linters: enable-all: true From c135040eaf3813cc950d42e47791d3f0a25f9395 Mon Sep 17 00:00:00 2001 From: Daniel Glinka Date: Tue, 8 Feb 2022 16:59:02 +0000 Subject: [PATCH 6/7] Skip cgo directories on linting --- .golangci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 88554bc3..e9ee2672 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,7 +1,8 @@ run: deadline: 5m - skip-files: - - ".*govendorkeep.go$" + skip-dirs: + - imgui + - wrapper linters: enable-all: true From 8f2d5063b4e556f47c8d5ee5e5d6ac12069a459f Mon Sep 17 00:00:00 2001 From: Daniel Glinka Date: Tue, 8 Feb 2022 23:46:28 +0000 Subject: [PATCH 7/7] Update linter to v1.44.0 --- .github/workflows/golangci-lint.yaml | 2 +- .golangci.yml | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/golangci-lint.yaml b/.github/workflows/golangci-lint.yaml index 336aae46..4caec728 100644 --- a/.github/workflows/golangci-lint.yaml +++ b/.github/workflows/golangci-lint.yaml @@ -9,4 +9,4 @@ jobs: - name: golangci-lint uses: golangci/golangci-lint-action@v2.3.0 with: - version: v1.28.3 + version: v1.44.0 diff --git a/.golangci.yml b/.golangci.yml index e9ee2672..2a39c6c8 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -14,6 +14,14 @@ linters: - goimports # disabled because of so many false-positives with "imgui-go" - gofumpt # disabled because no extra need - wsl # this one has become too pedantic + - ifshort # was not available in v.1.28.3 and will be skipped for now + - exhaustivestruct # was not available in v.1.28.3 and will be skipped for now + - nlreturn # was not available in v.1.28.3 and will be skipped for now + - paralleltest # was not available in v.1.28.3 and will be skipped for now + - varnamelen # was not available in v.1.28.3 and will be skipped for now + - gci # was not available in v.1.28.3 and will be skipped for now + - forcetypeassert # was not available in v.1.28.3 and will be skipped for now + - gomnd # was not available in v.1.28.3 and will be skipped for now issues: exclude-use-default: false # disable filtering of defaults for better zero-issue policy @@ -29,3 +37,5 @@ linters-settings: gocritic: disabled-checks: - dupSubExpr + - commentFormatting + - deprecatedComment