Skip to content

Conversation

jankaluza
Copy link

@jankaluza jankaluza commented Sep 1, 2025

These go packages were migrated to a monorepo, as stated in the https://blog.podman.io/2025/08/migration-to-the-container-libs-monorepo-is-complete/.

This commit updates the crc package to use these packages from new locations.

It was generated using following commands:

$ find . -type f -name '*.go' -exec sed -i -e 's,"github.com/containers/image,"go.podman.io/image,g' {} \;
$ find . -type f -name '*.go' -exec sed -i -e 's,"github.com/containers/common,"go.podman.io/common,g' {} \;
$ find . -type f -name '*.go' -exec sed -i -e 's,"github.com/containers/storage,"go.podman.io/storage,g' {} \;
$ goimports -v -w .
$ git checkout vendor/
$ git checkout tools/vendor
$ vi go.mod # to change the storage, image and common imports
$ go mod tidy
$ go mod vendor

Description

See the description above.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • Feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change
  • Chore (non-breaking change which doesn't affect codebase;
    test, version modification, documentation, etc.)

Proposed changes

Testing

Contribution Checklist

  • I Keep It Small and Simple: The smaller the PR is, the easier it is to review and have it merged
  • I have performed a self-review of my code
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Which platform have you tested the code changes on?
    • Linux
    • Windows
    • MacOS

Summary by CodeRabbit

  • Security
    • Strengthened TLS defaults; CBC cipher suites removed.
    • Support for passphrase-encrypted TLS private keys deprecated and no longer accepted.
  • Chores
    • Migrated container/image and strongunits dependencies to go.podman.io modules.
    • Updated multiple third-party libraries; improved Docker client TLS configuration defaults.
    • Bumped Go to 1.24.2 (toolchain 1.24.6).
  • Deprecations
    • SQLite user authentication is deprecated in the bundled driver.
  • Compatibility
    • Image handling now uses Podman-maintained modules; no expected behavior changes.

@coderabbitai
Copy link

coderabbitai bot commented Sep 1, 2025

Walkthrough

This PR migrates imports from github.com/containers/* to go.podman.io/* (strongunits, image, storage), updates go.mod/toolchain and dependencies, and refreshes vendored code accordingly. Notable vendor edits include Docker tlsconfig API adjustments (passphrase removal, cipher defaults), SQLite 3.50.4 headers and userauth deprecation, gpgme Key.Fingerprint addition, and pprof minor refactors.

Changes

Cohort / File(s) Summary
Strongunits import migration
cmd/crc/cmd/start.go, cmd/crc/cmd/status.go, pkg/crc/api/api_client_test.go, pkg/crc/api/client/types.go, pkg/crc/api/handlers.go, pkg/crc/cluster/cluster.go, pkg/crc/config/settings_test.go, pkg/crc/config/validations.go, pkg/crc/constants/constants.go, pkg/crc/machine/... (config.go, driver.go, start.go, start_test.go, status.go, status_test.go, types/types.go), pkg/crc/validation/validation.go, pkg/drivers/libhvee/libhvee_windows.go, test/e2e/testsuite/testsuite.go
Replace github.com/containers/common/pkg/strongunits with go.podman.io/common/pkg/strongunits. No logic changes.
Image module migration
pkg/crc/image/image.go, vendor/go.podman.io/image/v5/... (copy/, directory/, docker/, internal/, manifest/, pkg/blobinfocache/, pkg/compression/*, version, etc.), vendor/go.podman.io/common/pkg/strongunits/config.go, vendor/go.podman.io/common/LICENSE
Switch imports from github.com/containers/image/v5 and related storage paths to go.podman.io/image/v5 and go.podman.io/storage. Vendored content updated accordingly; primarily import rewrites.
Module and toolchain updates
go.mod
Go 1.24.0 → 1.24.2; adds toolchain go1.24.6. Replaces containers/* with go.podman.io/* modules; bumps various indirect deps (docker, google, sigstore, sqlite3, etc.).
Docker TLS config changes (vendor)
vendor/github.com/docker/go-connections/tlsconfig/config.go, vendor/github.com/docker/go-connections/tlsconfig/config_client_ciphers.go
Remove passphrase support and CBC client cipher list; introduce defaultCipherSuites, defaultConfig, errEncryptedKeyDeprecated; update Client/Server defaults. Delete client cipher list file.
Docker client TLS defaults (vendor)
vendor/go.podman.io/image/v5/docker/docker_client.go
Set CipherSuites to tlsconfig.ClientDefault().CipherSuites (was DefaultServerAcceptedCiphers). Imports migrated to go.podman.io/*.
SQLite updates (vendor)
vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h, vendor/github.com/mattn/go-sqlite3/sqlite3ext.h, vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth.go, vendor/github.com/mattn/go-sqlite3/README.md
SQLite 3.50.4 headers; add sqlite3_setlk_timeout API and related macros; rename changeset flag; deprecate userauth APIs (functions now return a fixed error/false); README deprecation notes.
gpgme enhancement (vendor)
vendor/github.com/proglottis/gpgme/gpgme.go
Add Key.Fingerprint() string.
pprof refactors (vendor)
vendor/github.com/google/pprof/profile/{merge.go,profile.go,prune.go}
Use slices for contains checks; minor control flow refactors; import updates.
Storage import tweaks within image vendor
vendor/go.podman.io/image/v5/... (select files)
Change github.com/containers/storage/... to go.podman.io/storage/... in several files (e.g., regexp, fileutils, chunked). No logic changes.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Caller
  participant DockerClient as Docker Client Factory
  participant TLS as tlsconfig.defaultConfig
  participant Cert as getCert
  participant Key as getPrivateKey

  Caller->>DockerClient: New docker client
  DockerClient->>TLS: Build client TLS config
  TLS->>Cert: Load cert/key (no passphrase support)
  Cert->>Key: Parse private key
  alt Key is encrypted
    Key-->>Cert: errEncryptedKeyDeprecated
    Cert-->>TLS: propagate error
    TLS-->>DockerClient: error
    DockerClient-->>Caller: error (encrypted key deprecated)
  else Key is plain
    Key-->>Cert: PrivateKey
    Cert-->>TLS: tls.Certificate
    TLS-->>DockerClient: tls.Config with ClientDefault CipherSuites
    DockerClient-->>Caller: Client ready
  end

  note over TLS: CipherSuites now from ClientDefault()
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

lgtm

Suggested reviewers

  • anjannath
  • gbraad

Poem

I hopped through bytes and pods today,
Swapped some paths along the way—
From containers’ lanes to Podman’s door,
The units strong, imports galore.
TLS now speaks a cleaner tune,
Encrypted keys? Not coming soon.
Thump-thump—ship it by the moon! 🐇✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Description Check ⚠️ Warning The pull request description does not fully follow the repository template: it lacks a “Fixes:” or “Relates to:” section, the “Proposed changes” list is empty, and the “Testing” section contains no concrete test steps; instead it refers generically to the above narrative. Therefore key template sections are incomplete and need to be populated. Please update the description to include a “Fixes:” or “Relates to:” reference if applicable, provide a clear list of the main changes under “Proposed changes,” and add specific, verifiable test steps in the “Testing” section to satisfy the repository template.
✅ Passed checks (2 passed)
Check name Status Explanation
Title Check ✅ Passed The title succinctly and accurately describes the primary objective of the changeset, namely migrating imports of the containers image, storage, and common packages to their new go.podman.io monorepo paths. It is concise, clear, and directly reflects the core change without extraneous detail.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0b22a36 and ccf1619.

⛔ Files ignored due to path filters (1)
  • go.sum is excluded by !**/*.sum
📒 Files selected for processing (31)
  • cmd/crc/cmd/start.go (1 hunks)
  • cmd/crc/cmd/status.go (1 hunks)
  • go.mod (9 hunks)
  • pkg/crc/api/api_client_test.go (1 hunks)
  • pkg/crc/api/client/types.go (1 hunks)
  • pkg/crc/api/handlers.go (1 hunks)
  • pkg/crc/cluster/cluster.go (1 hunks)
  • pkg/crc/config/settings_test.go (1 hunks)
  • pkg/crc/config/validations.go (1 hunks)
  • pkg/crc/constants/constants.go (1 hunks)
  • pkg/crc/image/image.go (1 hunks)
  • pkg/crc/machine/config/config.go (1 hunks)
  • pkg/crc/machine/driver.go (1 hunks)
  • pkg/crc/machine/start.go (1 hunks)
  • pkg/crc/machine/start_test.go (1 hunks)
  • pkg/crc/machine/status.go (1 hunks)
  • pkg/crc/machine/status_test.go (1 hunks)
  • pkg/crc/machine/types/types.go (1 hunks)
  • pkg/crc/validation/validation.go (1 hunks)
  • pkg/drivers/libhvee/libhvee_windows.go (1 hunks)
  • test/e2e/testsuite/testsuite.go (1 hunks)
  • vendor/github.com/docker/go-connections/tlsconfig/config.go (7 hunks)
  • vendor/github.com/docker/go-connections/tlsconfig/config_client_ciphers.go (0 hunks)
  • vendor/github.com/google/pprof/profile/merge.go (2 hunks)
  • vendor/github.com/google/pprof/profile/profile.go (3 hunks)
  • vendor/github.com/google/pprof/profile/prune.go (2 hunks)
  • vendor/github.com/mattn/go-sqlite3/README.md (1 hunks)
  • vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h (71 hunks)
  • vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth.go (10 hunks)
  • vendor/github.com/mattn/go-sqlite3/sqlite3ext.h (2 hunks)
  • vendor/github.com/proglottis/gpgme/gpgme.go (1 hunks)
💤 Files with no reviewable changes (1)
  • vendor/github.com/docker/go-connections/tlsconfig/config_client_ciphers.go
✅ Files skipped from review due to trivial changes (2)
  • pkg/crc/constants/constants.go
  • pkg/crc/machine/start.go
🚧 Files skipped from review as they are similar to previous changes (13)
  • pkg/crc/cluster/cluster.go
  • test/e2e/testsuite/testsuite.go
  • pkg/crc/machine/status.go
  • vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth.go
  • pkg/crc/machine/status_test.go
  • pkg/drivers/libhvee/libhvee_windows.go
  • pkg/crc/config/validations.go
  • pkg/crc/image/image.go
  • pkg/crc/machine/driver.go
  • pkg/crc/api/client/types.go
  • pkg/crc/validation/validation.go
  • pkg/crc/machine/types/types.go
  • pkg/crc/api/api_client_test.go
