bazelbuild / bazelbuild/rules_apple

Bundletool performance, Bundletool as an Installer

Open
#635 7 comments 0 reactions 0 assignees View on GitHub
Dominant language
Starlark
Stars
593
Forks
334
Avg merge
16h 48m
Merged PRs (30d)
9

Description

We use `apple.experimental.tree_artifact_outputs`, and for our apps it takes a consistent 8-9s to run `bundletool_experimental.py` to construct the `.app`. This is something I'd like to optimize for local builds, to speed up the edit-compile-run cycle.

Have there been any discussions about future work for the bundletool, specifically the experimental (tree) version. For what it's worth, I notice that `experimental.tree_artifact_outputs` isn't documented.

Secondly, what do people think about the option of making rules_apple not run bundletool, instead have some `{sh,py}_binary` rule would produce an "installer" – which wraps bundletool, that we can run after the `bazel build`. For local development, after each `bazel build` the `.app` or `.xctest` bundles need to be copied to `DerivedData`, which adds a little more time. This could be faster if we skip the middle man and instead construct the `.app` where we want it (`DerivedData`).

Contributor guide

Open the contributing guide

Research direction

Start by profiling bundletool_experimental.py for builds using apple.experimental.tree_artifact_outputs, then review the undocumented experimental.tree_artifact_outputs option. Compare the current bundle placement and copying into DerivedData with the proposed installer approach. Done would require a decided scope and an agreed design for improving local build performance.

Written by the indexing model from the issue text.

Assessment

Domain
build-system
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.