05.12.25 16:47, Adam Weinberger:
Hi everyone,
I just scheduled 3/4 of our Go ports for removal, along with 75 ports. I
want to explain why, and what we should do about it.
TL;DR--75 ports need to try altering USES=go:1.2x -> USES=go, because
likely none of the ports actually need to be deleted!
This is going to cause a scramble up-front here, but it's for our own good.
………
Big thanks for bringing it out. Just reached out to express a few points.
1. I found a tone of notification a little bit… threatening. As I see
some changes should be done, there might be some prior headsup to ports@
at least (actually a lot of people would just ignore that I guess).
2. I got myself a little wondering why I was on the list. I searched for
a list of ports, found none of them are actually mine, and only later
discovered that one of my ports USES=go1.25, which grants me an early
warning with no actual deprecation and removal woes.
3. Reading all of that actually expanded my knowledge about Go
ecosystem, which is great, but I feel we are only fixing aftermath
without further precautions to make sure this wouldn't happen again.
I'm not a Go user, I just support a few ports I'm using so a) it would
be easier to upgrade b) someone else could help me fix stuff. To do
porting I viewed other port examples and Porters Handbook and the latter
definitely misses proper explanation about Go versions, so I just
followed what I felt was right by adding Go version to the port if
default version in go.mod was different.
I think a lot of porters might skip signing up to maillist so this bits
of knowledge would be lost in a week when dust settles. So it would be
nice to add some paragraph to Porter's Handbook at
https://docs.freebsd.org/en/books/porters-handbook/special/#using-go or
even better:
https://docs.freebsd.org/en/books/porters-handbook/uses/index.html#uses-go
Like this:
===
In Go, versions specified in `go.mod` are actually feature sets, not
recommended compiler versions. This means specifying USES=go1.X changes
only the Go compiler version used to compile your port and has nothing
to do with `go.mod` contents. In fact, all supported Go versions should
be able to compile all Go code for all provided feature sets. Please pin
Go version only in case port definitely fails to compile with default
compiler version as a quick-and-dirty fix (if you need to update port
for security or other reasons).
If Go port fails to compile with any Go compiler versions provided in
ports this should be treated as an issue and fixed. You can reach out
for help to [email protected].
===
Sorry for random rants. In any case please consider posting a list of
unfixed ports in a month or so to freebsd-go@ (or even freebsd-ports@?),
me or somebody else might want to take maintainership.
Big thanks!
--
Sphinx of black quartz judge my vow.