From 4627651c324c21b35b8d2b9dc21b53a284e4044c Mon Sep 17 00:00:00 2001 From: Viacheslav Poturaev Date: Wed, 26 Apr 2023 11:37:20 +0200 Subject: [PATCH 1/2] Try CGO zstd --- Makefile | 2 +- cmd/catp/main.go | 24 +++++++++++++++++++----- cmd/go.mod | 7 +++++-- cmd/go.sum | 7 +++++-- 4 files changed, 30 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index b700ab0..4ea2b72 100644 --- a/Makefile +++ b/Makefile @@ -28,7 +28,7 @@ ifeq ($(DEVGO_PATH),) endif -export CGO_ENABLED ?= 0 +export CGO_ENABLED ?= 1 BUILD_PKG = ./cmd/catp BUILD_LDFLAGS=-s -w BUILD_FLAGS=-trimpath -pgo=./cmd/catp.pgo diff --git a/cmd/catp/main.go b/cmd/catp/main.go index a7ef8ff..dc69611 100644 --- a/cmd/catp/main.go +++ b/cmd/catp/main.go @@ -12,8 +12,10 @@ import ( "strings" "time" + //"github.com/klauspost/compress/zstd" + "github.com/DataDog/zstd" + "github.com/bool64/dev/version" "github.com/bool64/progress" - "github.com/klauspost/compress/zstd" gzip "github.com/klauspost/pgzip" ) @@ -93,13 +95,13 @@ func (r *runner) cat(filename string) { log.Fatalf("failed to init gzip reader: %s", err) } case strings.HasSuffix(filename, ".zst"): - if rd, err = zstd.NewReader(rd); err != nil { - log.Fatalf("failed to init gzip reader: %s", err) - } + rd = zstd.NewReader(rd) + //if rd, err = zstd.NewReader(rd); err != nil { + // log.Fatalf("failed to init gzip reader: %s", err) + //} } if r.reverse { - } r.pr.Start(func(t *progress.Task) { @@ -127,9 +129,17 @@ func (r *runner) cat(filename string) { func main() { grep := flag.String("grep", "", "grep pattern, may contain multiple patterns separated by \\|") cpuProfile := flag.String("dbg-cpu-prof", "", "write first 10 seconds of CPU profile to file") + ver := flag.Bool("version", false, "print version and exit") + verbosity := flag.Int("verbosity", 1, "progress status verbosity level (0, 1, 2)") flag.Parse() + if *ver { + fmt.Println(version.Info().Version) + + return + } + if *cpuProfile != "" { f, err := os.Create(*cpuProfile) //nolint:gosec if err != nil { @@ -159,6 +169,10 @@ func main() { r.pr = &progress.Progress{ Interval: 5 * time.Second, Print: func(status progress.ProgressStatus) { + if *verbosity == 0 { + return + } + println(r.st(status)) }, } diff --git a/cmd/go.mod b/cmd/go.mod index 192ac1a..e133dda 100644 --- a/cmd/go.mod +++ b/cmd/go.mod @@ -3,7 +3,10 @@ module github.com/bool64/progress/cmd go 1.20 require ( - github.com/bool64/progress v0.1.0 - github.com/klauspost/compress v1.16.5 + github.com/DataDog/zstd v1.5.5 + github.com/bool64/dev v0.2.27 + github.com/bool64/progress v0.1.3 github.com/klauspost/pgzip v1.2.5 ) + +require github.com/klauspost/compress v1.16.5 // indirect diff --git a/cmd/go.sum b/cmd/go.sum index d4b1c79..1239591 100644 --- a/cmd/go.sum +++ b/cmd/go.sum @@ -1,6 +1,9 @@ +github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= +github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/bool64/dev v0.2.27 h1:mFT+B74mFVgUeUmm/EbfM6ELPA55lEXBjQ/AOHCwCOc= -github.com/bool64/progress v0.1.0 h1:khsGInrTrQMyskfcRTE9gP982koSqKobYFJ977JLxhA= -github.com/bool64/progress v0.1.0/go.mod h1:XwIA2+r2sEKxIRa6TFR0FqD3GHt0wz4dk4IL5CwbuKo= +github.com/bool64/dev v0.2.27/go.mod h1:iJbh1y/HkunEPhgebWRNcs8wfGq7sjvJ6W5iabL8ACg= +github.com/bool64/progress v0.1.3 h1:tW/kDAa0AuOkLBfv9qZyDuqqLgcluyRLDdrTGfqGI9Q= +github.com/bool64/progress v0.1.3/go.mod h1:XwIA2+r2sEKxIRa6TFR0FqD3GHt0wz4dk4IL5CwbuKo= github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI= github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/pgzip v1.2.5 h1:qnWYvvKqedOF2ulHpMG72XQol4ILEJ8k2wwRl/Km8oE= From b5a83eaab8a3df216899030ecd312294aea61549 Mon Sep 17 00:00:00 2001 From: Viacheslav Poturaev Date: Sun, 30 Apr 2023 21:46:05 +0200 Subject: [PATCH 2/2] Do not try CGO --- Makefile | 4 +++- cmd/catp.pgo | Bin 12840 -> 14869 bytes cmd/catp/main.go | 10 ++++------ 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 4ea2b72..c7c5ad3 100644 --- a/Makefile +++ b/Makefile @@ -28,7 +28,7 @@ ifeq ($(DEVGO_PATH),) endif -export CGO_ENABLED ?= 1 +export CGO_ENABLED ?= 0 BUILD_PKG = ./cmd/catp BUILD_LDFLAGS=-s -w BUILD_FLAGS=-trimpath -pgo=./cmd/catp.pgo @@ -41,3 +41,5 @@ BUILD_FLAGS=-trimpath -pgo=./cmd/catp.pgo # Add your custom targets here. +build-linux-docker: + @docker run -v $$PWD:/app --rm golang bash -c "git config --global --add safe.directory /app && cd /app && make build" \ No newline at end of file diff --git a/cmd/catp.pgo b/cmd/catp.pgo index 6b2dfdf21155f9a4ad9e504c525b5c48ce0c9380..1274f8234cf86d6ebd0766b2ee8c4d749ccc5b34 100644 GIT binary patch literal 14869 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 Hk9q(A1rhx6 literal 12840 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 GYybeMjUMg* diff --git a/cmd/catp/main.go b/cmd/catp/main.go index dc69611..322e100 100644 --- a/cmd/catp/main.go +++ b/cmd/catp/main.go @@ -12,10 +12,9 @@ import ( "strings" "time" - //"github.com/klauspost/compress/zstd" - "github.com/DataDog/zstd" "github.com/bool64/dev/version" "github.com/bool64/progress" + "github.com/klauspost/compress/zstd" gzip "github.com/klauspost/pgzip" ) @@ -95,10 +94,9 @@ func (r *runner) cat(filename string) { log.Fatalf("failed to init gzip reader: %s", err) } case strings.HasSuffix(filename, ".zst"): - rd = zstd.NewReader(rd) - //if rd, err = zstd.NewReader(rd); err != nil { - // log.Fatalf("failed to init gzip reader: %s", err) - //} + if rd, err = zstd.NewReader(rd); err != nil { + log.Fatalf("failed to init gzip reader: %s", err) + } } if r.reverse {