Hi,

Currently in go.port.mk we set ALL_TARGET based on the existence of GH_*
vars. This is handy, but when GH_* are not defined, ALL_TARGET defaults
to "all" which completely breaks GOPATH as it ends up as
${WRKDIR}/go/src/all, which prevents sub-modules from being detected
even though they are right there in the all dir).

As it stands now, it isn't obvious that users need to set ALL_TARGET to
get things working, so instead, WRK* vars are diddled until things
work.

This diff breaks non-GH_*'d go packages that currently do not have
ALL_TARGET set, but the fix is trivial. Obviously there would need to be
a round of fixes for every Go port.

For example net/syncthing:

----->8-----
diff --git a/net/syncthing/Makefile b/net/syncthing/Makefile
index f439d2674e7..d80b8441e27 100644
--- a/net/syncthing/Makefile
+++ b/net/syncthing/Makefile
@@ -19,7 +19,7 @@ WANTLIB += c pthread
 MASTER_SITES = https://github.com/syncthing/syncthing/releases/download/v${V}/
 
 WRKDIST =              ${WRKDIR}/syncthing
-WRKSRC =               ${WRKDIR}/go/src/github.com/syncthing/syncthing
+ALL_TARGET =           github.com/syncthing/syncthing
 SUBST_VARS +=          VARBASE
 
 MODULES =              lang/go
-----8<-----

Here is the diff:

diff --git a/lang/go/go.port.mk b/lang/go/go.port.mk
index 1a5827dbe23..cc1a3b6cfc7 100644
--- a/lang/go/go.port.mk
+++ b/lang/go/go.port.mk
@@ -35,6 +35,11 @@ MODGO_TEST_CMD +=    -ldflags="${MODGO_LDFLAGS}"
 .if defined(GH_ACCOUNT) && defined(GH_PROJECT)
 ALL_TARGET ?=          github.com/${GH_ACCOUNT}/${GH_PROJECT}
 .endif
+
+.if ! defined(ALL_TARGET)
+ERRORS += "Fatal: please set ALL_TARGET to the Go package path of ${PKGNAME}"
+.endif
+
 TEST_TARGET ?=         ${ALL_TARGET}
 
 SEPARATE_BUILD ?=      Yes

-- 
PGP: 0x1F81112D62A9ADCE / 3586 3350 BFEA C101 DB1A  4AF0 1F81 112D 62A9 ADCE

Reply via email to