Changeset View
Changeset View
Standalone View
Standalone View
Mk/Uses/go.mk
Show First 20 Lines • Show All 87 Lines • ▼ Show 20 Lines | |||||
CGO_ENABLED?= 1 | CGO_ENABLED?= 1 | ||||
CGO_CFLAGS+= -I${LOCALBASE}/include | CGO_CFLAGS+= -I${LOCALBASE}/include | ||||
CGO_LDFLAGS+= -L${LOCALBASE}/lib | CGO_LDFLAGS+= -L${LOCALBASE}/lib | ||||
.if ${ARCH} == armv6 || ${ARCH} == armv7 | .if ${ARCH} == armv6 || ${ARCH} == armv7 | ||||
GOARM?= ${ARCH:C/armv//} | GOARM?= ${ARCH:C/armv//} | ||||
.endif | .endif | ||||
GO_GOPROXY?= https://proxy.golang.org | |||||
GO_GOSUMDB?= sum.golang.org | |||||
# Read-only variables | # Read-only variables | ||||
GO_CMD= ${LOCALBASE}/bin/go | GO_CMD= ${LOCALBASE}/bin/go | ||||
GO_WRKDIR_BIN= ${WRKDIR}/bin | GO_WRKDIR_BIN= ${WRKDIR}/bin | ||||
GO_ENV+= CGO_ENABLED=${CGO_ENABLED} \ | GO_ENV+= CGO_ENABLED=${CGO_ENABLED} \ | ||||
CGO_CFLAGS="${CGO_CFLAGS}" \ | CGO_CFLAGS="${CGO_CFLAGS}" \ | ||||
CGO_LDFLAGS="${CGO_LDFLAGS}" \ | CGO_LDFLAGS="${CGO_LDFLAGS}" \ | ||||
GOARM=${GOARM} | GOARM=${GOARM} | ||||
.if ${go_ARGS:Mmodules} | .if ${go_ARGS:Mmodules} | ||||
GO_BUILDFLAGS+= -mod=vendor | GO_BUILDFLAGS+= -mod=vendor | ||||
GO_TESTFLAGS+= -mod=vendor | GO_TESTFLAGS+= -mod=vendor | ||||
GO_GOPATH= ${DISTDIR}/go/${PKGORIGIN:S,/,_,g} | |||||
GO_WRKSRC= ${WRKSRC} | GO_WRKSRC= ${WRKSRC} | ||||
GO_ENV+= GOPATH="" \ | GO_ENV+= GOPATH="${GO_GOPATH}" \ | ||||
GOBIN="${GO_WRKDIR_BIN}" \ | GOBIN="${GO_WRKDIR_BIN}" \ | ||||
GO111MODULE=on \ | GO111MODULE=on \ | ||||
GOPROXY=off \ | GOFLAGS=-modcacherw \ | ||||
GO_NO_VENDOR_CHECKS=1 | GOSUMDB=${GO_GOSUMDB} | ||||
. if defined(GO_MODULE) | |||||
GO_MODNAME= ${GO_MODULE:C/^([^@]*)(@([^@]*)?)/\1/} | |||||
GO_MODVERSION= ${GO_MODULE:C/^([^@]*)(@([^@]*)?)/\2/:M@*:S/^@//:S/^$/${DISTVERSIONFULL}/} | |||||
GO_MODFILE= ${GO_MODVERSION}.mod | |||||
GO_DISTFILE= ${GO_MODVERSION}.zip | |||||
DIST_SUBDIR= go/${PKGORIGIN:S,/,_,g}/${DISTNAME} | |||||
MASTER_SITES= ${GO_GOPROXY}/${GO_MODNAME}/@v/ | |||||
DISTFILES= ${GO_MODFILE} ${GO_DISTFILE} | |||||
EXTRACT_ONLY= ${GO_DISTFILE} | |||||
WRKSRC= ${WRKDIR}/${GO_MODNAME}@${GO_MODVERSION} | |||||
USES+= zip | |||||
.else | . else | ||||
GO_ENV+= GO_NO_VENDOR_CHECKS=1 | |||||
. endif | |||||
.else | |||||
GO_GOPATH= ${WRKDIR} | |||||
GO_WRKSRC= ${WRKDIR}/src/${GO_PKGNAME} | GO_WRKSRC= ${WRKDIR}/src/${GO_PKGNAME} | ||||
GO_ENV+= GOPATH="${WRKDIR}" \ | GO_ENV+= GOPATH="${GO_GOPATH}" \ | ||||
GOBIN="" \ | GOBIN="" \ | ||||
GO111MODULE=off | GO111MODULE=off | ||||
.endif | .endif | ||||
GO_PORT?= lang/go | GO_PORT?= lang/go | ||||
BUILD_DEPENDS+= ${GO_CMD}:${GO_PORT} | BUILD_DEPENDS+= ${GO_CMD}:${GO_PORT} | ||||
FETCH_DEPENDS+= ${GO_CMD}:${GO_PORT} | |||||
.if ${go_ARGS:Mrun} | .if ${go_ARGS:Mrun} | ||||
RUN_DEPENDS+= ${GO_CMD}:${GO_PORT} | RUN_DEPENDS+= ${GO_CMD}:${GO_PORT} | ||||
.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-extract) && empty(go_ARGS) | .if !target(post-fetch) && ${go_ARGS:Mmodules} && defined(GO_MODULE) | ||||
post-fetch: | |||||
@${ECHO_MSG} "===> Fetching ${GO_MODNAME} dependencies"; | |||||
@(cd ${DISTDIR}/${DIST_SUBDIR}; \ | |||||
${RLN} ${GO_MODFILE} go.mod; \ | |||||
${SETENV} ${GO_ENV} ${GO_CMD} mod download -x) | |||||
.endif | |||||
.if !target(post-extract) | |||||
. if empty(go_ARGS) | |||||
post-extract: | 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) | |||||
post-extract: | |||||
@(cd ${GO_WRKSRC}; ${SETENV} ${GO_ENV} ${GO_CMD} mod vendor) | |||||
.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}/')); \ | ||||
pkg=$$(${ECHO_CMD} $${t} | \ | pkg=$$(${ECHO_CMD} $${t} | \ | ||||
${SED} -Ee 's/^([^:]*).*$$/\1/' -e 's/^${PORTNAME}$$/./'); \ | ${SED} -Ee 's/^([^:]*).*$$/\1/' -e 's/^${PORTNAME}$$/./'); \ | ||||
${ECHO_MSG} "===> Building $${out} from $${pkg}"; \ | ${ECHO_MSG} "===> Building $${out} from $${pkg}"; \ | ||||
${SETENV} ${MAKE_ENV} ${GO_ENV} ${GO_CMD} build ${GO_BUILDFLAGS} \ | ${SETENV} ${MAKE_ENV} ${GO_ENV} GOPROXY=off ${GO_CMD} build ${GO_BUILDFLAGS} \ | ||||
-o ${GO_WRKDIR_BIN}/$${out} \ | -o ${GO_WRKDIR_BIN}/$${out} \ | ||||
$${pkg}; \ | $${pkg}; \ | ||||
done) | done) | ||||
.endif | .endif | ||||
.if !target(do-install) && empty(go_ARGS:Mno_targets) | .if !target(do-install) && empty(go_ARGS:Mno_targets) | ||||
do-install: | do-install: | ||||
for t in ${GO_TARGET}; do \ | for t in ${GO_TARGET}; do \ | ||||
Show All 13 Lines | |||||
do-test: | do-test: | ||||
(cd ${GO_WRKSRC}; \ | (cd ${GO_WRKSRC}; \ | ||||
for t in ${GO_TESTTARGET}; do \ | for t in ${GO_TESTTARGET}; do \ | ||||
${ECHO_MSG} "===> Testing $${t}"; \ | ${ECHO_MSG} "===> Testing $${t}"; \ | ||||
${SETENV} ${MAKE_ENV} ${GO_ENV} ${GO_CMD} test ${GO_TESTFLAGS} $${t}; \ | ${SETENV} ${MAKE_ENV} ${GO_ENV} ${GO_CMD} test ${GO_TESTFLAGS} $${t}; \ | ||||
done) | done) | ||||
.endif | .endif | ||||
.if ${go_ARGS:Mmodules} && defined(GO_MODULE) | |||||
gomod-clean: | |||||
@${ECHO_MSG} "===> Cleaning Go module cache" | |||||
@${SETENV} ${GO_ENV} ${GO_CMD} clean -modcache | |||||
# Hook up to distclean | |||||
.if !target(post-clean) && !make(clean) | |||||
post-clean: gomod-clean | |||||
@${RM} -r ${GO_GOPATH} | |||||
.endif | |||||
.endif | |||||
# Helper targets for port maintainers | # Helper targets for port maintainers | ||||
.if ${go_ARGS:Mmodules} | .if ${go_ARGS:Mmodules} && !defined(GO_MODULE) | ||||
_MODULES2TUPLE_CMD= modules2tuple | _MODULES2TUPLE_CMD= modules2tuple | ||||
gomod-vendor-deps: | gomod-vendor-deps: | ||||
@if ! type ${GO_CMD} > /dev/null 2>&1; then \ | @if ! type ${GO_CMD} > /dev/null 2>&1; then \ | ||||
${ECHO_MSG} "===> Please install \"${GO_PORT}\""; exit 1; \ | ${ECHO_MSG} "===> Please install \"${GO_PORT}\""; exit 1; \ | ||||
fi; \ | fi; \ | ||||
if ! type ${_MODULES2TUPLE_CMD} > /dev/null 2>&1; then \ | if ! type ${_MODULES2TUPLE_CMD} > /dev/null 2>&1; then \ | ||||
${ECHO_MSG} "===> Please install \"ports-mgmt/modules2tuple\""; exit 1; \ | ${ECHO_MSG} "===> Please install \"ports-mgmt/modules2tuple\""; exit 1; \ | ||||
fi | fi | ||||
gomod-vendor: gomod-vendor-deps patch | gomod-vendor: gomod-vendor-deps patch | ||||
@cd ${WRKSRC}; ${SETENV} GOPATH=${WRKDIR}/.gopath GOFLAGS=-modcacherw ${GO_CMD} mod vendor; \ | @cd ${WRKSRC}; ${SETENV} ${GO_ENV} ${GO_CMD} mod vendor; \ | ||||
[ -r vendor/modules.txt ] && ${_MODULES2TUPLE_CMD} vendor/modules.txt | [ -r vendor/modules.txt ] && ${_MODULES2TUPLE_CMD} vendor/modules.txt | ||||
gomod-vendor-diff: gomod-vendor-deps patch | gomod-vendor-diff: gomod-vendor-deps patch | ||||
@cd ${WRKSRC}; ${SETENV} GOPATH=${WRKDIR}/.gopath GOFLAGS=-modcacherw ${GO_CMD} mod vendor; \ | @cd ${WRKSRC}; ${SETENV} ${GO_ENV} ${GO_CMD} mod vendor; \ | ||||
[ -r vendor/modules.txt ] && ${_MODULES2TUPLE_CMD} vendor/modules.txt | ${SED} 's|GH_TUPLE=| |; s| \\$$||' | ${GREP} -v ' \\' > ${WRKDIR}/GH_TUPLE-new.txt && \ | [ -r vendor/modules.txt ] && ${_MODULES2TUPLE_CMD} vendor/modules.txt | ${SED} 's|GH_TUPLE=| |; s| \\$$||' | ${GREP} -v ' \\' > ${WRKDIR}/GH_TUPLE-new.txt && \ | ||||
echo ${GH_TUPLE} | ${TR} -s " " "\n" | ${SED} "s|^| |" > ${WRKDIR}/GH_TUPLE-old.txt && \ | echo ${GH_TUPLE} | ${TR} -s " " "\n" | ${SED} "s|^| |" > ${WRKDIR}/GH_TUPLE-old.txt && \ | ||||
${DIFF} ${WRKDIR}/GH_TUPLE-old.txt ${WRKDIR}/GH_TUPLE-new.txt || exit 0 | ${DIFF} ${WRKDIR}/GH_TUPLE-old.txt ${WRKDIR}/GH_TUPLE-new.txt || exit 0 | ||||
.endif | .endif | ||||
.endif # defined(_POSTMKINCLUDED) && !defined(_INCLUDE_USES_GO_POST_MK) | .endif # defined(_POSTMKINCLUDED) && !defined(_INCLUDE_USES_GO_POST_MK) |