🧰 Additional context used
🧬 Code graph analysis (1)
vendor/github.com/google/pprof/profile/merge.go (1)
vendor/github.com/google/pprof/profile/profile.go (2)
  • Sample (75-98)
  • Profile (35-63)
🪛 markdownlint-cli2 (0.18.1)
vendor/github.com/mattn/go-sqlite3/README.md

354-354: Emphasis style
Expected: underscore; Actual: asterisk

(MD049, emphasis-style)


354-354: Emphasis style
Expected: underscore; Actual: asterisk

(MD049, emphasis-style)

🔇 Additional comments (27)
vendor/github.com/proglottis/gpgme/gpgme.go (1)

880-884: LGTM!

The implementation of Key.Fingerprint() is correct and consistent with the established patterns in this codebase. The method properly converts the C fingerprint field to a Go string and includes runtime.KeepAlive(k) to prevent premature garbage collection while accessing the underlying C structure.

vendor/github.com/google/pprof/profile/merge.go (1)

82-86: LGTM: Cleaner zero-sample check.

Replacing the loop with slices.ContainsFunc improves readability while preserving the same logic (if any zero sample exists, re-merge to GC them).

vendor/github.com/google/pprof/profile/prune.go (1)

44-44: LGTM: Simplified reserved-name check.

Using slices.Contains to check membership in reservedNames is clearer and more idiomatic than the prior loop-based approach.

vendor/github.com/google/pprof/profile/profile.go (2)

738-738: LGTM: Cleaner label lookup.

Switching to slices.Contains for checking label membership is more idiomatic and concise.


851-861: LGTM: Explicit switch for unsymbolizable mappings.

