Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmd/go: refactor into multiple packages #18653

Closed
rsc opened this issue Jan 13, 2017 · 24 comments
Closed

cmd/go: refactor into multiple packages #18653

rsc opened this issue Jan 13, 2017 · 24 comments

Comments

@rsc
Copy link
Contributor

rsc commented Jan 13, 2017

It would help to split the go command into some packages,
in particular to separate out package loading from package building.
I have a plan and will send CLs at the start of Go 1.9
to try to get ahead of any possible merge conflicts.

CLs will be attached to this issue.

@rsc rsc added this to the Go1.9Early milestone Jan 13, 2017
@rsc rsc self-assigned this Jan 13, 2017
@mvdan
Copy link
Member

mvdan commented Jan 13, 2017

Would this cover the need for https://github.com/kisielk/gotool?

@josharian josharian added the GoCommand cmd/go label Jan 13, 2017
@gopherbot
Copy link

CL https://golang.org/cl/36192 mentions this issue.

@gopherbot
Copy link

CL https://golang.org/cl/36129 mentions this issue.

@gopherbot
Copy link

CL https://golang.org/cl/36193 mentions this issue.

@gopherbot
Copy link

CL https://golang.org/cl/36203 mentions this issue.

@gopherbot
Copy link

CL https://golang.org/cl/36195 mentions this issue.

@gopherbot
Copy link

CL https://golang.org/cl/36191 mentions this issue.

@gopherbot
Copy link

CL https://golang.org/cl/36204 mentions this issue.

@gopherbot
Copy link

CL https://golang.org/cl/36200 mentions this issue.

@gopherbot
Copy link

CL https://golang.org/cl/36199 mentions this issue.

@gopherbot
Copy link

CL https://golang.org/cl/36202 mentions this issue.

@gopherbot
Copy link

CL https://golang.org/cl/36194 mentions this issue.

@gopherbot
Copy link

CL https://golang.org/cl/36196 mentions this issue.

@gopherbot
Copy link

CL https://golang.org/cl/36190 mentions this issue.

@gopherbot
Copy link

CL https://golang.org/cl/36198 mentions this issue.

@gopherbot
Copy link

CL https://golang.org/cl/36201 mentions this issue.

@gopherbot
Copy link

CL https://golang.org/cl/36197 mentions this issue.

@mvdan
Copy link
Member

mvdan commented Feb 2, 2017

Would this cover the need for https://github.com/kisielk/gotool?

All the new packages are internal, so it seems like it won't replace gotool just yet.

@rsc
Copy link
Contributor Author

rsc commented Feb 2, 2017

There is no intent to expose the internals of the go command for direct import by programs that want to behave like it. I would prefer if those programs invoked the go command to find out what they need to find out: the API is the binary itself, not the Go package. Using the binary means that when some detail of the go command changes, all those other tools don't need to be updated. I'd be happy to talk about what those tools need.

@mvdan
Copy link
Member

mvdan commented Feb 2, 2017

@rsc this sounds like a good idea. Should I open a separate issue and ping people who'll probably be interested?

@rsc
Copy link
Contributor Author

rsc commented Feb 2, 2017

Sure, please open a new issue 'cmd/go: define command-line API for tools' and please list there the kinds of things your tools need to find out from the go command. Thanks.

@dmitshur
Copy link
Contributor

dmitshur commented Feb 2, 2017

I'm very happy about this happening. I've been considering making a proposal and try to motivate doing exactly this. 👍

I'll also mention #11490 here - that issue might be worth revisiting and updating now that this is happening, since it's relevant.

gopherbot pushed a commit that referenced this issue Feb 3, 2017
This CL makes a few naming changes to break dependencies
between different parts of the go command, to make it easier
to split into different packages.

This is the first CL in a long sequence of changes to break up the
go command from one package into a plausible group of packages.

This sequence is concerned only with moving code, not changing
or cleaning up code. There will still be more cleanup after this sequence.

The entire sequence will be submitted together: it is not a goal
for the tree to build at every step.

For #18653.

Change-Id: I69a98b9ea48e61b1e1cda95273d29860b525415f
Reviewed-on: https://go-review.googlesource.com/36129
Reviewed-by: David Crawshaw <crawshaw@golang.org>
gopherbot pushed a commit that referenced this issue Feb 3, 2017
This is one CL in a long sequence of changes to break up the
go command from one package into a plausible group of packages.

This sequence is concerned only with moving code, not changing
or cleaning up code. There will still be more cleanup after this sequence.

The entire sequence will be submitted together: it is not a goal
for the tree to build at every step.

For #18653.

