pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/lang/go
Module Name: pkgsrc
Committed By: bsiegert
Date: Sun Apr 12 11:12:34 UTC 2020
Added Files:
pkgsrc/lang/go: go-module.mk
Log Message:
Add support for building Go modules in pkgsrc.
This is for packages containing a "go.mod" file.
To generate a diff of this commit:
cvs rdiff -u -r0 -r1.1 pkgsrc/lang/go/go-module.mk
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Added files:
Index: pkgsrc/lang/go/go-module.mk
diff -u /dev/null pkgsrc/lang/go/go-module.mk:1.1
--- /dev/null Sun Apr 12 11:12:34 2020
+++ pkgsrc/lang/go/go-module.mk Sun Apr 12 11:12:34 2020
@@ -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