> There's no real advantage in glibc over bionic for most of software. Even OpenOffice has been ported to bionic without much fuss.
Bionic's thread implementation (to the extent that it exists) is substantially inferior to glibc's, and it's also missing some really useful features like timerfd, CLOEXEC, epoll, etc.
Most of those can be worked around, at the cost of reduced functionality and your code becoming the same kind of #ifdef spaghetti you get with trying to support OpenBSD.
MeeGo to return next month with Jolla phone launch (The H)
Posted Oct 11, 2012 3:23 UTC (Thu) by Cyberax (✭ supporter ✭, #52523)
[Link]
Windows porting is still much more complicated.
But these missing pieces can be added later, it's not like they are fundamentally impossible.
MeeGo to return next month with Jolla phone launch (The H)
Posted Oct 11, 2012 4:00 UTC (Thu) by daniels (subscriber, #16193)
[Link]
Windows is a total red herring, since no-one's saying here that it's dead easy to run a full generic Linux stack (Wayland/X11, GStreamer, etc etc) on Windows. Which is good, because they'd be wrong if they did.
The missing pieces of Bionic aren't fundamentally impossible to add, but it's a very real barrier to using Bionic today. Fixing pthreads is really quite difficult, and the binary-only GLES/EGL drivers you tend to get rely on pthreads being the way they are today (i.e. crippled by design). Not to mention the matter of various pieces of missing pthread functionality.
Crucially though, the big problem is that upstream has no interest whatsoever in fixing either pthreads or the lack of other functionality such as timerfd, and has repeatedly stated this.
Some of the guys I work with at Collabora did a lot of work on integrating a generic Linux stack into an Android system; you can see the results at http://cgit.collabora.com/git/android/platform/external. You can see all the work that goes into every single part of the stack to make it even build on Bionic, followed by all the bending over backwards to integrate them into Android's build system, which is much more difficult.
Even then, all that's assuming that you've got a full AOSP port to work with. If all you have is the NDK, then your life is a lot more difficult, especially if you want to do things like run D-Bus services with cross-process messaging.