From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id QOsxB4HGvWA8mwAAgWs5BA (envelope-from ) for ; Mon, 07 Jun 2021 09:10:57 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id cFlmAoHGvWAJOgAAbx9fmQ (envelope-from ) for ; Mon, 07 Jun 2021 07:10:57 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id B5A0C1B373 for ; Mon, 7 Jun 2021 09:10:55 +0200 (CEST) Received: from localhost ([::1]:37862 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lq9PS-00086Q-A7 for larch@yhetil.org; Mon, 07 Jun 2021 03:10:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38198) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lq9PH-000863-JY for guix-devel@gnu.org; Mon, 07 Jun 2021 03:10:43 -0400 Received: from flashner.co.il ([178.62.234.194]:57470) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lq9PC-000824-4f for guix-devel@gnu.org; Mon, 07 Jun 2021 03:10:43 -0400 Received: from localhost (unknown [31.210.177.125]) by flashner.co.il (Postfix) with ESMTPSA id 8162040178 for ; Mon, 7 Jun 2021 07:10:36 +0000 (UTC) Date: Mon, 7 Jun 2021 10:09:44 +0300 From: Efraim Flashner To: guix-devel@gnu.org Subject: RISCV porting effort Message-ID: Mail-Followup-To: guix-devel@gnu.org MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="yqzJg5LsoLXu7d5Q" Content-Disposition: inline X-PGP-Key-ID: 0x41AAE7DCCA3D8351 X-PGP-Key: https://flashner.co.il/~efraim/efraim_flashner.asc X-PGP-Fingerprint: A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Received-SPF: pass client-ip=178.62.234.194; envelope-from=efraim@flashner.co.il; helo=flashner.co.il X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list 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+larch=yhetil.org@gnu.org Sender: "Guix-devel" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1623049855; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:list-id:list-help:list-unsubscribe: list-subscribe:list-post; bh=xIBiOZtD2S06zlaHGFvR4XMMdY9AvS7OCXxGdFNTxgA=; b=BPwqcnAu5T9bHVBFPGbfvLZTg//UY7ys5gxgLAVKl3WK8V/w/WjV9KibrmrPdwz00Ioccq eA2xmmjmffvMqo9BlE6Uej+LHex8tG+tDA10sAoR3AxEdW51qYFvjAX7hCgnnzNmNMlqCe xBmzrxup5arh93joiSiRQy8c7cJ6b+rEvwJu0SsQ0GmBAs6A2m4aUSmyECJZGwE1qXauRp GflSKv6BChVLHYwgnR/R3MAGb76aHSmgo50W9OwFdJoGU16IDnZTv8r8XpUuk2JEZMHeNk q9VyXcn8X/s+O9Z4AUBAFvWShs38+rVrBUl5hudWG6G2V2ImITd2M+z8xcHgdg== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1623049855; a=rsa-sha256; cv=none; b=PJBvWyPDmkJJG2ggFvx6NU2yAv17Ro645fm/+B3VMdqWCtddledRGs30f1kkE2tKSzybno FIw2c0GiG8nxgOEZXilQjSUSKlC6pxEX5zp5nBZIw6ZGSRUGn+KXqVQrBe2kKpA+QeqrLE 5wzhJpKu32bILdesyNFzFxY03DCEuKsCXhAGfNteeRW5gEY0jcqo5KKvhWhYG56XNjthEm co1GjiTj29Eh6kX3ZjUsd1l22xQKhyDhVn85ovGKyTwGBlWPX+AHNFvjxHzJFIVf5zJaCv mqeqw0Zl8mnRL2jBDZryzEV2d3MTObMCssMeB3CfjC63IsejHgDWeAae/FJDDg== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; spf=pass (aspmx1.migadu.com: domain of guix-devel-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-devel-bounces@gnu.org X-Migadu-Spam-Score: -2.52 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of guix-devel-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-devel-bounces@gnu.org X-Migadu-Queue-Id: B5A0C1B373 X-Spam-Score: -2.52 X-Migadu-Scanner: scn0.migadu.com X-TUID: xp4TY1KU99d2 --yqzJg5LsoLXu7d5Q Content-Type: multipart/mixed; boundary="1Di/fHw6p7l4jHmd" Content-Disposition: inline --1Di/fHw6p7l4jHmd Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Last week my HiFive Umatched=C2=B9 board came and was quite the object of interest at the local computer store as I picked up a case, PSU and graphics card. Couple of observations about the board first: It boots very slowly. I think it takes about 5 minutes from power-on to being able to sign in at TTY1. It has an NVMe slot which I haven't populated yet. Ubuntu has an image for the board=C2=B2 which booted up just fine and I'm using, since I didn't want to spend too long getting Debian to run on the board. Upstream u-boot support was merged days ago=C2=B3 so we should be able to a= dd support to our u-boot package soon-ish=E2=84=A2. Porting Guix comes with two parts: building the bootstrap-tarballs and adding support for the new architecture in (gnu packages bootstrap). Support for riscv was added to GCC with 7.1.0 so I had to bump the bootstrap GCC to 7 (and adjust some inputs), and guile-2.0.14 didn't known the endianness of riscv64 so instead of patching it I bumped the bootstrap guile to 3.0. I uploaded my bootstrap-tarballs to my regular spot after signing them and switched over to the riscv machine. Building Guix from sources is much easier thanks to the work of Vagrant, I was able to apt install most of the dependencies on riscv. The packaged version of guile-zlib was too old in 21.04 so I built that from source (0.1.0 is available in Debian experimental), and I also had to build gnutls from source for the guile-3.0 bindings. I added the riscv binaries to (gnu packages bootstrap) and temporarily switched the raw-build function to look for 3.0 guile libraries instead of 2.0. Where I'm at right now: Downloading using the daemon (builtin:download) fails currently, it says it doesn't have permissions to open-file to write downloaded files to the store. I haven't built anything using the bootstrap binaries to see if they actually work yet. (ins)efraim@unmatched:~$ neofetch --off efraim@unmatched ---------------- OS: Ubuntu 21.04 riscv64 Host: SiFive HiFive Unmatched A00 Kernel: 5.11.0-1007-generic Uptime: 3 days, 15 hours, 57 mins Packages: 782 (dpkg) Shell: bash 5.1.4 Terminal: /dev/pts/0 CPU: (4) GPU: NVIDIA GeForce GT 730 Memory: 350MiB / 15995MiB (ins)efraim@unmatched:~$ lscpu Architecture: riscv64 Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 4 Core(s) per socket: 1 Socket(s): 1 L1d cache: 32 KiB L1i cache: 32 KiB L2 cache: 2 MiB =C2=B9https://www.sifive.com/boards/hifive-unmatched =C2=B2http://cdimage.ubuntu.com/releases/21.04/release/ =C2=B3https://source.denx.de/u-boot/u-boot/-/commit/d8729a114e1e98806cffb87= d2dca895f99a0170a --=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 --1Di/fHw6p7l4jHmd Content-Type: text/plain; charset=utf-8 Content-Disposition: attachment; filename="riscv-make-bootstrap.diff" Content-Transfer-Encoding: quoted-printable diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.= scm index bf76d5052f..ef6ea52d6e 100644 --- a/gnu/packages/make-bootstrap.scm +++ b/gnu/packages/make-bootstrap.scm @@ -94,13 +94,13 @@ for `sh' in $PATH, and without nscd, and with static NS= S modules." (mlambdaq (glibc) "Return a variant of GCC that uses the bootstrap variant of GLIBC." (package - (inherit gcc-5) + (inherit gcc-7) (outputs '("out")) ;all in one so libgcc_s is easily found (inputs `( ;; Distinguish the name so we can refer to it below. ("bootstrap-libc" ,(glibc-for-bootstrap glibc)) ("libc:static" ,(glibc-for-bootstrap glibc) "static") - ,@(package-inputs gcc-5)))))) + ,@(package-inputs gcc-7)))))) =20 (define (package-with-relocatable-glibc p) "Return a variant of P that uses the libc as defined by @@ -139,7 +139,7 @@ for `sh' in $PATH, and without nscd, and with static NS= S modules." (cons (search-path-specification (variable "CROSS_CPLUS_INCLUDE_PATH") (files '("include"))) - (package-search-paths gcc-5))))) + (package-search-paths gcc-7))))) ("cross-binutils" ,(cross-binutils target)) ,@(%final-inputs))) `(("libc" ,(glibc-for-bootstrap glibc)) @@ -461,11 +461,11 @@ for `sh' in $PATH, and without nscd, and with static = NSS modules." (define %gcc-static ;; A statically-linked GCC, with stripped-down functionality. (package-with-relocatable-glibc - (package (inherit gcc-5) + (package (inherit gcc-7) (name "gcc-static") (outputs '("out")) ; all in one (arguments - (substitute-keyword-arguments (package-arguments gcc-5) + (substitute-keyword-arguments (package-arguments gcc-7) ((#:modules modules %gnu-build-system-modules) `((srfi srfi-1) (srfi srfi-26) @@ -515,8 +515,8 @@ for `sh' in $PATH, and without nscd, and with static NS= S modules." #t)))))) (inputs `(("zlib:static" ,zlib "static") - ("isl:static" ,isl-0.18 "static") - ,@(package-inputs gcc-5))) + ("isl:static" ,isl "static") + ,@(package-inputs gcc-7))) (native-inputs (if (%current-target-system) `(;; When doing a Canadian cross, we need GMP/MPFR/MPC both @@ -529,12 +529,12 @@ for `sh' in $PATH, and without nscd, and with static = NSS modules." ("gmp-native" ,gmp) ("mpfr-native" ,mpfr) ("mpc-native" ,mpc) - ,@(package-native-inputs gcc-5)) - (package-native-inputs gcc-5)))))) + ,@(package-native-inputs gcc-7)) + (package-native-inputs gcc-7)))))) =20 (define %gcc-stripped ;; The subset of GCC files needed for bootstrap. - (package (inherit gcc-5) + (package (inherit gcc-7) (name "gcc-stripped") (build-system trivial-build-system) (source #f) @@ -869,6 +869,10 @@ for `sh' in $PATH, and without nscd, and with static N= SS modules." ;; A tarball with the statically-linked, relocatable Guile. (tarball-package %guile-static-stripped)) =20 +(define %guile-3.0-bootstrap-tarball + ;; A tarball with the statically-linked, relocatable Guile. + (tarball-package %guile-3.0-static-stripped)) + (define %mescc-tools-bootstrap-tarball ;; A tarball with statically-linked MesCC binary seed. (tarball-package %mescc-tools-static-stripped)) @@ -905,7 +909,7 @@ for `sh' in $PATH, and without nscd, and with static NS= S modules." (find-files directory "\\.tar\\.")))) %build-inputs) #t))) - (inputs `(("guile-tarball" ,%guile-bootstrap-tarball) + (inputs `(("guile-tarball" ,%guile-3.0-bootstrap-tarball) ,@(match (or (%current-target-system) (%current-system)) ((or "i686-linux" "x86_64-linux") `(("bootstrap-mescc-tools" ,%mescc-tools-bootstrap-tarb= all) --1Di/fHw6p7l4jHmd Content-Type: text/plain; charset=utf-8 Content-Disposition: attachment; filename="riscv-bootstrap.diff" Content-Transfer-Encoding: quoted-printable diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm index c598cedc0a..091ffb2d5a 100644 --- a/gnu/packages/bootstrap.scm +++ b/gnu/packages/bootstrap.scm @@ -133,18 +133,29 @@ ("tar" ,(base32 "150c8948cz8r208g6qgn2dn4f4zs5kpgbpbg6bwag6yw42rapw2l")) ("xz" - ,(base32 "0v5738idy9pqzcbrjdpxi5c6qs5m78zrpsydmrpx5cfcfzbkxzjh"))))) + ,(base32 "0v5738idy9pqzcbrjdpxi5c6qs5m78zrpsydmrpx5cfcfzbkxzjh"))) + ("riscv64-linux" + ("bash" + ,(base32 "0almlf73k6hbm495kzf4bw1rzsg5qddn7z2rf5l3d1xcapac2hj3")) + ("mkdir" + ,(base32 "0rg1amdcqfkplcy1608jignl8jq0wqzfkp430mwik3f62959gya6")) + ("tar" + ,(base32 "17d3x27qhiwk7h6ns0xrvbrq0frxz89mjjh2cdwx2rraq5x6wffm")) + ("xz" + ,(base32 "0nxn75xf386vdq3igmgm8gnyk4h4x0cm8jv71vlb2jvwxh0cyw1q"))))) =20 (define %bootstrap-executable-base-urls ;; This is where the bootstrap executables come from. '("https://git.savannah.gnu.org/cgit/guix.git/plain/gnu/packages/bootstr= ap/" "https://alpha.gnu.org/gnu/guix/bootstrap/" + "http://flashner.co.il/guix/bootstrap/" "http://lilypond.org/janneke/guix/")) =20 (define (bootstrap-executable-file-name system program) "Return the FILE-NAME part of url where PROGRAM can be found for SYSTEM." (match system ("powerpc64le-linux" (string-append system "/20210106/" program)) + ("riscv64-linux" (string-append system "/20210606/bin/" program)) ("i586-gnu" (string-append system "/20200326/" program)) (_ (string-append system "/" program "?id=3D44f07d1dc6806e97c4e9ee3e6be883cc59dc666e")))) @@ -347,6 +358,8 @@ or false to signal an error." "/20200326/guile-static-stripped-2.0.14-i586-pc-gnu.ta= r.xz") ("powerpc64le-linux" "/20210106/guile-static-stripped-2.0.14-powerpc64le-li= nux-gnu.tar.xz") + ("riscv64-linux" + "/20210606/guile-3.0.2.tar.xz") (_ "/20131110/guile-2.0.9.tar.xz")))) =20 @@ -363,6 +376,8 @@ or false to signal an error." (base32 "1mi3brl7l58aww34rawhvja84xc7l1b4hmwdmc36fp9q9mfx0lg5")) ("powerpc64le-linux" (base32 "1rnyfz5q38jyvxddj617443bnnzql4vw0mxzqpj8wz48wx4bhbq0")) + ("riscv64-linux" + (base32 "12pqmhsbbp7hh9r1bjdl14l3a4q06plpz6dcks9dysb4czay8p9f")) ("aarch64-linux" (base32 "1giy2aprjmn5fp9c4s9r125fljw4wv6ixy5739i5bffw4jgr0f9r")) ("i586-gnu" @@ -419,8 +434,8 @@ or false to signal an error." (lambda (p) (format p "\ #!~a -export GUILE_SYSTEM_PATH=3D~a/share/guile/2.0 -export GUILE_SYSTEM_COMPILED_PATH=3D~a/lib/guile/2.0/ccache +export GUILE_SYSTEM_PATH=3D~a/share/guile/3.0 +export GUILE_SYSTEM_COMPILED_PATH=3D~a/lib/guile/3.0/ccache exec -a \"~a0\" ~a \"~a@\"\n" bash out out dollar guile-real dollar))) (chmod guile #o555) @@ -435,8 +450,8 @@ cd $out ~a -dc < $GUILE_TARBALL | ~a xv =20 # Use the bootstrap guile to create its own wrapper to set the load path. -GUILE_SYSTEM_PATH=3D$out/share/guile/2.0 \ -GUILE_SYSTEM_COMPILED_PATH=3D$out/lib/guile/2.0/ccache \ +GUILE_SYSTEM_PATH=3D$out/share/guile/3.0 \ +GUILE_SYSTEM_COMPILED_PATH=3D$out/lib/guile/3.0/ccache \ $out/bin/guile -c ~s $out ~a =20 # Sanity check. @@ -498,6 +513,8 @@ $out/bin/guile --version~%" "/20170217/static-binaries.ta= r.xz") ("powerpc64le-linux" "/20210106/static-binaries-0-= powerpc64le-linux-gnu.tar.xz") + ("riscv64-linux" + "/20210606/static-binaries.ta= r.xz") ("i586-gnu" "/20200326/static-binaries-0-= i586-pc-gnu.tar.xz") (_ @@ -520,6 +537,9 @@ $out/bin/guile --version~%" ("powerpc64le-linux" (base32 "0afs2j9z2d1hjq42myz4iwjh0aqgzf59inifw87x6= b6p1z9wv92v")) + ("riscv64-linux" + (base32 + "0x0xjlpmyh6rkr51p00gp6pscgl6zjida1rsg8vk3= rinyi6rrbkg")) ("i586-gnu" (base32 "17kllqnf3fg79gzy9ansgi801c46yh9c23h4d923p= lvb0nfm1cfn")) @@ -573,6 +593,8 @@ $out/bin/guile --version~%" "/20210106/binutils-static-st= ripped-2.34-powerpc64le-linux-gnu.tar.xz") ("i586-gnu" "/20200326/binutils-static-st= ripped-2.34-i586-pc-gnu.tar.xz") + ("riscv64-linux" + "/20210606/binutils-2.34.tar.= xz") (_ "/20131110/binutils-2.23.2.ta= r.xz"))) %bootstrap-base-urls)) @@ -593,6 +615,9 @@ $out/bin/guile --version~%" ("powerpc64le-linux" (base32 "1klxy945c61134mzhqzz2gbk8w0n8jq7arwkrvz78= d22ff2q0cwz")) + ("riscv64-linux" + (base32 + "0n9qf4vbilfmh1lknhw000waakj4q6s50pnjazr51= 37skm976z5m")) ("i586-gnu" (base32 "11kykv1kmqc5wln57rs4klaqa13hm952smkc57qcs= yss21kfjprs")) @@ -653,6 +678,8 @@ $out/bin/guile --version~%" "/20210106/glibc-stripped-2.31-powe= rpc64le-linux-gnu.tar.xz") ("i586-gnu" "/20200326/glibc-stripped-2.31-i586= -pc-gnu.tar.xz") + ("riscv64-linux" + "/20210606/glibc-2.31.tar.xz") (_ "/20131110/glibc-2.18.tar.xz"))) %bootstrap-base-urls)) @@ -673,6 +700,9 @@ $out/bin/guile --version~%" ("powerpc64le-linux" (base32 "1a1df6z8gkaq09md3jy94lixnh20599p58p0s856p10xwja= qr1iz")) + ("riscv64-linux" + (base32 + "0162c4yfnz4272c9z03l28dzn5km05r7h06m3s730yiv2di= sldla")) ("i586-gnu" (base32 "14ddm10lpbas8bankmn5bcrlqvz1v5dnn1qjzxb19r57vd2= w5952")) @@ -749,6 +779,8 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \ "/20210106/gcc-stripped-5.5.0-powe= rpc64le-linux-gnu.tar.xz") ("i586-gnu" "/20200326/gcc-stripped-5.5.0-i586= -pc-gnu.tar.xz") + ("riscv64-linux" + "/20210606/gcc-7.5.0.tar.xz") (_ "/20131110/gcc-4.8.2.tar.xz"))) %bootstrap-base-urls)) @@ -769,6 +801,9 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \ ("powerpc64le-linux" (base32 "151kjsai25vz2s667bgzpisx8f281fpl3n9pxz2yrp9jln= adz3m1")) + ("riscv64-linux" + (base32 + "0w1gm1pz3nsfxi5s14sd4nlwcbwq7709lma6csgm8gm6l6= x5m7pn")) ("i586-gnu" (base32 "1j2zc58wzil71a34h7c70sd68dmqvcscrw3rmn2whq79vd= 70zvv5")) --1Di/fHw6p7l4jHmd Content-Type: text/plain; charset=utf-8 Content-Disposition: attachment; filename="bootstrap-guix-without-packaging.md" We want to build guix from source but not create native packages for all the dependencies. Therefore we will use [GNU Stow](https://www.gnu.org/software/stow/) to install the files to `/usr/local/stow` and then symlink them to `/usr/local`. http://cdimage.ubuntu.com/releases/21.04/release/ For this, on Ubuntu 21.04, we need to install some packages: ```shell sudo apt update sudo apt install git stow autoconf autopoint make g++ gettext pkg-config po4a texinfo help2man guile-3.0 guile-3.0-dev libtasn1-6-dev guile-git guile-json guile-sqlite3 guile-gcrypt guile-lzlib ``` We need to compile gnutls from source to build the guile3.0 bindings (make took 38 minutes) ```shell cd /usr/local/src wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.6/gnutls-3.6.16.tar.xz wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.6/gnutls-3.6.16.tar.xz.sig gpg --verify gnutls-3.6.16.tar.xz.sig tar xf ../gnutls-3.6.16.tar.xz cd gnutls-3.6.16 ./configure --with-included-libtasn1 \ --with-included-unistring \ --without-p11-kit \ --disable-dependency-tracking \ --with-guile-site-dir=/usr/local/share/guile/site/3.0 \ --with-guile-site-ccache-dir=/usr/local/lib/guile/3.0/site-ccache \ --with-guile-extension-dir=/usr/local/lib/guile/3.0/extensions make sudo make install prefix=/usr/local/stow/gnutls-3.6.16 cd /usr/local/stow sudo stow gnutls-3.6.16 ``` guile-zlib is actually too old, so we build it from source (make took 43 seconds) ```shell cd /usr/local/src git clone https://notabug.org/guile-zlib/guile-zlib cd guile-zlib git checkout v0.1.0 autoreconf -vfi GUILE_LOAD_PATH=/usr/local/share/guile/site/3.0:$GUILE_LOAD_PATH ./configure make sudo make install prefix=/usr/local/stow/guile-zlib-0.1.0 ct /usr/local/stow sudo stow guile-zlib-0.1.0 ``` Then we can get started with Guix itself ```shell git clone https://git.savannah.gnu.org/git/guix.git cd guix ./bootstrap GUILE_LOAD_PATH=/usr/local/share/guile/site/3.0:$GUILE_LOAD_PATH ./configure --with-courage GUILE_LOAD_PATH=/usr/local/share/guile/site/3.0:$GUILE_LOAD_PATH make ``` --1Di/fHw6p7l4jHmd-- --yqzJg5LsoLXu7d5Q Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAmC9xjUACgkQQarn3Mo9 g1FKfQ//eUIV6JmVjkPgC2xM3KPWTHZSfOYVh3+5Tg5s6eR46Pfn+5+/Y5d8nNvy 9l+RqiB/KmgodAp4JjhToMJFzNeao0MhDYk2rvVqjudsPtvCkrnDqaB3tEN/SAo1 TwjMSRmrgypDKVUe+r3AdPcSeT8b8nrgQCMagJNySANxVzADNGwrkz7TwVy8P/JT c4UnbfDm2mYSB1JdY3hWWcgbm/H6WXKtXEJkM5+WnWAC5/8ByrD6thYkUnehbNYX XYa/5uJuTwF296290jYB5YFVyn73nzX48XHmucb3x9TNimascaTk6RM4l7Rwa8hM Z5H2QnHqNilIejuA2XFVLcMAG+7+1Dro74z/XSFNBkHvUonTKnuIj6hu9i+rR9SF ke1SnIWAisiqEshpqeCNpLAIa+rlqgAT6UeQVeKdMZeqsl4qJxqhZD70aGj8qeKv iQIY412iThx/KK1z9Gzsb24OBEZ4tWkRejpUvpx9HDcDCIf96EpCz+BWzy86cd2l w6y93Ke5/slhKYD1vyvzsrhsTjPxnd/nnw8KafoJwDa3rllmbxPVxU7WS0szNcIO 6WvMhyAqWP/9SOYpB8CVgozvRhhEO9QFQetxE33xMXN/kugmdI2+qL9wWX64iw5H 7j1f5nPhCOYBy39A1sO7eon8PW4+hK/xhO16oeqKVtAjUbNW1gs= =/goi -----END PGP SIGNATURE----- --yqzJg5LsoLXu7d5Q--