-
Notifications
You must be signed in to change notification settings - Fork 274
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
Bundletool performance, Bundletool as an Installer #635
Comments
cc @DavidGoldman who might be interested in this too |
I'm not sure I'm fully following what you are after. We've had some thoughts about splitting the rules so something like |
This would be good, since the bundle would also be cacheable.
I'm thinking of one of two things:
|
Hm, so my initial thought is that "installer" mode sounds really fragile. Wouldn't you have to ensure you run it without any other activity having happened in the workspace? Building any other target (maybe even just running an aspect) could cause bazel to update some symlinks and thus invalidate the paths baked into the script? If it is done, how complex would it have to be? Since it is now writing into an external location, it would need to know to prune things that no longer should exist in addition to installing the things that should exist? By moving out of the bazel directories, timestamps likely also start to having meaning, so does it start touching them all or does it have to be smart and do everything on the side to see if the file really changes and then only update the timestamp if it as changed to support incremental installs into the devices? |
The use case I have in mind is running it immediately after the build.
We currently use |
Right, so the "installer" would have to duplicate all that logic, right? |
As far as I know, any |
We use
apple.experimental.tree_artifact_outputs
, and for our apps it takes a consistent 8-9s to runbundletool_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 thebazel build
. For local development, after eachbazel build
the.app
or.xctest
bundles need to be copied toDerivedData
, 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
).The text was updated successfully, but these errors were encountered: