New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 383364 link

Starred by 4 users

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: iOS
Pri: 3
Type: Feature

Blocking:
issue 314403



Sign in to add a comment

Make iOS ninja build deterministic

Project Member Reported by mar...@chromium.org, Jun 11 2014

Issue description

1. Learn about iOS build system. (See internal doc)
2. ninja -C out/Release chrome_ios_unittests
3. ren out out2
4. gclient runhooks
5. ninja -C out/Release chrome_ios_unittests

Expected:
Content of out/ and out2/ is byte-for-byte identical.

Actual:
They aren't.

This is specific about iOS/ninja/<whatever default compiler>
 

Comment 1 by mar...@chromium.org, Jun 11 2014

Blocking: chromium:314403
Cc: smut@chromium.org justincohen@chromium.org
Cc: thakis@chromium.org
Labels: -Pri-2 Pri-3
Lowering priority to P3 for now. We won't approach iOS until OSX is at least in a better shape, so removed the iOS builder in the meantime to not give a false signal that it is being looked into.
Project Member

Comment 5 by bugdroid1@chromium.org, Apr 15 2015

------------------------------------------------------------------
r294827 | sebmarchand@chromium.org | 2015-04-15T20:48:24.957969Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/tools/build/scripts/slave/recipe_modules/isolate/resources/compare_build_artifacts.py?r1=294827&r2=294826&pathrev=294827

Remove some files from the Windows non-deterministic whitelist.

BUG=429358, 383364

Review URL: https://codereview.chromium.org/1086193002
-----------------------------------------------------------------

Comment 6 by noyau@chromium.org, May 3 2015

Labels: hotlist-ios-fixit

Comment 7 by noyau@chromium.org, May 6 2015

Labels: hotlist-ios-fixit-marq

Comment 8 by noyau@chromium.org, May 6 2015

Labels: -hotlist-ios-fixit-marq

Comment 9 by noyau@chromium.org, May 7 2015

Labels: hotlist-ios-fixit-msarda
Cc: dpranke@chromium.org sdefresne@chromium.org
Labels: hotlist-ios-fixit-done
Owner: sdefresne@chromium.org
Status: Assigned
Labels: -hotlist-ios-fixit-msarda
Owner: justincohen@chromium.org
Labels: Needs-Feedback
Won't various DATE and TIME and other metadata make this impossible? Also, it appears ibtool xib and strings file compilation is also not deterministic.

See crbug.com/577711 for various hacks put in place to compare ninja to xcode builds.  Is this something the IOS deterministic builder should handle?
Justin, we made linux build deterministic. All use of __DATE__ and __TIME__ was removed. This is far from impossible. We also have a tooli to workaround non-determinism caused by tooling.
https://chromium.googlesource.com/chromium/tools/build/+/master/scripts/slave/recipe_modules/isolate/resources/remove_build_metadata.py
As far as I can tell Xcode ibtool compilation of strings and nibs, and actool generation of car files is non-deterministic.

What GYP flags does the deterministic bot set?  Maybe "fastbuild=1 dont_embed_build_metadata=1" ?

What is the diff output of the bot builds when run today?
Owner: ----
Status: Available (was: Assigned)
Components: Infra
Components: -Infra Infra>Client>iOS
Components: Infra>Client>Chrome
Components: -Infra>Client>iOS
Moved all Infra>Client>iOS bugs to Infra>Client>Chrome + OS-iOS.
Project Member

Comment 21 by sheriffbot@chromium.org, Dec 24

Labels: Hotlist-Recharge-Cold
Status: Untriaged (was: Available)
This issue has been Available for over a year. If it's no longer important or seems unlikely to be fixed, please consider closing it out. If it is important, please re-triage the issue.

Sorry for the inconvenience if the bug really should have been left as Available.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Cc: -pgervais@chromium.org
Labels: -Hotlist-ios-fixit -Hotlist-Recharge-Cold -Needs-Feedback -hotlist-ios-fixit-done
Status: Available (was: Untriaged)
Hopefully all the work we did in upstream LLVM will eventually trickle down into XCode and thus iOS tooling will get better.
maruel@ is there a bot or test that is run on other platforms to confirms we don't break deterministic?  I think the iOS executable might be deterministic now -- but some other elements in the .app package are not (yet), such as the .car files.  I think we have a radar out on that now.

If there's some test that runs on this, perhaps we can enable it to prevent regressions, but have it ignore certain files (like .car, codesign, etc)
http://dev.chromium.org/developers/testing/isolated-testing/deterministic-builds lists the bots we have. Some of the bot links are out of date though, I updated a few recently. The iOS one is out-of-date it seems.

https://ci.chromium.org/p/chromium/g/chromium.fyi/console is where the mac bot moved to , I don't know where the iOS bot is now. You could see if you can find it :-)

On Mac builds aren't deterministic because ld64's output isn't. erikchen sent a patch for that to the Apple person maintaining ld64, but it hasn't made it into any Xcode releases yet as far as I know. So I'd guess iOS probably has at least that problem.

Sign in to add a comment