* Reduce the required metadata, i.e. from one field per constant to a
single array of `IntPtr`;
* Don't store/create the `NSString` unless required, i.e. keep `IntPtr`
for comparison (but still compare them as `NSString`, not pointers);
* Avoid `NSString ==` as it will do a null check for the first paramater
everytime, and there's a (single) check already in place for this;
Size before after
--------------------------- -------- --------
Xamarin.iOS.dll (32bits) 12507136 12502528
Xamarin.iOS.dll (64bits) 12507648 12503040
Xamarin.TVOS.dll 8819712 8815104
Xamarin.WatchOS.dll 4781568 4773888
Not a huge difference *yet* but we're only starting to use, and replace
manual code with, smart enums.
The previous method of getting the base and head sha from the pull request
doesn't work if the pull request has been rebased.
Example: https://github.com/xamarin/xamarin-macios/pull/1238
Resulted in this [1]:
Fetching modified files for commit range cf07825667aa444c988c82b7e29cefc5f8ba7bcd..6aa2b9517ac35374dfa4ded41d1e2ff52778da07
git diff-tree --no-commit-id --name-only -r cf07825667aa444c988c82b7e29cefc5f8ba7bcd..6aa2b9517ac35374dfa4ded41d1e2ff52778da07
Found 20 modified file(s) in the pull request #1238.
Makefile
Versions-ios.plist.in
Versions-mac.plist.in
external/llvm
external/mono
msbuild/Xamarin.Mac.Tasks.Core/Tasks/MmpTaskBase.cs
msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.props
msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets
msbuild/Xamarin.iOS.Tasks.Core/Tasks/MTouchTaskBase.cs
msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.props
msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets
src/Makefile
src/UIKit/UIScreen.cs
src/appkit.cs
src/generator-diff.mk
tests/introspection/ApiTypoTest.cs
tests/introspection/Mac/MacApiTypoTest.cs
tests/introspection/Mac/introspection-mac.csproj
tests/xharness/Harness.cs
versions-check.csharp
which is listing way too many files.
[1]: https://jenkins.mono-project.com/job/xamarin-macios-pr-builder/2118/Test_Report/Harness.log
* Add `sealed` on types decorated with `[Sealed]` as it's already a valid
target for the attribute [1];
* Do not generated `protected .ctor (NSObjectFlag)` on sealed types;
* Do not generate virtual methods inside sealed types, which simplifies
their implementation [2]
* Add [Sealed] for RPScreenRecorder (mentioned in bug report) under
`XAMCORE_4_0`
[1] `AVPictureInPictureController` was already using `[Sealed]` even if
it was **not** supported so this has been moved under `XAMCORE_4_0`.
[2] Some of the advantages (reduced ize and registrar time) might not be
very visible as the linker/optimizer already does the same (in most cases)
References
* https://bugzilla.xamarin.com/show_bug.cgi?id=43995
- `LoggingExtensions` has a new `MTError` extension method that helps generate
an msbuild error with the proper MTxxx format.
- Added error codes for 44 msbuild errors.
- Updated `docs/website/mtouch-errors.md` and `tools/mtouch/error.cs` accordingly.
- MT7001 contains some extra documentation (troubleshooting steps).
* Add and ship file that lists the SDK versions XI supports.
Add and ship a file that lists the SDK versions of the various SDKs XI supports.
Also list the minimum SDK version for each extension.
And add a script that verifies that the current SDK version is in this file,
which should ensure every SDK version bump ends up in the file.
* [mtouch] Remove generated file from source control.
* [SdkVersions] Remove versions not in master yet.
* [SdkVersions] Improve detection script to verify that versions are between min and max, and that both min and max are in the list.
* Move things around a bit and add macOS support.
* Update Versions-mac.plist.in with extension info
* [jenkins] Add support for enabling device builds using labels.
* [xharness] Give the iOS MSBuild tests 30 minutes to finish.
* [mtouch tests] Give the BuildTestProject 10 minutes to compile each test case.
Wrench bots build the dontlink test in ~3m40, but that's apparently not enough
for the Jenkins bots (slower bots?), which time out the test after 5 minutes.
So double the timeout to 10 minutes, which will hopefully give the Jenkins
bots enough time to run the test to completion.
* [msbuild] Log warnings and errors for the ibtool --link stage as well
Fixes https://bugzilla.xamarin.com/show_bug.cgi?id=44674
* [msbuild] Only need to log warnings and errors when ibtool returns error in --link phase
* [msbuild] Don't log empty errors from ibtool
* [msbuild] Moved LogWarningsAndErrors() logic into XcodeCompilerToolTask.Compile()
* [msbuild] Tweak minor glitches
- rc is not needed anymore since we don't *yet* do anything with the error code.
- copy&paste issue on the LogError.
* [xharness] Don't crash if we can't find a simulator.
* [xharness] Create a device pair if none applicable is found.
* [xharness] Use an enum instead of string values for the target.
* [xharness] Unify the simulator selection code between Jenkins and Wrench.
* [Jenkins] Make test to write output as an xml file so that it can be parsed by the jenkins bot.
* Point to the correct Touvh.Unit repo.
* Use the available property to determine if we are being ran in Jenkins.
* Log where are test results stored.
* Add @MonkeyWrench: prefix.
* Ensure that we do set the build env in jenkins/run-tests.sh
* Do not mix Wrench with Jenkins. The reports in jenkins can be Xml, in Wrench we prefer the old style.
* Ensure that the main node of the unit tests does contain the target, that will improve the tests results reporting.
* Revert "Fix binding project LinkWithAttributes generation to prevent rebuilds" (#1018)
* Added xslt to be used to keep the old Test Reports until we move to only Jenkins reports.
* Add an extra log for the xslt transformation.
* Point to the correcto dir in jenkins.
* Deal with the xslt once we have finished rather than in a batch.
* Remove noise.
* Readd case removed in rebase.
* Fix indentation.
* Skip lock keychain.
- https://bugzilla.xamarin.com/show_bug.cgi?id=46508
Since we were previously looking for the .exe instead of the launcher, mmp
failures would come back as good and we wouldn't rebuild. What we want
to do is look for the native launcher, which we perviously were doing wrong.