Cosmos
Cosmos copied to clipboard
[Tracking] Cross-platform support
This is a tracking issue, it will be updated and new items may be added based on what's left to allow building Cosmos projects on all platforms supported by .NET Core.
Cosmos
- [ ]
CosmosPaths
should be removed (requires changes in the installation process and build system, and depends on CosmosOS/Cosmos#872 too, slowly getting there).
IL2CPU
- [ ] CosmosOS/IL2CPU#30.
Native Binaries and OS Launch (Cosmos and X#)
- [ ] Build tools (NASM, ld, mkisofs,...), we can either ship binaries for all platforms or replace them by a managed solution.
- [ ] Launch hosts should have different behaviour according to the platform (in progress).
Tests
- [ ] When the other work items are completed, we should run tests for other platforms in CI too (maybe Travis?). EDIT: AppVeyor now supports Linux too (Ubuntu)
Inno Setup is windows only is it not, so we would need an installer maker for other platforms
It will be possible to use Nuget to install Cosmos? Or Cosmos is too big to use Nuget?
The Cosmos Builder has a native dependency from something that comes from Cygniwin that support only ASCII text that I find really annoying (any 'è' become a weird S with ^ on it!) so if we could replace it with a managed solution would be better.
Nuget limits packages up to 250MB
Most parts are already NuGet packages, for Windows we will use InnoSetup at least for now (VS extensions can be published to the VS marketplace).
but we would still need an installer for Devkits
https://alternativeto.net/software/izpack/ The only cross-platform installer I've found requires a Java virtual machine, would it be better to use .NET core to make a Cosmos installer?
Still keep InnoSetup on Windows platforms of course, until a .NET Core installer is doing it better
We don't need an installer.
What you could do is just host your own NuGet server, there's tools out there already, esp. for open-source projects (ie. Sonatype Nexus).
They already have MyGet
Ah, ok. Was just thinking that would get rid of size limitations.
On Sun, Feb 25, 2018 at 9:49 PM, Project-Magenta [email protected] wrote:
They already have MyGet
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/CosmosOS/Cosmos/issues/884#issuecomment-368375334, or mute the thread https://github.com/notifications/unsubscribe-auth/AAbDE9TpfNCu3VT8XLJ-NE2vx5X5zBBfks5tYhvDgaJpZM4R4Zjt .
Build tools (NASM, ld, mkisofs,...), we can either ship binaries for all platforms or replace them by a managed solution.
Or have these as a dependency. I imagine Cosmos adds MSBuild steps, no? Then just call out to these programs and document the need for them.
We want to ship compatible versions, and it's also easier for users if we ship these tools with the build tools package.
I see, but I'd think that if fully NuGet is not an option most Linux and BSD users would expect things to be available through the system package manager. Effort needn't be an obstacle – there's no need for the Cosmos project to cater to every individual platform, in fact most prefer to do their own packaging. The main thing is to have a well documented build process, ideally using common build tools.
We could ship NASM, ld and so on for MacOS where the binary ABI is stable but on Linux I fear we should rely on the user to install himself or to decide to support only a Linux distro (Ubuntu probably).
The alternative is to rewrite this GNU tools in managed language a thing that in any case we need to do in future when we will want Cosmos to be able to run applications.
or to decide to support only a Linux distro (Ubuntu probably)
Please don't do this! Make proper source releases and have distro maintainers package it. Cosmos will be able to support more platforms and maintainers will help keeping things compiling and running on their platforms by submitting patches. They'll also make sure the package is a good citizen.
Re. macOS, there's a native package installer format with command line tools. The popular Homebrew package manager/repo is also likely to pick up the project, once compatible.
any prediction of when will release a version for linux?
Never or a long long time
On Linux, the NASM, ld, and so on are available from the official repositories.
on Linux I fear we should rely on the user to install himself or to decide to support only a Linux distro (Ubuntu probably).
I think you can write a program (Bash script?) to get the distro's name, and distribute a package names list for each distro.
So, I think it's possible :) Just do it!
When the other work items are completed, we should run tests for other platforms in CI too (maybe Travis?).
Yes. I've worked with Travis, and this is easier to test on Linux platforms.
Closing this as it is not currently on the future roadmap.
I reopen this since crossplatform is now working in the crossplatform branch
Could you give an update on what still needs to be done?
A tutorial about how to use, add Cosmos to dotnet new --list
How is progress tracking on the crossplatform development? There is not much information about using this branch and I cannot build it myself. It's a shame the priority is low as many developers stay away from windows.