unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#31473] [PATCH] daemon: Allow building for armhf-linux on aarch64-linux.
@ 2018-05-16 12:10 Efraim Flashner
  2018-05-17 11:21 ` Ludovic Courtès
  0 siblings, 1 reply; 4+ messages in thread
From: Efraim Flashner @ 2018-05-16 12:10 UTC (permalink / raw)
  To: 31473; +Cc: Efraim Flashner

* 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 a771ab7ae..e64b91608 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
-@code{--system=i686-linux} on an @code{x86_64-linux} system allows you
+@code{--system=i686-linux} on an @code{x86_64-linux} system or
+@code{--system=armhf-linux} on an @code{aarch64-linux} system allows you
 to build packages in a complete 32-bit environment.
 
+@quotation Note
+Building for an @code{armhf-linux} system is unconditionally enabled on
+@code{aarch64-linux} machines, although certain aarch64 chipsets do not
+allow for this functionality.
+@end 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 34647e677..c7f32494d 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) {
-- 
2.17.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [bug#31473] [PATCH] daemon: Allow building for armhf-linux on aarch64-linux.
  2018-05-16 12:10 [bug#31473] [PATCH] daemon: Allow building for armhf-linux on aarch64-linux Efraim Flashner
@ 2018-05-17 11:21 ` Ludovic Courtès
  2018-05-17 11:27   ` Efraim Flashner
  0 siblings, 1 reply; 4+ messages in thread
From: Ludovic Courtès @ 2018-05-17 11:21 UTC (permalink / raw)
  To: Efraim Flashner; +Cc: 31473

Hello Efraim,

Efraim Flashner <efraim@flashner.co.il> skribis:

> * 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.

Awesome!  If you’ve confirmed that it works for you, go for it.

> +@quotation Note
> +Building for an @code{armhf-linux} system is unconditionally enabled on
> +@code{aarch64-linux} machines, although certain aarch64 chipsets do not
> +allow for this functionality.
> +@end quotation

Perhaps we should list a couple of chipsets known to support this?
Would it make sense?

Thank you!

Ludo’.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [bug#31473] [PATCH] daemon: Allow building for armhf-linux on aarch64-linux.
  2018-05-17 11:21 ` Ludovic Courtès
@ 2018-05-17 11:27   ` Efraim Flashner
  2018-05-17 14:08     ` Ludovic Courtès
  0 siblings, 1 reply; 4+ messages in thread
From: Efraim Flashner @ 2018-05-17 11:27 UTC (permalink / raw)
  To: ludo; +Cc: 31473



On May 17, 2018 11:21:38 AM UTC, ludo@gnu.org wrote:
>Hello Efraim,
>
>Efraim Flashner <efraim@flashner.co.il> skribis:
>
>> * 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.
>
>Awesome!  If you’ve confirmed that it works for you, go for it.
>
>> +@quotation Note
>> +Building for an @code{armhf-linux} system is unconditionally enabled
>on
>> +@code{aarch64-linux} machines, although certain aarch64 chipsets do
>not
>> +allow for this functionality.
>> +@end quotation
>
>Perhaps we should list a couple of chipsets known to support this?
>Would it make sense?
>
>Thank you!
>
>Ludo’.

The ThunderX for sure, and I've heard the expressobin might not but I'm not sure. I didn't want to have an incomplete list. The closest I've heard for a way to check is to compile and run a program called all-arch, but it's harder on a source distro.

I could change it to "... not allow this functionality, notably the ThunderX."

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [bug#31473] [PATCH] daemon: Allow building for armhf-linux on aarch64-linux.
  2018-05-17 11:27   ` Efraim Flashner
@ 2018-05-17 14:08     ` Ludovic Courtès
  0 siblings, 0 replies; 4+ messages in thread
From: Ludovic Courtès @ 2018-05-17 14:08 UTC (permalink / raw)
  To: Efraim Flashner; +Cc: 31473

Efraim Flashner <efraim@flashner.co.il> skribis:

> On May 17, 2018 11:21:38 AM UTC, ludo@gnu.org wrote:

[...]

>>Perhaps we should list a couple of chipsets known to support this?
>>Would it make sense?

[...]

> I could change it to "... not allow this functionality, notably the ThunderX."

Sounds good, go for it!

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-05-17 14:09 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-05-16 12:10 [bug#31473] [PATCH] daemon: Allow building for armhf-linux on aarch64-linux Efraim Flashner
2018-05-17 11:21 ` Ludovic Courtès
2018-05-17 11:27   ` Efraim Flashner
2018-05-17 14:08     ` Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).