ReadyTalk / avian

[INACTIVE] Avian is a lightweight virtual machine and class library designed to provide a useful subset of Java's features, suitable for building self-contained applications.
https://readytalk.github.io/avian/
Other
1.22k stars 172 forks source link

drop MSYS build support #482

Closed dicej closed 8 years ago

dicej commented 8 years ago

Per a recent request for help on the Google group, I spent some time this past weekend trying to debug the MSYS build. The conclusion I came to is that MSYS is not worth supporting anymore. The most recent release is almost three years old, and I've been unable to find any variant with a 64-bit-target compiler that will actually install. If someone else cares enough about building Avian on MSYS to maintain it themselves, patches are welcome.

Meanwhile, let's all just use Cygwin. Perhaps someone will build a cool package manager on top of WSL and suddenly make both Cygwin and MSYS obsolete.

bigfatbrowncat commented 8 years ago

That looks like a catastrophy for us (avian-pack) cause we use this toolchain for building.

By the way, maybe you should look at MSYS2: https://msys2.github.io/

It's finely maintained and cozy. Maybe we should move to it instead of dropping MSYS totally?

dicej commented 8 years ago

@bigfatbrowncat, sorry, I forgot you guys use MSYS. I'll play around with MSYS2 and see how it goes.

dicej commented 8 years ago

By the way, @bigfatbrowncat, what is the reason you've chosen MSYS instead of Cygwin? In my experience Cygwin is much easier to use and better maintained.

dscho commented 8 years ago

@dicej think of MSYS2 (and MSYS) as a portable Cygwin: you can have more than one MSYS "installation" side by side.

Also, MSYS2 (and MSYS) are stripped down Cygwins with the intention to build non-Cygwin software. Keep in mind that Cygwin comes with a POSIX emulation layer, the Cygwin runtime. That layer is very convenient when "porting" POSIX software to Windows, especially when using fork(). It comes at a hefty performance penalty, though. The speed difference between Cygwin and pure Win32 software can easily be in the 20x-60x range. Git for Windows (maintained by yours truly) uses MSYS2 for that reason.

Note that it should be easy enough for @bigfatbrowncat to have a look at replacing MSYS support in Avian by MSYS2. (And I'll gladly answer questions, I had to do similar work when weaning Git for Windows off of MSYS and latch it onto MSYS2.)

bigfatbrowncat commented 8 years ago
  1. MSYS is much smaller
  2. MSYS is well integrated with mingw64
  3. In Cygwin there is a risk to use the default toolchain for something. It links against GPL components so the result wouldn't possibly be GPL-free.

Maybe some of these arguments are naive or outdated... It just worked from the very beginning, so we used it for long.

bigfatbrowncat commented 8 years ago

By the way - maybe Avian contributors could compose their own toolchain for Windows and publish it here (like I did for my own projects). If it's based on MSYS (or MSYS2) it would be portable, environment-agnostic and we could test all the recent builds against it. What do you think? (I hope that's better than supporting multiple GNU-based build environments on Windows)

dicej commented 8 years ago

Okay, I've opened a new PR, #483, which reverts the makefile part so you can still build with MSYS. However, I'm still removing the README.md instructions for building with MSYS because I think Cygwin is easier for new users, and I have more experience supporting it.

It's fine if you prefer MSYS, it's just not something I want to officially support. I'm happy to accept patches to fix MSYS-related bugs, of course.