Skip to content

V0.24.0

Compare
Choose a tag to compare
@kageiit kageiit released this 30 Jul 04:03
· 547 commits to master since this release

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