[Bug 2145834] Review Request: singularity-ce - Application and environment virtualization

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



https://bugzilla.redhat.com/show_bug.cgi?id=2145834



--- Comment #5 from dave@xxxxxxxxxxxx <dave@xxxxxxxxxxxx> ---
(In reply to Benson Muite from comment #2)
> Do all the Go libraries need to be bundled?

This is a question I was expecting :-) and I think the answer is technically
'no', but practically 'yes'.

Unfortunately I don't think it's practical for us to unbundle more than a very
small number of the Go libraries here, which I'd argue doesn't really help much
over leaving the dependencies fully bundled, and would create quite a lot more
work.

As an indirect justification for using fully bundled deps... singularity-ce is
a container runtime, similar in scope to e.g. podman or apptainer. (Note that
apptainer is an alternative fork/rename of the original singularity project...
so it's currently quite similar to singularity-ce).

podman uses bundled Go deps, which are declared in the spec
(https://src.fedoraproject.org/rpms/podman/blob/rawhide/f/podman.spec)

apptainer uses bundled Go deps, which haven't declared in the spec
(https://src.fedoraproject.org/rpms/apptainer/blob/rawhide/f/apptainer.spec)

More direct justification...

* Generally, the go dependencies used by container runtimes tend to be an
extremely complex web. We've had multiple occasions where we've had to use
explicit replace directives in our go.mod in order to get a combination of
versions of deps that will build / work correctly.

E.g.
https://github.com/sylabs/singularity/pull/443/files#diff-33ef32bf6c23acb95f5902d7097b7a1d5128ca061167ec0716715b0b9eeaa5f6

* We've also had times where a dep minor version update has caused a nasty
regression, or we've had to go up to the HEAD of a dep's repo in order to fix
something urgently.

E.g. https://github.com/sylabs/singularity/pull/546

The trouble with catching these things, handling them, and preventing future
issues, is that we rely on long-running end-to-end tests which require network
access. Our upstream CI will run these tests always, so we can be reasonably
confident about functionality with the bundled deps. It's not possible to run
these extensive tests during an rpmbuild, and we don't really have the
resources to run all of our tests on each golang library change across Fedora /
EPEL versions.

FWIW - we aggressively apply dependency updates to our main and release
branches upstream, delaying only where unavoidable
(https://github.com/sylabs/singularity/pulls?q=is%3Apr+build%28deps%29+is%3Aclosed+).
This hopefully somewhat offsets the risk of unknown vulnerabilities / bugs
hanging around in bundled deps. I've also tried to follow what I believe is
best practice here (?), declaring the bundled deps (like podman does), rather
than just using them without them being declared (like apptainer).

I'm working through another packaging project for
https://github.com/sylabs/scs-library-client, and there I am packaging missing
deps, so that it can be fully unbundled. That is a much simpler piece of
software, though, and much more straightforward to be confident about with
unbundled deps.


-- 
You are receiving this mail because:
You are on the CC list for the bug.
You are always notified about changes to this product and component
https://bugzilla.redhat.com/show_bug.cgi?id=2145834
_______________________________________________
package-review mailing list -- package-review@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to package-review-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/package-review@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[Index of Archives]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite Conditions]     [KDE Users]

  Powered by Linux