Open orobio opened 8 months ago
I'd be open to an unofficial docker image, but I don't think hardcoding the symbols themselves is going to work. Another option might be to produce a cross-compilation SDK that supports an armv7 toolchain, which we could then integrate. @MaxDesiatov might be able to help with that.
Swift SDKs can be generated from existing toolchains. Thus we need an armv7 toolchain first (for some Linux distribution, Docker images could work too) to run the generator on it.
We don't have a full toolchain for armv7, but we do have a cross-compiling toolchain (Swift 5.10). This was created with something based on the swift-armv7 repo. However, it is for our own Yocto based system. We can have a look at creating a container image with a cross-compiling toolchain for Debian. This should be usable with the vendor-boringssl.sh script. I guess it will not work well with the SDK generator, though.
Ideally we'd have either a suitable docker container or a toolchain, I don't much mind. Either way we can add that to the build system once we're there.
A container seems like the best option for now. It fits right into the current set-up and takes away some unknowns regarding SDK creation, especially for us being unfamiliar with Swift on MacOS. I submitted a pull request with a container based solution.
Any updates on this? I wonder if the solution provided is not good enough to be used for generating symbols for armv7. Perhaps we can look into generating an SDK that is installable with swift sdk install
for example?
I’m currently on vacation so don’t have cycles to review this. But it’s on my to-do list for when I’m back.
Okay, that sounds good. I was going to look to see if we could generate an SDK for Debian armv7 anyways (interested for my own personal projects) so if that is something that would help for this I would be happy to look into it sooner rather than later. We have the ability to build for Debian armv7 and build a docker container, it's just the SDK generation that we don't know how to do yet...
Feel free to submit a PR on the corresponding repo, which already supports a few other distributions that you could use as an example.
On linux/armv7 some symbols are not properly prefixed. Building a project that includes both swift-nio-ssl and swift-crypto, results in the following conflicts:
It looks like CCryptoBoringSSL_boringssl_prefix_symbols.h is generated by vendor-boringssl.sh by building BoringSSL for various architectures and gathering all symbols. There is no official linux/armv7 docker image yet, so at the moment we can't use the same method for adding these symbols, but would it be possible to create a temporary solution, for example by hardcoding these symbols? Or is there any proper solution that could work without requiring an official linux/armv7 docker?