Changeset View
Changeset View
Standalone View
Standalone View
Mk/Uses/go.mk
Show First 20 Lines • Show All 122 Lines • ▼ Show 20 Lines | |||||
GO_ENV+= GOPATH="${GO_GOPATH}" \ | GO_ENV+= GOPATH="${GO_GOPATH}" \ | ||||
GOBIN="${GO_WRKDIR_BIN}" \ | GOBIN="${GO_WRKDIR_BIN}" \ | ||||
GO111MODULE=on \ | GO111MODULE=on \ | ||||
GOFLAGS=-modcacherw \ | GOFLAGS=-modcacherw \ | ||||
GOSUMDB=${GO_GOSUMDB} | GOSUMDB=${GO_GOSUMDB} | ||||
. if defined(GO_MODULE) | . if defined(GO_MODULE) | ||||
GO_MODNAME= ${GO_MODULE:C/^([^@]*)(@([^@]*)?)/\1/} | GO_MODNAME= ${GO_MODULE:C/^([^@]*)(@([^@]*)?)/\1/} | ||||
. if empty(DISTFILES:Mgo.mod\:*) && empty(DISTFILES:Mgo.mod) | . if empty(DISTFILES:Mgo.mod\:*) && empty(DISTFILES:Mgo.mod) | ||||
# Unless already setup for download by other means, | |||||
# arrange to pull go.mod and distribution archive from GOPROXY. | |||||
GO_MODVERSION= ${GO_MODULE:C/^([^@]*)(@([^@]*)?)/\2/:M@*:S/^@//:S/^$/${DISTVERSIONFULL}/} | GO_MODVERSION= ${GO_MODULE:C/^([^@]*)(@([^@]*)?)/\2/:M@*:S/^@//:S/^$/${DISTVERSIONFULL}/} | ||||
GO_MODFILE= ${GO_MODVERSION}.mod | GO_MODFILE= ${GO_MODVERSION}.mod | ||||
GO_DISTFILE= ${GO_MODVERSION}.zip | GO_DISTFILE= ${GO_MODVERSION}.zip | ||||
MASTER_SITES+= ${GO_GOPROXY}/${GO_MODNAME:C/([A-Z])/!\1/g:tl}/@v/ | MASTER_SITES+= ${GO_GOPROXY}/${GO_MODNAME:C/([A-Z])/!\1/g:tl}/@v/ | ||||
DISTFILES+= ${GO_MODFILE} ${GO_DISTFILE} | DISTFILES+= ${GO_MODFILE} ${GO_DISTFILE} | ||||
WRKSRC= ${WRKDIR}/${GO_MODNAME}@${GO_MODVERSION} | WRKSRC= ${WRKDIR}/${GO_MODNAME}@${GO_MODVERSION} | ||||
. endif | . endif | ||||
EXTRACT_ONLY+= ${DISTFILES:N*.mod\:*:N*.mod:C/:.*//} | EXTRACT_ONLY+= ${DISTFILES:N*.mod\:*:N*.mod:C/:.*//} | ||||
Show All 18 Lines | |||||
. endif | . endif | ||||
_USES_POST+= go | _USES_POST+= go | ||||
.endif # !defined(_INCLUDE_USES_GO_MK) | .endif # !defined(_INCLUDE_USES_GO_MK) | ||||
.if defined(_POSTMKINCLUDED) && !defined(_INCLUDE_USES_GO_POST_MK) | .if defined(_POSTMKINCLUDED) && !defined(_INCLUDE_USES_GO_POST_MK) | ||||
_INCLUDE_USES_GO_POST_MK= yes | _INCLUDE_USES_GO_POST_MK= yes | ||||
. if !target(post-fetch) && ${go_ARGS:Mmodules} && defined(GO_MODULE) | . if ${go_ARGS:Mmodules} && defined(GO_MODULE) | ||||
post-fetch: | _USES_fetch+= 200:go-pre-fetch 800:go-post-fetch | ||||
# Check that pkg can be installed or is already available, | |||||
# otherwise it will be impossible to install go and fetch dependencies. | |||||
go-pre-fetch: | |||||
. if defined(CLEAN_FETCH_ENV) && !exists(${PKG_BIN}) | |||||
@${ECHO_MSG} "===> CLEAN_FETCH_ENV is defined, cannot download Go modules (pkg and go are required)"; \ | |||||
exit 1 | |||||
. endif | |||||
# Download all required build dependencies to GOMODCACHE. | |||||
go-post-fetch: | |||||
@${ECHO_MSG} "===> Fetching ${GO_MODNAME} dependencies"; | @${ECHO_MSG} "===> Fetching ${GO_MODNAME} dependencies"; | ||||
@(cd ${DISTDIR}/${DIST_SUBDIR}; \ | @(cd ${DISTDIR}/${DIST_SUBDIR}; \ | ||||
[ -e go.mod ] || ${RLN} ${GO_MODFILE} go.mod; \ | [ -e go.mod ] || ${RLN} ${GO_MODFILE} go.mod; \ | ||||
${SETENV} ${GO_ENV} GOPROXY=${GO_GOPROXY} ${GO_CMD} mod download -x all) | ${SETENV} ${GO_ENV} GOPROXY=${GO_GOPROXY} ${GO_CMD} mod download -x all) | ||||
. endif | . endif | ||||
. if !target(post-extract) | _USES_extract+= 800:go-post-extract | ||||
. if empty(go_ARGS) | . if empty(go_ARGS) | ||||
post-extract: | # Legacy (GOPATH) build mode, setup directory structure expected by Go for the main module. | ||||
go-post-extract: | |||||
@${MKDIR} ${GO_WRKSRC:H} | @${MKDIR} ${GO_WRKSRC:H} | ||||
@${LN} -sf ${WRKSRC} ${GO_WRKSRC} | @${LN} -sf ${WRKSRC} ${GO_WRKSRC} | ||||
. elif ${go_ARGS:Mmodules} && defined(GO_MODULE) | . elif ${go_ARGS:Mmodules} && defined(GO_MODULE) | ||||
post-extract: | # Module-aware build mode. Although not strictly necessary (all build dependencies should be | ||||
# already in MODCACHE), vendor them so we can patch them if needed. | |||||
go-post-extract: | |||||
@${ECHO_MSG} "===> Tidying ${GO_MODNAME} dependencies"; | @${ECHO_MSG} "===> Tidying ${GO_MODNAME} dependencies"; | ||||
@(cd ${GO_WRKSRC}; ${SETENV} ${GO_ENV} GOPROXY=${GO_MODCACHE} ${GO_CMD} mod tidy -e) | @(cd ${GO_WRKSRC}; ${SETENV} ${GO_ENV} GOPROXY=${GO_MODCACHE} ${GO_CMD} mod tidy -e) | ||||
@${ECHO_MSG} "===> Vendoring ${GO_MODNAME} dependencies"; | @${ECHO_MSG} "===> Vendoring ${GO_MODNAME} dependencies"; | ||||
@(cd ${GO_WRKSRC}; ${SETENV} ${GO_ENV} GOPROXY=${GO_MODCACHE} ${GO_CMD} mod vendor -e) | @(cd ${GO_WRKSRC}; ${SETENV} ${GO_ENV} GOPROXY=${GO_MODCACHE} ${GO_CMD} mod vendor -e) | ||||
. endif | |||||
. endif | . endif | ||||
. if !target(do-build) && empty(go_ARGS:Mno_targets) | . if !target(do-build) && empty(go_ARGS:Mno_targets) | ||||
do-build: | do-build: | ||||
(cd ${GO_WRKSRC}; \ | (cd ${GO_WRKSRC}; \ | ||||
for t in ${GO_TARGET}; do \ | for t in ${GO_TARGET}; do \ | ||||
out=$$(${BASENAME} $$(${ECHO_CMD} $${t} | \ | out=$$(${BASENAME} $$(${ECHO_CMD} $${t} | \ | ||||
${SED} -Ee 's/^[^:]*:([^:]+).*$$/\1/' -e 's/^\.$$/${PORTNAME}/')); \ | ${SED} -Ee 's/^[^:]*:([^:]+).*$$/\1/' -e 's/^\.$$/${PORTNAME}/')); \ | ||||
▲ Show 20 Lines • Show All 73 Lines • Show Last 20 Lines |