[Bug 2376217] Review Request: openbao - A tool for securely accessing secrets

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

 



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



--- Comment #24 from Maxwell G <maxwell@xxxxxxx> ---
I didn't yet have a chance to read through the entire thread, but here's some
more feedback from the Go SIG :).

Keep in mind that new Golang Packaging Guidelines are on the way that will
mandate (or at least state that they SHOULD be used) use of Go Vendor Tools for
managing vendored sources and also make more clear the guidelines about
compiler flags and licensing and such. These guidelines are not finalized yet,
but given that there are no Guidelines for vendored packages in Go yet (the
current, soon-to-be-replaced Guidelines primarily cover unvendored software
that use the golang-*-devel packages),  I suggest that you still follow the
current Go SIG practices.

Also, I'll add a quick note about EPEL, as I've seen that mentioned a lot.
Something not being available on RHEL or EPEL is not a valid reason to not
follow the guidelines on Fedora or on a newer EPEL version that does support
it. While keeping a specfile compatible with EPEL 9 and EPEL 10 is usually
okay, it is becoming increasingly necessary in various packaging ecosystems to
have EPEL 8 diverge.  This is also the case with the new Go packaging tooling.
RHEL 8 is 6 years old and time constraints and old versions of major software
like RPM make it impossible to backport every set of package tooling.

> I have not found this policy in the Fedora golang packaging guidelines; please point me to it if I missed it. Also please tell me if it has been specifically debated, and if not tell me how I can raise the issue for debate.  The go source code tarball is not that big, only 30M, and the language is so efficient that it can fully rebuild itself using an older version compiler in just a few minutes, so I don't understand why this has to be a MUST requirement.

I think it's pretty self-evident that packages should not include their own
compiler toolchains and use those instead of the ones included in the
distribution. Not every standard practice is explicitly documented, but when
something diverges so drastically from other packages or from the spirit of the
Guidelines, it needs to be carefully considered. Also, in this case,
https://docs.fedoraproject.org/en-US/packaging-guidelines/#bundling applies
pretty clearly.

> Fedora packages SHOULD make every effort to avoid having multiple, separate, upstream projects bundled together in a single package. [...] All packages whose upstreams allow them to be built against system libraries MUST be built against system libraries.

You should consider other solutions before jumping to bundling the entire Go
toolchain. If the version of Go in go.mod is too new, you can try patching it.
https://github.com/openbao/openbao/blob/d7909766b2757ca04a5c622954bd70d4701ee469/go.mod#L3-L12
explicitly says that it can be disregarded. You could also file an issue to ask
upstream to change this practice and leave the go value in go.mod set to the
actual minimum supported version of Go. You can also consider building in
legacy mode with Go modules disabled (`export GO111MODULE=off`) which is what
`%gobuild` currently does by default (this will probably change eventually).
This will make go just use any sources in the vendor directory and disregard
any Go modules metadata.

Other issues:

- You should `BuildRequires: go-rpm-macros` and use `%gobuild`. Please don't
hardcode compiler flags, even if they mostly match Fedora's. If `%gobuild` is
deficient in EPEL 8, you can add conditionally re-define `%gobuild` at the top
of the specfile. Let me know if you'd like help with that, although EPEL 8
support needn't block the Fedora review if you just want to switch to
`%gobuild` now and handle that later.

- This package does not run unit tests. Does upstream provide unit tests that
are possible to run in the mock build environment?

- You should include a sysusers configuration. You can conditionally include a
fallback scriptlet for releases where it isn't available.

- `systemctl daemon-reload` in the `%post` scriptlet shouldn't be necessary. 
This will fail on container systems without systemd and the scripts generated
by `%systemd_*` macros should already handle reloading the systemd service
files.

- The use of this `openbao-rpm` source also seems off to me. Typically, these
files are sourced from upstream or stored directly in distgit and included as
separate Sources in the specfile. It should be technically acceptable as long
as the Licensing Guidelines are followed. That repository is missing a license
file and whatever license the files it provides are covered under would need to
be installed with`%license` and added to the `License:` expression.

- Also keep the Guidelines' stance on specfile legibility and canonicity
(https://docs.fedoraproject.org/en-US/packaging-guidelines/#_spec_legibility
and
https://docs.fedoraproject.org/en-US/packaging-guidelines/#_spec_maintenance_and_canonicity)
in mind if you are also maintaining the package outside of the the Fedora/EPEL
repositories.

- The License tag should include an SPDX expression that encompasses all
sources in the package, which includes vendored sources. Many Go packages have
historically not followed this, mainly because the tooling to calculate a
cumulative license expression for unvendored packages doesn't exist, but you
should be able to this relatively simply using Go Vendor Tools.


-- 
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=2376217

Report this comment as SPAM: https://bugzilla.redhat.com/enter_bug.cgi?product=Bugzilla&format=report-spam&short_desc=Report%20of%20Bug%202376217%23c24

-- 
_______________________________________________
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