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

refactor: rework/rethink the meta meta build stuff #1956

Merged
merged 1 commit into from
Dec 22, 2022
Merged

refactor: rework/rethink the meta meta build stuff #1956

merged 1 commit into from
Dec 22, 2022

Conversation

ckipp01
Copy link
Member

@ckipp01 ckipp01 commented Dec 19, 2022

So I keep just thinking about this.... what if we got rid of all the meta-meta build nonsense. I'm just playing around with this for now, so don't freak out. However, there are a few things we do lose with doing something like this, but I think the benefit of not having an insane build is pretty high.

Here are a few things I'm looking into since I know this change would affect them:

  1. We no longer dogfood. However, does that really matter? We're not really making changes to the sbt plugin often and I'd argue that i'd rather just have scripted tests or manual testing to ensure something then relying on the self published shaded naked self thingy that currently happens
  2. The benchmark bridge would need some re-adjustments. Although it's not 100% clear why we can't just rely on a self published snapshot that gets created right before we run the benchmarks instead of relying on the sbt-bloop-build-naked.

Again, heavily a WIP, but just playing around with the idea of burning all the meta meta stuff down to the grown. It's so much easier to work with without all of it. I'm gonna just rip everything out, start testing, and see what breaks and then try to address them.

@ckipp01 ckipp01 changed the title refactor: what if we just got rid of it all refactor: get rid of all the meta meta build nonsense Dec 19, 2022
@ckipp01 ckipp01 changed the title refactor: get rid of all the meta meta build nonsense refactor: rework/rethink the meta meta build stuff Dec 19, 2022
@ckipp01 ckipp01 force-pushed the burnItAll branch 6 times, most recently from 05dc869 to d3cec76 Compare December 20, 2022 17:25
@tgodzik
Copy link
Contributor

tgodzik commented Dec 20, 2022

Btw. I am all for it, thanks Chris for delving into these depths of madness and despair.

@ckipp01 ckipp01 force-pushed the burnItAll branch 4 times, most recently from 9946ff3 to 85f8847 Compare December 20, 2022 19:44
@bloopoid
Copy link
Collaborator

Performance test finished successfully.

Benchmarks is based on merging with master

@ckipp01
Copy link
Member Author

ckipp01 commented Dec 21, 2022

Alright, so I'm pretty confident with this at the moment, and quite happy with it. Much of it was mimicking what @alexarchambault did in bloop-core by just ripping it all out.

As I stated in the initial description, it seems that the entire notion of having the sbt-bloop-build-naked and the bloop-shaded-plugin is primarily to dogfood itself in a way that doesn't conflict with the issue that is outlined in sbt/sbt#892. Maybe at one point in time when we were rapidly developing the sbt plugin and build and always wanting to dogfood those changes this may have been worth it, but I don't think it is anymore. The entire meta-meta build can just be thrown away if we get rid of the idea of wanting to do this. Instead, we just ensure that we publish sbt-bloop before situations where we want to ensure we're using that. This is primarily when we're running the frontent tests and we an the Bloop definitions of the projects in the frontent resources and when we're running buildpress. In both of these scenarios we just publish sbt-bloop first, and it works the same way. Benchmarks will also work exactly the same as the version is passed directly to it that we're using. We included the sbt-bloop-build-naked there before, but from my understanding it was again only to dogfood the bloop generation when we can just use the one we just published.

So to outline the changes, this

  • gets rid of the sbt-bloop-build-naked
  • gets rid of the bloop-build-shaded-plugin
  • benchpress is still able to run fine
  • frontend test resources are still able to be generated fine
  • tests all still pass
  • the build is way less crazy

The main thing we lose out on is:

  • We no longer dogfood the absolute latest changes

This is a tradeoff I'm 100% ok with. If the others are as well I can merge in scalacenter/compiler-benchmark#9 (this pr is pointing to my own fork at the moment), and then I'll update this pr to use it.

@ckipp01 ckipp01 requested review from adpi2 and tgodzik December 21, 2022 11:29
@ckipp01 ckipp01 marked this pull request as ready for review December 21, 2022 11:29
@adpi2
Copy link
Member

adpi2 commented Dec 21, 2022

✔️ 💯 ✔️

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Alright, so I'm pretty confident with this at the moment, and quite
happy with it. Much of it was mimicking what Alex did in
bloop-core by just ripping it all out.

As I stated in the initial description, it seems that the entire notion
of having the sbt-bloop-build-naked and the bloop-shaded-plugin is
primarily to dogfood itself in a way that doesn't conflict with the
issue that is outlined in sbt/sbt#892. Maybe at one point in time when
we were rapidly developing the sbt plugin and build and always wanting
to dogfood those changes this may have been worth it, but I don't think
it is anymore. The entire meta-meta build can just be thrown away if we
get rid of the idea of wanting to do this. Instead, we just ensure that
we publish sbt-bloop before situations where we want to ensure we're
using that. This is primarily when we're running the frontend tests and
we an the Bloop definitions of the projects in the frontend resources
and when we're running buildpress. In both of these scenarios we just
publish sbt-bloop first, and it works the same way. Benchmarks will also
work exactly the same as the version is passed directly to it that we're
using. We included the sbt-bloop-build-naked there before, but from my
understanding it was again only to dogfood the bloop generation when we
can just use the one we just published.

So to outline the changes, this

- gets rid of the sbt-bloop-build-naked
- gets rid of the bloop-build-shaded-plugin
- benchpress is still able to run fine
- frontend test resources are still able to be generated fine
- tests all still pass
- the build is way less crazy

The main thing we lose out on is:

We no longer dogfood the absolute latest changes This is a tradeoff I'm
100% ok with.
@bloopoid

This comment was marked as outdated.

1 similar comment
@bloopoid

This comment was marked as outdated.

@ckipp01 ckipp01 merged commit 607be30 into main Dec 22, 2022
@ckipp01 ckipp01 deleted the burnItAll branch December 22, 2022 08:39
@ckipp01 ckipp01 mentioned this pull request Dec 22, 2022
16 tasks
@tgodzik
Copy link
Contributor

tgodzik commented Dec 22, 2022

This is beautiful! 😍
image

@oyvindberg
Copy link
Contributor

What a fantastic improvement! I wanted this since the first time I saw the build :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants