From mboxrd@z Thu Jan 1 00:00:00 1970 From: Efraim Flashner Subject: Re: The current state of Aarch64 on Guix Date: Fri, 21 Jul 2017 18:05:22 +0300 Message-ID: <20170721150522.GD13424@macbook42.flashner.co.il> References: <20170629183758.GD1734@macbook42.flashner.co.il> <87y3s8b1rn.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="brEuL7wsLY8+TuWz" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:47502) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dYZUi-0000Qb-0r for guix-devel@gnu.org; Fri, 21 Jul 2017 11:05:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dYZUe-00054t-14 for guix-devel@gnu.org; Fri, 21 Jul 2017 11:05:32 -0400 Content-Disposition: inline In-Reply-To: <87y3s8b1rn.fsf@gnu.org> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Ludovic =?utf-8?Q?Court=C3=A8s?= Cc: guix-devel@gnu.org --brEuL7wsLY8+TuWz Content-Type: multipart/mixed; boundary="sgneBHv3152wZ8jf" Content-Disposition: inline --sgneBHv3152wZ8jf Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sat, Jul 01, 2017 at 05:44:12PM +0200, Ludovic Court=C3=A8s wrote: > Hi Efraim, >=20 > Efraim Flashner skribis: >=20 > > It sounds like its all doom and gloom, but its not too bad. `guix > > package -A | wc -l' shows me 5341 (5208 without sablevm-classpath), > > compared with ~5600 on x86_64. >=20 > Excellent work! It looks like you=E2=80=99ve done your best without beco= ming > yourself =E2=80=9Cupstream=E2=80=9D for several packages. Very nice. >=20 > I hope we can soon get an Aarch64 box into our build farm. >=20 > BTW, would you like to turn your message into a post for the web site > (see posts/*.md in guix-artwork.git)? It would seem useful to me to > publicize your work more widely. >=20 > Thank you! >=20 > Ludo=E2=80=99. I couldn't get haunt to find commonmark, so I'm just attaching what I've written and formatted. --=20 Efraim Flashner =D7=90=D7=A4=D7=A8=D7=99=D7=9D = =D7=A4=D7=9C=D7=A9=D7=A0=D7=A8 GPG key =3D A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted --sgneBHv3152wZ8jf Content-Type: text/plain; charset=utf-8 Content-Disposition: attachment; filename="state-of-aarch64-on-guix.md" Content-Transfer-Encoding: quoted-printable title: The Current State of Aarch64 on Guix date: 2017-07-21 16:30 author: Efraim Flashner slug: state-of-aarch64-on-guix tags: architectures --- Currently Aarch64 support in guix is pretty good, as long as you don't mind compiling for yourself :). Potential downfalls are too little RAM (I limited my boards to 2GB minimum) and using an SD card. For building packages I made sure that between RAM and swap I have at least 6 GB, which I don't recall giving me any issues. There were problems with actually building the guix binary in time for the 0.13 release. It has since been fixed and I have an unoffical aarch64 binary install tarball at flashner.co.il/~efraim/. Also there is the signing key for my odroid running [guix-publish] (https://www.gnu.org/software/guix/manual/html_node/Invoking-guix-publish.h= tml#Invoking-guix-publish). The url for the guix-publish server is git.flashner.co.il:8181. General problem points/packages: - Java is currently out, sablevm-classpath doesn't compile, so currently there is no path for java. A quick check showed about 140 packages depend on sablevm-classpath. - Go: go-1.4.x doesn't support aarch64 (or mips). I have a patch against our gcc to build gccgo, and it produces a go binary, but it fails to actually build anything. When I checked Debian I saw they crosscompile their arm64 go binary from amd64. I believe there may be an issue with using gccgo and linking against glibc. - ocaml-4.01.0: Doesn't build on aarch64, haven't investigated. - julia: aarch64 is officially supported, but it has only been tested on superpowerful boards, like the ThunderX. I haven't gotten it to build yet. The issue is related to __fp16. - clisp: our current version doesn't build on aarch64, there isn't support yet. There are newer builds but no offical release yet, and I haven't tested those yet. - gprolog: No upstream support and AFAICT no one is working on it. - ldc: 1.x is supposed to support aarch64, 0.17.x, aka ldc-bootstrap, doesn't, it fails while compiling phobos, which has no aarch64 support in that version. - rust: Has upstream support, our package uses the i686 version as a bootstrap, so only i686 and x86_64 have support in guix ATM. - haskell: There is no upstream aarch64 binary to use for bootstrapping. I'm thinking of trying to use qemu-system-x86_64 as the shell and emulate x86_64 on my aarch64 board to cross-compile it to aarch64. `guix package -A ghc | wc -l' shows 293 packages. - qt-4: does not build, I've hardly put any time into it. - gnucash: The ancient webkit version they use didn't build on aarch64, I haven't tried to fix it. - kernel: While many boards do require specific patches and versions of the kernel, there have been great increases in recent kernel versions for many ARM boards. It remains to be seen how much support these boards have after the kernel has been deblobbed. It sounds like its all doom and gloom, but its not too bad. `guix package -A | wc -l' shows me 5341 (5208 without sablevm-classpath), compared with ~5600 on x86_64. Most of the difference is haskell. In addition, I personally believe that aarch64 actually has fewer FTBFS packages than armhf. #### About GNU Guix [GNU=C2=A0Guix](https://www.gnu.org/software/guix) is a transactional packa= ge manager for the GNU system. The Guix System Distribution or GuixSD is an advanced distribution of the GNU system that relies on GNU Guix and [respects the user's freedom](https://www.gnu.org/distros/free-system-distribution-guidelines.ht= ml). In addition to standard package management features, Guix supports transactional upgrades and roll-backs, unprivileged package management, per-user profiles, and garbage collection. Guix uses low-level mechanisms from the Nix package manager, except that packages are defined as native [Guile](https://www.gnu.org/software/guile) modules, using extensions to the [Scheme](http://schemers.org) language. GuixSD offers a declarative approach to operating system configuration management, and is highly customizable and hackable. GuixSD can be used on an i686 or x86_64 machine. It is also possible to use Guix on top of an already installed GNU/Linux system, including on mips64el, armv7, and aarch64. --sgneBHv3152wZ8jf-- --brEuL7wsLY8+TuWz Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAllyGCcACgkQQarn3Mo9 g1E5UhAAk9uiTZpXo1+P0ZK3A4jzadt28slE3T6rYQQfm2K3l9Bu9hl+u337L5UQ Xns5wEd2wisLXqsX7P9PJwVzJvVo0eDc/LyZ5F6fdGbh98T19mdyfG+Da/OvfRHb p/iThCJSICIz3J1HV0nRQmY1yQE0G7ZtUDQ3ojqpNQFNCHEYktjuGTZWnw8cojSx X37xdw/fIb2eSnYdiW1j/QbwKqsek0O6jyt+M5iYNXzynMf5C6+p8Rv/BMMETiZ+ l3uUkLh4RRGHXjxNVSjsI9/FNrBcnwVS+GxMFgnrWKqcmhnRLE1fTprya+tfDMd4 W0DHmEF9tZ8bELbntuqXmpusj+X+y87xinOKLouD29IgMwMBFPxhhKeCa814WPX7 xsYoV3wl4z60zQXgzoHN/5CpUuWBSJxC9bKNvUhwz7EUJbz/RrkNgZDVXzPUqUaA ICjFTlJk+v3SDw9bL2v3V0OTVdk55Hdmv2Wjtuo6Tl60jp+4EQobtMPKTgrsQ/dm MUMBJtPmQMPQi6MeKlNGmpm7r/rwHjdA7KNV1wmtFO/8r+ISGbRnVR7mNgRHClNy UZMwUaKTvZSR/vEMOlKYEtH6kE2V0IWKP6GPd7VYF1SNoXxKtmkwk9mePg6YZ0te fqztTFyGL5+3r9xK2VpweLAtr6gLaMIjfymrWIAsEtnejSzApN8= =kLeG -----END PGP SIGNATURE----- --brEuL7wsLY8+TuWz--