Skip to content
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

[msbuild] Fix detecting already signed executables. (#3743) #4231

Merged
merged 1 commit into from
Jun 12, 2018

Conversation

spouliot
Copy link
Contributor

Note: backport from master / d15-8

The MSBuild tasks will codesign an executable if the executable's timestamp is
later than _CodeSignature/CodeResources's timestamp (or if
_CodeSignature/CodeResources doesn't exist).

Unfortunately, the codesign executable modifies both of those files, and the
executable last. This means that even just after running codesign, the
executable's timestamp might be later than _CodeSignature/CodeResources's
timestamp (due to HFS+'s one-second timestamp resolution, this might happen
all within the same second, which means that this is a random issue: the
problem only occurs if the executable was modified at least a second later
than _CodeSignature/CodeResources.)

So make sure to touch _CodeSignature/CodeResources after running codesign,
so that the next time a build occurs (with no modifications), we don't resign
needlessly.

Fixes this (random) test failure when running the MSBuild tests:

1) Test Failure : Xamarin.iOS.Tasks.TargetTests.RebuildExecutable_NoModifications
     #1: ../MySingleView/bin/iPhoneSimulator/Debug/MySingleView.app/MySingleView
  Expected: 2017-11-30 10:04:20.000
  But was:  2017-11-30 10:04:22.000

Fixes https://github.com/xamarin/maccore/issues/592.

The MSBuild tasks will codesign an executable if the executable's timestamp is
later than `_CodeSignature/CodeResources`'s timestamp (or if
`_CodeSignature/CodeResources` doesn't exist).

Unfortunately, the codesign executable modifies both of those files, and the
executable last. This means that even just after running codesign, the
executable's timestamp might be later than `_CodeSignature/CodeResources`'s
timestamp (due to HFS+'s one-second timestamp resolution, this might happen
all within the same second, which means that this is a random issue: the
problem only occurs if the executable was modified at least a second later
than `_CodeSignature/CodeResources`.)

So make sure to touch `_CodeSignature/CodeResources` after running codesign,
so that the next time a build occurs (with no modifications), we don't resign
needlessly.

Fixes this (random) test failure when running the MSBuild tests:

    1) Test Failure : Xamarin.iOS.Tasks.TargetTests.RebuildExecutable_NoModifications
         #1: ../MySingleView/bin/iPhoneSimulator/Debug/MySingleView.app/MySingleView
      Expected: 2017-11-30 10:04:20.000
      But was:  2017-11-30 10:04:22.000

Fixes https://github.com/xamarin/maccore/issues/592.
@spouliot spouliot added this to the xcode10 milestone Jun 12, 2018
@jstedfast
Copy link
Member

Awesome catch, thanks!

@monojenkins
Copy link
Collaborator

Build success
Build comment file:

Provisioning succeeded
Build succeeded
API Diff (from stable)
API Diff (from PR only)
Generator Diff
Test run succeeded


@spouliot spouliot merged commit bbbea58 into dotnet:xcode10 Jun 12, 2018
@spouliot spouliot deleted the xcode10-gh592 branch June 12, 2018 19:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants