5 ms·
What I want to do is not have to have a unified build system for multiple platforms and ABIs without any problem, but for some reason, to target anything apple,
by okamiueru 3y ago
What I want to do is not have to have a unified build system for multiple platforms and ABIs without any problem, but for some reason, to target anything apple, I have to use a physical apple machine.
It's absolutely abusing market position, because it ends up being that in my profession, you end up purchasing mac computers for the whole office, because then you can target all platforms without any fuss. Not because the hardware or software has any merits, but because they artificially restrict these use cases so that's the only option to target a significant market.
- borispavlovic 3y agoIt's on the expensive side, I know, but have you considered using bitrise.io?
- okamiueru 3y agoThanks for the tip. We have considered it. Its likely the place to go once we iron out development/product. Its just unfortunate that the basics of such a CI setup is trivial to set up "in-house", for everything except software targeting apple hardware.
- amelius 3y agoNot an option for many from a privacy/security standpoint.
- bryanrasmussen 3y agoI think when they started this requirement they were not in the market leader position, so it seemed less abusive to people at the time.
- amelius 3y agoYes, and I wonder why do we have Wine to run Windows stuff on Linux, but we have no equivalent to run OSX programs on Linux ... Is nobody interested in implementing the OSX APIs on Linux?
- fuu_dev 3y agoThere is a project like this: https://github.com/darlinghq/darling https://github.com/darlinghq/darling
- rollcat 3y agoIt's a very fast moving target. Apple keeps rewriting and deprecating stuff faster than they can write the documentation. As a newcomer to native macOS development, I'm sometimes struggling to even find working examples.
- ayewo 3y agoAgree. This is why WWDC videos can be immensely useful to get inside information about how things actually work and the shape of things to come.
- okamiueru 3y agoI cannot express how frustrating and unprofessional Apple comes across, that you have to sit and watch YouTube videos, to try and find some documentation for iOS development. > WWDC videos can be immensely useful to get inside information about how things actually work Imagine if we could have proper text based documentation on how things actually work? I don't know why this isn't the case. I'm sure they can afford it. Maybe it's just lack of respect for developers? "They seem to figure it out anyways"?
- ChuckNorris89 3y agoJobs made it clear in the 1997 WWDC speech[1] that Apple's priority is never the developers, but solely the customer experience and the final product, and if programing languages, frameworks or developers will be casualties along the way, then so be it. His words, not mine. [1] https://www.youtube.com/watch?v=oeqPrUmVz-o https://www.youtube.com/watch?v=oeqPrUmVz-o
- yreg 3y ago
- planede 3y agoTechnically it's possible, but possibly not legal: https://github.com/tpoechtrager/osxcross https://github.com/tpoechtrager/osxcross > Please ensure you have read and understood the Xcode license terms before continuing. According to the EULA you may only use the SDK on Apple-branded computers. But you can use Linux to cross compile to Apple. Do the Visual Studio build tools have more permissive license terms? AFAIK you can have clang-cl on Linux, but you do need a lot of the SDK for it to be useful. No experience there.
- okamiueru 3y agoIt's unfortunately not legal. Makes it also not commercially viable. Cross-compiling is nice, but if the build toolchain requires xcode, then it doesn't help all that much, since the last and most important step has to be done on apple hardware.
- planede 3y agoAt least you can build on docker runners instead of fragile shell runners on MacOS. But any benefits are probably not worth the cost of complexity of cross compilation.
- malermeister 3y agoAt least in the EU, there's precedent for click-through EULAs like the XCode one being unenforcable.
- account42 3y agoFor Windows, MinGW has an independent implementation of the complete build environment so you don't need any VS tools, import libraries or headers. For macOS there is no such complete build root but the actual tools are available - e.g. clang is always a cross-compiler able of targetting all supported architectures and for the linker Apple's own ld64 is open source and we also have lld now although I am not certain the macOS target status. > AFAIK you can have clang-cl on Linux clang-cl is a frontent for MSVC command-line compatibility - you don't even need that for cross-compiling, just -target and then whatever -fms-* extensions you need for your non-portable code. But yes, Clang doesn't come with its own SDK so you will need headers and import libraries and possibly other tooling (although the LLVM procect covers a lot).
- fredgrott 3y agoIn my case with Flutter framework, I buy cheap MS Windows or Linux box and the build children are Minis even an Apple mini. I have not priced it out yet, but I expect it to be cheaper in the long-run than buying time on cloud testing lab set ups.
- okamiueru 3y agoWe also use flutter, and have extensive native code that needs to be compiled for each platform/abi. What you describe is similar to the setup we used. However, more and more developers have opted to get a MacBook in order to avoid the hassle. It might make sense to just have a dedicated mac computer running a gitlab worker that builds the iOS stuff for us.
- batty_alex 3y ago> It's absolutely abusing market position, It’s definitely a “dick move” but, I’d have trouble calling it abusive. Having to buy expensive development kits is common in our industry
- okamiueru 3y agoThey only way to reach a significant market share is to put up with it, wouldn't that count as abusing their position? They don't have to care, because they know that developers have no choice, and in the process they increase their hardware sales? Imagine if google wanted to produce end-user hardware. Then they limit their SDK/NDK to only work on that new hardware. And, this isn't any magic or special hardware. Just an added EULA that restricts legal use, and lack of developer support. This is pretty much apple has done. Of course, doing something like that on an already established market would be suicide. But, developers would have also to a much larger extent chosen not to target Apple hardware, if it wasn't for the market share. That's why it is abusive and a case of anti-trust. They get away with it because of their market share.
- npteljes 3y agoThe fact that the practice is widespread doesn't mean that it's not abusive. It just means that most players are also abusive.
- grishka 3y agoWhat's wrong with running hackintosh in a VM if you really want to build for Apple platforms without buying a Mac? Sure the days of hackintosh are numbered because of the ARM transition, but this would work for as long as macOS runs on x86.
- heavyset_go 3y agoIt would open your or your employer's business to liability.
- matthew-wegner 3y agoYou can run unmodified macOS underneath VMWare hosts. Apple even ships a VMXNET3 driver on every Mac (since they don't really have an external driver paradigm). If you're reading this on macOS, have a look: /System/Library/Extensions/IONetworkingFamily.kext/Contents/PlugIns/AppleVmxnet3Ethernet.kext
- LegNeato 3y agoFacebook has this for builds as well for runtime (osmeta).
- fubbernuckin 3y agoI wish all developers could just up and agree not to bother with the headache and leave Apple and its walled garden to rot. Too bad we don't answer to ourselves.