Skip to content

reference/docker: synchronize fork with upstream distribution/distribution#7635

Merged
dmcgowan merged 9 commits intocontainerd:mainfrom
thaJeztah:update_reference
Nov 29, 2022
Merged

reference/docker: synchronize fork with upstream distribution/distribution#7635
dmcgowan merged 9 commits intocontainerd:mainfrom
thaJeztah:update_reference

Conversation

@thaJeztah
Copy link
Copy Markdown
Member

reference/docker: align files with original code

This package was forked from the https://github.com/distribution/distribution
repository in commit 901bcb2 (#3728), but that commit
did a plain copy of the code (minus tests), and rewrote the code to be in a
single file. The same commit also removed some deprecated code for handling
"shortid" references (ParseAnyReferenceWithSet() function), in order to avoid
the "digestset" dependency from the distribution repo.

At the time, containerd used the distribution/distribution package from this
commit: distribution/distribution@0d3efad

Since the code was forked, both containerd and distribution have received
improvements and fixes, so unfortunately, the code started to diverge.

I'm planning to reconcile the packages (potentially by using a shared module),
and this is the first commit to assist with that.

This patch restructures the reference/docker package to split the code into the
same files as are used in the upstream distribution/distribution repository.
This makes it easier to compare the implementations in both repositories (to
allow synchronizing changes).

No changes are applied yet, other than splitting the code (follow-up commits
will take care of syncing changes across).

reference/docker: add unit-tests from upstream distribution/distribution

This copies the unit-tests from the distribution repository from the time when
the package was forked. The tests are copied from this commit:
distribution/distribution@0d3efad

Tests for ParseAnyReferenceWithSet() have been removed, as that function has not
been included in the containerd fork.

Forward port (partial) patches:

Bringing this fork back in sync with https://github.com/distribution/distribution

thaJeztah and others added 9 commits November 6, 2022 23:13
This package was forked from the https://github.com/distribution/distribution
repository in commit 901bcb2, but that commit
did a plain copy of the code (minus tests), and rewrote the code to be in a
single file. The same commit also removed some deprecated code for handling
"shortid" references (ParseAnyReferenceWithSet() function), in order to avoid
the "digestset" dependency from the distribution repo.

At the time, containerd used the distribution/distribution package from this
commit: distribution/distribution@0d3efad

Since the code was forked, both containerd and distribution have received
improvements and fixes, so unfortunately, the code started to diverge.

I'm planning to reconcile the packages (potentially by using a shared module),
and this is the first commit to assist with that.

This patch restructures the reference/docker package to split the code into the
same files as are used in the upstream distribution/distribution repository.
This makes it easier to compare the implementations in both repositories (to
allow synchronizing changes).

No changes are applied yet, other than splitting the code (follow-up commits
will take care of syncing changes across).

Signed-off-by: Sebastiaan van Stijn <[email protected]>
This copies the unit-tests from the distribution repository from the time when
the package was forked. The tests are copied from this commit:
distribution/distribution@0d3efad

Tests for ParseAnyReferenceWithSet() have been removed, as that function has not
been included in the containerd fork.

Signed-off-by: Sebastiaan van Stijn <[email protected]>
Signed-off-by: Aviral Takkar <[email protected]>
Signed-off-by: Sebastiaan van Stijn <[email protected]>
Go 1.13 and up enforce import paths to be versioned if a project
contains a go.mod and has released v2 or up.

The current v2.x branches (and releases) do not yet have a go.mod,
and therefore are still allowed to be imported with a non-versioned
import path (go modules add a `+incompatible` annotation in that case).

However, now that this project has a `go.mod` file, incompatible
import paths will not be accepted by go modules, and attempting
to use code from this repository will fail.

This patch uses `v3` for the import-paths (not `v2`), because changing
import paths itself is a breaking change, which means that  the
next release should increment the "major" version to comply with
SemVer (as go modules dictate).

Signed-off-by: Sebastiaan van Stijn <[email protected]>
Add context to comment to explain the repo name regex in addition to describing it.

Signed-off-by: David Warshaw <[email protected]>
Signed-off-by: Sebastiaan van Stijn <[email protected]>
Previous implementation was doing a lot of string -> regexp -> string
conversions

Signed-off-by: Paul Cacheux <[email protected]>
Signed-off-by: Sebastiaan van Stijn <[email protected]>
Signed-off-by: Paul Cacheux <[email protected]>
Signed-off-by: Sebastiaan van Stijn <[email protected]>
Current registry reference use a subset of dns and IPv4 addresses to
represent a registry domain.

Since registries are mostly compatible with rfc3986, that defines the
URI generic syntax, this adds support for IPv6 enclosed in squared
brackets based on the mentioned rfc.

The regexp is only expanded to match on IPv6 addreses enclosed between
square brackets, considering only regular IPv6 addresses represented
as compressed or uncompressed, excluding special IPv6 address
representations.

Signed-off-by: Antonio Ojea <[email protected]>
Signed-off-by: Sebastiaan van Stijn <[email protected]>
@thaJeztah
Copy link
Copy Markdown
Member Author

@dmcgowan
Copy link
Copy Markdown
Member

Approving with the expectations this package will find a new home outside our main repo 😄

@dmcgowan dmcgowan merged commit 6a0d413 into containerd:main Nov 29, 2022
@thaJeztah
Copy link
Copy Markdown
Member Author

Yup! Working on that

@thaJeztah thaJeztah deleted the update_reference branch November 29, 2022 19:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants