Building Haiku GCC Hybrid in Fedora 15 x86_64

I get an error when I jam Haiku. Apparently I am missing a file: libroot.so. It apparently isn’t being created, but I do not know why.

My process is as follows:

Acquired Source (Haiku and buildtools):

svn checkout http://svn.haiku-os.org/haiku/buildtools/trunk haiku/buildtools
svn checkout http://svn.haiku-os.org/haiku/haiku/trunk haiku/haiku

Installed software required for build:

sudo yum install subversion yasm autoconf automake texinfo flex bison gawk build-essential unzip wget zip glibc-devel
sudo yum groupinstall "Development Tools" "Development Libraries"

Unable to find direct Fedora-equivalents for these Ubuntu pkgs necessary for build from within 64-bit:
gcc-multilib g+±multilib
Assuming that these are included in “Development Libraries” …

I am confident that Jam is installed correctly. Built Jam from Haiku Jam source, as described here [https://www.haiku-os.org/guides/building/jam#build_jam]
Running jam -v returns:

Jam 2.5-haiku-20090626. OS=LINUX. Copyright 1993-2002 Christopher Seiwald.

Configuration steps:

cd $HAIKU_HEAD/haiku
mkdir generated.x86gcc2
mkdir generated.x86gcc4
cd generated.x86gcc2
linux32 ../configure --alternative-gcc-output-dir ../generated.x86gcc4 --build-cross-tools ../../buildtools/ --use-gcc-pipe

System returns:

binutils and gcc for cross compilation have been built successfully!

Continuing the Hybrid configuration:

cd ../generated.x86gcc4
linux32 ../configure --alternative-gcc-output-dir ../generated.x86gcc2 --build-cross-tools-gcc4 x86 ../../buildtools/ --use-gcc-pipe

System returns:

binutils and gcc for cross compilation have been built successfully!

Now it’s time to jam: gcc2/gcc4-secondary Hybrid

cd ../generated.x86gcc2
jam -q @nightly-raw

Oh no! it doesn’t work:

Building Haiku Nightly 
...patience...
...patience...
...patience...
...patience...
...patience...
...patience...
...patience...
...patience...
...patience...
...patience...
...patience...
...found 101152 target(s)...
...updating 13131 target(s)...
InitScript1 /home/aspirin/svn/haiku/haiku/generated.x86gcc2/haiku.image-init-vars 
MkDir1 /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects 
MkDir1 /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux 
MkDir1 /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/lib 
MkDir1 /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86 
MkDir1 /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release 
MkDir1 /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build 
MkDir1 /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot 
C++ /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/atomic.o 
C++ /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/byteorder.o 
C++ /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/errors.o 
C++ /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/fs.o 
C++ /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/fs_attr.o 
In file included from /home/aspirin/svn/haiku/haiku/src/build/libroot/fs_attr.cpp:4:0:
/home/aspirin/svn/haiku/haiku/src/build/libroot/fs_attr_generic.cpp: In function ‘std::string get_attribute_dir_path(BPrivate::NodeRef)’:
/home/aspirin/svn/haiku/haiku/src/build/libroot/fs_attr_generic.cpp:116:42: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 3 has type ‘int64’ [-Wformat]
/home/aspirin/svn/haiku/haiku/src/build/libroot/fs_attr_generic.cpp: In function ‘status_t ensure_attribute_dir_exists(BPrivate::NodeRef, const char*, int)’:
/home/aspirin/svn/haiku/haiku/src/build/libroot/fs_attr_generic.cpp:138:13: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 3 has type ‘ino_t’ [-Wformat]
C++ /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/fs_descriptors.o 
C++ /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/misc.o 
C++ /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/sem.o 
C++ /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/thread.o 
Cc /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/strlcpy.o 
/home/aspirin/svn/haiku/haiku/src/system/libroot/posix/string/strlcpy.c:11:1: warning: no previous prototype for ‘strlcpy’ [-Wmissing-prototypes]
Cc /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/strlcat.o 
/home/aspirin/svn/haiku/haiku/src/system/libroot/posix/string/strlcat.c:19:1: warning: no previous prototype for ‘strlcat’ [-Wmissing-prototypes]
Cc /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/strnlen.o 
C++ /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/KMessage.o 
Link /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/lib/libroot_build.so 
/usr/bin/ld: cannot find -lsupc++
collect2: ld returned 1 exit status

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/lib ; /home/aspirin/svn/haiku/haiku/build/scripts/rm_attrs /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/tools/rm_attrs -f "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/lib/libroot_build.so"
cc -shared -Xlinker -soname="libroot_build.so" -o "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/lib/libroot_build.so"   "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/atomic.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/byteorder.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/errors.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/fs.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/fs_attr.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/fs_descriptors.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/misc.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/sem.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/thread.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/strlcpy.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/strlcat.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/strnlen.o" "/home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/x86/release/build/libroot/KMessage.o" \
 -lsupc++ -lstdc++  \


...failed Link /home/aspirin/svn/haiku/haiku/generated.x86gcc2/objects/linux/lib/libroot_build.so ...

BUILD FAILURE:
...failed updating 1 target(s)...
...skipped 3 target(s)...
...updated 21 target(s)...

Sure enough, when I navigate to generated.x86gcc2/objects/linux/lib/, there’s nothing there. Any pointers?

[SOLVED] (sort-of)

For future reference, so no one has to go through the same headaches:

The final word is that Fedora DOES NOT provide 32-bit c/c++ build libraries in 64-bit Fedora. Additionally, trying to force-install the 32-bit libraries, if it actually works, can cause your system to malfunction in interesting ways; it is not recommended. Therefore, you must be running 32-bit Fedora to build Haiku. The “Installed Software Required for Build” section above should encompass all the requirements for building Haiku in 32-bit Fedora.

My solution was to use a Debian-based environment (Ubuntu) to build Haiku. Outside of PEBKAC, the build process worked without any issue.

Your cross tools and bintools seem good. I saw no issue with them.

Remove the objects folder you just compiled and try with:
linux32 jam -q @nightly-raw

I think Fedora already includes the 32 bit libraries. Either that or maybe you have to do something hard to get and install them.

Thanks, tonestone57. I am going to give that a try tonight; I ran the linux32 jam -q @nightly-raw command, actually, and it still failed, but I did not think to rm the objects folder beforehand. I will let you know how that turns out.

[quote=tonestone57]Your cross tools and bintools seem good. I saw no issue with them.

Remove the objects folder you just compiled and try with:
linux32 jam -q @nightly-raw

I think Fedora already includes the 32 bit libraries. Either that or maybe you have to do something hard to get and install them.[/quote]

I ran this last night. It failed, still, citing missing -lsupc++ and -lstdc++ as the reason. I have checked, both libsupc++.i686 and libstdc++.i686 are present in the system.

I am going to try building in a Debian environment.