Skip to content

Conversation

@armanbilge
Copy link
Member

@armanbilge armanbilge commented Feb 2, 2022

Give it a try with rootFinagle/mimaReportBinaryIssues :)

Comment on lines 21 to 24
libraryDependencies += module,
mimaCurrentClassfiles := {
(Compile / dependencyClasspath).value.seq.map(_.data).find(_.getName.startsWith(module.name)).get
},
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A little hacky but seems to work :)

@codecov-commenter
Copy link

codecov-commenter commented Feb 2, 2022

Codecov Report

Merging #430 (976e505) into main (e1b9fc2) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #430   +/-   ##
=======================================
  Coverage   90.32%   90.32%           
=======================================
  Files           7        7           
  Lines         124      124           
  Branches        2        2           
=======================================
  Hits          112      112           
  Misses         12       12           

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

import com.typesafe.tools.mima.plugin.SbtMima
import org.typelevel.sbt.NoPublishPlugin

object FinaglePlugin extends AutoPlugin {
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For every finagle module you want to check bincompat of, this plugin creates a synthetic (no-publish) project for it in your build. Each of these projects is configured for MiMa, except we set mimaCurrentClassfiles to the current finagle dependency (rather than the project's compile output, which is irrelevant).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Then, all of these projects are aggregated into rootFinagle.

@bpholt
Copy link
Member

bpholt commented May 31, 2022

This is pretty cool. Looking forward to trying it out for real when they update upstream—hopefully it will be able to tell us whether whatever version is next (I was expecting 22.5.0, but you'd think that would be been released by now) is compatible with 22.4.0.

lazy val finagleVersion = versions.head
}

/* When a new Finagle version is released, add it to the beginning of
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@armanbilge does this comment seem accurate to you?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I believe so!

@bpholt
Copy link
Member

bpholt commented Oct 20, 2022

I tried setting val versions = Seq("22.7.0", "22.4.0") in FinaglePlugin. Running rootFinagle/mimaReportBinaryIssues reported 89 issues, which indicates that v22.7.0 is not bin-compatible with v22.4.0. (Looking at the "Breaking API Changes " in its release notes, I think that's right!)

@bpholt bpholt merged commit b89e0e9 into typelevel:main Oct 20, 2022
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.

3 participants