summaryrefslogtreecommitdiffstats
path: root/dev/mentoring/vals-soc/ma-and-cross-toolchains.mdwn
blob: b49f5b6052b55474517722cc621002e469829126 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[[!meta title="Multiarch and cross toolchains"]]

[[← Back to VALS Semester of Code|dev/mentoring/vals-soc]]

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
  * 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: distribution, GCC, compilers, toolchains, multiarch, package management,
C, packaging