Skip to content

[DNM] feat: support DTK with Go#245

Open
rollandf wants to merge 1 commit intoMellanox:mainfrom
rollandf:dtk-go
Open

[DNM] feat: support DTK with Go#245
rollandf wants to merge 1 commit intoMellanox:mainfrom
rollandf:dtk-go

Conversation

@rollandf
Copy link
Member

@rollandf rollandf commented Feb 5, 2026

No description provided.

@greptile-apps
Copy link

greptile-apps bot commented Feb 5, 2026

Greptile Overview

Greptile Summary

Migrates DTK (Driver Toolkit) build from bash to Go entrypoint, consolidating Golang_RHEL_Dockerfile into RHEL_Dockerfile. The Go implementation adds proper context handling, structured logging, and safer argument parsing using go-shellquote.

Key Changes:

  • New dtk-build container mode runs compilation in DTK pod using Go entrypoint
  • Sources container orchestrates build via shared volume: copies sources, creates flags, waits for completion
  • Replaces bash script with entrypoint/internal/dtk/build.go for DTK compilation
  • Adds env validation, context cancellation support, and exponential backoff for polling
  • Shell script updated to exec Go entrypoint when USE_NEW_ENTRYPOINT=true

Issues Found:

  • Critical: RHEL_Dockerfile line 39 uses undeclared D_ARCH ARG in go_builder stage, causing cross-arch builds to fail
  • Previous comments noted portability concerns (cp -rT), hardcoded paths, and error handling that are still present but acknowledged by developers

Confidence Score: 3/5

  • Critical architecture build issue must be fixed before merge
  • Missing ARG D_ARCH in go_builder stage will cause silent architecture mismatches in multi-arch builds. Other issues flagged in previous reviews (hardcoded paths, cp -rT portability) have been acknowledged by developers as acceptable trade-offs for this environment.
  • RHEL_Dockerfile requires immediate fix for ARG declaration

Important Files Changed

Filename Overview
RHEL_Dockerfile Adds Go builder stage for entrypoint binary. D_ARCH ARG not redeclared in go_builder stage, causing build to use empty value for architecture.
entrypoint/internal/driver/driver_dtk.go Implements DTK build orchestration: setup, wait, finalize. Uses cp -rT (GNU-specific). Hardcoded /root/entrypoint path. Non-IsNotExist Stat errors treated as build complete.
entrypoint/internal/dtk/build.go Runs DTK build in separate container. Validates required env vars upfront. Uses shellquote for safe flag parsing. Context-aware waiting and execution.
entrypoint/internal/utils/cmd/cmd.go Adds custom cancel handler for context cancellation. Guards against nil Process (lines 63-65), fixing potential panic issue mentioned in previous review.

Sequence Diagram

sequenceDiagram
    participant Main as Sources Container
    participant DTK as DTK Container
    participant Shared as Shared Volume

    Main->>Main: Check if doneFlagPath exists
    alt Build not done
        Main->>Shared: Create shared directory (dtkSharedDir)
        Main->>Shared: Copy driver sources to MLNX_OFED_SRC-{version}
        Main->>Shared: Copy /root/entrypoint binary
        Main->>Shared: Write dtk.env with env vars
        Main->>Shared: Copy dtk_nic_driver_build.sh
        Main->>Shared: Create startFlagPath
        
        DTK->>DTK: Install perl and build dependencies
        DTK->>Shared: Wait for startFlagPath to exist
        Shared-->>DTK: Start flag found
        DTK->>DTK: Run install.pl with build flags
        DTK->>Shared: Create doneFlagPath
        DTK->>Shared: Remove startFlagPath
        DTK->>DTK: Sleep indefinitely
        
        Main->>Shared: Poll for doneFlagPath (exponential backoff)
        Shared-->>Main: Done flag found
    else Build already done
        Main->>Main: Log "DTK build already done"
    end
    
    Main->>Shared: Find redhat-release-* directory
    Main->>Shared: Glob and copy RPMs to inventory
    Main->>Main: Complete
Loading

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3 files reviewed, 7 comments

Edit Code Review Agent Settings | Greptile

Comment on lines 230 to 233
func (d *driverMgr) copyDir(ctx context.Context, src, dest string) error {
// Using cp -r for simplicity and preserving permissions/links
_, _, err := d.cmd.RunCommand(ctx, "cp", "-r", src, dest)
return err
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cp -r src dest creates a directory at dest/basename(src). The actual destination becomes dest/src instead of overwriting dest. Use cp -r src/. dest/ or validate the behavior matches expectations.

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3 files reviewed, 3 comments

Edit Code Review Agent Settings | Greptile

}

cmdHelper := cmd.New()
ctx := context.Background()
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

context.Background() without cancellation means the function can't be interrupted gracefully. If the DTK pod is terminated, this will hang until force-killed.

Comment on lines 91 to 94
if cfg.AppendDriverBuildFlags != "" {
// Split flags by space
flags := strings.Fields(cfg.AppendDriverBuildFlags)
installArgs = append(installArgs, flags...)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If APPEND_DRIVER_BUILD_FLAGS contains special shell characters, strings.Fields won't parse them correctly. Bash would handle quoted strings, but this splits only on whitespace.

}

// Copy entrypoint binary to shared directory
entrypointPath := "/root/entrypoint" // Assumed location based on Dockerfile
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verify /root/entrypoint exists in the container image before deployment. If missing, setup will fail.

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

10 files reviewed, 4 comments

Edit Code Review Agent Settings | Greptile

Comment on lines +109 to +116
// Copy entrypoint binary to shared directory
entrypointPath := "/root/entrypoint" // Assumed location based on Dockerfile
destEntrypointPath := filepath.Join(sharedDir, "entrypoint")
log.Info("Copying entrypoint binary", "from", entrypointPath, "to", destEntrypointPath)
// We use copyFile instead of copyDir for a single file
if _, _, err := d.cmd.RunCommand(ctx, "cp", entrypointPath, destEntrypointPath); err != nil {
return fmt.Errorf("failed to copy entrypoint binary: %w", err)
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Entrypoint binary path mismatch

dtkSetupDriverBuild copies the entrypoint from hardcoded "/root/entrypoint" (driver_dtk.go:110-116), but the loader script executes "$(dirname "$0")/entrypoint" (dtk_nic_driver_build.sh:12). If the actual binary path in the sources container differs from /root/entrypoint (e.g., installed elsewhere in the image), DTK builds will fail at runtime when the DTK container tries to exec the copied binary. This should be derived from the current executable path or passed in explicitly rather than hardcoding.

Comment on lines +247 to +252
// copyDir copies a directory recursively
func (d *driverMgr) copyDir(ctx context.Context, src, dest string) error {
// Using cp -rT to treat dest as a normal file (directory)
// This ensures contents of src are copied into dest, not src into dest/src
_, _, err := d.cmd.RunCommand(ctx, "cp", "-rT", src, dest)
return err
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Non-portable cp -rT usage

copyDir relies on cp -rT (driver_dtk.go:248-252). The -T flag is a GNU coreutils extension and is not available in some base images (e.g., BusyBox cp). If the sources container image doesn’t guarantee GNU cp, this will fail at runtime during DTK setup. Consider switching to a more portable invocation (e.g., cp -a src/. dest/ after ensuring dest exists) or documenting/enforcing the GNU coreutils dependency in the image.

Comment on lines 37 to 41
if cfg.DtkOcpStartCompileFlag == "" || cfg.DtkOcpDoneCompileFlag == "" {
err := fmt.Errorf("compilation start/completion flags not set")
log.Error(err, "aborting")
return err
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing required DTK env validation

RunBuild only checks DTK_OCP_START_COMPILE_FLAG and DTK_OCP_DONE_COMPILE_FLAG (build.go:37-41) but later unconditionally uses DTK_OCP_NIC_SHARED_DIR and DTK_OCP_COMPILED_DRIVER_VER to build the install.pl path (build.go:81-87). If either is empty, the constructed path becomes incorrect (e.g., MLNX_OFED_SRC-/install.pl) and the build fails with a confusing error. Validate these envs up front and return a clear error.

@greptile-apps
Copy link

greptile-apps bot commented Feb 5, 2026

Additional Comments (1)

entrypoint/internal/driver/driver.go
DTK build never runs

driverMgr.Build returns early unless d.containerMode == constants.DriverContainerModeSources, but the DTK path is controlled via cfg.DtkOcpDriverBuild and is only checked inside that sources-only block. This makes DTK builds unreachable in normal execution if DTK is intended to be a distinct container mode (you added dtk-build), and also means a “sources” container with DTK_OCP_DRIVER_BUILD=true won’t run dtk.RunBuild either (that code is in cmd/main.go). Clarify the intended mode gating and adjust the early-return so DTK builds can actually execute.

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

4 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

Comment on lines +85 to +86
srcDirName := fmt.Sprintf("MLNX_OFED_SRC-%s", cfg.DtkOcpCompiledDriverVer)
installScript := filepath.Join(cfg.DtkOcpNicSharedDir, srcDirName, "install.pl")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing validation for DTK_OCP_NIC_SHARED_DIR and DTK_OCP_COMPILED_DRIVER_VER before use. If either is empty, the path becomes malformed (e.g., MLNX_OFED_SRC-/install.pl). Add validation in the check at lines 37-41:

Suggested change
srcDirName := fmt.Sprintf("MLNX_OFED_SRC-%s", cfg.DtkOcpCompiledDriverVer)
installScript := filepath.Join(cfg.DtkOcpNicSharedDir, srcDirName, "install.pl")
if cfg.DtkOcpStartCompileFlag == "" || cfg.DtkOcpDoneCompileFlag == "" ||
cfg.DtkOcpNicSharedDir == "" || cfg.DtkOcpCompiledDriverVer == "" {
err := fmt.Errorf("required DTK environment variables not set")

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

12 files reviewed, 3 comments

Edit Code Review Agent Settings | Greptile

Comment on lines 60 to 64
cmd := exec.CommandContext(ctx, command, args...)
// Ensure child process is killed when context is canceled
cmd.Cancel = func() error {
return cmd.Process.Signal(syscall.SIGTERM)
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nil Process on cancel

cmd.Cancel unconditionally signals cmd.Process, but Process can be nil if the context is canceled before the process starts (e.g., immediate cancellation / failure to start). In that case cmd.Process.Signal(...) will panic. Consider guarding for cmd.Process == nil or relying on CommandContext's default cancellation behavior.

Comment on lines 37 to 41
if cfg.DtkOcpStartCompileFlag == "" || cfg.DtkOcpDoneCompileFlag == "" {
err := fmt.Errorf("compilation start/completion flags not set")
log.Error(err, "aborting")
return err
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DTK envs used empty

RunBuild validates only DTK_OCP_START_COMPILE_FLAG and DTK_OCP_DONE_COMPILE_FLAG, but it later uses DTK_OCP_NIC_SHARED_DIR and DTK_OCP_COMPILED_DRIVER_VER to build install.pl path (installScript := filepath.Join(cfg.DtkOcpNicSharedDir, srcDirName, "install.pl")). If either is empty, the path becomes malformed and the build fails with a misleading error. This should validate those envs up front too.

@greptile-apps
Copy link

greptile-apps bot commented Feb 8, 2026

Additional Comments (1)

entrypoint/internal/driver/driver.go
RPM wildcard never expands

In installRedHatDriver, RunCommand invokes rpm directly with filepath.Join(inventoryPath, "*.rpm"). Since there’s no shell here, *.rpm won’t expand, and rpm will error unless there is literally a file named *.rpm. This breaks installs on RHEL/OpenShift/SLES paths.

@rollandf
Copy link
Member Author

rollandf commented Feb 9, 2026

DTK with Go log debug level example:

# kubectl logs -n nvidia-network-operator mofed-rhel9.6-bc65bb898-ds-jrdjz -c openshift-driver-toolkit-ctr -f
+ '[' -f /mnt/shared-doca-driver-toolkit/5.14.0-570.78.1.el9_6.x86_64/dtk_start_compile ']'
+ exec /mnt/shared-doca-driver-toolkit/5.14.0-570.78.1.el9_6.x86_64/dtk_nic_driver_build.sh
Using Go entrypoint for DTK build
2026-02-08T15:18:41.904Z        INFO    cmd/main.go:75  entrypoint      {"version": "(clean), commit:, date:2026-02-08T15:08:08+00:00"}
2026-02-08T15:18:41.904Z        INFO    cmd/main.go:77  Container full version: 25.07-0.9.7.0-
2026-02-08T15:18:41.905Z        DEBUG   cmd/main.go:82  driver container config:
{
  "UnloadStorageModules": true,
  "CreateIfnamesUdev": true,
  "EnableNfsRdma": false,
  "RestoreDriverOnPodTermination": false,
  "UbuntuProToken": "",
  "DriverReadyPath": "/run/mellanox/drivers/.driver-ready",
  "MlxUdevRulesFile": "/host/etc/udev/rules.d/77-mlnx-net-names.rules",
  "LockFilePath": "/run/mellanox/drivers/.lock",
  "MlxDriversMount": "/run/mellanox/drivers",
  "SharedKernelHeadersDir": "/usr/src/",
  "NvidiaNicDriverVer": "25.07-0.9.7.0",
  "NvidiaNicDriverPath": "",
  "NvidiaNicContainerVer": "",
  "DtkOcpDriverBuild": false,
  "DtkOcpNicSharedDir": "/mnt/shared-doca-driver-toolkit/5.14.0-570.78.1.el9_6.x86_64",
  "DtkOcpCompiledDriverVer": "25.07-0.9.7.0",
  "DtkOcpStartCompileFlag": "/mnt/shared-doca-driver-toolkit/5.14.0-570.78.1.el9_6.x86_64/dtk_start_compile",
  "DtkOcpDoneCompileFlag": "/mnt/shared-doca-driver-toolkit/5.14.0-570.78.1.el9_6.x86_64/dtk_done_compile_25_07_0_9_7_0",
  "AppendDriverBuildFlags": "--without-mlnx-nfsrdma --without-mlnx-nvme",
  "NvidiaNicDriversInventoryPath": "/mnt/drivers-inventory",
  "OfedBlacklistModulesFile": "/host/etc/modprobe.d/blacklist-ofed-modules.conf",
  "OfedBlacklistModules": [
    "mlx5_core",
    "mlx5_ib",
    "ib_umad",
    "ib_uverbs",
    "ib_ipoib",
    "rdma_cm",
    "rdma_ucm",
    "ib_core",
    "ib_cm"
  ],
  "StorageModules": [
    "ib_isert",
    "nvme_rdma",
    "nvmet_rdma",
    "rpcrdma",
    "xprtrdma",
    "ib_srpt"
  ],
  "EntrypointDebug": true,
  "DebugLogFile": "/tmp/entrypoint_debug_cmds.log",
  "DebugSleepSecOnExit": 0,
  "BindDelaySec": 4
}
2026-02-08T15:18:41.905Z        INFO    cmd/main.go:89  start manager   {"mode": "dtk-build"}
2026-02-08T15:18:41.905Z        INFO    dtk/build.go:35 DTK driver build script start
2026-02-08T15:18:41.905Z        INFO    dtk/build.go:45 Installing perl
2026-02-08T15:18:41.905Z        DEBUG   cmd/cmd.go:57   RunCommand()    {"command": "dnf", "args": ["install", "-y", "perl"]}
2026-02-08T15:18:58.027Z        DEBUG   cmd/cmd.go:83   RunCommand() command=dnf args=[install -y perl] error=<nil>
stdout:
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Red Hat Universal Base Image 9 (RPMs) - BaseOS  267 kB/s | 533 kB     00:01
Red Hat Universal Base Image 9 (RPMs) - AppStre 3.0 MB/s | 2.6 MB     00:00
Red Hat Universal Base Image 9 (RPMs) - CodeRea 440 kB/s | 288 kB     00:00
Dependencies resolved.
================================================================================
 Package                     Arch   Version               Repository       Size
================================================================================
Installing:
 perl                        x86_64 4:5.32.1-481.1.el9_6  ubi-9-appstream 8.2 k
Installing dependencies:
 libdatrie                   x86_64 0.2.13-4.el9          ubi-9-appstream  34 k
 libthai                     x86_64 0.1.28-8.el9          ubi-9-appstream 211 k
 perl-Algorithm-Diff         noarch 1.2010-4.el9          ubi-9-appstream  51 k
 perl-Archive-Tar            noarch 2.38-6.el9            ubi-9-appstream  76 k
 perl-Archive-Zip            noarch 1.68-6.el9            ubi-9-appstream 116 k
 perl-Attribute-Handlers     noarch 1.01-481.1.el9_6      ubi-9-appstream  27 k
 perl-AutoSplit              noarch 5.74-481.1.el9_6      ubi-9-appstream  21 k
 perl-Benchmark              noarch 1.23-481.1.el9_6      ubi-9-appstream  26 k
 perl-CPAN                   noarch 2.29-5.el9_6          ubi-9-appstream 576 k
 perl-CPAN-Meta              noarch 2.150010-460.el9      ubi-9-appstream 206 k
 perl-CPAN-Meta-Requirements noarch 2.140-461.el9         ubi-9-appstream  34 k
 perl-CPAN-Meta-YAML         noarch 0.018-461.el9         ubi-9-appstream  29 k
 perl-Compress-Bzip2         x86_64 2.28-5.el9            ubi-9-appstream  74 k
 perl-Compress-Raw-Bzip2     x86_64 2.101-5.el9           ubi-9-appstream  38 k
 perl-Compress-Raw-Lzma      x86_64 2.101-3.el9           ubi-9-appstream  55 k
 perl-Compress-Raw-Zlib      x86_64 2.101-5.el9           ubi-9-appstream  64 k
 perl-Config-Extensions      noarch 0.03-481.1.el9_6      ubi-9-appstream  12 k
 perl-Config-Perl-V          noarch 0.33-4.el9            ubi-9-appstream  24 k
 perl-DBM_Filter             noarch 0.06-481.1.el9_6      ubi-9-appstream  31 k
 perl-DB_File                x86_64 1.855-4.el9           ubi-9-appstream  84 k
 perl-Data-OptList           noarch 0.110-17.el9          ubi-9-appstream  30 k
 perl-Data-Section           noarch 0.200007-14.el9       ubi-9-appstream  27 k
 perl-Devel-PPPort           x86_64 3.62-4.el9            ubi-9-appstream 216 k
 perl-Devel-Peek             x86_64 1.28-481.1.el9_6      ubi-9-appstream  32 k
 perl-Devel-SelfStubber      noarch 1.06-481.1.el9_6      ubi-9-appstream  14 k
 perl-Devel-Size             x86_64 0.83-10.el9           ubi-9-appstream  34 k
 perl-Digest-SHA             x86_64 1:6.02-461.el9        ubi-9-appstream  66 k
 perl-Digest-SHA1            x86_64 2.13-34.el9           ubi-9-appstream  56 k
 perl-DirHandle              noarch 1.05-481.1.el9_6      ubi-9-appstream  12 k
 perl-Dumpvalue              noarch 2.27-481.1.el9_6      ubi-9-appstream  18 k
 perl-Encode-devel           x86_64 4:3.08-462.el9        ubi-9-appstream  44 k
 perl-English                noarch 1.11-481.1.el9_6      ubi-9-appstream  13 k
 perl-Env                    noarch 1.04-460.el9          ubi-9-appstream  22 k
 perl-ExtUtils-CBuilder      noarch 1:0.280236-4.el9      ubi-9-appstream  53 k
 perl-ExtUtils-Command       noarch 2:7.60-3.el9          ubi-9-appstream  16 k
 perl-ExtUtils-Constant      noarch 0.25-481.1.el9_6      ubi-9-appstream  46 k
 perl-ExtUtils-Embed         noarch 1.35-481.1.el9_6      ubi-9-appstream  17 k
 perl-ExtUtils-Install       noarch 2.20-4.el9            ubi-9-appstream  47 k
 perl-ExtUtils-MM-Utils      noarch 2:7.60-3.el9          ubi-9-appstream  14 k
 perl-ExtUtils-MakeMaker     noarch 2:7.60-3.el9          ubi-9-appstream 304 k
 perl-ExtUtils-Manifest      noarch 1:1.73-4.el9          ubi-9-appstream  37 k
 perl-ExtUtils-Miniperl      noarch 1.09-481.1.el9_6      ubi-9-appstream  15 k
 perl-ExtUtils-ParseXS       noarch 1:3.40-460.el9        ubi-9-appstream 190 k
 perl-File-Compare           noarch 1.100.600-481.1.el9_6 ubi-9-appstream  13 k
 perl-File-Copy              noarch 2.34-481.1.el9_6      ubi-9-appstream  20 k
 perl-File-DosGlob           x86_64 1.12-481.1.el9_6      ubi-9-appstream  19 k
 perl-File-Fetch             noarch 1.00-4.el9            ubi-9-appstream  33 k
 perl-File-HomeDir           noarch 1.006-4.el9           ubi-9-appstream  64 k
 perl-File-Which             noarch 1.23-10.el9           ubi-9-appstream  24 k
 perl-FileCache              noarch 1.10-481.1.el9_6      ubi-9-appstream  14 k
 perl-Filter                 x86_64 2:1.60-4.el9          ubi-9-appstream  95 k
 perl-Filter-Simple          noarch 0.96-460.el9          ubi-9-appstream  29 k
 perl-FindBin                noarch 1.51-481.1.el9_6      ubi-9-appstream  14 k
 perl-GDBM_File              x86_64 1.18-481.1.el9_6      ubi-9-appstream  22 k
 perl-Hash-Util              x86_64 0.23-481.1.el9_6      ubi-9-appstream  34 k
 perl-Hash-Util-FieldHash    x86_64 1.20-481.1.el9_6      ubi-9-appstream  37 k
 perl-I18N-Collate           noarch 1.02-481.1.el9_6      ubi-9-appstream  14 k
 perl-I18N-LangTags          noarch 0.44-481.1.el9_6      ubi-9-appstream  54 k
 perl-I18N-Langinfo          x86_64 0.19-481.1.el9_6      ubi-9-appstream  22 k
 perl-IO-Compress            noarch 2.102-4.el9           ubi-9-appstream 274 k
 perl-IO-Compress-Lzma       noarch 2.101-4.el9           ubi-9-appstream  82 k
 perl-IO-Zlib                noarch 1:1.11-4.el9          ubi-9-appstream  21 k
 perl-IPC-Cmd                noarch 2:1.04-461.el9        ubi-9-appstream  42 k
 perl-IPC-SysV               x86_64 2.09-4.el9            ubi-9-appstream  47 k
 perl-IPC-System-Simple      noarch 1.30-6.el9            ubi-9-appstream  43 k
 perl-Importer               noarch 0.026-4.el9           ubi-9-appstream  42 k
 perl-JSON-PP                noarch 1:4.06-4.el9          ubi-9-appstream  69 k
 perl-Locale-Maketext        noarch 1.29-461.el9          ubi-9-appstream  99 k
 perl-Locale-Maketext-Simple noarch 1:0.21-481.1.el9_6    ubi-9-appstream  17 k
 perl-MIME-Charset           noarch 1.012.2-15.el9        ubi-9-appstream  53 k
 perl-MRO-Compat             noarch 0.13-15.el9           ubi-9-appstream  22 k
 perl-Math-BigInt            noarch 1:1.9998.18-460.el9   ubi-9-appstream 194 k
 perl-Math-BigInt-FastCalc   x86_64 0.500.900-460.el9     ubi-9-appstream  32 k
 perl-Math-BigRat            noarch 0.2614-460.el9        ubi-9-appstream  41 k
 perl-Math-Complex           noarch 1.59-481.1.el9_6      ubi-9-appstream  46 k
 perl-Memoize                noarch 1.03-481.1.el9_6      ubi-9-appstream  56 k
 perl-Module-Build           noarch 2:0.42.31-9.el9       ubi-9-appstream 268 k
 perl-Module-CoreList        noarch 1:5.20240609-1.el9    ubi-9-appstream  90 k
 perl-Module-CoreList-tools  noarch 1:5.20240609-1.el9    ubi-9-appstream  18 k
 perl-Module-Load            noarch 1:0.36-4.el9          ubi-9-appstream  20 k
 perl-Module-Load-Conditional
                             noarch 0.74-4.el9            ubi-9-appstream  25 k
 perl-Module-Loaded          noarch 1:0.08-481.1.el9_6    ubi-9-appstream  13 k
 perl-Module-Metadata        noarch 1.000037-460.el9      ubi-9-appstream  38 k
 perl-Module-Signature       noarch 0.88-1.el9            ubi-9-appstream  87 k
 perl-NEXT                   noarch 0.67-481.1.el9_6      ubi-9-appstream  21 k
 perl-Net                    noarch 1.02-481.1.el9_6      ubi-9-appstream  25 k
 perl-Net-Ping               noarch 2.74-5.el9            ubi-9-appstream  52 k
 perl-ODBM_File              x86_64 1.16-481.1.el9_6      ubi-9-appstream  22 k
 perl-Object-HashBase        noarch 0.009-7.el9           ubi-9-appstream  28 k
 perl-Opcode                 x86_64 1.48-481.1.el9_6      ubi-9-appstream  36 k
 perl-Package-Generator      noarch 1.106-23.el9          ubi-9-appstream  26 k
 perl-Params-Check           noarch 1:0.38-461.el9        ubi-9-appstream  24 k
 perl-Params-Util            x86_64 1.102-5.el9           ubi-9-appstream  38 k
 perl-Perl-OSType            noarch 1.010-461.el9         ubi-9-appstream  26 k
 perl-PerlIO-via-QuotedPrint noarch 0.09-4.el9            ubi-9-appstream  25 k
 perl-Pod-Checker            noarch 4:1.74-4.el9          ubi-9-appstream  34 k
 perl-Pod-Functions          noarch 1.13-481.1.el9_6      ubi-9-appstream  13 k
 perl-Pod-Html               noarch 1.25-481.1.el9_6      ubi-9-appstream  26 k
 perl-Safe                   noarch 2.41-481.1.el9_6      ubi-9-appstream  25 k
 perl-Search-Dict            noarch 1.07-481.1.el9_6      ubi-9-appstream  13 k
 perl-SelfLoader             noarch 1.26-481.1.el9_6      ubi-9-appstream  21 k
 perl-Software-License       noarch 0.103014-12.el9       ubi-9-appstream 144 k
 perl-Sub-Exporter           noarch 0.987-27.el9          ubi-9-appstream  77 k
 perl-Sub-Install            noarch 0.928-28.el9          ubi-9-appstream  25 k
 perl-Sys-Hostname           x86_64 1.23-481.1.el9_6      ubi-9-appstream  17 k
 perl-Sys-Syslog             x86_64 0.36-461.el9          ubi-9-appstream  51 k
 perl-Term-Complete          noarch 1.403-481.1.el9_6     ubi-9-appstream  13 k
 perl-Term-ReadLine          noarch 1.17-481.1.el9_6      ubi-9-appstream  19 k
 perl-Term-Size-Perl         x86_64 0.031-12.el9          ubi-9-appstream  25 k
 perl-Term-Table             noarch 0.015-8.el9           ubi-9-appstream  40 k
 perl-Test                   noarch 1.31-481.1.el9_6      ubi-9-appstream  28 k
 perl-Test-Harness           noarch 1:3.42-461.el9        ubi-9-appstream 299 k
 perl-Test-Simple            noarch 3:1.302183-4.el9      ubi-9-appstream 630 k
 perl-Text-Abbrev            noarch 1.02-481.1.el9_6      ubi-9-appstream  12 k
 perl-Text-Balanced          noarch 2.04-4.el9            ubi-9-appstream  50 k
 perl-Text-Diff              noarch 1.45-13.el9           ubi-9-appstream  44 k
 perl-Text-Glob              noarch 0.11-15.el9           ubi-9-appstream  16 k
 perl-Text-Template          noarch 1.59-5.el9            ubi-9-appstream  63 k
 perl-Thread                 noarch 3.05-481.1.el9_6      ubi-9-appstream  18 k
 perl-Thread-Queue           noarch 3.14-460.el9          ubi-9-appstream  24 k
 perl-Thread-Semaphore       noarch 2.13-481.1.el9_6      ubi-9-appstream  15 k
 perl-Tie                    noarch 4.6-481.1.el9_6       ubi-9-appstream  31 k
 perl-Tie-File               noarch 1.06-481.1.el9_6      ubi-9-appstream  43 k
 perl-Tie-Memoize            noarch 1.1-481.1.el9_6       ubi-9-appstream  14 k
 perl-Tie-RefHash            noarch 1.40-4.el9            ubi-9-appstream  26 k
 perl-Time                   noarch 1.03-481.1.el9_6      ubi-9-appstream  18 k
 perl-Time-HiRes             x86_64 4:1.9764-462.el9      ubi-9-appstream  61 k
 perl-Time-Piece             x86_64 1.3401-481.1.el9_6    ubi-9-appstream  40 k
 perl-Unicode-Collate        x86_64 1.29-4.el9            ubi-9-appstream 764 k
 perl-Unicode-Normalize      x86_64 1.27-461.el9          ubi-9-appstream  94 k
 perl-Unicode-UCD            noarch 0.75-481.1.el9_6      ubi-9-appstream  78 k
 perl-User-pwent             noarch 1.03-481.1.el9_6      ubi-9-appstream  20 k
 perl-autodie                noarch 2.34-4.el9            ubi-9-appstream 101 k
 perl-autouse                noarch 1.11-481.1.el9_6      ubi-9-appstream  13 k
 perl-bignum                 noarch 0.51-460.el9          ubi-9-appstream  47 k
 perl-blib                   noarch 1.07-481.1.el9_6      ubi-9-appstream  12 k
 perl-debugger               noarch 1.56-481.1.el9_6      ubi-9-appstream 133 k
 perl-deprecate              noarch 0.04-481.1.el9_6      ubi-9-appstream  14 k
 perl-devel                  x86_64 4:5.32.1-481.1.el9_6  ubi-9-appstream 676 k
 perl-diagnostics            noarch 1.37-481.1.el9_6      ubi-9-appstream 210 k
 perl-doc                    noarch 5.32.1-481.1.el9_6    ubi-9-appstream 4.6 M
 perl-encoding               x86_64 4:3.00-462.el9        ubi-9-appstream  64 k
 perl-encoding-warnings      noarch 0.13-481.1.el9_6      ubi-9-appstream  16 k
 perl-experimental           noarch 0.022-6.el9           ubi-9-appstream  24 k
 perl-fields                 noarch 2.27-481.1.el9_6      ubi-9-appstream  16 k
 perl-filetest               noarch 1.03-481.1.el9_6      ubi-9-appstream  14 k
 perl-inc-latest             noarch 2:0.500-20.el9        ubi-9-appstream  27 k
 perl-less                   noarch 0.03-481.1.el9_6      ubi-9-appstream  13 k
 perl-libnetcfg              noarch 4:5.32.1-481.1.el9_6  ubi-9-appstream  16 k
 perl-local-lib              noarch 2.000024-13.el9       ubi-9-appstream  72 k
 perl-locale                 noarch 1.09-481.1.el9_6      ubi-9-appstream  13 k
 perl-macros                 noarch 4:5.32.1-481.1.el9_6  ubi-9-appstream  10 k
 perl-meta-notation          noarch 5.32.1-481.1.el9_6    ubi-9-appstream 9.4 k
 perl-open                   noarch 1.12-481.1.el9_6      ubi-9-appstream  16 k
 perl-perlfaq                noarch 5.20210520-1.el9      ubi-9-appstream 380 k
 perl-ph                     x86_64 5.32.1-481.1.el9_6    ubi-9-appstream  45 k
 perl-sigtrap                noarch 1.09-481.1.el9_6      ubi-9-appstream  15 k
 perl-sort                   noarch 2.04-481.1.el9_6      ubi-9-appstream  13 k
 perl-threads                x86_64 1:2.25-460.el9        ubi-9-appstream  61 k
 perl-threads-shared         x86_64 1.61-460.el9          ubi-9-appstream  48 k
 perl-utils                  noarch 5.32.1-481.1.el9_6    ubi-9-appstream  55 k
 perl-version                x86_64 7:0.99.28-4.el9       ubi-9-appstream  67 k
 perl-vmsish                 noarch 1.04-481.1.el9_6      ubi-9-appstream  14 k
 python3-pyparsing           noarch 2.4.7-9.el9           ubi-9-baseos    154 k
 sombok                      x86_64 2.4.0-16.el9          ubi-9-appstream  51 k
 systemtap-sdt-devel         x86_64 5.3-3.el9             ubi-9-appstream  69 k
 systemtap-sdt-dtrace        x86_64 5.3-3.el9             ubi-9-appstream  70 k
Installing weak dependencies:
 perl-CPAN-DistnameInfo      noarch 0.12-23.el9           ubi-9-appstream  17 k
 perl-Encode-Locale          noarch 1.05-21.el9           ubi-9-appstream  21 k
 perl-Term-Size-Any          noarch 0.002-35.el9          ubi-9-appstream  16 k
 perl-Unicode-LineBreak      x86_64 2019.001-11.el9       ubi-9-appstream 129 k

Transaction Summary
================================================================================
Install  172 Packages

Total download size: 16 M
Installed size: 45 M
Downloading Packages:
(1/172): libdatrie-0.2.13-4.el9.x86_64.rpm      115 kB/s |  34 kB     00:00
(2/172): perl-Algorithm-Diff-1.2010-4.el9.noarc 459 kB/s |  51 kB     00:00
(3/172): python3-pyparsing-2.4.7-9.el9.noarch.r 373 kB/s | 154 kB     00:00
(4/172): libthai-0.1.28-8.el9.x86_64.rpm        467 kB/s | 211 kB     00:00
(5/172): perl-Archive-Zip-1.68-6.el9.noarch.rpm 1.1 MB/s | 116 kB     00:00
(6/172): perl-CPAN-DistnameInfo-0.12-23.el9.noa 247 kB/s |  17 kB     00:00
(7/172): perl-Archive-Tar-2.38-6.el9.noarch.rpm 628 kB/s |  76 kB     00:00
(8/172): perl-CPAN-Meta-Requirements-2.140-461. 486 kB/s |  34 kB     00:00
(9/172): perl-CPAN-Meta-YAML-0.018-461.el9.noar 366 kB/s |  29 kB     00:00
(10/172): perl-CPAN-Meta-2.150010-460.el9.noarc 1.6 MB/s | 206 kB     00:00
(11/172): perl-Compress-Bzip2-2.28-5.el9.x86_64 921 kB/s |  74 kB     00:00
(12/172): perl-Compress-Raw-Bzip2-2.101-5.el9.x 462 kB/s |  38 kB     00:00
(13/172): perl-Compress-Raw-Lzma-2.101-3.el9.x8 727 kB/s |  55 kB     00:00
(14/172): perl-Compress-Raw-Zlib-2.101-5.el9.x8 837 kB/s |  64 kB     00:00
(15/172): perl-Config-Perl-V-0.33-4.el9.noarch. 313 kB/s |  24 kB     00:00
(16/172): perl-DB_File-1.855-4.el9.x86_64.rpm   1.0 MB/s |  84 kB     00:00
(17/172): perl-Data-OptList-0.110-17.el9.noarch 425 kB/s |  30 kB     00:00
(18/172): perl-Data-Section-0.200007-14.el9.noa 356 kB/s |  27 kB     00:00
(19/172): perl-Devel-Size-0.83-10.el9.x86_64.rp 483 kB/s |  34 kB     00:00
(20/172): perl-Devel-PPPort-3.62-4.el9.x86_64.r 1.9 MB/s | 216 kB     00:00
(21/172): perl-Digest-SHA-6.02-461.el9.x86_64.r 677 kB/s |  66 kB     00:00
(22/172): perl-Digest-SHA1-2.13-34.el9.x86_64.r 739 kB/s |  56 kB     00:00
(23/172): perl-Encode-Locale-1.05-21.el9.noarch 310 kB/s |  21 kB     00:00
(24/172): perl-Encode-devel-3.08-462.el9.x86_64 499 kB/s |  44 kB     00:00
(25/172): perl-Env-1.04-460.el9.noarch.rpm      317 kB/s |  22 kB     00:00
(26/172): perl-ExtUtils-CBuilder-0.280236-4.el9 720 kB/s |  53 kB     00:00
(27/172): perl-ExtUtils-Command-7.60-3.el9.noar 228 kB/s |  16 kB     00:00
(28/172): perl-ExtUtils-Install-2.20-4.el9.noar 638 kB/s |  47 kB     00:00
(29/172): perl-ExtUtils-MM-Utils-7.60-3.el9.noa 208 kB/s |  14 kB     00:00
(30/172): perl-ExtUtils-Manifest-1.73-4.el9.noa 520 kB/s |  37 kB     00:00
(31/172): perl-ExtUtils-ParseXS-3.40-460.el9.no 1.9 MB/s | 190 kB     00:00
(32/172): perl-File-Fetch-1.00-4.el9.noarch.rpm 456 kB/s |  33 kB     00:00
(33/172): perl-File-HomeDir-1.006-4.el9.noarch. 856 kB/s |  64 kB     00:00
(34/172): perl-File-Which-1.23-10.el9.noarch.rp 346 kB/s |  24 kB     00:00
(35/172): perl-ExtUtils-MakeMaker-7.60-3.el9.no 1.3 MB/s | 304 kB     00:00
(36/172): perl-Filter-1.60-4.el9.x86_64.rpm     1.1 MB/s |  95 kB     00:00
(37/172): perl-Filter-Simple-0.96-460.el9.noarc 345 kB/s |  29 kB     00:00
(38/172): perl-IO-Compress-Lzma-2.101-4.el9.noa 898 kB/s |  82 kB     00:00
(39/172): perl-IO-Compress-2.102-4.el9.noarch.r 2.0 MB/s | 274 kB     00:00
(40/172): perl-IO-Zlib-1.11-4.el9.noarch.rpm    156 kB/s |  21 kB     00:00
(41/172): perl-IPC-SysV-2.09-4.el9.x86_64.rpm   589 kB/s |  47 kB     00:00
(42/172): perl-IPC-Cmd-1.04-461.el9.noarch.rpm  391 kB/s |  42 kB     00:00
(43/172): perl-Importer-0.026-4.el9.noarch.rpm  443 kB/s |  42 kB     00:00
(44/172): perl-IPC-System-Simple-1.30-6.el9.noa 452 kB/s |  43 kB     00:00
(45/172): perl-JSON-PP-4.06-4.el9.noarch.rpm    688 kB/s |  69 kB     00:00
(46/172): perl-MIME-Charset-1.012.2-15.el9.noar 654 kB/s |  53 kB     00:00
(47/172): perl-Locale-Maketext-1.29-461.el9.noa 1.1 MB/s |  99 kB     00:00
(48/172): perl-MRO-Compat-0.13-15.el9.noarch.rp 326 kB/s |  22 kB     00:00
(49/172): perl-Math-BigInt-FastCalc-0.500.900-4 466 kB/s |  32 kB     00:00
(50/172): perl-Math-BigInt-1.9998.18-460.el9.no 1.8 MB/s | 194 kB     00:00
(51/172): perl-Math-BigRat-0.2614-460.el9.noarc 514 kB/s |  41 kB     00:00
(52/172): perl-Module-Load-0.36-4.el9.noarch.rp 290 kB/s |  20 kB     00:00
(53/172): perl-Module-Build-0.42.31-9.el9.noarc 2.4 MB/s | 268 kB     00:00
(54/172): perl-Module-Load-Conditional-0.74-4.e 368 kB/s |  25 kB     00:00
(55/172): perl-Module-Metadata-1.000037-460.el9 542 kB/s |  38 kB     00:00
(56/172): perl-Module-Signature-0.88-1.el9.noar 1.1 MB/s |  87 kB     00:00
(57/172): perl-Net-Ping-2.74-5.el9.noarch.rpm   703 kB/s |  52 kB     00:00
(58/172): perl-Object-HashBase-0.009-7.el9.noar 411 kB/s |  28 kB     00:00
(59/172): perl-Params-Check-0.38-461.el9.noarch 349 kB/s |  24 kB     00:00
(60/172): perl-Package-Generator-1.106-23.el9.n 293 kB/s |  26 kB     00:00
(61/172): perl-Params-Util-1.102-5.el9.x86_64.r 528 kB/s |  38 kB     00:00
(62/172): perl-Perl-OSType-1.010-461.el9.noarch 377 kB/s |  26 kB     00:00
(63/172): perl-PerlIO-via-QuotedPrint-0.09-4.el 360 kB/s |  25 kB     00:00
(64/172): perl-Pod-Checker-1.74-4.el9.noarch.rp 491 kB/s |  34 kB     00:00
(65/172): perl-Software-License-0.103014-12.el9 1.6 MB/s | 144 kB     00:00
(66/172): perl-Sub-Exporter-0.987-27.el9.noarch 1.0 MB/s |  77 kB     00:00
(67/172): perl-Sub-Install-0.928-28.el9.noarch. 358 kB/s |  25 kB     00:00
(68/172): perl-Term-Size-Any-0.002-35.el9.noarc 242 kB/s |  16 kB     00:00
(69/172): perl-Sys-Syslog-0.36-461.el9.x86_64.r 691 kB/s |  51 kB     00:00
(70/172): perl-Term-Size-Perl-0.031-12.el9.x86_ 359 kB/s |  25 kB     00:00
(71/172): perl-Term-Table-0.015-8.el9.noarch.rp 571 kB/s |  40 kB     00:00
(72/172): perl-Test-Harness-3.42-461.el9.noarch 2.5 MB/s | 299 kB     00:00
(73/172): perl-Text-Balanced-2.04-4.el9.noarch. 652 kB/s |  50 kB     00:00
(74/172): perl-Text-Diff-1.45-13.el9.noarch.rpm 633 kB/s |  44 kB     00:00
(75/172): perl-Test-Simple-1.302183-4.el9.noarc 3.4 MB/s | 630 kB     00:00
(76/172): perl-Text-Glob-0.11-15.el9.noarch.rpm 211 kB/s |  16 kB     00:00
(77/172): perl-Text-Template-1.59-5.el9.noarch. 867 kB/s |  63 kB     00:00
(78/172): perl-Thread-Queue-3.14-460.el9.noarch 349 kB/s |  24 kB     00:00
(79/172): perl-Tie-RefHash-1.40-4.el9.noarch.rp 374 kB/s |  26 kB     00:00
(80/172): perl-Time-HiRes-1.9764-462.el9.x86_64 775 kB/s |  61 kB     00:00
(81/172): perl-Unicode-LineBreak-2019.001-11.el 1.6 MB/s | 129 kB     00:00
(82/172): perl-Unicode-Collate-1.29-4.el9.x86_6 6.5 MB/s | 764 kB     00:00
(83/172): perl-Unicode-Normalize-1.27-461.el9.x 1.2 MB/s |  94 kB     00:00
(84/172): perl-autodie-2.34-4.el9.noarch.rpm    1.1 MB/s | 101 kB     00:00
(85/172): perl-bignum-0.51-460.el9.noarch.rpm   675 kB/s |  47 kB     00:00
(86/172): perl-encoding-3.00-462.el9.x86_64.rpm 878 kB/s |  64 kB     00:00
(87/172): perl-inc-latest-0.500-20.el9.noarch.r 376 kB/s |  27 kB     00:00
(88/172): perl-experimental-0.022-6.el9.noarch. 284 kB/s |  24 kB     00:00
(89/172): perl-local-lib-2.000024-13.el9.noarch 978 kB/s |  72 kB     00:00
(90/172): perl-threads-2.25-460.el9.x86_64.rpm  902 kB/s |  61 kB     00:00
(91/172): perl-threads-shared-1.61-460.el9.x86_ 668 kB/s |  48 kB     00:00
(92/172): perl-version-0.99.28-4.el9.x86_64.rpm 912 kB/s |  67 kB     00:00
(93/172): sombok-2.4.0-16.el9.x86_64.rpm        735 kB/s |  51 kB     00:00
(94/172): perl-5.32.1-481.1.el9_6.x86_64.rpm    123 kB/s | 8.2 kB     00:00
(95/172): perl-Attribute-Handlers-1.01-481.1.el 397 kB/s |  27 kB     00:00
(96/172): perl-Benchmark-1.23-481.1.el9_6.noarc 405 kB/s |  26 kB     00:00
(97/172): perl-AutoSplit-5.74-481.1.el9_6.noarc 254 kB/s |  21 kB     00:00
(98/172): perl-Config-Extensions-0.03-481.1.el9 183 kB/s |  12 kB     00:00
(99/172): perl-DBM_Filter-0.06-481.1.el9_6.noar 448 kB/s |  31 kB     00:00
(100/172): perl-CPAN-2.29-5.el9_6.noarch.rpm    4.0 MB/s | 576 kB     00:00
(101/172): perl-Devel-Peek-1.28-481.1.el9_6.x86 479 kB/s |  32 kB     00:00
(102/172): perl-DirHandle-1.05-481.1.el9_6.noar 187 kB/s |  12 kB     00:00
(103/172): perl-Devel-SelfStubber-1.06-481.1.el 148 kB/s |  14 kB     00:00
(104/172): perl-Dumpvalue-2.27-481.1.el9_6.noar 273 kB/s |  18 kB     00:00
(105/172): perl-English-1.11-481.1.el9_6.noarch 204 kB/s |  13 kB     00:00
(106/172): perl-ExtUtils-Constant-0.25-481.1.el 624 kB/s |  46 kB     00:00
(107/172): perl-ExtUtils-Embed-1.35-481.1.el9_6 267 kB/s |  17 kB     00:00
(108/172): perl-ExtUtils-Miniperl-1.09-481.1.el 229 kB/s |  15 kB     00:00
(109/172): perl-File-Compare-1.100.600-481.1.el 182 kB/s |  13 kB     00:00
(110/172): perl-File-Copy-2.34-481.1.el9_6.noar 299 kB/s |  20 kB     00:00
(111/172): perl-File-DosGlob-1.12-481.1.el9_6.x 289 kB/s |  19 kB     00:00
(112/172): perl-FileCache-1.10-481.1.el9_6.noar 218 kB/s |  14 kB     00:00
(113/172): perl-FindBin-1.51-481.1.el9_6.noarch 206 kB/s |  14 kB     00:00
(114/172): perl-GDBM_File-1.18-481.1.el9_6.x86_ 337 kB/s |  22 kB     00:00
(115/172): perl-Hash-Util-0.23-481.1.el9_6.x86_ 497 kB/s |  34 kB     00:00
(116/172): perl-Hash-Util-FieldHash-1.20-481.1. 443 kB/s |  37 kB     00:00
(117/172): perl-I18N-Collate-1.02-481.1.el9_6.n 192 kB/s |  14 kB     00:00
(118/172): perl-I18N-LangTags-0.44-481.1.el9_6. 769 kB/s |  54 kB     00:00
(119/172): perl-I18N-Langinfo-0.19-481.1.el9_6. 341 kB/s |  22 kB     00:00
(120/172): perl-Locale-Maketext-Simple-0.21-481 267 kB/s |  17 kB     00:00
(121/172): perl-Math-Complex-1.59-481.1.el9_6.n 669 kB/s |  46 kB     00:00
(122/172): perl-Memoize-1.03-481.1.el9_6.noarch 831 kB/s |  56 kB     00:00
(123/172): perl-Module-CoreList-5.20240609-1.el 1.3 MB/s |  90 kB     00:00
(124/172): perl-Module-CoreList-tools-5.2024060 270 kB/s |  18 kB     00:00
(125/172): perl-Module-Loaded-0.08-481.1.el9_6. 201 kB/s |  13 kB     00:00
(126/172): perl-NEXT-0.67-481.1.el9_6.noarch.rp 317 kB/s |  21 kB     00:00
(127/172): perl-Net-1.02-481.1.el9_6.noarch.rpm 375 kB/s |  25 kB     00:00
(128/172): perl-ODBM_File-1.16-481.1.el9_6.x86_ 340 kB/s |  22 kB     00:00
(129/172): perl-Opcode-1.48-481.1.el9_6.x86_64. 544 kB/s |  36 kB     00:00
(130/172): perl-Pod-Functions-1.13-481.1.el9_6. 203 kB/s |  13 kB     00:00
(131/172): perl-Pod-Html-1.25-481.1.el9_6.noarc 402 kB/s |  26 kB     00:00
(132/172): perl-Safe-2.41-481.1.el9_6.noarch.rp 379 kB/s |  25 kB     00:00
(133/172): perl-Search-Dict-1.07-481.1.el9_6.no 195 kB/s |  13 kB     00:00
(134/172): perl-SelfLoader-1.26-481.1.el9_6.noa 327 kB/s |  21 kB     00:00
(135/172): perl-Sys-Hostname-1.23-481.1.el9_6.x 255 kB/s |  17 kB     00:00
(136/172): perl-Term-Complete-1.403-481.1.el9_6 193 kB/s |  13 kB     00:00
(137/172): perl-Term-ReadLine-1.17-481.1.el9_6. 285 kB/s |  19 kB     00:00
(138/172): perl-Test-1.31-481.1.el9_6.noarch.rp 417 kB/s |  28 kB     00:00
(139/172): perl-Text-Abbrev-1.02-481.1.el9_6.no 172 kB/s |  12 kB     00:00
(140/172): perl-Thread-3.05-481.1.el9_6.noarch. 272 kB/s |  18 kB     00:00
(141/172): perl-Thread-Semaphore-2.13-481.1.el9 237 kB/s |  15 kB     00:00
(142/172): perl-Tie-4.6-481.1.el9_6.noarch.rpm  462 kB/s |  31 kB     00:00
(143/172): perl-Tie-Memoize-1.1-481.1.el9_6.noa 212 kB/s |  14 kB     00:00
(144/172): perl-Tie-File-1.06-481.1.el9_6.noarc 536 kB/s |  43 kB     00:00
(145/172): perl-Time-1.03-481.1.el9_6.noarch.rp 278 kB/s |  18 kB     00:00
(146/172): perl-Time-Piece-1.3401-481.1.el9_6.x 612 kB/s |  40 kB     00:00
(147/172): perl-Unicode-UCD-0.75-481.1.el9_6.no 1.1 MB/s |  78 kB     00:00
(148/172): perl-User-pwent-1.03-481.1.el9_6.noa 307 kB/s |  20 kB     00:00
(149/172): perl-blib-1.07-481.1.el9_6.noarch.rp 187 kB/s |  12 kB     00:00
(150/172): perl-autouse-1.11-481.1.el9_6.noarch 159 kB/s |  13 kB     00:00
(151/172): perl-debugger-1.56-481.1.el9_6.noarc 1.6 MB/s | 133 kB     00:00
(152/172): perl-deprecate-0.04-481.1.el9_6.noar 218 kB/s |  14 kB     00:00
(153/172): perl-devel-5.32.1-481.1.el9_6.x86_64 6.9 MB/s | 676 kB     00:00
(154/172): perl-diagnostics-1.37-481.1.el9_6.no 2.3 MB/s | 210 kB     00:00
(155/172): perl-encoding-warnings-0.13-481.1.el 250 kB/s |  16 kB     00:00
(156/172): perl-fields-2.27-481.1.el9_6.noarch. 240 kB/s |  16 kB     00:00
(157/172): perl-filetest-1.03-481.1.el9_6.noarc 221 kB/s |  14 kB     00:00
(158/172): perl-less-0.03-481.1.el9_6.noarch.rp 194 kB/s |  13 kB     00:00
(159/172): perl-doc-5.32.1-481.1.el9_6.noarch.r  19 MB/s | 4.6 MB     00:00
(160/172): perl-libnetcfg-5.32.1-481.1.el9_6.no 242 kB/s |  16 kB     00:00
(161/172): perl-locale-1.09-481.1.el9_6.noarch. 204 kB/s |  13 kB     00:00
(162/172): perl-macros-5.32.1-481.1.el9_6.noarc 157 kB/s |  10 kB     00:00
(163/172): perl-meta-notation-5.32.1-481.1.el9_ 144 kB/s | 9.4 kB     00:00
(164/172): perl-open-1.12-481.1.el9_6.noarch.rp 244 kB/s |  16 kB     00:00
(165/172): perl-ph-5.32.1-481.1.el9_6.x86_64.rp 684 kB/s |  45 kB     00:00
(166/172): perl-perlfaq-5.20210520-1.el9.noarch 4.5 MB/s | 380 kB     00:00
(167/172): perl-sigtrap-1.09-481.1.el9_6.noarch 233 kB/s |  15 kB     00:00
(168/172): perl-sort-2.04-481.1.el9_6.noarch.rp 201 kB/s |  13 kB     00:00
(169/172): perl-utils-5.32.1-481.1.el9_6.noarch 824 kB/s |  55 kB     00:00
(170/172): perl-vmsish-1.04-481.1.el9_6.noarch. 209 kB/s |  14 kB     00:00
(171/172): systemtap-sdt-devel-5.3-3.el9.x86_64 1.0 MB/s |  69 kB     00:00
(172/172): systemtap-sdt-dtrace-5.3-3.el9.x86_6 843 kB/s |  70 kB     00:00
--------------------------------------------------------------------------------
Total                                           3.2 MB/s |  16 MB     00:04
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Installing       : perl-File-Copy-2.34-481.1.el9_6.noarch               1/172
  Installing       : perl-ExtUtils-Manifest-1:1.73-4.el9.noarch           2/172
  Installing       : perl-Time-HiRes-4:1.9764-462.el9.x86_64              3/172
  Installing       : perl-File-Compare-1.100.600-481.1.el9_6.noarch       4/172
  Installing       : perl-threads-1:2.25-460.el9.x86_64                   5/172
  Installing       : perl-threads-shared-1.61-460.el9.x86_64              6/172
  Installing       : perl-ExtUtils-ParseXS-1:3.40-460.el9.noarch          7/172
  Installing       : perl-Compress-Raw-Zlib-2.101-5.el9.x86_64            8/172
  Installing       : perl-meta-notation-5.32.1-481.1.el9_6.noarch         9/172
  Installing       : perl-locale-1.09-481.1.el9_6.noarch                 10/172
  Installing       : perl-version-7:0.99.28-4.el9.x86_64                 11/172
  Installing       : perl-CPAN-Meta-Requirements-2.140-461.el9.noarch    12/172
  Installing       : perl-Module-Metadata-1.000037-460.el9.noarch        13/172
  Installing       : perl-Module-CoreList-1:5.20240609-1.el9.noarch      14/172
  Installing       : perl-Tie-4.6-481.1.el9_6.noarch                     15/172
  Installing       : perl-Term-ReadLine-1.17-481.1.el9_6.noarch          16/172
  Installing       : perl-Devel-Peek-1.28-481.1.el9_6.x86_64             17/172
  Installing       : perl-Unicode-Normalize-1.27-461.el9.x86_64          18/172
  Installing       : perl-Perl-OSType-1.010-461.el9.noarch               19/172
  Installing       : perl-Module-Load-1:0.36-4.el9.noarch                20/172
  Installing       : perl-Filter-2:1.60-4.el9.x86_64                     21/172
  Installing       : perl-Digest-SHA-1:6.02-461.el9.x86_64               22/172
  Installing       : perl-encoding-4:3.00-462.el9.x86_64                 23/172
  Installing       : perl-Dumpvalue-2.27-481.1.el9_6.noarch              24/172
  Installing       : perl-Pod-Html-1.25-481.1.el9_6.noarch               25/172
  Installing       : perl-Net-Ping-2.74-5.el9.noarch                     26/172
  Installing       : perl-ExtUtils-Command-2:7.60-3.el9.noarch           27/172
  Installing       : perl-doc-5.32.1-481.1.el9_6.noarch                  28/172
  Installing       : perl-autouse-1.11-481.1.el9_6.noarch                29/172
  Installing       : perl-User-pwent-1.03-481.1.el9_6.noarch             30/172
  Installing       : perl-Sys-Hostname-1.23-481.1.el9_6.x86_64           31/172
  Installing       : perl-SelfLoader-1.26-481.1.el9_6.noarch             32/172
  Installing       : perl-Opcode-1.48-481.1.el9_6.x86_64                 33/172
  Installing       : perl-Safe-2.41-481.1.el9_6.noarch                   34/172
  Installing       : perl-Math-Complex-1.59-481.1.el9_6.noarch           35/172
  Installing       : perl-Math-BigInt-1:1.9998.18-460.el9.noarch         36/172
  Installing       : perl-JSON-PP-1:4.06-4.el9.noarch                    37/172
  Installing       : perl-Math-BigRat-0.2614-460.el9.noarch              38/172
  Installing       : perl-I18N-Langinfo-0.19-481.1.el9_6.x86_64          39/172
  Installing       : perl-I18N-LangTags-0.44-481.1.el9_6.noarch          40/172
  Installing       : perl-Locale-Maketext-1.29-461.el9.noarch            41/172
  Installing       : perl-Locale-Maketext-Simple-1:0.21-481.1.el9_6.n    42/172
  Installing       : perl-Params-Check-1:0.38-461.el9.noarch             43/172
  Installing       : perl-Module-Load-Conditional-0.74-4.el9.noarch      44/172
  Installing       : perl-Hash-Util-FieldHash-1.20-481.1.el9_6.x86_64    45/172
  Installing       : perl-Hash-Util-0.23-481.1.el9_6.x86_64              46/172
  Installing       : perl-ExtUtils-Constant-0.25-481.1.el9_6.noarch      47/172
  Installing       : perl-DirHandle-1.05-481.1.el9_6.noarch              48/172
  Installing       : perl-Benchmark-1.23-481.1.el9_6.noarch              49/172
  Installing       : perl-Test-Harness-1:3.42-461.el9.noarch             50/172
  Installing       : perl-AutoSplit-5.74-481.1.el9_6.noarch              51/172
  Installing       : perl-Tie-RefHash-1.40-4.el9.noarch                  52/172
  Installing       : perl-Text-Balanced-2.04-4.el9.noarch                53/172
  Installing       : perl-Sub-Install-0.928-28.el9.noarch                54/172
  Installing       : perl-Params-Util-1.102-5.el9.x86_64                 55/172
  Installing       : perl-ExtUtils-MM-Utils-2:7.60-3.el9.noarch          56/172
  Installing       : perl-IPC-Cmd-2:1.04-461.el9.noarch                  57/172
  Installing       : perl-Devel-PPPort-3.62-4.el9.x86_64                 58/172
  Installing       : perl-Compress-Raw-Bzip2-2.101-5.el9.x86_64          59/172
  Installing       : perl-IO-Compress-2.102-4.el9.noarch                 60/172
  Installing       : perl-IO-Zlib-1:1.11-4.el9.noarch                    61/172
  Installing       : perl-CPAN-Meta-YAML-0.018-461.el9.noarch            62/172
  Installing       : perl-CPAN-Meta-2.150010-460.el9.noarch              63/172
  Installing       : perl-DBM_Filter-0.06-481.1.el9_6.noarch             64/172
  Installing       : perl-File-Fetch-1.00-4.el9.noarch                   65/172
  Installing       : perl-Data-OptList-0.110-17.el9.noarch               66/172
  Installing       : perl-Filter-Simple-0.96-460.el9.noarch              67/172
  Installing       : perl-fields-2.27-481.1.el9_6.noarch                 68/172
  Installing       : perl-Encode-Locale-1.05-21.el9.noarch               69/172
  Installing       : perl-bignum-0.51-460.el9.noarch                     70/172
  Installing       : perl-Math-BigInt-FastCalc-0.500.900-460.el9.x86_    71/172
  Installing       : perl-Devel-SelfStubber-1.06-481.1.el9_6.noarch      72/172
  Installing       : perl-open-1.12-481.1.el9_6.noarch                   73/172
  Installing       : perl-Unicode-Collate-1.29-4.el9.x86_64              74/172
  Installing       : perl-Unicode-UCD-0.75-481.1.el9_6.noarch            75/172
  Installing       : perl-debugger-1.56-481.1.el9_6.noarch               76/172
  Installing       : perl-Env-1.04-460.el9.noarch                        77/172
  Installing       : perl-Module-CoreList-tools-1:5.20240609-1.el9.no    78/172
  Installing       : perl-experimental-0.022-6.el9.noarch                79/172
  Installing       : perl-sigtrap-1.09-481.1.el9_6.noarch                80/172
  Installing       : perl-Archive-Zip-1.68-6.el9.noarch                  81/172
  Installing       : perl-Thread-Queue-3.14-460.el9.noarch               82/172
  Installing       : perl-Thread-3.05-481.1.el9_6.noarch                 83/172
  Installing       : perl-Thread-Semaphore-2.13-481.1.el9_6.noarch       84/172
  Installing       : perl-vmsish-1.04-481.1.el9_6.noarch                 85/172
  Installing       : perl-utils-5.32.1-481.1.el9_6.noarch                86/172
  Installing       : perl-sort-2.04-481.1.el9_6.noarch                   87/172
  Installing       : perl-ph-5.32.1-481.1.el9_6.x86_64                   88/172
  Installing       : perl-perlfaq-5.20210520-1.el9.noarch                89/172
  Installing       : perl-macros-4:5.32.1-481.1.el9_6.noarch             90/172
  Installing       : perl-less-0.03-481.1.el9_6.noarch                   91/172
  Installing       : perl-filetest-1.03-481.1.el9_6.noarch               92/172
  Installing       : perl-encoding-warnings-0.13-481.1.el9_6.noarch      93/172
  Installing       : perl-diagnostics-1.37-481.1.el9_6.noarch            94/172
  Installing       : perl-deprecate-0.04-481.1.el9_6.noarch              95/172
  Installing       : perl-blib-1.07-481.1.el9_6.noarch                   96/172
  Installing       : perl-Time-Piece-1.3401-481.1.el9_6.x86_64           97/172
  Installing       : perl-Time-1.03-481.1.el9_6.noarch                   98/172
  Installing       : perl-Tie-Memoize-1.1-481.1.el9_6.noarch             99/172
  Installing       : perl-Tie-File-1.06-481.1.el9_6.noarch              100/172
  Installing       : perl-Text-Abbrev-1.02-481.1.el9_6.noarch           101/172
  Installing       : perl-Test-1.31-481.1.el9_6.noarch                  102/172
  Installing       : perl-Term-Complete-1.403-481.1.el9_6.noarch        103/172
  Installing       : perl-Search-Dict-1.07-481.1.el9_6.noarch           104/172
  Installing       : perl-Pod-Functions-1.13-481.1.el9_6.noarch         105/172
  Installing       : perl-ODBM_File-1.16-481.1.el9_6.x86_64             106/172
  Installing       : perl-Net-1.02-481.1.el9_6.noarch                   107/172
  Installing       : perl-NEXT-0.67-481.1.el9_6.noarch                  108/172
  Installing       : perl-Module-Loaded-1:0.08-481.1.el9_6.noarch       109/172
  Installing       : perl-Memoize-1.03-481.1.el9_6.noarch               110/172
  Installing       : perl-I18N-Collate-1.02-481.1.el9_6.noarch          111/172
  Installing       : perl-GDBM_File-1.18-481.1.el9_6.x86_64             112/172
  Installing       : perl-FindBin-1.51-481.1.el9_6.noarch               113/172
  Installing       : perl-FileCache-1.10-481.1.el9_6.noarch             114/172
  Installing       : perl-File-DosGlob-1.12-481.1.el9_6.x86_64          115/172
  Installing       : perl-English-1.11-481.1.el9_6.noarch               116/172
  Installing       : perl-Config-Extensions-0.03-481.1.el9_6.noarch     117/172
  Installing       : perl-Attribute-Handlers-1.01-481.1.el9_6.noarch    118/172
  Installing       : perl-local-lib-2.000024-13.el9.noarch              119/172
  Installing       : perl-Text-Template-1.59-5.el9.noarch               120/172
  Installing       : perl-Text-Glob-0.11-15.el9.noarch                  121/172
  Installing       : perl-Term-Size-Perl-0.031-12.el9.x86_64            122/172
  Installing       : perl-Term-Size-Any-0.002-35.el9.noarch             123/172
  Installing       : perl-Sys-Syslog-0.36-461.el9.x86_64                124/172
  Installing       : perl-Pod-Checker-4:1.74-4.el9.noarch               125/172
  Installing       : perl-PerlIO-via-QuotedPrint-0.09-4.el9.noarch      126/172
  Installing       : perl-Package-Generator-1.106-23.el9.noarch         127/172
  Installing       : perl-Sub-Exporter-0.987-27.el9.noarch              128/172
  Installing       : perl-Object-HashBase-0.009-7.el9.noarch            129/172
  Installing       : perl-MRO-Compat-0.13-15.el9.noarch                 130/172
  Installing       : perl-Data-Section-0.200007-14.el9.noarch           131/172
  Installing       : perl-Software-License-0.103014-12.el9.noarch       132/172
  Installing       : perl-MIME-Charset-1.012.2-15.el9.noarch            133/172
  Installing       : perl-Importer-0.026-4.el9.noarch                   134/172
  Installing       : perl-IPC-System-Simple-1.30-6.el9.noarch           135/172
  Installing       : perl-autodie-2.34-4.el9.noarch                     136/172
  Installing       : perl-IPC-SysV-2.09-4.el9.x86_64                    137/172
  Installing       : perl-File-Which-1.23-10.el9.noarch                 138/172
  Installing       : perl-File-HomeDir-1.006-4.el9.noarch               139/172
  Installing       : perl-Digest-SHA1-2.13-34.el9.x86_64                140/172
  Installing       : perl-Devel-Size-0.83-10.el9.x86_64                 141/172
  Installing       : perl-DB_File-1.855-4.el9.x86_64                    142/172
  Installing       : perl-Config-Perl-V-0.33-4.el9.noarch               143/172
  Installing       : perl-Compress-Raw-Lzma-2.101-3.el9.x86_64          144/172
  Installing       : perl-IO-Compress-Lzma-2.101-4.el9.noarch           145/172
  Installing       : perl-Compress-Bzip2-2.28-5.el9.x86_64              146/172
  Installing       : perl-CPAN-DistnameInfo-0.12-23.el9.noarch          147/172
  Installing       : perl-Algorithm-Diff-1.2010-4.el9.noarch            148/172
  Installing       : perl-Text-Diff-1.45-13.el9.noarch                  149/172
  Installing       : perl-Archive-Tar-2.38-6.el9.noarch                 150/172
  Installing       : perl-Module-Signature-0.88-1.el9.noarch            151/172
  Installing       : libdatrie-0.2.13-4.el9.x86_64                      152/172
  Installing       : libthai-0.1.28-8.el9.x86_64                        153/172
  Installing       : sombok-2.4.0-16.el9.x86_64                         154/172
  Installing       : perl-Unicode-LineBreak-2019.001-11.el9.x86_64      155/172
  Installing       : perl-Term-Table-0.015-8.el9.noarch                 156/172
  Installing       : perl-Test-Simple-3:1.302183-4.el9.noarch           157/172
  Installing       : python3-pyparsing-2.4.7-9.el9.noarch               158/172
  Installing       : systemtap-sdt-dtrace-5.3-3.el9.x86_64              159/172
  Installing       : systemtap-sdt-devel-5.3-3.el9.x86_64               160/172
  Installing       : perl-ExtUtils-Install-2.20-4.el9.noarch            161/172
  Installing       : perl-devel-4:5.32.1-481.1.el9_6.x86_64             162/172
  Installing       : perl-ExtUtils-MakeMaker-2:7.60-3.el9.noarch        163/172
  Installing       : perl-ExtUtils-CBuilder-1:0.280236-4.el9.noarch     164/172
  Installing       : perl-ExtUtils-Embed-1.35-481.1.el9_6.noarch        165/172
  Installing       : perl-ExtUtils-Miniperl-1.09-481.1.el9_6.noarch     166/172
  Installing       : perl-libnetcfg-4:5.32.1-481.1.el9_6.noarch         167/172
  Installing       : perl-Encode-devel-4:3.08-462.el9.x86_64            168/172
  Installing       : perl-inc-latest-2:0.500-20.el9.noarch              169/172
  Installing       : perl-Module-Build-2:0.42.31-9.el9.noarch           170/172
  Installing       : perl-CPAN-2.29-5.el9_6.noarch                      171/172
  Installing       : perl-4:5.32.1-481.1.el9_6.x86_64                   172/172
  Running scriptlet: perl-4:5.32.1-481.1.el9_6.x86_64                   172/172
  Verifying        : python3-pyparsing-2.4.7-9.el9.noarch                 1/172
  Verifying        : libdatrie-0.2.13-4.el9.x86_64                        2/172
  Verifying        : libthai-0.1.28-8.el9.x86_64                          3/172
  Verifying        : perl-Algorithm-Diff-1.2010-4.el9.noarch              4/172
  Verifying        : perl-Archive-Tar-2.38-6.el9.noarch                   5/172
  Verifying        : perl-Archive-Zip-1.68-6.el9.noarch                   6/172
  Verifying        : perl-CPAN-DistnameInfo-0.12-23.el9.noarch            7/172
  Verifying        : perl-CPAN-Meta-2.150010-460.el9.noarch               8/172
  Verifying        : perl-CPAN-Meta-Requirements-2.140-461.el9.noarch     9/172
  Verifying        : perl-CPAN-Meta-YAML-0.018-461.el9.noarch            10/172
  Verifying        : perl-Compress-Bzip2-2.28-5.el9.x86_64               11/172
  Verifying        : perl-Compress-Raw-Bzip2-2.101-5.el9.x86_64          12/172
  Verifying        : perl-Compress-Raw-Lzma-2.101-3.el9.x86_64           13/172
  Verifying        : perl-Compress-Raw-Zlib-2.101-5.el9.x86_64           14/172
  Verifying        : perl-Config-Perl-V-0.33-4.el9.noarch                15/172
  Verifying        : perl-DB_File-1.855-4.el9.x86_64                     16/172
  Verifying        : perl-Data-OptList-0.110-17.el9.noarch               17/172
  Verifying        : perl-Data-Section-0.200007-14.el9.noarch            18/172
  Verifying        : perl-Devel-PPPort-3.62-4.el9.x86_64                 19/172
  Verifying        : perl-Devel-Size-0.83-10.el9.x86_64                  20/172
  Verifying        : perl-Digest-SHA-1:6.02-461.el9.x86_64               21/172
  Verifying        : perl-Digest-SHA1-2.13-34.el9.x86_64                 22/172
  Verifying        : perl-Encode-Locale-1.05-21.el9.noarch               23/172
  Verifying        : perl-Encode-devel-4:3.08-462.el9.x86_64             24/172
  Verifying        : perl-Env-1.04-460.el9.noarch                        25/172
  Verifying        : perl-ExtUtils-CBuilder-1:0.280236-4.el9.noarch      26/172
  Verifying        : perl-ExtUtils-Command-2:7.60-3.el9.noarch           27/172
  Verifying        : perl-ExtUtils-Install-2.20-4.el9.noarch             28/172
  Verifying        : perl-ExtUtils-MM-Utils-2:7.60-3.el9.noarch          29/172
  Verifying        : perl-ExtUtils-MakeMaker-2:7.60-3.el9.noarch         30/172
  Verifying        : perl-ExtUtils-Manifest-1:1.73-4.el9.noarch          31/172
  Verifying        : perl-ExtUtils-ParseXS-1:3.40-460.el9.noarch         32/172
  Verifying        : perl-File-Fetch-1.00-4.el9.noarch                   33/172
  Verifying        : perl-File-HomeDir-1.006-4.el9.noarch                34/172
  Verifying        : perl-File-Which-1.23-10.el9.noarch                  35/172
  Verifying        : perl-Filter-2:1.60-4.el9.x86_64                     36/172
  Verifying        : perl-Filter-Simple-0.96-460.el9.noarch              37/172
  Verifying        : perl-IO-Compress-2.102-4.el9.noarch                 38/172
  Verifying        : perl-IO-Compress-Lzma-2.101-4.el9.noarch            39/172
  Verifying        : perl-IO-Zlib-1:1.11-4.el9.noarch                    40/172
  Verifying        : perl-IPC-Cmd-2:1.04-461.el9.noarch                  41/172
  Verifying        : perl-IPC-SysV-2.09-4.el9.x86_64                     42/172
  Verifying        : perl-IPC-System-Simple-1.30-6.el9.noarch            43/172
  Verifying        : perl-Importer-0.026-4.el9.noarch                    44/172
  Verifying        : perl-JSON-PP-1:4.06-4.el9.noarch                    45/172
  Verifying        : perl-Locale-Maketext-1.29-461.el9.noarch            46/172
  Verifying        : perl-MIME-Charset-1.012.2-15.el9.noarch             47/172
  Verifying        : perl-MRO-Compat-0.13-15.el9.noarch                  48/172
  Verifying        : perl-Math-BigInt-1:1.9998.18-460.el9.noarch         49/172
  Verifying        : perl-Math-BigInt-FastCalc-0.500.900-460.el9.x86_    50/172
  Verifying        : perl-Math-BigRat-0.2614-460.el9.noarch              51/172
  Verifying        : perl-Module-Build-2:0.42.31-9.el9.noarch            52/172
  Verifying        : perl-Module-Load-1:0.36-4.el9.noarch                53/172
  Verifying        : perl-Module-Load-Conditional-0.74-4.el9.noarch      54/172
  Verifying        : perl-Module-Metadata-1.000037-460.el9.noarch        55/172
  Verifying        : perl-Module-Signature-0.88-1.el9.noarch             56/172
  Verifying        : perl-Net-Ping-2.74-5.el9.noarch                     57/172
  Verifying        : perl-Object-HashBase-0.009-7.el9.noarch             58/172
  Verifying        : perl-Package-Generator-1.106-23.el9.noarch          59/172
  Verifying        : perl-Params-Check-1:0.38-461.el9.noarch             60/172
  Verifying        : perl-Params-Util-1.102-5.el9.x86_64                 61/172
  Verifying        : perl-Perl-OSType-1.010-461.el9.noarch               62/172
  Verifying        : perl-PerlIO-via-QuotedPrint-0.09-4.el9.noarch       63/172
  Verifying        : perl-Pod-Checker-4:1.74-4.el9.noarch                64/172
  Verifying        : perl-Software-License-0.103014-12.el9.noarch        65/172
  Verifying        : perl-Sub-Exporter-0.987-27.el9.noarch               66/172
  Verifying        : perl-Sub-Install-0.928-28.el9.noarch                67/172
  Verifying        : perl-Sys-Syslog-0.36-461.el9.x86_64                 68/172
  Verifying        : perl-Term-Size-Any-0.002-35.el9.noarch              69/172
  Verifying        : perl-Term-Size-Perl-0.031-12.el9.x86_64             70/172
  Verifying        : perl-Term-Table-0.015-8.el9.noarch                  71/172
  Verifying        : perl-Test-Harness-1:3.42-461.el9.noarch             72/172
  Verifying        : perl-Test-Simple-3:1.302183-4.el9.noarch            73/172
  Verifying        : perl-Text-Balanced-2.04-4.el9.noarch                74/172
  Verifying        : perl-Text-Diff-1.45-13.el9.noarch                   75/172
  Verifying        : perl-Text-Glob-0.11-15.el9.noarch                   76/172
  Verifying        : perl-Text-Template-1.59-5.el9.noarch                77/172
  Verifying        : perl-Thread-Queue-3.14-460.el9.noarch               78/172
  Verifying        : perl-Tie-RefHash-1.40-4.el9.noarch                  79/172
  Verifying        : perl-Time-HiRes-4:1.9764-462.el9.x86_64             80/172
  Verifying        : perl-Unicode-Collate-1.29-4.el9.x86_64              81/172
  Verifying        : perl-Unicode-LineBreak-2019.001-11.el9.x86_64       82/172
  Verifying        : perl-Unicode-Normalize-1.27-461.el9.x86_64          83/172
  Verifying        : perl-autodie-2.34-4.el9.noarch                      84/172
  Verifying        : perl-bignum-0.51-460.el9.noarch                     85/172
  Verifying        : perl-encoding-4:3.00-462.el9.x86_64                 86/172
  Verifying        : perl-experimental-0.022-6.el9.noarch                87/172
  Verifying        : perl-inc-latest-2:0.500-20.el9.noarch               88/172
  Verifying        : perl-local-lib-2.000024-13.el9.noarch               89/172
  Verifying        : perl-threads-1:2.25-460.el9.x86_64                  90/172
  Verifying        : perl-threads-shared-1.61-460.el9.x86_64             91/172
  Verifying        : perl-version-7:0.99.28-4.el9.x86_64                 92/172
  Verifying        : sombok-2.4.0-16.el9.x86_64                          93/172
  Verifying        : perl-4:5.32.1-481.1.el9_6.x86_64                    94/172
  Verifying        : perl-Attribute-Handlers-1.01-481.1.el9_6.noarch     95/172
  Verifying        : perl-AutoSplit-5.74-481.1.el9_6.noarch              96/172
  Verifying        : perl-Benchmark-1.23-481.1.el9_6.noarch              97/172
  Verifying        : perl-CPAN-2.29-5.el9_6.noarch                       98/172
  Verifying        : perl-Config-Extensions-0.03-481.1.el9_6.noarch      99/172
  Verifying        : perl-DBM_Filter-0.06-481.1.el9_6.noarch            100/172
  Verifying        : perl-Devel-Peek-1.28-481.1.el9_6.x86_64            101/172
  Verifying        : perl-Devel-SelfStubber-1.06-481.1.el9_6.noarch     102/172
  Verifying        : perl-DirHandle-1.05-481.1.el9_6.noarch             103/172
  Verifying        : perl-Dumpvalue-2.27-481.1.el9_6.noarch             104/172
  Verifying        : perl-English-1.11-481.1.el9_6.noarch               105/172
  Verifying        : perl-ExtUtils-Constant-0.25-481.1.el9_6.noarch     106/172
  Verifying        : perl-ExtUtils-Embed-1.35-481.1.el9_6.noarch        107/172
  Verifying        : perl-ExtUtils-Miniperl-1.09-481.1.el9_6.noarch     108/172
  Verifying        : perl-File-Compare-1.100.600-481.1.el9_6.noarch     109/172
  Verifying        : perl-File-Copy-2.34-481.1.el9_6.noarch             110/172
  Verifying        : perl-File-DosGlob-1.12-481.1.el9_6.x86_64          111/172
  Verifying        : perl-FileCache-1.10-481.1.el9_6.noarch             112/172
  Verifying        : perl-FindBin-1.51-481.1.el9_6.noarch               113/172
  Verifying        : perl-GDBM_File-1.18-481.1.el9_6.x86_64             114/172
  Verifying        : perl-Hash-Util-0.23-481.1.el9_6.x86_64             115/172
  Verifying        : perl-Hash-Util-FieldHash-1.20-481.1.el9_6.x86_64   116/172
  Verifying        : perl-I18N-Collate-1.02-481.1.el9_6.noarch          117/172
  Verifying        : perl-I18N-LangTags-0.44-481.1.el9_6.noarch         118/172
  Verifying        : perl-I18N-Langinfo-0.19-481.1.el9_6.x86_64         119/172
  Verifying        : perl-Locale-Maketext-Simple-1:0.21-481.1.el9_6.n   120/172
  Verifying        : perl-Math-Complex-1.59-481.1.el9_6.noarch          121/172
  Verifying        : perl-Memoize-1.03-481.1.el9_6.noarch               122/172
  Verifying        : perl-Module-CoreList-1:5.20240609-1.el9.noarch     123/172
  Verifying        : perl-Module-CoreList-tools-1:5.20240609-1.el9.no   124/172
  Verifying        : perl-Module-Loaded-1:0.08-481.1.el9_6.noarch       125/172
  Verifying        : perl-NEXT-0.67-481.1.el9_6.noarch                  126/172
  Verifying        : perl-Net-1.02-481.1.el9_6.noarch                   127/172
  Verifying        : perl-ODBM_File-1.16-481.1.el9_6.x86_64             128/172
  Verifying        : perl-Opcode-1.48-481.1.el9_6.x86_64                129/172
  Verifying        : perl-Pod-Functions-1.13-481.1.el9_6.noarch         130/172
  Verifying        : perl-Pod-Html-1.25-481.1.el9_6.noarch              131/172
  Verifying        : perl-Safe-2.41-481.1.el9_6.noarch                  132/172
  Verifying        : perl-Search-Dict-1.07-481.1.el9_6.noarch           133/172
  Verifying        : perl-SelfLoader-1.26-481.1.el9_6.noarch            134/172
  Verifying        : perl-Sys-Hostname-1.23-481.1.el9_6.x86_64          135/172
  Verifying        : perl-Term-Complete-1.403-481.1.el9_6.noarch        136/172
  Verifying        : perl-Term-ReadLine-1.17-481.1.el9_6.noarch         137/172
  Verifying        : perl-Test-1.31-481.1.el9_6.noarch                  138/172
  Verifying        : perl-Text-Abbrev-1.02-481.1.el9_6.noarch           139/172
  Verifying        : perl-Thread-3.05-481.1.el9_6.noarch                140/172
  Verifying        : perl-Thread-Semaphore-2.13-481.1.el9_6.noarch      141/172
  Verifying        : perl-Tie-4.6-481.1.el9_6.noarch                    142/172
  Verifying        : perl-Tie-File-1.06-481.1.el9_6.noarch              143/172
  Verifying        : perl-Tie-Memoize-1.1-481.1.el9_6.noarch            144/172
  Verifying        : perl-Time-1.03-481.1.el9_6.noarch                  145/172
  Verifying        : perl-Time-Piece-1.3401-481.1.el9_6.x86_64          146/172
  Verifying        : perl-Unicode-UCD-0.75-481.1.el9_6.noarch           147/172
  Verifying        : perl-User-pwent-1.03-481.1.el9_6.noarch            148/172
  Verifying        : perl-autouse-1.11-481.1.el9_6.noarch               149/172
  Verifying        : perl-blib-1.07-481.1.el9_6.noarch                  150/172
  Verifying        : perl-debugger-1.56-481.1.el9_6.noarch              151/172
  Verifying        : perl-deprecate-0.04-481.1.el9_6.noarch             152/172
  Verifying        : perl-devel-4:5.32.1-481.1.el9_6.x86_64             153/172
  Verifying        : perl-diagnostics-1.37-481.1.el9_6.noarch           154/172
  Verifying        : perl-doc-5.32.1-481.1.el9_6.noarch                 155/172
  Verifying        : perl-encoding-warnings-0.13-481.1.el9_6.noarch     156/172
  Verifying        : perl-fields-2.27-481.1.el9_6.noarch                157/172
  Verifying        : perl-filetest-1.03-481.1.el9_6.noarch              158/172
  Verifying        : perl-less-0.03-481.1.el9_6.noarch                  159/172
  Verifying        : perl-libnetcfg-4:5.32.1-481.1.el9_6.noarch         160/172
  Verifying        : perl-locale-1.09-481.1.el9_6.noarch                161/172
  Verifying        : perl-macros-4:5.32.1-481.1.el9_6.noarch            162/172
  Verifying        : perl-meta-notation-5.32.1-481.1.el9_6.noarch       163/172
  Verifying        : perl-open-1.12-481.1.el9_6.noarch                  164/172
  Verifying        : perl-perlfaq-5.20210520-1.el9.noarch               165/172
  Verifying        : perl-ph-5.32.1-481.1.el9_6.x86_64                  166/172
  Verifying        : perl-sigtrap-1.09-481.1.el9_6.noarch               167/172
  Verifying        : perl-sort-2.04-481.1.el9_6.noarch                  168/172
  Verifying        : perl-utils-5.32.1-481.1.el9_6.noarch               169/172
  Verifying        : perl-vmsish-1.04-481.1.el9_6.noarch                170/172
  Verifying        : systemtap-sdt-devel-5.3-3.el9.x86_64               171/172
  Verifying        : systemtap-sdt-dtrace-5.3-3.el9.x86_64              172/172
Installed products updated.

Installed:
  libdatrie-0.2.13-4.el9.x86_64
  libthai-0.1.28-8.el9.x86_64
  perl-4:5.32.1-481.1.el9_6.x86_64
  perl-Algorithm-Diff-1.2010-4.el9.noarch
  perl-Archive-Tar-2.38-6.el9.noarch
  perl-Archive-Zip-1.68-6.el9.noarch
  perl-Attribute-Handlers-1.01-481.1.el9_6.noarch
  perl-AutoSplit-5.74-481.1.el9_6.noarch
  perl-Benchmark-1.23-481.1.el9_6.noarch
  perl-CPAN-2.29-5.el9_6.noarch
  perl-CPAN-DistnameInfo-0.12-23.el9.noarch
  perl-CPAN-Meta-2.150010-460.el9.noarch
  perl-CPAN-Meta-Requirements-2.140-461.el9.noarch
  perl-CPAN-Meta-YAML-0.018-461.el9.noarch
  perl-Compress-Bzip2-2.28-5.el9.x86_64
  perl-Compress-Raw-Bzip2-2.101-5.el9.x86_64
  perl-Compress-Raw-Lzma-2.101-3.el9.x86_64
  perl-Compress-Raw-Zlib-2.101-5.el9.x86_64
  perl-Config-Extensions-0.03-481.1.el9_6.noarch
  perl-Config-Perl-V-0.33-4.el9.noarch
  perl-DBM_Filter-0.06-481.1.el9_6.noarch
  perl-DB_File-1.855-4.el9.x86_64
  perl-Data-OptList-0.110-17.el9.noarch
  perl-Data-Section-0.200007-14.el9.noarch
  perl-Devel-PPPort-3.62-4.el9.x86_64
  perl-Devel-Peek-1.28-481.1.el9_6.x86_64
  perl-Devel-SelfStubber-1.06-481.1.el9_6.noarch
  perl-Devel-Size-0.83-10.el9.x86_64
  perl-Digest-SHA-1:6.02-461.el9.x86_64
  perl-Digest-SHA1-2.13-34.el9.x86_64
  perl-DirHandle-1.05-481.1.el9_6.noarch
  perl-Dumpvalue-2.27-481.1.el9_6.noarch
  perl-Encode-Locale-1.05-21.el9.noarch
  perl-Encode-devel-4:3.08-462.el9.x86_64
  perl-English-1.11-481.1.el9_6.noarch
  perl-Env-1.04-460.el9.noarch
  perl-ExtUtils-CBuilder-1:0.280236-4.el9.noarch
  perl-ExtUtils-Command-2:7.60-3.el9.noarch
  perl-ExtUtils-Constant-0.25-481.1.el9_6.noarch
  perl-ExtUtils-Embed-1.35-481.1.el9_6.noarch
  perl-ExtUtils-Install-2.20-4.el9.noarch
  perl-ExtUtils-MM-Utils-2:7.60-3.el9.noarch
  perl-ExtUtils-MakeMaker-2:7.60-3.el9.noarch
  perl-ExtUtils-Manifest-1:1.73-4.el9.noarch
  perl-ExtUtils-Miniperl-1.09-481.1.el9_6.noarch
  perl-ExtUtils-ParseXS-1:3.40-460.el9.noarch
  perl-File-Compare-1.100.600-481.1.el9_6.noarch
  perl-File-Copy-2.34-481.1.el9_6.noarch
  perl-File-DosGlob-1.12-481.1.el9_6.x86_64
  perl-File-Fetch-1.00-4.el9.noarch
  perl-File-HomeDir-1.006-4.el9.noarch
  perl-File-Which-1.23-10.el9.noarch
  perl-FileCache-1.10-481.1.el9_6.noarch
  perl-Filter-2:1.60-4.el9.x86_64
  perl-Filter-Simple-0.96-460.el9.noarch
  perl-FindBin-1.51-481.1.el9_6.noarch
  perl-GDBM_File-1.18-481.1.el9_6.x86_64
  perl-Hash-Util-0.23-481.1.el9_6.x86_64
  perl-Hash-Util-FieldHash-1.20-481.1.el9_6.x86_64
  perl-I18N-Collate-1.02-481.1.el9_6.noarch
  perl-I18N-LangTags-0.44-481.1.el9_6.noarch
  perl-I18N-Langinfo-0.19-481.1.el9_6.x86_64
  perl-IO-Compress-2.102-4.el9.noarch
  perl-IO-Compress-Lzma-2.101-4.el9.noarch
  perl-IO-Zlib-1:1.11-4.el9.noarch
  perl-IPC-Cmd-2:1.04-461.el9.noarch
  perl-IPC-SysV-2.09-4.el9.x86_64
  perl-IPC-System-Simple-1.30-6.el9.noarch
  perl-Importer-0.026-4.el9.noarch
  perl-JSON-PP-1:4.06-4.el9.noarch
  perl-Locale-Maketext-1.29-461.el9.noarch
  perl-Locale-Maketext-Simple-1:0.21-481.1.el9_6.noarch
  perl-MIME-Charset-1.012.2-15.el9.noarch
  perl-MRO-Compat-0.13-15.el9.noarch
  perl-Math-BigInt-1:1.9998.18-460.el9.noarch
  perl-Math-BigInt-FastCalc-0.500.900-460.el9.x86_64
  perl-Math-BigRat-0.2614-460.el9.noarch
  perl-Math-Complex-1.59-481.1.el9_6.noarch
  perl-Memoize-1.03-481.1.el9_6.noarch
  perl-Module-Build-2:0.42.31-9.el9.noarch
  perl-Module-CoreList-1:5.20240609-1.el9.noarch
  perl-Module-CoreList-tools-1:5.20240609-1.el9.noarch
  perl-Module-Load-1:0.36-4.el9.noarch
  perl-Module-Load-Conditional-0.74-4.el9.noarch
  perl-Module-Loaded-1:0.08-481.1.el9_6.noarch
  perl-Module-Metadata-1.000037-460.el9.noarch
  perl-Module-Signature-0.88-1.el9.noarch
  perl-NEXT-0.67-481.1.el9_6.noarch
  perl-Net-1.02-481.1.el9_6.noarch
  perl-Net-Ping-2.74-5.el9.noarch
  perl-ODBM_File-1.16-481.1.el9_6.x86_64
  perl-Object-HashBase-0.009-7.el9.noarch
  perl-Opcode-1.48-481.1.el9_6.x86_64
  perl-Package-Generator-1.106-23.el9.noarch
  perl-Params-Check-1:0.38-461.el9.noarch
  perl-Params-Util-1.102-5.el9.x86_64
  perl-Perl-OSType-1.010-461.el9.noarch
  perl-PerlIO-via-QuotedPrint-0.09-4.el9.noarch
  perl-Pod-Checker-4:1.74-4.el9.noarch
  perl-Pod-Functions-1.13-481.1.el9_6.noarch
  perl-Pod-Html-1.25-481.1.el9_6.noarch
  perl-Safe-2.41-481.1.el9_6.noarch
  perl-Search-Dict-1.07-481.1.el9_6.noarch
  perl-SelfLoader-1.26-481.1.el9_6.noarch
  perl-Software-License-0.103014-12.el9.noarch
  perl-Sub-Exporter-0.987-27.el9.noarch
  perl-Sub-Install-0.928-28.el9.noarch
  perl-Sys-Hostname-1.23-481.1.el9_6.x86_64
  perl-Sys-Syslog-0.36-461.el9.x86_64
  perl-Term-Complete-1.403-481.1.el9_6.noarch
  perl-Term-ReadLine-1.17-481.1.el9_6.noarch
  perl-Term-Size-Any-0.002-35.el9.noarch
  perl-Term-Size-Perl-0.031-12.el9.x86_64
  perl-Term-Table-0.015-8.el9.noarch
  perl-Test-1.31-481.1.el9_6.noarch
  perl-Test-Harness-1:3.42-461.el9.noarch
  perl-Test-Simple-3:1.302183-4.el9.noarch
  perl-Text-Abbrev-1.02-481.1.el9_6.noarch
  perl-Text-Balanced-2.04-4.el9.noarch
  perl-Text-Diff-1.45-13.el9.noarch
  perl-Text-Glob-0.11-15.el9.noarch
  perl-Text-Template-1.59-5.el9.noarch
  perl-Thread-3.05-481.1.el9_6.noarch
  perl-Thread-Queue-3.14-460.el9.noarch
  perl-Thread-Semaphore-2.13-481.1.el9_6.noarch
  perl-Tie-4.6-481.1.el9_6.noarch
  perl-Tie-File-1.06-481.1.el9_6.noarch
  perl-Tie-Memoize-1.1-481.1.el9_6.noarch
  perl-Tie-RefHash-1.40-4.el9.noarch
  perl-Time-1.03-481.1.el9_6.noarch
  perl-Time-HiRes-4:1.9764-462.el9.x86_64
  perl-Time-Piece-1.3401-481.1.el9_6.x86_64
  perl-Unicode-Collate-1.29-4.el9.x86_64
  perl-Unicode-LineBreak-2019.001-11.el9.x86_64
  perl-Unicode-Normalize-1.27-461.el9.x86_64
  perl-Unicode-UCD-0.75-481.1.el9_6.noarch
  perl-User-pwent-1.03-481.1.el9_6.noarch
  perl-autodie-2.34-4.el9.noarch
  perl-autouse-1.11-481.1.el9_6.noarch
  perl-bignum-0.51-460.el9.noarch
  perl-blib-1.07-481.1.el9_6.noarch
  perl-debugger-1.56-481.1.el9_6.noarch
  perl-deprecate-0.04-481.1.el9_6.noarch
  perl-devel-4:5.32.1-481.1.el9_6.x86_64
  perl-diagnostics-1.37-481.1.el9_6.noarch
  perl-doc-5.32.1-481.1.el9_6.noarch
  perl-encoding-4:3.00-462.el9.x86_64
  perl-encoding-warnings-0.13-481.1.el9_6.noarch
  perl-experimental-0.022-6.el9.noarch
  perl-fields-2.27-481.1.el9_6.noarch
  perl-filetest-1.03-481.1.el9_6.noarch
  perl-inc-latest-2:0.500-20.el9.noarch
  perl-less-0.03-481.1.el9_6.noarch
  perl-libnetcfg-4:5.32.1-481.1.el9_6.noarch
  perl-local-lib-2.000024-13.el9.noarch
  perl-locale-1.09-481.1.el9_6.noarch
  perl-macros-4:5.32.1-481.1.el9_6.noarch
  perl-meta-notation-5.32.1-481.1.el9_6.noarch
  perl-open-1.12-481.1.el9_6.noarch
  perl-perlfaq-5.20210520-1.el9.noarch
  perl-ph-5.32.1-481.1.el9_6.x86_64
  perl-sigtrap-1.09-481.1.el9_6.noarch
  perl-sort-2.04-481.1.el9_6.noarch
  perl-threads-1:2.25-460.el9.x86_64
  perl-threads-shared-1.61-460.el9.x86_64
  perl-utils-5.32.1-481.1.el9_6.noarch
  perl-version-7:0.99.28-4.el9.x86_64
  perl-vmsish-1.04-481.1.el9_6.noarch
  python3-pyparsing-2.4.7-9.el9.noarch
  sombok-2.4.0-16.el9.x86_64
  systemtap-sdt-devel-5.3-3.el9.x86_64
  systemtap-sdt-dtrace-5.3-3.el9.x86_64

Complete!

2026-02-08T15:18:58.028Z        INFO    dtk/build.go:51 Installing build dependencies
2026-02-08T15:18:58.028Z        DEBUG   cmd/cmd.go:57   RunCommand()    {"command": "dnf", "args": ["install", "-y", "ethtool", "autoconf", "pciutils", "automake", "libtool", "python3-devel"]}
2026-02-08T15:19:03.896Z        DEBUG   cmd/cmd.go:83   RunCommand() command=dnf args=[install -y ethtool autoconf pciutils automake libtool python3-devel] error=<nil>
stdout:
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Last metadata expiration check: 0:00:12 ago on Sun Feb  8 15:18:46 2026.
Dependencies resolved.
================================================================================
 Package                     Arch    Version             Repository        Size
================================================================================
Installing:
 autoconf                    noarch  2.69-41.el9         ubi-9-appstream  681 k
 automake                    noarch  1.16.2-8.el9        ubi-9-appstream  693 k
 ethtool                     x86_64  2:6.15-2.el9        ubi-9-baseos     331 k
 libtool                     x86_64  2.4.6-46.el9        ubi-9-appstream  585 k
 pciutils                    x86_64  3.7.0-7.el9         ubi-9-baseos      96 k
 python3-devel               x86_64  3.9.25-3.el9_7      ubi-9-appstream  251 k
Upgrading:
 openssl                     x86_64  1:3.5.1-7.el9_7     ubi-9-baseos     1.5 M
 openssl-devel               x86_64  1:3.5.1-7.el9_7     ubi-9-appstream  4.8 M
 openssl-fips-provider       x86_64  3.0.7-8.el9         ubi-9-baseos     9.2 k
 openssl-libs                x86_64  1:3.5.1-7.el9_7     ubi-9-baseos     2.3 M
 python-unversioned-command  noarch  3.9.25-3.el9_7      ubi-9-appstream   15 k
 python3                     x86_64  3.9.25-3.el9_7      ubi-9-baseos      32 k
 python3-libs                x86_64  3.9.25-3.el9_7      ubi-9-baseos     8.1 M
Installing dependencies:
 hwdata                      noarch  0.348-9.20.el9      ubi-9-baseos     1.7 M
 openssl-fips-provider-so    x86_64  3.0.7-8.el9         ubi-9-baseos     576 k
 pciutils-libs               x86_64  3.7.0-7.el9         ubi-9-baseos      43 k
 python-rpm-macros           noarch  3.9-54.el9          ubi-9-appstream   16 k
 python3-packaging           noarch  20.9-5.el9          ubi-9-appstream   81 k
 python3-rpm-generators      noarch  12-9.el9            ubi-9-appstream   29 k
 python3-rpm-macros          noarch  3.9-54.el9          ubi-9-appstream   10 k
Installing weak dependencies:
 libxcrypt-compat            x86_64  4.4.18-3.el9        ubi-9-appstream   91 k
 python3-pip                 noarch  21.3.1-1.el9        ubi-9-appstream  2.0 M

Transaction Summary
================================================================================
Install  15 Packages
Upgrade   7 Packages

Total download size: 24 M
Downloading Packages:
(1/22): ethtool-6.15-2.el9.x86_64.rpm           713 kB/s | 331 kB     00:00
(2/22): openssl-fips-provider-so-3.0.7-8.el9.x8 1.1 MB/s | 576 kB     00:00
(3/22): pciutils-3.7.0-7.el9.x86_64.rpm         1.3 MB/s |  96 kB     00:00
(4/22): pciutils-libs-3.7.0-7.el9.x86_64.rpm    607 kB/s |  43 kB     00:00
(5/22): hwdata-0.348-9.20.el9.noarch.rpm        2.7 MB/s | 1.7 MB     00:00
(6/22): libxcrypt-compat-4.4.18-3.el9.x86_64.rp 1.4 MB/s |  91 kB     00:00
(7/22): automake-1.16.2-8.el9.noarch.rpm        4.3 MB/s | 693 kB     00:00
(8/22): libtool-2.4.6-46.el9.x86_64.rpm         5.3 MB/s | 585 kB     00:00
(9/22): python-rpm-macros-3.9-54.el9.noarch.rpm 246 kB/s |  16 kB     00:00
(10/22): python3-packaging-20.9-5.el9.noarch.rp 1.1 MB/s |  81 kB     00:00
(11/22): python3-rpm-generators-12-9.el9.noarch 461 kB/s |  29 kB     00:00
(12/22): python3-rpm-macros-3.9-54.el9.noarch.r 167 kB/s |  10 kB     00:00
(13/22): python3-pip-21.3.1-1.el9.noarch.rpm     11 MB/s | 2.0 MB     00:00
(14/22): autoconf-2.69-41.el9.noarch.rpm        7.9 MB/s | 681 kB     00:00
(15/22): python3-devel-3.9.25-3.el9_7.x86_64.rp 3.3 MB/s | 251 kB     00:00
(16/22): openssl-fips-provider-3.0.7-8.el9.x86_ 134 kB/s | 9.2 kB     00:00
(17/22): openssl-3.5.1-7.el9_7.x86_64.rpm        16 MB/s | 1.5 MB     00:00
(18/22): python3-3.9.25-3.el9_7.x86_64.rpm      495 kB/s |  32 kB     00:00
(19/22): openssl-libs-3.5.1-7.el9_7.x86_64.rpm   12 MB/s | 2.3 MB     00:00
(20/22): python-unversioned-command-3.9.25-3.el 240 kB/s |  15 kB     00:00
(21/22): openssl-devel-3.5.1-7.el9_7.x86_64.rpm  24 MB/s | 4.8 MB     00:00
(22/22): python3-libs-3.9.25-3.el9_7.x86_64.rpm  32 MB/s | 8.1 MB     00:00
--------------------------------------------------------------------------------
Total                                            19 MB/s |  24 MB     00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Installing       : autoconf-2.69-41.el9.noarch                           1/29
  Installing       : python-rpm-macros-3.9-54.el9.noarch                   2/29
  Installing       : python3-rpm-macros-3.9-54.el9.noarch                  3/29
  Installing       : automake-1.16.2-8.el9.noarch                          4/29
  Installing       : libxcrypt-compat-4.4.18-3.el9.x86_64                  5/29
  Installing       : pciutils-libs-3.7.0-7.el9.x86_64                      6/29
  Installing       : openssl-fips-provider-so-3.0.7-8.el9.x86_64           7/29
  Upgrading        : openssl-fips-provider-3.0.7-8.el9.x86_64              8/29
  Upgrading        : openssl-libs-1:3.5.1-7.el9_7.x86_64                   9/29
  Upgrading        : python-unversioned-command-3.9.25-3.el9_7.noarch     10/29
  Upgrading        : python3-3.9.25-3.el9_7.x86_64                        11/29
  Upgrading        : python3-libs-3.9.25-3.el9_7.x86_64                   12/29
  Installing       : python3-packaging-20.9-5.el9.noarch                  13/29
  Installing       : python3-rpm-generators-12-9.el9.noarch               14/29
  Installing       : python3-pip-21.3.1-1.el9.noarch                      15/29
  Installing       : hwdata-0.348-9.20.el9.noarch                         16/29
  Installing       : pciutils-3.7.0-7.el9.x86_64                          17/29
  Installing       : python3-devel-3.9.25-3.el9_7.x86_64                  18/29
  Upgrading        : openssl-1:3.5.1-7.el9_7.x86_64                       19/29
  Upgrading        : openssl-devel-1:3.5.1-7.el9_7.x86_64                 20/29
  Installing       : libtool-2.4.6-46.el9.x86_64                          21/29
  Installing       : ethtool-2:6.15-2.el9.x86_64                          22/29
  Cleanup          : openssl-1:3.2.2-7.el9_6.1.x86_64                     23/29
  Cleanup          : openssl-devel-1:3.2.2-7.el9_6.1.x86_64               24/29
  Cleanup          : python3-3.9.18-3.el9_4.9.x86_64                      25/29
  Cleanup          : python-unversioned-command-3.9.18-3.el9_4.9.noarch   26/29
  Cleanup          : python3-libs-3.9.18-3.el9_4.9.x86_64                 27/29
  Cleanup          : openssl-libs-1:3.2.2-7.el9_6.1.x86_64                28/29
  Cleanup          : openssl-fips-provider-3.0.7-2.el9.x86_64             29/29
  Running scriptlet: openssl-fips-provider-3.0.7-2.el9.x86_64             29/29
  Verifying        : ethtool-2:6.15-2.el9.x86_64                           1/29
  Verifying        : hwdata-0.348-9.20.el9.noarch                          2/29
  Verifying        : openssl-fips-provider-so-3.0.7-8.el9.x86_64           3/29
  Verifying        : pciutils-3.7.0-7.el9.x86_64                           4/29
  Verifying        : pciutils-libs-3.7.0-7.el9.x86_64                      5/29
  Verifying        : automake-1.16.2-8.el9.noarch                          6/29
  Verifying        : libtool-2.4.6-46.el9.x86_64                           7/29
  Verifying        : libxcrypt-compat-4.4.18-3.el9.x86_64                  8/29
  Verifying        : python-rpm-macros-3.9-54.el9.noarch                   9/29
  Verifying        : python3-packaging-20.9-5.el9.noarch                  10/29
  Verifying        : python3-pip-21.3.1-1.el9.noarch                      11/29
  Verifying        : python3-rpm-generators-12-9.el9.noarch               12/29
  Verifying        : python3-rpm-macros-3.9-54.el9.noarch                 13/29
  Verifying        : autoconf-2.69-41.el9.noarch                          14/29
  Verifying        : python3-devel-3.9.25-3.el9_7.x86_64                  15/29
  Verifying        : openssl-1:3.5.1-7.el9_7.x86_64                       16/29
  Verifying        : openssl-1:3.2.2-7.el9_6.1.x86_64                     17/29
  Verifying        : openssl-fips-provider-3.0.7-8.el9.x86_64             18/29
  Verifying        : openssl-fips-provider-3.0.7-2.el9.x86_64             19/29
  Verifying        : openssl-libs-1:3.5.1-7.el9_7.x86_64                  20/29
  Verifying        : openssl-libs-1:3.2.2-7.el9_6.1.x86_64                21/29
  Verifying        : python3-3.9.25-3.el9_7.x86_64                        22/29
  Verifying        : python3-3.9.18-3.el9_4.9.x86_64                      23/29
  Verifying        : python3-libs-3.9.25-3.el9_7.x86_64                   24/29
  Verifying        : python3-libs-3.9.18-3.el9_4.9.x86_64                 25/29
  Verifying        : openssl-devel-1:3.5.1-7.el9_7.x86_64                 26/29
  Verifying        : openssl-devel-1:3.2.2-7.el9_6.1.x86_64               27/29
  Verifying        : python-unversioned-command-3.9.25-3.el9_7.noarch     28/29
  Verifying        : python-unversioned-command-3.9.18-3.el9_4.9.noarch   29/29
Installed products updated.

Upgraded:
  openssl-1:3.5.1-7.el9_7.x86_64
  openssl-devel-1:3.5.1-7.el9_7.x86_64
  openssl-fips-provider-3.0.7-8.el9.x86_64
  openssl-libs-1:3.5.1-7.el9_7.x86_64
  python-unversioned-command-3.9.25-3.el9_7.noarch
  python3-3.9.25-3.el9_7.x86_64
  python3-libs-3.9.25-3.el9_7.x86_64
Installed:
  autoconf-2.69-41.el9.noarch
  automake-1.16.2-8.el9.noarch
  ethtool-2:6.15-2.el9.x86_64
  hwdata-0.348-9.20.el9.noarch
  libtool-2.4.6-46.el9.x86_64
  libxcrypt-compat-4.4.18-3.el9.x86_64
  openssl-fips-provider-so-3.0.7-8.el9.x86_64
  pciutils-3.7.0-7.el9.x86_64
  pciutils-libs-3.7.0-7.el9.x86_64
  python-rpm-macros-3.9-54.el9.noarch
  python3-devel-3.9.25-3.el9_7.x86_64
  python3-packaging-20.9-5.el9.noarch
  python3-pip-21.3.1-1.el9.noarch
  python3-rpm-generators-12-9.el9.noarch
  python3-rpm-macros-3.9-54.el9.noarch

Complete!

2026-02-08T15:19:03.896Z        INFO    dtk/build.go:79 Starting compilation of driver  {"version": "25.07-0.9.7.0"}
2026-02-08T15:19:03.896Z        INFO    dtk/build.go:109        Executing build command {"command": "/mnt/shared-doca-driver-toolkit/5.14.0-570.78.1.el9_6.x86_64/MLNX_OFED_SRC-25.07-0.9.7.0/install.pl", "args": ["--build-only", "--kernel-only", "--without-knem", "--without-iser", "--without-isert", "--without-srp", "--with-mlnx-tools", "--with-ofed-scripts", "--copy-ifnames-udev", "--without-mlnx-nfsrdma", "--without-mlnx-nvme"]}
2026-02-08T15:19:03.896Z        DEBUG   cmd/cmd.go:57   RunCommand()    {"command": "/mnt/shared-doca-driver-toolkit/5.14.0-570.78.1.el9_6.x86_64/MLNX_OFED_SRC-25.07-0.9.7.0/install.pl", "args": ["--build-only", "--kernel-only", "--without-knem", "--without-iser", "--without-isert", "--without-srp", "--with-mlnx-tools", "--with-ofed-scripts", "--copy-ifnames-udev", "--without-mlnx-nfsrdma", "--without-mlnx-nvme"]}

2026-02-08T15:27:46.817Z        DEBUG   cmd/cmd.go:83   RunCommand() command=/mnt/shared-doca-driver-toolkit/5.14.0-570.78.1.el9_6.x86_64/MLNX_OFED_SRC-25.07-0.9.7.0/install.pl args=[--build-only --kernel-only --without-knem --without-iser --without-isert --without-srp --with-mlnx-tools --with-ofed-scripts --copy-ifnames-udev --without-mlnx-nfsrdma --without-mlnx-nvme] error=<nil>
stdout:

Below is the list of OFED packages that you have chosen
    [CR](some may have been added by the installer due to package dependencies):

ofed-scripts
mlnx-tools
mlnx-ofa_kernel
mlnx-ofa_kernel-devel
mlnx-ofa_kernel-source
xpmem
kernel-mft-mlnx

This program will install the OFED package on your machine.
Note that all other Mellanox, OEM, OFED, RDMA or Distribution IB packages will be removed.
Those packages are removed due to conflicts with OFED, do not reinstall them.

Build ofed-scripts 25.07 RPM
Running  rpmbuild --rebuild  --define '_topdir /var/tmp/OFED_topdir' --define '_sourcedir %{_topdir}/SOURCES' --define '_specdir %{_topdir}/SPECS' --define '_srcrpmdir %{_topdir}/SRPMS' --define '_rpmdir %{_topdir}/RPMS'  --define 'dist %{nil}' --target x86_64 --define '_prefix /usr' --define '_exec_prefix /usr' --define '_sysconfdir /etc' --define '_usr /usr' '/mnt/shared-doca-driver-toolkit/5.14.0-570.78.1.el9_6.x86_64/MLNX_OFED_SRC-25.07-0.9.7.0/SRPMS/ofed-scripts-25.07-OFED.25.07.0.9.7.src.rpm'
Build mlnx-tools 25.07 RPM
Running  rpmbuild --rebuild  --define '_topdir /var/tmp/OFED_topdir' --define '_sourcedir %{_topdir}/SOURCES' --define '_specdir %{_topdir}/SPECS' --define '_srcrpmdir %{_topdir}/SRPMS' --define '_rpmdir %{_topdir}/RPMS'  --define 'dist %{nil}' --target x86_64 --define '_prefix /usr' --define '_exec_prefix /usr' --define '_sysconfdir /etc' --define '_usr /usr' '/mnt/shared-doca-driver-toolkit/5.14.0-570.78.1.el9_6.x86_64/MLNX_OFED_SRC-25.07-0.9.7.0/SRPMS/mlnx-tools-25.07-0.2507097.src.rpm'
Build mlnx-ofa_kernel 25.07 RPM

-W- --with-mlx5-ipsec is enabled
Running  rpmbuild --rebuild  --define '_topdir /var/tmp/OFED_topdir' --define '_sourcedir %{_topdir}/SOURCES' --define '_specdir %{_topdir}/SPECS' --define '_srcrpmdir %{_topdir}/SRPMS' --define '_rpmdir %{_topdir}/RPMS'  --nodeps --define '_dist .rhel9u4' --define 'configure_options   --with-core-mod --with-user_mad-mod --with-user_access-mod --with-addr_trans-mod --with-mlxfw-mod --with-mlx5-mod --with-mlx5-ipsec --with-ipoib-mod --with-nfsrdma-mod --with-gds' --define 'KVERSION 5.14.0-570.78.1.el9_6.x86_64' --define 'K_SRC /lib/modules/5.14.0-570.78.1.el9_6.x86_64/build' --define 'KMP 1' --define '_prefix /usr' '/mnt/shared-doca-driver-toolkit/5.14.0-570.78.1.el9_6.x86_64/MLNX_OFED_SRC-25.07-0.9.7.0/SRPMS/mlnx-ofa_kernel-25.07-OFED.25.07.0.9.7.1.src.rpm'
Build xpmem 2.7.4 RPM
Running  rpmbuild --rebuild  --define '_topdir /var/tmp/OFED_topdir' --define '_sourcedir %{_topdir}/SOURCES' --define '_specdir %{_topdir}/SPECS' --define '_srcrpmdir %{_topdir}/SRPMS' --define '_rpmdir %{_topdir}/RPMS'  --define 'KVERSION 5.14.0-570.78.1.el9_6.x86_64' --define 'K_SRC /lib/modules/5.14.0-570.78.1.el9_6.x86_64/build' --define '_dist .rhel9u4' --define 'KMP 1' --with kernel_only --define '_prefix /usr' '/mnt/shared-doca-driver-toolkit/5.14.0-570.78.1.el9_6.x86_64/MLNX_OFED_SRC-25.07-0.9.7.0/SRPMS/xpmem-2.7.4-1.2507097.src.rpm'
Build kernel-mft 4.33.0 RPM
Running  rpmbuild --rebuild  --define '_topdir /var/tmp/OFED_topdir' --define '_sourcedir %{_topdir}/SOURCES' --define '_specdir %{_topdir}/SPECS' --define '_srcrpmdir %{_topdir}/SRPMS' --define '_rpmdir %{_topdir}/RPMS'  --define 'KVERSION 5.14.0-570.78.1.el9_6.x86_64' --define 'K_SRC /lib/modules/5.14.0-570.78.1.el9_6.x86_64/build' --define 'source 1' --define 'debug_package %{nil}' --define '_dist .rhel9u4' --define 'KMP 1' --define '_prefix /usr' '/mnt/shared-doca-driver-toolkit/5.14.0-570.78.1.el9_6.x86_64/MLNX_OFED_SRC-25.07-0.9.7.0/SRPMS/kernel-mft-4.33.0-169.src.rpm'

stderr:
Logs dir: /tmp/OFED.256.logs
General log file: /tmp/OFED.256.logs/general.log

2026-02-08T15:27:46.818Z        INFO    dtk/build.go:130        DTK driver build script end
2026-02-08T15:27:46.818Z        INFO    dtk/build.go:133        Build completed, sleeping indefinitely

@rollandf
Copy link
Member Author

rollandf commented Feb 9, 2026

Additional Comments (1)
entrypoint/internal/driver/driver.go RPM wildcard never expands

In installRedHatDriver, RunCommand invokes rpm directly with filepath.Join(inventoryPath, "*.rpm"). Since there’s no shell here, *.rpm won’t expand, and rpm will error unless there is literally a file named *.rpm. This breaks installs on RHEL/OpenShift/SLES paths.

This works fine:

2026-02-08T15:28:03.854Z        DEBUG   driver/driver.go:1298   Installing RedHat driver packages       {"path": "/mnt/drivers-inventory/5.14.0-570.78.1.el9_6.x86_64/25.07-0.9.7.0"}
2026-02-08T15:28:03.854Z        DEBUG   cmd/cmd.go:57   RunCommand()    {"command": "rpm", "args": ["-ivh", "--replacepkgs", "--nodeps", "/mnt/drivers-inventory/5.14.0-570.78.1.el9_6.x86_64/25.07-0.9.7.0/*.rpm"]}
2026-02-08T15:28:07.661Z        DEBUG   cmd/cmd.go:83   RunCommand() command=rpm args=[-ivh --replacepkgs --nodeps /mnt/drivers-inventory/5.14.0-570.78.1.el9_6.x86_64/25.07-0.9.7.0/*.rpm] error=<nil>
stdout:
Verifying...                          ########################################
Preparing...                          ########################################
Updating / installing...
mlnx-ofa_kernel-debugsource-25.07-OFED########################################
mlnx-tools-25.07-0.2507097            ########################################
mlnx-ofa_kernel-25.07-OFED.25.07.0.9.7########################################
Configured /etc/security/limits.conf
kmod-mlnx-ofa_kernel-debuginfo-25.07-O########################################
mlnx-ofa_kernel-devel-debuginfo-25.07-########################################
xpmem-2.7.4-1.2507097.rhel9u4         ########################################
ofed-scripts-25.07-OFED.25.07.0.9.7   ########################################
mlnx-ofa_kernel-source-25.07-OFED.25.0########################################
mlnx-ofa_kernel-devel-25.07-OFED.25.07########################################
kmod-xpmem-2.7.4-1.2507097.rhel9u4.rhe########################################
kmod-mlnx-ofa_kernel-25.07-OFED.25.07.########################################
kmod-kernel-mft-mlnx-4.33.0-1.rhel9u4 ########################################

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

5 files reviewed, no comments

Edit Code Review Agent Settings | Greptile

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

15 files reviewed, 3 comments

Edit Code Review Agent Settings | Greptile

@greptile-apps
Copy link

greptile-apps bot commented Feb 9, 2026

Additional Comments (3)

entrypoint/internal/driver/driver.go
Wildcard RPM path broken

installRedHatDriver passes filepath.Join(inventoryPath, "*.rpm") directly to rpm (driver.go:1301). Go won’t expand globs, so rpm receives a literal .../*.rpm argument and fails with “No such file”. This should either expand the glob in Go (e.g., filepath.Glob) and pass the resulting file list, or invoke via sh -c only if you intentionally want shell expansion.


entrypoint/internal/driver/driver.go
Ignored dependency load errors

loadHostDependencies calls d.loadModuleDependencies(...) but doesn’t propagate/aggregate any errors (driver.go:1592-1596), while restartDriver treats loadHostDependencies failure as non-fatal. As written, any modinfo/modprobe failures are silently ignored, so dependency loading can never fail even when it should. If dependency loading is relied on for correct module restart behavior, loadModuleDependencies should return an error and loadHostDependencies should surface at least the first/combined error.


entrypoint/internal/driver/driver.go
Panic on empty modules list

unloadStorageModules builds grepCmd using d.cfg.StorageModules[0] (driver.go:1791-1793). If StorageModules is empty (e.g., misconfigured env), this will panic and crash the container. This should guard len(d.cfg.StorageModules) > 0 before indexing or use a fixed sentinel string for verification.

@rollandf rollandf added the hold label Feb 9, 2026
@rollandf rollandf changed the title feat: support DTK with Go [DNM] feat: support DTK with Go Feb 9, 2026
Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

15 files reviewed, 3 comments

Edit Code Review Agent Settings | Greptile

Comment on lines +34 to +44
func (d *driverMgr) buildDriverDTK(ctx context.Context, kernelVersion, inventoryPath string) error {
log := logr.FromContextOrDiscard(ctx)
log.Info("Starting DTK driver build")

// Sanitize kernel version for DTK shared directory
// Matches bash: DTK_KVER=$(echo "${FULL_KVER}" | sed 's/[^-A-Za-z0-9_.]/_/g' | sed 's/^[-_.]*//;s/[-_.]*$//')
dtkKver := sanitizeKernelVersion(kernelVersion)
dtkSharedDir := filepath.Join(d.cfg.DtkOcpNicSharedDir, dtkKver)

// Construct done flag path
// Matches bash: DTK_OCP_DONE_COMPILE_FLAG="${DTK_OCP_DONE_COMPILE_FLAG_PREFIX}$(echo ${NVIDIA_NIC_DRIVER_VER} | sed 's/[.-]/_/g')"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stat error treated as success

if _, err := d.os.Stat(doneFlagPath); os.IsNotExist(err) { ... } else { log.Info("DTK build already done") } treats any non-IsNotExist error (e.g. permission denied / I/O error) as “build already done” and proceeds to finalize/copy artifacts. This can skip the build while the flag was unreadable. Handle err != nil separately and return the error unless it’s a clean IsNotExist case.

Comment on lines 1314 to 1317
cmdMock.EXPECT().RunCommand(ctx, "uname", "-m").Return("x86_64", "", nil)
osMock.EXPECT().Readlink(mock.Anything).Return("/usr/src/ofa_kernel/x86_64/5.4.0-42-generic", nil)

// Mock storeBuildChecksum - return valid checksum
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stray comments break build

This block introduces non-Go text in the test file:
// We expect it to be called, so if we remove expectation, it should fail with "Unexpected call"
The indentation uses spaces at column 0 (not a tab inside a block) and will produce a compile error (unexpected // / bad indentation) in Go formatting-sensitive contexts. Please remove these debug comments or re-indent them properly within the It(...) body.

@greptile-apps
Copy link

greptile-apps bot commented Feb 9, 2026

Additional Comments (1)

RHEL_Dockerfile
Precompiled ENTRYPOINT missing

The precompiled stage sets ENTRYPOINT ["/root/loader.sh"], but that stage never adds/copies loader.sh (it only adds entrypoint.sh and dtk_nic_driver_build.sh). Since precompiled is built FROM $D_FINAL_BASE_IMAGE (not FROM base), the image will fail to start with /root/loader.sh: no such file. Copy loader.sh (and ensure any other required runtime artifacts, e.g. /root/entrypoint, are present) into the precompiled stage before setting the ENTRYPOINT.

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

4 files reviewed, 2 comments

Edit Code Review Agent Settings | Greptile

Comment on lines +51 to +62
if _, err := d.os.Stat(doneFlagPath); os.IsNotExist(err) {
log.Info("DTK build not done, setting up build")

if err := d.dtkSetupDriverBuild(ctx, dtkSharedDir, startFlagPath, doneFlagPath); err != nil {
return fmt.Errorf("failed to setup DTK build: %w", err)
}

if err := d.dtkWaitForBuild(ctx, doneFlagPath); err != nil {
return fmt.Errorf("failed waiting for DTK build: %w", err)
}
} else {
log.Info("DTK build already done", "flag", doneFlagPath)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

non-IsNotExist Stat errors treated as "build done"

Stat errors like permission denied or I/O errors fall through to "DTK build already done" log and skip setup. Should return errors that aren't IsNotExist:

Suggested change
if _, err := d.os.Stat(doneFlagPath); os.IsNotExist(err) {
log.Info("DTK build not done, setting up build")
if err := d.dtkSetupDriverBuild(ctx, dtkSharedDir, startFlagPath, doneFlagPath); err != nil {
return fmt.Errorf("failed to setup DTK build: %w", err)
}
if err := d.dtkWaitForBuild(ctx, doneFlagPath); err != nil {
return fmt.Errorf("failed waiting for DTK build: %w", err)
}
} else {
log.Info("DTK build already done", "flag", doneFlagPath)
if _, err := d.os.Stat(doneFlagPath); os.IsNotExist(err) {
log.Info("DTK build not done, setting up build")
if err := d.dtkSetupDriverBuild(ctx, dtkSharedDir, startFlagPath, doneFlagPath); err != nil {
return fmt.Errorf("failed to setup DTK build: %w", err)
}
if err := d.dtkWaitForBuild(ctx, doneFlagPath); err != nil {
return fmt.Errorf("failed waiting for DTK build: %w", err)
}
} else if err != nil {
return fmt.Errorf("failed to check done flag: %w", err)
} else {
log.Info("DTK build already done", "flag", doneFlagPath)
}

Comment on lines 1320 to 1322
// Mock WriteFile failure - removed to debug if it's called
// osMock.EXPECT().WriteFile(mock.Anything, mock.Anything, os.FileMode(0o644)).Return(errors.New("write failed"))
// We expect it to be called, so if we remove expectation, it should fail with "Unexpected call"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

malformed indentation breaks Go formatting

Lines start at column 0 with spaces instead of being indented within the test block. Remove or properly indent these debug comments:

Suggested change
// Mock WriteFile failure - removed to debug if it's called
// osMock.EXPECT().WriteFile(mock.Anything, mock.Anything, os.FileMode(0o644)).Return(errors.New("write failed"))
// We expect it to be called, so if we remove expectation, it should fail with "Unexpected call"
// osMock.EXPECT().WriteFile(mock.Anything, mock.Anything, os.FileMode(0o644)).Return(errors.New("write failed"))

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

15 files reviewed, 2 comments

Edit Code Review Agent Settings | Greptile

Comment on lines +1308 to +1311
cmdMock.EXPECT().RunCommand(ctx, "sh", "-c", mock.Anything).Return("", "", nil).Times(4)

// Mock fixSourceLink
cmdMock.EXPECT().RunCommand(ctx, "uname", "-m").Return("x86_64", "", nil)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Trailing whitespace breaks gofmt

There’s a line that contains only whitespace between the md5sum matcher expectation and the WriteFile expectation. This will fail gofmt/linters in many CI setups. Please delete the whitespace-only line.

@greptile-apps
Copy link

greptile-apps bot commented Feb 9, 2026

Additional Comments (1)

entrypoint/internal/driver/driver_dtk.go
Stat errors skip DTK build

buildDriverDTK treats any Stat error other than IsNotExist as “build already done” and proceeds to finalize/copy artifacts. If the flag path is unreadable (e.g., permission denied/I/O error), this will incorrectly skip the build and likely fail later with confusing copy errors. Handle err != nil separately (return it) and only treat err == nil as “done”.

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

8 files reviewed, 2 comments

Edit Code Review Agent Settings | Greptile

Comment on lines +51 to +63
if _, err := d.os.Stat(doneFlagPath); os.IsNotExist(err) {
log.Info("DTK build not done, setting up build")

if err := d.dtkSetupDriverBuild(ctx, dtkSharedDir, startFlagPath, doneFlagPath); err != nil {
return fmt.Errorf("failed to setup DTK build: %w", err)
}

if err := d.dtkWaitForBuild(ctx, doneFlagPath); err != nil {
return fmt.Errorf("failed waiting for DTK build: %w", err)
}
} else {
log.Info("DTK build already done", "flag", doneFlagPath)
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stat errors skip build

buildDriverDTK treats any Stat error other than IsNotExist as “build already done” (else { ... }), so permission/I/O errors on the done-flag file will incorrectly skip the build and proceed to finalize/copy artifacts. Handle err != nil separately and return it unless os.IsNotExist(err).

Comment on lines +92 to +99
// Create a context that we can cancel to simulate end of execution
ctx, cancel := context.WithCancel(context.Background())

// Run in a goroutine so we can cancel it
errCh := make(chan error)
go func() {
errCh <- RunBuild(ctx, log, cfg, cmdMock)
}()
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gofmt-breaking whitespace

There are tabs/spaces on otherwise blank lines (e.g. right after context.WithCancel(...) and after cancel()), which will fail gofmt/formatting checks in many Go CI setups. Please remove the trailing whitespace on those blank lines.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lint is passing

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

15 files reviewed, no comments

Edit Code Review Agent Settings | Greptile

Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

15 files reviewed, 3 comments

Edit Code Review Agent Settings | Greptile

Comment on lines +4 to +14
# Load environment variables if file exists
if [ -f "$(dirname "$0")/dtk.env" ]; then
source "$(dirname "$0")/dtk.env"
fi

: ${USE_NEW_ENTRYPOINT:=false}

if [ "$USE_NEW_ENTRYPOINT" = "true" ]; then
echo "Using Go entrypoint for DTK build"
exec "$(dirname "$0")/entrypoint" dtk-build
fi
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sourced env overwritten
After sourcing dtk.env (lines 4-7), the script later resets DTK_OCP_START_COMPILE_FLAG, DTK_OCP_DONE_COMPILE_FLAG, and DTK_OCP_COMPILED_DRIVER_VER to empty strings (lines 23-25). This overwrites the values written by dtkSetupDriverBuild, so the bash build path will always hit the “Compilation start/completion flags not set, aborting” check.

Suggested change
# Load environment variables if file exists
if [ -f "$(dirname "$0")/dtk.env" ]; then
source "$(dirname "$0")/dtk.env"
fi
: ${USE_NEW_ENTRYPOINT:=false}
if [ "$USE_NEW_ENTRYPOINT" = "true" ]; then
echo "Using Go entrypoint for DTK build"
exec "$(dirname "$0")/entrypoint" dtk-build
fi
# Only default these when not already set by the environment/dtk.env
: "${DTK_OCP_START_COMPILE_FLAG:=}"
: "${DTK_OCP_DONE_COMPILE_FLAG:=}"
: "${DTK_OCP_COMPILED_DRIVER_VER:=}"

Comment on lines +79 to +85
// Create start flag after a short delay
go func() {
time.Sleep(100 * time.Millisecond)
f, err := os.Create(startFlag)
assert.NoError(t, err)
f.Close()
}()
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Assertion in goroutine
This goroutine calls assert.NoError(t, err) using the parent *testing.T. Using t concurrently from another goroutine can lead to races/flaky tests. A safer pattern is to avoid assertions inside the goroutine (e.g., send err on a channel and assert in the main test goroutine) and ensure the file is closed only when err == nil.

Comment on lines +24 to +39
FROM golang:1.24 AS go_builder

# Set GOPROXY if provided
ARG GOPROXY
ENV GOPROXY=$GOPROXY

WORKDIR /workspace

COPY entrypoint/go.mod go.mod
COPY entrypoint/go.sum go.sum

RUN go mod download

COPY entrypoint/ .

RUN TARGETARCH=${D_ARCH} TARGETOS=linux make build
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing ARG in stage
The go_builder stage uses RUN TARGETARCH=${D_ARCH} TARGETOS=linux make build, but D_ARCH is not declared in that stage (only before the first FROM). In Docker, ARGs must be re-declared in each stage to be available to RUN, so ${D_ARCH} can expand empty and build the entrypoint for the wrong arch.

Suggested change
FROM golang:1.24 AS go_builder
# Set GOPROXY if provided
ARG GOPROXY
ENV GOPROXY=$GOPROXY
WORKDIR /workspace
COPY entrypoint/go.mod go.mod
COPY entrypoint/go.sum go.sum
RUN go mod download
COPY entrypoint/ .
RUN TARGETARCH=${D_ARCH} TARGETOS=linux make build
FROM golang:1.24 AS go_builder
ARG D_ARCH

Signed-off-by: Fred Rolland <frolland@nvidia.com>
Copy link

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

15 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile


COPY entrypoint/ .

RUN TARGETARCH=${D_ARCH} TARGETOS=linux make build
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

D_ARCH not declared in this stage - expands to empty string, building for wrong architecture

Suggested change
RUN TARGETARCH=${D_ARCH} TARGETOS=linux make build
ARG D_ARCH
RUN TARGETARCH=${D_ARCH} TARGETOS=linux make build

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant