Adding the following extra information to this ITP.

Why a separate -v6 source package
==================================

Upstream sigs.k8s.io/structured-merge-diff changed its module path as part
of a Go semantic-import-versioning bump:

    old: sigs.k8s.io/structured-merge-diff
    new: sigs.k8s.io/structured-merge-diff/v6

Reverse dependencies still import the old /v4 paths (e.g. .../v4/value,
.../v4/schema, .../v4/fieldpath), so they fail to build against the new
upstream. A v4 -> v6 compatibility symlink was tried but is insufficient:
a symlink only bridges the import path, not the genuine API differences
between v4 and v6 that some revdeps hit.

Rather than bumping the existing golang-k8s-sigs-structured-merge-diff (v4)
source package in place, v6 is packaged as a separate source package shipping
the /v6 import path. This lets both major versions coexist in the archive
during the transition.

See the debian-go discussion:
  https://lists.debian.org/debian-go/2026/08/msg00202.html
  https://lists.debian.org/debian-go/2026/09/msg00000.html


On 01/09/2026 20:36, Arthur Diniz wrote:
Package: wnpp
Severity: wishlist
Owner: Arthur Diniz <[email protected]>

* Package name    : golang-k8s-sigs-structured-merge-diff-v6
   Version         : 6.4.2-1
   Upstream Author : The Kubernetes Authors
* URL             : https://github.com/kubernetes-sigs/structured-merge-diff
* License         : Apache-2.0
   Programming Lang: Go
   Description     : Kubernetes server-side apply operation

  This library implements the Kubernetes "apply" operation, the mechanism
  behind server-side apply. It models resources in a control plane as
  having multiple "managers", where each manager typically owns only one
  aspect of a resource. This lets both humans and machines (controllers)
  make the changes they need without clobbering fields owned by other
  managers. The set of fields each manager currently owns is tracked
  explicitly using a fieldset data structure.
  .
  Objects can be modified through two mechanisms. A PUT or PATCH request
  makes the object look exactly like the supplied version, and the managed
  fields are deduced from what changes. An APPLY request instead declares
  the fields a manager wants to own, requesting deletion of any fields it
  previously managed but no longer mentions. When one manager starts
  managing a field owned by another, an APPLY reports a conflict and stops
  unless the "force" option is given, preventing accidental takeover of
  fields owned by other entities. PUT and PATCH always force and are used
  mostly by automated systems.
  .
  The package is organised into several building blocks: a targeted schema
  type (simpler than OpenAPI), a fieldpath package providing an efficient
  Trie-based field-set structure, a value type storing arbitrary objects, a
  typed package that combines values and schemas to validate and compare
  objects, and a merge package that ties everything together to implement
  the apply operation.
  .
  This is version 6 of the module sigs.k8s.io/structured-merge-diff.
  .
  Upstream sigs.k8s.io/structured-merge-diff changed its module path from
  sigs.k8s.io/structured-merge-diff to sigs.k8s.io/structured-merge-diff/v6
  as part of a Go semantic-import-versioning bump.
  .
  Reverse dependencies still import the old /v4 paths, so they fail to build
  against the new upstream, and a v4 -> v6 compatibility symlink is insufficient
  because it only bridges the import path, not the genuine API differences
  between v4 and v6 that some revdeps hit.
  .
  Rather than bumping the existing golang-k8s-sigs-structured-merge-diff (v4)
  source package in place, v6 is therefore packaged as a separate source package
  shipping the /v6 import path, letting both major versions coexist in the
  archive during the transition
  .
  See the debian-go discussion:
    - https://lists.debian.org/debian-go/2026/08/msg00202.html
    - https://lists.debian.org/debian-go/2026/09/msg00000.html

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

Reply via email to