Change-Id: I63f578f5ac99c707b599ac5659293c46b275567d
Reviewed-on: https://go-review.googlesource.com/36190
Reviewed-by: David Crawshaw <crawshaw@golang.org>
gopherbot pushed a commit that referenced this issue Feb 3, 2017
This is one CL in a long sequence of changes to break up the
go command from one package into a plausible group of packages.

This sequence is concerned only with moving code, not changing
or cleaning up code. There will still be more cleanup after this sequence.

The entire sequence will be submitted together: it is not a goal
for the tree to build at every step.

For #18653.

Change-Id: Icb3f168ade91e7da5fcab89ac75b768daefff359
Reviewed-on: https://go-review.googlesource.com/36191
Reviewed-by: David Crawshaw <crawshaw@golang.org>
gopherbot pushed a commit that referenced this issue Feb 3, 2017
This is one CL in a long sequence of changes to break up the
go command from one package into a plausible group of packages.

This sequence is concerned only with moving code, not changing
or cleaning up code. There will still be more cleanup after this sequence.

The entire sequence will be submitted together: it is not a goal
for the tree to build at every step.

For #18653.

Change-Id: I6ee5b053683034ea9462a9a0a4ea4f5ad24fa5a1
Reviewed-on: https://go-review.googlesource.com/36192
Reviewed-by: David Crawshaw <crawshaw@golang.org>
gopherbot pushed a commit that referenced this issue Feb 3, 2017
This is one CL in a long sequence of changes to break up the
go command from one package into a plausible group of packages.

This sequence is concerned only with moving code, not changing
or cleaning up code. There will still be more cleanup after this sequence.

The entire sequence will be submitted together: it is not a goal
for the tree to build at every step.

For #18653.

Change-Id: I7c5dde6e7fe4f390e6607303b4d42535c674eac3
Reviewed-on: https://go-review.googlesource.com/36193
Reviewed-by: David Crawshaw <crawshaw@golang.org>
gopherbot pushed a commit that referenced this issue Feb 3, 2017
This is one CL in a long sequence of changes to break up the
go command from one package into a plausible group of packages.

This sequence is concerned only with moving code, not changing
or cleaning up code. There will still be more cleanup after this sequence.

The entire sequence will be submitted together: it is not a goal
for the tree to build at every step.

For #18653.

Change-Id: I4cf05b076d81b780c87a31378523929b5da8964b
Reviewed-on: https://go-review.googlesource.com/36194
Reviewed-by: David Crawshaw <crawshaw@golang.org>
gopherbot pushed a commit that referenced this issue Feb 3, 2017
This is one CL in a long sequence of changes to break up the
go command from one package into a plausible group of packages.

This sequence is concerned only with moving code, not changing
or cleaning up code. There will still be more cleanup after this sequence.

The entire sequence will be submitted together: it is not a goal
for the tree to build at every step.

For #18653.

Change-Id: I20dbc352c3df3c83a75811dd8e78c580a46b2202
Reviewed-on: https://go-review.googlesource.com/36195
Reviewed-by: David Crawshaw <crawshaw@golang.org>
gopherbot pushed a commit that referenced this issue Feb 3, 2017
This is one CL in a long sequence of changes to break up the
go command from one package into a plausible group of packages.

This sequence is concerned only with moving code, not changing
or cleaning up code. There will still be more cleanup after this sequence.

The entire sequence will be submitted together: it is not a goal
for the tree to build at every step.

For #18653.

Change-Id: Ic802483e50598def638f1e2e706d5fdf7822d32d
Reviewed-on: https://go-review.googlesource.com/36196
Reviewed-by: David Crawshaw <crawshaw@golang.org>
gopherbot pushed a commit that referenced this issue Feb 3, 2017
This is one CL in a long sequence of changes to break up the
go command from one package into a plausible group of packages.

This sequence is concerned only with moving code, not changing
or cleaning up code. There will still be more cleanup after this sequence.

The entire sequence will be submitted together: it is not a goal
for the tree to build at every step.

For #18653.

Change-Id: Icdd181098f9f0e81f68bf201e6867cdd8f820300
Reviewed-on: https://go-review.googlesource.com/36197
Reviewed-by: David Crawshaw <crawshaw@golang.org>
gopherbot pushed a commit that referenced this issue Feb 3, 2017
This is one CL in a long sequence of changes to break up the
go command from one package into a plausible group of packages.

This sequence is concerned only with moving code, not changing
or cleaning up code. There will still be more cleanup after this sequence.

The entire sequence will be submitted together: it is not a goal
for the tree to build at every step.

