GO-MODULE(5) | File Formats Manual | GO-MODULE(5)

# NAME

`go-module` — lang/go port module

# DESCRIPTION

This manual page documents the behavior of setting `MODULES=lang/go` in the ports(7) tree.

Adds Go toolchain support. Requires `ALL_TARGET` to be set to canonical Go import path of port. (Module sets it automatically for ports that use `GH_ACCOUNT` and `GH_PROJECT` macros.)

During execution of `pre-configure` target module moves source code from ${MODGO_SUBDIR} to ${WRKSRC}, subdirectory of ${MODGO_WORKSPACE} - specially-crafted Go workspace located at ${WRKDIR}/go. During `do-build` module calls “go install” with `GOPATH` set to ${MODGO_WORKSPACE}, runs its output through sed to prevent writes outside `WRKDIR` sandbox and sends output to sh(1). During `do-install` it copies executables from ${MODGO_WORKSPACE}/bin to ${PREFIX}/bin, and/or directories ${MODGO_WORKSPACE}/pkg and ${MODGO_WORKSPACE}/src to ${PREFIX}/go, depending on `MODGO_TYPE` contents.

Sets `BUILD_DEPENDS`, `RUN_DEPENDS`, `ALL_TARGET`, `TEST_TARGET`, `ONLY_FOR_ARCHS`, `SEPARATE_BUILD`, and `WRKSRC`.

Appends to `CATEGORIES`.

Defines:

`MODGO_TYPE`
  Type of port. May be any combination of:
  bin
    ordinary binary, which should be installed to ${PREFIX}/bin,
  lib
    library, which should come with source code.

  Defaults to bin.

`MODGO_WORKSPACE`
  Path to Go workspace set up for port build process. Defaults to ${WRKDIR}/go. See Go documentation for details.
`MODGO_SUBDIR`
  Path to Go source code within port's sources tarball. Defaults to ${WRKDIST}.
`MODGO_SETUP_WORKSPACE`
  Commands setting up Go workspace for building ports. By default, happens during execution of `pre-configure` target.
`MODGO_BUILDDEP`
  Controls whether contents of `MODGO_BUILD_DEPENDS` are appended to port's `BUILD_DEPENDS`. Defaults to Yes.
`MODGO_MODNAME`
  Name of Go module as defined in the go.mod file contained in a project. If this is set, `MODGO_MODULES`, `MODGO_MODFILES` and `MODGO_VERSION` need to be defined as well. Setting this will also set `ALL_TARGET`. When `MODGO_MODFILES` is set, and a "cmd" directory is found in `WRKSRC`, "./cmd/..." is also built by `do-build` automatically.
`MODGO_VERSION`
  Sets the specific version of a Go module to use. For example: v0.1.3.
`MODGO_MODULES`
  List of modules and their specific versions that an application depends on.
`MODGO_MODFILES`
  List of go.mod files and their versions that are required for dependency resolution. These are required by Go to determine the full dependency graph.

Additionally defines `MODGO_ARCH` (application architecture name used by Go), `MODGO_PACKAGES`, `MODGO_SOURCES` and `MODGO_TOOLS` (paths for installed Go packages, sources and tools respectively), `MODGO_CMD` and `MODGO_FLAGS` (source code build command and flags passed as its arguments), `MODGO_LDFLAGS`, `MODGO_BUILD_CMD` and `MODGO_TEST_CMD` (commands for building and testing go packages; normally called with canonical Go package names as arguments), `MODGO_{BUILD,INSTALL,TEST}_TARGET` and `MODGO_{BUILD,RUN}_DEPENDS`.

This module adds one make(1) target:

`modgo-gen-modules`
  Generate the `MODGO_MODULES` and the `MODGO_MODFILES` lists. If `MODGO_VERSION` is set to "latest", the latest known-to-Go version of a package will be used to build the list of modules. Similarly, if `MODGO_VERSION` is empty, the latest version will be fetched.

# SEE ALSO

port-modules(5)

February 7, 2025 | Debian