[haiku] Re: Haiku gcc2hybrid and software for gcc4

  • From: Urias McCullough <umccullough@xxxxxxxxx>
  • To: haiku@xxxxxxxxxxxxx
  • Date: Wed, 4 Nov 2009 14:06:09 -0800

On Wed, Nov 4, 2009 at 1:45 PM, Ryan Leavengood <leavengood@xxxxxxxxx> wrote:
> On Wed, Nov 4, 2009 at 4:38 PM,  <HubertMH@xxxxxxxxxx> wrote:
>>
>> Unfortunately official Alpha 1 was released as gcc2hybrid. All ok, but what
>> we have today? We're getting a lot of ports that uses additionally sdl gcc4
>> ports. This forces us to use both libs in haiku, and generates a really big
>> mess in haikuOS builds [ some programs works / some not ].
>
> Any hybrid build should smoothly support both gcc2 and gcc4 compiled
> programs, and that is why they are called hybrids. If it does not,
> then that is probably a bug. Of course you mention SDL libraries, and
> that makes me wonder if maybe you and others are not installing
> libraries in the correct places based on the compiler used. Those sort
> of problems should go away in the future with proper package
> management and installation support.

Yes, package management may be the only viable solution given the
current situation.

Without examples, it's hard to imagine exactly what Hubert is
complaining about.. but I can see a scenario that could be confusing
and annoying for developers and users alike:

Perhaps a C++ shared lib is ported, compiled with gcc2, and placed on
HaikuPorts for users (and developers) to download. It's important to
note that all libs currently available for download on HaikuPorts
pretty much unzip to /boot/common/lib.

This immediately makes an assumption about the target - if you use a
gcc2hybrid, any c++ libs compiled with gcc4 should reside in a gcc4/
subdir under lib if you want the runtime_loader (and gcc4 compiler) to
find them, if you use a gcc4hybrid, c++ libs the opposite is true,
except the gcc2 c++ libs should reside in a lib/gcc2/ subdirectory
instead. I highly doubt any of the .zips obtained from HaikuPorts care
about this yet.

Furthermore, using the same above scenario, if a developer needs a
shared c++ lib from HaikuPorts to port an application requiring gcc4
while the library itself hasn't been made available in a gcc4 version
yet, the developer must compile it themselves, and publish this
library somewhere (or include it with their package). Things could get
ugly quick I suspect without a proper package manager.

To make it more complicated, I read accounts of people installing
mix-and-match libs that they find on bebits, etc. many of which are
compiled for BeOS R5 and probably unzip to /boot/home/config rather
than /boot/common - I could see this causing all sorts of conflicts
while trying to get programs running - for example, using a BeOS R5
LibPak would probably be a disaster since it duplicates many of the
newer libraries already compiled natively and available for Haiku.

How can we alleviate this madness now without a package manager?
Perhaps we need some sort of temporary library manager app that can
spit out all the shared libs, what they were compiled for/with and
their versions that are found on a Haiku machine? Would something like
that be possible?

Other related posts: