[TIMOB-12419] CLI: Provide option for full simulator builds
GitHub Issue | n/a |
---|---|
Type | Bug |
Priority | High |
Status | Closed |
Resolution | Fixed |
Resolution Date | 2013-02-08T02:38:44.000+0000 |
Affected Version/s | n/a |
Fix Version/s | Release 3.0.2, Release 3.1.0, 2013 Sprint 02 JS, 2013 Sprint 02, 2013 Sprint 03 JS |
Components | Tooling |
Labels | build, cli, cli-review, qe-port |
Reporter | Neville Dastur |
Assignee | Chris Barber |
Created | 2013-01-17T11:27:15.000+0000 |
Updated | 2013-02-08T23:55:08.000+0000 |
Description
By default Ti speeds up simulator builds by sym linking and not pre-compiling js, but for uploads to systems such as pieceable a "full" non-symlinked .app build is required.
Pieceable provided some patches for SDK 1.8 and 2.0. See: https://github.com/pieceable/titanium-patches but none since.
I think it would be a useful option anyway and would avoid having to patch.
Please consider adding a "buildfull" option to the ti cmd line build options.
Good idea! I'll see what I can do.
While being able to force the copy of files instead of symlinking is a decent idea, we will not allow the deploy type to be set to "production" for anything other than a packaged build.
Also, the Titanium specific static libraries would continue to be symlinked. The libTiCore.a file is 250MB and it seems irresponsible to copy this file around.
Thanks Chris for looking into this. I think for Pieceable to work everything needs to be in the simulator package. Even libTiCore etc. Because in essence you copy the package to another machine. My idea was that this is added as something only accessible from the CLI either build.py or titanium that way the responsibility of copy large files around is down to the dev and is used only when needed.
Hmm, I see what you mean. Let me get back to you.
Chris, Interestingly I don't think libTiCore comes into it. I did this inside the simulator dir for the app.
This works for upload to pieceable
libTiCore.a is symlinked into the build/iphone/lib directory. I added a --force-copy flag that will copy everything (no symlinks) EXCEPT libTiCore.a. I also added a --force-copy-all flag that does everything --force-copy does plus it copies libTiCore.a.
Okay, but the simulator app bundle doesn't contain libTiCore.a. I assume it is linked into the binary. Is there a way I can test the new flag?
Yes, it's linked into the binary. You can test the new flag once it's been committed. I'm still working things. I'll have something next week.
Thank you. I assume you mean in the CLI update rather than a new SDK version
No, SDK update. iOS build scripts are bundled with the SDK.
Master pull request: https://github.com/appcelerator/titanium_mobile/pull/3796 3.0.x pull request: https://github.com/appcelerator/titanium_mobile/pull/3797
To test: 1) create a project 2) build the project for ios simulator: titanium build -p ios 3) inspect build/iphone/build/Debug-iphonesimulator/appname.app 4) files such as app.js and appicon.png should be symlinked 5) now build with --force-copy: titanium build -p ios --force-copy 6) inspect build/iphone/build/Debug-iphonesimulator/appname.app 7) files such as app.js and appicon.png should have been copied and are not links
The --force-copy flag works as expected, except in cases where "ti clean" is not used. If you build, then rebuild without cleaning, the symlinks remain and the files are not copied.
Master pull request: https://github.com/appcelerator/titanium_mobile/pull/3850
Closing as fixed. Tested and verified with: Titanium Studio, build: 3.0.2.201302041757 Titanium SDK, build: 3.0.2.v20130207164659 CLI 3.0.24-cr