The base directory and config file name is normally set automatically
when we ask Mono to execute the Main function, but in the case of extensions,
there is no Main function, so these values are not set, causing some
features (reflection-only assembly load) to not work correctly.
https://bugzilla.xamarin.com/show_bug.cgi?id=42784
We tried disabling dlsym for all assemblies on iOS, but it turned
out to break a significant amount of customer code [1].
So re-enable it, but only for user assemblies (since we control
all assemblies we ship and can thus make sure those work with
dlsym disabled).
https://trello.com/c/guig1MF2/623-re-enable-dlsym-for-ios
Fixes the Sdk test:
Errors and Failures:
1) Test Failure : Xamarin.Linker.SdkTest.iOS_Classic
System.Security.Cryptography.Algorithms
Expected: True
But was: False
at Xamarin.Linker.SdkTest.Facades (System.String path) <0x30d4640 + 0x0006f> in <filename unknown>:0
at Xamarin.Linker.SdkTest.iOS_Classic () <0x30d2808 + 0x0004b> in <filename unknown>:0
2) Test Failure : Xamarin.Linker.SdkTest.iOS_Unified
System.Security.Cryptography.Algorithms
Expected: True
But was: False
at Xamarin.Linker.SdkTest.Facades (System.String path) <0x30d4640 + 0x0006f> in <filename unknown>:0
at Xamarin.Linker.SdkTest.iOS_Unified () <0x30d5558 + 0x0004b> in <filename unknown>:0
3) Test Failure : Xamarin.Linker.SdkTest.tvOS
System.Security.Cryptography.Algorithms
Expected: True
But was: False
at Xamarin.Linker.SdkTest.Facades (System.String path) <0x30d4640 + 0x0006f> in <filename unknown>:0
at Xamarin.Linker.SdkTest.tvOS () <0x30d55d8 + 0x0004b> in <filename unknown>:0
4) Test Failure : Xamarin.Linker.SdkTest.watchOS
System.Security.Cryptography.Algorithms
Expected: True
But was: False
at Xamarin.Linker.SdkTest.Facades (System.String path) <0x30d4640 + 0x0006f> in <filename unknown>:0
at Xamarin.Linker.SdkTest.watchOS () <0x30d5658 + 0x0004b> in <filename unknown>:0
Xcode8 SDK (for tvOS 10) marked those API with __TVOS_UNAVAILABLE making
them only available on iOS.
Since the API are not yet released in stable (C8) so we can removing
them proactively. It will be easier to add them back later (if the
situation change) than removing/obsoleting them.
PR335 [1] caused a leak and, upon verification, the same pattern was used
elsewhere too. There were also other (good) cases that now share the same
code.
[1] https://github.com/xamarin/xamarin-macios/pull/335
This tries to work around a make bug where make gets confused and ends
up in an infinite loop if a executing a target (because one of the dependencies
changed) does not actually change the timestamp of the target (while this is logically
unsound, it can certainly happen when invoking submakes to build stuff because
the supermake does not have a complete knowledge about all the dependencies
(because our makefiles aren't perfect)).
Instead of having a symlink of the entire Facades directory for
Unified, we must now create a real directory and symlink each Facade
assembly, because there's one Facade assembly that can't be shared
between Unified and Classic (System.Drawing.Primitives.dll) because
it references monotouch.dll/Xamarin.iOS.dll.
There can be circular dependencies between Objective-C classes,
so make sure we don't fail compilation when that occurs by
forward declaring any Objective-C classes/protocols.
The test case in question does not contain a circular dependency,
but the same issue occurs due to types not being generated in the
correct order (a correct order could be constructed for the test
case, but there's no general solution since circular dependencies
can exist).
https://bugzilla.xamarin.com/show_bug.cgi?id=42454
Category methods are exposed like extension methods, and the first parameter
specifies the class, which means we need to skip the first type when generating
the ObjC signature.
https://bugzilla.xamarin.com/show_bug.cgi?id=42489
* [msbuild] Replaced uses of $(_IpaOutputDir) with $(IpaPackageDir)
Fixes the unit tests
* [msbuild] Define IpaPackageDir/Name based on IpaPackagePath if defined
* [Foundation] NSUbiquitousKeyValueStore is not available on watchOS.
Fixes an issue found by the introspection tests when running on a
watchOS device.
* [monotouch-test] Fix watchOS build with regards to NSUbiquitousKeyValueStore changes.