"Juris M." <jxlam...@protonmail.com> writes:

> Hello, ports@!
>
> I'm trying to create a port of hydroxide[1], which is written in Go.
> My knowledge of Go lang project infrastructure is minimal and the ports 
> infrastructure is new to me as well.
>
> So far, I've looked at other ports in Go as examples, mainly terraform, and 
> some key elements are still unclear to me, whether related to the ports 
> infrastructure or Go specifically.
>
> 1) How do I determine the exhaustive list of dependency modules for 
> MODGO_MODULES. Are those listed in the projects go.mod enough?

The list is produced from the output of `go mod graph`. You can see the
code that builds the list here:

  
https://github.com/openbsd/ports/blob/master/infrastructure/lib/OpenBSD/PortGen/Port/Go.pm#L162-L191

As for generating the list, if you set MODGO_MODNAME (this is always the
"module" line from a projects go.mod file) and MODGO_VERSION (the latest
semver tag for a project) you can run "make modgo-gen-modules" to
produce the needed MODGO lines. I always do:

  make modgo-gen-modules > modules.inc

Because the list is usually long.

> 2) What are MODGO_MODFILES, and why do they list multiple versions? Are they 
> the exhaustive versions of the dependencies of the dependencies of the main 
> project?

Mod files are used by Go for dependency resolution. It needs multiple
versions as part of this.

>
> Those are the main two questions I have for now. Any pointers addressing 
> these will be appreciated.
>
> So far, I've been running a locally built hydroxide, and it's been working 
> fantastically.
>
> I would like to contribute this and maintain it, if no one objects, as I've 
> found it useful and hope others will too.
>
> [1]: Hydroxide is a CardDAV, IMAP and SMTP bridge for ProtonMail[2]
> [2]: https://protonmail.com/

Reply via email to