Skip to content

Releases: uber/okbuck

v0.24.4

01 Aug 23:57
Compare
Choose a tag to compare

Enhancements

  • Add alternative approach to deal with dependency conflicts in android apps (#490)

Provides an alternative way to force dependencies across all sub projects. This can be beneficial as gradle performance starts to degrade with many dependency substitution rules.

Consumers can now set forced versions of dependencies via

dependencies {
  forcedOkbuck "com.foo:bar:1.0.0"
}

To force all sub projects to use 1.0.0 of com.foo:bar regardless of what they pull in transitively.

The okbuck wiki has been updated to reflect the same

v0.24.2

01 Aug 15:30
Compare
Choose a tag to compare

Enhancements

  • Switch to using okio for writing to BUCK files (#483). Improves performance of okbuck tasks.
  • Add some error handling for git failures in buckw (d5758a2)

Bugfixes

  • Fix a bug where test dependencies of android modules were not being picked up correctly (ead6fdb)

V0.24.0

30 Jul 04:03
Compare
Choose a tag to compare

Enhancements

Completely overhauled how dependencies are resolved and cached by okbuck (#482). Key changes are

  • Okbuck now resolves every configuration individually and thus does not force using the highest dependency version across all subprojects. Individual projects can depend on different versions of any dependency now. This is mostly useful for apps that want to be on different versions of a dependency. Common/shared libraries between apps will still have to confirm to a common version that works for all apps.
  • Classpaths used by buck for build/test are now exactly the same as what gradle uses for its tasks.
  • Moved dependency cache creation logic from a single startup task to individual project okbuck tasks. This means operations like downloading dependencies, source jars, extraction of annotation processors, lint jars and proguard configs are all parallelized across subproject tasks.
  • Added the concept of a persistent Store to cache expensive operations like unzipping aars/jars to extract metadata and walking filetrees to determine source jars. This will help speed up subsequent okbuck runs till we can get fully incremental okbuck tasks.
  • Moved dependency validation (usage of snapshots etc.) towards the end of the okbuck lifecycle once all dependencies are materialized. This also makes the error messages more visible.
  • Several other improvements to performance/documentation and code readability.

Bugfixes

  • Made buckw agnostic of the directory it is run from (a1ccb54)
  • Made java binary excludes work correctly (11fbab3)

Breaking Changes

Since okbuck no longer pins dependency versions to the highest version available across all sub projects, you may see some errors when building apps. Workarounds are documented on the wiki

V0.23.1

21 Jul 02:41
Compare
Choose a tag to compare

Bugfixes

  • Fixed potential performance issue due to sources jar search logic. #479

V0.23.0

21 Jul 02:41
Compare
Choose a tag to compare

Enhancements

  • Added support for Scala libraries and tests (#475). The version of the scala compiler to us can be customized via the okbuck.scala.version extension option
  • Make application plugin support universal (#476). This means when the application plugin is applied to kotlin/groovy/scala projects etc. the java_binary rule is generated correctly. Previously it was only generated for java projects.

v0.22.4

10 Jul 22:28
Compare
Choose a tag to compare

Bugfixes

  • Use relative path for merged proguard file to ensure hermetic builds when running proguard on different machines.
  • Add logic to buckw to update buck and build it if needed (#469). Due to the changes in facebook/buck@bfa9171 buck no longer updates/builds itself. This ports the logic to buckw to preserve the ability to do so in a backward compatible manner.

Potential Breaking Changes

  • Please update your buckw using ./gradlew buckWrapper to get the new fixes to the wrapper included in this release

V0.22.3

29 Jun 23:00
Compare
Choose a tag to compare

Enhancements

  • Allow transform config to accept project dependencies (#466)

Potential Breaking Changes

  • okbuck will now throw an exception if it detects a project type which it cannot process yet. Please use the okbuck.buckProjects extension option to exclude any project types that okbuck cannot process.

V0.22.2

28 Jun 00:54
Compare
Choose a tag to compare

Bugfixes

  • Do not generate default project ignores. Fixes: facebook/buck#1402 . Let the user configure the ignores instead in .buckconfig
  • Setup Kotlin home whenever the kotlin gradle plugin is on the classpath. (#464)

V0.22.1

23 Jun 02:47
Compare
Choose a tag to compare

Enhancements

  • Add option to exclude some resources from aapt (#455). This can speedup builds by excluding resource configs that are not useful for debug builds. This is similar to resConfigs
  • Add support for Android Kotlin modules (#458)
  • Add support for Mixed Kotlin/Java modules (#459)

Notes

  • Mixed Kotlin/Java modules only work with kotlin 1.1.3 and above.

V0.21.0

05 Jun 21:40
Compare
Choose a tag to compare

Enhancements

  • Added in memory kotlin compiler support. Incremental builds for kotlin modules are around 3~6x faster.
  • Change how dependencies are resolved in preparation for Andrioid Gradle Plugin 3.x. This also improves okbuck performance on gradle versions 4.x and above (#451)
  • Preserve any existing attributes in <uses-sdk> during manifest merging (#445)

Bugfixes

  • Do not allow snapshot/dynamic dependencies in okbuck (#447)
  • Fix target outputs for kotlin modules. This allows the output jars from kotlin modules to be consumed by other modules
  • Switch the ordering of build config fields to match the behavior of the Android Gradle Plugin. (#449)

Potential Breaking Changes

  • When using kotlin projects with okbuck, the minimum support version of kotlin is now 1.1.0. You must also use .buckversion of facebook/buck@800d5a9 or later to continue to build kotlin modules with buck correctly.