The switch statement enumerates each unsymbolizable path (brackets, vdso, /dev/dri/, //anon, empty, memfd) explicitly, making the logic easier to follow than a compound condition.

pkg/crc/config/settings_test.go (1)

8-8: LGTM: Import path successfully migrated to Podman monorepo.

The strongunits package import path has been correctly updated from github.com/containers/common/pkg/strongunits to go.podman.io/common/pkg/strongunits. All usages remain unchanged and the test logic is unaffected.

pkg/crc/machine/start_test.go (1)

10-10: LGTM: Import path correctly updated.

The strongunits package import has been successfully migrated to go.podman.io/common/pkg/strongunits. All type usages (strongunits.B, strongunits.GiB) in the test cases remain consistent.

pkg/crc/machine/config/config.go (1)

5-5: LGTM: Import migration completed correctly.

The strongunits import path has been updated to go.podman.io/common/pkg/strongunits without affecting the MachineConfig struct definition or its strongunits-typed fields.

cmd/crc/cmd/status.go (1)

14-14: LGTM: Import path migration successful.

The strongunits package has been correctly migrated to go.podman.io/common/pkg/strongunits. All strongunits.B type usages in the status struct and throughout the file remain unchanged.

pkg/crc/api/handlers.go (1)

7-7: LGTM: Import updated correctly.

The strongunits import path has been successfully migrated to go.podman.io/common/pkg/strongunits. All API handler logic and strongunits type conversions remain unchanged.

cmd/crc/cmd/start.go (1)

13-13: LGTM: Import path correctly migrated.

The strongunits package import has been successfully updated to go.podman.io/common/pkg/strongunits. All strongunits type usages in the start command configuration and validations remain consistent.

go.mod (4)

3-5: LGTM: Go version and toolchain updated appropriately.

The Go version bump to 1.24.2 and addition of toolchain go1.24.6 are appropriate for supporting the module migration to Podman monorepo paths.


57-58: LGTM: Direct dependencies migrated to Podman monorepo.

The direct dependencies have been successfully migrated from github.com/containers/common and github.com/containers/image/v5 to their new Podman monorepo locations (go.podman.io/common and go.podman.io/image/v5). This aligns with the PR's import path migration objectives.


83-83: Expected indirect dependency noted.

The presence of github.com/containers/common v0.62.2 as an indirect dependency is expected per the PR author's comment—it's pulled in by vfkit, and a separate PR is planned to address this circular dependency between vfkit and crc.


95-203: LGTM: Indirect dependencies updated consistently.

The indirect dependency updates (Docker, go-connections, go-containerregistry, protobuf, genproto, storage, sqlite3, gpgme, sigstore, etc.) are consistent with the Podman module migration and align with the automated go mod tidy operations described in the PR.

vendor/github.com/docker/go-connections/tlsconfig/config.go (5)

42-50: Cipher suite update improves security posture.

The updated cipher suite list removes CBC-based ciphers and retains only AES-GCM ciphers with ECDHE key exchange. This is a security improvement that eliminates known weaknesses in CBC mode (e.g., padding oracle attacks).

The change aligns with modern TLS best practices and should not cause issues for crc's use case, which typically communicates with modern container runtimes and registries.


53-75: LGTM! Unified default configuration improves consistency.

The consolidation of client and server defaults into a shared defaultConfig function ensures both sides use identical cipher suites and minimum TLS version settings. This improves maintainability and prevents configuration drift between client and server modes.


196-245: LGTM! Client and Server functions correctly use updated helpers.

The Client() and Server() functions now properly use defaultConfig() for consistent initialization, and getCert() correctly calls getPrivateKey() without a passphrase parameter (line 182).

The error message at line 229 has been helpfully updated to explicitly mention that keys should not be encrypted, which will provide better guidance to users encountering this issue.


133-162: Encrypted PEM deprecation has no observable impact
Search of non-vendor docs, code, and PEM files found no encrypted private keys; removal of password-protected key support will not break existing configurations.


18-37: No references to removed Passphrase field or encrypted keys. Vendored update introduces no breaking API changes in non-vendor code.

vendor/github.com/mattn/go-sqlite3/README.md (1)

354-355: LGTM! User Authentication deprecation notice is clear.

The deprecation notices correctly warn users that SQLite User Authentication is deprecated, aligning with the code-level changes in sqlite3_opt_userauth.go where auth functions now return errors unconditionally.

Note: The static analysis hint about emphasis style (asterisks vs underscores) is a minor formatting preference and does not affect functionality.

vendor/github.com/mattn/go-sqlite3/sqlite3ext.h (2)

374-375: LGTM! New API entry correctly appended for backward compatibility.

The setlk_timeout function pointer is properly added at the end of the sqlite3_api_routines struct with clear version gating (3.50.0+), maintaining ABI backward compatibility per the warning in the struct comment.


709-710: LGTM! Macro glue correctly added for the new API.

The macro redefinition for sqlite3_setlk_timeout is correctly placed within the extension API section, properly version-gated, and follows the established pattern for redirecting calls through the sqlite3_api structure.

vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h (4)

1167-1172: New FCNTL to block on WAL connect is well placed

  • Added SQLITE_FCNTL_BLOCK_ON_CONNECT docs and constant 44 in the standard FCNTL range. No collisions seen (next sequential after 43).

Also applies to: 1269-1269


150-153: SQLite version bump to 3.50.4 verified in header and implementation
Header (sqlite3-binding.h) and amalgamation (sqlite3-binding.c) both define SQLITE_VERSION as "3.50.4" and SQLITE_VERSION_NUMBER as 3050004.


13370-13370: FTS5 Extension API v4 additions approved; no in-repo strict version checks found

  • Ran a search for iVersion ==, Fts5ExtensionApi, and fts5_api outside vendor/ and found no matches; no updates required.

3026-3063: No external references to sqlite3_setlk_timeout
Confirmed the function is only declared and implemented in vendor/github.com/mattn/go-sqlite3 and isn’t called elsewhere; it will be linked correctly with no unresolved references.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@openshift-ci
Copy link

openshift-ci bot commented Sep 1, 2025

Hi @jankaluza. Thanks for your PR.

I'm waiting for a crc-org member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@openshift-ci openshift-ci bot requested review from albfan and anjannath September 1, 2025 10:57
@openshift-ci
Copy link

openshift-ci bot commented Sep 1, 2025

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign gbraad for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@jankaluza
Copy link
Author

Note that github.com/containers/common v0.62.2 // indirect is still there. This is pulled in by the vfkit. I'm preparing PR also for vfkit, but since there is a circular dependency between vfkit and crc, we will need to merge both PRs first before the containers/common dependency disappears forever.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (3)
pkg/crc/image/image.go (2)

69-73: Destroy the PolicyContext to avoid leaks.

signature.PolicyContext should be destroyed; add a defer after creation.

   policyContext, err := img.policyContext()
   if err != nil {
     return nil, err
   }
+  defer policyContext.Destroy()

74-76: Avoid panic on nil context; return an error instead.

Panics here propagate to the CLI; prefer a typed error.

-  if ctx == nil {
-    panic("ctx is nil, this should not happen")
-  }
+  if ctx == nil {
+    return nil, fmt.Errorf("nil context")
+  }
pkg/crc/constants/constants.go (1)

10-10: LGTM on strongunits import migration; no legacy containers/ imports remain.* go.mod still includes github.com/containers/common (indirect)—run go mod tidy to remove this stale dependency.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 0e29b9a and 4170d78.

⛔ Files ignored due to path filters (1)
  • go.sum is excluded by !**/*.sum
📒 Files selected for processing (107)
  • cmd/crc/cmd/start.go (1 hunks)
  • cmd/crc/cmd/status.go (1 hunks)
  • go.mod (8 hunks)
  • pkg/crc/api/api_client_test.go (1 hunks)
  • pkg/crc/api/client/types.go (1 hunks)
  • pkg/crc/api/handlers.go (1 hunks)
  • pkg/crc/cluster/cluster.go (1 hunks)
  • pkg/crc/config/settings_test.go (1 hunks)
  • pkg/crc/config/validations.go (1 hunks)
  • pkg/crc/constants/constants.go (1 hunks)
  • pkg/crc/image/image.go (1 hunks)
  • pkg/crc/machine/config/config.go (1 hunks)
  • pkg/crc/machine/driver.go (1 hunks)
  • pkg/crc/machine/start.go (1 hunks)
  • pkg/crc/machine/start_test.go (1 hunks)
  • pkg/crc/machine/status.go (1 hunks)
  • pkg/crc/machine/status_test.go (1 hunks)
  • pkg/crc/machine/types/types.go (1 hunks)
  • pkg/crc/validation/validation.go (1 hunks)
  • pkg/drivers/libhvee/libhvee_windows.go (1 hunks)
  • test/e2e/testsuite/testsuite.go (1 hunks)
  • vendor/github.com/containers/image/v5/LICENSE (0 hunks)
  • vendor/github.com/containers/image/v5/copy/blob.go (0 hunks)
  • vendor/github.com/containers/image/v5/copy/compression.go (0 hunks)
  • vendor/github.com/containers/image/v5/copy/copy.go (0 hunks)
  • vendor/github.com/containers/image/v5/copy/digesting_reader.go (0 hunks)
  • vendor/github.com/containers/image/v5/copy/encryption.go (0 hunks)
  • vendor/github.com/containers/image/v5/copy/manifest.go (0 hunks)
  • vendor/github.com/containers/image/v5/copy/multiple.go (0 hunks)
  • vendor/github.com/containers/image/v5/copy/progress_bars.go (0 hunks)
  • vendor/github.com/containers/image/v5/copy/progress_channel.go (0 hunks)
  • vendor/github.com/containers/image/v5/copy/sign.go (0 hunks)
  • vendor/github.com/containers/image/v5/copy/single.go (0 hunks)
  • vendor/github.com/containers/image/v5/directory/directory_dest.go (0 hunks)
  • vendor/github.com/containers/image/v5/directory/directory_src.go (0 hunks)
  • vendor/github.com/containers/image/v5/directory/directory_transport.go (0 hunks)
  • vendor/github.com/containers/image/v5/directory/explicitfilepath/path.go (0 hunks)
  • vendor/github.com/containers/image/v5/docker/body_reader.go (0 hunks)
  • vendor/github.com/containers/image/v5/docker/cache.go (0 hunks)
  • vendor/github.com/containers/image/v5/docker/distribution_error.go (0 hunks)
  • vendor/github.com/containers/image/v5/docker/docker_client.go (0 hunks)
  • vendor/github.com/containers/image/v5/docker/docker_image.go (0 hunks)
  • vendor/github.com/containers/image/v5/docker/docker_image_dest.go (0 hunks)
  • vendor/github.com/containers/image/v5/docker/docker_image_src.go (0 hunks)
  • vendor/github.com/containers/image/v5/docker/docker_transport.go (0 hunks)
  • vendor/github.com/containers/image/v5/docker/errors.go (0 hunks)
  • vendor/github.com/containers/image/v5/docker/paths_common.go (0 hunks)
  • vendor/github.com/containers/image/v5/docker/paths_freebsd.go (0 hunks)
  • vendor/github.com/containers/image/v5/docker/policyconfiguration/naming.go (0 hunks)
  • vendor/github.com/containers/image/v5/docker/reference/README.md (0 hunks)
  • vendor/github.com/containers/image/v5/docker/reference/helpers.go (0 hunks)
  • vendor/github.com/containers/image/v5/docker/reference/normalize.go (0 hunks)
  • vendor/github.com/containers/image/v5/docker/reference/reference.go (0 hunks)
  • vendor/github.com/containers/image/v5/docker/reference/regexp-additions.go (0 hunks)
  • vendor/github.com/containers/image/v5/docker/reference/regexp.go (0 hunks)
  • vendor/github.com/containers/image/v5/docker/registries_d.go (0 hunks)
  • vendor/github.com/containers/image/v5/docker/wwwauthenticate.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/blobinfocache/blobinfocache.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/blobinfocache/types.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/image/docker_list.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/image/docker_schema1.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/image/docker_schema2.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/image/manifest.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/image/memory.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/image/oci.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/image/oci_index.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/image/sourced.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/image/unparsed.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/imagedestination/impl/compat.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/imagedestination/impl/helpers.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/imagedestination/impl/properties.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/imagedestination/stubs/original_oci_config.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/imagedestination/stubs/put_blob_partial.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/imagedestination/stubs/signatures.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/imagedestination/stubs/stubs.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/imagedestination/wrapper.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/imagesource/impl/compat.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/imagesource/impl/layer_infos.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/imagesource/impl/properties.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/imagesource/impl/signatures.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/imagesource/stubs/get_blob_at.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/imagesource/stubs/stubs.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/imagesource/wrapper.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/iolimits/iolimits.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/manifest/common.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/manifest/docker_schema2.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/manifest/docker_schema2_list.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/manifest/errors.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/manifest/list.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/manifest/manifest.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/manifest/oci_index.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/multierr/multierr.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/pkg/platform/platform_matcher.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/private/private.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/putblobdigest/put_blob_digest.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/rootless/rootless.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/set/set.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/signature/signature.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/signature/sigstore.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/signature/simple.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/signer/signer.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/streamdigest/stream_digest.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/tmpdir/tmpdir.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/unparsedimage/wrapper.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/uploadreader/upload_reader.go (0 hunks)
  • vendor/github.com/containers/image/v5/internal/useragent/useragent.go (0 hunks)
  • vendor/github.com/containers/image/v5/manifest/common.go (0 hunks)
⛔ Files not processed due to max files limit (22)
  • vendor/github.com/containers/image/v5/manifest/docker_schema1.go
  • vendor/github.com/containers/image/v5/manifest/docker_schema2.go
  • vendor/github.com/containers/image/v5/manifest/docker_schema2_list.go
  • vendor/github.com/containers/image/v5/manifest/list.go
  • vendor/github.com/containers/image/v5/manifest/manifest.go
  • vendor/github.com/containers/image/v5/manifest/oci.go
  • vendor/github.com/containers/image/v5/manifest/oci_index.go
  • vendor/github.com/containers/image/v5/pkg/blobinfocache/default.go
  • vendor/github.com/containers/image/v5/pkg/blobinfocache/internal/prioritize/prioritize.go
  • vendor/github.com/containers/image/v5/pkg/blobinfocache/memory/memory.go
  • vendor/github.com/containers/image/v5/pkg/blobinfocache/none/none.go
  • vendor/github.com/containers/image/v5/pkg/blobinfocache/sqlite/sqlite.go
  • vendor/github.com/containers/image/v5/pkg/compression/compression.go
  • vendor/github.com/containers/image/v5/pkg/compression/internal/types.go
  • vendor/github.com/containers/image/v5/pkg/compression/types/types.go
  • vendor/github.com/containers/image/v5/pkg/compression/zstd.go
  • vendor/github.com/containers/image/v5/pkg/docker/config/config.go
  • vendor/github.com/containers/image/v5/pkg/strslice/README.md
  • vendor/github.com/containers/image/v5/pkg/strslice/strslice.go
  • vendor/github.com/containers/image/v5/pkg/sysregistriesv2/paths_common.go
  • vendor/github.com/containers/image/v5/pkg/sysregistriesv2/paths_freebsd.go
  • vendor/github.com/containers/image/v5/pkg/sysregistriesv2/shortnames.go
💤 Files with no reviewable changes (86)
  • vendor/github.com/containers/image/v5/internal/imagedestination/impl/helpers.go
  • vendor/github.com/containers/image/v5/internal/uploadreader/upload_reader.go
  • vendor/github.com/containers/image/v5/docker/reference/regexp-additions.go
  • vendor/github.com/containers/image/v5/internal/imagesource/impl/layer_infos.go
  • vendor/github.com/containers/image/v5/internal/multierr/multierr.go
  • vendor/github.com/containers/image/v5/docker/paths_common.go
  • vendor/github.com/containers/image/v5/internal/manifest/docker_schema2.go
  • vendor/github.com/containers/image/v5/docker/cache.go
  • vendor/github.com/containers/image/v5/copy/multiple.go
  • vendor/github.com/containers/image/v5/internal/imagesource/stubs/stubs.go
  • vendor/github.com/containers/image/v5/internal/imagesource/impl/properties.go
  • vendor/github.com/containers/image/v5/internal/useragent/useragent.go
  • vendor/github.com/containers/image/v5/docker/reference/README.md
  • vendor/github.com/containers/image/v5/internal/manifest/common.go
  • vendor/github.com/containers/image/v5/LICENSE
  • vendor/github.com/containers/image/v5/directory/explicitfilepath/path.go
  • vendor/github.com/containers/image/v5/internal/image/oci_index.go
  • vendor/github.com/containers/image/v5/internal/rootless/rootless.go
  • vendor/github.com/containers/image/v5/docker/docker_image.go
  • vendor/github.com/containers/image/v5/internal/streamdigest/stream_digest.go
  • vendor/github.com/containers/image/v5/copy/progress_channel.go
  • vendor/github.com/containers/image/v5/internal/image/manifest.go
  • vendor/github.com/containers/image/v5/internal/signer/signer.go
  • vendor/github.com/containers/image/v5/internal/blobinfocache/blobinfocache.go
  • vendor/github.com/containers/image/v5/internal/manifest/manifest.go
  • vendor/github.com/containers/image/v5/internal/signature/signature.go
  • vendor/github.com/containers/image/v5/internal/imagesource/impl/signatures.go
  • vendor/github.com/containers/image/v5/copy/digesting_reader.go
  • vendor/github.com/containers/image/v5/internal/imagedestination/stubs/stubs.go
  • vendor/github.com/containers/image/v5/docker/docker_image_dest.go
  • vendor/github.com/containers/image/v5/internal/imagedestination/impl/properties.go
  • vendor/github.com/containers/image/v5/internal/signature/simple.go
  • vendor/github.com/containers/image/v5/copy/sign.go
  • vendor/github.com/containers/image/v5/internal/pkg/platform/platform_matcher.go
  • vendor/github.com/containers/image/v5/docker/paths_freebsd.go
  • vendor/github.com/containers/image/v5/docker/body_reader.go
  • vendor/github.com/containers/image/v5/internal/image/docker_schema1.go
  • vendor/github.com/containers/image/v5/copy/compression.go
  • vendor/github.com/containers/image/v5/internal/imagedestination/stubs/signatures.go
  • vendor/github.com/containers/image/v5/copy/encryption.go
  • vendor/github.com/containers/image/v5/internal/imagesource/wrapper.go
  • vendor/github.com/containers/image/v5/internal/imagesource/impl/compat.go
  • vendor/github.com/containers/image/v5/internal/image/memory.go
  • vendor/github.com/containers/image/v5/internal/image/docker_list.go
  • vendor/github.com/containers/image/v5/docker/reference/normalize.go
  • vendor/github.com/containers/image/v5/internal/imagesource/stubs/get_blob_at.go
  • vendor/github.com/containers/image/v5/internal/imagedestination/stubs/put_blob_partial.go
  • vendor/github.com/containers/image/v5/internal/manifest/docker_schema2_list.go
  • vendor/github.com/containers/image/v5/docker/wwwauthenticate.go
  • vendor/github.com/containers/image/v5/docker/policyconfiguration/naming.go
  • vendor/github.com/containers/image/v5/docker/docker_client.go
  • vendor/github.com/containers/image/v5/docker/registries_d.go
  • vendor/github.com/containers/image/v5/docker/distribution_error.go
  • vendor/github.com/containers/image/v5/internal/blobinfocache/types.go
  • vendor/github.com/containers/image/v5/copy/progress_bars.go
  • vendor/github.com/containers/image/v5/copy/blob.go
  • vendor/github.com/containers/image/v5/internal/iolimits/iolimits.go
  • vendor/github.com/containers/image/v5/directory/directory_src.go
  • vendor/github.com/containers/image/v5/docker/reference/regexp.go
  • vendor/github.com/containers/image/v5/internal/imagedestination/wrapper.go
  • vendor/github.com/containers/image/v5/docker/reference/helpers.go
  • vendor/github.com/containers/image/v5/copy/manifest.go
  • vendor/github.com/containers/image/v5/internal/image/docker_schema2.go
  • vendor/github.com/containers/image/v5/internal/image/unparsed.go
  • vendor/github.com/containers/image/v5/internal/tmpdir/tmpdir.go
  • vendor/github.com/containers/image/v5/internal/image/oci.go
  • vendor/github.com/containers/image/v5/internal/set/set.go
  • vendor/github.com/containers/image/v5/docker/docker_image_src.go
  • vendor/github.com/containers/image/v5/internal/manifest/list.go
  • vendor/github.com/containers/image/v5/internal/imagedestination/impl/compat.go
  • vendor/github.com/containers/image/v5/internal/putblobdigest/put_blob_digest.go
  • vendor/github.com/containers/image/v5/internal/imagedestination/stubs/original_oci_config.go
  • vendor/github.com/containers/image/v5/internal/private/private.go
  • vendor/github.com/containers/image/v5/manifest/common.go
  • vendor/github.com/containers/image/v5/internal/unparsedimage/wrapper.go
  • vendor/github.com/containers/image/v5/internal/image/sourced.go
  • vendor/github.com/containers/image/v5/internal/signature/sigstore.go
  • vendor/github.com/containers/image/v5/internal/manifest/oci_index.go
  • vendor/github.com/containers/image/v5/copy/copy.go
  • vendor/github.com/containers/image/v5/docker/errors.go
  • vendor/github.com/containers/image/v5/directory/directory_dest.go
  • vendor/github.com/containers/image/v5/directory/directory_transport.go
  • vendor/github.com/containers/image/v5/docker/reference/reference.go
  • vendor/github.com/containers/image/v5/docker/docker_transport.go
  • vendor/github.com/containers/image/v5/copy/single.go
  • vendor/github.com/containers/image/v5/internal/manifest/errors.go
🔇 Additional comments (21)
pkg/drivers/libhvee/libhvee_windows.go (1)

15-15: Strongunits import migration verified in vendor/libhvee alignment is correct—no github.com/containers/common/pkg/strongunits imports found in vendor/libhvee.

pkg/crc/machine/types/types.go (1)

8-8: Import switch to go.podman.io/common/strongunits — LGTM

Type usage remains unchanged; no API drift observed.

go.mod (1)

15-15: No stray github.com/containers/* imports found — graph is clean
Only the indirect github.com/containers/common v0.62.2 in go.mod and vendor entries remain; no direct source imports outside vendor.

cmd/crc/cmd/status.go (1)

14-14: Strongunits import updated — LGTM

No behavior change; JSON and printing paths unaffected.

pkg/crc/machine/start.go (1)

14-14: Strongunits import migrated — LGTM

Minimum memory constant and conversions remain intact.

pkg/crc/image/image.go (1)

20-23: Import-path migration looks correct.

Switched to go.podman.io/image/v5 for copy, directory, docker, signature without API changes. Good.

pkg/crc/validation/validation.go (1)

12-12: Import migration verified
No legacy github.com/containers/(image|common|storage) imports remain in code—only module entries in go.mod/go.sum.

pkg/crc/config/settings_test.go (1)

8-8: Test import updated correctly.

No behavior change; compiles against new strongunits path.

pkg/crc/machine/driver.go (1)

6-6: Import migration acknowledged.

strongunits path update only; setter logic unaffected.

pkg/crc/config/validations.go (1)

8-8: Import migration looks good.

Validation logic unchanged; types match.

pkg/crc/api/api_client_test.go (1)

10-10: LGTM: switched to go.podman.io/common/strongunits

Import-path migration looks correct; no functional changes in this test.

test/e2e/testsuite/testsuite.go (1)

22-22: LGTM: strongunits import path updated

Consistent with the monorepo move; no behavior changes in the E2E steps.

pkg/crc/machine/config/config.go (1)

5-5: LGTM: config uses go.podman.io/common/strongunits

Types (MiB, GiB) remain the same; no struct/API changes.

pkg/crc/machine/start_test.go (1)

10-10: LGTM: tests now import strongunits from go.podman.io/common

Assertions using B/GiB/ToBytes remain compatible.

pkg/crc/machine/status_test.go (1)

7-7: LGTM: strongunits import migrated

Test expectations unchanged; import path aligns with the rest of the repo.

pkg/crc/cluster/cluster.go (1)

18-18: LGTM on import path change.

Switch to go.podman.io/common/pkg/strongunits is consistent with the PR objective; usages remain compatible.

pkg/crc/api/handlers.go (1)

7-7: LGTM on strongunits migration.

No behavior change; types align with existing Start config handling.

cmd/crc/cmd/start.go (1)

13-13: LGTM on strongunits import update.

Flag parsing and validation still use strongunits consistently.

pkg/crc/machine/status.go (1)

9-9: LGTM on strongunits path migration.

Status computation keeps the same units. The earlier verification script also checks for strongunits API presence.

pkg/crc/api/client/types.go (2)

7-7: Import path migration to go.podman.io/common looks good

Matches the monorepo move and aligns with the PR’s objective. No functional concerns here.


27-33: Manually verify JSON encoding of strongunits.B in the upstream module

The strongunits package isn’t vendored here, so please confirm that the upstream strongunits.B MarshalJSON/UnmarshalJSON behavior (string vs numeric encoding) has not changed and remains compatible to avoid API contract drift.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (18)
vendor/github.com/docker/go-connections/tlsconfig/config.go (2)

39-50: Avoid slice aliasing for exported cipher list; minor comment grammar fix.

Assigning the exported DefaultServerAcceptedCiphers directly to defaultCipherSuites aliases the same backing array. External mutation of the exported slice (e.g., index assignment) would also mutate your internal default. Safer to publish a copy. Also fix “uses” → “used”.

-// DefaultServerAcceptedCiphers should be uses by code which already has a crypto/tls
+// DefaultServerAcceptedCiphers should be used by code which already has a crypto/tls
 // options struct but wants to use a commonly accepted set of TLS cipher suites, with
 // known weak algorithms removed.
-var DefaultServerAcceptedCiphers = defaultCipherSuites
+var DefaultServerAcceptedCiphers = append([]uint16(nil), defaultCipherSuites...)

164-167: Update stale comment: passphrase support was removed.

Comment still mentions decrypting with a passphrase; the code now rejects encrypted keys.

-// getCert returns a Certificate from the CertFile and KeyFile in 'options',
-// if the key is encrypted, the Passphrase in 'options' will be used to
-// decrypt it.
+// getCert returns a Certificate from the CertFile and KeyFile in 'options'.
+// Encrypted (password-protected) private keys are not supported and will
+// result in an error (see errEncryptedKeyDeprecated).
vendor/go.podman.io/image/v5/internal/tmpdir/tmpdir.go (1)

10-13: Stale -ldflags doc still references github.com/containers path.
If you keep vendor comments, no change needed here; otherwise consider updating upstream to prevent confusion.

Proposed doc-only tweak (for upstream):

-// -ldflags '-X github.com/containers/image/v5/internal/tmpdir.unixTempDirForBigFiles=$your_path'
+// -ldflags '-X go.podman.io/image/v5/internal/tmpdir.unixTempDirForBigFiles=$your_path'
vendor/go.podman.io/image/v5/docker/registries_d.go (1)

23-26: Update ldflags override path in comment to new module path.

The example still references github.com/containers/...; suggest aligning to go.podman.io to avoid confusion.

-// -ldflags '-X github.com/containers/image/v5/docker.systemRegistriesDirPath=$your_path'
+// -ldflags '-X go.podman.io/image/v5/docker.systemRegistriesDirPath=$your_path'
vendor/github.com/mattn/go-sqlite3/README.md (1)

354-355: Fix markdownlint MD049 (emphasis style) in vendored README.

If lint checks include vendor, switch asterisks to underscores.

-***This is deprecated***
+__This is deprecated__

If vendor is excluded from lint, feel free to ignore.

vendor/go.podman.io/image/v5/internal/useragent/useragent.go (1)

3-3: User-Agent still references github.com/containers/image

Likely intentional upstream choice; don’t patch vendor here. Just flagging in case you expected UA to reflect the go.podman.io move.

vendor/github.com/containers/libhvee/pkg/wmiext/conversion.go (1)

438-444: Minor style tweak LGTM; be mindful of theoretical overflow

Type-inferred stamp doesn’t change behavior. Extremely large intervals could overflow int64 on time.Unix, but that’s preexisting and non-blocking.

vendor/github.com/containers/libhvee/pkg/wmiext/array.go (1)

44-45: Clarify nolint rationale on unsafe.Pointer cast.

Add a short reason so future readers understand why bypassing vet is safe here (Win32 returns an allocation pointer which is immediately cast).

-	safearray = (*ole.SafeArray)(unsafe.Pointer(ret)) //nolint:govet
+	safearray = (*ole.SafeArray)(unsafe.Pointer(ret)) //nolint:govet -- Windows API returns a heap pointer; immediate cast is intended
vendor/go.podman.io/image/v5/pkg/compression/compression.go (1)

110-112: Update stale path in comment to match new module.

Keep comments consistent with imports.

-// github.com/containers/storage/pkg/chunked .
+// go.podman.io/storage/pkg/chunked .
vendor/github.com/containers/libhvee/pkg/hypervctl/vm.go (1)

433-456: Add fast-fail check for DVDDiskPath
Insert before the DVD-drive builder to validate the image exists:

if _, err := os.Stat(config.DVDDiskPath); err != nil {
    return fmt.Errorf("DVD image not found: %w", err)
}

Slot 1 is confirmed free for the DVD drive—no other synthetic drives use it in this package.

vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth.go (2)

111-112: Typos in comments (vendor nit).

“THis” → “This”; “their” → “there”. No action required here unless you’re carrying local vendor patches.


62-63: Consider symbolic return codes for readability (vendor nit).

Returning literal 1/0 works; using named constants (e.g., int(C.SQLITE_ERROR)/int(C.SQLITE_OK)) would self-document intent. Not necessary if you’re mirroring upstream.

Also applies to: 92-93, 122-123, 147-148

vendor/go.podman.io/common/pkg/strongunits/config.go (1)

22-23: Minor doc typo (vendor nit).

“gibToB s the math” → “gibToB is the math”.

vendor/go.podman.io/image/v5/docker/docker_image.go (1)

81-81: Avoid deferring res.Body.Close() inside a loop

Deferring Close in a paginated loop holds bodies until function return and can inflate FD/memory usage. Consider closing the body explicitly per-iteration after decoding/using headers, and ensuring early-return paths close it as well. Since this is vendored upstream code, consider forwarding upstream rather than patching locally.

vendor/go.podman.io/image/v5/manifest/oci_index.go (1)

5-5: Coordinate merge with vfkit to drop stale github.com/containers/common.

Given the noted circular dep, ensure CI tolerates a transient state or gate merges to avoid mixed modules.

vendor/go.podman.io/image/v5/docker/docker_client.go (1)

231-237: TLS cipher policy change: verify registry compatibility; consider an opt-in for TLS 1.3-only.

Pinning CipherSuites to tlsconfig.ClientDefault() is reasonable. Leave MinVersion implicit (client default TLS 1.2) for compatibility, but please sanity-check against any registries in your matrix that only support legacy TLS 1.2 ciphers. If a hardened mode is needed later, exposing an optional SystemContext toggle to force TLS 1.3 could be added without breaking defaults.

vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h (2)

5715-5832: Function flag set expansions (DETERMINISTIC, DIRECTONLY, INNOCUOUS, SUBTYPE, RESULT_SUBTYPE, SELFORDER1)

These define set is unchanged in value but expanded docs. If we ever register custom SQL functions via go-sqlite3, prefer tagging with SQLITE_DETERMINISTIC and, where appropriate, SQLITE_DIRECTONLY/INNOCUOUS to harden use in triggers/views.

Happy to provide a small helper to wrap sqlite3_create_function*_v2 with safe flags.


6250-6270: Destructor macros (SQLITE_STATIC/TRANSIENT) unchanged — keep usage correct in CGO

Just a reminder (since vendored header is updated): when passing Go strings/blobs into C APIs returning const char*, continue to use SQLITE_TRANSIENT to avoid lifetime bugs.

If desired, I can review any sqlite bindings usage sites for correct destructor flags.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 4170d78 and 0b22a36.

⛔ Files ignored due to path filters (1)
  • go.sum is excluded by !**/*.sum
📒 Files selected for processing (107)
  • cmd/crc/cmd/start.go (1 hunks)
  • cmd/crc/cmd/status.go (1 hunks)
  • go.mod (8 hunks)
  • pkg/crc/api/api_client_test.go (1 hunks)
  • pkg/crc/api/client/types.go (1 hunks)
  • pkg/crc/api/handlers.go (1 hunks)
  • pkg/crc/cluster/cluster.go (1 hunks)
  • pkg/crc/config/settings_test.go (1 hunks)
  • pkg/crc/config/validations.go (1 hunks)
  • pkg/crc/constants/constants.go (1 hunks)
  • pkg/crc/image/image.go (1 hunks)
  • pkg/crc/machine/config/config.go (1 hunks)
  • pkg/crc/machine/driver.go (1 hunks)
  • pkg/crc/machine/start.go (1 hunks)
  • pkg/crc/machine/start_test.go (1 hunks)
  • pkg/crc/machine/status.go (1 hunks)
  • pkg/crc/machine/status_test.go (1 hunks)
  • pkg/crc/machine/types/types.go (1 hunks)
  • pkg/crc/validation/validation.go (1 hunks)
  • pkg/drivers/libhvee/libhvee_windows.go (1 hunks)
  • test/e2e/testsuite/testsuite.go (1 hunks)
  • vendor/github.com/containers/libhvee/pkg/hypervctl/vhd.go (1 hunks)
  • vendor/github.com/containers/libhvee/pkg/hypervctl/vm.go (2 hunks)
  • vendor/github.com/containers/libhvee/pkg/hypervctl/vm_config.go (1 hunks)
  • vendor/github.com/containers/libhvee/pkg/wmiext/array.go (2 hunks)
  • vendor/github.com/containers/libhvee/pkg/wmiext/conversion.go (2 hunks)
  • vendor/github.com/docker/go-connections/tlsconfig/config.go (7 hunks)
  • vendor/github.com/docker/go-connections/tlsconfig/config_client_ciphers.go (0 hunks)
  • vendor/github.com/mattn/go-sqlite3/README.md (1 hunks)
  • vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h (71 hunks)
  • vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth.go (10 hunks)
  • vendor/github.com/mattn/go-sqlite3/sqlite3ext.h (2 hunks)
  • vendor/github.com/proglottis/gpgme/gpgme.go (1 hunks)
  • vendor/go.podman.io/common/LICENSE (1 hunks)
  • vendor/go.podman.io/common/pkg/strongunits/config.go (1 hunks)
  • vendor/go.podman.io/image/v5/copy/blob.go (1 hunks)
  • vendor/go.podman.io/image/v5/copy/compression.go (1 hunks)
  • vendor/go.podman.io/image/v5/copy/copy.go (1 hunks)
  • vendor/go.podman.io/image/v5/copy/encryption.go (1 hunks)
  • vendor/go.podman.io/image/v5/copy/manifest.go (1 hunks)
  • vendor/go.podman.io/image/v5/copy/multiple.go (1 hunks)
  • vendor/go.podman.io/image/v5/copy/progress_bars.go (1 hunks)
  • vendor/go.podman.io/image/v5/copy/progress_channel.go (1 hunks)
  • vendor/go.podman.io/image/v5/copy/sign.go (1 hunks)
  • vendor/go.podman.io/image/v5/copy/single.go (1 hunks)
  • vendor/go.podman.io/image/v5/directory/directory_dest.go (1 hunks)
  • vendor/go.podman.io/image/v5/directory/directory_src.go (1 hunks)
  • vendor/go.podman.io/image/v5/directory/directory_transport.go (1 hunks)
  • vendor/go.podman.io/image/v5/directory/explicitfilepath/path.go (1 hunks)
  • vendor/go.podman.io/image/v5/docker/cache.go (1 hunks)
  • vendor/go.podman.io/image/v5/docker/docker_client.go (2 hunks)
  • vendor/go.podman.io/image/v5/docker/docker_image.go (1 hunks)
  • vendor/go.podman.io/image/v5/docker/docker_image_dest.go (1 hunks)
  • vendor/go.podman.io/image/v5/docker/docker_image_src.go (1 hunks)
  • vendor/go.podman.io/image/v5/docker/docker_transport.go (1 hunks)
  • vendor/go.podman.io/image/v5/docker/policyconfiguration/naming.go (1 hunks)
  • vendor/go.podman.io/image/v5/docker/reference/regexp.go (1 hunks)
  • vendor/go.podman.io/image/v5/docker/registries_d.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/blobinfocache/blobinfocache.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/blobinfocache/types.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/image/docker_list.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/image/docker_schema1.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/image/docker_schema2.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/image/manifest.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/image/memory.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/image/oci.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/image/oci_index.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/image/sourced.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/image/unparsed.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/imagedestination/impl/compat.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/imagedestination/impl/helpers.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/imagedestination/impl/properties.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/imagedestination/stubs/put_blob_partial.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/imagedestination/stubs/signatures.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/imagedestination/wrapper.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/imagesource/impl/compat.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/imagesource/impl/layer_infos.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/imagesource/impl/signatures.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/imagesource/stubs/get_blob_at.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/imagesource/wrapper.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/manifest/docker_schema2_list.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/manifest/list.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/manifest/manifest.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/manifest/oci_index.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/pkg/platform/platform_matcher.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/private/private.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/putblobdigest/put_blob_digest.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/signer/signer.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/streamdigest/stream_digest.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/tmpdir/tmpdir.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/unparsedimage/wrapper.go (1 hunks)
  • vendor/go.podman.io/image/v5/internal/useragent/useragent.go (1 hunks)
  • vendor/go.podman.io/image/v5/manifest/common.go (1 hunks)
  • vendor/go.podman.io/image/v5/manifest/docker_schema1.go (1 hunks)
  • vendor/go.podman.io/image/v5/manifest/docker_schema2.go (1 hunks)
  • vendor/go.podman.io/image/v5/manifest/docker_schema2_list.go (1 hunks)
  • vendor/go.podman.io/image/v5/manifest/list.go (1 hunks)
  • vendor/go.podman.io/image/v5/manifest/manifest.go (1 hunks)
  • vendor/go.podman.io/image/v5/manifest/oci.go (1 hunks)
  • vendor/go.podman.io/image/v5/manifest/oci_index.go (1 hunks)
  • vendor/go.podman.io/image/v5/pkg/blobinfocache/default.go (1 hunks)
  • vendor/go.podman.io/image/v5/pkg/blobinfocache/internal/prioritize/prioritize.go (1 hunks)
  • vendor/go.podman.io/image/v5/pkg/blobinfocache/memory/memory.go (1 hunks)
  • vendor/go.podman.io/image/v5/pkg/blobinfocache/none/none.go (1 hunks)
  • vendor/go.podman.io/image/v5/pkg/blobinfocache/sqlite/sqlite.go (1 hunks)
  • vendor/go.podman.io/image/v5/pkg/compression/compression.go (1 hunks)
  • vendor/go.podman.io/image/v5/pkg/compression/types/types.go (1 hunks)
⛔ Files not processed due to max files limit (50)
  • vendor/go.podman.io/image/v5/pkg/docker/config/config.go
  • vendor/go.podman.io/image/v5/pkg/sysregistriesv2/shortnames.go
  • vendor/go.podman.io/image/v5/pkg/sysregistriesv2/system_registries_v2.go
  • vendor/go.podman.io/image/v5/signature/docker.go
  • vendor/go.podman.io/image/v5/signature/fulcio_cert.go
  • vendor/go.podman.io/image/v5/signature/internal/json.go
  • vendor/go.podman.io/image/v5/signature/internal/sigstore_payload.go
  • vendor/go.podman.io/image/v5/signature/mechanism_gpgme.go
  • vendor/go.podman.io/image/v5/signature/mechanism_openpgp.go
  • vendor/go.podman.io/image/v5/signature/pki_cert.go
  • vendor/go.podman.io/image/v5/signature/policy_config.go
  • vendor/go.podman.io/image/v5/signature/policy_config_sigstore.go
  • vendor/go.podman.io/image/v5/signature/policy_eval.go
  • vendor/go.podman.io/image/v5/signature/policy_eval_baselayer.go
  • vendor/go.podman.io/image/v5/signature/policy_eval_signedby.go
  • vendor/go.podman.io/image/v5/signature/policy_eval_sigstore.go
  • vendor/go.podman.io/image/v5/signature/policy_eval_simple.go
  • vendor/go.podman.io/image/v5/signature/policy_reference_match.go
  • vendor/go.podman.io/image/v5/signature/signer/signer.go
  • vendor/go.podman.io/image/v5/signature/sigstore/internal/signer.go
  • vendor/go.podman.io/image/v5/signature/sigstore/signer.go
  • vendor/go.podman.io/image/v5/signature/simple.go
  • vendor/go.podman.io/image/v5/signature/simplesigning/signer.go
  • vendor/go.podman.io/image/v5/transports/stub.go
  • vendor/go.podman.io/image/v5/transports/transports.go
  • vendor/go.podman.io/image/v5/types/types.go
  • vendor/go.podman.io/image/v5/version/version.go
  • vendor/go.podman.io/storage/pkg/archive/archive.go
  • vendor/go.podman.io/storage/pkg/archive/archive_linux.go
  • vendor/go.podman.io/storage/pkg/archive/archive_unix.go
  • vendor/go.podman.io/storage/pkg/archive/archive_windows.go
  • vendor/go.podman.io/storage/pkg/archive/changes.go
  • vendor/go.podman.io/storage/pkg/archive/changes_linux.go
  • vendor/go.podman.io/storage/pkg/archive/changes_other.go
  • vendor/go.podman.io/storage/pkg/archive/changes_unix.go
  • vendor/go.podman.io/storage/pkg/archive/changes_windows.go
  • vendor/go.podman.io/storage/pkg/archive/copy.go
  • vendor/go.podman.io/storage/pkg/archive/diff.go
  • vendor/go.podman.io/storage/pkg/archive/fflags_bsd.go
  • vendor/go.podman.io/storage/pkg/chunked/compressor/compressor.go
  • vendor/go.podman.io/storage/pkg/chunked/internal/minimal/compression.go
  • vendor/go.podman.io/storage/pkg/chunked/toc/toc.go
  • vendor/go.podman.io/storage/pkg/homedir/homedir_unix.go
  • vendor/go.podman.io/storage/pkg/idtools/idtools.go
  • vendor/go.podman.io/storage/pkg/idtools/idtools_unix.go
  • vendor/go.podman.io/storage/pkg/idtools/usergroupadd_linux.go
  • vendor/go.podman.io/storage/pkg/ioutils/temp_windows.go
  • vendor/go.podman.io/storage/pkg/lockfile/lockfile.go
  • vendor/go.podman.io/storage/pkg/lockfile/lockfile_unix.go
  • vendor/go.podman.io/storage/pkg/pools/pools.go
💤 Files with no reviewable changes (1)
  • vendor/github.com/docker/go-connections/tlsconfig/config_client_ciphers.go
✅ Files skipped from review due to trivial changes (8)
  • vendor/go.podman.io/image/v5/internal/signer/signer.go
  • vendor/go.podman.io/image/v5/internal/image/docker_schema2.go
  • vendor/go.podman.io/image/v5/internal/image/oci_index.go
  • vendor/go.podman.io/image/v5/manifest/docker_schema1.go
  • vendor/go.podman.io/image/v5/internal/imagedestination/stubs/put_blob_partial.go
  • pkg/crc/machine/start_test.go
  • vendor/go.podman.io/image/v5/internal/streamdigest/stream_digest.go
  • pkg/crc/machine/config/config.go
🚧 Files skipped from review as they are similar to previous changes (18)
  • pkg/crc/config/validations.go
  • pkg/crc/api/api_client_test.go
  • cmd/crc/cmd/start.go
  • pkg/crc/config/settings_test.go
  • cmd/crc/cmd/status.go
  • pkg/crc/cluster/cluster.go
  • pkg/crc/constants/constants.go
  • pkg/crc/machine/start.go
  • pkg/crc/machine/status.go
  • pkg/crc/machine/driver.go
  • pkg/crc/image/image.go
  • pkg/crc/validation/validation.go
  • pkg/crc/api/client/types.go
  • pkg/crc/machine/status_test.go
  • pkg/drivers/libhvee/libhvee_windows.go
  • test/e2e/testsuite/testsuite.go
  • pkg/crc/api/handlers.go
  • pkg/crc/machine/types/types.go
🧰 Additional context used
🧬 Code graph analysis (2)
vendor/github.com/containers/libhvee/pkg/wmiext/conversion.go (1)
vendor/github.com/go-ole/go-ole/variant.go (1)
  • NewVariant (6-8)
vendor/github.com/containers/libhvee/pkg/hypervctl/vm.go (2)
vendor/github.com/containers/libhvee/pkg/hypervctl/drive_settings_builder.go (1)
  • NewDriveSettingsBuilder (41-43)
vendor/github.com/containers/libhvee/pkg/hypervctl/vhd_storage_settings.go (1)
  • VirtualHardDiskStorageSettings (8-13)
🪛 ast-grep (0.38.6)
vendor/go.podman.io/image/v5/docker/docker_client.go

[warning] 229-236: MinVersionis missing from this TLS configuration. By default, TLS 1.2 is currently used as the minimum when acting as a client, and TLS 1.0 when acting as a server. General purpose web applications should default to TLS 1.3 with all other protocols disabled. Only where it is known that a web server must support legacy clients with unsupported an insecure browsers (such as Internet Explorer 10), it may be necessary to enable TLS 1.0 to provide support. AddMinVersion: tls.VersionTLS13' to the TLS configuration to bump the minimum version to TLS 1.3.
Context: tls.Config{
// As of 2025-08, tlsconfig.ClientDefault() differs from Go 1.23 defaults only in CipherSuites;
// so, limit us to only using that value. If go-connections/tlsconfig changes its policy, we
// will want to consider that and make a decision whether to follow suit.
// There is some chance that eventually the Go default will be to require TLS 1.3, and that point
// we might want to drop the dependency on go-connections entirely.
CipherSuites: tlsconfig.ClientDefault().CipherSuites,
}
Note: [CWE-327]: Use of a Broken or Risky Cryptographic Algorithm [OWASP A03:2017]: Sensitive Data Exposure [OWASP A02:2021]: Cryptographic Failures [REFERENCES]
https://owasp.org/Top10/A02_2021-Cryptographic_Failures

(missing-ssl-minversion-go)

🪛 markdownlint-cli2 (0.17.2)
vendor/github.com/mattn/go-sqlite3/README.md

354-354: Emphasis style
Expected: underscore; Actual: asterisk

(MD049, emphasis-style)


354-354: Emphasis style
Expected: underscore; Actual: asterisk

(MD049, emphasis-style)

🔇 Additional comments (99)
vendor/github.com/docker/go-connections/tlsconfig/config.go (5)

62-75: Centralizing config via defaultConfig() looks good.

Consolidation reduces drift between client and server and enforces TLS1.2+ with modern suites.


81-100: Cert pool logic LGTM.

Exclusive vs system pool handling and strict PEM append erroring are appropriate.


195-218: Client config changes LGTM.

Uses shared defaults, optional custom roots, and honors MinVersion override with validation.


222-245: Server config changes LGTM.

Reasonable error messages for encrypted keys and conditional client-CA wiring based on ClientAuth.


133-146: No TLS passphrase support is exercised by any caller
A full‐repo grep shows no use of tlsconfig.Options, getCert/getPrivateKey, or passphrase-protected PEMs for TLS—only in signature, SSH, and GPG subsystems. Change is safe.

vendor/go.podman.io/image/v5/docker/cache.go (1)

4-6: Imports switched to go.podman.io/image/v5/{docker/reference,types}—LGTM.

vendor/github.com/containers/libhvee/pkg/hypervctl/vhd.go (1)

10-10: strongunits import migrated to go.podman.io/common—looks good.

vendor/go.podman.io/image/v5/internal/unparsedimage/wrapper.go (1)

6-8: Internal imports moved to go.podman.io/image/v5/{internal/private,internal/signature,types}—OK.

vendor/go.podman.io/image/v5/docker/policyconfiguration/naming.go (1)

8-8: docker/reference import path migrated to go.podman.io—LGTM.

vendor/go.podman.io/image/v5/docker/registries_d.go (1)

15-19: LGTM on import path migration.

Imports correctly point to go.podman.io equivalents.

vendor/go.podman.io/image/v5/internal/pkg/platform/platform_matcher.go (1)

29-30: LGTM on types import switch.

Consistent with the monorepo migration.

vendor/github.com/proglottis/gpgme/gpgme.go (1)

880-884: Good addition: Key.Fingerprint accessor with KeepAlive.

Matches existing SubKey.Fingerprint pattern and respects cgo liveness.

vendor/go.podman.io/image/v5/internal/putblobdigest/put_blob_digest.go (1)

7-8: LGTM on import path migration.

No functional changes; interfaces unchanged.

vendor/go.podman.io/image/v5/docker/reference/regexp.go (2)

7-7: Import-path migration LGTM

Alias preserved; behavior unchanged.


7-7: No stale containers/ imports detected*
All non-vendor .go files and go.mod contain no direct github.com/containers/* imports; the only github.com/containers/common entry is an expected indirect dependency (via vfkit).

vendor/go.podman.io/image/v5/internal/useragent/useragent.go (1)

3-3: Import-path migration LGTM

Module path updated to go.podman.io; no functional changes.

vendor/go.podman.io/image/v5/internal/private/private.go (1)

10-15: Import-path migration LGTM

All image/v5 imports consistently switched to go.podman.io; types/interfaces unchanged.

vendor/github.com/containers/libhvee/pkg/hypervctl/vm_config.go (1)

104-106: Adding DVDDiskPath is backward-compatible and optional

Zero-value preserves previous behavior; exposes DVD support when set.

vendor/github.com/containers/libhvee/pkg/wmiext/conversion.go (1)

350-358: Refactor of day constant is safe

Renaming to dayTime and using it consistently keeps semantics identical.

vendor/go.podman.io/common/LICENSE (1)

1-202: License addition aligns with vendored go.podman.io/common.

No action needed.

vendor/github.com/containers/libhvee/pkg/wmiext/array.go (1)

151-155: LGTM: readability improvement.

Explicit early return is clear and equivalent.

vendor/go.podman.io/image/v5/pkg/compression/compression.go (1)

12-15: Import path migration looks correct.

Matches the go.podman.io module move; no functional changes.

vendor/github.com/containers/libhvee/pkg/hypervctl/vm.go (1)

222-223: LGTM: ReplaceAll for newline sanitization.

Minor cleanup; equivalent behavior.

go.mod (5)

55-56: Direct migration to go.podman.io modules looks right.

Pseudo-versions pin to recent commits; OK if intentional.

Please confirm these pseudo-versions correspond to the intended commits/releases in your release matrix.


179-179: Aligned storage module path (indirect).

Consistent with the image/common migration.


15-15: Validate Windows flows after libhvee bump
The upgrade to libhvee v0.10.1 adds Hyper-V drive plumbing (e.g., hypervctl.NewDriveSettingsBuilder, hypervctl.GetDiskSize, hypervctl.ResizeDisk) in pkg/drivers/libhvee/libhvee_windows.go; confirm VM create/start/stop/remove workflows on Windows still pass with DVD drive configurations.


81-81: No action needed: old common module is only an indirect dependency
All code imports use go.podman.io/common; there are no references to github.com/containers/common or related packages outside of go.mod, so the indirect containers/common v0.62.2 via vfkit poses no current risk of type duplication.


3-3: No CI updates needed
All GitHub Actions workflows pin matrix.go to 1.24 (e.g. in windows-chocolatey.yml) and use actions/setup-go with that value, so CI already matches go 1.24.0.

vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth.go (2)

32-33: Clear deprecation error is good.

Returning a single, well-described sentinel error makes the API behavior explicit when sqlite_userauth is enabled.


49-153: No sqlite_userauth build tags detected outside vendor Verified via rg -nP '(^//\s*go:build.*sqlite_userauth)|sqlite_userauth' -g '!vendor/**' with no matches; userauth paths remain disabled.

vendor/go.podman.io/common/pkg/strongunits/config.go (1)

58-60: Public API casing inconsistency: ToMib vs MiB.

Function is ToMib but type is MiB; elsewhere you use KiB/GiB. If this mirrors upstream, fine; otherwise consider ToMiB for consistency to avoid confusion.

vendor/go.podman.io/image/v5/copy/encryption.go (2)

11-12: Import path migration LGTM.

Switch to go.podman.io/image/v5/types matches the PR goal; no functional changes here.


3-12: No lingering github.com/containers imports in Go files
Only indirect references remain in go.mod/go.sum (e.g. github.com/containers/common), but no Go source files outside vendor import containers/{image,common,storage}.

vendor/go.podman.io/image/v5/directory/explicitfilepath/path.go (2)

8-8: Import path migrated to go.podman.io/storage/pkg/fileutils — OK

Lexists API unchanged; behavior preserved.


8-8: No leftover github.com/containers imports
rg -nP -g '!vendor/**' -g '**/*.go' 'github\.com/containers/(image|common|storage)' returned zero matches outside vendor/; the go.podman.io/... imports listed are the intended replacements.

vendor/go.podman.io/image/v5/manifest/docker_schema2_list.go (1)

4-4: Internal manifest import switched to go.podman.io/image/v5 — OK

Module major version and API aliasing remain consistent.

vendor/go.podman.io/image/v5/internal/imagedestination/wrapper.go (1)

8-11: All internal imports retargeted under go.podman.io/image/v5 — OK

Consistent module root keeps internal visibility rules intact.

vendor/go.podman.io/image/v5/internal/image/sourced.go (1)

9-9: types import updated to go.podman.io/image/v5/types — OK

No functional diffs; callers unaffected.

vendor/go.podman.io/image/v5/copy/manifest.go (1)

12-16: copy/manifest imports migrated to go.podman.io — OK

Aliases preserved; constants and helpers resolve under new module.

vendor/go.podman.io/image/v5/pkg/blobinfocache/default.go (1)

9-12: Import migration verified—no old containers imports remain
All github.com/containers/... imports have been removed and go.podman.io/... imports are present repository-wide.

vendor/go.podman.io/image/v5/internal/manifest/docker_schema2_list.go (2)

10-12: Import migration to go.podman.io: LGTM

Aliases retained appropriately; usages resolve as before.


155-165: Guard against empty WantedPlatforms() slice (potential panic)

ChooseInstance indexes wantedPlatforms[0] without checking length. Upstream likely guarantees non-empty, but please confirm invariant holds in your call paths.

vendor/go.podman.io/image/v5/internal/imagedestination/impl/properties.go (1)

3-3: Import migration to go.podman.io: LGTM

No behavioral change; types resolve identically.

vendor/go.podman.io/image/v5/pkg/blobinfocache/internal/prioritize/prioritize.go (1)

12-15: Import migration to go.podman.io: LGTM

Internal references map cleanly to the new module paths.

vendor/go.podman.io/image/v5/internal/imagesource/stubs/get_blob_at.go (1)

8-9: Import migration to go.podman.io: LGTM

Stubs remain functionally identical.

vendor/go.podman.io/image/v5/internal/imagesource/impl/compat.go (2)

7-8: LGTM: import path migration to go.podman.io/image/v5

Imports updated cleanly; behavior unchanged.


7-8: No direct imports of github.com/containers/ found outside vendor; module graph edge to containers/common is expected until the vfkit PR lands.*

vendor/go.podman.io/image/v5/internal/imagedestination/impl/compat.go (1)

8-12: LGTM: imports pointed to go.podman.io/image/v5 equivalents

Types and internals align; no semantic changes.

vendor/go.podman.io/image/v5/docker/docker_image.go (1)

14-18: LGTM: docker package imports switched to go.podman.io/image/v5

Straight import relocation; APIs unchanged.

vendor/go.podman.io/image/v5/internal/image/docker_list.go (1)

7-9: LGTM: internal manifest/types imports migrated

Consistent with v5; no behavior change.

vendor/go.podman.io/image/v5/copy/progress_channel.go (1)

7-7: LGTM: types import migrated to go.podman.io/image/v5

No functional changes.

vendor/go.podman.io/image/v5/internal/image/docker_schema1.go (1)

9-11: LGTM: import migration verified No legacy github.com/containers/... imports remain outside vendor directories.

vendor/go.podman.io/image/v5/internal/imagesource/impl/signatures.go (1)

7-7: LGTM: internal package path updated

Internal signature import aligns with new module path.

vendor/go.podman.io/image/v5/internal/image/memory.go (1)

7-7: LGTM: types import migrated

No behavioral change; matches go.podman.io/image/v5/types.

vendor/go.podman.io/image/v5/docker/docker_transport.go (1)

9-12: LGTM: docker_ imports migrated and Go version requirement satisfied*
Imports correctly updated to go.podman.io equivalents, and go.mod specifies Go 1.24.0 (>= 1.20), enabling strings.CutPrefix/CutSuffix support.

vendor/go.podman.io/image/v5/internal/image/manifest.go (1)

8-10: Merge as-is: imports properly migrated; residual containers/common modules in vendor expected via indirect vfkit dependency.

vendor/go.podman.io/image/v5/manifest/common.go (2)

7-8: Import remap LGTM

Imports correctly switched to go.podman.io/image/v5; symbol usage (compressiontypes.Algorithm, types.BlobInfo/OptionalBool) remains consistent.


7-8: No direct github.com/containers imports remain; github.com/containers/common is indirect in go.mod.

vendor/go.podman.io/image/v5/internal/manifest/oci_index.go (1)

15-18: Import path switch looks correct

Aliases preserved (platform, compression, types); no behavioral changes in the file stem from this remap.

vendor/go.podman.io/image/v5/directory/directory_transport.go (1)

11-15: Directory transport imports updated cleanly

All c/image imports replaced with go.podman.io/image/v5 equivalents; transport registration and reference methods unaffected.

vendor/go.podman.io/image/v5/pkg/blobinfocache/none/none.go (1)

6-8: BlobInfoCache imports remapped; behavior unchanged

Switch to go.podman.io/image/v5 internal/types is consistent; no logic touched.

vendor/go.podman.io/image/v5/pkg/compression/types/types.go (1)

4-4: Internal compression types import updated

Remap to go.podman.io/image/v5/pkg/compression/internal stays within module boundary; constants/type aliases unchanged.

vendor/go.podman.io/image/v5/directory/directory_src.go (1)

10-16: LGTM: directory transport imports moved to go.podman.io/image/v5

Consistent monorepo migration; no logic alterations.

vendor/go.podman.io/image/v5/internal/imagesource/wrapper.go (1)

7-10: LGTM: internal/imagesource imports migrated

Pure path updates; wrapper behavior unchanged.

vendor/go.podman.io/image/v5/directory/directory_dest.go (1)

14-21: LGTM: imports updated (incl. storage fileutils path)

Matches go.podman.io modules; usage of fileutils.Exists remains valid.

vendor/go.podman.io/image/v5/pkg/blobinfocache/memory/memory.go (1)

10-13: LGTM: blobinfocache imports point to go.podman.io/image/v5

No functional change.

vendor/go.podman.io/image/v5/manifest/oci_index.go (1)

5-5: Import path migration looks correct (containers/image → go.podman.io/image).

No behavioral change; alias remains consistent with upstream.

vendor/go.podman.io/image/v5/internal/imagedestination/impl/helpers.go (1)

4-6: Updated internal imports to go.podman.io paths are consistent.

Build surface unchanged; private and manifest packages resolve within the vendored module.

vendor/go.podman.io/image/v5/manifest/list.go (1)

5-5: Mechanical import switch only; safe.

Matches the monorepo layout under go.podman.io/image/v5/internal/manifest.

vendor/go.podman.io/image/v5/internal/blobinfocache/blobinfocache.go (1)

5-5: types import migrated to go.podman.io/image/v5/types; OK.

No API/behavioral changes in this file.

vendor/go.podman.io/image/v5/manifest/docker_schema2.go (2)

9-12: All containers/ imports replaced with go.podman.io equivalents; aliases intact.*

No functional change; consistent with the rest of the vendor updates.


9-12: No mixed namespaces detected. Verified zero imports of github.com/containers/{image,common,storage} outside vendor/, and go.mod directly requires only go.podman.io/common, go.podman.io/image/v5, and go.podman.io/storage (legacy github.com/containers/common appears only as an indirect dependency).

vendor/go.podman.io/image/v5/copy/sign.go (1)

7-13: Imports migration verified: no stray github.com/containers/(image|common|storage) imports outside vendor; all code now references go.podman.io/* and go.mod reflects the expected module paths.

vendor/go.podman.io/image/v5/pkg/blobinfocache/sqlite/sqlite.go (1)

15-17: Import relocation to go.podman.io/image/v5 is consistent

Matches the monorepo switch; no logic changes.

vendor/go.podman.io/image/v5/internal/manifest/manifest.go (1)

10-10: Compression types import updated to go.podman.io — OK

Alias retained; downstream references remain valid.

vendor/go.podman.io/image/v5/internal/image/oci.go (1)

13-18: Switched internal/image imports to go.podman.io — OK

ocicrypt import correctly remains under github.com/containers.

vendor/go.podman.io/image/v5/manifest/oci.go (1)

13-15: go.podman.io imports for internal/manifest, compression/types, and types — OK

No behavioral changes; consistent with module migration.

vendor/go.podman.io/image/v5/internal/imagesource/impl/layer_infos.go (1)

7-7: Import path migration looks correct.

types now points to go.podman.io/image/v5/types; API usage unchanged.

vendor/go.podman.io/image/v5/internal/imagedestination/stubs/signatures.go (1)

8-8: Signature package import updated as expected.

References to signature.Signature remain consistent.

vendor/go.podman.io/image/v5/internal/image/unparsed.go (1)

8-14: All image-related imports migrated to go.podman.io.

Aliases maintained; no behavioral changes implied.

vendor/go.podman.io/image/v5/internal/manifest/list.go (1)

8-9: Compression/types and types imports correctly switched.

Alias “compression” preserved; downstream field types remain compatible.

vendor/go.podman.io/image/v5/docker/docker_image_src.go (1)

22-33: Migration verified: no github.com/containers/* imports remain; go.mod specifies Go 1.24.0 (>=1.22).

vendor/go.podman.io/image/v5/internal/blobinfocache/types.go (1)

3-7: Imports migrated to go.podman.io/image/v5 — LGTM.

Path switches to go.podman.io/image/v5 for compression/types and types look consistent and non-functional.

vendor/go.podman.io/image/v5/manifest/manifest.go (1)

9-11: Consistent import switch to go.podman.io/image/v5.

Matches the PR’s intent; no behavioral change.

vendor/go.podman.io/image/v5/copy/multiple.go (1)

16-22: Import migration LGTM—go.mod targets Go 1.24.0 (supports stdlib maps & slices), no iter imports or stray github.com/containers/ outside vendor detected.*

vendor/go.podman.io/image/v5/copy/progress_bars.go (1)

12-13: LGTM on go.podman.io/image/v5 import updates.

No functional changes.

vendor/go.podman.io/image/v5/copy/single.go (1)

20-31: Broad import-path migration LGTM; storage chunked/toc import is valid, no residual “github.com/containers/*” imports outside vendor, and Go 1.24.0 meets the vendored image/v5 go.mod requirement.

vendor/go.podman.io/image/v5/copy/compression.go (1)

11-16: Import path migration looks correct.

The switch to go.podman.io modules for image/storage-related imports is consistent and preserves behavior.

vendor/go.podman.io/image/v5/docker/docker_image_dest.go (1)

24-39: Namespace migration LGTM.

All containers/image imports are correctly migrated to go.podman.io/image/v5; no functional changes observed.

vendor/go.podman.io/image/v5/copy/copy.go (1)

15-29: No remaining github.com/containers imports outside vendor; go.mod only has an indirect containers/common dependency.

vendor/github.com/mattn/go-sqlite3/sqlite3ext.h (1)

375-376: SQLite extension API bump acknowledged.

The new setlk_timeout entry and macro align with 3.50.0+; additive and safe for the bundled amalgamation.

Also applies to: 709-711

vendor/go.podman.io/image/v5/docker/docker_client.go (1)

26-38: Import migration LGTM.

All containers/* imports now reference go.podman.io; storage utils map correctly to go.podman.io/storage.

vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h (7)

150-153: SQLite upgrade to 3.50.3 — check ABI/runtime and build pairing

The header now advertises 3.50.3 (SQLITE_VERSION/NUMBER/SOURCE_ID). Please ensure:

  • The corresponding sqlite3-binding.c (amalgamation) in vendor matches 3.50.3 to avoid header/impl skew.
  • No downstream code assumes older structs/opcodes (e.g., FTS5/rtree/session API sizes).
  • If any host platform ever toggles USE_LIBSQLITE3 (system SQLite), verify the runtime lib is ≥ 3.50.3 or that we don’t rely on new symbols at runtime. Mixing newer headers with older shared libs will break when dynamically linked.

Would you like me to scan the tree for USE_LIBSQLITE3 and places where we might link against system SQLite in CI/build scripts?


3026-3057: New setlk-timeout API and FCNTL addendums — confirm we don’t (yet) depend on them

Additions:

  • sqlite3_setlk_timeout(sqlite3*, int ms, int flags) + SQLITE_SETLK_BLOCK_ON_CONNECT
  • New file-control: SQLITE_FCNTL_BLOCK_ON_CONNECT (44)

Notes:

  • sqlite3_setlk_timeout is only meaningful with SQLITE_ENABLE_SETLK_TIMEOUT builds. Ensure we never call it unless our amalgamation is built with that option; otherwise link-time will fail if we ever switch to system SQLite.
  • If any downstream CGO or Go code begins using these symbols, guard usage behind build tags or feature probes (sqlite3_compileoption_used / version checks) to remain compatible with older libsqlite3 on host machines when USE_LIBSQLITE3 is enabled.

I can add a tiny runtime probe wrapper to check for these features and gate calls accordingly if you plan to use them.

Also applies to: 3060-3063, 1167-1172, 1269-1269


1999-2009: Documentation-only edits (lookaside/DBCONFIG) — no runtime impact

These are comment/doc updates for SQLITE_CONFIG_LOOKASIDE and SQLITE_DBCONFIG_LOOKASIDE. No code or ABI impact; safe to vendor.

Also applies to: 2247-2273


137-137: Minor doc link tweak

Upstream doc link adjusted; nothing to do here.


13778-13780: USE_LIBSQLITE3 noop guard — keep header/impl strategy consistent

Reminder: when USE_LIBSQLITE3 is defined, this header becomes a no-op to avoid mismatches with system SQLite headers. Ensure our build never defines USE_LIBSQLITE3 while still compiling the amalgamation sources, and conversely that when linking to system SQLite we don’t compile the amalgamation, to avoid ODR/duplicate symbol issues.

I can check build tags/CGO flags across platforms to confirm we never mix these modes.


9947-9954: New checkpoint mode constants reiterated — match any consumers

If we have local wrappers that pass checkpoint modes into sqlite3_wal_checkpoint_v2, verify enums/values still align (they do), and that no hard-coded integers are elsewhere.

Should I grep for direct integer literals used as checkpoint modes and replace with the enum names?


820-907: No-op calling convention macro section unchanged — cross-platform build sanity

Given we target Linux/macOS/Windows, keeping SQLITE_CDECL/APICALL consistent is important. No change here, but worth re-running builds for all targets after the version bump.

Can we schedule a quick matrix build (linux/amd64, linux/arm64, darwin/arm64, windows/amd64) to validate CGO with the new amalgamation?

@redbeam
Copy link
Contributor

redbeam commented Sep 3, 2025

/ok-to-test

@redbeam
Copy link
Contributor

redbeam commented Sep 8, 2025

Hi @jankaluza, thanks for this PR. In the meantime, some conflicts appeared, can you rebase your branch?

These go packages were migrated to a monorepo, as stated in the
https://blog.podman.io/2025/08/migration-to-the-container-libs-monorepo-is-complete/.

This commit updates the crc package to use these packages from new locations.

It was generated using following commands:

```
$ find . -type f -name '*.go' -exec sed -i -e 's,"github.com/containers/image,"go.podman.io/image,g' {} \;
$ find . -type f -name '*.go' -exec sed -i -e 's,"github.com/containers/common,"go.podman.io/common,g' {} \;
$ find . -type f -name '*.go' -exec sed -i -e 's,"github.com/containers/storage,"go.podman.io/storage,g' {} \;
$ goimports -v -w .
$ git checkout vendor/
$ git checkout tools/vendor
$ vi go.mod # to change the storage, image and common imports
$ go mod tidy
$ go mod vendor
```

Signed-off-by: Jan Kaluza <jkaluza@redhat.com>
@jankaluza
Copy link
Author

@redbeam , rebased.

@redbeam
Copy link
Contributor

redbeam commented Oct 2, 2025

/retest

@openshift-ci
Copy link

openshift-ci bot commented Oct 2, 2025

@jankaluza: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/integration-crc ccf1619 link true /test integration-crc
ci/prow/security ccf1619 link false /test security
ci/prow/e2e-microshift-crc ccf1619 link true /test e2e-microshift-crc
ci/prow/e2e-crc ccf1619 link true /test e2e-crc
ci/prow/images ccf1619 link true /test images

Full PR test history. Your PR dashboard.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@redbeam
Copy link
Contributor

redbeam commented Oct 8, 2025

@jankaluza Closing this in favor of #4954 (reason is in that PR).

@redbeam redbeam closed this Oct 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants