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