diff options
author | Ludovic Courtès <ludo@gnu.org> | 2013-07-07 01:02:48 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2013-07-07 01:03:03 +0200 |
commit | 8b315a6dd5f1b32d1a8a84c0f525dc4850b1e889 (patch) | |
tree | 39a54d698471bedabce12bc8765f4861b1f93980 /doc | |
parent | 401c53c46917f7e3e8c8fcf1d316f0c274279165 (diff) | |
download | guix-8b315a6dd5f1b32d1a8a84c0f525dc4850b1e889.tar guix-8b315a6dd5f1b32d1a8a84c0f525dc4850b1e889.tar.gz |
doc: Add a "Porting" section.
* HACKING (Porting the Guix distro on a new platform): Remove.
* doc/guix.texi (Porting): New node. Describe cross-compilation as the
only approach.
Diffstat (limited to 'doc')
-rw-r--r-- | doc/guix.texi | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index 4d674b1b20..c217416b0a 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -1434,6 +1434,7 @@ tools that help users exert that freedom. @menu * Package Modules:: Packages from the programmer's viewpoint. * Bootstrapping:: GNU/Linux built from scratch. +* Porting:: Targeting another platform or kernel. @end menu Building this distribution is a cooperative effort, and you are invited @@ -1588,6 +1589,35 @@ unknown, but if you would like to investigate further (and have significant computational and storage resources to do so), then let us know. +@node Porting +@section Porting to a New Platform + +As discussed above, the GNU distribution is self-contained, and +self-containment is achieved by relying on pre-built ``bootstrap +binaries'' (@pxref{Bootstrapping}). These binaries are specific to an +operating system kernel, CPU architecture, and application binary +interface (ABI). Thus, to port the distribution to a platform that is +not yet supported, one must build those bootstrap binaries, and update +the @code{(gnu packages bootstrap)} module to use them on that platform. + +Fortunately, Guix can @emph{cross compile} those bootstrap binaries. +When everything goes well, and assuming the GNU tool chain supports the +target platform, this can be as simple as running a command like this +one: + +@example +guix build --target=armv5tel-linux-gnueabi bootstrap-tarballs +@end example + +In practice, there may be some complications. First, it may be that the +extended GNU triplet that specifies an ABI (like the @code{eabi} suffix +above) is not recognized by all the GNU tools. Typically, glibc +recognizes some of these, whereas GCC uses an extra @code{--with-abi} +configure flag (see @code{gcc.scm} for examples of how to handle this.) +Second, some of the required packages could fail to build for that +platform. Lastly, the generated binaries could be broken for some +reason. + @c ********************************************************************* @node Contributing |