abderrahim commented on code in PR #87:
URL:
https://github.com/apache/buildstream-plugins/pull/87#discussion_r2068670615
##########
src/buildstream_plugins/sources/docker.py:
##########
@@ -57,13 +57,44 @@
#
# **Since**: 2.0.1
+ # Specify the version to be reported as the *guess_version* when reporting
+ # SourceInfo
+ #
+ # Since: 2.5
+ #
+ version: 1.2
+
Note that Docker images may contain device nodes. BuildStream elements cannot
contain device nodes so those will be dropped. Any regular files in the /dev
directory will also be dropped.
See `built-in functionality doumentation
<https://docs.buildstream.build/master/buildstream.source.html#core-source-builtins>`_
for
details on common configuration options for sources.
+
+
+Reporting `SourceInfo
<https://docs.buildstream.build/master/buildstream.source.html#buildstream.source.SourceInfo>`_
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+The docker source reports the URL of the docker registry as the *url*.
+
+Further, the docker source reports the ``SourceInfoMedium.OCI_IMAGE`` *medium*
and
+the ``SourceVersionType.DIGEST`` *version_type*, for which it reports the
content
+digest of the docker image as the *version*.
+
+Additionally, the docker source reports the docker image name through
+the ``image-name`` key of the *extra_data*.
+
+As such, after removing the scheme from the URL (i.e. remove ``https://``) the
same docker
Review Comment:
I think it makes more sense to have `docker://` as a scheme rather than
`https://`. Docker itself would accept neither, but podman would accept
`docker://` and it would make sense to ask people to remove `docker://` from a
url before passing it to docker.
##########
src/buildstream_plugins/sources/git.py:
##########
@@ -158,9 +166,33 @@
- `ref-not-in-track
<https://docs.buildstream.build/master/buildstream.types.html#buildstream.types.CoreWarnings.REF_NOT_IN_TRACK>`_
-
The provided ref was not found in the provided track in the element's git
repository.
-"""
+Reporting `SourceInfo
<https://docs.buildstream.build/master/buildstream.source.html#buildstream.source.SourceInfo>`_
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+The git source reports the URL of the git repository as the *url*.
+
+Further, the git source reports the ``SourceInfoMedium.GIT`` *medium* and
+the ``SourceVersionType.COMMIT`` *version_type*, for which it reports the git
+commit sha as the *version*.
+
+Since the git source does not have a way to know what the release version
+corresponds to the commit sha, the git source exposes the ``version``
configuration
+attribute to allow explicit specification of the *guess_version*, for the
toplevel
Review Comment:
I think it makes sense to support guessing version from the tag name in the
case of a `git-describe` format ref. But since this plugin is mostly unused,
I'm not really opposed to skipping that.
##########
src/buildstream_plugins/sources/docker.py:
##########
@@ -57,13 +57,44 @@
#
# **Since**: 2.0.1
+ # Specify the version to be reported as the *guess_version* when reporting
+ # SourceInfo
+ #
+ # Since: 2.5
+ #
+ version: 1.2
+
Note that Docker images may contain device nodes. BuildStream elements cannot
contain device nodes so those will be dropped. Any regular files in the /dev
directory will also be dropped.
See `built-in functionality doumentation
<https://docs.buildstream.build/master/buildstream.source.html#core-source-builtins>`_
for
details on common configuration options for sources.
+
+
+Reporting `SourceInfo
<https://docs.buildstream.build/master/buildstream.source.html#buildstream.source.SourceInfo>`_
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+The docker source reports the URL of the docker registry as the *url*.
+
+Further, the docker source reports the ``SourceInfoMedium.OCI_IMAGE`` *medium*
and
+the ``SourceVersionType.DIGEST`` *version_type*, for which it reports the
content
Review Comment:
I'm not comfortable overloading the meaning of `SourceVersionType.DIGEST`
like this. BuildStream core uses it for a CAS digest, and the docker digest is
pretty different. I almost feel that `SHA256` would be more appropriate, though
having the `sha256:` prefix makes it different from how the core uses `SHA256`.
##########
src/buildstream_plugins/sources/bzr.py:
##########
@@ -53,17 +53,37 @@
# revision number to the one on the tip of the branch specified in 'track'.
ref: 6622
+ # Specify the version to be reported as the *guess_version* when reporting
+ # SourceInfo
+ #
+ # Since 2.5
+ #
+ version: 1.2
+
See `built-in functionality doumentation
<https://docs.buildstream.build/master/buildstream.source.html#core-source-builtins>`_
for
details on common configuration options for sources.
+
+
+Reporting `SourceInfo
<https://docs.buildstream.build/master/buildstream.source.html#buildstream.source.SourceInfo>`_
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+The bzr source reports the URL of the bzr repository as the *url*.
+
+Further, the bzr source reports the ``SourceInfoMedium.BZR`` *medium* and
+the ``SourceVersionType.COMMIT`` *version_type*, for which it reports the bzr
revision
+number as the *version*.
+
+Since the bzr source does not have a way to know what the release version
+corresponds to the revision number, the bzr source exposes the ``version``
configuration
+attribute to allow explicit specification of the *guess_version*.
"""
import os
import shutil
import fcntl
from contextlib import contextmanager
-from buildstream import Source, SourceError
+from buildstream import Source, SourceError, SourceInfoMedium,
SourceVersionType
Review Comment:
I'm a bit worried that this causes the plugin to not be loadable in
buildstream < 2.5. Would it make sense to delay the imports until
`collect_source_info()` is called?
If you think it's better to hard-depend on buildstream 2.5, then we should
update the minimum version (at least in `project.conf`, I don't see an explicit
dependency on buildstream on the python side)
##########
src/buildstream_plugins/sources/git.py:
##########
@@ -986,6 +1027,25 @@ def validate_cache(self):
warning_token=CoreWarnings.REF_NOT_IN_TRACK,
)
+ def collect_source_info(self):
+ #
+ # Currently we cannot implement version guessing, because we do not
save any tag
+ # information in the ref at tracking time.
+ #
+ # Also we do *not* support reporting on submodules, anyway as the
toplevel
+ # git repo determines the git commits of submodules, we consider the
toplevel
+ # git repo to be a comprehensive version of the overall input.
+ #
+ return [
+ self.create_source_info(
+ self.mirror.url,
+ SourceInfoMedium.GIT,
+ SourceVersionType.COMMIT,
+ self.mirror.ref,
Review Comment:
The documentation says a commit sha, but here you're returning the ref
as-is. It could be a git describe formatted ref. Should we do something about
it? (maybe just update the docs to point this out)
##########
src/buildstream_plugins/sources/docker.py:
##########
@@ -57,13 +57,44 @@
#
# **Since**: 2.0.1
+ # Specify the version to be reported as the *guess_version* when reporting
+ # SourceInfo
+ #
+ # Since: 2.5
+ #
+ version: 1.2
+
Note that Docker images may contain device nodes. BuildStream elements cannot
contain device nodes so those will be dropped. Any regular files in the /dev
directory will also be dropped.
See `built-in functionality doumentation
<https://docs.buildstream.build/master/buildstream.source.html#core-source-builtins>`_
for
details on common configuration options for sources.
+
+
+Reporting `SourceInfo
<https://docs.buildstream.build/master/buildstream.source.html#buildstream.source.SourceInfo>`_
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+The docker source reports the URL of the docker registry as the *url*.
+
+Further, the docker source reports the ``SourceInfoMedium.OCI_IMAGE`` *medium*
and
+the ``SourceVersionType.DIGEST`` *version_type*, for which it reports the
content
+digest of the docker image as the *version*.
+
+Additionally, the docker source reports the docker image name through
+the ``image-name`` key of the *extra_data*.
+
+As such, after removing the scheme from the URL (i.e. remove ``https://``) the
same docker
+image can be obtained by calling:
+
+.. code:: bash
+
+ docker pull <url-without-scheme>/<image-name>@<version>
Review Comment:
Is there a reason to report the url and the image separately? Wouldn't it
make more sense to report everything as the url and avoid extra-data?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]