Open mkehoe-Extron opened 8 months ago
It certainly looks like we should add some deduplication logic to avoid signing the same file multiple times.
As a potential short-term workaround I could implement a way for you to disable signing in parallel - that way the codesign invocation won't step on eachother's toes. Would that work for you? I could probably get this workaround in the next service release.
Any sort of work around in the interim would be great, thanks!
I've added a property you can set to limit the number of concurrent codesign processes.
Setting it to 1 will effectively disable any concurrent codesigning processes, thus avoiding any race conditions:
<PropertyGroup>
<CodesignMaxDegreeOfParallelism>1</CodesignMaxDegreeOfParallelism>
</PropertyGroup>
This won't be included in the next service release (too late for that), but it will be in the subsequent one.
@rolfbjarne Thank you for the assistance. Will this fix be available for projects using dotnet maui 7 or will this only be available for dotnet maui 8?
@rolfbjarne Thank you for the assistance. Will this fix be available for projects using dotnet maui 7 or will this only be available for dotnet maui 8?
Only for .NET 8.
We have added a framework with a lot of plugins and libraries to our application. We are seeing periodic build failures on our CI system and on local machines when building the release build.
The error always refers to failing to sign libz.dylib in the framework, which definitely exists. Looking at the verbose logging, it appears that libz.dylib is getting signed and resigned a lot of times. Each library in the framework has a reference to libz.dylib. It appears the signing process tries to follow all the dependencies of each library, which causes libz.dylib to get signed way more than needed.
Removing a bunch of unneeded files from the framework reduced the frequency of error. Passing /m:1 to the dotnet command has no effect on the issue.
Steps to Reproduce
Example command: dotnet publish -f:net7.0-maccatalyst -c:Release BuildIssue.csproj
Expected Behavior
No errors
Actual Behavior
Intermittent error that is returned: Tool /usr/bin/codesign execution finished (exit code = 1).
..libz.dylib: replacing existing signature ..libz.dylib: No such file or directory
Environment
dotnet maui 7 and 8 Tested with XCode 14.3.1, 15.0.1, and 15.1.
Build Logs
msbuild2.binlog.zip
Example Project (If Possible)