pkgsrc-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/trunk]: pkgsrc/lang/go Add support for building Go modules in pkgsrc.
details: https://anonhg.NetBSD.org/pkgsrc/rev/96df3fd8441a
branches: trunk
changeset: 427140:96df3fd8441a
user: bsiegert <bsiegert%pkgsrc.org@localhost>
date: Sun Apr 12 11:12:34 2020 +0000
description:
Add support for building Go modules in pkgsrc.
This is for packages containing a "go.mod" file.
diffstat:
lang/go/go-module.mk | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 84 insertions(+), 0 deletions(-)
diffs (88 lines):
diff -r 361e0a8dc4e8 -r 96df3fd8441a lang/go/go-module.mk
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lang/go/go-module.mk Sun Apr 12 11:12:34 2020 +0000
@@ -0,0 +1,84 @@
+# $NetBSD: go-module.mk,v 1.1 2020/04/12 11:12:34 bsiegert Exp $
+#
+# This file implements common logic for compiling Go programs in pkgsrc.
+#
+# === Package-settable variables ===
+#
+# GO_BUILD_PATTERN (optional)
+# Argument used for 'go install'.
+# In most cases, the default is fine.
+#
+# Default:
+# "...", which means all files below the top-level directory.
+#
+# GO_MODULE_FILES (optional)
+# List of dependency files to be downloaded from the Go module proxy.
+# Can be filled out from the output of "make show-go-modules".
+#
+# Keywords: go golang
+#
+
+# Implementation notes
+#
+# All packages build-depend on the default Go release. Go packages should be
+# revbumped when that package is updated.
+#
+
+.include "../../lang/go/version.mk"
+
+GO_BUILD_PATTERN?= ...
+
+MAKE_JOBS_SAFE= no
+INSTALLATION_DIRS+= bin
+USE_TOOLS+= pax
+
+BUILD_DEPENDS+= ${GO_PACKAGE_DEP}
+PRINT_PLIST_AWK+= /^@pkgdir bin$$/ { next; }
+
+MAKE_ENV+= GO111MODULE=on GOPATH=${WRKDIR}/.gopath GOPROXY=file://${WRKDIR}/.goproxy
+MAKE_ENV+= GOCACHE=${WRKDIR}/.cache/go-build
+
+.if !target(do-build)
+do-build:
+ ${RUN} cd ${WRKSRC} && ${_ULIMIT_CMD} ${PKGSRC_SETENV} ${MAKE_ENV} ${GO} install -v ${GO_BUILD_PATTERN}
+.endif
+
+.if !target(do-test)
+do-test:
+ ${RUN} cd ${WRKSRC} && ${_ULIMIT_CMD} ${PKGSRC_SETENV} ${TEST_ENV} ${MAKE_ENV} ${GO} test -v ${GO_BUILD_PATTERN}
+.endif
+
+.if !target(do-install)
+do-install:
+ ${RUN} cd ${WRKDIR}/.gopath && [ ! -d bin ] || ${PAX} -rw bin ${DESTDIR}${PREFIX}
+.endif
+
+.PHONY: show-go-modules
+show-go-modules: ${WRKDIR}/.extract_done
+ ${RUN} cd ${WRKSRC} && ${PKGSRC_SETENV} ${MAKE_ENV} GOPROXY= ${GO} get -d
+ ${RUN} cd ${WRKDIR}/.gopath/pkg/mod/cache/download && ${FIND} . -type f -name "*.mod" | ${SED} -e 's/\.\//GO_MODULE_FILES+= /'
+ ${RUN} cd ${WRKDIR}/.gopath/pkg/mod/cache/download && ${FIND} . -type f -name "*.zip" | ${SED} -e 's/\.\//GO_MODULE_FILES+= /'
+
+DISTFILES?= ${DEFAULT_DISTFILES}
+.for i in ${GO_MODULE_FILES}
+DISTFILES+= ${i:C/[\/!]/_/g}
+SITES.${i:C/[\/!]/_/g}= -https://proxy.golang.org/${i}
+.endfor
+
+post-extract:
+.for i in ${GO_MODULE_FILES}
+ ${MKDIR} ${WRKDIR}/.goproxy/${i:H}
+ cp ${DISTDIR}/${DIST_SUBDIR}/${i:C/[\/!]/_/g} ${WRKDIR}/.goproxy/${i}
+.endfor
+
+_VARGROUPS+= go
+_PKG_VARS.go= GO_BUILD_PATTERN
+_USER_VARS.go= GO_VERSION_DEFAULT
+_SYS_VARS.go= GO GO_VERSION GOVERSSUFFIX GOARCH GOCHAR \
+ GOOPT GOTOOLDIR GO_PLATFORM
+_DEF_VARS.go= GO14_VERSION GO19_VERSION GO110_VERSION \
+ GO111_VERSION INSTALLATION_DIRS MAKE_JOBS_SAFE \
+ NOT_FOR_PLATFORM ONLY_FOR_PLATFORM SSP_SUPPORTED \
+ WRKSRC
+_USE_VARS.go= GO_PACKAGE_DEP
+_SORTED_VARS.go= INSTALLATION_DIRS *_FOR_PLATFORM
Home |
Main Index |
Thread Index |
Old Index