]> Cypherpunks repositories - gostls13.git/commit
cmd/go/internal/modload: compute direct in workspace mode
authorMichael Matloob <matloob@golang.org>
Thu, 18 Apr 2024 22:04:54 +0000 (18:04 -0400)
committerMichael Matloob <matloob@golang.org>
Wed, 15 May 2024 16:04:44 +0000 (16:04 +0000)
commit90b15211382ca10bd3256b17a6d9cc02da169d6a
tree1298c0b821c1fb9f90c286615828fa4f81e66b1b
parent18d0e6a14f0de7fe1a32799f3d0982c274b3c091
cmd/go/internal/modload: compute direct in workspace mode

The Requirements structure, which represents the root level requirements
of the module graph also has a 'direct' field which contains the set of
direct dependencies of a module.

Before this change, in workspace mode, the direct field was not set on
the Requirements structure. This change sets direct in the two places
it's needed: when initializing Requirements from the workspace's mod
files and when updating Requirements based on imports.

When initializing Requirements from the workspace's mod files, this
change will use the 'indirect' comments in those mod files to record the
set of direct modules passed to the Requirements.

There is a loop in updateRequirements where we consider the imports of
the packages we loaded from the main module to make sure that all those
imported packages' modules are required.  The loop also updates direct
for each of those modules (which have at least one package directly
imported by the main modules).  Before this change, in the workspace
case we continued early from the loop and didn't proceed to the code
where direct is computed. This change fixes that.

Fixes #66789

Change-Id: I2b497fbf28c2197e8ba8e8ca5314c1a720f16364
Cq-Include-Trybots: luci.golang.try:gotip-linux-amd64-longtest,gotip-windows-amd64-longtest
Reviewed-on: https://go-review.googlesource.com/c/go/+/580256
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
src/cmd/go/internal/modload/buildlist.go
src/cmd/go/internal/modload/init.go
src/cmd/go/internal/modload/load.go
src/cmd/go/testdata/script/mod_list_direct_work.txt [new file with mode: 0644]