[[!meta title="Multiarch and cross toolchains"]] ProteanOS intends to cross build its packages for ARM and MIPS architectures, since such systems often lack the RAM and CPU cycles to easily run native builds of larger packages. Obviously cross toolchains are needed for this. Less obviously, libraries of foreign architectures need to be installed to satisfy package build dependencies, often coinstalled alongside their native architecture versions. To support this, ProteanOS is implementing a "multiarch" system similar to that of Debian and Ubuntu. Libraries are installed into architecture-specific locations so that libraries of the same name and different architectures can be coinstalled without conflicts. Also, the package manager (opkg) needs to support the (co)installation of foreign-architecture packages and resolve dependencies across architectures. The first part of this project is to make ProteanOS support the installation of packages of foreign architectures and the multiarch coinstallation of library and development packages; this work is already in progress. The second part is to build and test cross GCC binary packages; packaging code to build cross GCC packages exists but hasn't been enabled and tested. The third part is to design and implement cross-architecture dependency resolution in opkg. Depending on the student's time and interest, the project may be extended to include a Perl package with patches and configurations to support cross building or the bootstrapping of a ProteanOS cross toolchain (including the C library) for a new architecture. * Mentor: Patrick "P. J." McDermott (pehjota in #proteanos-dev on freenode IRC, [mailto:pj+vals-soc-vps@pehjota.net](mailto:pj+vals-soc-vps@pehjota.net)) * Desirable skills: C, Python, shell command language, makefile syntax, familiarity with building GCC, Git, the specification and implementation of multiarch in Debian and Ubuntu * Project deliverables: Patches to opkg 0.2.x and upstream master branch to support multiarch coinstallation, foreign architecture selection, and cross-architecture dependency resolution; tested patches to ProteanOS's gcc-4.7 package to enable cross compiler binary packages * Difficulty: High Tags: GCC, compilers, toolchains, multiarch, package management, C, packaging