For #18653.

Change-Id: I2d0ccdb84814537ab8b8842aa1b5f5bc0a88a0fc
Reviewed-on: https://go-review.googlesource.com/36198
Reviewed-by: David Crawshaw <crawshaw@golang.org>
gopherbot pushed a commit that referenced this issue Feb 3, 2017
This is one CL in a long sequence of changes to break up the
go command from one package into a plausible group of packages.

This sequence is concerned only with moving code, not changing
or cleaning up code. There will still be more cleanup after this sequence.

The entire sequence will be submitted together: it is not a goal
for the tree to build at every step.

For #18653.

Change-Id: I8e325d75f553b5d0b6224b56a705d2e2cb895de4
Reviewed-on: https://go-review.googlesource.com/36199
Reviewed-by: David Crawshaw <crawshaw@golang.org>
gopherbot pushed a commit that referenced this issue Feb 3, 2017
This is one CL in a long sequence of changes to break up the
go command from one package into a plausible group of packages.

This sequence is concerned only with moving code, not changing
or cleaning up code. There will still be more cleanup after this sequence.

The entire sequence will be submitted together: it is not a goal
for the tree to build at every step.

For #18653.

Change-Id: I28b20d53d20dff06eede574eb5c20359db0d3991
Reviewed-on: https://go-review.googlesource.com/36200
Reviewed-by: David Crawshaw <crawshaw@golang.org>
gopherbot pushed a commit that referenced this issue Feb 3, 2017
This is one CL in a long sequence of changes to break up the
go command from one package into a plausible group of packages.

This sequence is concerned only with moving code, not changing
or cleaning up code. There will still be more cleanup after this sequence.

The entire sequence will be submitted together: it is not a goal
for the tree to build at every step.

For #18653.

Change-Id: I2f349150659b6ddf6be4c675abba38dfe57ff652
Reviewed-on: https://go-review.googlesource.com/36201
Reviewed-by: David Crawshaw <crawshaw@golang.org>
gopherbot pushed a commit that referenced this issue Feb 3, 2017
This is one CL in a long sequence of changes to break up the
go command from one package into a plausible group of packages.

This sequence is concerned only with moving code, not changing
or cleaning up code. There will still be more cleanup after this sequence.

The entire sequence will be submitted together: it is not a goal
for the tree to build at every step.

For #18653.

Change-Id: Iec17bf2243de129942ae5fba126ec5f217be7303
Reviewed-on: https://go-review.googlesource.com/36202
Reviewed-by: David Crawshaw <crawshaw@golang.org>
gopherbot pushed a commit that referenced this issue Feb 3, 2017
This is one CL in a long sequence of changes to break up the
go command from one package into a plausible group of packages.

This sequence is concerned only with moving code, not changing
or cleaning up code. There will still be more cleanup after this sequence.

The entire sequence will be submitted together: it is not a goal
for the tree to build at every step.

For #18653.

Change-Id: I05629567cc33fef41bc74eba4f7ff66e4851343c
Reviewed-on: https://go-review.googlesource.com/36203
Reviewed-by: David Crawshaw <crawshaw@golang.org>
gopherbot pushed a commit that referenced this issue Feb 3, 2017
…l,version,vet

This is one CL in a long sequence of changes to break up the
go command from one package into a plausible group of packages.

This sequence is concerned only with moving code, not changing
or cleaning up code. There will still be more cleanup after this sequence.

The entire sequence will be submitted together: it is not a goal
for the tree to build at every step.

For #18653.

Change-Id: Ib22fc435827d4a05a77a5200ac437ce00e2a4da3
Reviewed-on: https://go-review.googlesource.com/36204
Reviewed-by: David Crawshaw <crawshaw@golang.org>
@bradfitz
Copy link
Contributor

bradfitz commented May 3, 2017

This happened.

@gopherbot
Copy link

Change https://golang.org/cl/59430 mentions this issue: cmd/go/internal/load: fix IsMetaPackage function name in doc

gopherbot pushed a commit that referenced this issue Aug 28, 2017
The IsMetaPackage function was made exported when it was moved from
cmd/go to cmd/go/internal/load in CL 36196. Its documentation wasn't
updated accordingly. This change fixes that, resolving a golint issue.

Updates #18653.

Change-Id: Icf89461000754d0f09e6617b11c838e4c050d5a6
Reviewed-on: https://go-review.googlesource.com/59430
Reviewed-by: Dave Cheney <dave@cheney.net>
@golang golang locked and limited conversation to collaborators Aug 28, 2018
@rsc rsc removed their assignment Jun 23, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

6 participants