Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package inspektor-gadget for 
openSUSE:Factory checked in at 2026-04-25 21:35:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/inspektor-gadget (Old)
 and      /work/SRC/openSUSE:Factory/.inspektor-gadget.new.11940 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "inspektor-gadget"

Sat Apr 25 21:35:34 2026 rev:29 rq:1349008 version:0.51.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/inspektor-gadget/inspektor-gadget.changes        
2026-04-09 16:24:48.806681395 +0200
+++ 
/work/SRC/openSUSE:Factory/.inspektor-gadget.new.11940/inspektor-gadget.changes 
    2026-04-25 21:35:50.518039636 +0200
@@ -1,0 +2,14 @@
+Thu Apr 23 19:19:36 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- Update to version 0.51.1:
+  * Bug fixes
+    - [BACKPORT] cmd: Convert Makefile.build to golang. by
+      @eiffel-fl in #5475
+  * Dependencies
+    - go: Bump go.opentelemetry.io/otel/sdk from 1.42.0 to 1.43.0
+      in /examples
+    - go: Bump go.opentelemetry.io/otel/sdk from 1.42.0 to 1.43.0
+    - Bump Go compiler version from 1.25.8 to 1.25.9 across
+      repository
+
+-------------------------------------------------------------------

Old:
----
  inspektor-gadget-0.51.0.obscpio

New:
----
  inspektor-gadget-0.51.1.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ inspektor-gadget.spec ++++++
--- /var/tmp/diff_new_pack.y2Oqvj/_old  2026-04-25 21:35:51.362073981 +0200
+++ /var/tmp/diff_new_pack.y2Oqvj/_new  2026-04-25 21:35:51.366074143 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           inspektor-gadget
-Version:        0.51.0
+Version:        0.51.1
 Release:        0
 Summary:        A eBPF tool and systems inspection framework
 License:        Apache-2.0
@@ -26,8 +26,8 @@
 Source1:        vendor.tar.gz
 BuildRequires:  bash-completion
 BuildRequires:  fish
+BuildRequires:  go1.25 >= 1.25.7
 BuildRequires:  zsh
-BuildRequires:  golang(API) >= 1.25
 # /usr/bin/ig conflicts with igrep
 Conflicts:      igrep
 

++++++ _service ++++++
--- /var/tmp/diff_new_pack.y2Oqvj/_old  2026-04-25 21:35:51.398075445 +0200
+++ /var/tmp/diff_new_pack.y2Oqvj/_new  2026-04-25 21:35:51.402075608 +0200
@@ -3,7 +3,7 @@
     <param 
name="url">https://github.com/inspektor-gadget/inspektor-gadget</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v0.51.0</param>
+    <param name="revision">v0.51.1</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.y2Oqvj/_old  2026-04-25 21:35:51.422076422 +0200
+++ /var/tmp/diff_new_pack.y2Oqvj/_new  2026-04-25 21:35:51.426076584 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/inspektor-gadget/inspektor-gadget</param>
-              <param 
name="changesrevision">327a2e4654202a4085d3677debb8829a30dbc18f</param></service></servicedata>
+              <param 
name="changesrevision">59368d7bb0265142bbb60a2acd590f4f19fb0a5d</param></service></servicedata>
 (No newline at EOF)
 

++++++ inspektor-gadget-0.51.0.obscpio -> inspektor-gadget-0.51.1.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/inspektor-gadget-0.51.0/.golangci.yml 
new/inspektor-gadget-0.51.1/.golangci.yml
--- old/inspektor-gadget-0.51.0/.golangci.yml   2026-04-02 18:46:59.000000000 
+0200
+++ new/inspektor-gadget-0.51.1/.golangci.yml   2026-04-23 07:56:29.000000000 
+0200
@@ -1,6 +1,6 @@
 version: "2"
 run:
-  go: 1.25.8
+  go: 1.25.9
   build-tags:
     - docs
 linters:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/inspektor-gadget-0.51.0/Dockerfiles/gadget-builder.Dockerfile 
new/inspektor-gadget-0.51.1/Dockerfiles/gadget-builder.Dockerfile
--- old/inspektor-gadget-0.51.0/Dockerfiles/gadget-builder.Dockerfile   
2026-04-02 18:46:59.000000000 +0200
+++ new/inspektor-gadget-0.51.1/Dockerfiles/gadget-builder.Dockerfile   
2026-04-23 07:56:29.000000000 +0200
@@ -1,7 +1,7 @@
 ARG CLANG_LLVM_VERSION=18
 ARG BPFTOOL_VERSION=v7.3.0
 ARG LIBBPF_VERSION=v1.3.0
-ARG GOLANG_VERSION=1.25.8
+ARG GOLANG_VERSION=1.25.9
 ARG RUST_VERSION=1.87.0
 
 # Args need to be redefined on each stage
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/inspektor-gadget-0.51.0/Dockerfiles/gadget.Dockerfile 
new/inspektor-gadget-0.51.1/Dockerfiles/gadget.Dockerfile
--- old/inspektor-gadget-0.51.0/Dockerfiles/gadget.Dockerfile   2026-04-02 
18:46:59.000000000 +0200
+++ new/inspektor-gadget-0.51.1/Dockerfiles/gadget.Dockerfile   2026-04-23 
07:56:29.000000000 +0200
@@ -1,6 +1,6 @@
 # Dockerfile for Inspektor Gadget.
 
-ARG 
BUILDER_IMAGE=golang:1.25.8-trixie@sha256:bc16125656839ffe56154c675f7a9662bec2ef7d4060177239914e7c6d2fd8a8
+ARG 
BUILDER_IMAGE=golang:1.25.9-trixie@sha256:091e6099f4a58e9393b8cc5615622a59c1cef64481b0ffcf349ec1574449059e
 ARG 
BASE_IMAGE=gcr.io/distroless/static-debian12@sha256:ce46866b3a5170db3b49364900fb3168dc0833dfb46c26da5c77f22abb01d8c3
 
 # Prepare and build gadget artifacts in a container
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/inspektor-gadget-0.51.0/Dockerfiles/ig-tests.Dockerfile 
new/inspektor-gadget-0.51.1/Dockerfiles/ig-tests.Dockerfile
--- old/inspektor-gadget-0.51.0/Dockerfiles/ig-tests.Dockerfile 2026-04-02 
18:46:59.000000000 +0200
+++ new/inspektor-gadget-0.51.1/Dockerfiles/ig-tests.Dockerfile 2026-04-23 
07:56:29.000000000 +0200
@@ -1,4 +1,4 @@
-ARG 
BUILDER_IMAGE=golang:1.25.8-trixie@sha256:bc16125656839ffe56154c675f7a9662bec2ef7d4060177239914e7c6d2fd8a8
+ARG 
BUILDER_IMAGE=golang:1.25.9-trixie@sha256:091e6099f4a58e9393b8cc5615622a59c1cef64481b0ffcf349ec1574449059e
 ARG 
BASE_IMAGE=gcr.io/distroless/static-debian11:latest@sha256:1dbe426d60caed5d19597532a2d74c8056cd7b1674042b88f7328690b5ead8ed
 
 FROM --platform=${BUILDPLATFORM} ${BUILDER_IMAGE} AS builder
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/inspektor-gadget-0.51.0/Dockerfiles/ig.Dockerfile 
new/inspektor-gadget-0.51.1/Dockerfiles/ig.Dockerfile
--- old/inspektor-gadget-0.51.0/Dockerfiles/ig.Dockerfile       2026-04-02 
18:46:59.000000000 +0200
+++ new/inspektor-gadget-0.51.1/Dockerfiles/ig.Dockerfile       2026-04-23 
07:56:29.000000000 +0200
@@ -1,4 +1,4 @@
-ARG 
BUILDER_IMAGE=golang:1.25.8-trixie@sha256:bc16125656839ffe56154c675f7a9662bec2ef7d4060177239914e7c6d2fd8a8
+ARG 
BUILDER_IMAGE=golang:1.25.9-trixie@sha256:091e6099f4a58e9393b8cc5615622a59c1cef64481b0ffcf349ec1574449059e
 ARG 
BASE_IMAGE=gcr.io/distroless/static-debian11:latest@sha256:1dbe426d60caed5d19597532a2d74c8056cd7b1674042b88f7328690b5ead8ed
 
 FROM --platform=${BUILDPLATFORM} ${BUILDER_IMAGE} AS builder
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/inspektor-gadget-0.51.0/Dockerfiles/kubectl-gadget.Dockerfile 
new/inspektor-gadget-0.51.1/Dockerfiles/kubectl-gadget.Dockerfile
--- old/inspektor-gadget-0.51.0/Dockerfiles/kubectl-gadget.Dockerfile   
2026-04-02 18:46:59.000000000 +0200
+++ new/inspektor-gadget-0.51.1/Dockerfiles/kubectl-gadget.Dockerfile   
2026-04-23 07:56:29.000000000 +0200
@@ -6,7 +6,7 @@
 # image is valid, even scratch. Alpine is used by default as a tradeoff
 # between size and tools available in the image.
 
-ARG 
BUILDER_IMAGE=golang:1.25.8-trixie@sha256:bc16125656839ffe56154c675f7a9662bec2ef7d4060177239914e7c6d2fd8a8
+ARG 
BUILDER_IMAGE=golang:1.25.9-trixie@sha256:091e6099f4a58e9393b8cc5615622a59c1cef64481b0ffcf349ec1574449059e
 ARG 
BASE_IMAGE=gcr.io/distroless/static-debian11:latest@sha256:1dbe426d60caed5d19597532a2d74c8056cd7b1674042b88f7328690b5ead8ed
 
 FROM --platform=${BUILDPLATFORM} ${BUILDER_IMAGE} AS builder
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/inspektor-gadget-0.51.0/cmd/common/image/build-step.go 
new/inspektor-gadget-0.51.1/cmd/common/image/build-step.go
--- old/inspektor-gadget-0.51.0/cmd/common/image/build-step.go  1970-01-01 
01:00:00.000000000 +0100
+++ new/inspektor-gadget-0.51.1/cmd/common/image/build-step.go  2026-04-23 
07:56:29.000000000 +0200
@@ -0,0 +1,234 @@
+// Copyright 2026 The Inspektor Gadget authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package image
+
+import (
+       "fmt"
+       "path/filepath"
+       "runtime"
+       "strings"
+
+       "github.com/inspektor-gadget/inspektor-gadget/pkg/oci"
+)
+
+type buildStep struct {
+       opts       buildOptions
+       targetArch string
+       run        func(runner commandRunner) error
+}
+
+var goArchToKernelArch = map[string]string{
+       "amd64": "x86_64",
+       "arm64": "aarch64",
+}
+
+func translateArch(arch string) string {
+       if arch == oci.ArchAmd64 {
+               return "x86"
+       }
+
+       return arch
+}
+
+func translateArchBtf(arch string) string {
+       if arch == oci.ArchAmd64 {
+               return "x86_64"
+       }
+
+       return arch
+}
+
+func newClangCompileStep(targetArch string, opts buildOptions) buildStep {
+       clangCompileStep := buildStep{
+               opts:       opts,
+               targetArch: targetArch,
+       }
+
+       clangCompileStep.run = func(runner commandRunner) error {
+               bpfObjectPath := filepath.Join(clangCompileStep.opts.outputDir, 
fmt.Sprintf("%s.bpf.o", clangCompileStep.targetArch))
+
+               kernelArch, ok := goArchToKernelArch[runtime.GOARCH]
+               if !ok {
+                       return fmt.Errorf("no kernel architecture corresponding 
to %q", runtime.GOARCH)
+               }
+
+               cmd := []string{
+                       "clang",
+                       "-target", "bpf",
+                       "-Wall",
+                       "-g",
+                       "-O2",
+                       fmt.Sprintf("-I/usr/include/%s-linux-gnu", kernelArch),
+                       "-D", fmt.Sprintf("__TARGET_ARCH_%s", 
translateArch(clangCompileStep.targetArch)),
+                       "-c", clangCompileStep.opts.ebpfSourcePath,
+                       "-I", fmt.Sprintf("/usr/include/gadget/%s/", 
clangCompileStep.targetArch),
+                       "-o", bpfObjectPath,
+               }
+
+               if clangCompileStep.opts.useInTreeHeaders {
+                       cmd = append(cmd,
+                               "-I", "/work/include/",
+                               "-I", fmt.Sprintf("/work/include/gadget/%s/", 
clangCompileStep.targetArch),
+                       )
+               }
+
+               if _, _, err := runner.run(cmd, nil); err != nil {
+                       return fmt.Errorf("clang compile for %s: %w", 
clangCompileStep.targetArch, err)
+               }
+
+               if _, _, err := runner.run([]string{"llvm-strip", "-g", 
bpfObjectPath}, nil); err != nil {
+                       return fmt.Errorf("llvm-strip for %s: %w", 
clangCompileStep.targetArch, err)
+               }
+
+               return nil
+       }
+
+       return clangCompileStep
+}
+
+func newGoBuildStep(opts buildOptions) buildStep {
+       goBuildStep := buildStep{opts: opts}
+
+       goBuildStep.run = func(runner commandRunner) error {
+               cmd := []string{
+                       "go", "build",
+                       "-C", filepath.Dir(goBuildStep.opts.wasmSourcePath),
+                       "-o", filepath.Join(goBuildStep.opts.outputDir, 
"program.wasm"),
+                       // -buildmode=c-shared to build the wasm as a reactor 
module, see:
+                       // 
https://github.com/WebAssembly/WASI/blob/main/legacy/application-abi.md#current-unstable-abi
+                       "-buildmode=c-shared",
+                       "-ldflags", "-w -s",
+                       filepath.Base(goBuildStep.opts.wasmSourcePath),
+               }
+               env := []string{
+                       "CGO_ENABLED=0",
+                       "GOOS=wasip1",
+                       "GOARCH=wasm",
+               }
+
+               if _, _, err := runner.run(cmd, env); err != nil {
+                       return fmt.Errorf("go build wasm: %w", err)
+               }
+               return nil
+       }
+
+       return goBuildStep
+}
+
+func newCargoBuildStep(opts buildOptions) buildStep {
+       cargoBuildStep := buildStep{opts: opts}
+
+       cargoBuildStep.run = func(runner commandRunner) error {
+               cmd := []string{"cargo"}
+               if cargoBuildStep.opts.forceColorsFlag {
+                       cmd = append(cmd, "--color", "always")
+               }
+               cmd = append(cmd,
+                       "build",
+                       "--target", "wasm32-wasip1", "--release",
+                       "--manifest-path", 
filepath.Join(filepath.Dir(cargoBuildStep.opts.wasmSourcePath), "..", 
"Cargo.toml"),
+               )
+               env := []string{fmt.Sprintf("CARGO_TARGET_DIR=%s", 
cargoBuildStep.opts.outputDir)}
+
+               if _, _, err := runner.run(cmd, env); err != nil {
+                       return fmt.Errorf("cargo build: %w", err)
+               }
+
+               cargoTomlPath := 
filepath.Join(filepath.Dir(cargoBuildStep.opts.wasmSourcePath), "..", 
"Cargo.toml")
+               awkOut, _, err := runner.run([]string{
+                       "awk", "-F", `"`, `/^name *=/ { print $2; exit }`, 
cargoTomlPath,
+               }, nil)
+               if err != nil {
+                       return fmt.Errorf("reading package name from 
Cargo.toml: %w", err)
+               }
+               packageName := strings.TrimSpace(awkOut)
+
+               src := filepath.Join(cargoBuildStep.opts.outputDir, 
"wasm32-wasip1", "release", packageName+".wasm")
+               dst := filepath.Join(cargoBuildStep.opts.outputDir, 
"program.wasm")
+               if _, _, err := runner.run([]string{"cp", src, dst}, nil); err 
!= nil {
+                       return fmt.Errorf("copying wasm output: %w", err)
+               }
+
+               return nil
+       }
+
+       return cargoBuildStep
+}
+
+func newBtfgenStep(targetArch string, opts buildOptions) buildStep {
+       btfgenStep := buildStep{
+               opts:       opts,
+               targetArch: targetArch,
+       }
+
+       btfgenStep.run = func(runner commandRunner) error {
+               translatedArch := translateArchBtf(btfgenStep.targetArch)
+               bpfObjectPath := filepath.Join(btfgenStep.opts.outputDir, 
fmt.Sprintf("%s.bpf.o", btfgenStep.targetArch))
+               outputBtfDirPath := filepath.Join(btfgenStep.opts.outputDir, 
"btfs", translatedArch)
+               btfArchivePath := filepath.Join(btfgenStep.opts.outputDir, 
fmt.Sprintf("btfs-%s.tar.gz", translatedArch))
+
+               findOut, _, err := runner.run([]string{
+                       "find", btfgenStep.opts.btfHubArchivePath,
+                       "-iregex", fmt.Sprintf(".*%s.*", translatedArch),
+                       "-type", "f",
+                       "-name", "*.btf.tar.xz",
+               }, nil)
+               if err != nil {
+                       return fmt.Errorf("finding btf archives for %s: %w", 
translatedArch, err)
+               }
+
+               for _, btfArchiveFile := range 
strings.Split(strings.TrimSpace(findOut), "\n") {
+                       if btfArchiveFile == "" {
+                               continue
+                       }
+
+                       btfFilePath := strings.TrimSuffix(btfArchiveFile, 
".tar.xz")
+                       btfFilename := filepath.Base(btfFilePath)
+                       outputBtfFilePath := filepath.Join(outputBtfDirPath, 
btfFilename)
+
+                       if _, _, err := runner.run([]string{
+                               "tar", "xfJ", btfArchiveFile,
+                               "-C", filepath.Dir(btfArchiveFile),
+                               "--touch",
+                       }, nil); err != nil {
+                               return fmt.Errorf("extracting %s: %w", 
btfArchiveFile, err)
+                       }
+
+                       if _, _, err := runner.run([]string{"mkdir", "-p", 
outputBtfDirPath}, nil); err != nil {
+                               return fmt.Errorf("creating btf output dir: 
%w", err)
+                       }
+
+                       if _, _, err := runner.run([]string{
+                               "bpftool", "gen", "min_core_btf", btfFilePath, 
outputBtfFilePath, bpfObjectPath,
+                       }, nil); err != nil {
+                               return fmt.Errorf("bpftool gen min_core_btf for 
%s: %w", btfFilePath, err)
+                       }
+
+                       if _, _, err := runner.run([]string{"rm", "-f", 
btfFilePath}, nil); err != nil {
+                               return fmt.Errorf("removing %s: %w", 
btfFilePath, err)
+                       }
+               }
+
+               if _, _, err := runner.run([]string{
+                       "tar", "czf", btfArchivePath, "-C", outputBtfDirPath, 
".",
+               }, nil); err != nil {
+                       return fmt.Errorf("creating btf archive for %s: %w", 
translatedArch, err)
+               }
+
+               return nil
+       }
+
+       return btfgenStep
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/inspektor-gadget-0.51.0/cmd/common/image/build.go 
new/inspektor-gadget-0.51.1/cmd/common/image/build.go
--- old/inspektor-gadget-0.51.0/cmd/common/image/build.go       2026-04-02 
18:46:59.000000000 +0200
+++ new/inspektor-gadget-0.51.1/cmd/common/image/build.go       2026-04-23 
07:56:29.000000000 +0200
@@ -16,19 +16,15 @@
 
 import (
        "context"
-       "embed"
        "errors"
        "fmt"
        "os"
-       "os/exec"
        "path/filepath"
-       "runtime"
        "slices"
        "strconv"
        "strings"
        "time"
 
-       "github.com/moby/moby/api/pkg/stdcopy"
        "github.com/moby/moby/api/types/container"
        "github.com/moby/moby/api/types/mount"
        "github.com/moby/moby/client"
@@ -41,9 +37,6 @@
        "github.com/inspektor-gadget/inspektor-gadget/pkg/oci"
 )
 
-//go:embed helpers
-var helpersFS embed.FS
-
 // It can be overridden at build time
 var builderImage = "ghcr.io/inspektor-gadget/gadget-builder:main"
 
@@ -119,34 +112,82 @@
 
 type buildOptions struct {
        outputDir         string
-       forceColorsFlag   string
        ebpfSourcePath    string
        wasmSourcePath    string
-       btfgen            bool
        btfHubArchivePath string
-       useInTreeHeaders  string
+       btfgen            bool
+       forceColorsFlag   bool
+       useInTreeHeaders  bool
+}
+
+func isFlag(str string) bool {
+       return strings.HasPrefix(str, "-")
+}
+
+func isResponseFile(str string) bool {
+       // Response file starts with @, see:
+       // https://gcc.gnu.org/wiki/Response_Files
+       return strings.HasPrefix(str, "@")
 }
 
-func buildCmd(options buildOptions) []string {
-       cmd := []string{
-               "make", "-f", filepath.Join(options.outputDir, 
"Makefile.build"),
-               "-j", fmt.Sprintf("%d", runtime.NumCPU()),
-               "OUTPUTDIR=" + options.outputDir,
-               "FORCE_COLORS=" + options.forceColorsFlag,
-               "USE_IN_TREE_HEADERS=" + options.useInTreeHeaders,
+// Ensure the string build options are path to avoid flags injection.
+func checkBuildOptions(buildOpts buildOptions) error {
+       for _, opt := range []string{buildOpts.outputDir, 
buildOpts.ebpfSourcePath, buildOpts.wasmSourcePath, 
buildOpts.btfHubArchivePath} {
+               opt = strings.TrimSpace(opt)
+               if isFlag(opt) {
+                       return fmt.Errorf("flags are not accepted: %q", opt)
+               }
+
+               if isResponseFile(opt) {
+                       return fmt.Errorf("response file are not accepted: %q", 
opt)
+               }
        }
 
-       if options.ebpfSourcePath != "" {
-               cmd = append(cmd, "EBPFSOURCE="+options.ebpfSourcePath, "ebpf")
+       return nil
+}
+
+func buildPipeline(opts buildOptions) ([]buildStep, error) {
+       if err := checkBuildOptions(opts); err != nil {
+               return nil, fmt.Errorf("wrong build option detected: %w", err)
        }
-       if options.wasmSourcePath != "" {
-               cmd = append(cmd, "WASM="+options.wasmSourcePath, "wasm")
+
+       var steps []buildStep
+
+       if opts.ebpfSourcePath != "" {
+               for _, arch := range []string{oci.ArchAmd64, oci.ArchArm64} {
+                       steps = append(steps, newClangCompileStep(arch, opts))
+               }
        }
-       if options.btfgen {
-               cmd = append(cmd, "BTFHUB_ARCHIVE="+options.btfHubArchivePath, 
"btfgen")
+
+       if opts.wasmSourcePath != "" {
+               switch {
+               case strings.HasSuffix(opts.wasmSourcePath, ".go"):
+                       steps = append(steps, newGoBuildStep(opts))
+               case strings.HasSuffix(opts.wasmSourcePath, ".rs"):
+                       steps = append(steps, newCargoBuildStep(opts))
+               case strings.HasSuffix(opts.wasmSourcePath, ".wasm"):
+                       // Already compiled, nothing to do.
+               default:
+                       return nil, fmt.Errorf("unsupported wasm file type: 
%s", opts.wasmSourcePath)
+               }
        }
 
-       return cmd
+       if opts.btfgen {
+               for _, arch := range []string{oci.ArchAmd64, oci.ArchArm64} {
+                       steps = append(steps, newBtfgenStep(arch, opts))
+               }
+       }
+
+       return steps, nil
+}
+
+func runPipeline(runner commandRunner, steps []buildStep) error {
+       for _, step := range steps {
+               if err := step.run(runner); err != nil {
+                       return err
+               }
+       }
+       return nil
 }
 
 func runBuild(cmd *cobra.Command, opts *cmdOpts) error {
@@ -254,43 +295,28 @@
                return fmt.Errorf("at least one of ebpf source (program.bpf.c), 
metadata (gadget.yaml), .go files (present in go folder) or wasm module is 
required")
        }
 
-       // copy helper files
-       files, err := helpersFS.ReadDir("helpers")
-       if err != nil {
-               return fmt.Errorf("reading helpers: %w", err)
-       }
-
-       for _, file := range files {
-               if file.IsDir() {
-                       continue
-               }
-
-               data, err := helpersFS.ReadFile(filepath.Join("helpers", 
file.Name()))
-               if err != nil {
-                       return fmt.Errorf("reading helper file: %w", err)
-               }
-
-               if err := os.WriteFile(filepath.Join(opts.outputDir, 
file.Name()), data, 0o600); err != nil {
-                       return fmt.Errorf("writing helper file: %w", err)
-               }
-       }
-
        if conf.EBPFSource != "" || conf.Wasm != "" {
                if opts.local {
-                       cmd := buildCmd(buildOptions{
+                       steps, err := buildPipeline(buildOptions{
                                outputDir:         opts.outputDir,
                                ebpfSourcePath:    conf.EBPFSource,
                                wasmSourcePath:    conf.Wasm,
                                btfHubArchivePath: opts.btfhubarchive,
                                btfgen:            opts.btfgen,
                        })
-                       command := exec.Command(cmd[0], cmd[1:]...)
-                       out, err := command.CombinedOutput()
                        if err != nil {
-                               return fmt.Errorf("build script: %w: %s", err, 
out)
+                               return fmt.Errorf("building build pipeline: 
%w", err)
                        }
+
+                       runner := &localRunner{verbose: common.Verbose}
                        if common.Verbose {
-                               fmt.Printf("Build logs start:\n%s\nBuild logs 
end\n", string(out))
+                               fmt.Printf("Build logs start:\n")
+                       }
+                       if err := runPipeline(runner, steps); err != nil {
+                               return fmt.Errorf("local build: %w", err)
+                       }
+                       if common.Verbose {
+                               fmt.Printf("Build logs end\n")
                        }
                } else {
                        if err := buildInContainer(opts, conf); err != nil {
@@ -445,7 +471,7 @@
        pathHost := cwd
 
        inspektorGadetSrcPath := os.Getenv("IG_SOURCE_PATH")
-       useInTreeHeaders := "false"
+       useInTreeHeaders := false
        if inspektorGadetSrcPath != "" {
                pathHost = inspektorGadetSrcPath
                // find the gadget relative path to the inspektor-gadget source
@@ -456,7 +482,7 @@
                gadgetSourcePath = filepath.Join("/work", gadgetRelativePath)
 
                // use in-tree headers too
-               useInTreeHeaders = "true"
+               useInTreeHeaders = true
        }
 
        buildOpts := buildOptions{
@@ -475,10 +501,13 @@
        }
 
        if term.IsTerminal(int(os.Stdout.Fd())) && 
term.IsTerminal(int(os.Stderr.Fd())) {
-               buildOpts.forceColorsFlag = "true"
+               buildOpts.forceColorsFlag = true
        }
 
-       cmd := buildCmd(buildOpts)
+       steps, err := buildPipeline(buildOpts)
+       if err != nil {
+               return fmt.Errorf("building build pipeline: %w", err)
+       }
 
        // The work mount ReadOnly field is updated as false, to allow 
Cargo.lock to compiled in /work folder for rust source code.
        mounts := []mount.Mount{
@@ -508,7 +537,7 @@
                client.ContainerCreateOptions{
                        Config: &container.Config{
                                Image:      opts.builderImage,
-                               Cmd:        cmd,
+                               Cmd:        []string{"sleep", "inf"},
                                WorkingDir: gadgetSourcePath,
                                User:       fmt.Sprintf("%d:%d", os.Getuid(), 
os.Getgid()),
                        },
@@ -521,7 +550,7 @@
                return fmt.Errorf("creating builder container: %w", err)
        }
        defer func() {
-               if _, err := cli.ContainerRemove(ctx, resp.ID, 
client.ContainerRemoveOptions{}); err != nil {
+               if _, err := cli.ContainerRemove(ctx, resp.ID, 
client.ContainerRemoveOptions{Force: true}); err != nil {
                        fmt.Printf("Failed to remove builder container: %s\n", 
err)
                }
        }()
@@ -530,34 +559,21 @@
                return fmt.Errorf("starting builder container: %w", err)
        }
 
-       var status container.WaitResponse
-
-       waitResult := cli.ContainerWait(ctx, resp.ID, 
client.ContainerWaitOptions{Condition: container.WaitConditionNotRunning})
-       select {
-       case err := <-waitResult.Error:
-               if err != nil {
-                       return fmt.Errorf("waiting for builder container: %w", 
err)
-               }
-       case status = <-waitResult.Result:
+       runner := &containerRunner{
+               ctx:         ctx,
+               cli:         cli,
+               containerID: resp.ID,
+               verbose:     common.Verbose,
        }
 
-       outputOpts := client.ContainerLogsOptions{ShowStderr: true}
-
-       if status.StatusCode != 0 || common.Verbose {
-               outputOpts.ShowStdout = true
+       if common.Verbose {
+               fmt.Println("Build logs start:")
        }
-
-       logResult, err := cli.ContainerLogs(ctx, resp.ID, outputOpts)
-       if err != nil {
-               return fmt.Errorf("getting builder container logs: %w", err)
+       if err := runPipeline(runner, steps); err != nil {
+               return fmt.Errorf("container build: %w", err)
        }
-
-       fmt.Println("Build logs start:")
-       stdcopy.StdCopy(os.Stdout, os.Stderr, logResult)
-       fmt.Println("Build logs end")
-
-       if status.StatusCode != 0 {
-               return fmt.Errorf("builder container exited with status %d", 
status.StatusCode)
+       if common.Verbose {
+               fmt.Println("Build logs end")
        }
 
        return nil
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/inspektor-gadget-0.51.0/cmd/common/image/cmd-runner.go 
new/inspektor-gadget-0.51.1/cmd/common/image/cmd-runner.go
--- old/inspektor-gadget-0.51.0/cmd/common/image/cmd-runner.go  1970-01-01 
01:00:00.000000000 +0100
+++ new/inspektor-gadget-0.51.1/cmd/common/image/cmd-runner.go  2026-04-23 
07:56:29.000000000 +0200
@@ -0,0 +1,111 @@
+// Copyright 2026 The Inspektor Gadget authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package image
+
+import (
+       "bytes"
+       "context"
+       "fmt"
+       "os"
+       "os/exec"
+       "strings"
+
+       "github.com/moby/moby/api/pkg/stdcopy"
+       "github.com/moby/moby/client"
+)
+
+type commandRunner interface {
+       run(cmd []string, env []string) (stdout string, stderr string, err 
error)
+}
+
+type localRunner struct {
+       verbose bool
+}
+
+func (r *localRunner) run(cmd []string, env []string) (string, string, error) {
+       if r.verbose {
+               fmt.Printf("%s\n", strings.Join(cmd, " "))
+       }
+       command := exec.Command(cmd[0], cmd[1:]...)
+       if len(env) > 0 {
+               command.Env = append(os.Environ(), env...)
+       }
+       out, err := command.CombinedOutput()
+       if r.verbose && len(out) > 0 {
+               fmt.Printf("%s", out)
+       }
+       if err != nil {
+               return string(out), "", fmt.Errorf("running %v: %w: %s", cmd, 
err, out)
+       }
+       return string(out), "", nil
+}
+
+type containerRunner struct {
+       ctx         context.Context
+       cli         *client.Client
+       containerID string
+       verbose     bool
+}
+
+func (r *containerRunner) run(cmd []string, env []string) (string, string, 
error) {
+       if r.verbose {
+               fmt.Printf("%s\n", strings.Join(cmd, " "))
+       }
+       outBuf, errBuf, exitCode, err := execCmdInContainer(r.ctx, r.cli, 
r.containerID, cmd, env)
+       if r.verbose && len(outBuf) > 0 {
+               fmt.Printf("%s", outBuf)
+       }
+       if r.verbose && len(errBuf) > 0 {
+               fmt.Printf("%s", errBuf)
+       }
+       if err != nil {
+               return outBuf, errBuf, err
+       }
+       if exitCode != 0 {
+               return outBuf, errBuf, fmt.Errorf("command %v exited with 
status %d: %s", cmd, exitCode, errBuf)
+       }
+       return outBuf, errBuf, nil
+}
+
+func execCmdInContainer(ctx context.Context, cli *client.Client, containerID 
string, cmd []string, env []string) (string, string, int, error) {
+       execCfg, err := cli.ExecCreate(ctx, containerID, 
client.ExecCreateOptions{
+               Cmd:          cmd,
+               Env:          env,
+               AttachStdout: true,
+               AttachStderr: true,
+       })
+       if err != nil {
+               return "", "", -1, fmt.Errorf("creating container exec: %w", 
err)
+       }
+
+       attach, err := cli.ExecAttach(ctx, execCfg.ID, 
client.ExecAttachOptions{})
+       if err != nil {
+               return "", "", -1, fmt.Errorf("attaching exec to container: 
%w", err)
+       }
+       defer attach.Close()
+
+       var outBuf, errBuf bytes.Buffer
+       _, err = stdcopy.StdCopy(&outBuf, &errBuf, attach.Reader)
+       if err != nil {
+               return "", "", -1, fmt.Errorf("copying exec output: %w", err)
+       }
+
+       inspect, err := cli.ExecInspect(ctx, execCfg.ID, 
client.ExecInspectOptions{})
+       if err != nil {
+               return outBuf.String(), errBuf.String(), -1, 
fmt.Errorf("inspecting exec: %w", err)
+       }
+
+       return outBuf.String(), errBuf.String(), inspect.ExitCode, nil
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/inspektor-gadget-0.51.0/cmd/common/image/helpers/Makefile.build 
new/inspektor-gadget-0.51.1/cmd/common/image/helpers/Makefile.build
--- old/inspektor-gadget-0.51.0/cmd/common/image/helpers/Makefile.build 
2026-04-02 18:46:59.000000000 +0200
+++ new/inspektor-gadget-0.51.1/cmd/common/image/helpers/Makefile.build 
1970-01-01 01:00:00.000000000 +0100
@@ -1,75 +0,0 @@
-# This makefile is used by the build command, don't execute it manually
-
-CLANG ?= clang
-LLVM_STRIP ?= llvm-strip
-# We need <asm/types.h> and depending on Linux distributions, it is installed
-# at different paths:
-#
-# * Ubuntu, package linux-libc-dev:
-#   /usr/include/x86_64-linux-gnu/asm/types.h
-#
-# * Fedora, package kernel-headers
-#   /usr/include/asm/types.h
-#
-# Since Ubuntu does not install it in a standard path, add a compiler flag for
-# it.
-BASECFLAGS = -target bpf -Wall -g -O2 -I/usr/include/$(shell uname 
-m)-linux-gnu
-OUTPUTDIR ?= /tmp
-EBPFSOURCE ?= program.bpf.c
-CARGOFLAGS =
-INCLUDEFLAGS =
-FORCE_COLORS ?= false
-USE_IN_TREE_HEADERS ?= false
-
-ifeq ($(FORCE_COLORS), true)
-    CARGOFLAGS += --color always
-endif
-
-ifeq ($(USE_IN_TREE_HEADERS), true)
-    INCLUDEFLAGS += -I /work/include/ -I /work/include/gadget/@ARCH@/
-endif
-
-ARCHS = amd64 arm64
-TARGETS = $(foreach ARCH,$(ARCHS),$(OUTPUTDIR)/$(ARCH).bpf.o)
-
-.PHONY: ebpf
-ebpf: $(TARGETS)
-
-$(OUTPUTDIR)/%.bpf.o: $(EBPFSOURCE)
-       $(CLANG) $(BASECFLAGS) $(subst @ARCH@,$*,$(INCLUDEFLAGS)) -D 
__TARGET_ARCH_$(subst amd64,x86,$*) \
-               -c $< -I /usr/include/gadget/$*/ -o $@
-       $(LLVM_STRIP) -g $@
-
-.PHONY: wasm
-ifeq ($(WASM),)
-wasm:
-       # No wasm file found. Nothing to do.
-else ifeq (go,$(patsubst %.go,go,$(WASM)))
-wasm: $(WASM)
-       # -buildmode=c-shared to build the wasm as a reactor module. See 
https://github.com/WebAssembly/WASI/blob/main/legacy/application-abi.md#current-unstable-abi
-       cd $(dir $(WASM)) && \
-       CGO_ENABLED=0 GOOS=wasip1 GOARCH=wasm go build -o 
$(OUTPUTDIR)/program.wasm -buildmode=c-shared -ldflags "-w -s" $(notdir $(WASM))
-else ifeq (rs, $(patsubst %.rs,rs,$(WASM)))
-wasm: $(WASM)
-       cd $(dir $(WASM)) && \
-       CARGO_TARGET_DIR=$(OUTPUTDIR) cargo $(CARGOFLAGS) build --target 
wasm32-wasip1 --release && \
-       PACKAGE_NAME=$(shell awk -F\" '/^name *=/ { print $$2; exit }' $(dir 
$(WASM))/../Cargo.toml) && \
-       cp $(OUTPUTDIR)/wasm32-wasip1/release/$$PACKAGE_NAME.wasm 
$(OUTPUTDIR)/program.wasm && \
-       cd /work
-else ifeq (wasm,$(patsubst %.wasm,wasm,$(WASM)))
-wasm:
-       # Wasm file already compiled. Nothing to do.
-else
-wasm:
-       $(error Unsupported wasm file type: $(notdir $(WASM)))
-endif
-
-# Get value of -f parameter
-ALT_MAKEFILE := $(lastword $(MAKEFILE_LIST))
-MAKEFILE_DIR := $(dir $(ALT_MAKEFILE))
-
-.PHONY: btfgen
-btfgen: $(foreach ARCH,$(ARCHS),btfgen-$(ARCH))
-
-btfgen-%: $(OUTPUTDIR)/%.bpf.o
-       $(MAKE) -f $(MAKEFILE_DIR)/Makefile.build.btfgen BPF_OBJECT=$^ 
ARCH=$(subst amd64,x86_64,$*) btfs; \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/inspektor-gadget-0.51.0/cmd/common/image/helpers/Makefile.build.btfgen 
new/inspektor-gadget-0.51.1/cmd/common/image/helpers/Makefile.build.btfgen
--- old/inspektor-gadget-0.51.0/cmd/common/image/helpers/Makefile.build.btfgen  
2026-04-02 18:46:59.000000000 +0200
+++ new/inspektor-gadget-0.51.1/cmd/common/image/helpers/Makefile.build.btfgen  
1970-01-01 01:00:00.000000000 +0100
@@ -1,32 +0,0 @@
-# This makefile is used by the build command, don't execute it manually
-
-BPFTOOL ?= bpftool
-
-ifndef BTFHUB_ARCHIVE
-$(error BTFHUB_ARCHIVE is undefined)
-endif
-
-ifndef BPF_OBJECT
-$(error BPF_OBJECT is undefined)
-endif
-
-SOURCE_BTF_FILES = $(shell find $(BTFHUB_ARCHIVE)/ -iregex ".*$(ARCH).*" -type 
f -name '*.btf.tar.xz')
-MIN_CORE_BTF_FILES = $(patsubst $(BTFHUB_ARCHIVE)/%.btf.tar.xz, 
$(OUTPUTDIR)/btfs/$(ARCH)/%.btf, $(SOURCE_BTF_FILES))
-
-.PHONY: btfs
-btfs: $(OUTPUTDIR)/btfs-$(ARCH).tar.gz
-
-$(MIN_CORE_BTF_FILES): $(BPF_OBJECT)
-
-$(OUTPUTDIR)/btfs/$(ARCH)/%.btf: BTF_FILE = $(<:.tar.xz=)
-$(OUTPUTDIR)/btfs/$(ARCH)/%.btf: $(BTFHUB_ARCHIVE)/%.btf.tar.xz
-       tar xvfJ $< -C "$(dir $<)" --touch > /dev/null
-       mkdir -p "$(@D)"
-       if [ -f $(BTF_FILE) ]; then \
-               $(BPFTOOL) gen min_core_btf $(BTF_FILE) $@ $(BPF_OBJECT) && rm 
-fr $(BTF_FILE); \
-       else \
-               echo "$(BTF_FILE) does not exist!" >&2; \
-       fi
-
-$(OUTPUTDIR)/btfs-$(ARCH).tar.gz: $(MIN_CORE_BTF_FILES)
-       cd $(OUTPUTDIR)/btfs/$(ARCH)/ && tar c --gz -f $@ *
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/inspektor-gadget-0.51.0/examples/container-hook/Dockerfile 
new/inspektor-gadget-0.51.1/examples/container-hook/Dockerfile
--- old/inspektor-gadget-0.51.0/examples/container-hook/Dockerfile      
2026-04-02 18:46:59.000000000 +0200
+++ new/inspektor-gadget-0.51.1/examples/container-hook/Dockerfile      
2026-04-23 07:56:29.000000000 +0200
@@ -1,4 +1,4 @@
-FROM 
golang:1.25.8-trixie@sha256:bc16125656839ffe56154c675f7a9662bec2ef7d4060177239914e7c6d2fd8a8
 AS builder
+FROM 
golang:1.25.9-trixie@sha256:091e6099f4a58e9393b8cc5615622a59c1cef64481b0ffcf349ec1574449059e
 AS builder
 
 # Cache go modules so they won't be downloaded at each build
 COPY go.mod go.sum /gadget/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/inspektor-gadget-0.51.0/examples/go.mod 
new/inspektor-gadget-0.51.1/examples/go.mod
--- old/inspektor-gadget-0.51.0/examples/go.mod 2026-04-02 18:46:59.000000000 
+0200
+++ new/inspektor-gadget-0.51.1/examples/go.mod 2026-04-23 07:56:29.000000000 
+0200
@@ -134,13 +134,13 @@
        go.opentelemetry.io/auto/sdk v1.2.1 // indirect
        go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 
// indirect
        go.opentelemetry.io/contrib/instrumentation/runtime v0.67.0 // indirect
-       go.opentelemetry.io/otel v1.42.0 // indirect
+       go.opentelemetry.io/otel v1.43.0 // indirect
        go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc 
v1.42.0 // indirect
        go.opentelemetry.io/otel/exporters/prometheus v0.64.0 // indirect
-       go.opentelemetry.io/otel/metric v1.42.0 // indirect
-       go.opentelemetry.io/otel/sdk v1.42.0 // indirect
-       go.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect
-       go.opentelemetry.io/otel/trace v1.42.0 // indirect
+       go.opentelemetry.io/otel/metric v1.43.0 // indirect
+       go.opentelemetry.io/otel/sdk v1.43.0 // indirect
+       go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect
+       go.opentelemetry.io/otel/trace v1.43.0 // indirect
        go.opentelemetry.io/proto/otlp v1.9.0 // indirect
        go.yaml.in/yaml/v2 v2.4.3 // indirect
        go.yaml.in/yaml/v3 v3.0.4 // indirect
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/inspektor-gadget-0.51.0/examples/go.sum 
new/inspektor-gadget-0.51.1/examples/go.sum
--- old/inspektor-gadget-0.51.0/examples/go.sum 2026-04-02 18:46:59.000000000 
+0200
+++ new/inspektor-gadget-0.51.1/examples/go.sum 2026-04-23 07:56:29.000000000 
+0200
@@ -394,20 +394,20 @@
 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod 
h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg=
 go.opentelemetry.io/contrib/instrumentation/runtime v0.67.0 
h1:fM78cKITJ2r08cl+nw5i+hI9zWAu3iak8o1Os/ca2Ck=
 go.opentelemetry.io/contrib/instrumentation/runtime v0.67.0/go.mod 
h1:ybmlzIqGcQzwt5lAfi8TpSnHo/CI3yv1Czodmm+OJa8=
-go.opentelemetry.io/otel v1.42.0 
h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho=
-go.opentelemetry.io/otel v1.42.0/go.mod 
h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc=
+go.opentelemetry.io/otel v1.43.0 
h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
+go.opentelemetry.io/otel v1.43.0/go.mod 
h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
 go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.42.0 
h1:MdKucPl/HbzckWWEisiNqMPhRrAOQX8r4jTuGr636gk=
 go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc 
v1.42.0/go.mod h1:RolT8tWtfHcjajEH5wFIZ4Dgh5jpPdFXYV9pTAk/qjc=
 go.opentelemetry.io/otel/exporters/prometheus v0.64.0 
h1:g0LRDXMX/G1SEZtK8zl8Chm4K6GBwRkjPKE36LxiTYs=
 go.opentelemetry.io/otel/exporters/prometheus v0.64.0/go.mod 
h1:UrgcjnarfdlBDP3GjDIJWe6HTprwSazNjwsI+Ru6hro=
-go.opentelemetry.io/otel/metric v1.42.0 
h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4=
-go.opentelemetry.io/otel/metric v1.42.0/go.mod 
h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI=
-go.opentelemetry.io/otel/sdk v1.42.0 
h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo=
-go.opentelemetry.io/otel/sdk v1.42.0/go.mod 
h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts=
-go.opentelemetry.io/otel/sdk/metric v1.42.0 
h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA=
-go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod 
h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc=
-go.opentelemetry.io/otel/trace v1.42.0 
h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY=
-go.opentelemetry.io/otel/trace v1.42.0/go.mod 
h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc=
+go.opentelemetry.io/otel/metric v1.43.0 
h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
+go.opentelemetry.io/otel/metric v1.43.0/go.mod 
h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
+go.opentelemetry.io/otel/sdk v1.43.0 
h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
+go.opentelemetry.io/otel/sdk v1.43.0/go.mod 
h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
+go.opentelemetry.io/otel/sdk/metric v1.43.0 
h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw=
+go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod 
h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A=
+go.opentelemetry.io/otel/trace v1.43.0 
h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
+go.opentelemetry.io/otel/trace v1.43.0/go.mod 
h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
 go.opentelemetry.io/proto/otlp v1.9.0 
h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A=
 go.opentelemetry.io/proto/otlp v1.9.0/go.mod 
h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4=
 go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/inspektor-gadget-0.51.0/examples/kube-container-collection/Dockerfile 
new/inspektor-gadget-0.51.1/examples/kube-container-collection/Dockerfile
--- old/inspektor-gadget-0.51.0/examples/kube-container-collection/Dockerfile   
2026-04-02 18:46:59.000000000 +0200
+++ new/inspektor-gadget-0.51.1/examples/kube-container-collection/Dockerfile   
2026-04-23 07:56:29.000000000 +0200
@@ -1,4 +1,4 @@
-FROM 
golang:1.25.7-trixie@sha256:dfdd969010ba978942302cee078235da13aef030d22841e873545001d68a61a7
 AS builder
+FROM 
golang:1.25.9-trixie@sha256:091e6099f4a58e9393b8cc5615622a59c1cef64481b0ffcf349ec1574449059e
 AS builder
 
 # Cache go modules so they won't be downloaded at each build
 COPY go.mod go.sum /gadget/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/inspektor-gadget-0.51.0/go.mod 
new/inspektor-gadget-0.51.1/go.mod
--- old/inspektor-gadget-0.51.0/go.mod  2026-04-02 18:46:59.000000000 +0200
+++ new/inspektor-gadget-0.51.1/go.mod  2026-04-23 07:56:29.000000000 +0200
@@ -48,15 +48,15 @@
        github.com/vishvananda/netns v0.0.5
        go.opentelemetry.io/collector/pdata/pprofile v0.147.0
        go.opentelemetry.io/contrib/instrumentation/runtime v0.67.0
-       go.opentelemetry.io/otel v1.42.0
+       go.opentelemetry.io/otel v1.43.0
        go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.18.0
        go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc 
v1.42.0
        go.opentelemetry.io/otel/exporters/prometheus v0.64.0
        go.opentelemetry.io/otel/log v0.18.0
-       go.opentelemetry.io/otel/metric v1.42.0
-       go.opentelemetry.io/otel/sdk v1.42.0
+       go.opentelemetry.io/otel/metric v1.43.0
+       go.opentelemetry.io/otel/sdk v1.43.0
        go.opentelemetry.io/otel/sdk/log v0.18.0
-       go.opentelemetry.io/otel/sdk/metric v1.42.0
+       go.opentelemetry.io/otel/sdk/metric v1.43.0
        golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0
        golang.org/x/net v0.52.0
        golang.org/x/sync v0.20.0 // indirect
@@ -170,7 +170,7 @@
        go.opencensus.io v0.24.0 // indirect
        go.opentelemetry.io/auto/sdk v1.2.1 // indirect
        go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 
// indirect
-       go.opentelemetry.io/otel/trace v1.42.0 // indirect
+       go.opentelemetry.io/otel/trace v1.43.0 // indirect
        go.opentelemetry.io/proto/otlp v1.9.0 // indirect
        go.yaml.in/yaml/v2 v2.4.3 // indirect
        go.yaml.in/yaml/v3 v3.0.4 // indirect
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/inspektor-gadget-0.51.0/go.sum 
new/inspektor-gadget-0.51.1/go.sum
--- old/inspektor-gadget-0.51.0/go.sum  2026-04-02 18:46:59.000000000 +0200
+++ new/inspektor-gadget-0.51.1/go.sum  2026-04-23 07:56:29.000000000 +0200
@@ -442,8 +442,8 @@
 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod 
h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg=
 go.opentelemetry.io/contrib/instrumentation/runtime v0.67.0 
h1:fM78cKITJ2r08cl+nw5i+hI9zWAu3iak8o1Os/ca2Ck=
 go.opentelemetry.io/contrib/instrumentation/runtime v0.67.0/go.mod 
h1:ybmlzIqGcQzwt5lAfi8TpSnHo/CI3yv1Czodmm+OJa8=
-go.opentelemetry.io/otel v1.42.0 
h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho=
-go.opentelemetry.io/otel v1.42.0/go.mod 
h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc=
+go.opentelemetry.io/otel v1.43.0 
h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
+go.opentelemetry.io/otel v1.43.0/go.mod 
h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
 go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.18.0 
h1:deI9UQMoGFgrg5iLPgzueqFPHevDl+28YKfSpPTI6rY=
 go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.18.0/go.mod 
h1:PFx9NgpNUKXdf7J4Q3agRxMs3Y07QhTCVipKmLsMKnU=
 go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.42.0 
h1:MdKucPl/HbzckWWEisiNqMPhRrAOQX8r4jTuGr636gk=
@@ -452,18 +452,18 @@
 go.opentelemetry.io/otel/exporters/prometheus v0.64.0/go.mod 
h1:UrgcjnarfdlBDP3GjDIJWe6HTprwSazNjwsI+Ru6hro=
 go.opentelemetry.io/otel/log v0.18.0 
h1:XgeQIIBjZZrliksMEbcwMZefoOSMI1hdjiLEiiB0bAg=
 go.opentelemetry.io/otel/log v0.18.0/go.mod 
h1:KEV1kad0NofR3ycsiDH4Yjcoj0+8206I6Ox2QYFSNgI=
-go.opentelemetry.io/otel/metric v1.42.0 
h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4=
-go.opentelemetry.io/otel/metric v1.42.0/go.mod 
h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI=
-go.opentelemetry.io/otel/sdk v1.42.0 
h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo=
-go.opentelemetry.io/otel/sdk v1.42.0/go.mod 
h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts=
+go.opentelemetry.io/otel/metric v1.43.0 
h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
+go.opentelemetry.io/otel/metric v1.43.0/go.mod 
h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
+go.opentelemetry.io/otel/sdk v1.43.0 
h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
+go.opentelemetry.io/otel/sdk v1.43.0/go.mod 
h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
 go.opentelemetry.io/otel/sdk/log v0.18.0 
h1:n8OyZr7t7otkeTnPTbDNom6rW16TBYGtvyy2Gk6buQw=
 go.opentelemetry.io/otel/sdk/log v0.18.0/go.mod 
h1:C0+wxkTwKpOCZLrlJ3pewPiiQwpzycPI/u6W0Z9fuYk=
 go.opentelemetry.io/otel/sdk/log/logtest v0.18.0 
h1:l3mYuPsuBx6UKE47BVcPrZoZ0q/KER57vbj2qkgDLXA=
 go.opentelemetry.io/otel/sdk/log/logtest v0.18.0/go.mod 
h1:7cHtiVJpZebB3wybTa4NG+FUo5NPe3PROz1FqB0+qdw=
-go.opentelemetry.io/otel/sdk/metric v1.42.0 
h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA=
-go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod 
h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc=
-go.opentelemetry.io/otel/trace v1.42.0 
h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY=
-go.opentelemetry.io/otel/trace v1.42.0/go.mod 
h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc=
+go.opentelemetry.io/otel/sdk/metric v1.43.0 
h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw=
+go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod 
h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A=
+go.opentelemetry.io/otel/trace v1.43.0 
h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
+go.opentelemetry.io/otel/trace v1.43.0/go.mod 
h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
 go.opentelemetry.io/proto/otlp v1.9.0 
h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A=
 go.opentelemetry.io/proto/otlp v1.9.0/go.mod 
h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4=
 go.opentelemetry.io/proto/slim/otlp v1.9.0 
h1:fPVMv8tP3TrsqlkH1HWYUpbCY9cAIemx184VGkS6vlE=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/inspektor-gadget-0.51.0/tools/bench/Dockerfile 
new/inspektor-gadget-0.51.1/tools/bench/Dockerfile
--- old/inspektor-gadget-0.51.0/tools/bench/Dockerfile  2026-04-02 
18:46:59.000000000 +0200
+++ new/inspektor-gadget-0.51.1/tools/bench/Dockerfile  2026-04-23 
07:56:29.000000000 +0200
@@ -1,4 +1,4 @@
-FROM --platform=${BUILDPLATFORM} 
golang:1.25.8-alpine@sha256:8e02eb337d9e0ea459e041f1ee5eece41cbb61f1d83e7d883a3e2fb4862063fa
 AS builder
+FROM --platform=${BUILDPLATFORM} 
golang:1.25.9-alpine@sha256:7a00384194cf2cb68924bbb918d675f1517357433c8541bac0ab2f929b9d5447
 AS builder
 
 ARG TARGETARCH
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/inspektor-gadget-0.51.0/tools/dnstester/Dockerfile 
new/inspektor-gadget-0.51.1/tools/dnstester/Dockerfile
--- old/inspektor-gadget-0.51.0/tools/dnstester/Dockerfile      2026-04-02 
18:46:59.000000000 +0200
+++ new/inspektor-gadget-0.51.1/tools/dnstester/Dockerfile      2026-04-23 
07:56:29.000000000 +0200
@@ -1,4 +1,4 @@
-FROM --platform=${BUILDPLATFORM} 
golang:1.25.8-alpine@sha256:8e02eb337d9e0ea459e041f1ee5eece41cbb61f1d83e7d883a3e2fb4862063fa
 AS builder
+FROM --platform=${BUILDPLATFORM} 
golang:1.25.9-alpine@sha256:7a00384194cf2cb68924bbb918d675f1517357433c8541bac0ab2f929b9d5447
 AS builder
 
 ARG TARGETARCH
 

++++++ inspektor-gadget.obsinfo ++++++
--- /var/tmp/diff_new_pack.y2Oqvj/_old  2026-04-25 21:35:53.946179130 +0200
+++ /var/tmp/diff_new_pack.y2Oqvj/_new  2026-04-25 21:35:53.950179292 +0200
@@ -1,5 +1,5 @@
 name: inspektor-gadget
-version: 0.51.0
-mtime: 1775148419
-commit: 327a2e4654202a4085d3677debb8829a30dbc18f
+version: 0.51.1
+mtime: 1776923789
+commit: 59368d7bb0265142bbb60a2acd590f4f19fb0a5d
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/inspektor-gadget/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.inspektor-gadget.new.11940/vendor.tar.gz differ: 
char 12, line 1

Reply via email to