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)