guix-commits
[Top][All Lists]
Advanced

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

01/01: daemon: Allow building for armhf-linux on aarch64-linux.


From: Efraim Flashner
Subject: 01/01: daemon: Allow building for armhf-linux on aarch64-linux.
Date: Thu, 17 May 2018 13:37:51 -0400 (EDT)

efraim pushed a commit to branch master
in repository guix.

commit 162825f9653f1ba050e40f0ca96d1eb3491a9207
Author: Efraim Flashner <address@hidden>
Date:   Wed May 16 15:05:49 2018 +0300

    daemon: Allow building for armhf-linux on aarch64-linux.
    
    * nix/libstore/build.cc (canBuildLocally): Allow building armhf-linux
    builds on aarch64-linux.
    (DerivationGoal::runChild) Throw error if attempting to build for
    armhf-linux on an unsupported platform.
    * doc/guix.texi (Invoking guix build): Document how to build natively
    for armhf-linux on aarch64-linux.  Add note that on some aarch64
    machines this is unsupported.
---
 doc/guix.texi         | 9 ++++++++-
 nix/libstore/build.cc | 8 ++++++++
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index a12210d..005c059 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -5855,9 +5855,16 @@ information on cross-compilation.
 
 An example use of this is on Linux-based systems, which can emulate
 different personalities.  For instance, passing
address@hidden on an @code{x86_64-linux} system allows you
address@hidden on an @code{x86_64-linux} system or
address@hidden on an @code{aarch64-linux} system allows you
 to build packages in a complete 32-bit environment.
 
address@hidden Note
+Building for an @code{armhf-linux} system is unconditionally enabled on
address@hidden machines, although certain aarch64 chipsets do not
+allow for this functionality, notably the ThunderX.
address@hidden quotation
+
 Similarly, when transparent emulation with QEMU and @code{binfmt_misc}
 is enabled (@pxref{Virtualization Services,
 @code{qemu-binfmt-service-type}}), you can build for any system for
diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc
index 34647e6..c7f3249 100644
--- a/nix/libstore/build.cc
+++ b/nix/libstore/build.cc
@@ -1244,6 +1244,7 @@ static bool canBuildLocally(const string & platform)
     return platform == settings.thisSystem
 #if __linux__
         || (platform == "i686-linux" && settings.thisSystem == "x86_64-linux")
+        || (platform == "armhf-linux" && settings.thisSystem == 
"aarch64-linux")
 #endif
         ;
 }
@@ -2220,6 +2221,13 @@ void DerivationGoal::runChild()
                 throw SysError("cannot set i686-linux personality");
         }
 
+        if (drv.platform == "armhf-linux" &&
+            (settings.thisSystem == "aarch64-linux" ||
+             (!strcmp(utsbuf.sysname, "Linux") && !strcmp(utsbuf.machine, 
"aarch64")))) {
+            if (personality(PER_LINUX32) == -1)
+                throw SysError("cannot set armhf-linux personality");
+        }
+
         /* Impersonate a Linux 2.6 machine to get some determinism in
            builds that depend on the kernel version. */
         if ((drv.platform == "i686-linux" || drv.platform == "x86_64-linux") 
&& settings.impersonateLinux26) {



reply via email to

[Prev in Thread] Current Thread [Next in Thread]