Cosmos icon indicating copy to clipboard operation
Cosmos copied to clipboard

[Tracking] Cross-platform support

Open jp2masa opened this issue 7 years ago • 24 comments

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)

jp2masa avatar Feb 04 '18 01:02 jp2masa

Inno Setup is windows only is it not, so we would need an installer maker for other platforms

zarlo avatar Feb 05 '18 06:02 zarlo

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.

fanoI avatar Feb 05 '18 08:02 fanoI

Nuget limits packages up to 250MB

zarlo avatar Feb 05 '18 08:02 zarlo

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).

jp2masa avatar Feb 05 '18 17:02 jp2masa

but we would still need an installer for Devkits

zarlo avatar Feb 05 '18 22:02 zarlo

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

Arawn-Davies avatar Feb 07 '18 14:02 Arawn-Davies

We don't need an installer.

jp2masa avatar Feb 07 '18 16:02 jp2masa

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).

soccermitchy avatar Feb 25 '18 22:02 soccermitchy

They already have MyGet

Project-Magenta avatar Feb 26 '18 02:02 Project-Magenta

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 .

soccermitchy avatar Feb 26 '18 02:02 soccermitchy

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.

sjmulder avatar Oct 11 '18 21:10 sjmulder

We want to ship compatible versions, and it's also easier for users if we ship these tools with the build tools package.

jp2masa avatar Oct 11 '18 22:10 jp2masa

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.

sjmulder avatar Oct 12 '18 09:10 sjmulder

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.

fanoI avatar Oct 12 '18 10:10 fanoI

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.

sjmulder avatar Oct 12 '18 10:10 sjmulder

any prediction of when will release a version for linux?

kessejones avatar Mar 20 '19 00:03 kessejones

Never or a long long time

Project-Magenta avatar Mar 21 '19 02:03 Project-Magenta

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!

RMuskovets avatar Apr 13 '19 05:04 RMuskovets

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.

RMuskovets avatar Apr 13 '19 05:04 RMuskovets

Closing this as it is not currently on the future roadmap.

charlesbetros avatar Jul 10 '20 18:07 charlesbetros

I reopen this since crossplatform is now working in the crossplatform branch

valentinbreiz avatar Jul 03 '22 18:07 valentinbreiz

Could you give an update on what still needs to be done?

quajak avatar Jul 03 '22 20:07 quajak

A tutorial about how to use, add Cosmos to dotnet new --list

valentinbreiz avatar Jul 03 '22 20:07 valentinbreiz

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.

Nebula-Developer avatar Sep 17 '22 04:09 Nebula-Developer