Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F148031924
D21562.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D21562.diff
View Options
Index: head/Mk/Uses/go.mk
===================================================================
--- head/Mk/Uses/go.mk
+++ head/Mk/Uses/go.mk
@@ -20,23 +20,27 @@
# You can set the following variables to control the process.
#
# GO_PKGNAME
-# The name of the package. When building in GOPATH mode, this is
-# the directory that will be created in GOPATH/src and seen by the
-# `go` command. When building in modules-aware mode, no directories
-# will be created and GO_PKGNAME value will be only used as a default
-# for GO_TARGET. If not set explicitly and GH_SUBDIR is present,
-# GO_PKGNAME will be inferred from GH_SUBDIR.
+# The name of the package when building in GOPATH mode. This
+# is the directory that will be created in GOPATH/src and seen
+# by the `go` command. If not set explicitly and GH_SUBDIR or
+# GL_SUBDIR is present, GO_PKGNAME will be inferred from it.
+# It is not needed when building in modules-aware mode.
#
# GO_TARGET
-# The names of the package(s) to build. If not set explicitly,
-# defaults to GO_PKGNAME.
+# The packages to build. If not set explicitly, defaults to
+# GO_PKGNAME. GO_TARGET can also be a tuple in the form
+# package:path where path can be either a simple filename or a
+# full path starting with ${PREFIX}. Specifying a full path
+# like ${PREFIX}/sbin/binary will install the resulting binary
+# as ${PREFIX}/sbin/binary. Using just simple filename is a
+# shortcut to installing it as ${PREFIX}/bin/filename.
#
# CGO_CFLAGS
-# Addional CFLAGS variables to be passed to the C compiler by the `go`
+# Additional CFLAGS variables to be passed to the C compiler by the `go`
# command
#
# CGO_LDFLAGS
-# Addional LDFLAGS variables to be passed to the C compiler by the `go`
+# Additional LDFLAGS variables to be passed to the C compiler by the `go`
# command
#
# GO_BUILDFLAGS
@@ -61,6 +65,8 @@
.if empty(GO_PKGNAME)
. if !empty(GH_SUBDIR)
GO_PKGNAME= ${GH_SUBDIR:S|^src/||}
+. elif !empty(GL_SUBDIR)
+GO_PKGNAME= ${GL_SUBDIR:S|^src/||}
. else
GO_PKGNAME= ${PORTNAME}
. endif
@@ -116,14 +122,31 @@
.if !target(do-build) && empty(go_ARGS:Mno_targets)
do-build:
(cd ${GO_WRKSRC}; \
- ${SETENV} ${MAKE_ENV} ${GO_ENV} ${GO_CMD} install ${GO_BUILDFLAGS} ${GO_TARGET:S/^${PORTNAME}$/./})
+ for t in ${GO_TARGET}; do \
+ out=$$(${BASENAME} $$(${ECHO_CMD} $${t} | \
+ ${SED} -Ee 's/^[^:]*:([^:]+).*$$/\1/' -e 's/^\.$$/${PORTNAME}/')); \
+ pkg=$$(${ECHO_CMD} $${t} | \
+ ${SED} -Ee 's/^([^:]*).*$$/\1/' -e 's/^${PORTNAME}$$/./'); \
+ ${ECHO_MSG} "===> Building $${out} from $${pkg}"; \
+ ${SETENV} ${MAKE_ENV} ${GO_ENV} ${GO_CMD} build ${GO_BUILDFLAGS} \
+ -o ${GO_WRKDIR_BIN}/$${out} \
+ $${pkg}; \
+ done)
.endif
.if !target(do-install) && empty(go_ARGS:Mno_targets)
do-install:
-.for _TARGET in ${GO_TARGET}
- ${INSTALL_PROGRAM} ${GO_WRKDIR_BIN}/${_TARGET:T:S/^.$/${PORTNAME}/} ${STAGEDIR}${PREFIX}/bin
-.endfor
+ for t in ${GO_TARGET}; do \
+ dst=$$(${ECHO_CMD} $${t} | \
+ ${SED} -Ee 's/^[^:]*:([^:]+).*$$/\1/' -e 's/^\.$$/${PORTNAME}/'); \
+ src=$$(${BASENAME} $${dst}); \
+ case $${dst} in \
+ /*) dst=${STAGEDIR}$${dst}; ${MKDIR} $$(${DIRNAME} $${dst}) ;; \
+ *) dst=${STAGEDIR}${PREFIX}/bin/$${src} ;; \
+ esac; \
+ ${ECHO_MSG} "===> Installing $${src} as $${dst}"; \
+ ${INSTALL_PROGRAM} ${GO_WRKDIR_BIN}/$${src} $${dst}; \
+ done
.endif
# Helper targets for port maintainers
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Mar 16, 7:16 AM (17 h, 43 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29759601
Default Alt Text
D21562.diff (3 KB)
Attached To
Mode
D21562: Mk/Uses/go.mk: Allow naming output executable in GO_TARGET, make GH_ACCOUNT/GH_PROJECT usage less surprising
Attached
Detach File
Event Timeline
Log In to Comment