[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: emchain: Automated toolchain builder



Hector,

I'm trying again to build GCC 3.4 as I type. I've been studying your buildcross script today. I've run into some issues, and I have one or two questions/observations that you might be able to answer/clarify. Just to be clear I haven't tried the buildcross script proper yet, but am using it as a guide to try to manually build the gcc-3.4 toolchain.

In all the mirrors I've looked at, there don't seem to be any usable lib64gcc1 powerpc libraries under the /debian/pool/main/g/gcc-3.4/ directory like there are under the /debian/pool/main/g/gcc-4.1/ directory. I'm not sure that buildcross script could succeed at line 278 for the powerpc gcc-3.4 toolchain build becuase I don't think such a file exists.

This is important, however, since the gcc-3.4 build fails if the 64 bit crossed libraries are not installed (I think I have gotten around this in the past by setting in the environment 'WITHOUT_LANG=biarch') . Perhaps your script succeeds because the lib64gcc1 library is already installed from a previous gcc flavor build (like the gcc-4.1 flavor)?

So I went ahead and installed the version of lib64gcc1 from the /debian/pool/main/g/gcc-4.1/ directory with the other 64 bit libraries:

lib64gcc1_4.1.1-13_powerpc.deb
libc6-ppc64_2.3.6.ds1-7_powerpc.deb
libc6-dev-ppc64_2.3.6.ds1-7_powerpc.deb

I then did a build using the same settings as the buildcross script and was able to build most of the gcc-3.4 packages. Note that not all the packages seem to have built. Specifically, there are warnings at the end of the dpkg-buildpackage log indicating the following libraries were specified in the control file but not the files list

dpkg-genchanges: warning: package libgcc1-powerpc-cross in control file but not in files list dpkg-genchanges: warning: package lib32stdc++6-powerpc-cross in control file but not in files list dpkg-genchanges: warning: package libgcc2-powerpc-cross in control file but not in files list dpkg-genchanges: warning: package lib64gcc1-powerpc-cross in control file but not in files list dpkg-genchanges: warning: package lib64stdc++6-powerpc-cross in control file but not in files list

The only one that seems to really matter is libgcc1-powerpc-cross, upon which libstdc++6-powerpc-cross depends. This is the same package I had problems with in the past building gcc-3.4. I see that you have some special handling for libgcc1-powerpc-cross in the buildcross script when making a gcc-3.4 compiler (for instance, you don't try to install this package for gcc-3.4).

Do you know of a reason why libgcc1-powerpc-cross is not being built (or the other packages for that matter)? I note that your sandbox doesn't have one either.

I did a 'dpkg -c' on a libgcc1-powerpc-cross package and found that the only file of consequence it contains is libgcc_s.so.1. This is among a list of files noted as not included in any pakcage at the end of the log from dpkg-buildpackage (an exerpt below), so the file is built, it is just not getting into a package.

So at this point, I had a set of packages, but was missing a libgcc1-powerpc-cross package. I proceeded to install the packages using dpkg --force-depends -i ... to get around the missing dependency. I was able to build the 2.4.33 kernel successfully even though I don't have a libgcc_s.so.1 library in my powerpc compiler path. The resulting image was able to do a minimal boot on a powerpc based RPXLite DW board.

So in summary, the two issues I uncovered are:

1. The dependence of the gcc-3.4 build on the non-existent lib64gcc1_3.4.6-4_powerpc.deb crossed library package. 2. The missing libgcc1-powerpc-cross package from the gcc-3.4 dpkg-buildpackage process that prevents a clean install of the libstdc++6-powerpc-cross_3.4.6-4_i386.deb package.

Finally, I still wonder what the compiler does with the kernel headers, and if there are significant structural changes from the 2.4 kernel headers to the 2.6 kernel headers that might cause problems when running a 2.4 kernel. As you suggested, I'll need to try to build using 2.4 headers (though I can't think of a nice clean way to do this without hacking out the build dependency on the linux-kernel-headers package, which doesn't exist for 2.4 kernel headers).

If you've read this far thanks!

Any help or ideas, double thanks!

-Jim Heck

Listing installed files not included in any package:
find debian/tmp ! -type d
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/include/spe.h
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/install-tools/include/float.h
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/install-tools/include/iso646.h
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/install-tools/include/stdarg.h
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/install-tools/include/stdbool.h
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/install-tools/include/stddef.h
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/install-tools/include/varargs.h
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/install-tools/include/unwind.h
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/install-tools/include/ppc-asm.h
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/install-tools/include/altivec.h
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/install-tools/include/spe.h
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/install-tools/include/limits.h
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/install-tools/include/README
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/install-tools/fixinc.sh
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/install-tools/fixincl
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/install-tools/gsyslimits.h
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/install-tools/mkheaders
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/install-tools/mkheaders.conf
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/libgcov.a
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/64/libgcov.a
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/nof/libgcc.a
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/nof/libgcov.a
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/nof/libgcc_eh.a
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/nof/crtbegin.o
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/nof/crtend.o
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/nof/crtbeginS.o
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/nof/crtendS.o
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/nof/crtbeginT.o
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/nof/ecrti.o
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/nof/ecrtn.o
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/nof/ncrti.o
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/nof/ncrtn.o
debian/tmp/usr/lib/gcc/powerpc-linux-gnu/3.4.6/nof/crtsavres.o
debian/tmp/usr/lib/libiberty.a
debian/tmp/usr/bin/powerpc-linux-gnu-c++-3.4
debian/tmp/usr/bin/powerpc-linux-gnu-gcov-3.4
debian/tmp/usr/bin/powerpc-linux-gnu-gccbug-3.4
debian/tmp/usr/bin/powerpc-linux-gnu-gcc-3.4.6
debian/tmp/usr/powerpc-linux-gnu/lib/libgcc_s.so.1
debian/tmp/usr/powerpc-linux-gnu/lib/libgcc_s.so
debian/tmp/usr/powerpc-linux-gnu/lib/libgcc_s_nof.so.1
debian/tmp/usr/powerpc-linux-gnu/lib/libgcc_s_nof.so
debian/tmp/usr/powerpc-linux-gnu/lib/nof/libsupc++.la
debian/tmp/usr/powerpc-linux-gnu/lib/nof/libsupc++.a
debian/tmp/usr/powerpc-linux-gnu/lib/nof/libstdc++.so.6.0.3
debian/tmp/usr/powerpc-linux-gnu/lib/nof/libstdc++.so.6
debian/tmp/usr/powerpc-linux-gnu/lib/nof/libstdc++.so
debian/tmp/usr/powerpc-linux-gnu/lib/nof/libstdc++.la
debian/tmp/usr/powerpc-linux-gnu/lib/nof/libstdc++.a
debian/tmp/usr/powerpc-linux-gnu/lib/nof/libstdc++_pic.a
debian/tmp/usr/powerpc-linux-gnu/lib/nof/debug/libstdc++.so.6.0.3
debian/tmp/usr/powerpc-linux-gnu/lib/nof/debug/libstdc++.so.6
debian/tmp/usr/powerpc-linux-gnu/lib/nof/debug/libstdc++.so
debian/tmp/usr/powerpc-linux-gnu/lib/nof/debug/libstdc++.la
debian/tmp/usr/powerpc-linux-gnu/lib/nof/debug/libstdc++.a
debian/tmp/usr/powerpc-linux-gnu/lib/nof/debug/libstdc++_pic.a
debian/tmp/usr/powerpc-linux-gnu/lib/nof/libiberty.a
debian/tmp/usr/powerpc-linux-gnu/lib/libsupc++.la
debian/tmp/usr/powerpc-linux-gnu/lib/libstdc++.la
debian/tmp/usr/powerpc-linux-gnu/lib/libiberty.a
debian/tmp/usr/powerpc-linux-gnu/lib64/libgcc_s.so.1
debian/tmp/usr/powerpc-linux-gnu/lib64/libgcc_s_64.so
debian/tmp/usr/powerpc-linux-gnu/lib64/libsupc++.la
debian/tmp/usr/powerpc-linux-gnu/lib64/libsupc++.a
debian/tmp/usr/powerpc-linux-gnu/lib64/libstdc++.so.6.0.3
debian/tmp/usr/powerpc-linux-gnu/lib64/libstdc++.so.6
debian/tmp/usr/powerpc-linux-gnu/lib64/libstdc++.so
debian/tmp/usr/powerpc-linux-gnu/lib64/libstdc++.la
debian/tmp/usr/powerpc-linux-gnu/lib64/libstdc++.a
debian/tmp/usr/powerpc-linux-gnu/lib64/libstdc++_pic.a
debian/tmp/usr/powerpc-linux-gnu/lib64/debug/libstdc++.so.6.0.3
debian/tmp/usr/powerpc-linux-gnu/lib64/debug/libstdc++.so.6
debian/tmp/usr/powerpc-linux-gnu/lib64/debug/libstdc++.so
debian/tmp/usr/powerpc-linux-gnu/lib64/debug/libstdc++.la
debian/tmp/usr/powerpc-linux-gnu/lib64/debug/libstdc++.a
debian/tmp/usr/powerpc-linux-gnu/lib64/libiberty.a
debian/tmp/usr/share/info/powerpc-linux-gnu-cpp-3.4.info
debian/tmp/usr/share/info/dir
debian/tmp/usr/share/info/dir.old
debian/tmp/usr/share/info/powerpc-linux-gnu-gcc-3.4.info
debian/tmp/usr/share/info/powerpc-linux-gnu-cppinternals-3.4.info
debian/tmp/usr/share/info/powerpc-linux-gnu-gccinstall-3.4.info
debian/tmp/usr/share/info/powerpc-linux-gnu-gccint-3.4.info
debian/tmp/usr/share/man/man1/powerpc-linux-gnu-gcov-3.4.1
debian/tmp/usr/share/man/man7/fsf-funding.7
debian/tmp/usr/share/man/man7/gfdl.7
debian/tmp/usr/share/man/man7/gpl.7
debian/tmp/usr/share/locale/be/LC_MESSAGES/powerpc-linux-gnu-gcc-3.4.mo
debian/tmp/usr/share/locale/ca/LC_MESSAGES/powerpc-linux-gnu-gcc-3.4.mo
debian/tmp/usr/share/locale/da/LC_MESSAGES/powerpc-linux-gnu-gcc-3.4.mo
debian/tmp/usr/share/locale/de/LC_MESSAGES/powerpc-linux-gnu-gcc-3.4.mo
debian/tmp/usr/share/locale/de/LC_MESSAGES/libstdc++.mo
debian/tmp/usr/share/locale/el/LC_MESSAGES/powerpc-linux-gnu-gcc-3.4.mo
debian/tmp/usr/share/locale/es/LC_MESSAGES/powerpc-linux-gnu-gcc-3.4.mo
debian/tmp/usr/share/locale/fr/LC_MESSAGES/powerpc-linux-gnu-gcc-3.4.mo
debian/tmp/usr/share/locale/fr/LC_MESSAGES/libstdc++.mo
debian/tmp/usr/share/locale/ja/LC_MESSAGES/powerpc-linux-gnu-gcc-3.4.mo
debian/tmp/usr/share/locale/nl/LC_MESSAGES/powerpc-linux-gnu-gcc-3.4.mo
debian/tmp/usr/share/locale/rw/LC_MESSAGES/powerpc-linux-gnu-gcc-3.4.mo
debian/tmp/usr/share/locale/sv/LC_MESSAGES/powerpc-linux-gnu-gcc-3.4.mo
debian/tmp/usr/share/locale/tr/LC_MESSAGES/powerpc-linux-gnu-gcc-3.4.mo
make[1]: Leaving directory `/usr/src/cross-toolchain-3.4/gcc-3.4-3.4.6'


Hector Oron wrote:

Hey ! Hello !

I have not tried to build gcc against 2.4 linux-kernel-headers, you could try to do so following steps on slind toolchain webpage[1]. If you do so, it would be nice to report if it worked for you.

You can also try "buildcross" way to compile it, but in any case you''ll need patching binutils and gcc.

I don't know if using 2.4 linux-kernel-headers would make any difference. I did (with buildcross) for i386|unstable some building[2], it is at emdebian apt repository. That might help you. (I'll try to build testing[3] too as it is the one you are using). But those are against linux-kernel-headers from a 2.6 kernel.


[1] http://www.emdebian.org/docs/slind-toolchain.html
[2] http://www.emdebian.org/~zumbi/toolchain/sid-toolchain-i386/CURRENT-TOOLCHAIN/powerpc/ <http://www.emdebian.org/%7Ezumbi/toolchain/sid-toolchain-i386/CURRENT-TOOLCHAIN/powerpc/>

[3] http://www.emdebian.org/~zumbi/toolchain/testing-toolchain-i386/CURRENT-TOOLCHAIN/powerpc/ <http://www.emdebian.org/%7Ezumbi/toolchain/testing-toolchain-i386/CURRENT-TOOLCHAIN/powerpc/>



Reply to: