GNU bug report logs - #48314
[PATCH] Install guix system on Raspberry Pi

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: guix-patches; Reported by: Stefan <stefan-guix@HIDDEN>; Keywords: patch; dated Sun, 9 May 2021 15:33:02 UTC; Maintainer for guix-patches is guix-patches@HIDDEN.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 17 Jul 2022 18:04:42 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 17 14:04:42 2022
Received: from localhost ([127.0.0.1]:48513 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1oD8dG-0002NG-1v
	for submit <at> debbugs.gnu.org; Sun, 17 Jul 2022 14:04:42 -0400
Received: from mr3.vodafonemail.de ([145.253.228.163]:44124)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <stefan-guix@HIDDEN>) id 1oD8dC-0002N1-NJ
 for 48314 <at> debbugs.gnu.org; Sun, 17 Jul 2022 14:04:41 -0400
Received: from smtp.vodafone.de (unknown [10.0.0.2])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 by mr3.vodafonemail.de (Postfix) with ESMTPS id 4LmCfS4C2Sz1yf5;
 Sun, 17 Jul 2022 18:04:30 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de;
 s=vfde-mb-mr2-21dec; t=1658081072;
 bh=Cx0jpDhq0wVDZv4N9/M28Z/XJ2a6iSi05QfI0UI+is8=;
 h=Content-Type:From:Subject:Date:Message-Id:References:In-Reply-To:
 To:X-Mailer:From;
 b=f1SpS9UZSKVtU5Ceu6RuCyNsLKn9QmgaJtEQVOQxUWhyIEJCqc7vIlkgFwQuzbuMg
 LQq1sFtnj6wdLYRM4CMQ/gzzuCz4kTLvRMVTBH4euwa7+jGY9jqMB5oMQ6x4cN91Ju
 cSRCj2v6MuytkMPkp3ZFXhyhenTamFPdxPo25n3s=
Received: from smtpclient.apple (aftr-62-216-210-100.dynamic.mnet-online.de
 [62.216.210.100])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp.vodafone.de (Postfix) with ESMTPSA id 4LmCfG5pMFzMmvN;
 Sun, 17 Jul 2022 18:04:19 +0000 (UTC)
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
From: Stefan <stefan-guix@HIDDEN>
Mime-Version: 1.0 (1.0)
Subject: Re: [bug#48314] Patches to install guix system on Raspberry Pi
Date: Sun, 17 Jul 2022 20:04:19 +0200
Message-Id: <CFA3B77F-C576-4BC4-A839-AE311DC587E6@HIDDEN>
References: <878rork63k.fsf@contorta>
In-Reply-To: <878rork63k.fsf@contorta>
To: Vagrant Cascadian <vagrant@HIDDEN>
X-Mailer: iPhone Mail (19F77)
X-purgate-type: clean
X-purgate: clean
X-purgate-size: 327
X-purgate-ID: 155817::1658081069-1C2F12A7-3E65B3BC/0/0
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Danny Milosavljevic <dannym@HIDDEN>, 48314 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hi Vagrant!

> So if it does not find that one file, what do you do?

Valid point. Actually I would have copied back a working U-Boot version from=
 the NFS server side. ;-)

> it is my understanding that Guix prefers to go with upstream defaults

Would you mind removing that line if committing?


Bye

Stefan=




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 17 Jul 2022 17:21:50 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 17 13:21:50 2022
Received: from localhost ([127.0.0.1]:48472 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1oD7xm-0001HP-1I
	for submit <at> debbugs.gnu.org; Sun, 17 Jul 2022 13:21:50 -0400
Received: from cascadia.aikidev.net ([173.255.214.101]:56244)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <vagrant@HIDDEN>) id 1oD7xj-0001HD-K1
 for 48314 <at> debbugs.gnu.org; Sun, 17 Jul 2022 13:21:49 -0400
Received: from localhost (unknown [IPv6:2600:3c01:e000:21:7:77:0:20])
 (Authenticated sender: vagrant@HIDDEN)
 by cascadia.aikidev.net (Postfix) with ESMTPSA id 8542B1AA7B;
 Sun, 17 Jul 2022 10:21:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=debian.org;
 s=1.vagrant.user; t=1658078500;
 bh=pExzRNDhDz3/J1nTQQSshnyWyv85qsOvQM1fPB+Xr4c=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=BAkw4AopjHJ9qDj5UpwSOTzWpxQwZuS5jmNRFBmhHUHGTAv0oxskzKFjX6Ia9ab9E
 /TIJo2gI288UJlflwhPceLkAZeYBdMe+2BSWwDplPuuXyRN8/NPyXGCMBH/bGC1fUt
 bWXgPjGFhCHZ9tJA63eFiciTp24tZoYZOcbDMW3pfgMjPTmcyoYd5r+u0S/dwufNP2
 DU0Uv+5rr0ws/ZtLCOqHpIrdewuY2aRXwbey7OW36YARWbfpiGmvsARbRuTqZF+AQZ
 wOedn97QQjiXe2NNYrm67zj67RPbX31rOkIe8g/E1vkunzzvNBmtZegvzk0qvqK+gM
 PCa0SYJi9xHaA==
From: Vagrant Cascadian <vagrant@HIDDEN>
To: Stefan <stefan-guix@HIDDEN>
Subject: Re: [bug#48314] Patches to install guix system on Raspberry Pi
In-Reply-To: <3FFD5D1E-3FB9-4EB9-907A-8502519FF7FE@HIDDEN>
References: <20210619211026.5eb44073@HIDDEN>
 <897B7FF7-24C1-4B96-8441-415596267E99@HIDDEN>
 <BDB9E76C-37FF-4033-81C1-9D5F0AA575F2@HIDDEN>
 <AFD31F40-6691-4B53-ACA9-7F821D139124@HIDDEN>
 <87zgq7ajt5.fsf@ponder>
 <3FFD5D1E-3FB9-4EB9-907A-8502519FF7FE@HIDDEN>
Date: Sun, 17 Jul 2022 10:21:35 -0700
Message-ID: <878rork63k.fsf@contorta>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-=";
 micalg=pgp-sha512; protocol="application/pgp-signature"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Danny Milosavljevic <dannym@HIDDEN>, 48314 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

On 2022-07-17, Stefan wrote:
>>> +(define-public %u-boot-rpi-efi-configs
>>> +  '("CONFIG_OF_EMBED=3D"
>>> +    "CONFIG_OF_BOARD=3Dy"
>>> +    "CONFIG_BOOTDELAY=3D0"))
>>=20
>> This is surely a matter of opinion, but CONFIG_BOOTDELAY=3D0 is kind of
>> nasty; it makes it nearly impossible to debug from a u-boot prompt if
>> needed. The default is probably "2" ... long enough to actually
>> interrupt it, but short enough that it shouldn't cause huge delays in
>> the boot process...
>>=20
>> I know grub-efi will add it's own delay, so in a working environment,
>> this just seems like an additional two seconds, but u-boot's EFI
>> implementation is changing often enough that I wouldn't be surprised if
>> you need to occasionally debug something.
>
> During all the months of work to get Guix System booting over network
> with U-Boot and GRUB, there was no need for me to play around on the
> U-Boot prompt.
...
> Well, in this constellation U-Boot just needs to find and load the
> efi/boot/bootaa64.efi file. It doesn=E2=80=99t need to load device-tree f=
iles
> or care for overlays. It doesn=E2=80=99t need to load other stuff like SP=
L or
> other images. Its only purpose is to impose an EFI interface and to
> load GRUB. So the benefit of the U-Boot prompt is quite limited.

So if it does not find that one file, what do you do?


> Also other distributions like openSUSE use U-Boot as EFI firmware, so
> I think the basic EFI functionality is tested quite well.

Sure, it has improved greatly.


> My preference is to not bother pure users with a delayed boot
> time. However, I changed it to CONFIG_BOOTDELAY=3D1.

Well, from my perspective, this is obviously significantly less bad that
0 seconds...

In general, it is my understanding that Guix prefers to go with upstream
defaults, unless there is a strong argument otherwise. I do not
personally see this as warranting a difference from upstream defaults to
gain 1 or 2 seconds of boot time.


live well,
  vagrant

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCYtRFIAAKCRDcUY/If5cW
qkV1AQD5YpgU1NoDSozQ9h76dRLSKujel1If4JX8OoYBxJIeHQEAlkUgCXjX2S4i
JAov6lkPch3hjAfJst0RxMN6yGAmjQQ=
=z7Bo
-----END PGP SIGNATURE-----
--=-=-=--




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 17 Jul 2022 16:48:44 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 17 12:48:44 2022
Received: from localhost ([127.0.0.1]:48438 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1oD7Rk-0000Sl-14
	for submit <at> debbugs.gnu.org; Sun, 17 Jul 2022 12:48:44 -0400
Received: from mr3.vodafonemail.de ([145.253.228.163]:51430)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <stefan-guix@HIDDEN>) id 1oD7Rh-0000SX-Us
 for 48314 <at> debbugs.gnu.org; Sun, 17 Jul 2022 12:48:42 -0400
Received: from smtp.vodafone.de (unknown [10.0.0.2])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 by mr3.vodafonemail.de (Postfix) with ESMTPS id 4Lm9yr0fHYz1ycx;
 Sun, 17 Jul 2022 16:48:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de;
 s=vfde-mb-mr2-21dec; t=1658076516;
 bh=kjw+ohokM28VqdlG6b2J9U13FsPdhVY0xILO2Q+CTbY=;
 h=Content-Type:Subject:From:In-Reply-To:Date:Message-Id:References:
 To:X-Mailer:From;
 b=CLOjuLG1cdSZvEiyRsCYhUm9EaSQhHioINTMhiyUUudIbs+udQpdW75p5bYfO/k8U
 6yp6f35qWOekGRY1OHYfbGLbWx9IhCYUhmLvH4JNds3b/KwR0m2DtEliDlJMEBm23X
 B9OWd+KeGvcExp+Eg0SSusHzg8rrcZY62SGWmY+Q=
Received: from smtpclient.apple (aftr-62-216-210-100.dynamic.mnet-online.de
 [62.216.210.100])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (No client certificate requested)
 by smtp.vodafone.de (Postfix) with ESMTPSA id 4Lm9yZ5K39z9tDb;
 Sun, 17 Jul 2022 16:48:19 +0000 (UTC)
Content-Type: text/plain;
	charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\))
Subject: Re: [PATCH v3] Install guix system on Raspberry Pi
From: Stefan <stefan-guix@HIDDEN>
In-Reply-To: <mPtBIj5SjqPth3NiS5EX4gEUUIO-Esboo3GtsDmm2YXjyuGmt_nFuyUf4ud-LbamW1JfMqWjOUkrLMnzZjWbcnZjpqRgHiu7X5cS2C3PY0g=@protonmail.com>
Date: Sun, 17 Jul 2022 18:48:05 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <AAE2B273-DF62-467E-8827-34FC58335D38@HIDDEN>
References: <87tuadhq3d.fsf@contorta>
 <81366405-13FD-4F0E-8180-4DFCB16A6C1A@HIDDEN>
 <87zgk5b56p.fsf@contorta>
 <mPtBIj5SjqPth3NiS5EX4gEUUIO-Esboo3GtsDmm2YXjyuGmt_nFuyUf4ud-LbamW1JfMqWjOUkrLMnzZjWbcnZjpqRgHiu7X5cS2C3PY0g=@protonmail.com>
To: phodina <phodina@HIDDEN>
X-Mailer: Apple Mail (2.3696.100.31)
X-purgate-type: clean
X-purgate: clean
X-purgate-size: 1175
X-purgate-ID: 155817::1658076514-C6602208-A3E35430/0/0
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Vagrant Cascadian <vagrant@HIDDEN>, dannym@HIDDEN,
 =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>, 48314 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hi!

Sorry for tho long period of silence.=20

> do you need help with the patches?

Actually not with the patches, but with building and testing.

I was affected by the lack of substitutes for aarch64. Building with =
only 1 GB RAM and swap space is a pain.

For building Guix I figured out that building only sub-targets like =
make-core-go, make-packages-go, etc. helps. But this way I missed to do =
a =E2=80=9Cmake all=E2=80=9D and was wondering a lot and for long time =
about errors because silently a wrong /gnu/stor/=E2=80=A6-guix-module-unio=
n/ got used.

I have a set of patches to fix or disable tests, just because of too =
less RAM, too less computing-power and an NFS root file-system.

Currently one test of glib is failing. So I can=E2=80=99t proof that my =
patches lead to a working system on current Guix.

> Also should we provide some patches to the upstream kernel in Guix? =
[1]
>=20
> [1] https://github.com/lategoodbye/rpi-zero/issues/43

I=E2=80=99m far from a point to care for patches to the kernel. I=E2=80=99=
d be glad, if the linux-libre kernel is able to run a minimal Guix =
System. :-)


Bye

Stefan





Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 17 Jul 2022 16:48:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 17 12:48:33 2022
Received: from localhost ([127.0.0.1]:48435 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1oD7RY-0000SM-Jb
	for submit <at> debbugs.gnu.org; Sun, 17 Jul 2022 12:48:32 -0400
Received: from mr5.vodafonemail.de ([145.253.228.165]:49454)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <stefan-guix@HIDDEN>) id 1oD7RU-0000S4-3G
 for 48314 <at> debbugs.gnu.org; Sun, 17 Jul 2022 12:48:31 -0400
Received: from smtp.vodafone.de (unknown [10.0.0.2])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 by mr5.vodafonemail.de (Postfix) with ESMTPS id 4Lm9yZ0s7Pz1y4K;
 Sun, 17 Jul 2022 16:48:19 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de;
 s=vfde-mb-mr2-21dec; t=1658076502;
 bh=WnhjxYBfoIVdO0OLead7qS7TP7pq9z7ter/MS0jJvLc=;
 h=Content-Type:Subject:From:In-Reply-To:Date:Message-Id:References:
 To:X-Mailer:From;
 b=TaGi9hU+cvYFa9Ja9mjd4mIGWpjhsfRyDd8co2w3ghDV6D44l9qSOgsq+Smma/NGm
 XN3Dix0SvSNjlXFYeW03OFEOsyulQmdjewz7IbfzjzWSLMI2LLbM6X4cUttPrNeash
 ZQNYeHstkNJu12vjLACarwbMU6GCKqNTqJQ1R+X4=
Received: from smtpclient.apple (aftr-62-216-210-100.dynamic.mnet-online.de
 [62.216.210.100])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (No client certificate requested)
 by smtp.vodafone.de (Postfix) with ESMTPSA id 4Lm9yN5SFSz9v2y;
 Sun, 17 Jul 2022 16:48:09 +0000 (UTC)
Content-Type: text/plain;
	charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\))
Subject: Re: [bug#48314] Patches to install guix system on Raspberry Pi
From: Stefan <stefan-guix@HIDDEN>
In-Reply-To: <87zgq7ajt5.fsf@ponder>
Date: Sun, 17 Jul 2022 18:47:58 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <3FFD5D1E-3FB9-4EB9-907A-8502519FF7FE@HIDDEN>
References: <20210619211026.5eb44073@HIDDEN>
 <897B7FF7-24C1-4B96-8441-415596267E99@HIDDEN>
 <BDB9E76C-37FF-4033-81C1-9D5F0AA575F2@HIDDEN>
 <AFD31F40-6691-4B53-ACA9-7F821D139124@HIDDEN>
 <87zgq7ajt5.fsf@ponder>
To: Vagrant Cascadian <vagrant@HIDDEN>
X-Mailer: Apple Mail (2.3696.100.31)
X-purgate-type: clean
X-purgate: clean
X-purgate-size: 2002
X-purgate-ID: 155817::1658076498-C6602208-7D36E43E/0/0
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Danny Milosavljevic <dannym@HIDDEN>, 48314 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hi Vagrant!

>> +(define-public %u-boot-rpi-efi-configs
>> +  '("CONFIG_OF_EMBED=3D"
>> +    "CONFIG_OF_BOARD=3Dy"
>> +    "CONFIG_BOOTDELAY=3D0"))
>=20
> This is surely a matter of opinion, but CONFIG_BOOTDELAY=3D0 is kind =
of
> nasty; it makes it nearly impossible to debug from a u-boot prompt if
> needed. The default is probably "2" ... long enough to actually
> interrupt it, but short enough that it shouldn't cause huge delays in
> the boot process...
>=20
> I know grub-efi will add it's own delay, so in a working environment,
> this just seems like an additional two seconds, but u-boot's EFI
> implementation is changing often enough that I wouldn't be surprised =
if
> you need to occasionally debug something.

During all the months of work to get Guix System booting over network =
with U-Boot and GRUB, there was no need for me to play around on the =
U-Boot prompt. I was even affected by a bug=C2=B9 preventing U-Boot to =
detect my keyboard at all. The actual problem with that bug was not that =
the U-Boot prompt was unusable, but that GRUB relies on the keyboard =
functionality of U-Boot, so I couldn=E2=80=99t debug boot problems e.g. =
due to kernel argument problems in GRUB.

Well, in this constellation U-Boot just needs to find and load the =
efi/boot/bootaa64.efi file. It doesn=E2=80=99t need to load device-tree =
files or care for overlays. It doesn=E2=80=99t need to load other stuff =
like SPL or other images. Its only purpose is to impose an EFI interface =
and to load GRUB. So the benefit of the U-Boot prompt is quite limited.

Also other distributions like openSUSE use U-Boot as EFI firmware, so I =
think the basic EFI functionality is tested quite well. My preference is =
to not bother pure users with a delayed boot time. However, I changed it =
to CONFIG_BOOTDELAY=3D1.


Bye

Stefan


=C2=B9 =
<https://en.opensuse.org/HCL:Raspberry_Pi3#I_cannot_use_keyboard_in_U-Boot=
_and_Grub_but_it_works_in_Linux>





Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 17 Jul 2022 16:48:17 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 17 12:48:17 2022
Received: from localhost ([127.0.0.1]:48432 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1oD7RJ-0000Rr-8u
	for submit <at> debbugs.gnu.org; Sun, 17 Jul 2022 12:48:17 -0400
Received: from mr6.vodafonemail.de ([145.253.228.166]:45322)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <stefan-guix@HIDDEN>) id 1oD7RH-0000RJ-24
 for 48314 <at> debbugs.gnu.org; Sun, 17 Jul 2022 12:48:15 -0400
Received: from smtp.vodafone.de (unknown [10.0.0.2])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 by mr6.vodafonemail.de (Postfix) with ESMTPS id 4Lm9yK52kCz1xy4;
 Sun, 17 Jul 2022 16:48:09 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de;
 s=vfde-mb-mr2-21dec; t=1658076489;
 bh=W/hUwFds2+w70Zq0BCdw7BfLfdyhhVZM2YWzmuSrpVo=;
 h=Content-Type:Subject:From:In-Reply-To:Date:Message-Id:References:
 To:X-Mailer:From;
 b=bej7t9N4KM3sWbUKWm10fhY+hf0kT/SR+voHP8m/jpcSXDTOOODKj9ez3DXUkdQsl
 in/6VcyOPYD9YCVEiLHW5fIwN6KjM25hdiuBxMjJid4mOml36Nc7/L6oekOCC/TbvA
 9+JpDuTJi0rBOltgvlsygUWRxLzebwWWseGZ0BDY=
Received: from smtpclient.apple (aftr-62-216-210-100.dynamic.mnet-online.de
 [62.216.210.100])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (No client certificate requested)
 by smtp.vodafone.de (Postfix) with ESMTPSA id 4Lm9yC3jVNz9v2S;
 Sun, 17 Jul 2022 16:48:00 +0000 (UTC)
Content-Type: text/plain;
	charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\))
Subject: Re: [bug#48314] Patches to install guix system on Raspberry Pi
From: Stefan <stefan-guix@HIDDEN>
In-Reply-To: <87a6i7c3sw.fsf@ponder>
Date: Sun, 17 Jul 2022 18:47:52 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <86D908EE-955D-4EA1-AE2A-4072BB40468D@HIDDEN>
References: <20210619211026.5eb44073@HIDDEN>
 <897B7FF7-24C1-4B96-8441-415596267E99@HIDDEN>
 <BDB9E76C-37FF-4033-81C1-9D5F0AA575F2@HIDDEN>
 <AFD31F40-6691-4B53-ACA9-7F821D139124@HIDDEN>
 <87a6i7c3sw.fsf@ponder>
To: Vagrant Cascadian <vagrant@HIDDEN>
X-Mailer: Apple Mail (2.3696.100.31)
X-purgate-type: clean
X-purgate: clean
X-purgate-size: 2222
X-purgate-ID: 155817::1658076489-C6602208-3EE4B9FD/0/0
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Danny Milosavljevic <dannym@HIDDEN>, 48314 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hi Vagrant!

> u-boot-file appears to be hard-coded; there may be other boards which =
use a different u-boot artifact.

If you build U-Boot, there is also u-boot-nodtb.bin. Therefore the =
u-boot-file is a function argument to the public =
make-preinstalled-u-boot-package to allow a selection.

> Also, why return a single file, rather than just building a package =
and then allowing other functions to pick the appropriate file out of =
the resulting package?

The reason is in the patch set 1: There is (already in master) a =
bootloader-profile which is able to collect a chain of bootloaders. The =
version in master allows a collection of files from packages, but =
requires a special installer. I figured out that the usage of the =
bootloader-profile gets much easier if the packages to chain only =
contain preselected files. =46rom a user perspective the content of a =
complete bootloader-package is kind of a blackbox. When writing an =
operating-system configuration it is easy to figure out the right U-Boot =
package name, but no one expects to be required to install U-Boot in his =
profile to figure out that the u-boot.bin is below the libexec directory =
and that he is even required to care about moving the file around in =
directory hierarchies.=20

However, you are right that the make-preinstalled-u-boot-package could =
take another U-Boot package as argument, being that other function to =
pick the appropriate file. Then it might be useful for other boards, =
too. The only trouble to solve then is a proper package name. Currently =
using make-preinstalled-u-boot-package the result of make-u-boot-package =
is only an intermediate package prefixed with =E2=80=9C-complete=E2=80=9D.=
 Then a preinstalled package needs a suffix like =E2=80=9C-bin=E2=80=9D. =
I think this makes sense, I will change it.

> I wondered "why does it have to be cross-compiled" but then realized =
that came from the existing make-u-boot-package function.=20

Yes, that=E2=80=99s right, it is a copy from the other function. It will =
be gone with the re-work.

> I've mostly been building u-boot natively these days. :)

Me too, exclusively. :-)


Bye

Stefan





Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 17 Jul 2022 16:48:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 17 12:48:12 2022
Received: from localhost ([127.0.0.1]:48429 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1oD7RD-0000RZ-RF
	for submit <at> debbugs.gnu.org; Sun, 17 Jul 2022 12:48:12 -0400
Received: from mr6.vodafonemail.de ([145.253.228.166]:45166)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <stefan-guix@HIDDEN>) id 1oD7R9-0000QJ-0l
 for 48314 <at> debbugs.gnu.org; Sun, 17 Jul 2022 12:48:10 -0400
Received: from smtp.vodafone.de (unknown [10.0.0.2])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 by mr6.vodafonemail.de (Postfix) with ESMTPS id 4Lm9y83M4cz1xr2;
 Sun, 17 Jul 2022 16:48:00 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de;
 s=vfde-mb-mr2-21dec; t=1658076480;
 bh=KgXm98wsCHaKDyNZ+lCPhEs+uCpg7v8RscfDP4iVz/g=;
 h=Content-Type:Subject:From:In-Reply-To:Date:Message-Id:References:
 To:X-Mailer:From;
 b=XJUbUUsmZ83EGPfJBRz7zgHkYv4/7H6Yq70cl3mbUnGRbGiZbVm5qlkO/q2FJHBk3
 sLqr3BdDoyg44/ssQhEFSDutB2aDS9D6FVLj17PJOzPO0IDH2jJ0FgqrkkXywIqkSK
 FLiN55saorBMBUb2FuJPOfH7QIUU8pTZGTsSX5hc=
Received: from smtpclient.apple (aftr-62-216-210-100.dynamic.mnet-online.de
 [62.216.210.100])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (No client certificate requested)
 by smtp.vodafone.de (Postfix) with ESMTPSA id 4Lm9xy6zgbz9v2R;
 Sun, 17 Jul 2022 16:47:47 +0000 (UTC)
Content-Type: text/plain;
	charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\))
Subject: Re: [bug#48314] Patches to install guix system on Raspberry Pi
From: Stefan <stefan-guix@HIDDEN>
In-Reply-To: <87czn4aq2s.fsf@ponder>
Date: Sun, 17 Jul 2022 18:47:47 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <E001BE99-09CF-4C11-85BD-1BE9D3E0DD80@HIDDEN>
References: <20210619211026.5eb44073@HIDDEN>
 <897B7FF7-24C1-4B96-8441-415596267E99@HIDDEN>
 <BDB9E76C-37FF-4033-81C1-9D5F0AA575F2@HIDDEN>
 <AFD31F40-6691-4B53-ACA9-7F821D139124@HIDDEN>
 <87czn4aq2s.fsf@ponder>
To: Vagrant Cascadian <vagrant@HIDDEN>
X-Mailer: Apple Mail (2.3696.100.31)
X-purgate-type: clean
X-purgate: clean
X-purgate-size: 1713
X-purgate-ID: 155817::1658076480-C6602208-C4C81094/0/0
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Stefan <stefan-guix@HIDDEN>,
 Danny Milosavljevic <dannym@HIDDEN>, 48314 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hi Vagrant!


> The u-boot-rpi-0-w and u-boot-rpi variants are ARMv6 boards, and =
Guix's armhf baseline is ARMv7, so those won't work with guix system.

Uups. I will remove them.

> In other words, keep names consistent with the upstream defconfig they =
are based on.

OK

> I presume you didn't add the aarch64 rpi_3 and rpi_4 variants because =
they are supported by rpi_arm64?

Yes.

> I think without addressing the rest of the patch series, adding to =
guix master the following packages could make the remaining diff =
smaller:
>=20
>  u-boot-rpi-2 (rpi_2_defconfig)
>  u-boot-rpi-3-32b (rpi_3_32b_defconfig)
>  u-boot-rpi-4-32b (rpi_4_32b_defconfig)
>  u-boot-rpi-arm64 (rpi_arm64_defconfig)
>=20
> We wouldn't have a relevent installation configuration, but at least =
it would allow building them and manually copying u-boot.bin to the =
firmware partition=E2=80=A6

Well, in the past I tried to get one patch into master before sending =
the next for review. Doing so I got the comment that it would be hard to =
test the changes, as they are not complete and don=E2=80=99t build a =
system. :-)

> Which leads me to wonder, why have the name and description argument =
at all, when you could just inherit and set the name, like done with the =
boneblack?

For the same board name there will be two packages, the =E2=80=9Cnormal=E2=
=80=9D and an EFI variant. Having name-suffix and additional-description =
fields eases appending. I will change the parameters accordingly. Having =
these parameters also avoids to copy the U-Boot description, like done =
for the boneblack. A while back you fixed that description three times. =
:-)


Bye

Stefan





Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 2 Jul 2022 06:40:35 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jul 02 02:40:35 2022
Received: from localhost ([127.0.0.1]:39576 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o7Wny-0003Zj-QF
	for submit <at> debbugs.gnu.org; Sat, 02 Jul 2022 02:40:34 -0400
Received: from mail-4322.protonmail.ch ([185.70.43.22]:44467)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <phodina@HIDDEN>) id 1o7Wnw-0003ZN-8N
 for 48314 <at> debbugs.gnu.org; Sat, 02 Jul 2022 02:40:33 -0400
Date: Sat, 02 Jul 2022 06:40:23 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;
 s=protonmail3; t=1656744026; x=1657003226;
 bh=RvsLX/uZhftcYmCsxwfQ5jsXxzDYdx0wuVIAR4cdIOA=;
 h=Date:To:From:Cc:Reply-To:Subject:Message-ID:In-Reply-To:
 References:Feedback-ID:From:To:Cc:Date:Subject:Reply-To:
 Feedback-ID:Message-ID;
 b=QxcCnv0ollqhN1WT3iJerEgJnb07r1suemXH1Fb2LYVwzVFh3k2aSSBO8XsTe9zNJ
 2lcjrU8npTfD/iPkJZG9lGG7zAzfRrXP6/Ok2MkG+I3h5usXLe0F+SzID2+lsYK+vh
 f5M5AJD6PapvAtKXvO2jo3C4nphrrgryqqRMMXU/rGdZ5lW+v8mBFe0QiyNLS8ty9o
 2xzWel/QjYBqOfY439WyIOzw+p9fG1havgkh4YS5tKM4/KqybGmbRbWLWC6MWT6JE7
 WMExZc8hgbOyladlX2W+TU58M1VLohuBTBIZbGbmtl+Ppc1HFqmdfkGb4cP9/T+EqM
 b+TdTET75Q1Vw==
To: Stefan <stefan-guix@HIDDEN>
From: phodina <phodina@HIDDEN>
Subject: Re: [PATCH v3] Install guix system on Raspberry Pi
Message-ID: <mPtBIj5SjqPth3NiS5EX4gEUUIO-Esboo3GtsDmm2YXjyuGmt_nFuyUf4ud-LbamW1JfMqWjOUkrLMnzZjWbcnZjpqRgHiu7X5cS2C3PY0g=@protonmail.com>
In-Reply-To: <87zgk5b56p.fsf@contorta>
References: <87tuadhq3d.fsf@contorta>
 <81366405-13FD-4F0E-8180-4DFCB16A6C1A@HIDDEN>
 <87zgk5b56p.fsf@contorta>
Feedback-ID: 14143818:user:proton
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Vagrant Cascadian <vagrant@HIDDEN>, dannym@HIDDEN,
 =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>, 48314 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Reply-To: phodina <phodina@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hi Stefan,

do you need help with the patches?

Also should we provide some patches to the upstream kernel in Guix? [1]

[1] https://github.com/lategoodbye/rpi-zero/issues/43
----
Petr




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 28 Apr 2022 15:26:17 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 28 11:26:17 2022
Received: from localhost ([127.0.0.1]:49633 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nk625-0004lR-3o
	for submit <at> debbugs.gnu.org; Thu, 28 Apr 2022 11:26:17 -0400
Received: from cascadia.aikidev.net ([173.255.214.101]:34588)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <vagrant@HIDDEN>) id 1nk623-0004lD-O2
 for 48314 <at> debbugs.gnu.org; Thu, 28 Apr 2022 11:26:16 -0400
Received: from localhost (unknown [IPv6:2600:3c01:e000:21:7:77:0:20])
 (Authenticated sender: vagrant@HIDDEN)
 by cascadia.aikidev.net (Postfix) with ESMTPSA id B428C1AB85;
 Thu, 28 Apr 2022 08:26:09 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=debian.org;
 s=1.vagrant.user; t=1651159569;
 bh=2E/MsoY+mp+W/gdgRWStoc7+cx3X8/PAlR1TJHILRvE=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=doKZY05wk4gRkWevvmcPDoLonFTrJni7BeQVH78shER5aq7Ceo4yVUvVCPeriDmOT
 tSkDeBAWoULXNMtKpVt/OtX9W5YZfm7CtKjvQEjEKs6sE7N1KEZem+Tniw/nOSISFP
 ao9NmZv/Y1SJbmkpx9OC836GIbo8utwnTns+Q17BqkL0J0RI+LjvHlX4tik9wW6IiE
 MtWU/4w0axH8nlbSGsdv4w7V2fscusKv9JeKtpEgClRlEfDK4NB7fb8z70wb4dHbqI
 7J27cXU7uL+88AvHWTiIjqeTaEeHK0+Wyn2Wx7ILU5ty7QeyS5viem8DGyJFiLpSuQ
 llF6my8Rq0Xgw==
From: Vagrant Cascadian <vagrant@HIDDEN>
To: Stefan <stefan-guix@HIDDEN>
Subject: Re: [PATCH v3] Install guix system on Raspberry Pi
In-Reply-To: <81366405-13FD-4F0E-8180-4DFCB16A6C1A@HIDDEN>
References: <87tuadhq3d.fsf@contorta>
 <81366405-13FD-4F0E-8180-4DFCB16A6C1A@HIDDEN>
Date: Thu, 28 Apr 2022 08:25:50 -0700
Message-ID: <87zgk5b56p.fsf@contorta>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-=";
 micalg=pgp-sha512; protocol="application/pgp-signature"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: dannym@HIDDEN, Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN>,
 phodina <phodina@HIDDEN>, 48314 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

On 2022-04-28, Stefan wrote:
>> Just tested this on an rpi3b+ and sometime between u-boot 2021.01 and
>> 2021.04 rpi-arm64 fails to boot on rpi3b+ ...=20
>
> IWithin my patch series there is one patch to modify a defconfig
> file. I enhanced that patch meanwhile to check, that lines in the
> modified defconfig show up in the final .config file. Last weekend I
> found out that several settings differ. I also updated the raspberry
> specific defconfigs, but the mismatches still remain.

Look forward to seeing an updated patch series!


> My guess is, that the kernel has problems booting. Did GRUB show up?

I didn't test with grub, just the syslinux-style menus, but it didn't
even get as far as u-boot on the serial console with
rpi_arm64_defconfig. With either rpi_3_defconfig or
rpi_3_b_plus_defconfig, it worked just fine.

I had to set gpu_freq=3D250 in config.txt, which is a bit of a known
issue:

  https://github.com/raspberrypi/firmware/issues/553


>> I feel confident at least
>> adding a simple u-boot-rpi-3 and/or u-boot-rpi-3-b-plus package (without
>> most of the proposed changes)
>
> Please wait a bit longer, I addressed all your comments to U-Boot already.

I really don't see the harm in it, and actually see considerable benefit
to making a smaller diff for review as it is a huge patch series, but
I'm not planning on actually using guix on any rpi hardware anytime
soon, so... ok.


live well,
  vagrant

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCYmqx/wAKCRDcUY/If5cW
qjkKAP9vc2+oukmzm3VHNTCP0xSP8eDLjTUOb2ieoZijcBjvQgEAtRn2AaYgXMAo
FGdsy2yMy8eKCnw2aV7zFutax5qzmw4=
=6bDk
-----END PGP SIGNATURE-----
--=-=-=--




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 28 Apr 2022 06:05:46 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 28 02:05:46 2022
Received: from localhost ([127.0.0.1]:45022 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1njxHe-0004wp-9h
	for submit <at> debbugs.gnu.org; Thu, 28 Apr 2022 02:05:46 -0400
Received: from mr6.vodafonemail.de ([145.253.228.166]:34148)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <stefan-guix@HIDDEN>) id 1njxHc-0004wc-3I
 for 48314 <at> debbugs.gnu.org; Thu, 28 Apr 2022 02:05:45 -0400
Received: from smtp.vodafone.de (unknown [10.0.0.2])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 by mr6.vodafonemail.de (Postfix) with ESMTPS id 4KplTy3JKhz1xxX;
 Thu, 28 Apr 2022 06:05:42 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de;
 s=vfde-mb-mr2-21dec; t=1651125942;
 bh=fYR/m7j3Enc2vIHu/deIkrCypFLrZWHTe4MxuNU/MFg=;
 h=Content-Type:From:Subject:Date:Message-Id:References:In-Reply-To:
 To:X-Mailer:From;
 b=YUkdqKk+/FDcO7sPOKWinn8Wet/XSOCufTqBpoYVYKDkc5xZuYagkvynORFV3SmAN
 2WHyY7qkx4wyRk4x4SbKP+BkDFnzvdrWisa5L1vZ/Q6vxpznIx8izqnUi/AsvNd49/
 2yOHgPgpQmkchfluOnQbN6ui1QFVFEpyAHUbTjPM=
Received: from smtpclient.apple (aftr-62-216-210-182.dynamic.mnet-online.de
 [62.216.210.182])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp.vodafone.de (Postfix) with ESMTPSA id 4KplTj3hG8zHnHV;
 Thu, 28 Apr 2022 06:05:26 +0000 (UTC)
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
From: Stefan <stefan-guix@HIDDEN>
Mime-Version: 1.0 (1.0)
Subject: Re: [PATCH v3] Install guix system on Raspberry Pi
Date: Thu, 28 Apr 2022 08:05:25 +0200
Message-Id: <81366405-13FD-4F0E-8180-4DFCB16A6C1A@HIDDEN>
References: <87tuadhq3d.fsf@contorta>
In-Reply-To: <87tuadhq3d.fsf@contorta>
To: Vagrant Cascadian <vagrant@HIDDEN>
X-Mailer: iPhone Mail (19E258)
X-purgate-type: clean
X-purgate: clean
X-purgate-size: 787
X-purgate-ID: 155817::1651125941-00007832-7D25A3D7/0/0
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 48314
Cc: dannym@HIDDEN, =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>,
 phodina <phodina@HIDDEN>, 48314 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Hi Vagrant!

> Just tested this on an rpi3b+ and sometime between u-boot 2021.01 and
> 2021.04 rpi-arm64 fails to boot on rpi3b+ ...=20

IWithin my patch series there is one patch to modify a defconfig file. I enh=
anced that patch meanwhile to check, that lines in the modified defconfig sh=
ow up in the final .config file. Last weekend I found out that several setti=
ngs differ. I also updated the raspberry specific defconfigs, but the mismat=
ches still remain.

My guess is, that the kernel has problems booting. Did GRUB show up?

> I feel confident at least
> adding a simple u-boot-rpi-3 and/or u-boot-rpi-3-b-plus package (without
> most of the proposed changes)

Please wait a bit longer, I addressed all your comments to U-Boot already.


Bye

Stefan




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 28 Apr 2022 02:57:57 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 27 22:57:57 2022
Received: from localhost ([127.0.0.1]:44840 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1njuLt-0008EN-FB
	for submit <at> debbugs.gnu.org; Wed, 27 Apr 2022 22:57:57 -0400
Received: from cascadia.aikidev.net ([173.255.214.101]:34422)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <vagrant@HIDDEN>) id 1njuLq-0008E8-CI
 for 48314 <at> debbugs.gnu.org; Wed, 27 Apr 2022 22:57:55 -0400
Received: from localhost (unknown [IPv6:2600:3c01:e000:21:7:77:0:20])
 (Authenticated sender: vagrant@HIDDEN)
 by cascadia.aikidev.net (Postfix) with ESMTPSA id 4BCB61AB81;
 Wed, 27 Apr 2022 19:57:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=debian.org;
 s=1.vagrant.user; t=1651114668;
 bh=nhfAkeciTvvugUigk27enUjB7fJbjGVC7ZLDFaYPDP8=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=DQepzBwSr2MY/e8VpkIFsPhb4xdt8qOi7xx/6uQ2v6IC3XoehU/yweEbtHzvL7r1w
 r5/rSLn7xzqDx80NQXEuUJq/E4JjQgfAwsItlXGrzn6rSrLwrj0XIuey2yXELg//fq
 o1vbaXyZCsNES6za9lWTN1vrryNcCcOuN1qsfVO3S/b3XbNDBhrxnGjIMyAkS2mu++
 96BS244EJsEzz6YDXPbOqbrFajbNN81giSz9uLBtBJghqtUhSiM8QSShUCbAzGLtpN
 YkrOM8Dw5HLsX2ILyO3rAQM/z98raoJs8xYj7NbrRKH3eae4Yta2NPneIlgoxAj61Z
 qy8ZqWgOMuiGA==
From: Vagrant Cascadian <vagrant@HIDDEN>
To: phodina <phodina@HIDDEN>, "48314 <at> debbugs.gnu.org"
 <48314 <at> debbugs.gnu.org>
Subject: Re: [PATCH v3] Install guix system on Raspberry Pi
In-Reply-To: <87a6cnvetx.fsf@contorta>
References: <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
 <87a6cnvetx.fsf@contorta>
Date: Wed, 27 Apr 2022 19:57:42 -0700
Message-ID: <87tuadhq3d.fsf@contorta>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-=";
 micalg=pgp-sha512; protocol="application/pgp-signature"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Stefan <stefan-guix@HIDDEN>,
 "dannym@HIDDEN" <dannym@HIDDEN>,
 Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain

On 2022-04-14, Vagrant Cascadian wrote:
> On 2022-04-14, phodina@HIDDEN wrote:
> (e.g. drop drop u-boot-rpi-0-w*, u-boot-rpi, u-boot-rpi-efi, maybe
> consider droping u-boot-rpi-2* and the 32-bit variants for rpi3 and
> rpi4, as armhf is not well maintained at the moment).
>
> Basically, ARMv6 is not supportable by guix, ARMv7 is poorly supported
> in the armhf architecture, and ARMv8 is capable of running aarch64
> (a.k.a. arm64):
>
>   https://en.wikipedia.org/wiki/Raspberry_Pi#Specifications
>
>
> Only proposing aarch64 variants would pretty much leave you with
> rpi-arm64.

Just tested this on an rpi3b+ and sometime between u-boot 2021.01 and
2021.04 rpi-arm64 fails to boot on rpi3b+ ... but does work with the
rpi_3 and rpi_3_b_plus defconfigs... so I guess that makes a case for
having multiple variants, even if rpi_arm64 theoretically supports all
the arm64 boards... hrm.

That said, now that I've been able to test it; I feel confident at least
adding a simple u-boot-rpi-3 and/or u-boot-rpi-3-b-plus package (without
most of the proposed changes). Even though I haven't been able to test
u-boot-rpi-arm64, might be worth adding just to get it out of the way.


I could also test booting the rpi2 variants, though as mentioned
earlier, I'm skeptical about adding more support until things improve
for armhf on guix.


live well,
  vagrant

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCYmoCpwAKCRDcUY/If5cW
qoDsAP9afw8hzCAE4v3A5hDThqmuVjJc6QY8GzcVXL6NfEf7vwEA77E5S47d/cPP
DkSqZtZiEAknwSKor+q2kfrru0GZ5QE=
=z51b
-----END PGP SIGNATURE-----
--=-=-=--




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 21 Apr 2022 19:32:58 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 21 15:32:58 2022
Received: from localhost ([127.0.0.1]:50943 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nhcXy-0002zv-GR
	for submit <at> debbugs.gnu.org; Thu, 21 Apr 2022 15:32:58 -0400
Received: from mr5.vodafonemail.de ([145.253.228.165]:33178)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <stefan-guix@HIDDEN>) id 1nhcXw-0002zk-GR
 for 48314 <at> debbugs.gnu.org; Thu, 21 Apr 2022 15:32:57 -0400
Received: from smtp.vodafone.de (unknown [10.0.0.2])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 by mr5.vodafonemail.de (Postfix) with ESMTPS id 4KknkZ68pBz25QF;
 Thu, 21 Apr 2022 19:32:54 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de;
 s=vfde-mb-mr2-21dec; t=1650569575;
 bh=zpDkyD8w4U/RsHkgL+nIC0X6id+aLSOcDk1m2j9HMA8=;
 h=Content-Type:From:Subject:Date:Message-Id:References:In-Reply-To:
 To:X-Mailer:From;
 b=cExDC2zAbahmZOoZaC0o3TIo8V5mTlH3IjcSB9Gwwqz5oWeDBqy4in1TCIlg2dlrM
 n5c8OCHXjWk/Kl5dPlRIThBjoApGA304D1uA0E08IXPC+5rr/MEexksbapZXLUVEMK
 oEeVqPhqiU2MJT7m4TyiSxJkortKl2oc6+Oq9iqk=
Received: from smtpclient.apple (aftr-62-216-207-47.dynamic.mnet-online.de
 [62.216.207.47])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp.vodafone.de (Postfix) with ESMTPSA id 4KknkH1mGnzMkrs;
 Thu, 21 Apr 2022 19:32:36 +0000 (UTC)
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
From: Stefan <stefan-guix@HIDDEN>
Mime-Version: 1.0 (1.0)
Subject: Re: [bug#48314] [PATCH v3] Install guix system on Raspberry Pi
Date: Thu, 21 Apr 2022 21:32:34 +0200
Message-Id: <AA43CB88-2461-4864-BB49-0FAD2A766B7D@HIDDEN>
References: <d3ZYuSQwiQvASa1af25ttEUEsH7M323cKXlUrR4uSB2lHD1QZkqxtFdCRAagPmpaJZPO8adacXggdUu2HivzyyC3qBSGS1sRnyxyB2nL4vE=@protonmail.com>
In-Reply-To: <d3ZYuSQwiQvASa1af25ttEUEsH7M323cKXlUrR4uSB2lHD1QZkqxtFdCRAagPmpaJZPO8adacXggdUu2HivzyyC3qBSGS1sRnyxyB2nL4vE=@protonmail.com>
To: phodina <phodina@HIDDEN>
X-Mailer: iPhone Mail (19E258)
X-purgate-type: clean
X-purgate: clean
X-purgate-size: 1888
X-purgate-ID: 155817::1650569574-00003D05-3C37A1B0/0/0
X-Spam-Score: 0.6 (/)
X-Debbugs-Envelope-To: 48314
Cc: Vagrant Cascadian <vagrant@HIDDEN>, dannym@HIDDEN,
 =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>,
 Maxime Devos <maximedevos@HIDDEN>, 48314 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.4 (/)

Hi Petr!

> Vagrant has valid points about the patches.
>=20
> Stefan do you want to address them or shall I?

I have already patches to address the review comments from Vagrant, actually=
 for months; also including improvements (e.g. checking that defconfig chang=
es are successfully applied, which is not guaranteed).

Beside a lack of time, it is as you said: Building with 1 GB RAM is very pro=
blematic. Swap space is a requirement. Building takes days, using make with s=
ub-targets helps a bit. In recent Linux kernels the virtual memory handling i=
s badly broken; the build process gets killed, although there is empty swap s=
pace. Only version 5.4 is still fine. Without other hardware offloading or c=
ross-building is not an option. Substitutes of guix, Linux, which needs spec=
ial config settings, U-Boot and I think GRUB, are not =E2=80=93 can=E2=80=99=
t be =E2=80=93 available. Last time I tried at least qemu =E2=80=93 an input=
 of GRUB =E2=80=93 had build issues on aarch64 and was missing a substitute.=
 For Linux I meanwhile need to remove the deblob-check, as it even exhausts m=
y swap space.

I=E2=80=99m hesitant to submit my untestet patches. I hope to find some time=
 on the weekend =E2=80=93 and that I don=E2=80=99t make mistakes, as my turn=
-around-time is close to a week. ;-)

By the way: I have the feeling that a garbage-collector may be a real bottle=
-neck, if most of a process=E2=80=99 memory is swapped out. I was surprised t=
o not find papers about this. And once I was looking for options to limit th=
e Guile heap, but didn=E2=80=99t find anything helpful.

> It runs fine on Raspberry Pi 4 where there is 4GiB of memory

This is good to know, thanks!

Would you mind, if I send untested patches, which you could pick up? Is ther=
e a possibility to offload to ci.guix.gnu.org?=20


Bye

Stefan=




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 21 Apr 2022 10:52:39 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 21 06:52:39 2022
Received: from localhost ([127.0.0.1]:48538 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nhUQQ-0000Fp-P6
	for submit <at> debbugs.gnu.org; Thu, 21 Apr 2022 06:52:38 -0400
Received: from mail-40133.protonmail.ch ([185.70.40.133]:48543)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <phodina@HIDDEN>) id 1nhUQP-0000FJ-JM
 for 48314 <at> debbugs.gnu.org; Thu, 21 Apr 2022 06:52:37 -0400
Date: Thu, 21 Apr 2022 10:52:26 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;
 s=protonmail; t=1650538350;
 bh=EgeOGS55XWIohUkh3YjzbVZ9X/qTcNnrLd8BZc1V/uU=;
 h=Date:To:From:Cc:Reply-To:Subject:Message-ID:In-Reply-To:
 References:Feedback-ID:From:To:Cc:Date:Subject:Reply-To:
 Feedback-ID:Message-ID;
 b=tqtLSZ1b7ztOK0o+QvDfOEE62ll9g8IoDwCtQyH6tuS8AaiG2L6QqdzWlqP/TS57f
 45SykuqcHMojhwd9yvFpOiSjPA+aTwFgYHwr3QEm/JKYjPIJGMTFY4qy378GWNGCfC
 zuzf6SINOB02QU5/kiNzGSv1+F95LCMw8KB5baQANlz0YwZg3WERVQ/R5X5gtWlE2X
 ndlzlkbfUe6IvU5JPBCCWWazC/yWvvzu/SCpeJUSQ2KwrHBDrPHKiKb87dF/4ghn7V
 MRiBwNAKiDBM4cF2yRdZb+s/KsYtbILo/DAdo96wdjK3VMf4jNN/jssQ1hb4tZf+v+
 JG+Ufqm+8XY2A==
To: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
From: phodina <phodina@HIDDEN>
Subject: Re: [bug#48314] [PATCH v3] Install guix system on Raspberry Pi
Message-ID: <d3ZYuSQwiQvASa1af25ttEUEsH7M323cKXlUrR4uSB2lHD1QZkqxtFdCRAagPmpaJZPO8adacXggdUu2HivzyyC3qBSGS1sRnyxyB2nL4vE=@protonmail.com>
In-Reply-To: <87lew2umwt.fsf@HIDDEN>
References: <19E4796A-B0DB-444F-8773-2E8D3EF6132D@HIDDEN>
 <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
 <08d2e5f4167486be4be7ef0dc024f1e2137b4bdf.camel@HIDDEN>
 <NahlaZknYPJe6yty_Ivn-Wj6I65H9wNMtiD8-4pz5q6e8lten7MrpPxpotIlQ2u0QgVf3V-gAHOHYw3H-ZzRmU2NN5em5vSOruAT8Dc7uxc=@protonmail.com>
 <8735ie2rmk.fsf@HIDDEN>
 <jkij6oekyUn8DqK6_m4EywMRdoo9AgSm7gR2Sz4yXlZHoqzdbwZCvVTndCprkwFoQV-6VeH3ZV52aNIeB9fRQVK4FnIeFG0FJi9dCbMDeCk=@protonmail.com>
 <87lew2umwt.fsf@HIDDEN>
Feedback-ID: 14143818:user:proton
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Stefan <stefan-guix@HIDDEN>,
 Vagrant Cascadian <vagrant@HIDDEN>,
 "dannym@HIDDEN" <dannym@HIDDEN>,
 Maxime Devos <maximedevos@HIDDEN>,
 "48314 <at> debbugs.gnu.org" <48314 <at> debbugs.gnu.org>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Reply-To: phodina <phodina@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

> Hi,
>
> phodina phodina@HIDDEN skribis:
>
> > I've rebased the patches from Stefan and there are only two packages th=
at don't cross-compile - nss-certs and ntp.
> >
> > I attempted to do guix pull on Raspberry Pi 3, but it failed due to run=
ning of memory - I'll attempt to test it with a swap file/partition.
> >
> > Or is it possible to do guix pull using a substitute so that the comput=
ation wouldn't be done locally? This offloading would be really great for t=
hese embedded platforms.
>
>
> Normally you should be able to get substitutes, making =E2=80=98guix pull=
=E2=80=99
> actually usable on these platforms. But I=E2=80=99m not sure what the sta=
tus is
> on armhf-linux. This platform needs love!
>
> > From deab687c2b0540a944b48c68fa00cac4bac99b80 Mon Sep 17 00:00:00 2001
> > From: Petr Hodina phodina@HIDDEN
> > Date: Sat, 16 Apr 2022 10:22:14 +0200
> > Subject: [PATCH 1/2] gnu: nss-certs: Support cross-compilation.
> >
> > * gnu/packages/certs.scm (nss-certs)[arguments]: Fix unresolved
> > variable - output.
>
>
> I addressed this one differently to avoid rebuilding the 600+ packages
> that depends on nss-certs.
>
> > From 98ad94f6282d8ff3a244181ecc32946ea281aa03 Mon Sep 17 00:00:00 2001
> > From: Petr Hodina phodina@HIDDEN
> > Date: Sat, 16 Apr 2022 10:24:46 +0200
> > Subject: [PATCH 2/2] gnu: ntp: Support cross-compilation.
> >
> > * gnu/packages/ntp.scm (ntp)[arguments]: Add configuration flag.
>
>
> I added a comment explaining why this flag is needed and committed.
>
> Should we close this issue now?
>
> Thanks!
>
> Ludo=E2=80=99.

Thanks Ludo'!


Vagrant has valid points about the patches.

Stefan do you want to address them or shall I?

I can confirm the Raspberry Pi 3 can run Guix, but when I attempt to do sim=
ple `guix pull` it fails due to running out of memory (has just 1 GiB) ther=
efore there is probably no point to run on less powerful boards.

Not sure if the computation can be offloaded by using substitutes.

It runs fine on Raspberry Pi 4 where there is 4GiB of memory (at least in m=
y case :) - the variant with just one 1GiB would have probably same result =
as RPi3.

----
Petr




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 18 Apr 2022 21:01:35 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 18 17:01:35 2022
Received: from localhost ([127.0.0.1]:40939 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1ngYV4-0002KG-Rw
	for submit <at> debbugs.gnu.org; Mon, 18 Apr 2022 17:01:35 -0400
Received: from eggs.gnu.org ([209.51.188.92]:36582)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1ngYV3-0002K1-9A
 for 48314 <at> debbugs.gnu.org; Mon, 18 Apr 2022 17:01:33 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:52486)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@HIDDEN>)
 id 1ngYUt-0002Zt-ME; Mon, 18 Apr 2022 17:01:23 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-Version:In-Reply-To:Date:References:Subject:To:
 From; bh=QJlnwOW+HGy1nAXpZa8lyD1EPUvtZ+S7pG7PdlpFKYY=; b=WfDq4PC/yv7npEA4AJmu
 wSDcMgRyHiWN7u45kyAJF4WKRM6khPf9KWOpdxOZnhso2BtkbC0Z6R3blXKpHaL8QCFqq9d0tc9uE
 jcYG2CdZbAfxFpkd+/o/vy0Os9gUcF75zHYYbz87sANgwW/IhS6dI7o4inOnDRL11D4oYMEcjNoGs
 VrufLOlW2NPqt0yU6x5rNibD1admz6HncdqqfvuKAgAjlDmS68PbhmI7ZzY+qXbum2NhIMo9b/brC
 //nj1rcQju5MkQMW5WkCsnHyLokjd07VRFN8LVLnRj6zfjGfEFE3a4qPGPYUBWwdwaiipltKc8UYA
 +Ayfy8VGkgN9mQ==;
Received: from 91-160-117-201.subs.proxad.net ([91.160.117.201]:57830
 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@HIDDEN>)
 id 1ngYUP-0008LX-Da; Mon, 18 Apr 2022 17:01:09 -0400
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: phodina <phodina@HIDDEN>
Subject: Re: [bug#48314] [PATCH v3] Install guix system on Raspberry Pi
References: <19E4796A-B0DB-444F-8773-2E8D3EF6132D@HIDDEN>
 <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
 <08d2e5f4167486be4be7ef0dc024f1e2137b4bdf.camel@HIDDEN>
 <NahlaZknYPJe6yty_Ivn-Wj6I65H9wNMtiD8-4pz5q6e8lten7MrpPxpotIlQ2u0QgVf3V-gAHOHYw3H-ZzRmU2NN5em5vSOruAT8Dc7uxc=@protonmail.com>
 <8735ie2rmk.fsf@HIDDEN>
 <jkij6oekyUn8DqK6_m4EywMRdoo9AgSm7gR2Sz4yXlZHoqzdbwZCvVTndCprkwFoQV-6VeH3ZV52aNIeB9fRQVK4FnIeFG0FJi9dCbMDeCk=@protonmail.com>
X-URL: http://www.fdn.fr/~lcourtes/
X-Revolutionary-Date: 29 Germinal an 230 de la =?utf-8?Q?R=C3=A9volution?=
X-PGP-Key-ID: 0x090B11993D9AEBB5
X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc
X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4  0CFB 090B 1199 3D9A EBB5
X-OS: x86_64-pc-linux-gnu
Date: Mon, 18 Apr 2022 23:00:50 +0200
In-Reply-To: <jkij6oekyUn8DqK6_m4EywMRdoo9AgSm7gR2Sz4yXlZHoqzdbwZCvVTndCprkwFoQV-6VeH3ZV52aNIeB9fRQVK4FnIeFG0FJi9dCbMDeCk=@protonmail.com>
 (phodina@HIDDEN's message of "Sat, 16 Apr 2022 08:53:53
 +0000")
Message-ID: <87lew2umwt.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 48314
Cc: Stefan <stefan-guix@HIDDEN>,
 Vagrant Cascadian <vagrant@HIDDEN>,
 "dannym@HIDDEN" <dannym@HIDDEN>,
 Maxime Devos <maximedevos@HIDDEN>,
 "48314 <at> debbugs.gnu.org" <48314 <at> debbugs.gnu.org>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Hi,

phodina <phodina@HIDDEN> skribis:

> I've rebased the patches from Stefan and there are only two packages that=
 don't cross-compile - nss-certs and ntp.
>
> I attempted to do guix pull on Raspberry Pi 3, but it failed due to runni=
ng of memory - I'll attempt to test it with a swap file/partition.
>
> Or is it possible to do guix pull using a substitute so that the computat=
ion wouldn't be done locally? This offloading would be really great for the=
se embedded platforms.

Normally you should be able to get substitutes, making =E2=80=98guix pull=
=E2=80=99
actually usable on these platforms.  But I=E2=80=99m not sure what the stat=
us is
on armhf-linux.  This platform needs love!

> From deab687c2b0540a944b48c68fa00cac4bac99b80 Mon Sep 17 00:00:00 2001
> From: Petr Hodina <phodina@HIDDEN>
> Date: Sat, 16 Apr 2022 10:22:14 +0200
> Subject: [PATCH 1/2] gnu: nss-certs: Support cross-compilation.
>
> * gnu/packages/certs.scm (nss-certs)[arguments]: Fix unresolved
>   variable - output.

I addressed this one differently to avoid rebuilding the 600+ packages
that depends on nss-certs.

> From 98ad94f6282d8ff3a244181ecc32946ea281aa03 Mon Sep 17 00:00:00 2001
> From: Petr Hodina <phodina@HIDDEN>
> Date: Sat, 16 Apr 2022 10:24:46 +0200
> Subject: [PATCH 2/2] gnu: ntp: Support cross-compilation.
>
> * gnu/packages/ntp.scm (ntp)[arguments]: Add configuration flag.

I added a comment explaining why this flag is needed and committed.

Should we close this issue now?

Thanks!

Ludo=E2=80=99.




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 16 Apr 2022 08:54:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Apr 16 04:54:12 2022
Received: from localhost ([127.0.0.1]:60695 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nfeC3-0002f7-VZ
	for submit <at> debbugs.gnu.org; Sat, 16 Apr 2022 04:54:12 -0400
Received: from mail-40134.protonmail.ch ([185.70.40.134]:57291)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <phodina@HIDDEN>) id 1nfeC1-0002es-DS
 for 48314 <at> debbugs.gnu.org; Sat, 16 Apr 2022 04:54:10 -0400
Date: Sat, 16 Apr 2022 08:53:53 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;
 s=protonmail; t=1650099243;
 bh=WFtFe5hYwktiJK+ird40/iU9cmgQ80GqM0LdRFQhq4U=;
 h=Date:To:From:Cc:Reply-To:Subject:Message-ID:In-Reply-To:
 References:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:
 Message-ID;
 b=qqdVr/bdy4CVHaDUD7uYZbDnwq7yaShgseLrrs+sUbmMQeLrCRTKo5dbTLg072YNc
 CReKcV14uorbtsLDvLHGB7V6b015KDscCGBBJfzNOe5DWQP5w7ANq4XWUJWXhnhIYf
 eRTrmg+7hBCjvrUa0s8SelzMqFrIFrda6p+IeQrwh6MuDFdTC/XyOQwvqkFG64ip7Y
 qKR0weeJtx0vzO1nziKyAEf/Q0dd9CMGnjwMq7rHZl24mMHaFUIQws25DwOtCnOsOp
 KZ12ifejwM2yUKgyFMlZcVM8St7e0oZ5zWntbMT/8Rs1EXyZZCwgREC1Nmaqqou9AG
 VczUUW+Mcq5yA==
To: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
From: phodina <phodina@HIDDEN>
Subject: [bug#48314] [PATCH v3] Install guix system on Raspberry Pi
Message-ID: <jkij6oekyUn8DqK6_m4EywMRdoo9AgSm7gR2Sz4yXlZHoqzdbwZCvVTndCprkwFoQV-6VeH3ZV52aNIeB9fRQVK4FnIeFG0FJi9dCbMDeCk=@protonmail.com>
In-Reply-To: <8735ie2rmk.fsf@HIDDEN>
References: <19E4796A-B0DB-444F-8773-2E8D3EF6132D@HIDDEN>
 <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
 <08d2e5f4167486be4be7ef0dc024f1e2137b4bdf.camel@HIDDEN>
 <NahlaZknYPJe6yty_Ivn-Wj6I65H9wNMtiD8-4pz5q6e8lten7MrpPxpotIlQ2u0QgVf3V-gAHOHYw3H-ZzRmU2NN5em5vSOruAT8Dc7uxc=@protonmail.com>
 <8735ie2rmk.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed;
 boundary="b1_0t5JhqKGwtmbCzkrvzC30ZfjsTJbbzRxm4kOQJxM"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Stefan <stefan-guix@HIDDEN>,
 Vagrant Cascadian <vagrant@HIDDEN>,
 "dannym@HIDDEN" <dannym@HIDDEN>,
 Maxime Devos <maximedevos@HIDDEN>,
 "48314 <at> debbugs.gnu.org" <48314 <at> debbugs.gnu.org>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Reply-To: phodina <phodina@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

This is a multi-part message in MIME format.

--b1_0t5JhqKGwtmbCzkrvzC30ZfjsTJbbzRxm4kOQJxM
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

> > guile-fibers are now fixed, but the cross compile build fails now on sh=
epherd-0.9 due to guile-fibers not being available.
>
>
> Fixed as suggested by Maxime in commit
> 6e174c4edd4786d93c1e424c45052f70b2bb3fb0.
>
> Let us know what the next issue is. :-)
>
> Ludo=E2=80=99.

Thanks Maxime for the advice and for Ludo' for applying the change!

I've rebased the patches from Stefan and there are only two packages that d=
on't cross-compile - nss-certs and ntp.

I attempted to do guix pull on Raspberry Pi 3, but it failed due to running=
 of memory - I'll attempt to test it with a swap file/partition.

Or is it possible to do guix pull using a substitute so that the computatio=
n wouldn't be done locally? This offloading would be really great for these=
 embedded platforms.


----
Petr



--b1_0t5JhqKGwtmbCzkrvzC30ZfjsTJbbzRxm4kOQJxM
Content-Type: text/x-patch; name=0001-gnu-nss-certs-Support-cross-compilation.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=0001-gnu-nss-certs-Support-cross-compilation.patch

RnJvbSBkZWFiNjg3YzJiMDU0MGE5NDRiNDhjNjhmYTAwY2FjNGJhYzk5YjgwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRyIEhvZGluYSA8cGhvZGluYUBwcm90b25tYWlsLmNvbT4K
RGF0ZTogU2F0LCAxNiBBcHIgMjAyMiAxMDoyMjoxNCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMS8y
XSBnbnU6IG5zcy1jZXJ0czogU3VwcG9ydCBjcm9zcy1jb21waWxhdGlvbi4KCiogZ251L3BhY2th
Z2VzL2NlcnRzLnNjbSAobnNzLWNlcnRzKVthcmd1bWVudHNdOiBGaXggdW5yZXNvbHZlZAogIHZh
cmlhYmxlIC0gb3V0cHV0LgoKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9jZXJ0cy5zY20gYi9n
bnUvcGFja2FnZXMvY2VydHMuc2NtCmluZGV4IDI4YzJmODRmOTguLjYzNDg2YjU5NmMgMTAwNjQ0
Ci0tLSBhL2dudS9wYWNrYWdlcy9jZXJ0cy5zY20KKysrIGIvZ251L3BhY2thZ2VzL2NlcnRzLnNj
bQpAQCAtNyw2ICs3LDcgQEAKIDs7OyBDb3B5cmlnaHQgwqkgMjAyMSBNYXhpbSBDb3Vybm95ZXIg
PG1heGltLmNvdXJub3llckBnbWFpbC5jb20+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMjEgRWZyYWlt
IEZsYXNobmVyIDxlZnJhaW1AZmxhc2huZXIuY28uaWw+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMjEg
UmFnaGF2IEd1cnVyYWphbiA8cmdAcmFnaGF2Z3VydXJhamFuLm5hbWU+Cis7OzsgQ29weXJpZ2h0
IMKpIDIwMjIgUGV0ciBIb2RpbmEgPHBob2RpbmFAcHJvdG9ubWFpbC5jb20+CiA7OzsKIDs7OyBU
aGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgR3VpeC4KIDs7OwpAQCAtMTY4LDggKzE2OSw4IEBAIChk
ZWZpbmUtcHVibGljIG5zcy1jZXJ0cwogICAgICAgICAgICAobWFwIChjdXQgYXNzcSA8PiAlc3Rh
bmRhcmQtcGhhc2VzKQogICAgICAgICAgICAgICAgICcoc2V0LXBhdGhzIGluc3RhbGwtbG9jYWxl
IHVucGFjaykpCiAgICAgICAgICAoYWRkLWFmdGVyICd1bnBhY2sgJ2luc3RhbGwKLSAgICAgICAg
ICAgKGxhbWJkYSBfCi0gICAgICAgICAgICAgKGxldCAoKGNlcnRzZGlyIChzdHJpbmctYXBwZW5k
ICVvdXRwdXQgIi9ldGMvc3NsL2NlcnRzLyIpKSkKKyAgICAgICAgICAgKGxhbWJkYSogKCM6a2V5
IG91dHB1dHMgIzphbGxvdy1vdGhlci1rZXlzKQorICAgICAgICAgICAgIChsZXQgKChjZXJ0c2Rp
ciAoc3RyaW5nLWFwcGVuZCAoYXNzb2MtcmVmIG91dHB1dHMgIm91dCIpICIvZXRjL3NzbC9jZXJ0
cy8iKSkpCiAgICAgICAgICAgICAgICAod2l0aC1kaXJlY3RvcnktZXhjdXJzaW9uICJuc3MvbGli
L2NrZncvYnVpbHRpbnMvIgogICAgICAgICAgICAgICAgICAodW5sZXNzIChmaWxlLWV4aXN0cz8g
ImJsYWNrbGlzdC50eHQiKQogICAgICAgICAgICAgICAgICAgIChjYWxsLXdpdGgtb3V0cHV0LWZp
bGUgImJsYWNrbGlzdC50eHQiIChjb25zdCAjdCkpKQotLSAKMi4zNS4xCgo=

--b1_0t5JhqKGwtmbCzkrvzC30ZfjsTJbbzRxm4kOQJxM
Content-Type: text/x-patch; name=0002-gnu-ntp-Support-cross-compilation.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=0002-gnu-ntp-Support-cross-compilation.patch

RnJvbSA5OGFkOTRmNjI4MmQ4ZmYzYTI0NDE4MWVjYzMyOTQ2ZWEyODFhYTAzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRyIEhvZGluYSA8cGhvZGluYUBwcm90b25tYWlsLmNvbT4K
RGF0ZTogU2F0LCAxNiBBcHIgMjAyMiAxMDoyNDo0NiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMi8y
XSBnbnU6IG50cDogU3VwcG9ydCBjcm9zcy1jb21waWxhdGlvbi4KCiogZ251L3BhY2thZ2VzL250
cC5zY20gKG50cClbYXJndW1lbnRzXTogQWRkIGNvbmZpZ3VyYXRpb24gZmxhZy4KCmRpZmYgLS1n
aXQgYS9nbnUvcGFja2FnZXMvbnRwLnNjbSBiL2dudS9wYWNrYWdlcy9udHAuc2NtCmluZGV4IDdh
M2MwMzNiMmUuLmE2NDg2MWQ3ZmQgMTAwNjQ0Ci0tLSBhL2dudS9wYWNrYWdlcy9udHAuc2NtCisr
KyBiL2dudS9wYWNrYWdlcy9udHAuc2NtCkBAIC04LDYgKzgsNyBAQAogOzs7IENvcHlyaWdodCDC
qSAyMDE5IE1heGltIENvdXJub3llciA8bWF4aW0uY291cm5veWVyQGdtYWlsLmNvbT4KIDs7OyBD
b3B5cmlnaHQgwqkgMjAyMSBNYXJpdXMgQmFra2UgPG1hcml1c0BnbnUub3JnPgogOzs7IENvcHly
aWdodCDCqSAyMDIxIEJyaWNlIFdhZWdlbmVpcmUgPGJyaWNlQHdhZWdlbmVpLnJlPgorOzs7IENv
cHlyaWdodCDCqSAyMDIyIFBldHIgSG9kaW5hIDxwaG9kaW5hQHByb3Rvbm1haWwuY29tPgogOzs7
CiA7OzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEd1aXguCiA7OzsKQEAgLTE1Myw3ICsxNTQs
OCBAQCAoZGVmaW5lLXB1YmxpYyBudHAKICAgICAgICAgICAgIGAoKCJsaWJjYXAiICxsaWJjYXAp
KQogICAgICAgICAgICAgJygpKSkpCiAgICAoYXJndW1lbnRzCi0gICAgYCgjOnBoYXNlcworICAg
IGAoIzpjb25maWd1cmUtZmxhZ3MgKGxpc3QgIi0td2l0aC15aWVsZGluZy1zZWxlY3Q9eWVzIikK
KyAgICAgICM6cGhhc2VzCiAgICAgICAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzCiAg
ICAgICAgIChhZGQtYWZ0ZXIgJ3VucGFjayAnZGlzYWJsZS1uZXR3b3JrLXRlc3QKICAgICAgICAg
ICAgICAgICAgICAobGFtYmRhIF8KLS0gCjIuMzUuMQoK

--b1_0t5JhqKGwtmbCzkrvzC30ZfjsTJbbzRxm4kOQJxM--





Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 15 Apr 2022 17:17:34 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 15 13:17:34 2022
Received: from localhost ([127.0.0.1]:60266 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nfPZe-000495-5W
	for submit <at> debbugs.gnu.org; Fri, 15 Apr 2022 13:17:34 -0400
Received: from eggs.gnu.org ([209.51.188.92]:56864)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1nfPZc-00048q-Cr
 for 48314 <at> debbugs.gnu.org; Fri, 15 Apr 2022 13:17:32 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:34212)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@HIDDEN>)
 id 1nfPZV-0005Y5-Fl; Fri, 15 Apr 2022 13:17:25 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-Version:In-Reply-To:Date:References:Subject:To:
 From; bh=w6yX/5N1aDYQY51qKOKkJThAFHBAEztrZ8MMicW8a7c=; b=AchkguKOzyo8VbavD7Cz
 O/wHxzAPRjCbOcpCsdYo3MP87kb5vDr2INkF/skOwe7uC29ORWndveZbJMJEmaS2RHhwpM25rux8G
 4Klqly86qbbGi5u7NPKH4VFD+SiJIFGQ+t9KRRopmh054eIXmVnxWlWrayIPMtLYUkDp3XYzqhSwe
 Ts/RsCQP31yjRf/Uoq/R0yESZ2LL+PheuayFro9g4jUGDyk8umqMdAOgimD8VQFhjZTFGNFKX3k3b
 178MQcr7sbQD12a6WdX0eE66Er9dxBYeWO146wtXCt0oFadohpsaUC6kA3GJJt4faLDwoks7uNF7t
 muOpXqILZOo8TA==;
Received: from 91-160-117-201.subs.proxad.net ([91.160.117.201]:61954
 helo=ribbon)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@HIDDEN>)
 id 1nfPZV-0000mr-3O; Fri, 15 Apr 2022 13:17:25 -0400
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: phodina <phodina@HIDDEN>
Subject: Re: [bug#48314] [PATCH v3] Install guix system on Raspberry Pi
References: <19E4796A-B0DB-444F-8773-2E8D3EF6132D@HIDDEN>
 <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
 <08d2e5f4167486be4be7ef0dc024f1e2137b4bdf.camel@HIDDEN>
 <NahlaZknYPJe6yty_Ivn-Wj6I65H9wNMtiD8-4pz5q6e8lten7MrpPxpotIlQ2u0QgVf3V-gAHOHYw3H-ZzRmU2NN5em5vSOruAT8Dc7uxc=@protonmail.com>
X-URL: http://www.fdn.fr/~lcourtes/
X-Revolutionary-Date: 26 Germinal an 230 de la =?utf-8?Q?R=C3=A9volution?=
X-PGP-Key-ID: 0x090B11993D9AEBB5
X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc
X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4  0CFB 090B 1199 3D9A EBB5
X-OS: x86_64-pc-linux-gnu
Date: Fri, 15 Apr 2022 19:17:23 +0200
In-Reply-To: <NahlaZknYPJe6yty_Ivn-Wj6I65H9wNMtiD8-4pz5q6e8lten7MrpPxpotIlQ2u0QgVf3V-gAHOHYw3H-ZzRmU2NN5em5vSOruAT8Dc7uxc=@protonmail.com>
 (phodina@HIDDEN's message of "Thu, 14 Apr 2022 15:53:33
 +0000")
Message-ID: <8735ie2rmk.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 48314
Cc: Stefan <stefan-guix@HIDDEN>,
 Vagrant Cascadian <vagrant@HIDDEN>,
 "dannym@HIDDEN" <dannym@HIDDEN>,
 Maxime Devos <maximedevos@HIDDEN>,
 "48314 <at> debbugs.gnu.org" <48314 <at> debbugs.gnu.org>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Hi,

phodina <phodina@HIDDEN> skribis:

> guile-fibers are now fixed, but the cross compile build fails now on shep=
herd-0.9 due to guile-fibers not being available.

Fixed as suggested by Maxime in commit
6e174c4edd4786d93c1e424c45052f70b2bb3fb0.

Let us know what the next issue is.  :-)

Ludo=E2=80=99.




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 14 Apr 2022 17:33:11 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 14 13:33:11 2022
Received: from localhost ([127.0.0.1]:57282 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nf3LC-0006DL-Pu
	for submit <at> debbugs.gnu.org; Thu, 14 Apr 2022 13:33:10 -0400
Received: from michel.telenet-ops.be ([195.130.137.88]:40044)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <maximedevos@HIDDEN>) id 1nf3LA-0006DC-Is
 for 48314 <at> debbugs.gnu.org; Thu, 14 Apr 2022 13:33:09 -0400
Received: from ptr-bvsjgyhxw7psv60dyze.18120a2.ip6.access.telenet.be
 ([IPv6:2a02:1811:8c09:9d00:3c5f:2eff:feb0:ba5a])
 by michel.telenet-ops.be with bizsmtp
 id JhZ62700D4UW6Th06hZ6ex; Thu, 14 Apr 2022 19:33:07 +0200
Message-ID: <751092aecc38c221e13af71417e1ccace8c875eb.camel@HIDDEN>
Subject: Re: [bug#48314] [PATCH v3] Install guix system on Raspberry Pi
From: Maxime Devos <maximedevos@HIDDEN>
To: phodina <phodina@HIDDEN>
Date: Thu, 14 Apr 2022 19:33:01 +0200
In-Reply-To: <NahlaZknYPJe6yty_Ivn-Wj6I65H9wNMtiD8-4pz5q6e8lten7MrpPxpotIlQ2u0QgVf3V-gAHOHYw3H-ZzRmU2NN5em5vSOruAT8Dc7uxc=@protonmail.com>
References: <19E4796A-B0DB-444F-8773-2E8D3EF6132D@HIDDEN>
 <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
 <08d2e5f4167486be4be7ef0dc024f1e2137b4bdf.camel@HIDDEN>
 <NahlaZknYPJe6yty_Ivn-Wj6I65H9wNMtiD8-4pz5q6e8lten7MrpPxpotIlQ2u0QgVf3V-gAHOHYw3H-ZzRmU2NN5em5vSOruAT8Dc7uxc=@protonmail.com>
Content-Type: multipart/signed; micalg="pgp-sha512";
 protocol="application/pgp-signature"; boundary="=-1H1mKzsrfGLWrj6Alozy"
User-Agent: Evolution 3.38.3-1 
MIME-Version: 1.0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r22;
 t=1649957587; bh=sWhEW1b87Jp94k3UOltA5O/t/o5Q5JoQ3CFh4RU7zx0=;
 h=Subject:From:To:Cc:Date:In-Reply-To:References;
 b=NSJuPIirywsIW1e2fPek5DcFcGquEo1tJQKKorhXYhWSnTXU0C8WP01J27g0kZYRP
 eQBXZNFy6EkCSwOGD7v/O4OOjs3zwCB9YHbWeepVoKPLi9LBnCFPre3ZFbMDQnH0UN
 4ZeOk6Z3KIb1fXqUbdzZyj17OLu+qjXSNtCFR0mvePWcQA2aboz2QXfR0u90WTu+j0
 WuosC/yd1qSH3/fr9TFaxm0h1VZDwoHMSrHUYOEkGp1m7SmBEs61QYQazdwaqjMno/
 B/D5S8AdujRUj/mNcBj3cCRBOBqzCk5j4iB3t0VklnXNub03Qz/HzsEZaEWho/TLU5
 MS7VhY+iBG+Hg==
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Stefan <stefan-guix@HIDDEN>,
 Vagrant Cascadian <vagrant@HIDDEN>,
 Ludovic =?ISO-8859-1?Q?Court=E8s?= <ludo@HIDDEN>,
 "dannym@HIDDEN" <dannym@HIDDEN>,
 "48314 <at> debbugs.gnu.org" <48314 <at> debbugs.gnu.org>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)


--=-1H1mKzsrfGLWrj6Alozy
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

phodina schreef op do 14-04-2022 om 15:53 [+0000]:
> Yes,
>=20
> guile-fibers are now fixed, but the cross compile build fails now on
> shepherd-0.9 due to guile-fibers not being available.

Possibly the problem is just that guile-fibers is only in 'inputs' and
not 'native-inputs' -- due to how compilation and the module system
works in Guile, they need to be in both.

Greetings,
Maxime.

--=-1H1mKzsrfGLWrj6Alozy
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYlhazRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7r/ZAQCnEfmywGkenWDS3A2JNh9qQdtu
jRpOnoQsgg99DbyIFQD8C002b/XUYvQ/edQSMYmNGDyivkxp+z4WG4DLi8sJBw0=
=S//B
-----END PGP SIGNATURE-----

--=-1H1mKzsrfGLWrj6Alozy--





Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 14 Apr 2022 15:56:40 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 14 11:56:40 2022
Received: from localhost ([127.0.0.1]:57016 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nf1po-0003It-CY
	for submit <at> debbugs.gnu.org; Thu, 14 Apr 2022 11:56:40 -0400
Received: from cascadia.aikidev.net ([173.255.214.101]:59402)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <vagrant@HIDDEN>) id 1nf1pm-0003Id-2g
 for 48314 <at> debbugs.gnu.org; Thu, 14 Apr 2022 11:56:39 -0400
Received: from localhost (unknown [IPv6:2600:3c01:e000:21:7:77:0:20])
 (Authenticated sender: vagrant@HIDDEN)
 by cascadia.aikidev.net (Postfix) with ESMTPSA id 0C5131AC62;
 Thu, 14 Apr 2022 08:56:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=debian.org;
 s=1.vagrant.user; t=1649951792;
 bh=I1pUHf/ElpSw5pfm9Okt/q2e1zhcxFZpJincMz1GZro=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=ld1OSadJJNhkw0K7b6EQ0jyRrjWBuL9USxKH8IEAKAMurkelJszB7tAOFgBFXv9lF
 tdIR8iaiSAFKPqC1rETG79D3PJkrPlLkreOzuy5Ten8vkPPWdxGenJbP1uHa3oPwXi
 mVkHFenYLnToKu5Si5g7vmVWdqSQA8ir/TslWstNchnrWXVyjxTzmVmIumbJ5/0P7h
 CH9+5hGsIGel0B5qCo8hiaMMW79n7D/Jc4ek/+C2MNUu08DX3hITS0k71R+v1zd+jw
 mgX4rYkRrJVvDTtzkCiYUDUe420OE0BffWN4wj6LRWfZ9aB4+V1sJA73e6B0dXkRbc
 jfvKtjhynIc+Q==
From: Vagrant Cascadian <vagrant@HIDDEN>
To: phodina <phodina@HIDDEN>, "48314 <at> debbugs.gnu.org"
 <48314 <at> debbugs.gnu.org>
Subject: Re: [PATCH v3] Install guix system on Raspberry Pi
In-Reply-To: <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
References: <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
Date: Thu, 14 Apr 2022 08:56:26 -0700
Message-ID: <87a6cnvetx.fsf@contorta>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-=";
 micalg=pgp-sha512; protocol="application/pgp-signature"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Stefan <stefan-guix@HIDDEN>,
 "dannym@HIDDEN" <dannym@HIDDEN>,
 Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain

On 2022-04-14, phodina@HIDDEN wrote:
> (u-boot-rpi-0-w, u-boot-rpi, u-boot-rpi-2, u-boot-rpi-3, u-boot-rpi-4,
> u-boot-rpi-64, u-boot-rpi-0-w-efi, u-boot-rpi-efi, u-boot-rpi-2-efi,
> u-boot-rpi-3-efi, u-boot-rpi-4-efi, u-boot-rpi-efi-64): New packages.

Comments from November are still relevent:

  https://issues.guix.gnu.org/48314#12

(e.g. drop drop u-boot-rpi-0-w*, u-boot-rpi, u-boot-rpi-efi, maybe
consider droping u-boot-rpi-2* and the 32-bit variants for rpi3 and
rpi4, as armhf is not well maintained at the moment).

Basically, ARMv6 is not supportable by guix, ARMv7 is poorly supported
in the armhf architecture, and ARMv8 is capable of running aarch64
(a.k.a. arm64):

  https://en.wikipedia.org/wiki/Raspberry_Pi#Specifications


Only proposing aarch64 variants would pretty much leave you with
rpi-arm64. The EFI variants and 32-bit variants supported on armhf could
be easily added later once the other patches land.


> +(define-public %u-boot-rpi-efi-configs
> +  '("CONFIG_OF_EMBED="
> +    "CONFIG_OF_BOARD=y"
> +    "CONFIG_BOOTDELAY=0"))

See comment:

  https://issues.guix.gnu.org/48314#15

e.g. Please do not set BOOTDELAY=0. It makes it nearly impossible to
debug. For people who want to live on the edge, they could build custom
variants and set it to 0.


> +(define-public u-boot-rpi-64
> +  (make-preinstalled-u-boot-package
> +   "rpi_arm64"
> +   "aarch64-linux-gnu"
> +   #:name "rpi-64"
> +   #:description %u-boot-rpi-description-64-bit))

Please keep package names consistent with defconfig
name. (e.g. u-boot-rpi-arm64). It's confusing enough without extra newly
invented names! :)


> +(define-public u-boot-rpi-3-efi
> +  (make-preinstalled-u-boot-package
> +   "rpi_3_32b"
> +   "arm-linux-gnueabihf"
> +   #:name "rpi-3-efi"
> +   #:configs %u-boot-rpi-efi-configs
> +   #:description %u-boot-rpi-efi-description-32-bit))

Ditto, or drop this variant; same for the 32-bit rpi-4 variants.


> Subject: [PATCH v3 2/8] build: kconfig: Add new module to modify a defconfig
>  file.
...
>  (define-public u-boot-pinebook
> -  (let ((base (make-u-boot-sunxi64-package "pinebook" "aarch64-linux-gnu")))
> -    (package
> -      (inherit base)
> -      (arguments
> -       (substitute-keyword-arguments (package-arguments base)
> -         ((#:phases phases)
> -          `(modify-phases ,phases
> -             (add-after 'unpack 'patch-pinebook-config
> -               ;; Fix regression with LCD video output introduced in 2020.01
> -               ;; https://patchwork.ozlabs.org/patch/1225130/
> -               (lambda _
> -                 (substitute* "configs/pinebook_defconfig"
> -                   (("CONFIG_VIDEO_BRIDGE_ANALOGIX_ANX6345=y") "CONFIG_VIDEO_BRIDGE_ANALOGIX_ANX6345=y\nCONFIG_VIDEO_BPP32=y"))
> -                 #t)))))))))
> +  (make-u-boot-sunxi64-package "pinebook" "aarch64-linux-gnu"
> +   ;; Fix regression with LCD video output introduced in 2020.01
> +   ;; https://patchwork.ozlabs.org/patch/1225130/
> +   #:configs '("CONFIG_VIDEO_BPP32=y")))

I like how this simplifies the package definitions where you need to
adjust the defconfig!

This particular workaround for u-boot-pinebook may no longer be needed,
thanks for the reminder to check.


>  (define-public u-boot-novena
> -  (let ((base (make-u-boot-package "novena" "arm-linux-gnueabihf")))
> +  (let ((base (make-u-boot-package "novena" "arm-linux-gnueabihf"
> +               ;; Patch configuration to disable loading u-boot.img from FAT
> +               ;; partition, allowing it to be installed at a device offset.
> +               #:configs '("CONFIG_SPL_FS_FAT="))))

Maybe this is different in upstream u-boot, but in the past setting it
to an empty value could result in the default value, which is why:

> -                 (substitute* "configs/novena_defconfig"
> -                   (("CONFIG_SPL_FS_FAT=y") "# CONFIG_SPL_FS_FAT is not set"))
> -                 #t)))))))))

... was used previously.


> Subject: [PATCH v3 5/8] gnu: raspberry-pi: Add defconfig objects to build
>  customized Linux kernels.
>
> gnu/packages/raspberry-pi.scm (make-raspi-defconig): New function to make
> downloaded defconfig objects from the Linux repository of the Raspberry Pi
> Foundation.
> (%bcm2709-defconfig, %bcm2710-defconfig, %bcm2711-defconfig,
> %bcm2835-defconfig, %bcmrpi-defconfig, %bcm2711-defconfig-64,
> %bcmrpi3-defconfig): New variables containing defconfig objects to build
> Linux kernels customized for Raspberry Pi single board computers.

Similar to my comments on u-boot variants, some of these are for models
that are not supportable on guix (rpi, rpi-0), so probably best to leave
out entirely, and the 32-bit variants for armhf are debatable at this
point.


live well,
  vagrant

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCYlhEKwAKCRDcUY/If5cW
qtkeAP0c+M3oO8eUcFKXVFHoY5Kr8nwQTvh3udPDYOmaNMj7dAEA9f69eAL8ydg4
T05WR5yUZNqKRMmBCjkkGnGgSe+fmw0=
=tQLe
-----END PGP SIGNATURE-----
--=-=-=--




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 14 Apr 2022 15:53:46 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 14 11:53:46 2022
Received: from localhost ([127.0.0.1]:57003 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nf1n0-0003Db-Dl
	for submit <at> debbugs.gnu.org; Thu, 14 Apr 2022 11:53:46 -0400
Received: from mail-40131.protonmail.ch ([185.70.40.131]:36181)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <phodina@HIDDEN>) id 1nf1mx-0003DN-QB
 for 48314 <at> debbugs.gnu.org; Thu, 14 Apr 2022 11:53:44 -0400
Date: Thu, 14 Apr 2022 15:53:33 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;
 s=protonmail; t=1649951617;
 bh=jaToy154P7NwBb2gVpR7FubNLBjQzXiJvoEjwIpsPns=;
 h=Date:To:From:Cc:Reply-To:Subject:Message-ID:In-Reply-To:
 References:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:
 Message-ID;
 b=EPRuZ9/kLSD1VamGO4OZI9qCdbXHOrv7ZV4+ClJsmaBaOddi2aKGu6MVEF3zXNNLN
 epKUleAP7obB4Q50WUmZ+8cpexIw5liTuvC5vcH+aQSW3+64aExYBfQu1meyO/G9Rp
 nLexsMH1YS7aOoRCBAKn/TIRlkL/c+CQoVbNeLM36vHlw3XJ+3ObpG16ckUDIQH2Dm
 oxB1YB+WRk29OczUnI2x+4QXt05yL9x8wA1kofZRphBHFfhvcmfmq1X0D4+rs8/lZZ
 8vROrM6liJSAE6vMiOaDWIX96KhVY6CyVaH9QQRpaChvOeVQ7h2rdqKwNmo8oVy2Yu
 Ls0pGz5ognFZg==
To: Maxime Devos <maximedevos@HIDDEN>
From: phodina <phodina@HIDDEN>
Subject: [bug#48314] [PATCH v3] Install guix system on Raspberry Pi
Message-ID: <NahlaZknYPJe6yty_Ivn-Wj6I65H9wNMtiD8-4pz5q6e8lten7MrpPxpotIlQ2u0QgVf3V-gAHOHYw3H-ZzRmU2NN5em5vSOruAT8Dc7uxc=@protonmail.com>
In-Reply-To: <08d2e5f4167486be4be7ef0dc024f1e2137b4bdf.camel@HIDDEN>
References: <19E4796A-B0DB-444F-8773-2E8D3EF6132D@HIDDEN>
 <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
 <08d2e5f4167486be4be7ef0dc024f1e2137b4bdf.camel@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed;
 boundary="b1_QQVv8a3KLGyROgE9coXJIzK4SjUOL16ueiArgqfo"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Stefan <stefan-guix@HIDDEN>,
 Vagrant Cascadian <vagrant@HIDDEN>,
 =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>,
 "dannym@HIDDEN" <dannym@HIDDEN>,
 "48314 <at> debbugs.gnu.org" <48314 <at> debbugs.gnu.org>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Reply-To: phodina <phodina@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

This is a multi-part message in MIME format.

--b1_QQVv8a3KLGyROgE9coXJIzK4SjUOL16ueiArgqfo
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

>
> > I've also attempted to cross-compile the system (from x86_64) but
> > there is at least one package that can't be build - guile-fibers-
> > 1.1.0. I've attached the build log as well.
>
>
> This one should now be fixed by
>
> 1f82602153 gnu: guile-fibers@HIDDEN: Support cross-compilation.
>
> Greetings,
> Maxime.

Yes,

guile-fibers are now fixed, but the cross compile build fails now on shephe=
rd-0.9 due to guile-fibers not being available.

Also the NTP requires this configure flag.

diff --git a/gnu/packages/ntp.scm b/gnu/packages/ntp.scm
index 7a3c033b2e..cb90432730 100644
--- a/gnu/packages/ntp.scm
+++ b/gnu/packages/ntp.scm
@@ -153,7 +153,8 @@ (define-public ntp
             `(("libcap" ,libcap))
             '())))
    (arguments
-    `(#:phases
+    `(#:configure-flags (list "--with-yielding-select=3Dyes")
+      #:phases
       (modify-phases %standard-phases
         (add-after 'unpack 'disable-network-test
                    (lambda _

----
Petr
--b1_QQVv8a3KLGyROgE9coXJIzK4SjUOL16ueiArgqfo
Content-Type: application/gzip; name=dnq1fk0xwj7fhmspnzqgdvlnk59p6p-shepherd-0.9.0.drv.gz
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=dnq1fk0xwj7fhmspnzqgdvlnk59p6p-shepherd-0.9.0.drv.gz

H4sIAAAAAAACA+082XbbOpLv/gqe9MwkOX0ocZMoeiZ9xlGcpa+vnWPHvTz5giAIgrsAiou+fgqU
bMsiKVuJbzIPfrKEWlCoKtQCQBYF4gVLqZIHSBDlD0EK9eri+nJ+qn44+Xaqnn69mH9+fbQXqogl
xoR4xFOQXxCuaCNNEQRnqSeORM8EOSoC8fqIpCXjWZqQtFBKxBlyY0D4evJNsiSFUmTKH2OaLsei
yDgZT2vGMbVneln6VkiR3gjuceS5Ik+aMg7VPKIqTOozqiLEcTC11Jily1oFHqo2MpyRMXZZerzF
E6e+KJ2mQgg3yI8W3kKUBm9mvqY33EaOSpcsJqo50kb2Lm3EJ4sQzdImqPJ4VYX1qnFKK2eBWaHc
rmKVYqxingnRI46ujYDpLksvcqe2ly+4zbCfiFq30MIU1OPGzJulHKuAvyxYLAb5GiOzIyg1UNjE
szpyAL/mNHRTagRRaC4So9RWhgomUvWRae0SMlZXuDQjy4mEzn3TykPqr5JVEwS0Sqmp0hXLgVLv
LESYQawboBKncYWdisaOFnbjrlb2Il0lgqouUBpAqo1mHZvMmAitcDGN0lIDPVBumR6bLsy09FZR
bav1Sp2MjNFkl9BieGpYFjMxslyL19ioUk7jWDCvYSIoVV/acjIynV1KFCRJWRl6russmmkx1X1n
Yja2783cRRQmqsd8f614syvwynSClFee0D2K3dyn4cxLSwOnoGmjdmPp7zgA09ij6S6t6XBRm2ls
YVN3JkbYuG7ozrwp8/gkqG0OMqfeemZrNOt6zNTRFivTp6ZpeXmVmnk6jSZOalXYsczccFWKqgjW
rHdJq5qWUzajWm5YiwnFzcrTGq7ZYhalznSmqYJ4ctJdujqsciMQnmNMpgyHILLPk1Wa5yHDTeVP
VcpJDnrqrNUzJuBFFDtpYuB45furgDKWe6VfrqKyYrB5OVmvdTYyO3t1MgHlCqbPEhRQ3dTThDVo
GiUT10oE9pGaoIiAwGbHL5pJ4sTuLDIXkas3TqIZonIqB00DhD19qrpIBGrCUpaguNVVZ83CyOkk
cmZ+bFBDrKjjNVHdeM4qNmsWlI4ae2rFUZ4TrnYUzbEMWlakeTxAi9TRar+qcpFHbFJrbunf7+q+
3atNHbQwSscxoxxbeoPcfOJOy8SqXCeMAtqGmf5wMgmMylowJ4j0xWpFmV7NTMPQGk9AwOCWUGnM
XCxnNX+EVADtYDT/7dPN/OL845dPN4OBfaLFLHSonYchngaJteALpE28hVV5HIc1fxCEYdoxBPp1
nH8QrAwnR5ZhmMzWoik3NDuNqlwTJrX9IE5tCJIuxeBZ2sga5iIgYEwXelObmnDqJi4be1L6ISq5
lpjGNJZcUJElDKtZLlTY0TL6PWA3pIr55cXV1c3Zl/eXJ5f/fj5tbEs/WzlTI/cqHmi+ScGEUVXh
kC40qxYTnxobWp+5hAsZuEfaLotD1bhNG66oNqk0w3ambmn509xITdpg3XOisLZXrfKWKRMFh4IA
MrKz0d2zGOBBVPVMatp85aCVz1aajWeNZxtTDsku8O2JvfHePUnU3GWJKwvXwQIFNav00swTO7QX
kUOdaLUy7TB8AksVaqGCYcl5v4/Mb76cz8+uP5w+k5ewFMdLj3y3mXvov8vUPXy+z9w9jJ6jGuth
+xye1MM2NqHotP3KxGVsaEEI8XzCSyyaNNQS24k3LIA3J2pAkCf369AkkLFA/sntPI/41tez66sX
//qV/jXGf/3ri+se7roX7//+EhlfIuOf6V4vwfHFxf4UF/t0/eXs9Obs4uTDxq2WKTjW48jzi9+/
wpenUL0/ufrcEp28Pzu9egLBE4LpQedjP88xnumcrG9LHHJw1UP/9MOrHuIDDrB6qA85Cuohf/rx
Sg/xgUccPRwOOebok/6A84oeciPGYB3Xc1eBRSO7ChzdXfEFj+xgQnUvfiwiB1HgLoyFTn3h2BoV
EJEDkeCFa5VJaUBGeGJEniZhVVlsZdUeSm3Lm7hu6Ac2i2c8pX4U9Yamp2a5pyW3/0db/icVyi/R
5CWadJ3tJSD92QHp0aPQg0LRznndM23q3dPJQzb07gnikzfzDuEBG3mH8pBNvEN64B7coT7E+3dX
G3o0SPB0srCZzdyZs0rKxXQaaxRq/hBbW6RbB6rbHPyU66tpLVCqWdA+aA21Zp7WzCLTiBa122w4
LAt/psYZRjERvZIctAd3aL9r/+05GIaW4F9Q3M8H98qPLHq8Hnhwzb++oz/oap+lMBLH6i23pZDA
1yS9ub4ayYlfK2uQ4mdcwaggNOON8upsfnNydvbqqJ/NQSIs0xzh6PWRCEgeEO61mtXGu98Tq28I
NCG3fzRKrB5ozjNaEFEMQLP+8Zan1w9LY9EPYGkRJwhnoh5mmnPiswE4JUVB6gFJGWiu7AHJjyOW
diiYkGbcHfYyPO4bux0a6X1QTtwsK0azXsoCJblaFqwP6MNu0yHVwrJ64aQGYnDp8V7g5enJh99P
96JUWexTlNJwJHCyF/NmmUZpVqVDiCVkQpalgyIHKB7QxLD+7rQ7xPQOgaV+1rGwnLFr4Twb9wx5
ZJRnPeMFGtGkD7CMBgl6x/Pi5v3lAK+1L+wh6wWJcoCdNyDCnbbyrOgBf7349vHL2elVv85I+r9u
FnuLJTj0uvDpQxIDIp19Of90fXLVA/kdCmOI+6J/yv3TQegkvNjUYSPRK/c8APcmZxntgd0tSBCv
B7wH5A25hYgGAHKdsnAB7fYreBXczM/7DXe5lOlLitPviIOi9HIDIw35U+84J0lWEnDPAnuQxAb0
DBuoXwyfDwDWCx4k6spycv3t88Vlx4lcqIo9FS3r8TBkIKxvIcilqSIYxli/dhiJpfsoDpfVxDDW
bcbfN1tcJAg8ZR+KzM6qx1nZ3RvbSLWMjTKCPio2XRIh9mElOTjwLsL56T87Jjl5f3H9TT0/6wDu
dgHqJBGE2wqoJ1X357G10EtOBufo+qlUWTdprkc5aaurHpWv4QVHqWBQpg5iAIccValaBDwrCiit
6CBqnFG6Dy4r/aVQBanzPdPlMcIk2SdSlkqnzoYRcua1/dRjixqEt80Y5gQ6kyxVEwRRZwiVpaTw
hhllPJLNAYT0kuFhgUQjCpIM84Gt7pIAlcRTcbzXXoLRFEFROgR3kWB4EJpmapAlfXJuyr6u+22V
K12eg/v0LoOphqaZg9BdwLeLDxe7Y6TolrFyDHP5JBA4eTEkUtxh9fnk/LfOXv5yfvUNGpnBfTlC
HUbzi6//hkqgU3Rn3rKvmr0dvx1+HAFiVNJXoXYQBeYsL54w5S3ixqiH8G4L0IMIpG88iWCZ5xl/
IvPb/fQU3HZvSdS+1qir7HVGfBo24lQ8RYgW52F/e1BPLM0kIFjnr48+nV8rbf5S1gtT7mC5JEiz
Qklbtkcd2oOmXD94XgouT4nacHp3ttAD6mGtP8JaZEuOZSQnLux2AdzXw+vvx8qom6aPFSwjg2T1
h3ztCvp9vXuI8p0vhSWr/RLclxO/Xoy2GPv1YkDd+AuFuC85f6EQdzXtAxm2DiCdMHBdqgf+ZGLX
s3Bi+o6oPYclceJrBtqddvMjlZ+4gtsu4RcqcdPJ/EIJtvqOny7FXXHx02fu03vK6tvrgybSm2q1
MvUot1yG43phNotpkIcN9DRNs57KWv8i69ll3ZcqDkpkd+p9fbTmo3iMEwwSNsfKq3GR5GO6ZLW6
doaHiXzk8VK9r3HXg6+UN5zE0BuURPF5lqzTMfAavXp7tE7NPzrD0Z3Qih8jChnnzav5/ObjxeXN
++svZx/eUYxfKa82v8q4+nx6dvbuGRQvh4Htc/NTNyfd2yyZLlBaRotJNdGFOZkK3Q4pzTHFEU7T
2Fd3dQ5cSCovUlQfwV7dBP92vNXru3o2vZla6uZI9/4SsEUJMlG869wPtqC2Q5e9KQGrvRuXiIMZ
t/bkP08uz6G+P1aWKRg1oylbgd9luewNwTC9Yh3hgGDZ+bXXJEh5f/VBlTUMOI28CtpgjUYj5cd+
W3WbAxUV309ZBaQAzW2qxO27KCYU0DqR8zZE7AjZuTyVF1u5xB0A7S6SQ+Ou+pwQJYlAlYqaP8MC
b1k9nEzeeUrm8m934fJdgrxfE8p/vPn95LfTtxI1zYYQ132HgLIZ6mnv7sJOdNT0dLI3GAGV97ZH
zSCYpxQBKhQvI6Kt1wu+TOVVmpIti3xZ7GjtkN/4jeXJbkfe87MraXpOFstW1l77J4L6SbGrqVbZ
96Djh5D69paqhwqIEsIpeZruYUjZPDXYBE+Irhs5lTey5xFFE5O3j/ksxMV+jwVAVwY561zZNBdc
qTIeiV7lbCF5xEfLuNjYSpHdj5KipBUWjWD0IaVY+hD5lMxXSE3wsrhzka40FVEQBPz2LcNmPnmc
1ifPPdfMDUFZrRgt26x/lXfi32lc6nQ+6OK9ClQQZF3o6RWVPjGESKJ1pJS1wTpQKnNdV3yCCoiu
Yu0dKbntWZ8oyDKVj1QKBPkeQp8CfxU1gyloS9QRziM5AYoUN2s3koob9B0pzj3pg1a7aPLWzkOp
5p5M5ptdqtsZ95BJLcJ0Sxkj3GZYxmd+UBczV3rnGFDHHaRxvGUW5rfuJK/YwThvfrIcb2UYk44b
98cwEcAG8hT5kgnxRoGwqshGWck4g+pWkngPjBtklfRLibcOBVCn5DzD0ONnfDCOKOrpToAEqnVI
X582CiXOAARE8LH1TbJjtIN+fz2WXx7OSOTQD/PsLGT+8SsUaoTDTiFinuXNSZ7/A8VL0hfg5x/P
2tcdEm++5FyeSvegSXNt0gREeGkbPBh1wBbg+jJf9aFAbJRWumXmQ9JsIwvENtCzrMQllZzgu1Lu
Xc5+ltzbHw/v/73FjvGe6x9jjPfNeS/d/ZjcUaCYmED1qmzeOyjrzuTWBNvt6bbXy4d7CmzbbQw/
g9C8DepQtE/9+qoMCdwHA8JhsiHIjpoP/V8h4/b7jkO3i7tV1d/eKRuhW6KuCN5ziOD16aPXkb5v
hR0HgTj/Zv0T8zbmohKxWCbvW0XfW5xwnvFj5WOLLHE3hwr/reTSqe6aHYUVo6MNMsSBdXP++r45
l/0VRksaFFApyTIDtHt89J93n5W//M9/sbTMIqK2XBT5mIujRHbYz9WpIk6XslFq++2tgxnZar90
3z+t+wYHYIW6vi4+VnSlIDxR1xebx8pffKjhsnzr+9+Uo85Rj+KDw94dD+lblxHyNk3m5OfzmhdP
+VWecmvlikGRt/YXRT/6PwPP2RMQSwAA

--b1_QQVv8a3KLGyROgE9coXJIzK4SjUOL16ueiArgqfo--





Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 14 Apr 2022 14:06:56 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 14 10:06:56 2022
Received: from localhost ([127.0.0.1]:56867 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nf07c-0006d1-66
	for submit <at> debbugs.gnu.org; Thu, 14 Apr 2022 10:06:56 -0400
Received: from xavier.telenet-ops.be ([195.130.132.52]:56206)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <maximedevos@HIDDEN>) id 1nf07Z-0006cr-SU
 for 48314 <at> debbugs.gnu.org; Thu, 14 Apr 2022 10:06:54 -0400
Received: from ptr-bvsjgyhxw7psv60dyze.18120a2.ip6.access.telenet.be
 ([IPv6:2a02:1811:8c09:9d00:3c5f:2eff:feb0:ba5a])
 by xavier.telenet-ops.be with bizsmtp
 id Je6s2700A4UW6Th01e6s7X; Thu, 14 Apr 2022 16:06:52 +0200
Message-ID: <08d2e5f4167486be4be7ef0dc024f1e2137b4bdf.camel@HIDDEN>
Subject: Re: [bug#48314] [PATCH v3] Install guix system on Raspberry Pi
From: Maxime Devos <maximedevos@HIDDEN>
To: phodina <phodina@HIDDEN>, "48314 <at> debbugs.gnu.org"
 <48314 <at> debbugs.gnu.org>
Date: Thu, 14 Apr 2022 16:06:51 +0200
In-Reply-To: <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
References: <19E4796A-B0DB-444F-8773-2E8D3EF6132D@HIDDEN>
 <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
Content-Type: multipart/signed; micalg="pgp-sha512";
 protocol="application/pgp-signature"; boundary="=-QVjoMau4sXM370T8X8+a"
User-Agent: Evolution 3.38.3-1 
MIME-Version: 1.0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r22;
 t=1649945212; bh=vQoXD82n25GjXRGkuO9lFRUWsij0Kgd2IrXliUoSOZE=;
 h=Subject:From:To:Cc:Date:In-Reply-To:References;
 b=ZsYP1/O5PedGhwXUieBUjQrmEyAvrBd9MFTGoifrTpiGreFYPZIQLJ9+FSiC4Qpqo
 mNQepKXz3qyFHo/lA4QTlwaLEz2R1Xd3tB11irGXAvW4RrRYkc0+VuRX6o9fK5aShI
 8ZprXSNJ+nc8vIwUSi8jqeeUc0OMwIFqiIFFQ5q3Q9jfKHYt80h0xcXqG87tX33YEe
 z/o7ivosj0HSHJo/ygwoydZGGROWemB0Xv3SU9Bnzg7k42OBn23Q4jPYJxKjf7dxOG
 oQ94kNzJupOEuZ6rybaqgKtwI8M0Q8pQmiWklQ/xoZjCmRgo0K8M3iEnvbUNMlWnvv
 74tlku0mTSdcg==
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Stefan <stefan-guix@HIDDEN>,
 Vagrant Cascadian <vagrant@HIDDEN>,
 Ludovic =?ISO-8859-1?Q?Court=E8s?= <ludo@HIDDEN>,
 "dannym@HIDDEN" <dannym@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)


--=-QVjoMau4sXM370T8X8+a
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

phodina via Guix-patches via schreef op do 14-04-2022 om 07:38 [+0000]:
> I've also attempted to cross-compile the system (from x86_64) but
> there is at least one package that can't be build - guile-fibers-
> 1.1.0. I've attached the build log as well.

This one should now be fixed by

  1f82602153 gnu: guile-fibers@HIDDEN: Support cross-compilation.

Greetings,
Maxime.

--=-QVjoMau4sXM370T8X8+a
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYlgqexccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7rT5AP9dGOLYZ984EsaZMRXS87uTZPKq
axF1JfaT5vtWh01rZgD+NSt5pjJa3b/9Vx2mZ5EPqggr9G/1ilndgLuXNeqBJgc=
=PC2/
-----END PGP SIGNATURE-----

--=-QVjoMau4sXM370T8X8+a--





Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 14 Apr 2022 14:00:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 14 10:00:53 2022
Received: from localhost ([127.0.0.1]:56831 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nf01e-00051p-Ld
	for submit <at> debbugs.gnu.org; Thu, 14 Apr 2022 10:00:53 -0400
Received: from baptiste.telenet-ops.be ([195.130.132.51]:57604)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <maximedevos@HIDDEN>) id 1nf01d-0004zQ-7v
 for 48314 <at> debbugs.gnu.org; Thu, 14 Apr 2022 10:00:45 -0400
Received: from ptr-bvsjgyhxw7psv60dyze.18120a2.ip6.access.telenet.be
 ([IPv6:2a02:1811:8c09:9d00:3c5f:2eff:feb0:ba5a])
 by baptiste.telenet-ops.be with bizsmtp
 id Je0j2700M4UW6Th01e0jHR; Thu, 14 Apr 2022 16:00:43 +0200
Message-ID: <5d9ba4b6fcbeb602c9d187611fd65606622549cf.camel@HIDDEN>
Subject: Re: [PATCH v5] Install guix system on Raspberry Pi
From: Maxime Devos <maximedevos@HIDDEN>
To: phodina <phodina@HIDDEN>
Date: Thu, 14 Apr 2022 16:00:43 +0200
In-Reply-To: <j-6Mh97olCgYy-HTnXD1Wddae1w06eUlRPTw9m2QCxidzQeWs7nIp9EBjGrtgSdImIddGLbRv6mI9cwKeFr5Y9KiaOQfVsMVmFy1DXbQ3I4=@protonmail.com>
References: <19E4796A-B0DB-444F-8773-2E8D3EF6132D@HIDDEN>
 <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
 <b661d9b6c7b44262285f544110b335ef02e6a402.camel@HIDDEN>
 <zMqJOXxxdBE_tlTtNY-q9vjI2_uBFY36RprO1tJWhHBh9S6NO4l46DHNOjHgM5GXf3SxAbC4tR27tN3sUZWS9Y69U70BGtc47McF0TE5Gaw=@protonmail.com>
 <86d36088dc4c81112e1529ef9e5e46d6629912c1.camel@HIDDEN>
 <j-6Mh97olCgYy-HTnXD1Wddae1w06eUlRPTw9m2QCxidzQeWs7nIp9EBjGrtgSdImIddGLbRv6mI9cwKeFr5Y9KiaOQfVsMVmFy1DXbQ3I4=@protonmail.com>
Content-Type: multipart/signed; micalg="pgp-sha512";
 protocol="application/pgp-signature"; boundary="=-muzNTRd+Ze3TV+n6Dmru"
User-Agent: Evolution 3.38.3-1 
MIME-Version: 1.0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r22;
 t=1649944843; bh=SfutqiINqPqrTaFvb//Y14nFnpme98Vthg74YUz/3bI=;
 h=Subject:From:To:Cc:Date:In-Reply-To:References;
 b=ZQbcrVPYUhUgITfOXiX00k8/F9jIvYix3HI7PP/oCHPTlX4DI2LTF6KXp1Hzf8DTo
 fdvPTi7VMAPRXOn9saOQogQTUjoVnETJhdOzTBV5sGNp0ju2TemQ1SZh1eRgNezRao
 29CSfU1qafDWuamE0cvTebps/fDKE6wtvShGmrrjv7NPObGFFAnO4Sfa8y5o2F1iHh
 1mmdUGPy9moPGIR/CqlwF5PuEj0VGQba+NLm+Uw3AxxnPDr7NjjL6C6IaoOoVwGtPX
 WhyXv/hAG5Jb5+2fk6MdRht8CohMqaWkN4fNzsjWUyraz3+1n5uH/juv3oLfC6QJ66
 9pzYmdDkpaJVQ==
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Stefan <stefan-guix@HIDDEN>,
 "48314 <at> debbugs.gnu.org" <48314 <at> debbugs.gnu.org>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)


--=-muzNTRd+Ze3TV+n6Dmru
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

phodina schreef op do 14-04-2022 om 12:23 [+0000]:
> However, I experience an issue when login into the system. I can get
> there using my SSH key, but it seems the passwd set-uid binary is
> missing from the profile:
>=20
> $ ssh pi@HIDDEN
> You are required to change your password immediately (administrator
> enforced).
> WARNING: Your password has expired.
> passwd: no such file or directory
> [...]

I don't know what's going in here, though the =E2=80=98passwd not in $PATH=
=E2=80=99
seems a plausible hypothesis to me.

Greetings,
Maxime.

--=-muzNTRd+Ze3TV+n6Dmru
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYlgpCxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7lSOAQCyLEiyKCA7oChvitNIJYOK8qaF
ItmKymjIfR/qUz5H6QEAtCl/6bD5kS8F2A+fsfHGzNouFVncYczyvXLRtVuBEgg=
=7eTr
-----END PGP SIGNATURE-----

--=-muzNTRd+Ze3TV+n6Dmru--





Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 14 Apr 2022 13:57:44 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 14 09:57:44 2022
Received: from localhost ([127.0.0.1]:56823 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nezyi-00049q-FO
	for submit <at> debbugs.gnu.org; Thu, 14 Apr 2022 09:57:44 -0400
Received: from andre.telenet-ops.be ([195.130.132.53]:39382)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <maximedevos@HIDDEN>) id 1nezyg-00049g-Fv
 for 48314 <at> debbugs.gnu.org; Thu, 14 Apr 2022 09:57:43 -0400
Received: from ptr-bvsjgyhxw7psv60dyze.18120a2.ip6.access.telenet.be
 ([IPv6:2a02:1811:8c09:9d00:3c5f:2eff:feb0:ba5a])
 by andre.telenet-ops.be with bizsmtp
 id Jdxg2700C4UW6Th01dxgLQ; Thu, 14 Apr 2022 15:57:40 +0200
Message-ID: <80407def8662e15c9a6ab7ffcfaaa89137641747.camel@HIDDEN>
Subject: Re: [PATCH v5] Install guix system on Raspberry Pi
From: Maxime Devos <maximedevos@HIDDEN>
To: phodina <phodina@HIDDEN>
Date: Thu, 14 Apr 2022 15:57:35 +0200
In-Reply-To: <_G8Wp0VvUVQwRBwRglLXwBugZu8x_4_D739HjTzIFUqEBlHTehUq9JkCc0pSXhvZC1bJZTlFicZBHYs5ZROL_4LVIPQs34I2b7OymZM0FNU=@protonmail.com>
References: <19E4796A-B0DB-444F-8773-2E8D3EF6132D@HIDDEN>
 <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
 <b661d9b6c7b44262285f544110b335ef02e6a402.camel@HIDDEN>
 <zMqJOXxxdBE_tlTtNY-q9vjI2_uBFY36RprO1tJWhHBh9S6NO4l46DHNOjHgM5GXf3SxAbC4tR27tN3sUZWS9Y69U70BGtc47McF0TE5Gaw=@protonmail.com>
 <86d36088dc4c81112e1529ef9e5e46d6629912c1.camel@HIDDEN>
 <j-6Mh97olCgYy-HTnXD1Wddae1w06eUlRPTw9m2QCxidzQeWs7nIp9EBjGrtgSdImIddGLbRv6mI9cwKeFr5Y9KiaOQfVsMVmFy1DXbQ3I4=@protonmail.com>
 <_G8Wp0VvUVQwRBwRglLXwBugZu8x_4_D739HjTzIFUqEBlHTehUq9JkCc0pSXhvZC1bJZTlFicZBHYs5ZROL_4LVIPQs34I2b7OymZM0FNU=@protonmail.com>
Content-Type: multipart/signed; micalg="pgp-sha512";
 protocol="application/pgp-signature"; boundary="=-HeWEJrHFDddSfh32VLoM"
User-Agent: Evolution 3.38.3-1 
MIME-Version: 1.0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r22;
 t=1649944660; bh=mSDXyHcikKj/Wfh3YpMI5bviwKmSq+eTpfXjHpi+nrE=;
 h=Subject:From:To:Cc:Date:In-Reply-To:References;
 b=F++sl97MkVOzRSHErNItwh+d6maTfY924SmAdgiD+qK5LaXQmngK7NcZPVzPBhKC2
 XvgmMGAhJBGsgq7Da7WNkva74P+zHJ9uK7bG+o8Mz3kaycWm0QupiZ1MgKyVIgolzN
 KhWD0lNk127gRxsOaDeXazV2e+UfKQJv6ck8v8/fFCYUnojD8AQhcBGp/IF7PeukbB
 yvCPWsvuZe/48INGHPGb3XWBsTONzsDNnz3E8BMksMDexFx+lFVwf7Ll1r42R8NZdS
 rqxW9xuOczLTrx7VwNxOBjzgxDVIVuFFLMsK67LdvqYxFs6LyLi48Y+uUEiOHvo2r/
 mz9qvvR1W1pJQ==
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Stefan <stefan-guix@HIDDEN>,
 "48314 <at> debbugs.gnu.org" <48314 <at> debbugs.gnu.org>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)


--=-HeWEJrHFDddSfh32VLoM
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

phodina schreef op do 14-04-2022 om 13:03 [+0000]:
> ~$ ssh pi@HIDDEN
> Last login: Thu Apr 14 14:52:56 2022 from 192.168.1.224
> Could not chdir to home directory /home/pi: Permission denied
> -bash: /home/pi/.bash_profile: Permission denied
> -bash-5.1$ id -u
> 1002
> -bash-5.1$ id -gn
> users
> -bash-5.1$ sudo -E /gnu/store/ja92d7xpmyh94gm6n83bajx9dy4h6pbl-bash-5.1.8=
/bin/bash
> root@raspberrypi-guix /# ls -al /home/pi
> total 40
> drwx------ 4 1000 users 4096 Nov 24 08:16 ./

You are logging in as 1002.  /home/pi is owned by =E2=80=981000=E2=80=99. =
=C2=A0Is this
difference intentional?

Maybe you have added two users, but with the home directory?
(guesswork).

> As you can see the execute bit is missing. Therefore running

The user has the read-write-execute bits, the group and other don't.

> chmod +x /home/pi/
>
> fixed the problem. But I'm unsure why the home dir was created
> without the those flags.

I'm not on Guix System at the moment, so I cannot tell what the usual
behaviour is, but why wouldn't the home directory be non-group-
executable and non-other executable?=C2=A0

Unless you want to share the contents of your home to other users on
the system, or if you have a web server that looks for
http://.../~pi/index.html in /home/pi/web/index.html or the like,
restricting readability, writability and executability to the actual
=E2=80=98owner=E2=80=99 of the directory seems good security practice to me=
.

Usually, AFAICT, all that's needed is for $HOME to be user-readable,
writable and executable.

(/me quickly does "chmod go-rwx $HOME")

Greetings,
Maxime.

--=-HeWEJrHFDddSfh32VLoM
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYlgoTxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7ofTAP4m9v+xx+ODX/ys/yU5lzerybnC
tIxqzeIQNpw5I/3HNwEAyeDw2MPo0n0NpfAhS+maT1nRfpD+Qgv1MpADGo8rdA4=
=gFe5
-----END PGP SIGNATURE-----

--=-HeWEJrHFDddSfh32VLoM--





Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 14 Apr 2022 13:03:22 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 14 09:03:22 2022
Received: from localhost ([127.0.0.1]:55579 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nez86-0002S4-Ls
	for submit <at> debbugs.gnu.org; Thu, 14 Apr 2022 09:03:22 -0400
Received: from mail-40134.protonmail.ch ([185.70.40.134]:30326)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <phodina@HIDDEN>) id 1nez83-0002Rq-GU
 for 48314 <at> debbugs.gnu.org; Thu, 14 Apr 2022 09:03:21 -0400
Date: Thu, 14 Apr 2022 13:03:10 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;
 s=protonmail; t=1649941392;
 bh=5/07Jho388PPpFQ0eM1XsQzgIM3MtsF38zPj2ZPs2PI=;
 h=Date:To:From:Cc:Reply-To:Subject:Message-ID:In-Reply-To:
 References:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:
 Message-ID;
 b=zg/JmrIQrqBAAC9f+cv8ptCBnT5WRdPoU1c1tPzug7A6cyFckhwNJGJ+EiiBHRvwZ
 jq5zRR13cUteA63Gif505/SayqAiiqez7te9F/Afa5nzJxxmY/3QrzYZk/kn+T0zNm
 3q3ITqoZnis/SpIiBd+gzkrqEJe04nMNPPjt3Dk3riaMnXj5sosYP73EJmTehq7PHF
 LbD9uOoxScGIivEWQztu8tjBXC2DckDIgbMuyet06rbEstO1Xxk1ZnETDUQBPkgQku
 o3Z8pisfg19902MlH2GGMqilakZN7Fgv6tQsxxsgt0G8HuKCz4E7ul0r23EA0/Dnyw
 T7JQ1kUGvxFog==
To: Maxime Devos <maximedevos@HIDDEN>
From: phodina <phodina@HIDDEN>
Subject: [PATCH v5] Install guix system on Raspberry Pi
Message-ID: <_G8Wp0VvUVQwRBwRglLXwBugZu8x_4_D739HjTzIFUqEBlHTehUq9JkCc0pSXhvZC1bJZTlFicZBHYs5ZROL_4LVIPQs34I2b7OymZM0FNU=@protonmail.com>
In-Reply-To: <j-6Mh97olCgYy-HTnXD1Wddae1w06eUlRPTw9m2QCxidzQeWs7nIp9EBjGrtgSdImIddGLbRv6mI9cwKeFr5Y9KiaOQfVsMVmFy1DXbQ3I4=@protonmail.com>
References: <19E4796A-B0DB-444F-8773-2E8D3EF6132D@HIDDEN>
 <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
 <b661d9b6c7b44262285f544110b335ef02e6a402.camel@HIDDEN>
 <zMqJOXxxdBE_tlTtNY-q9vjI2_uBFY36RprO1tJWhHBh9S6NO4l46DHNOjHgM5GXf3SxAbC4tR27tN3sUZWS9Y69U70BGtc47McF0TE5Gaw=@protonmail.com>
 <86d36088dc4c81112e1529ef9e5e46d6629912c1.camel@HIDDEN>
 <j-6Mh97olCgYy-HTnXD1Wddae1w06eUlRPTw9m2QCxidzQeWs7nIp9EBjGrtgSdImIddGLbRv6mI9cwKeFr5Y9KiaOQfVsMVmFy1DXbQ3I4=@protonmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Stefan <stefan-guix@HIDDEN>,
 "48314 <at> debbugs.gnu.org" <48314 <at> debbugs.gnu.org>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Reply-To: phodina <phodina@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Here's more details about the login issue.

I've chrooted into the SDcard and setup the password for the pi user manual=
ly.

Then booted the board and login:

~$ ssh pi@HIDDEN
Last login: Thu Apr 14 14:52:56 2022 from 192.168.1.224
Could not chdir to home directory /home/pi: Permission denied
-bash: /home/pi/.bash_profile: Permission denied
-bash-5.1$ id -u
1002
-bash-5.1$ id -gn
users
-bash-5.1$ sudo -E /gnu/store/ja92d7xpmyh94gm6n83bajx9dy4h6pbl-bash-5.1.8/b=
in/bash
root@raspberrypi-guix /# ls -al /home/pi
total 40
drwx------ 4 1000 users 4096 Nov 24 08:16 ./
drwxr-xr-x 4 root root  4096 Jan  1  1970 ../
-rw-r--r-- 1 1000 users   85 Jan  1  1970 .bash_profile
-rw-r--r-- 1 1000 users  834 Jan  1  1970 .bashrc
drwxr-xr-x 3 1000 users 4096 Jan  1  1970 .config/
-rw-r--r-- 1 1000 users  235 Jan  1  1970 .gdbinit
-rw-r--r-- 1 1000 users  789 Jan  1  1970 .guile
drwxr-xr-x 2 root root  4096 Nov 24 08:16 .ssh/
-rw-r--r-- 1 1000 users   47 Jan  1  1970 .Xdefaults
-rw-r--r-- 1 1000 users   62 Jan  1  1970 .zprofile


As you can see the execute bit is missing. Therefore running

chmod +x /home/pi/

fixed the problem. But I'm unsure why the home dir was created without the =
those flags.

Is it a side effect of using the following declaration?

(home-directory "/home/pi")

----
Petr




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 14 Apr 2022 12:23:40 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 14 08:23:40 2022
Received: from localhost ([127.0.0.1]:55543 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1neyVg-0001Q2-07
	for submit <at> debbugs.gnu.org; Thu, 14 Apr 2022 08:23:40 -0400
Received: from mail-4316.protonmail.ch ([185.70.43.16]:57323)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <phodina@HIDDEN>) id 1neyVe-0001Pm-3f
 for 48314 <at> debbugs.gnu.org; Thu, 14 Apr 2022 08:23:38 -0400
Date: Thu, 14 Apr 2022 12:23:20 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;
 s=protonmail; t=1649939008;
 bh=+33li8ehsll2Sw8BK8dFVO96EZ8wa2eZyoa84t9OD0c=;
 h=Date:To:From:Cc:Reply-To:Subject:Message-ID:In-Reply-To:
 References:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:
 Message-ID;
 b=08IIAKUMYS9DkEBpubkJE0kn363mq7aIqyKuzVvgtwwWUz6ivY1ew8Nm1yoW6PQMb
 6ai4Z/BrzppWxFO00UvfG3smbaICpIcHShUMmv84oVz/4ZwrbYOQD0eHoKtwHI8TZj
 FAhACK7bogsPdWX14OD/Y7ji15BCu92Ff3U1FaWvweJnxYF/yeefYS974B+7h56Lji
 b+XEuShJB/MhYCySBmHCy3e+kX/c5wPoiyhMOCu8qevDH1PE2mIL7/Sk5KoJLW7Tsi
 9ID/DuMMV2k86HBVTgd15YCV3UyIOZ4mRCxXU7drHJ0laE/WwnELRkRx9uL8PnKl/C
 BbROhMf6BMJAg==
To: Maxime Devos <maximedevos@HIDDEN>
From: phodina <phodina@HIDDEN>
Subject: [PATCH v5] Install guix system on Raspberry Pi
Message-ID: <j-6Mh97olCgYy-HTnXD1Wddae1w06eUlRPTw9m2QCxidzQeWs7nIp9EBjGrtgSdImIddGLbRv6mI9cwKeFr5Y9KiaOQfVsMVmFy1DXbQ3I4=@protonmail.com>
In-Reply-To: <86d36088dc4c81112e1529ef9e5e46d6629912c1.camel@HIDDEN>
References: <19E4796A-B0DB-444F-8773-2E8D3EF6132D@HIDDEN>
 <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
 <b661d9b6c7b44262285f544110b335ef02e6a402.camel@HIDDEN>
 <zMqJOXxxdBE_tlTtNY-q9vjI2_uBFY36RprO1tJWhHBh9S6NO4l46DHNOjHgM5GXf3SxAbC4tR27tN3sUZWS9Y69U70BGtc47McF0TE5Gaw=@protonmail.com>
 <86d36088dc4c81112e1529ef9e5e46d6629912c1.camel@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed;
 boundary="b1_dy1TZ2hS49oNQXeFOaGaAgaz8PDQdSfZJR0gkUp7ur0"
X-Debbugs-Envelope-To: 48314
Cc: Stefan <stefan-guix@HIDDEN>,
 "48314 <at> debbugs.gnu.org" <48314 <at> debbugs.gnu.org>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Reply-To: phodina <phodina@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>

This is a multi-part message in MIME format.

--b1_dy1TZ2hS49oNQXeFOaGaAgaz8PDQdSfZJR0gkUp7ur0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Thanks Maxime,

sorry for silly mistake.

Here are the updated patches. The last changes are part of the 4th patch in=
 the patch set.

After build I installed it to the SD card using following command:

sudo -E ./pre-inst-env guix system init gnu/system/examples/raspberry-pi-64=
.tmpl /mnt

However, I experience an issue when login into the system. I can get there =
using my SSH key, but it seems the passwd set-uid binary is missing from th=
e profile:

$ ssh pi@HIDDEN
You are required to change your password immediately (administrator enforce=
d).
WARNING: Your password has expired.
passwd: no such file or directory

I understand that the password is not set and the account is accessed throu=
gh SSH so it asks after login to change it. How come it's possible to chang=
e it? I tried to add shadow into the packages, but the error said, it's alr=
eady part of the system, so my guess is that it's just missing in the PATH =
variable. Could it be due to the fact it's present in /run/setuid-programs?

----
Petr

--b1_dy1TZ2hS49oNQXeFOaGaAgaz8PDQdSfZJR0gkUp7ur0
Content-Type: text/x-patch; name=v5-0001-gnu-bootloader-Rework-chaining-add-grub-efi-netbo.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=v5-0001-gnu-bootloader-Rework-chaining-add-grub-efi-netbo.patch

RnJvbSA3YjlhYTRhNTc0MDRkMzlmMmFlZDk0MGFlZjIwMjY2NjdiZmNhMzRlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gPHN0ZWZhbi1ndWl4QHZvZGFmb25lbWFpbC5kZT4K
RGF0ZTogV2VkLCAxMyBBcHIgMjAyMiAyMTowMjowNyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjUg
MS84XSBnbnU6IGJvb3Rsb2FkZXI6IFJld29yayBjaGFpbmluZywgYWRkCiBncnViLWVmaS1uZXRi
b290LXJlbW92YWJsZS1ib290bG9hZGVyLgpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6
IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJp
dAoKKiBkb2MvZ3VpeC50ZXhpIChCb290bG9hZGVyIENvbmZpZ3VyYXRpb24pOiBEZXNjcmliZSB0
aGUgbmV3CuKAmGdydWItZWZpLW5ldGJvb3QtcmVtb3ZhYmxlLWJvb3Rsb2FkZXLigJkuICBNZW50
aW9uIHVzZWQgc3ViLWRpcmVjdG9yaWVzIGFuZAp0aGF0IHRoZSBVRUZJIEJvb3QgTWFuYWdlciBp
cyBub3QgbW9kaWZpZWQuICBBZHZpY2UgdG8gZGlzYWJsZSB3cml0ZS1hY2Nlc3MKb3ZlciBURlRQ
LgoqIGdudS9ib290bG9hZGVyLnNjbSAoZWZpLWJvb3Rsb2FkZXItcHJvZmlsZSk6IEFsbG93IGEg
bGlzdCBvZiBwYWNrYWdlcyBhbmQKY29sbGVjdCBldmVyeXRoaW5nIGRpcmVjdGx5IGluIHRoZSBw
cm9maWxlLCBhdm9pZGluZyBhIHNlcGFyYXRlIGNvbGxlY3Rpb24KZGlyZWN0b3J5LiAgUmVuYW1l
ZCB0aGUgcHJvZmlsZSBmcm9tICJib290bG9hZGVyLXByb2ZpbGUiIHRvCiJlZmktYm9vdGxvYWRl
ci1wcm9maWxlIi4KW2Jvb3Rsb2FkZXItY29sbGVjdGlvbl06IFJlbmFtZWQgdG8g4oCmCltlZmkt
Ym9vdGxvYWRlci1wcm9maWxlLWhvb2tdOiDigKYgdGhpcyBhbmQgcmVtb3ZlZCB1bnVzZWQgbW9k
dWxlcyBhbmQgdGhlCmNyZWF0aW9uIG9mIHRoZSBub3cgdW5uZWVkZWQgY29sbGVjdGlvbiBkaXJl
Y3RvcnkuCihlZmktYm9vdGxvYWRlci1jaGFpbik6IEFkZGVkIHBhY2thZ2VzIGFuZCBkaXNrLWlt
YWdlLWluc3RhbGxlciBhcmd1bWVudHMuClJlbW92ZWQgaGFuZGxpbmcgb2YgdGhlIGNvbGxlY3Rp
b24gZGlyZWN0b3J5LCBub3cgb25seSBjYWxsaW5nIHRoZSBnaXZlbgppbnN0YWxsZXIgcHJvY2Vk
dXJlLgoqIGdudS9ib290bG9hZGVyL2dydWIuc2NtIChtYWtlLWdydWItZWZpLW5ldGJvb3QtaW5z
dGFsbGVyKTogTmV3IGhlbHBlci4KKG1ha2UtZ3J1Yi1jb25maWd1cmF0aW9uKTogTmV3IGhlbHBl
ciBiYXNlZCBvbiAoZ3J1Yi1jb25maWd1cmF0aW9uLWZpbGUpLgpBZGRpbmcgZ3J1YiBhcmd1bWVu
dCwgZml4ZWQgaW5kZW50YXRpb24sIHJlbW92ZW5kIGNvZGUgdG8gZ2V0IGdydWIuCihncnViLWNv
bmZpZ3VyYXRpb24tZmlsZSk6IE5vdyB1c2luZyAobWFrZS1ncnViLWNvbmZpZ3VyYXRpb24pLgoo
Z3J1Yi1lZmktY29uZmlndXJhdGlvbi1maWxlKTogTmV3IGZ1bmN0aW9uIHVzaW5nIChtYWtlLWdy
dWItY29uZmlndXJhdGlvbikuCkluc3RlYWQgb2YgZ2V0dGluZyB0aGUgZ3J1Yi1lZmkgcGFja2Fn
ZSBmcm9tIHRoZSBib290bG9hZGVyLWNvbmZpZ3VyYXRpb24KdGhpcyBmdW5jdGlvbiByZWZlcnMg
dG8gdGhlIGdydWItZWZpIHBhY2thZ2UgZGlyZWN0bHkuCihncnViLWNmZyk6IE5ldyB2YXJpYWJs
ZSB0byByZXBsYWNlICIvYm9vdC9ncnViL2dydWIuY2ZnIi4KKGluc3RhbGwtZ3J1Yi1lZmktbmV0
Ym9vdCk6IFJlbW92ZWQsIHRoZSBmdW5jdGlvbmFsaXR5IGdvdCBtb3ZlZC4KKG1ha2UtZ3J1Yi1l
ZmktbmV0Ym9vdC1pbnN0YWxsZXIpOiBOZXcgaGVscGVyIGZ1bmN0aW9uIHRvIHJldHVybiBhIGN1
c3RvbWl6ZWQKaW5zdGFsbGVyIGZvciBhIGNlcnRhaW4gZWZpLXN1Yi1kaXJlY3RvcnkuICBUaGUg
aW5zdGFsbGVyIGJhc2ljYWxseSBjb3BpZXMKYSBwcmUtaW5zdGFsbGVkIGVmaS1ib290bG9hZGVy
LXByb2ZpbGUsIGFuZCBhZGRzIG5lZWRlZCBzeW1saW5rcyBmb3IgYm9vdGluZwpvdmVyIG5ldHdv
cmssIG9yIOKAkyBvbiBhbiBFU1Ag4oCTIGFuIGludGVybWVkaWF0ZSBncnViLWNmZyB0byBsb2Fk
IHRoZSBmaW5hbApncnViLWNmZyBmaWxlLgooZ3J1Yi1ib290bG9hZGVyKTogTm93IHVzaW5nIHRo
ZSBncnViLWNmZyB2YXJpYWJsZS4KKGdydWItZWZpLWJvb3Rsb2FkZXIpOiBOb3cgdXNpbmcgdGhl
IGdydWItY2ZnIHZhcmlhYmxlLiAgUmVtb3ZlZCBpbmhlcml0YW5jZSwKZ2l2aW5nIGNvbXBsZXRl
IHNldCBvZiBmaWVsZHMuCihtYWtlLWdydWItZWZpLW5ldGJvb3QtYm9vdGxvYWRlcik6IE5ldyBo
ZWxwZXIgZnVuY3Rpb24uCihncnViLWVmaS1uZXRib290LWJvb3Rsb2FkZXIpOiBOb3cgdXNpbmcg
dGhlIGhlbHBlci4KKGdydWItZWZpLW5ldGJvb3QtcmVtb3ZhYmxlLWJvb3Rsb2FkZXIpOiBOZXcg
Ym9vdGxvYWRlciB1c2luZyB0aGUgaGVscGVyLgpJdCB1c2VzIHRoZSBlZmktc3ViLWRpcmVjdG9y
eSAiZWZpL2Jvb3QiIGZvciByZW1vdmFibGUgbWVkaWEuCiogZ251L3BhY2thZ2VzL2Jvb3Rsb2Fk
ZXJzLnNjbSAobWFrZS1ncnViLWVmaS1uZXRib290KTogTmV3IGZ1bmN0aW9uIHRvIHJldHVybgph
IGdydWItZWZpIHBhY2thZ2UgcHJlLWluc3RhbGxlZCB2aWEgZ3J1Yi1ta25ldGRpciwgY3VzdG9t
aXplZCBmb3IgYW4KZWZpLXN1Yi1kaXJlY3RvcnkgYW5kIGFibGUgdG8gYm9vdCB2aWEgbmV0d29y
ayBhbmQgbG9jYWwgc3RvcmFnZS4KClRoZSByZXdvcmsgYWxsb3dzIHRvIHVzZSBhbiAoZWZpLWJv
b3Rsb2FkZXItY2hhaW4pIGxpa2UgdGhpcywgd2hpY2ggaXMgYWJsZQp0byBib290IG92ZXIgbmV0
d29yayBvciBsb2NhbCBzdG9yYWdlLCBkZXBlbmRpbmcgb24gdGhlIHN5bWxpbmstc3VwcG9ydCBh
dAp0aGUgYm9vdGxvYWRlci10YXJnZXQ6Cgoob3BlcmF0aW5nLXN5c3RlbQogKGJvb3Rsb2FkZXIK
ICAgKGJvb3Rsb2FkZXItY29uZmlndXJhdGlvbgogICAgIChib290bG9hZGVyCiAgICAgICAoZWZp
LWJvb3Rsb2FkZXItY2hhaW4KICAgICAgICAgZ3J1Yi1lZmktbmV0Ym9vdC1yZW1vdmFibGUtYm9v
dGxvYWRlcgogICAgICAgICAjOnBhY2thZ2VzIChsaXN0IG15LWZpcm13YXJlLXBhY2thZ2UKICAg
ICAgICAgICAgICAgICAgICAgICAgICBteS11LWJvb3QtcGFja2FnZSkKICAgICAgICAgIzpmaWxl
cyAobGlzdCAocGxhaW4tZmlsZSAiY29uZmlnLnR4dCIKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAia2VybmVsPXUtYm9vdC5iaW4iKSkKICAgICAgICAgIzpob29rcyBteS1zcGVj
aWFsLWJvb3Rsb2FkZXItcHJvZmlsZS1tYW5pcHVsYXRvcikpCiAgICAgKHRhcmdldCAiL2Jvb3Rp
L2VmaSIpCiAgICAg4oCmKSkKIOKApikKKQoKZGlmZiAtLWdpdCBhL2RvYy9ndWl4LnRleGkgYi9k
b2MvZ3VpeC50ZXhpCmluZGV4IGE4NjViMmUyZTQuLjRiMzUxNDJlOTUgMTAwNjQ0Ci0tLSBhL2Rv
Yy9ndWl4LnRleGkKKysrIGIvZG9jL2d1aXgudGV4aQpAQCAtMzU3MTAsOCArMzU3MTAsOSBAQCBU
aGUgdHlwZSBvZiBhIGJvb3Rsb2FkZXIgY29uZmlndXJhdGlvbiBkZWNsYXJhdGlvbi4KIEBjaW5k
ZXggQklPUywgYm9vdGxvYWRlcgogVGhlIGJvb3Rsb2FkZXIgdG8gdXNlLCBhcyBhIEBjb2Rle2Jv
b3Rsb2FkZXJ9IG9iamVjdC4gIEZvciBub3cKIEBjb2Rle2dydWItYm9vdGxvYWRlcn0sIEBjb2Rl
e2dydWItZWZpLWJvb3Rsb2FkZXJ9LAotQGNvZGV7Z3J1Yi1lZmktbmV0Ym9vdC1ib290bG9hZGVy
fSwgQGNvZGV7ZXh0bGludXgtYm9vdGxvYWRlcn0gYW5kCi1AY29kZXt1LWJvb3QtYm9vdGxvYWRl
cn0gYXJlIHN1cHBvcnRlZC4KK0Bjb2Rle2dydWItZWZpLW5ldGJvb3QtYm9vdGxvYWRlcn0sCitA
Y29kZXtncnViLWVmaS1uZXRib290LXJlbW92YWJsZS1ib290bG9hZGVyfSwKK0Bjb2Rle2V4dGxp
bnV4LWJvb3Rsb2FkZXJ9IGFuZCBAY29kZXt1LWJvb3QtYm9vdGxvYWRlcn0gYXJlIHN1cHBvcnRl
ZC4KIAogQGNpbmRleCBBUk0sIGJvb3Rsb2FkZXJzCiBAY2luZGV4IEFBcmNoNjQsIGJvb3Rsb2Fk
ZXJzCkBAIC0zNTczNyw5ICszNTczOCwxMCBAQCBidWlsZCBhIGRpc2tsZXNzIEd1aXggc3lzdGVt
LgogCiBUaGUgaW5zdGFsbGF0aW9uIG9mIHRoZSBAY29kZXtncnViLWVmaS1uZXRib290LWJvb3Rs
b2FkZXJ9IGdlbmVyYXRlcyB0aGUKIGNvbnRlbnQgb2YgdGhlIFRGVFAgcm9vdCBkaXJlY3Rvcnkg
YXQgQGNvZGV7dGFyZ2V0c30gKEBweHJlZntCb290bG9hZGVyCi1Db25maWd1cmF0aW9uLCBAY29k
ZXt0YXJnZXRzfX0pLCB0byBiZSBzZXJ2ZWQgYnkgYSBURlRQIHNlcnZlci4gIFlvdSBtYXkKLXdh
bnQgdG8gbW91bnQgeW91ciBURlRQIHNlcnZlciBkaXJlY3RvcmllcyBvbnRvIHRoZSBAY29kZXt0
YXJnZXRzfSB0bwotbW92ZSB0aGUgcmVxdWlyZWQgZmlsZXMgdG8gdGhlIFRGVFAgc2VydmVyIGF1
dG9tYXRpY2FsbHkuCitDb25maWd1cmF0aW9uLCBAY29kZXt0YXJnZXRzfX0pIGJlbG93IHRoZSBz
dWItZGlyZWN0b3J5IEBmaWxle2VmaS9HdWl4fSwgdG8gYmUKK3NlcnZlZCBieSBhIFRGVFAgc2Vy
dmVyLiAgWW91IG1heSB3YW50IHRvIG1vdW50IHlvdXIgVEZUUCBzZXJ2ZXIgZGlyZWN0b3JpZXMK
K29udG8gdGhlIEBjb2Rle3RhcmdldHN9IHRvIG1vdmUgdGhlIHJlcXVpcmVkIGZpbGVzIHRvIHRo
ZSBURlRQIHNlcnZlcgorYXV0b21hdGljYWxseSBkdXJpbmcgaW5zdGFsbGF0aW9uLgogCiBJZiB5
b3UgcGxhbiB0byB1c2UgYW4gTkZTIHJvb3QgZmlsZSBzeXN0ZW0gYXMgd2VsbCAoYWN0dWFsbHkg
aWYgeW91IG1vdW50IHRoZQogc3RvcmUgZnJvbSBhbiBORlMgc2hhcmUpLCB0aGVuIHRoZSBURlRQ
IHNlcnZlciBuZWVkcyB0byBzZXJ2ZSB0aGUgZmlsZQpAQCAtMzU3NzMsMTMgKzM1Nzc1LDIzIEBA
IGRpcmVjdG9yeSB0byB5b3VyIEBjb2Rle3RhcmdldHN9LgogSXQgaXMgaW1wb3J0YW50IHRvIG5v
dGUgdGhhdCBzeW1saW5rcyBwb2ludGluZyBvdXRzaWRlIHRoZSBURlRQIHJvb3QgZGlyZWN0b3J5
CiBtYXkgbmVlZCB0byBiZSBhbGxvd2VkIGluIHRoZSBjb25maWd1cmF0aW9uIG9mIHlvdXIgVEZU
UCBzZXJ2ZXIuICBGdXJ0aGVyIHRoZQogc3RvcmUgbGluayBleHBvc2VzIHRoZSB3aG9sZSBzdG9y
ZSB0aHJvdWdoIFRGVFBALiAgQm90aCBwb2ludHMgbmVlZCB0byBiZQotY29uc2lkZXJlZCBjYXJl
ZnVsbHkgZm9yIHNlY3VyaXR5IGFzcGVjdHMuCitjb25zaWRlcmVkIGNhcmVmdWxseSBmb3Igc2Vj
dXJpdHkgYXNwZWN0cy4gIEl0IGlzIGFkdmlzZWQgdG8gZGlzYWJsZSBhbnkgVEZUUAord3JpdGUg
YWNjZXNzIQorCitQbGVhc2Ugbm90ZSwgdGhhdCB0aGlzIGJvb3Rsb2FkZXIgd2lsbCBub3QgbW9k
aWZ5IHRoZSDigJhVRUZJIEJvb3QgTWFuYWdlcuKAmSBvZgordGhlIHN5c3RlbS4KIAogQmVzaWRl
IHRoZSBAY29kZXtncnViLWVmaS1uZXRib290LWJvb3Rsb2FkZXJ9LCB0aGUgYWxyZWFkeSBtZW50
aW9uZWQgVEZUUCBhbmQKIE5GUyBzZXJ2ZXJzLCB5b3UgYWxzbyBuZWVkIGEgcHJvcGVybHkgY29u
ZmlndXJlZCBESENQIHNlcnZlciB0byBtYWtlIHRoZSBib290aW5nCiBvdmVyIG5ldGJvb3QgcG9z
c2libGUuICBGb3IgYWxsIHRoaXMgd2UgY2FuIGN1cnJlbnRseSBvbmx5IHJlY29tbWVuZCB5b3Ug
dG8gbG9vawogZm9yIGluc3RydWN0aW9ucyBhYm91dCBAYWNyb255bXtQWEUsIFByZWJvb3QgZVhl
Y3V0aW9uIEVudmlyb25tZW50fS4KIAorQHZpbmRleCBncnViLWVmaS1uZXRib290LXJlbW92YWJs
ZS1ib290bG9hZGVyCitAY29kZXtncnViLWVmaS1uZXRib290LXJlbW92YWJsZS1ib290bG9hZGVy
fSBpcyBpZGVudGljYWwgdG8KK0Bjb2Rle2dydWItZWZpLW5ldGJvb3QtYm9vdGxvYWRlcn0gd2l0
aCB0aGUgZXhjZXB0aW9uIHRoYXQgdGhlIHN1Yi1kaXJlY3RvcnkKK0BmaWxle2VmaS9ib290fSB3
aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiBAZmlsZXtlZmkvR3VpeH0gdG8gY29tcGx5IHRvIHRoZSBV
RUZJCitzcGVjaWZpY2F0aW9uIGZvciByZW1vdmFibGUgbWVkaWEuCisKIEBpdGVtIEBjb2Rle3Rh
cmdldHN9CiBUaGlzIGlzIGEgbGlzdCBvZiBzdHJpbmdzIGRlbm90aW5nIHRoZSB0YXJnZXRzIG9u
dG8gd2hpY2ggdG8gaW5zdGFsbCB0aGUKIGJvb3Rsb2FkZXIuCmRpZmYgLS1naXQgYS9nbnUvYm9v
dGxvYWRlci5zY20gYi9nbnUvYm9vdGxvYWRlci5zY20KaW5kZXggOWNmNTQ1Nzg3My4uNzk3OTA4
ZTI0YSAxMDA2NDQKLS0tIGEvZ251L2Jvb3Rsb2FkZXIuc2NtCisrKyBiL2dudS9ib290bG9hZGVy
LnNjbQpAQCAtMjU5LDI2ICsyNTksMjIgQEAgKGRlZmluZSAobG9va3VwLWJvb3Rsb2FkZXItYnkt
bmFtZSBuYW1lKQogICAgICAgICAgICAgKGZvcmNlICVib290bG9hZGVycykpCiAgICAgICAobGVh
dmUgKEdfICJ+YTogbm8gc3VjaCBib290bG9hZGVyfiUiKSBuYW1lKSkpCiAKLShkZWZpbmUgKGVm
aS1ib290bG9hZGVyLXByb2ZpbGUgZmlsZXMgYm9vdGxvYWRlci1wYWNrYWdlIGhvb2tzKQotICAi
Q3JlYXRlcyBhIHByb2ZpbGUgd2l0aCBCT09UTE9BREVSLVBBQ0tBR0UgYW5kIGEgZGlyZWN0b3J5
IGNvbGxlY3Rpb24vIHdpdGgKLWxpbmtzIHRvIGFkZGl0aW9uYWwgRklMRVMgZnJvbSB0aGUgc3Rv
cmUuICBUaGlzIGNvbGxlY3Rpb24gaXMgbWVhbnQgdG8gYmUgdXNlZAotYnkgdGhlIGJvb3Rsb2Fk
ZXIgaW5zdGFsbGVyLgorKGRlZmluZSAoZWZpLWJvb3Rsb2FkZXItcHJvZmlsZSBwYWNrYWdlcyBm
aWxlcyBob29rcykKKyAgIkNyZWF0ZXMgYSBwcm9maWxlIGZyb20gdGhlIGxpc3RzIG9mIFBBQ0tB
R0VTIGFuZCBGSUxFUyBmcm9tIHRoZSBzdG9yZS4KK1RoaXMgcHJvZmlsZSBpcyBtZWFudCB0byBi
ZSB1c2VkIGJ5IHRoZSBib290bG9hZGVyLWluc3RhbGxlci4KIAogRklMRVMgaXMgYSBsaXN0IG9m
IGZpbGUgb3IgZGlyZWN0b3J5IG5hbWVzIGZyb20gdGhlIHN0b3JlLCB3aGljaCB3aWxsIGJlCi1z
eW1saW5rZWQgaW50byB0aGUgY29sbGVjdGlvbi8gZGlyZWN0b3J5LiAgSWYgYSBkaXJlY3Rvcnkg
bmFtZSBlbmRzIHdpdGggJy8nLAotdGhlbiB0aGUgZGlyZWN0b3J5IGNvbnRlbnQgaW5zdGVhZCBv
ZiB0aGUgZGlyZWN0b3J5IGl0c2VsZiB3aWxsIGJlIHN5bWxpbmtlZAotaW50byB0aGUgY29sbGVj
dGlvbi8gZGlyZWN0b3J5Lgorc3ltbGlua2VkIGludG8gdGhlIHByb2ZpbGUuICBJZiBhIGRpcmVj
dG9yeSBuYW1lIGVuZHMgd2l0aCAnLycsIHRoZW4gdGhlCitkaXJlY3RvcnkgY29udGVudCBpbnN0
ZWFkIG9mIHRoZSBkaXJlY3RvcnkgaXRzZWxmIHdpbGwgYmUgc3ltbGlua2VkIGludG8gdGhlCitw
cm9maWxlLgogCi1GSUxFUyBtYXkgY29udGFpbiBmaWxlIGxpa2Ugb2JqZWN0cyBwcm9kdWNlZCBi
eSBmdW5jdGlvbnMgbGlrZSBwbGFpbi1maWxlLAorRklMRVMgbWF5IGNvbnRhaW4gZmlsZSBsaWtl
IG9iamVjdHMgcHJvZHVjZWQgYnkgcHJvY2VkdXJlcyBsaWtlIHBsYWluLWZpbGUsCiBsb2NhbC1m
aWxlLCBldGMuLCBvciBwYWNrYWdlIGNvbnRlbnRzIHByb2R1Y2VkIHdpdGggZmlsZS1hcHBlbmQu
CiAKIEhPT0tTIGxpc3RzIGFkZGl0aW9uYWwgaG9vayBmdW5jdGlvbnMgdG8gbW9kaWZ5IHRoZSBw
cm9maWxlLiIKLSAgKGRlZmluZSAoYm9vdGxvYWRlci1jb2xsZWN0aW9uIG1hbmlmZXN0KQorICAo
ZGVmaW5lIChlZmktYm9vdGxvYWRlci1wcm9maWxlLWhvb2sgbWFuaWZlc3QpCiAgICAgKGRlZmlu
ZSBidWlsZAotICAgICAgICAod2l0aC1pbXBvcnRlZC1tb2R1bGVzICcoKGd1aXggYnVpbGQgdXRp
bHMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWNlLTkgZnR3KQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNyZmkgc3JmaS0xKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHNyZmkgc3JmaS0yNikpCisgICAgICAgICh3aXRoLWltcG9ydGVk
LW1vZHVsZXMgJygoZ3VpeCBidWlsZCB1dGlscykpCiAgICAgICAgICAgI34oYmVnaW4KICAgICAg
ICAgICAgICh1c2UtbW9kdWxlcyAoKGd1aXggYnVpbGQgdXRpbHMpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICM6c2VsZWN0IChta2Rpci1wIHN0cmlwLXN0b3JlLWZpbGUtbmFtZSkpCkBAIC0z
MDIsNyArMjk4LDcgQEAgKGRlZmluZSBuYW1lLWVuZHMtd2l0aC0vPyAoY3V0IHN0cmluZy1zdWZm
aXg/ICIvIiA8PikpCiAgICAgICAgICAgICAoZGVmaW5lIChuYW1lLWlzLXN0b3JlLWVudHJ5PyBu
YW1lKQogICAgICAgICAgICAgICAiUmV0dXJuICN0IGlmIE5BTUUgaXMgYSBkaXJlY3Qgc3RvcmUg
ZW50cnkgYW5kIG5vdGhpbmcgaW5zaWRlLiIKICAgICAgICAgICAgICAgKG5vdCAoc3RyaW5nLWlu
ZGV4IChzdHJpcC1zdG9yZS1maWxlLW5hbWUgbmFtZSkgI1wvKSkpCi0gICAgICAgICAgICAobGV0
KiAoKGNvbGxlY3Rpb24gKHN0cmluZy1hcHBlbmQgIyRvdXRwdXQgIi9jb2xsZWN0aW9uIikpCisg
ICAgICAgICAgICAobGV0KiAoKG91dHB1dCAjJG91dHB1dCkKICAgICAgICAgICAgICAgICAgICAo
ZmlsZXMgJyMkZmlsZXMpCiAgICAgICAgICAgICAgICAgICAgKGRpcmVjdG9yaWVzIChmaWx0ZXIg
bmFtZS1lbmRzLXdpdGgtLz8gZmlsZXMpKQogICAgICAgICAgICAgICAgICAgIChuYW1lcy1mcm9t
LWRpcmVjdG9yaWVzCkBAIC0zMTEsMTEgKzMwNywxMSBAQCAoZGVmaW5lIChuYW1lLWlzLXN0b3Jl
LWVudHJ5PyBuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcmll
cykpCiAgICAgICAgICAgICAgICAgICAgKG5hbWVzIChhcHBlbmQgbmFtZXMtZnJvbS1kaXJlY3Rv
cmllcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZW1vdmUgbmFtZS1lbmRz
LXdpdGgtLz8gZmlsZXMpKSkpCi0gICAgICAgICAgICAgIChta2Rpci1wIGNvbGxlY3Rpb24pCisg
ICAgICAgICAgICAgIChta2Rpci1wIG91dHB1dCkKICAgICAgICAgICAgICAgKGlmIChldmVyeSBm
aWxlLWV4aXN0cz8gbmFtZXMpCiAgICAgICAgICAgICAgICAgICAoYmVnaW4KICAgICAgICAgICAg
ICAgICAgICAgKGZvci1lYWNoIChsYW1iZGEgKG5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHN5bWxpbmstdG8gbmFtZSBjb2xsZWN0aW9uCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHN5bWxpbmstdG8gbmFtZSBvdXRwdXQKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChuYW1lLWlzLXN0b3JlLWVudHJ5PyBuYW1lKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXAtc3Rv
cmUtZmlsZS1uYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBiYXNlbmFtZSkpKQpAQCAtMzIzLDU3ICszMTksNjMgQEAgKGRlZmluZSAobmFtZS1pcy1z
dG9yZS1lbnRyeT8gbmFtZSkKICAgICAgICAgICAgICAgICAgICAgI3QpCiAgICAgICAgICAgICAg
ICAgICAjZikpKSkpCiAKLSAgICAoZ2V4cC0+ZGVyaXZhdGlvbiAiYm9vdGxvYWRlci1jb2xsZWN0
aW9uIgorICAgIChnZXhwLT5kZXJpdmF0aW9uICJlZmktYm9vdGxvYWRlci1wcm9maWxlIgogICAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkCiAgICAgICAgICAgICAgICAgICAgICAgIzpsb2NhbC1i
dWlsZD8gI3QKICAgICAgICAgICAgICAgICAgICAgICAjOnN1YnN0aXR1dGFibGU/ICNmCiAgICAg
ICAgICAgICAgICAgICAgICAgIzpwcm9wZXJ0aWVzCiAgICAgICAgICAgICAgICAgICAgICAgYCgo
dHlwZSAuIHByb2ZpbGUtaG9vaykKLSAgICAgICAgICAgICAgICAgICAgICAgIChob29rIC4gYm9v
dGxvYWRlci1jb2xsZWN0aW9uKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgKGhvb2sgLiBl
ZmktYm9vdGxvYWRlci1wcm9maWxlLWhvb2spKSkpCiAKLSAgKHByb2ZpbGUgKGNvbnRlbnQgKHBh
Y2thZ2VzLT5tYW5pZmVzdCAobGlzdCBib290bG9hZGVyLXBhY2thZ2UpKSkKLSAgICAgICAgICAg
KG5hbWUgImJvb3Rsb2FkZXItcHJvZmlsZSIpCi0gICAgICAgICAgIChob29rcyAoYXBwZW5kIChs
aXN0IGJvb3Rsb2FkZXItY29sbGVjdGlvbikgaG9va3MpKQorICAocHJvZmlsZSAoY29udGVudCAo
cGFja2FnZXMtPm1hbmlmZXN0IHBhY2thZ2VzKSkKKyAgICAgICAgICAgKG5hbWUgImVmaS1ib290
bG9hZGVyLXByb2ZpbGUiKQorICAgICAgICAgICAoaG9va3MgKGNvbnMgZWZpLWJvb3Rsb2FkZXIt
cHJvZmlsZS1ob29rIGhvb2tzKSkKICAgICAgICAgICAgKGxvY2FsZXM/ICNmKQogICAgICAgICAg
ICAoYWxsb3ctY29sbGlzaW9ucz8gI2YpCiAgICAgICAgICAgIChyZWxhdGl2ZS1zeW1saW5rcz8g
I2YpKSkKIAotKGRlZmluZSogKGVmaS1ib290bG9hZGVyLWNoYWluIGZpbGVzCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmluYWwtYm9vdGxvYWRlcgorKGRlZmluZSogKGVmaS1ib290
bG9hZGVyLWNoYWluIGZpbmFsLWJvb3Rsb2FkZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjOmtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWNrYWdlcyAnKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGVzICcoKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoaG9va3MgJygpKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluc3RhbGxlcikKLSAgIkRlZmluZSBhIGJvb3Rsb2FkZXIgY2hhaW4gd2l0aCBGSU5B
TC1CT09UTE9BREVSIGFzIHRoZSBmaW5hbCBib290bG9hZGVyIGFuZAotY2VydGFpbiBkaXJlY3Rv
cmllcyBhbmQgZmlsZXMgZnJvbSB0aGUgc3RvcmUgZ2l2ZW4gaW4gdGhlIGxpc3Qgb2YgRklMRVMu
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVyCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlzay1pbWFnZS1pbnN0YWxsZXIpCisgICJEZWZpbmUgYSBjaGFp
biBvZiBib290bG9hZGVycyB3aXRoIHRoZSBGSU5BTC1CT09UTE9BREVSLCBvcHRpb25hbCBQQUNL
QUdFUywKK2FuZCBvcHRpb25hbCBkaXJlY3RvcmllcyBhbmQgZmlsZXMgZnJvbSB0aGUgc3RvcmUg
Z2l2ZW4gaW4gdGhlIGxpc3Qgb2YgRklMRVMuCiAKLUZJTEVTIG1heSBjb250YWluIGZpbGUgbGlr
ZSBvYmplY3RzIHByb2R1Y2VkIGJ5IGZ1bmN0aW9ucyBsaWtlIHBsYWluLWZpbGUsCi1sb2NhbC1m
aWxlLCBldGMuLCBvciBwYWNrYWdlIGNvbnRlbnRzIHByb2R1Y2VkIHdpdGggZmlsZS1hcHBlbmQu
ICBUaGV5IHdpbGwgYmUKLWNvbGxlY3RlZCBpbnNpZGUgYSBkaXJlY3RvcnkgY29sbGVjdGlvbi8g
aW5zaWRlIGEgZ2VuZXJhdGVkIGJvb3Rsb2FkZXIgcHJvZmlsZSwKLXdoaWNoIHdpbGwgYmUgcGFz
c2VkIHRvIHRoZSBJTlNUQUxMRVIuCitUaGUgcGFja2FnZSBvZiB0aGUgRklOQUwtQk9PVExPQURF
UiBhbmQgYWxsIFBBQ0tBR0VTIGFuZCBGSUxFUyB3aWxsIGJlIHBsYWNlZAoraW4gYW4gZWZpLWJv
b3Rsb2FkZXItcHJvZmlsZSwgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gdGhlIElOU1RBTExFUi4K
KworRklMRVMgbWF5IGNvbnRhaW4gZmlsZSBsaWtlIG9iamVjdHMgcHJvZHVjZWQgYnkgcHJvY2Vk
dXJlcyBsaWtlIHBsYWluLWZpbGUsCitsb2NhbC1maWxlLCBldGMuLCBvciBwYWNrYWdlIGNvbnRl
bnRzIHByb2R1Y2VkIHdpdGggZmlsZS1hcHBlbmQuCiAKIElmIGEgZGlyZWN0b3J5IG5hbWUgaW4g
RklMRVMgZW5kcyB3aXRoICcvJywgdGhlbiB0aGUgZGlyZWN0b3J5IGNvbnRlbnQgaW5zdGVhZAot
b2YgdGhlIGRpcmVjdG9yeSBpdHNlbGYgd2lsbCBiZSBzeW1saW5rZWQgaW50byB0aGUgY29sbGVj
dGlvbi8gZGlyZWN0b3J5Lgorb2YgdGhlIGRpcmVjdG9yeSBpdHNlbGYgd2lsbCBiZSBzeW1saW5r
ZWQgaW50byB0aGUgZWZpLWJvb3Rsb2FkZXItcHJvZmlsZS4KIAogVGhlIHByb2NlZHVyZXMgaW4g
dGhlIEhPT0tTIGxpc3QgY2FuIGJlIHVzZWQgdG8gZnVydGhlciBtb2RpZnkgdGhlIGJvb3Rsb2Fk
ZXIKIHByb2ZpbGUuICBJdCBpcyBwb3NzaWJsZSB0byBwYXNzIGEgc2luZ2xlIGZ1bmN0aW9uIGlu
c3RlYWQgb2YgYSBsaXN0LgogCi1JZiB0aGUgSU5TVEFMTEVSIGFyZ3VtZW50IGlzIHVzZWQsIHRo
ZW4gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB0byBpbnN0YWxsCi10aGUgYm9vdGxvYWRl
ci4gIE90aGVyd2lzZSB0aGUgaW5zdGFsbGVyIG9mIHRoZSBGSU5BTC1CT09UTE9BREVSIHdpbGwg
YmUgY2FsbGVkLiIKLSAgKGxldCogKChmaW5hbC1pbnN0YWxsZXIgKG9yIGluc3RhbGxlcgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJvb3Rsb2FkZXItaW5zdGFsbGVyIGZpbmFsLWJv
b3Rsb2FkZXIpKSkKLSAgICAgICAgIChwcm9maWxlIChlZmktYm9vdGxvYWRlci1wcm9maWxlIGZp
bGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm9vdGxvYWRl
ci1wYWNrYWdlIGZpbmFsLWJvb3Rsb2FkZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoaWYgKGxpc3Q/IGhvb2tzKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhvb2tzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGxpc3QgaG9va3MpKSkpKQotICAgIChib290bG9hZGVyCi0gICAg
IChpbmhlcml0IGZpbmFsLWJvb3Rsb2FkZXIpCi0gICAgIChwYWNrYWdlIHByb2ZpbGUpCi0gICAg
IChpbnN0YWxsZXIKLSAgICAgICN+KGxhbWJkYSAoYm9vdGxvYWRlciB0YXJnZXQgbW91bnQtcG9p
bnQpCi0gICAgICAgICAgKCMkZmluYWwtaW5zdGFsbGVyIGJvb3Rsb2FkZXIgdGFyZ2V0IG1vdW50
LXBvaW50KQotICAgICAgICAgIChjb3B5LXJlY3Vyc2l2ZWx5Ci0gICAgICAgICAgIChzdHJpbmct
YXBwZW5kIGJvb3Rsb2FkZXIgIi9jb2xsZWN0aW9uIikKLSAgICAgICAgICAgKHN0cmluZy1hcHBl
bmQgbW91bnQtcG9pbnQgdGFyZ2V0KQotICAgICAgICAgICAjOmZvbGxvdy1zeW1saW5rcz8gI3QK
LSAgICAgICAgICAgIzpsb2cgKCVtYWtlLXZvaWQtcG9ydCAidyIpKSkpKSkpCitJZiB0aGUgSU5T
VEFMTEVSIGFyZ3VtZW50IGlzIHVzZWQsIHRoZW4gdGhpcyBnZXhwIHByb2NlZHVyZSB3aWxsIGJl
IGNhbGxlZCB0bworaW5zdGFsbCB0aGUgZWZpLWJvb3Rsb2FkZXItcHJvZmlsZS4gIE90aGVyd2lz
ZSB0aGUgaW5zdGFsbGVyIG9mIHRoZQorRklOQUwtQk9PVExPQURFUiB3aWxsIGJlIGNhbGxlZC4K
KworSWYgdGhlIERJU0stSU1BR0UtSU5TVEFMTEVSIGlzIHVzZWQsIHRoZW4gdGhpcyBnZXhwIHBy
b2NlZHVyZSB3aWxsIGJlIGNhbGxlZAordG8gaW5zdGFsbCB0aGUgZWZpLWJvb3Rsb2FkZXItcHJv
ZmlsZSBpbnRvIGEgZGlzay1pbWFnZS4gIE90aGVyd2lzZSB0aGUKK2Rpc2staW1hZ2UtaW5zdGFs
bGVyIG9mIHRoZSBGSU5BTC1CT09UTE9BREVSIHdpbGwgYmUgY2FsbGVkLiIKKyAgKGJvb3Rsb2Fk
ZXIKKyAgICAoaW5oZXJpdCBmaW5hbC1ib290bG9hZGVyKQorICAgIChuYW1lICJlZmktYm9vdGxv
YWRlci1jaGFpbiIpCisgICAgKHBhY2thZ2UKKyAgICAgKGVmaS1ib290bG9hZGVyLXByb2ZpbGUg
KGNvbnMgKGJvb3Rsb2FkZXItcGFja2FnZSBmaW5hbC1ib290bG9hZGVyKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChsaXN0PyBob29r
cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvb2tzCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAobGlzdCBob29rcykpKSkKKyAgICAoaW5zdGFsbGVyCisgICAg
IChvciBpbnN0YWxsZXIKKyAgICAgICAgIChib290bG9hZGVyLWluc3RhbGxlciBmaW5hbC1ib290
bG9hZGVyKSkpCisgICAgKGRpc2staW1hZ2UtaW5zdGFsbGVyCisgICAgIChvciBkaXNrLWltYWdl
LWluc3RhbGxlcgorICAgICAgICAgKGJvb3Rsb2FkZXItZGlzay1pbWFnZS1pbnN0YWxsZXIgZmlu
YWwtYm9vdGxvYWRlcikpKSkpCmRpZmYgLS1naXQgYS9nbnUvYm9vdGxvYWRlci9ncnViLnNjbSBi
L2dudS9ib290bG9hZGVyL2dydWIuc2NtCmluZGV4IDEyMGNkNTUwMTIuLjBiYTZhYTRkYWQgMTAw
NjQ0Ci0tLSBhL2dudS9ib290bG9hZGVyL2dydWIuc2NtCisrKyBiL2dudS9ib290bG9hZGVyL2dy
dWIuc2NtCkBAIC01MCwxMSArNTAsMTIgQEAgKGRlZmluZS1tb2R1bGUgKGdudSBib290bG9hZGVy
IGdydWIpCiAgICAgICAgICAgICBncnViLXRoZW1lLWNvbG9yLWhpZ2hsaWdodAogICAgICAgICAg
ICAgZ3J1Yi10aGVtZS1nZnhtb2RlCiAKLSAgICAgICAgICAgIGluc3RhbGwtZ3J1Yi1lZmktbmV0
Ym9vdAorICAgICAgICAgICAgbWFrZS1ncnViLWVmaS1uZXRib290LWluc3RhbGxlcgogCiAgICAg
ICAgICAgICBncnViLWJvb3Rsb2FkZXIKICAgICAgICAgICAgIGdydWItZWZpLWJvb3Rsb2FkZXIK
ICAgICAgICAgICAgIGdydWItZWZpLW5ldGJvb3QtYm9vdGxvYWRlcgorICAgICAgICAgICAgZ3J1
Yi1lZmktbmV0Ym9vdC1yZW1vdmFibGUtYm9vdGxvYWRlcgogICAgICAgICAgICAgZ3J1Yi1ta3Jl
c2N1ZS1ib290bG9hZGVyCiAgICAgICAgICAgICBncnViLW1pbmltYWwtYm9vdGxvYWRlcgogCkBA
IC0zNDgsNyArMzQ5LDcgQEAgKGRlZmluZSAoZ3J1Yi1yb290LXNlYXJjaCBkZXZpY2UgZmlsZSkK
ICAgICAgICAgKChvciAjZiAoPyBzdHJpbmc/KSkKICAgICAgICAgICN+KGZvcm1hdCAjZiAic2Vh
cmNoIC0tZmlsZSAtLXNldCB+YSIgIyRmaWxlKSkpKSkKIAotKGRlZmluZSogKGdydWItY29uZmln
dXJhdGlvbi1maWxlIGNvbmZpZyBlbnRyaWVzCisoZGVmaW5lKiAobWFrZS1ncnViLWNvbmZpZ3Vy
YXRpb24gZ3J1YiBjb25maWcgZW50cmllcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICM6a2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2FsZSAjZikK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtICglY3VycmVudC1zeXN0
ZW0pKQpAQCAtMzc4LDI3ICszNzksMjcgQEAgKGRlZmluZSAobWVudS1lbnRyeS0+Z2V4cCBlbnRy
eSkKICAgICAgICAgICAgICAgICAoaW5pdHJkIChub3JtYWxpemUtZmlsZSAobWVudS1lbnRyeS1p
bml0cmQgZW50cnkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2
aWNlLW1vdW50LXBvaW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RvcmUtZGlyZWN0b3J5LXByZWZpeCkpKQotICAgICAgICAgOzsgSGVyZSBERVZJQ0UgaXMgdGhl
IHN0b3JlIGFuZCBERVZJQ0UtTU9VTlQtUE9JTlQgaXMgaXRzIG1vdW50IHBvaW50LgotICAgICAg
ICAgOzsgVXNlIHRoZSByaWdodCBmaWxlIG5hbWVzIGZvciBMSU5VWCBhbmQgSU5JVFJEIGluIGNh
c2UKLSAgICAgICAgIDs7IERFVklDRS1NT1VOVC1QT0lOVCBpcyBub3QgIi8iLCBtZWFuaW5nIHRo
YXQgdGhlIHN0b3JlIGlzIG9uIGEKLSAgICAgICAgIDs7IHNlcGFyYXRlIHBhcnRpdGlvbi4KLQot
ICAgICAgICAgOzsgV2hlbiBCVFJGUy1TVUJWT0xVTUUtRklMRS1OQU1FIGlzIGRlZmluZWQsIHBy
ZXBlbmQgaXQgdGhlIGxpbnV4IGFuZAotICAgICAgICAgOzsgaW5pdHJkIHBhdGhzLCB0byBhbGxv
dyBib290aW5nIGZyb20gYSBCdHJmcyBzdWJ2b2x1bWUuCi0gICAgICAgICAjfihmb3JtYXQgcG9y
dCAibWVudWVudHJ5IH5zIHsKKyAgICAgICAgICAgIDs7IEhlcmUgREVWSUNFIGlzIHRoZSBzdG9y
ZSBhbmQgREVWSUNFLU1PVU5ULVBPSU5UIGlzIGl0cyBtb3VudCBwb2ludC4KKyAgICAgICAgICAg
IDs7IFVzZSB0aGUgcmlnaHQgZmlsZSBuYW1lcyBmb3IgTElOVVggYW5kIElOSVRSRCBpbiBjYXNl
CisgICAgICAgICAgICA7OyBERVZJQ0UtTU9VTlQtUE9JTlQgaXMgbm90ICIvIiwgbWVhbmluZyB0
aGF0IHRoZSBzdG9yZSBpcyBvbiBhCisgICAgICAgICAgICA7OyBzZXBhcmF0ZSBwYXJ0aXRpb24u
CisKKyAgICAgICAgICAgIDs7IFdoZW4gQlRSRlMtU1VCVk9MVU1FLUZJTEUtTkFNRSBpcyBkZWZp
bmVkLCBwcmVwZW5kIGl0IHRoZSBsaW51eCBhbmQKKyAgICAgICAgICAgIDs7IGluaXRyZCBwYXRo
cywgdG8gYWxsb3cgYm9vdGluZyBmcm9tIGEgQnRyZnMgc3Vidm9sdW1lLgorICAgICAgICAgICAg
I34oZm9ybWF0IHBvcnQgIm1lbnVlbnRyeSB+cyB7CiAgIH5hCiAgIGxpbnV4IH5hIH5hCiAgIGlu
aXRyZCB+YQogfX4lIgotICAgICAgICAgICAgICAgICAgICMkbGFiZWwKLSAgICAgICAgICAgICAg
ICAgICAjJChncnViLXJvb3Qtc2VhcmNoIGRldmljZSBsaW51eCkKLSAgICAgICAgICAgICAgICAg
ICAjJGxpbnV4IChzdHJpbmctam9pbiAobGlzdCAjJEBhcmd1bWVudHMpKQotICAgICAgICAgICAg
ICAgICAgICMkaW5pdHJkKSkKKyAgICAgICAgICAgICAgICAgICAgICAjJGxhYmVsCisgICAgICAg
ICAgICAgICAgICAgICAgIyQoZ3J1Yi1yb290LXNlYXJjaCBkZXZpY2UgbGludXgpCisgICAgICAg
ICAgICAgICAgICAgICAgIyRsaW51eCAoc3RyaW5nLWpvaW4gKGxpc3QgIyRAYXJndW1lbnRzKSkK
KyAgICAgICAgICAgICAgICAgICAgICAjJGluaXRyZCkpCiAgICAgICAgICAgKGxldCAoKGtlcm5l
bCAobWVudS1lbnRyeS1tdWx0aWJvb3Qta2VybmVsIGVudHJ5KSkKICAgICAgICAgICAgICAgICAo
YXJndW1lbnRzIChtZW51LWVudHJ5LW11bHRpYm9vdC1hcmd1bWVudHMgZW50cnkpKQogICAgICAg
ICAgICAgICAgIChtb2R1bGVzIChtZW51LWVudHJ5LW11bHRpYm9vdC1tb2R1bGVzIGVudHJ5KSkK
ICAgICAgICAgICAgICAgICAocm9vdC1pbmRleCAxKSkgICAgICAgICAgICA7IFhYWCBFRkkgd2ls
bCBuZWVkIHJvb3QtaW5kZXggMgotICAgICAgICAjfihmb3JtYXQgcG9ydCAiCisgICAgICAgICAg
ICAjfihmb3JtYXQgcG9ydCAiCiBtZW51ZW50cnkgfnMgewogICBtdWx0aWJvb3QgfmEgcm9vdD1k
ZXZpY2U6aGQwc35hfmF+YQogfX4lIgpAQCAtNDM1LDkgKzQzNiw3IEBAIChkZWZpbmUgKHN1Z2Fy
KQogICAoZGVmaW5lIGxvY2FsZS1jb25maWcKICAgICAobGV0KiAoKGVudHJ5IChmaXJzdCBhbGwt
ZW50cmllcykpCiAgICAgICAgICAgIChkZXZpY2UgKG1lbnUtZW50cnktZGV2aWNlIGVudHJ5KSkK
LSAgICAgICAgICAgKG1vdW50LXBvaW50IChtZW51LWVudHJ5LWRldmljZS1tb3VudC1wb2ludCBl
bnRyeSkpCi0gICAgICAgICAgIChib290bG9hZGVyIChib290bG9hZGVyLWNvbmZpZ3VyYXRpb24t
Ym9vdGxvYWRlciBjb25maWcpKQotICAgICAgICAgICAoZ3J1YiAoYm9vdGxvYWRlci1wYWNrYWdl
IGJvb3Rsb2FkZXIpKSkKKyAgICAgICAgICAgKG1vdW50LXBvaW50IChtZW51LWVudHJ5LWRldmlj
ZS1tb3VudC1wb2ludCBlbnRyeSkpKQogICAgICAgI34obGV0ICgobG9jYWxlICMkKGFuZCBsb2Nh
bGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2FsZS1kZWZpbml0aW9uLXNvdXJj
ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2FsZS1uYW1lLT5kZWZpbml0aW9u
IGxvY2FsZSkpKSkKQEAgLTQ2Myw4ICs0NjIsNiBAQCAoZGVmaW5lIGxvY2FsZS1jb25maWcKIAog
ICAoZGVmaW5lIGtleWJvYXJkLWxheW91dC1jb25maWcKICAgICAobGV0KiAoKGxheW91dCAoYm9v
dGxvYWRlci1jb25maWd1cmF0aW9uLWtleWJvYXJkLWxheW91dCBjb25maWcpKQotICAgICAgICAg
ICAoZ3J1YiAgIChib290bG9hZGVyLXBhY2thZ2UKLSAgICAgICAgICAgICAgICAgICAgKGJvb3Rs
b2FkZXItY29uZmlndXJhdGlvbi1ib290bG9hZGVyIGNvbmZpZykpKQogICAgICAgICAgICAoa2V5
bWFwKiAoYW5kIGxheW91dAogICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlib2FyZC1sYXlv
dXQtZmlsZSBsYXlvdXQgIzpncnViIGdydWIpKSkKICAgICAgICAgICAgKGVudHJ5IChmaXJzdCBh
bGwtZW50cmllcykpCkBAIC01MTUsNiArNTEyLDE2IEBAIChkZWZpbmUgYnVpbGRlcgogICAgICAg
ICAgICAgICAgICAjOm9wdGlvbnMgJygjOmxvY2FsLWJ1aWxkPyAjdAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjOnN1YnN0aXR1dGFibGU/ICNmKSkpCiAKKyhkZWZpbmUgKGdydWItY29u
ZmlndXJhdGlvbi1maWxlIGNvbmZpZyAuIGFyZ3MpCisgIChsZXQqICgoYm9vdGxvYWRlciAoYm9v
dGxvYWRlci1jb25maWd1cmF0aW9uLWJvb3Rsb2FkZXIgY29uZmlnKSkKKyAgICAgICAgIChncnVi
IChib290bG9hZGVyLXBhY2thZ2UgYm9vdGxvYWRlcikpKQorICAgIChhcHBseSBtYWtlLWdydWIt
Y29uZmlndXJhdGlvbiBncnViIGNvbmZpZyBhcmdzKSkpCisKKyhkZWZpbmUgKGdydWItZWZpLWNv
bmZpZ3VyYXRpb24tZmlsZSAuIGFyZ3MpCisgIChhcHBseSBtYWtlLWdydWItY29uZmlndXJhdGlv
biBncnViLWVmaSBhcmdzKSkKKworKGRlZmluZSBncnViLWNmZyAiL2Jvb3QvZ3J1Yi9ncnViLmNm
ZyIpCisKIAwKIAogOzs7CkBAIC02MDgsNDIgKzYxNSwzMSBAQCAoZGVmaW5lIGluc3RhbGwtZ3J1
Yi1lZmkKICAgICAgICAgICAgICAgICAgICAgICAgICItLWJvb3Rsb2FkZXItaWQ9R3VpeCIKICAg
ICAgICAgICAgICAgICAgICAgICAgICItLWVmaS1kaXJlY3RvcnkiIHRhcmdldC1lc3ApKSkpKQog
Ci0oZGVmaW5lIChpbnN0YWxsLWdydWItZWZpLW5ldGJvb3Qgc3ViZGlyKQotICAiRGVmaW5lIGEg
Z3J1Yi1lZmktbmV0Ym9vdCBib290bG9hZGVyIGluc3RhbGxlciBmb3IgaW5zdGFsbGF0aW9uIGlu
IFNVQkRJUiwKLXdoaWNoIGlzIHVzdWFsbHkgZWZpL0d1aXggb3IgZWZpL2Jvb3QuIgotICAobGV0
KiAoKHN5c3RlbSAoc3RyaW5nLXNwbGl0IChuaXgtc3lzdGVtLT5nbnUtdHJpcGxldAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKCVjdXJyZW50LXRhcmdldC1zeXN0ZW0pCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJWN1cnJlbnQtc3lzdGVtKSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI1wtKSkKLSAgICAgICAgIChhcmNoIChmaXJz
dCBzeXN0ZW0pKQotICAgICAgICAgKGJvb3QtZWZpLWxpbmsgKG1hdGNoIHN5c3RlbQotICAgICAg
ICAgICAgICAgICAgICAgICAgICA7OyBUaGVzZSBhcmUgdGhlIHN1cHBvcnRlbmQgc3lzdGVtcyBh
bmQgdGhlIG5hbWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGRlZmluZWQgYnkgdGhl
IFVFRkkgc3RhbmRhcmQgZm9yIHJlbW92YWJsZSBtZWRpYS4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgKCgiaTY4NiIgXyAuLi4pICAgICAgICAiL2Jvb3RpYTMyLmVmaSIpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICgoIng4Nl82NCIgXyAuLi4pICAgICAgIi9ib290eDY0LmVmaSIpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICgoImFybSIgXyAuLi4pICAgICAgICAgIi9ib290YXJt
LmVmaSIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICgoImFhcmNoNjQiIF8gLi4uKSAgICAg
Ii9ib290YWE2NC5lZmkiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAoKCJyaXNjdiIgXyAu
Li4pICAgICAgICIvYm9vdHJpc2N2MzIuZWZpIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
KCgicmlzY3Y2NCIgXyAuLi4pICAgICAiL2Jvb3RyaXNjdjY0LmVmaSIpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIDs7IE90aGVyIHN5c3RlbXMgYXJlIG5vdCBzdXBwb3J0ZWQsIGFsdGhvdWdo
IGRlZmluZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDs7ICgoInJpc2N2MTI4IiBfIC4u
LikgIi9ib290cmlzY3YxMjguZWZpIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgKCgi
aWE2NCIgXyAuLi4pICAgICAiL2Jvb3RpYTY0LmVmaSIpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICgoXyAuLi4pICAgICAgICAgICAgICAgI2YpKSkKLSAgICAgICAgIChjb3JlLWVmaSAoc3Ry
aW5nLWFwcGVuZAotICAgICAgICAgICAgICAgICAgICA7OyBUaGlzIGlzIHRoZSBhcmNoIGRlcGVu
ZGVudCBmaWxlIG5hbWUgb2YgR1JVQiwgZS5nLgotICAgICAgICAgICAgICAgICAgICA7OyBpMzY4
LWVmaS9jb3JlLmVmaSBvciBhcm02NC1lZmkvY29yZS5lZmkuCi0gICAgICAgICAgICAgICAgICAg
IChtYXRjaCBhcmNoCi0gICAgICAgICAgICAgICAgICAgICAgKCJpNjg2IiAgICAiaTM4NiIpCi0g
ICAgICAgICAgICAgICAgICAgICAgKCJhYXJjaDY0IiAiYXJtNjQiKQotICAgICAgICAgICAgICAg
ICAgICAgICgicmlzY3YiICAgInJpc2N2MzIiKQotICAgICAgICAgICAgICAgICAgICAgIChfICAg
ICAgICAgYXJjaCkpCi0gICAgICAgICAgICAgICAgICAgICItZWZpL2NvcmUuZWZpIikpKQotICAg
ICh3aXRoLWltcG9ydGVkLW1vZHVsZXMKLSAgICAgJygoZ3VpeCBidWlsZCB1bmlvbikpCi0gICAg
ICN+KGxhbWJkYSAoYm9vdGxvYWRlciB0YXJnZXQgbW91bnQtcG9pbnQpCi0gICAgICAgICAiSW5z
dGFsbCB0aGUgQk9PVExPQURFUiwgd2hpY2ggbXVzdCBiZSB0aGUgcGFja2FnZSBncnViLCBhcyBl
LmcuCi1ib290eDY0LmVmaSBvciBib290YWE2NC5lZmkgaW50byBTVUJESVIsIHdoaWNoIGlzIHVz
dWFsbHkgZWZpL0d1aXggb3IgZWZpL2Jvb3QsCi1iZWxvdyB0aGUgZGlyZWN0b3J5IFRBUkdFVCBm
b3IgdGhlIHN5c3RlbSB3aG9zZSByb290IGlzIG1vdW50ZWQgYXQgTU9VTlQtUE9JTlQuCisoZGVm
aW5lKiAobWFrZS1ncnViLWVmaS1uZXRib290LWluc3RhbGxlciBncnViLWVmaSBncnViLWNmZyBz
dWJkaXIpCisgICJNYWtlIGEgYm9vdGxvYWRlci1pbnN0YWxsZXIgZm9yIGEgZ3J1Yi1lZmktbmV0
Ym9vdCBib290bG9hZGVyLCB3aGljaCBleHBlY3RzCitpdHMgZmlsZXMgaW4gU1VCRElSIGFuZCBp
dHMgY29uZmlndXJhdGlvbiBmaWxlIGluIEdSVUItQ0ZHLgorCitBcyBhIGdydWItZWZpLW5ldGJv
b3QgcGFja2FnZSBpcyBhbHJlYWR5IHByZWluc3RhbGxlZCBieSAnZ3J1Yi1ta25ldGRpcicsIHRo
ZQoraW5zdGFsbGVyIGJhc2ljYWxseSBjb3BpZXMgYWxsIGZpbGVzIGZyb20gdGhlIGJvb3Rsb2Fk
ZXItcGFja2FnZSAob3IgcHJvZmlsZSkKK2ludG8gdGhlIGJvb3Rsb2FkZXItdGFyZ2V0IGRpcmVj
dG9yeS4KKworQWRkaXRpb25hbGx5IGZvciBuZXR3b3JrIGJvb3Rpbmcgb3ZlciBURlRQLCB0d28g
cmVsYXRpdmUgc3ltbGlua3MgdG8gdGhlIHN0b3JlCithbmQgdG8gdGhlIEdSVUItQ0ZHIGZpbGUg
YXJlIG5lY2Vzc2FyeS4gIER1ZSB0byB0aGlzIGEgVEZUUCByb290IGRpcmVjdG9yeSBtdXN0Citu
b3QgYmUgbG9jYXRlZCBvbiBhIEZBVCBmaWxlLXN5c3RlbS4KKworSWYgdGhlIGJvb3Rsb2FkZXIt
dGFyZ2V0IGRvZXMgbm90IHN1cHBvcnQgc3ltbGlua3MsIHRoZW4gaXQgaXMgYXNzdW1lZCB0byBi
ZSBhCitraW5kIG9mIEVGSSBTeXN0ZW0gUGFydGl0aW9uIChFU1ApLiAgSW4gdGhpcyBjYXNlIGFu
IGludGVybWVkaWF0ZSBjb25maWd1cmF0aW9uCitmaWxlIGlzIGNyZWF0ZWQgd2l0aCB0aGUgaGVs
cCBvZiBHUlVCLUVGSSB0byBsb2FkIHRoZSBHUlVCLUNGRy4KKworVGhlIGluc3RhbGxlciBpcyB1
c2FibGUgZm9yIGFueSBlZmktYm9vdGxvYWRlci1jaGFpbiwgd2hpY2ggcHJlcGFyZXMgdGhlCiti
b290bG9hZGVyLXByb2ZpbGUgaW4gYSB3YXkgcmVhZHkgZm9yIGNvcHlpbmcuCisKK1RoZSBpbnN0
YWxsZXIgZG9lcyBub3QgbWFuaXB1bGF0ZSB0aGUgc3lzdGVtJ3MgJ1VFRkkgQm9vdCBNYW5hZ2Vy
Jy4iCisgICh3aXRoLWltcG9ydGVkLW1vZHVsZXMgJygoZ3VpeCBidWlsZCB1bmlvbikpCisgICAg
I34obGFtYmRhIChib290bG9hZGVyIHRhcmdldCBtb3VudC1wb2ludCkKKyAgICAgICAgIkNvcHkg
dGhlIEJPT1RMT0FERVIsIHdoaWNoIG11c3QgYmUgYSBwcmVpbnN0YWxsZWQgZ3J1Yi1lZmktbmV0
Ym9vdAorcGFja2FnZSB3aXRoIGEgU1VCRElSIGxpa2UgZWZpL2Jvb3Qgb3IgZWZpL0d1aXgsIGJl
bG93IHRoZSBkaXJlY3RvcnkKK1RBUkdFVCBmb3IgdGhlIHN5c3RlbSB3aG9zZSByb290IGlzIG1v
dW50ZWQgYXQgTU9VTlQtUE9JTlQuCiAKIE1PVU5ULVBPSU5UIGlzIHRoZSBsYXN0IGFyZ3VtZW50
IGluICdndWl4IHN5c3RlbSBpbml0IC9ldGMvY29uZmlnLnNjbSBtbnQvcG9pbnQnCiBvciAnLycg
Zm9yIG90aGVyICdndWl4IHN5c3RlbScgY29tbWFuZHMuCkBAIC02NTMsMTcgKzY0OSwxOCBAQCAo
ZGVmaW5lIChpbnN0YWxsLWdydWItZWZpLW5ldGJvb3Qgc3ViZGlyKQogCiAob3BlcmF0aW5nLXN5
c3RlbQogIChib290bG9hZGVyIChib290bG9hZGVyLWNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAg
ICAgKHRhcmdldHMgJyhcIi9ib290XCIpKQorICAgICAgICAgICAgICAodGFyZ2V0cyAnKFwiL2Jv
b3QvZWZpXCIpKQogICAgICAgICAgICAgICDigKYpKQogIOKApikKIAogVEFSR0VUIGlzIHJlcXVp
cmVkIHRvIGJlIGFuIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lLCB1c3VhbGx5IG1vdW50ZWQgdmlh
IE5GUywKIGFuZCBmaW5hbGx5IG5lZWRzIHRvIGJlIHByb3ZpZGVkIGJ5IGEgVEZUUCBzZXJ2ZXIg
YXMgdGhlIFRGVFAgcm9vdCBkaXJlY3RvcnkuCiAKK1VzdWFsbHkgdGhlIGluc3RhbGxlciB3aWxs
IGJlIHVzZWQgdG8gcHJlcGFyZSBuZXR3b3JrIGJvb3Rpbmcgb3ZlciBURlRQLiAgVGhlbgogR1JV
QiB3aWxsIGxvYWQgdGZ0cDovL3NlcnZlci9TVUJESVIvZ3J1Yi5jZmcgYW5kIHRoaXMgZmlsZSB3
aWxsIGluc3RydWN0IGl0IHRvCiBsb2FkIG1vcmUgZmlsZXMgZnJvbSB0aGUgc3RvcmUgbGlrZSB0
ZnRwOi8vc2VydmVyL2dudS9zdG9yZS/igKYtbGludXjigKYvSW1hZ2UuCiAKLVRvIG1ha2UgdGhp
cyBwb3NzaWJsZSB0d28gc3ltbGlua3Mgd2lsbCBiZSBjcmVhdGVkLiBUaGUgZmlyc3Qgc3ltbGlu
ayBwb2ludHMKK1RvIG1ha2UgdGhpcyBwb3NzaWJsZSB0d28gc3ltbGlua3Mgd2lsbCBiZSBjcmVh
dGVkLiAgVGhlIGZpcnN0IHN5bWxpbmsgcG9pbnRzCiByZWxhdGl2ZWx5IGZvcm0gTU9VTlQtUE9J
TlQvVEFSR0VUL1NVQkRJUi9ncnViLmNmZyB0bwogTU9VTlQtUE9JTlQvYm9vdC9ncnViL2dydWIu
Y2ZnLCBhbmQgdGhlIHNlY29uZCBzeW1saW5rIHBvaW50cyByZWxhdGl2ZWx5IGZyb20KIE1PVU5U
LVBPSU5UL1RBUkdFVC8lc3RvcmUtcHJlZml4IHRvIE1PVU5ULVBPSU5ULyVzdG9yZS1wcmVmaXgu
CkBAIC02NzMsMzQgKzY3MCw3OCBAQCAoZGVmaW5lIChpbnN0YWxsLWdydWItZWZpLW5ldGJvb3Qg
c3ViZGlyKQogCiBJdCBpcyBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgYm90aCBzeW1saW5r
cyB3aWxsIHBvaW50IG91dHNpZGUgdGhlIFRGVFAgcm9vdAogZGlyZWN0b3J5IGFuZCB0aGF0IHRo
ZSBUQVJHRVQvJXN0b3JlLXByZWZpeCBzeW1saW5rIG1ha2VzIHRoZSB3aG9sZSBzdG9yZQotYWNj
ZXNzaWJsZSB2aWEgVEZUUC4gUG9zc2libHkgdGhlIFRGVFAgc2VydmVyIG11c3QgYmUgY29uZmln
dXJlZAotdG8gYWxsb3cgYWNjZXNzZXMgb3V0c2lkZSBpdHMgVEZUUCByb290IGRpcmVjdG9yeS4g
VGhpcyBtYXkgbmVlZCB0byBiZQotY29uc2lkZXJlZCBmb3Igc2VjdXJpdHkgYXNwZWN0cy4iCi0g
ICAgICAgICAodXNlLW1vZHVsZXMgKChndWl4IGJ1aWxkIHVuaW9uKSAjOnNlbGVjdCAoc3ltbGlu
ay1yZWxhdGl2ZSkpKQotICAgICAgICAgKGxldCogKChuZXQtZGlyIChzdHJpbmctYXBwZW5kIG1v
dW50LXBvaW50IHRhcmdldCAiLyIpKQotICAgICAgICAgICAgICAgIChzdWItZGlyIChzdHJpbmct
YXBwZW5kIG5ldC1kaXIgIyRzdWJkaXIgIi8iKSkKLSAgICAgICAgICAgICAgICAoc3RvcmUgKHN0
cmluZy1hcHBlbmQgbW91bnQtcG9pbnQgKCVzdG9yZS1wcmVmaXgpKSkKLSAgICAgICAgICAgICAg
ICAoc3RvcmUtbGluayAoc3RyaW5nLWFwcGVuZCBuZXQtZGlyICglc3RvcmUtcHJlZml4KSkpCi0g
ICAgICAgICAgICAgICAgKGdydWItY2ZnIChzdHJpbmctYXBwZW5kIG1vdW50LXBvaW50ICIvYm9v
dC9ncnViL2dydWIuY2ZnIikpCi0gICAgICAgICAgICAgICAgKGdydWItY2ZnLWxpbmsgKHN0cmlu
Zy1hcHBlbmQgc3ViLWRpciAoYmFzZW5hbWUgZ3J1Yi1jZmcpKSkKLSAgICAgICAgICAgICAgICAo
Ym9vdC1lZmktbGluayAoc3RyaW5nLWFwcGVuZCBzdWItZGlyICMkYm9vdC1lZmktbGluaykpKQot
ICAgICAgICAgICA7OyBQcmVwYXJlIHRoZSBzeW1saW5rIHRvIHRoZSBzdG9yZS4KLSAgICAgICAg
ICAgKG1rZGlyLXAgKGRpcm5hbWUgc3RvcmUtbGluaykpCi0gICAgICAgICAgIChmYWxzZS1pZi1l
eGNlcHRpb24gKGRlbGV0ZS1maWxlIHN0b3JlLWxpbmspKQotICAgICAgICAgICAoc3ltbGluay1y
ZWxhdGl2ZSBzdG9yZSBzdG9yZS1saW5rKQotICAgICAgICAgICA7OyBQcmVwYXJlIHRoZSBzeW1s
aW5rIHRvIHRoZSBncnViLmNmZywgd2hpY2ggcG9pbnRzIGludG8gdGhlIHN0b3JlLgotICAgICAg
ICAgICAobWtkaXItcCAoZGlybmFtZSBncnViLWNmZy1saW5rKSkKLSAgICAgICAgICAgKGZhbHNl
LWlmLWV4Y2VwdGlvbiAoZGVsZXRlLWZpbGUgZ3J1Yi1jZmctbGluaykpCi0gICAgICAgICAgIChz
eW1saW5rLXJlbGF0aXZlIGdydWItY2ZnIGdydWItY2ZnLWxpbmspCi0gICAgICAgICAgIDs7IElu
c3RhbGwgR1JVQiwgd2hpY2ggcmVmZXJzIHRvIHRoZSBncnViLmNmZywgd2l0aCBzdXBwb3J0IGZv
cgotICAgICAgICAgICA7OyBlbmNyeXB0ZWQgcGFydGl0aW9ucywKLSAgICAgICAgICAgKHNldGVu
diAiR1JVQl9FTkFCTEVfQ1JZUFRPRElTSyIgInkiKQotICAgICAgICAgICAoaW52b2tlL3F1aWV0
IChzdHJpbmctYXBwZW5kIGJvb3Rsb2FkZXIgIi9iaW4vZ3J1Yi1ta25ldGRpciIpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgIi0tbmV0LWRpcmVjdG9yeT0iIG5ldC1k
aXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgIi0tc3ViZGlyPSIg
IyRzdWJkaXIpKQotICAgICAgICAgICA7OyBQcmVwYXJlIHRoZSBib290bG9hZGVyIHN5bWxpbmss
IHdoaWNoIHBvaW50cyB0byBjb3JlLmVmaSBvZiBHUlVCLgotICAgICAgICAgICAoZmFsc2UtaWYt
ZXhjZXB0aW9uIChkZWxldGUtZmlsZSBib290LWVmaS1saW5rKSkKLSAgICAgICAgICAgKHN5bWxp
bmsgIyRjb3JlLWVmaSBib290LWVmaS1saW5rKSkpKSkpCithY2Nlc3NpYmxlIHZpYSBURlRQLiAg
UG9zc2libHkgdGhlIFRGVFAgc2VydmVyIG11c3QgYmUgY29uZmlndXJlZCB0byBhbGxvdworYWNj
ZXNzZXMgb3V0c2lkZSBpdHMgVEZUUCByb290IGRpcmVjdG9yeS4gIFRoaXMgYWxsIG1heSBuZWVk
IHRvIGJlIGNvbnNpZGVyZWQKK2ZvciBzZWN1cml0eSBhc3BlY3RzLiAgSXQgaXMgYWR2aXNlZCB0
byBkaXNhYmxlIGFueSBURlRQIHdyaXRlIGFjY2VzcyEKKworVGhlIGluc3RhbGxlciBjYW4gYWxz
byBiZSB1c2VkIHRvIHByZXBhcmUgYm9vdGluZyBmcm9tIGxvY2FsIHN0b3JhZ2VzLCBpZiB0aGUK
K3VuZGVybHlpbmcgZmlsZS1zeXN0ZW0sIGxpa2UgRkFUIG9uIGFuIEVGSSBTeXN0ZW0gUGFydGl0
aW9uIChFU1ApLCBkb2VzIG5vdAorc3VwcG9ydCBzeW1saW5rcy4gIEluIHRoaXMgY2FzZSB0aGUg
TU9VTlQtUE9JTlQvVEFSR0VUL1NVQkRJUi9ncnViLmNmZyB3aWxsIGJlCitjcmVhdGVkIHdpdGgg
dGhlIGhlbHAgb2YgR1JVQi1FRkkgdG8gbG9hZCB0aGUgL2Jvb3QvZ3J1Yi9ncnViLmNmZyBmaWxl
LiAgQQorc3ltbGluayB0byB0aGUgc3RvcmUgaXMgbm90IG5lZWRlZCBpbiB0aGlzIGNhc2UuIgor
ICAgICAgICA7OyBJbiBjb250ZXh0IG9mIGEgZGlzayBpbWFnZSBjcmVhdGlvbiBUQVJHRVQgd2ls
bCBiZSAjZiBhbmQgYW4KKyAgICAgICAgOzsgaW5zdGFsbGVyIGlzIGV4cGVjdGVkIHRvIGRvIG5l
Y2Vzc2FyeSBpbnN0YWxsYXRpb25zIG9uIE1PVU5ULVBPSU5ULAorICAgICAgICA7OyB3aGljaCB3
aWxsIGJlY29tZSB0aGUgcm9vdCBmaWxlIHN5c3RlbS4KKyAgICAgICAgOzsgSWYgVEFSR0VUIGlz
ICNmLCB0aGlzIGluc3RhbGxlciBoYXMgbm90aGluZyB0byBkbywgYXMgaXQgb25seSBjYXJlcwor
ICAgICAgICA7OyBhYm91dCB0aGUgRUZJIFN5c3RlbSBQYXJ0aXRpb24gKEVTUCkuCisgICAgICAg
ICh3aGVuIHRhcmdldAorICAgICAgICAgICh1c2UtbW9kdWxlcyAoKGd1aXggYnVpbGQgdW5pb24p
ICM6c2VsZWN0IChzeW1saW5rLXJlbGF0aXZlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGlj
ZS05IHBvcGVuKQorICAgICAgICAgICAgICAgICAgICAgICAoaWNlLTkgcmRlbGltKSkKKyAgICAg
ICAgICAobGV0KiAoKG1vdW50LXBvaW50L3RhcmdldCAoc3RyaW5nLWFwcGVuZCBtb3VudC1wb2lu
dCB0YXJnZXQgIi8iKSkKKyAgICAgICAgICAgICAgICAgOzsgV2hlbiBpbnN0YWxsaW5nIEd1aXgs
IGl0IGlzIGNvbW1vbiB0byBtb3VudCBUQVJHRVQgYmVsb3cKKyAgICAgICAgICAgICAgICAgOzsg
TU9VTlQtUE9JTlQgcmF0aGVyIHRoYW4gdGhlIHJvb3QgZGlyZWN0b3J5LgorICAgICAgICAgICAg
ICAgICAoYm9vdGxvYWRlci10YXJnZXQgKGlmIChmaWxlLWV4aXN0cz8gbW91bnQtcG9pbnQvdGFy
Z2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdW50LXBvaW50
L3RhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCkp
CisgICAgICAgICAgICAgICAgIChzdG9yZSAoc3RyaW5nLWFwcGVuZCBtb3VudC1wb2ludCAoJXN0
b3JlLXByZWZpeCkpKQorICAgICAgICAgICAgICAgICAoc3RvcmUtbGluayAoc3RyaW5nLWFwcGVu
ZCBib290bG9hZGVyLXRhcmdldCAoJXN0b3JlLXByZWZpeCkpKQorICAgICAgICAgICAgICAgICAo
Z3J1Yi1jZmcgKHN0cmluZy1hcHBlbmQgbW91bnQtcG9pbnQgIyRncnViLWNmZykpCisgICAgICAg
ICAgICAgICAgIChncnViLWNmZy1saW5rIChzdHJpbmctYXBwZW5kIGJvb3Rsb2FkZXItdGFyZ2V0
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMkc3ViZGly
ICIvIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFz
ZW5hbWUgZ3J1Yi1jZmcpKSkpCisgICAgICAgICAgICA7OyBDb3B5IHRoZSBib290bG9hZGVyIGlu
dG8gdGhlIGJvb3Rsb2FkZXItdGFyZ2V0IGRpcmVjdG9yeS4KKyAgICAgICAgICAgIDs7IFNob3Vs
ZCB3ZSBiZWZvcmVoYW5kIHJlY3Vyc2l2ZWx5IGRlbGV0ZSBhbnkgZXhpc3RpbmcgZmlsZT8KKyAg
ICAgICAgICAgIChjb3B5LXJlY3Vyc2l2ZWx5IGJvb3Rsb2FkZXIgYm9vdGxvYWRlci10YXJnZXQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6Zm9sbG93LXN5bWxpbmtzPyAjdAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIzpsb2cgKCVtYWtlLXZvaWQtcG9ydCAidyIpKQor
ICAgICAgICAgICAgOzsgRm9yIFRGVFAgd2UgbmVlZCB0byBpbnN0YWxsIGFkZGl0aW9uYWwgcmVs
YXRpdmUgc3ltbGlua3MuCisgICAgICAgICAgICA7OyBJZiB3ZSBpbnN0YWxsIG9uIGFuIEVGSSBT
eXN0ZW0gUGFydGl0aW9uIChFU1ApIG9yIHNvbWUgb3RoZXIgRkFUCisgICAgICAgICAgICA7OyBm
aWxlLXN5c3RlbSwgdGhlbiBzeW1saW5rcyBjYW5ub3QgYmUgY3JlYXRlZCBhbmQgYXJlIG5vdCBu
ZWVkZWQuCisgICAgICAgICAgICA7OyBUaGVyZWZvcmUgd2UgaWdub3JlIGV4Y2VwdGlvbnMgd2hl
biB0cnlpbmcuCisgICAgICAgICAgICA7OyBQcmVwYXJlIHRoZSBzeW1saW5rIHRvIHRoZSBncnVi
LmNmZy4KKyAgICAgICAgICAgIChta2Rpci1wIChkaXJuYW1lIGdydWItY2ZnLWxpbmspKQorICAg
ICAgICAgICAgKGZhbHNlLWlmLWV4Y2VwdGlvbiAoZGVsZXRlLWZpbGUgZ3J1Yi1jZmctbGluaykp
CisgICAgICAgICAgICAoaWYgKHVuc3BlY2lmaWVkPworICAgICAgICAgICAgICAgIChmYWxzZS1p
Zi1leGNlcHRpb24gKHN5bWxpbmstcmVsYXRpdmUgZ3J1Yi1jZmcgZ3J1Yi1jZmctbGluaykpKQor
ICAgICAgICAgICAgICA7OyBTeW1saW5rcyBhcmUgc3VwcG9ydGVkLgorICAgICAgICAgICAgICAo
YmVnaW4KKyAgICAgICAgICAgICAgICA7OyBQcmVwYXJlIHRoZSBzeW1saW5rIHRvIHRoZSBzdG9y
ZS4KKyAgICAgICAgICAgICAgICAobWtkaXItcCAoZGlybmFtZSBzdG9yZS1saW5rKSkKKyAgICAg
ICAgICAgICAgICAoZmFsc2UtaWYtZXhjZXB0aW9uIChkZWxldGUtZmlsZSBzdG9yZS1saW5rKSkK
KyAgICAgICAgICAgICAgICAoc3ltbGluay1yZWxhdGl2ZSBzdG9yZSBzdG9yZS1saW5rKSkKKyAg
ICAgICAgICAgICAgOzsgQ3JlYXRpbmcgc3ltbGlua3MgZG9lcyBub3Qgc2VlbSB0byBiZSBzdXBw
b3J0ZWQuCisgICAgICAgICAgICAgIDs7IFByb2JhYmx5IGFuIEVTUCBpcyB1c2VkLgorICAgICAg
ICAgICAgICA7OyBJbnN0ZWFkIHdlIGNhbiBzY3JpcHQgdG8gc2VhcmNoIGFuZCBsb2FkIHRoZSBh
Y3R1YWwgZ3J1Yi5jZmcuCisgICAgICAgICAgICAgIChsZXQqICgocHJvYmUgIyQoZmlsZS1hcHBl
bmQgZ3J1Yi1lZmkgIi9zYmluL2dydWItcHJvYmUiKSkKKyAgICAgICAgICAgICAgICAgICAgIChw
b3J0CisgICAgICAgICAgICAgICAgICAgICAgIChvcGVuLXBpcGUqIE9QRU5fUkVBRCBwcm9iZSAi
LS10YXJnZXQ9ZnNfdXVpZCIgZ3J1Yi1jZmcpKQorICAgICAgICAgICAgICAgICAgICAgKHNlYXJj
aC1yb290CisgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocmVhZC1saW5lIHBvcnQpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgKCg/IGVvZi1vYmplY3Q/KQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOzsgVGhlcmUgaXMgbm8gVVVJRCBhdmFpbGFibGUuIEFzIGEgZmFsbGJhY2sg
c2VhcmNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBldmVyeXdoZXJlIGZvciB0aGUg
Z3J1Yi5jZmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAic2Vh
cmNoIC0tZmlsZSAtLXNldCAiICMkZ3J1Yi1jZmcpKQorICAgICAgICAgICAgICAgICAgICAgICAg
IChmcy11dWlkCisgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBUaGUgVVVJRCB0byBsb2Fk
IHRoZSBncnViLmNmZyBmcm9tIGlzIGtub3duLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHN0cmluZy1hcHBlbmQgInNlYXJjaCAtLWZzLXV1aWQgLS1zZXQgIiBmcy11dWlkKSkpKQorICAg
ICAgICAgICAgICAgICAgICAgKGxvYWQtZ3J1Yi1jZmcgKHN0cmluZy1hcHBlbmQgImNvbmZpZ2Zp
bGUgIiAjJGdydWItY2ZnKSkpCisgICAgICAgICAgICAgICAgKGNsb3NlLXBpcGUgcG9ydCkKKyAg
ICAgICAgICAgICAgICAod2l0aC1vdXRwdXQtdG8tZmlsZSBncnViLWNmZy1saW5rCisgICAgICAg
ICAgICAgICAgICAobGFtYmRhICgpCisgICAgICAgICAgICAgICAgICAgIChkaXNwbGF5IChzdHJp
bmctam9pbiAobGlzdCBzZWFyY2gtcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9hZC1ncnViLWNmZykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJcbiIpKSkpKSkpKSkpKQogCiAMCiAKQEAgLTcxOCw3ICs3NTks
NyBAQCAoZGVmaW5lIGdydWItYm9vdGxvYWRlcgogICAgKHBhY2thZ2UgZ3J1YikKICAgIChpbnN0
YWxsZXIgaW5zdGFsbC1ncnViKQogICAgKGRpc2staW1hZ2UtaW5zdGFsbGVyIGluc3RhbGwtZ3J1
Yi1kaXNrLWltYWdlKQotICAgKGNvbmZpZ3VyYXRpb24tZmlsZSAiL2Jvb3QvZ3J1Yi9ncnViLmNm
ZyIpCisgICAoY29uZmlndXJhdGlvbi1maWxlIGdydWItY2ZnKQogICAgKGNvbmZpZ3VyYXRpb24t
ZmlsZS1nZW5lcmF0b3IgZ3J1Yi1jb25maWd1cmF0aW9uLWZpbGUpKSkKIAogKGRlZmluZSBncnVi
LW1pbmltYWwtYm9vdGxvYWRlcgpAQCAtNzI4LDE3ICs3NjksMjkgQEAgKGRlZmluZSBncnViLW1p
bmltYWwtYm9vdGxvYWRlcgogCiAoZGVmaW5lIGdydWItZWZpLWJvb3Rsb2FkZXIKICAgKGJvb3Rs
b2FkZXIKLSAgIChpbmhlcml0IGdydWItYm9vdGxvYWRlcikKKyAgIChuYW1lICdncnViLWVmaSkK
KyAgIChwYWNrYWdlIGdydWItZWZpKQogICAgKGluc3RhbGxlciBpbnN0YWxsLWdydWItZWZpKQog
ICAgKGRpc2staW1hZ2UtaW5zdGFsbGVyICNmKQotICAgKG5hbWUgJ2dydWItZWZpKQotICAgKHBh
Y2thZ2UgZ3J1Yi1lZmkpKSkKKyAgIChjb25maWd1cmF0aW9uLWZpbGUgZ3J1Yi1jZmcpCisgICAo
Y29uZmlndXJhdGlvbi1maWxlLWdlbmVyYXRvciBncnViLWNvbmZpZ3VyYXRpb24tZmlsZSkpKQog
Ci0oZGVmaW5lIGdydWItZWZpLW5ldGJvb3QtYm9vdGxvYWRlcgorKGRlZmluZSAobWFrZS1ncnVi
LWVmaS1uZXRib290LWJvb3Rsb2FkZXIgbmFtZSBzdWJkaXIpCiAgIChib290bG9hZGVyCi0gICAo
aW5oZXJpdCBncnViLWVmaS1ib290bG9hZGVyKQotICAgKG5hbWUgJ2dydWItZWZpLW5ldGJvb3Qt
Ym9vdGxvYWRlcikKLSAgIChpbnN0YWxsZXIgKGluc3RhbGwtZ3J1Yi1lZmktbmV0Ym9vdCAiZWZp
L0d1aXgiKSkpKQorICAgKG5hbWUgbmFtZSkKKyAgIChwYWNrYWdlIChtYWtlLWdydWItZWZpLW5l
dGJvb3QgKHN5bWJvbC0+c3RyaW5nIG5hbWUpIHN1YmRpcikpCisgICAoaW5zdGFsbGVyIChtYWtl
LWdydWItZWZpLW5ldGJvb3QtaW5zdGFsbGVyIGdydWItZWZpIGdydWItY2ZnIHN1YmRpcikpCisg
ICAoZGlzay1pbWFnZS1pbnN0YWxsZXIgI2YpCisgICAoY29uZmlndXJhdGlvbi1maWxlIGdydWIt
Y2ZnKQorICAgKGNvbmZpZ3VyYXRpb24tZmlsZS1nZW5lcmF0b3IgZ3J1Yi1lZmktY29uZmlndXJh
dGlvbi1maWxlKSkpCisKKyhkZWZpbmUgZ3J1Yi1lZmktbmV0Ym9vdC1ib290bG9hZGVyCisgICht
YWtlLWdydWItZWZpLW5ldGJvb3QtYm9vdGxvYWRlciAnZ3J1Yi1lZmktbmV0Ym9vdC1ib290bG9h
ZGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZWZpL0d1aXgiKSkKKwor
KGRlZmluZSBncnViLWVmaS1uZXRib290LXJlbW92YWJsZS1ib290bG9hZGVyCisgIChtYWtlLWdy
dWItZWZpLW5ldGJvb3QtYm9vdGxvYWRlciAnZ3J1Yi1lZmktbmV0Ym9vdC1yZW1vdmFibGUtYm9v
dGxvYWRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVmaS9ib290Iikp
CiAKIChkZWZpbmUgZ3J1Yi1ta3Jlc2N1ZS1ib290bG9hZGVyCiAgIChib290bG9hZGVyCmRpZmYg
LS1naXQgYS9nbnUvcGFja2FnZXMvYm9vdGxvYWRlcnMuc2NtIGIvZ251L3BhY2thZ2VzL2Jvb3Rs
b2FkZXJzLnNjbQppbmRleCA3ZWE2ZjVhNjQ3Li42ODc2YWIxN2I5IDEwMDY0NAotLS0gYS9nbnUv
cGFja2FnZXMvYm9vdGxvYWRlcnMuc2NtCisrKyBiL2dudS9wYWNrYWdlcy9ib290bG9hZGVycy5z
Y20KQEAgLTE1LDYgKzE1LDcgQEAKIDs7OyBDb3B5cmlnaHQgwqkgMjAyMCwgMjAyMSBQaWVycmUg
TGFuZ2xvaXMgPHBpZXJyZS5sYW5nbG9pc0BnbXguY29tPgogOzs7IENvcHlyaWdodCDCqSAyMDIx
IFZpbmNlbnQgTGVnb2xsIDx2aW5jZW50LmxlZ29sbEBnbWFpbC5jb20+CiA7OzsgQ29weXJpZ2h0
IMKpIDIwMjEgQnJpY2UgV2FlZ2VuZWlyZSA8YnJpY2VAd2FlZ2VuZWkucmU+Cis7OzsgQ29weXJp
Z2h0IMKpIDIwMjEgU3RlZmFuIDxzdGVmYW4tZ3VpeEB2b2RhZm9uZW1haWwuZGU+CiA7OzsKIDs7
OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgR3VpeC4KIDs7OwpAQCAtNjYsMTMgKzY3LDE3IEBA
IChkZWZpbmUtbW9kdWxlIChnbnUgcGFja2FnZXMgYm9vdGxvYWRlcnMpCiAgICM6dXNlLW1vZHVs
ZSAoZ251IHBhY2thZ2VzIHZpcnR1YWxpemF0aW9uKQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNr
YWdlcyB4b3JnKQogICAjOnVzZS1tb2R1bGUgKGd1aXggYnVpbGQtc3lzdGVtIGdudSkKKyAgIzp1
c2UtbW9kdWxlIChndWl4IGJ1aWxkLXN5c3RlbSB0cml2aWFsKQogICAjOnVzZS1tb2R1bGUgKGd1
aXggZG93bmxvYWQpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBnZXhwKQogICAjOnVzZS1tb2R1bGUg
KGd1aXggZ2l0LWRvd25sb2FkKQogICAjOnVzZS1tb2R1bGUgKChndWl4IGxpY2Vuc2VzKSAjOnBy
ZWZpeCBsaWNlbnNlOikKICAgIzp1c2UtbW9kdWxlIChndWl4IHBhY2thZ2VzKQogICAjOnVzZS1t
b2R1bGUgKGd1aXggdXRpbHMpCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCiAgICM6dXNl
LW1vZHVsZSAoc3JmaSBzcmZpLTI2KQorICAjOnVzZS1tb2R1bGUgKGljZS05IG1hdGNoKQorICAj
OnVzZS1tb2R1bGUgKGljZS05IG9wdGFyZ3MpCiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgcmVnZXgp
KQogCiAoZGVmaW5lIHVuaWZvbnQKQEAgLTM2Niw2ICszNzEsOTEgQEAgKGRlZmluZS1wdWJsaWMg
Z3J1Yi1oeWJyaWQKICAgICAgICAgICAgICAgICAgIChzY2FuZGlyIGlucHV0LWRpcikpCiAgICAg
ICAgICAgICAgICAgICN0KSkpKSkpKSkpCiAKKyhkZWZpbmUtcHVibGljIChtYWtlLWdydWItZWZp
LW5ldGJvb3QgbmFtZSBzdWJkaXIpCisgICJNYWtlIGEgZ3J1Yi1lZmktbmV0Ym9vdCBwYWNrYWdl
IG5hbWVkIE5BTUUsIHdoaWNoIHdpbGwgYmUgYWJsZSB0byBib290IG92ZXIKK25ldHdvcmsgdmlh
IFRGVFAgYnkgYWNjZXNzaW5nIGl0cyBmaWxlcyBpbiB0aGUgU1VCRElSIG9mIGEgVEZUUCByb290
IGRpcmVjdG9yeS4KK1RoaXMgcGFja2FnZSBpcyBhbHNvIGFibGUgdG8gYm9vdCBmcm9tIGxvY2Fs
IHN0b3JhZ2UgZGV2aWNlcy4KKworQSBib290bG9hZGVyLWluc3RhbGxlciBiYXNpY2FsbHkgbmVl
ZHMgdG8gY29weSB0aGUgcGFja2FnZSBjb250ZW50IGludG8gdGhlCitib290bG9hZGVyLXRhcmdl
dCBkaXJlY3RvcnksIHdoaWNoIHdpbGwgdXN1YWxseSBiZSB0aGUgVEZUUCByb290LCBhcworJ2dy
dWItbWtuZXRkaXInIHdpbGwgYmUgaW52b2tlZCBhbHJlYWR5IGR1cmluZyB0aGUgcGFja2FnZSBj
cmVhdGlvbi4KKworQWx0ZXJuYXRpdmVseSB0aGUgYm9vdGxvYWRlci10YXJnZXQgZGlyZWN0b3J5
IGNhbiBiZSBhIG1vdW50ZWQgRUZJIFN5c3RlbQorUGFydGl0aW9uIChFU1ApLCBvciBhIHNpbWls
YXIgcGFydGl0aW9uIHdpdGggYSBGQVQgZmlsZSBzeXN0ZW0sIGZvciBib290aW5nCitmcm9tIGxv
Y2FsIHN0b3JhZ2UgZGV2aWNlcy4KKworVGhlIG5hbWUgb2YgdGhlIEdSVUIgRUZJIGJpbmFyeSB3
aWxsIGNvbmZvcm0gdG8gdGhlIFVFRkkgc3BlY2lmaWNhdGlvbiBmb3IKK3JlbW92YWJsZSBtZWRp
YS4gIERlcGVuZGluZyBvbiB0aGUgc3lzdGVtIGl0IHdpbGwgYmUgZS5nLiBib290eDY0LmVmaSBv
cgorYm9vdGFhNjQuZWZpIGJlbG93IFNVQkRJUi4KKworVGhlIFNVQkRJUiBhcmd1bWVudCBuZWVk
cyB0byBiZSBzZXQgdG8gXCJlZmkvYm9vdFwiIHRvIGNyZWF0ZSBhIHBhY2thZ2Ugd2hpY2gKK2Nv
bmZvcm1zIHRvIHRoZSBVRUZJIHNwZWNpZmljYXRpb24gZm9yIHJlbW92YWJsZSBtZWRpYS4KKwor
VGhlIFNVQkRJUiBhcmd1bWVudCBkZWZhdWx0cyB0byBcImVmaS9HdWl4XCIsIGFzIGl0IGlzIGFs
c28gdGhlIGNhc2UgZm9yCisnZ3J1Yi1lZmktYm9vdGxvYWRlcicuIgorICAocGFja2FnZQorICAg
IChuYW1lIG5hbWUpCisgICAgKHZlcnNpb24gKHBhY2thZ2UtdmVyc2lvbiBncnViLWVmaSkpCisg
ICAgOzsgU291cmNlIGlzIG5vdCBuZWVkZWQsIGJ1dCBpdCBjYW5ub3QgYmUgb21pdHRlZC4KKyAg
ICAoc291cmNlICNmKQorICAgIChidWlsZC1zeXN0ZW0gdHJpdmlhbC1idWlsZC1zeXN0ZW0pCisg
ICAgKGFyZ3VtZW50cworICAgICAobGV0KiAoKHN5c3RlbSAoc3RyaW5nLXNwbGl0IChuaXgtc3lz
dGVtLT5nbnUtdHJpcGxldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciAo
JWN1cnJlbnQtdGFyZ2V0LXN5c3RlbSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKCVjdXJyZW50LXN5c3RlbSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICNcLSkpCisgICAgICAgICAgICAoYXJjaCAoZmlyc3Qgc3lzdGVtKSkKKyAgICAgICAgICAg
IChib290LWVmaQorICAgICAgICAgICAgIChtYXRjaCBzeXN0ZW0KKyAgICAgICAgICAgICAgIDs7
IFRoZXNlIGFyZSB0aGUgc3VwcG9ydGVuZCBzeXN0ZW1zIGFuZCB0aGUgbmFtZXMgZGVmaW5lZCBi
eQorICAgICAgICAgICAgICAgOzsgdGhlIFVFRkkgc3RhbmRhcmQgZm9yIHJlbW92YWJsZSBtZWRp
YS4KKyAgICAgICAgICAgICAgICgoImk2ODYiIF8gLi4uKSAgICAgICAgIi9ib290aWEzMi5lZmki
KQorICAgICAgICAgICAgICAgKCgieDg2XzY0IiBfIC4uLikgICAgICAiL2Jvb3R4NjQuZWZpIikK
KyAgICAgICAgICAgICAgICgoImFybSIgXyAuLi4pICAgICAgICAgIi9ib290YXJtLmVmaSIpCisg
ICAgICAgICAgICAgICAoKCJhYXJjaDY0IiBfIC4uLikgICAgICIvYm9vdGFhNjQuZWZpIikKKyAg
ICAgICAgICAgICAgICgoInJpc2N2IiBfIC4uLikgICAgICAgIi9ib290cmlzY3YzMi5lZmkiKQor
ICAgICAgICAgICAgICAgKCgicmlzY3Y2NCIgXyAuLi4pICAgICAiL2Jvb3RyaXNjdjY0LmVmaSIp
CisgICAgICAgICAgICAgICA7OyBPdGhlciBzeXN0ZW1zIGFyZSBub3Qgc3VwcG9ydGVkLCBhbHRo
b3VnaCBkZWZpbmVkLgorICAgICAgICAgICAgICAgOzsgKCgicmlzY3YxMjgiIF8gLi4uKSAiL2Jv
b3RyaXNjdjEyOC5lZmkiKQorICAgICAgICAgICAgICAgOzsgKCgiaWE2NCIgXyAuLi4pICAgICAi
L2Jvb3RpYTY0LmVmaSIpCisgICAgICAgICAgICAgICAoKF8gLi4uKSAgICAgICAgICAgICAgICNm
KSkpCisgICAgICAgICAgICAoY29yZS1lZmkgKHN0cmluZy1hcHBlbmQKKyAgICAgICAgICAgICAg
ICAgICAgICAgOzsgVGhpcyBpcyB0aGUgYXJjaCBkZXBlbmRlbnQgZmlsZSBuYW1lIG9mIEdSVUIs
IGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgOzsgaTM2OC1lZmkvY29yZS5lZmkgb3IgYXJt
NjQtZWZpL2NvcmUuZWZpLgorICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYXJjaAorICAg
ICAgICAgICAgICAgICAgICAgICAgICgiaTY4NiIgICAgImkzODYiKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICgiYWFyY2g2NCIgImFybTY0IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAo
InJpc2N2IiAgICJyaXNjdjMyIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAoXyAgICAgICAg
IGFyY2gpKQorICAgICAgICAgICAgICAgICAgICAgICAiLWVmaS9jb3JlLmVmaSIpKSkKKyAgICAg
ICBgKCM6bW9kdWxlcyAoKGd1aXggYnVpbGQgdXRpbHMpKQorICAgICAgICAgIzpidWlsZGVyCisg
ICAgICAgICAoYmVnaW4KKyAgICAgICAgICAgKHVzZS1tb2R1bGVzIChndWl4IGJ1aWxkIHV0aWxz
KSkKKyAgICAgICAgICAgKGxldCogKChib290bG9hZGVyIChhc3NvYy1yZWYgJWJ1aWxkLWlucHV0
cyAiZ3J1Yi1lZmkiKSkKKyAgICAgICAgICAgICAgICAgIChuZXQtZGlyIChhc3NvYy1yZWYgJW91
dHB1dHMgIm91dCIpKQorICAgICAgICAgICAgICAgICAgKHN1Yi1kaXIgKHN0cmluZy1hcHBlbmQg
bmV0LWRpciAiLyIgLHN1YmRpciAiLyIpKQorICAgICAgICAgICAgICAgICAgKGJvb3QtZWZpIChz
dHJpbmctYXBwZW5kIHN1Yi1kaXIgLGJvb3QtZWZpKSkKKyAgICAgICAgICAgICAgICAgIChjb3Jl
LWVmaSAoc3RyaW5nLWFwcGVuZCBzdWItZGlyICxjb3JlLWVmaSkpKQorICAgICAgICAgICAgIDs7
IEluc3RhbGwgR1JVQiwgd2hpY2ggcmVmZXJzIHRvIHRoZSBncnViLmNmZywgd2l0aCBzdXBwb3J0
IGZvcgorICAgICAgICAgICAgIDs7IGVuY3J5cHRlZCBwYXJ0aXRpb25zLAorICAgICAgICAgICAg
IChzZXRlbnYgIkdSVUJfRU5BQkxFX0NSWVBUT0RJU0siICJ5IikKKyAgICAgICAgICAgICAoaW52
b2tlL3F1aWV0IChzdHJpbmctYXBwZW5kIGJvb3Rsb2FkZXIgIi9iaW4vZ3J1Yi1ta25ldGRpciIp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAiLS1uZXQtZGlyZWN0
b3J5PSIgbmV0LWRpcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5k
ICItLXN1YmRpcj0iICxzdWJkaXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBUaGVz
ZSBtb2R1bGVzIG11c3QgYmUgcHJlbG9hZGVkIHRvIGFsbG93IGJvb3RpbmcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDs7IGZyb20gYW4gRVNQIG9yIGEgc2ltaWxhciBwYXJ0aXRpb24gd2l0
aCBhIEZBVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgZmlsZSBzeXN0ZW0uCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAiLS1tb2R1bGVzPXBhcnRfbXNk
b3MgcGFydF9ncHQgZmF0IikpCisgICAgICAgICAgICAgOzsgTW92ZSBHUlVCJ3MgY29yZS5lZmkg
dG8gdGhlIHJlbW92YWJsZSBtZWRpYSBuYW1lLgorICAgICAgICAgICAgIChmYWxzZS1pZi1leGNl
cHRpb24gKGRlbGV0ZS1maWxlIGJvb3QtZWZpKSkKKyAgICAgICAgICAgICAocmVuYW1lLWZpbGUg
Y29yZS1lZmkgYm9vdC1lZmkpKSkpKSkKKyAgICAoaW5wdXRzIGAoKCJncnViLWVmaSIgLGdydWIt
ZWZpKSkpCisgICAgKHN5bm9wc2lzIChwYWNrYWdlLXN5bm9wc2lzIGdydWItZWZpKSkKKyAgICAo
ZGVzY3JpcHRpb24gKHBhY2thZ2UtZGVzY3JpcHRpb24gZ3J1Yi1lZmkpKQorICAgIChob21lLXBh
Z2UgKHBhY2thZ2UtaG9tZS1wYWdlIGdydWItZWZpKSkKKyAgICAobGljZW5zZSAocGFja2FnZS1s
aWNlbnNlIGdydWItZWZpKSkpKQorCiAoZGVmaW5lLXB1YmxpYyBzeXNsaW51eAogICAobGV0ICgo
Y29tbWl0ICJiYjQxZTkzNWNjODNjNjI0MmRlMjRkMjI3MWUwNjdkNzZhZjM1ODVjIikpCiAgICAg
KHBhY2thZ2UKLS0gCjIuMzQuMAoK

--b1_dy1TZ2hS49oNQXeFOaGaAgaz8PDQdSfZJR0gkUp7ur0
Content-Type: text/x-patch; name=v5-0003-gnu-bootloader-Add-U-Boot-packages-for-Raspberry-.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=v5-0003-gnu-bootloader-Add-U-Boot-packages-for-Raspberry-.patch

RnJvbSBmNmUwMWRiMDU4MWFkN2MyOTFhMjBmNWE4YjE1YmQ1OTI1YmE3MGFmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gPHN0ZWZhbi1ndWl4QHZvZGFmb25lbWFpbC5kZT4K
RGF0ZTogV2VkLCAxMyBBcHIgMjAyMiAyMToxMToyMCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjUg
My84XSBnbnU6IGJvb3Rsb2FkZXI6IEFkZCBVLUJvb3QgcGFja2FnZXMgZm9yIFJhc3BiZXJyeSBQ
aQogbW9kZWxzLgoKKiBnbnUvcGFja2FnZXMvYm9vdGxvYWRlci5zY20gKG1ha2UtdS1ib290LXBh
Y2thZ2UpOiBBZGQga2V5d29yZApwYXJhbWV0ZXJzICduYW1lJyBhbmQgJ2Rlc2NyaXB0aW9uJy4K
KG1ha2UtcHJlaW5zdGFsbGVkLXUtYm9vdC1wYWNrYWdlKTogTmV3IGZ1bmN0aW9uIHRvIG1ha2Ug
bWluaW1hbCBwYWNrYWdlcy4KKCV1LWJvb3QtcnBpLWVmaS1jb25maWdzKTogTmV3IGhlbHBlciBs
aXN0IHdpdGggY29uZmlnIHN0cmluZ3MuCigldS1ib290LXJwaS1kZXNjcmlwdGlvbi0zMi1iaXQs
ICV1LWJvb3QtcnBpLWRlc2NyaXB0aW9uLTY0LWJpdCwKJXUtYm9vdC1ycGktZWZpLWRlc2NyaXB0
aW9uLCAldS1ib290LXJwaS1lZmktZGVzY3JpcHRpb24tMzItYml0KTogTmV3IGhlbHBlcgpzdHJp
bmdzLgoodS1ib290LXJwaS0wLXcsIHUtYm9vdC1ycGksIHUtYm9vdC1ycGktMiwgdS1ib290LXJw
aS0zLCB1LWJvb3QtcnBpLTQsCnUtYm9vdC1ycGktNjQsIHUtYm9vdC1ycGktMC13LWVmaSwgdS1i
b290LXJwaS1lZmksIHUtYm9vdC1ycGktMi1lZmksCnUtYm9vdC1ycGktMy1lZmksIHUtYm9vdC1y
cGktNC1lZmksIHUtYm9vdC1ycGktZWZpLTY0KTogTmV3IHBhY2thZ2VzLgoKZGlmZiAtLWdpdCBh
L2dudS9wYWNrYWdlcy9ib290bG9hZGVycy5zY20gYi9nbnUvcGFja2FnZXMvYm9vdGxvYWRlcnMu
c2NtCmluZGV4IDEwZjJkZDVmYWQuLjg0ZDY1Yzk0Y2QgMTAwNjQ0Ci0tLSBhL2dudS9wYWNrYWdl
cy9ib290bG9hZGVycy5zY20KKysrIGIvZ251L3BhY2thZ2VzL2Jvb3Rsb2FkZXJzLnNjbQpAQCAt
NzQ4LDE3ICs3NDgsMzAgQEAgKGRlZmluZS1wdWJsaWMgdS1ib290LXRvb2xzCiBhbHNvIGluaXRp
YWxpemVzIHRoZSBib2FyZHMgKFJBTSBldGMpLiAgVGhpcyBwYWNrYWdlIHByb3ZpZGVzIGl0cwog
Ym9hcmQtaW5kZXBlbmRlbnQgdG9vbHMuIikpKQogCi0oZGVmaW5lKi1wdWJsaWMgKG1ha2UtdS1i
b290LXBhY2thZ2UgYm9hcmQgdHJpcGxldCAjOmtleSBkZWZjb25maWcgY29uZmlncykKKyhkZWZp
bmUqLXB1YmxpYyAobWFrZS11LWJvb3QtcGFja2FnZSBib2FyZAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRyaXBsZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjOmtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmNv
bmZpZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3MKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24pCiAgICJSZXR1cm5zIGEgdS1ib290IHBhY2th
Z2UgZm9yIEJPQVJEIGNyb3NzLWNvbXBpbGVkIGZvciBUUklQTEVUIHdpdGggdGhlCi1vcHRpb25h
bCBERUZDT05GSUcgZmlsZSBhbmQgb3B0aW9uYWwgY29uZmlndXJhdGlvbiBjaGFuZ2VzIGZyb20g
Q09ORklHUy4iCitvcHRpb25hbCBERUZDT05GSUcgZmlsZSBhbmQgb3B0aW9uYWwgY29uZmlndXJh
dGlvbiBjaGFuZ2VzIGZyb20gQ09ORklHUy4KK0VpdGhlciBOQU1FLCBpZiB1c2VkLCBvciBvdGhl
cndpc2UgQk9BUkQgd2lsbCBiZSBwYXJ0IG9mIHRoZSBwYWNrYWdlIG5hbWUuCitERVNDUklQVElP
TiB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBwYWNrYWdlIGRlc2NyaXB0aW9uLiIKICAgKGxldCAo
KHNhbWUtYXJjaD8gKGxhbWJkYSAoKQogICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmc9PyAo
JWN1cnJlbnQtc3lzdGVtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ251LXRy
aXBsZXQtPm5peC1zeXN0ZW0gdHJpcGxldCkpKSkpCiAgICAgKHBhY2thZ2UKICAgICAgIChpbmhl
cml0IHUtYm9vdCkKICAgICAgIChuYW1lIChzdHJpbmctYXBwZW5kICJ1LWJvb3QtIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1yZXBsYWNlLXN1YnN0cmluZyAoc3RyaW5nLWRv
d25jYXNlIGJvYXJkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiXyIgIi0iKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5n
LXJlcGxhY2Utc3Vic3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1k
b3duY2FzZSAob3IgbmFtZSBib2FyZCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl8i
ICItIikpKQorICAgICAgKGRlc2NyaXB0aW9uIChpZiBkZXNjcmlwdGlvbgorICAgICAgICAgICAg
ICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAocGFja2FnZS1kZXNjcmlwdGlvbiB1LWJvb3QpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIgZGVzY3JpcHRpb24pCisg
ICAgICAgICAgICAgICAgICAgICAgIChwYWNrYWdlLWRlc2NyaXB0aW9uIHUtYm9vdCkpKQogICAg
ICAgKG5hdGl2ZS1pbnB1dHMKICAgICAgICBgKCxAKGlmIChub3QgKHNhbWUtYXJjaD8pKQogICAg
ICAgICAgICAgIGAoKCJjcm9zcy1nY2MiICwoY3Jvc3MtZ2NjIHRyaXBsZXQpKQpAQCAtMTExNyw2
ICsxMTMwLDE1NyBAQCAoZGVmaW5lLXB1YmxpYyB1LWJvb3QtcGluZWJvb2stcHJvLXJrMzM5OQog
ICAgICAgIGAoKCJmaXJtd2FyZSIgLGFybS10cnVzdGVkLWZpcm13YXJlLXJrMzM5OSkKICAgICAg
ICAgICxAKHBhY2thZ2UtbmF0aXZlLWlucHV0cyBiYXNlKSkpKSkpCiAKKyhkZWZpbmUqLXB1Ymxp
YyAobWFrZS1wcmVpbnN0YWxsZWQtdS1ib290LXBhY2thZ2UgYm9hcmQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpcGxldAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmtleQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZjb25maWcKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlncworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1LWJvb3Qt
ZmlsZSAidS1ib290LmJpbiIpKQorICAiUmV0dXJucyBhIHBhY2thZ2Ugd2l0aCBhIHNpbmdsZSBV
LUJPT1QtRklMRSBmb3IgQk9BUkQgY3Jvc3MtY29tcGlsZWQgZm9yCitUUklQTEVUIHdpdGggdGhl
IG9wdGlvbmFsIERFRkNPTkZJRyBmaWxlIGFuZCBvcHRpb25hbCBjb25maWd1cmF0aW9uIGNoYW5n
ZXMKK2Zyb20gQ09ORklHUy4gIEVpdGhlciBOQU1FLCBpZiB1c2VkLCBvciBvdGhlcndpc2UgQk9B
UkQgd2lsbCBiZSBwYXJ0IG9mIHRoZQorcGFja2FnZSBuYW1lLiAgREVTQ1JJUFRJT04gd2lsbCBi
ZSBhcHBlbmRlZCB0byB0aGUgcGFja2FnZSBkZXNjcmlwdGlvbi4iCisgIChsZXQqICgobmFtZS1z
dWZmaXggIi1jb21wbGV0ZSIpCisgICAgICAgICAodS1ib290LXBhY2thZ2UgKG1ha2UtdS1ib290
LXBhY2thZ2UgYm9hcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0cmlwbGV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIzpkZWZjb25maWcgZGVmY29uZmlnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIzpjb25maWdzIGNvbmZpZ3MKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjOm5hbWUgKHN0cmluZy1hcHBlbmQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciBuYW1lIGJvYXJk
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bmFtZS1zdWZmaXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIzpkZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikpKQorICAgIChwYWNrYWdlCisgICAgICAobmFt
ZSAoc3RyaW5nLWRyb3AtcmlnaHQgKHBhY2thZ2UtbmFtZSB1LWJvb3QtcGFja2FnZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWxlbmd0aCBuYW1lLXN1ZmZpeCkpKQor
ICAgICAgKHZlcnNpb24gKHBhY2thZ2UtdmVyc2lvbiB1LWJvb3QtcGFja2FnZSkpCisgICAgICAo
c291cmNlICNmKQorICAgICAgKGJ1aWxkLXN5c3RlbSB0cml2aWFsLWJ1aWxkLXN5c3RlbSkKKyAg
ICAgIChhcmd1bWVudHMKKyAgICAgICBgKCM6YnVpbGRlcgorICAgICAgICAgKGJlZ2luCisgICAg
ICAgICAgIChsZXQgKChvdXQgKGFzc29jLXJlZiAlb3V0cHV0cyAib3V0IikpKQorICAgICAgICAg
ICAgIChta2RpciBvdXQpCisgICAgICAgICAgICAgKHN5bWxpbmsgKHN0cmluZy1hcHBlbmQgKGFz
c29jLXJlZiAlYnVpbGQtaW5wdXRzICJ1LWJvb3QiKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiL2xpYmV4ZWMvIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAsdS1ib290LWZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgb3V0
ICIvIiAsdS1ib290LWZpbGUpKSkpKSkKKyAgICAgIChpbnB1dHMgYCgoInUtYm9vdCIgLHUtYm9v
dC1wYWNrYWdlKSkpCisgICAgICAoaG9tZS1wYWdlIChwYWNrYWdlLWhvbWUtcGFnZSB1LWJvb3Qt
cGFja2FnZSkpCisgICAgICAoc3lub3BzaXMgKHBhY2thZ2Utc3lub3BzaXMgdS1ib290LXBhY2th
Z2UpKQorICAgICAgKGRlc2NyaXB0aW9uIChwYWNrYWdlLWRlc2NyaXB0aW9uIHUtYm9vdC1wYWNr
YWdlKSkKKyAgICAgIChsaWNlbnNlIChwYWNrYWdlLWxpY2Vuc2UgdS1ib290LXBhY2thZ2UpKSkp
KQorCisoZGVmaW5lLXB1YmxpYyAldS1ib290LXJwaS1lZmktY29uZmlncworICAnKCJDT05GSUdf
T0ZfRU1CRUQ9IgorICAgICJDT05GSUdfT0ZfQk9BUkQ9eSIKKyAgICAiQ09ORklHX0JPT1RERUxB
WT0wIikpCisKKyhkZWZpbmUgJXUtYm9vdC1ycGktZGVzY3JpcHRpb24tMzItYml0CisgICJUaGlz
IGlzIGEgMzItYml0IGJ1aWxkIG9mIFUtQm9vdC4iKQorCisoZGVmaW5lICV1LWJvb3QtcnBpLWRl
c2NyaXB0aW9uLTY0LWJpdAorICAiVGhpcyBpcyBhIGNvbW1vbiA2NC1iaXQgYnVpbGQgb2YgVS1C
b290IGZvciBhbGwgNjQtYml0IGNhcGFibGUgUmFzcGJlcnJ5IFBpCit2YXJpYW50cy4iKQorCiso
ZGVmaW5lICV1LWJvb3QtcnBpLWVmaS1kZXNjcmlwdGlvbgorICAiSXQgYWxsb3dzIG5ldHdvcmsg
Ym9vdGluZyBhbmQgdXNlcyB0aGUgZGV2aWNlLXRyZWUgZnJvbSB0aGUgZmlybXdhcmUsCithbGxv
d2luZyB0aGUgdXNhZ2Ugb2Ygb3ZlcmxheXMuICBJdCBjYW4gYWN0IGFzIGFuIEVGSSBmaXJtd2Fy
ZSBmb3IgdGhlCitncnViLWVmaS1uZXRib290LXJlbW92YWJsZS1ib290bG9hZGVyLiIpCisKKyhk
ZWZpbmUgJXUtYm9vdC1ycGktZWZpLWRlc2NyaXB0aW9uLTMyLWJpdAorICAoc3RyaW5nLWFwcGVu
ZCAldS1ib290LXJwaS1lZmktZGVzY3JpcHRpb24gIiAgIgorICAgICAgICAgICAgICAgICAldS1i
b290LXJwaS1kZXNjcmlwdGlvbi0zMi1iaXQpKQorCisoZGVmaW5lLXB1YmxpYyB1LWJvb3QtcnBp
LTAtdworICAobWFrZS1wcmVpbnN0YWxsZWQtdS1ib290LXBhY2thZ2UKKyAgICJycGlfMF93Igor
ICAgImFybS1saW51eC1nbnVlYWJpaGYiCisgICAjOmRlc2NyaXB0aW9uICV1LWJvb3QtcnBpLWRl
c2NyaXB0aW9uLTMyLWJpdCkpCisKKyhkZWZpbmUtcHVibGljIHUtYm9vdC1ycGkKKyAgKG1ha2Ut
cHJlaW5zdGFsbGVkLXUtYm9vdC1wYWNrYWdlCisgICAicnBpIgorICAgImFybS1saW51eC1nbnVl
YWJpaGYiCisgICAjOmRlc2NyaXB0aW9uICV1LWJvb3QtcnBpLWRlc2NyaXB0aW9uLTMyLWJpdCkp
CisKKyhkZWZpbmUtcHVibGljIHUtYm9vdC1ycGktMgorICAobWFrZS1wcmVpbnN0YWxsZWQtdS1i
b290LXBhY2thZ2UKKyAgICJycGlfMiIKKyAgICJhcm0tbGludXgtZ251ZWFiaWhmIgorICAgIzpk
ZXNjcmlwdGlvbiAldS1ib290LXJwaS1kZXNjcmlwdGlvbi0zMi1iaXQpKQorCisoZGVmaW5lLXB1
YmxpYyB1LWJvb3QtcnBpLTMKKyAgKG1ha2UtcHJlaW5zdGFsbGVkLXUtYm9vdC1wYWNrYWdlCisg
ICAicnBpXzNfMzJiIgorICAgImFybS1saW51eC1nbnVlYWJpaGYiCisgICAjOm5hbWUgInJwaS0z
IgorICAgIzpkZXNjcmlwdGlvbiAldS1ib290LXJwaS1kZXNjcmlwdGlvbi0zMi1iaXQpKQorCiso
ZGVmaW5lLXB1YmxpYyB1LWJvb3QtcnBpLTQKKyAgKG1ha2UtcHJlaW5zdGFsbGVkLXUtYm9vdC1w
YWNrYWdlCisgICAicnBpXzRfMzJiIgorICAgImFybS1saW51eC1nbnVlYWJpaGYiCisgICAjOm5h
bWUgInJwaS00IgorICAgIzpkZXNjcmlwdGlvbiAldS1ib290LXJwaS1kZXNjcmlwdGlvbi0zMi1i
aXQpKQorCisoZGVmaW5lLXB1YmxpYyB1LWJvb3QtcnBpLTY0CisgIChtYWtlLXByZWluc3RhbGxl
ZC11LWJvb3QtcGFja2FnZQorICAgInJwaV9hcm02NCIKKyAgICJhYXJjaDY0LWxpbnV4LWdudSIK
KyAgICM6bmFtZSAicnBpLTY0IgorICAgIzpkZXNjcmlwdGlvbiAldS1ib290LXJwaS1kZXNjcmlw
dGlvbi02NC1iaXQpKQorCisoZGVmaW5lLXB1YmxpYyB1LWJvb3QtcnBpLTAtdy1lZmkKKyAgKG1h
a2UtcHJlaW5zdGFsbGVkLXUtYm9vdC1wYWNrYWdlCisgICAicnBpXzBfdyIKKyAgICJhcm0tbGlu
dXgtZ251ZWFiaWhmIgorICAgIzpuYW1lICJycGktMC13LWVmaSIKKyAgICM6Y29uZmlncyAldS1i
b290LXJwaS1lZmktY29uZmlncworICAgIzpkZXNjcmlwdGlvbiAldS1ib290LXJwaS1lZmktZGVz
Y3JpcHRpb24tMzItYml0KSkKKworKGRlZmluZS1wdWJsaWMgdS1ib290LXJwaS1lZmkKKyAgKG1h
a2UtcHJlaW5zdGFsbGVkLXUtYm9vdC1wYWNrYWdlCisgICAicnBpIgorICAgImFybS1saW51eC1n
bnVlYWJpaGYiCisgICAjOm5hbWUgInJwaS1lZmkiCisgICAjOmNvbmZpZ3MgJXUtYm9vdC1ycGkt
ZWZpLWNvbmZpZ3MKKyAgICM6ZGVzY3JpcHRpb24gJXUtYm9vdC1ycGktZWZpLWRlc2NyaXB0aW9u
LTMyLWJpdCkpCisKKyhkZWZpbmUtcHVibGljIHUtYm9vdC1ycGktMi1lZmkKKyAgKG1ha2UtcHJl
aW5zdGFsbGVkLXUtYm9vdC1wYWNrYWdlCisgICAicnBpXzIiCisgICAiYXJtLWxpbnV4LWdudWVh
YmloZiIKKyAgICM6bmFtZSAicnBpLTItZWZpIgorICAgIzpjb25maWdzICV1LWJvb3QtcnBpLWVm
aS1jb25maWdzCisgICAjOmRlc2NyaXB0aW9uICV1LWJvb3QtcnBpLWVmaS1kZXNjcmlwdGlvbi0z
Mi1iaXQpKQorCisoZGVmaW5lLXB1YmxpYyB1LWJvb3QtcnBpLTMtZWZpCisgIChtYWtlLXByZWlu
c3RhbGxlZC11LWJvb3QtcGFja2FnZQorICAgInJwaV8zXzMyYiIKKyAgICJhcm0tbGludXgtZ251
ZWFiaWhmIgorICAgIzpuYW1lICJycGktMy1lZmkiCisgICAjOmNvbmZpZ3MgJXUtYm9vdC1ycGkt
ZWZpLWNvbmZpZ3MKKyAgICM6ZGVzY3JpcHRpb24gJXUtYm9vdC1ycGktZWZpLWRlc2NyaXB0aW9u
LTMyLWJpdCkpCisKKyhkZWZpbmUtcHVibGljIHUtYm9vdC1ycGktNC1lZmkKKyAgKG1ha2UtcHJl
aW5zdGFsbGVkLXUtYm9vdC1wYWNrYWdlCisgICAicnBpXzRfMzJiIgorICAgImFybS1saW51eC1n
bnVlYWJpaGYiCisgICAjOm5hbWUgInJwaS00LWVmaSIKKyAgICM6Y29uZmlncyAldS1ib290LXJw
aS1lZmktY29uZmlncworICAgIzpkZXNjcmlwdGlvbiAldS1ib290LXJwaS1lZmktZGVzY3JpcHRp
b24tMzItYml0KSkKKworKGRlZmluZS1wdWJsaWMgdS1ib290LXJwaS1lZmktNjQKKyAgKG1ha2Ut
cHJlaW5zdGFsbGVkLXUtYm9vdC1wYWNrYWdlCisgICAicnBpX2FybTY0IgorICAgImFhcmNoNjQt
bGludXgtZ251IgorICAgIzpuYW1lICJycGktZWZpLTY0IgorICAgIzpjb25maWdzICV1LWJvb3Qt
cnBpLWVmaS1jb25maWdzCisgICAjOmRlc2NyaXB0aW9uIChzdHJpbmctYXBwZW5kICV1LWJvb3Qt
cnBpLWVmaS1kZXNjcmlwdGlvbiAiICAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICV1LWJvb3QtcnBpLWRlc2NyaXB0aW9uLTY0LWJpdCkpKQorCiAoZGVmaW5lLXB1YmxpYyB2Ym9v
dC11dGlscwogICAocGFja2FnZQogICAgIChuYW1lICJ2Ym9vdC11dGlscyIpCi0tIAoyLjM0LjAK
Cg==

--b1_dy1TZ2hS49oNQXeFOaGaAgaz8PDQdSfZJR0gkUp7ur0
Content-Type: text/x-patch; name=v5-0007-gnu-raspberry-pi-New-function-to-make-a-package-w.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=v5-0007-gnu-raspberry-pi-New-function-to-make-a-package-w.patch

RnJvbSA0MzZiNDU0NGY1MjZiOTZlM2Q2MDAzNjAxNmQxMzFmMTNlNDM5ODQxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gPHN0ZWZhbi1ndWl4QHZvZGFmb25lbWFpbC5kZT4K
RGF0ZTogV2VkLCAxMyBBcHIgMjAyMiAyMToxOTozNiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjUg
Ny84XSBnbnU6IHJhc3BiZXJyeS1waTogTmV3IGZ1bmN0aW9uIHRvIG1ha2UgYSBwYWNrYWdlIHdp
dGgKIGRldmljZS10cmVlIGZpbGVzLgoKKiBnbnUvcGFja2FnZXMvcmFzcGJlcnJ5LXBpLnNjbSAo
bWFrZS1yYXNwaS1iY20yOC1kdGJzKTogTmV3IGZ1bmN0aW9uIHRvIG1ha2UKYSBwYWNrYWdlIHdp
dGggZGV2aWNlLXRyZWUgZmlsZXMgZm9yIFJhc3BiZXJyeSBQaSBtb2RlbHMgZnJvbSB0aGUga2Vy
bmVsIGdpdmVuCmFzIGFyZ3VtZW50LgoKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9yYXNwYmVy
cnktcGkuc2NtIGIvZ251L3BhY2thZ2VzL3Jhc3BiZXJyeS1waS5zY20KaW5kZXggMDcwNzUxNmY3
Mi4uZDgwOGY2MWFjMiAxMDA2NDQKLS0tIGEvZ251L3BhY2thZ2VzL3Jhc3BiZXJyeS1waS5zY20K
KysrIGIvZ251L3BhY2thZ2VzL3Jhc3BiZXJyeS1waS5zY20KQEAgLTMwLDYgKzMwLDcgQEAgKGRl
ZmluZS1tb2R1bGUgKGdudSBwYWNrYWdlcyByYXNwYmVycnktcGkpCiAgICM6dXNlLW1vZHVsZSAo
Z251IHBhY2thZ2VzIGZpbGUpCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGdjYykKICAg
Izp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgbGludXgpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBi
dWlsZC1zeXN0ZW0gY29weSkKICAgIzp1c2UtbW9kdWxlIChndWl4IGJ1aWxkLXN5c3RlbSBnbnUp
CiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBkb3dubG9hZCkKICAgIzp1c2UtbW9kdWxlIChndWl4IGdp
dC1kb3dubG9hZCkKQEAgLTI5MSw2ICsyOTIsMjYgQEAgKGRlZmluZS1wdWJsaWMgKHJhc3BpLWN1
c3RvbS10eHQgY29udGVudCkKIGNoYXJhY3Rlci4gIEFsdGVybmF0aXZlbHkgQ09OVEVOVCBjYW4g
YmUgYSBzdHJpbmcgd2l0aCB0aGUgZnVsbCBmaWxlIGNvbnRlbnQuIgogICAocmFzcGktY29uZmln
LWZpbGUgImN1c3RvbS50eHQiIGNvbnRlbnQpKQogCisoZGVmaW5lLXB1YmxpYyAobWFrZS1yYXNw
aS1iY20yOC1kdGJzIGxpbnV4KQorICAiTWFrZSBhIHBhY2thZ2Ugd2l0aCB0aGUgZGV2aWNlLXRy
ZWUgZmlsZXMgZm9yIFJhc3BiZXJyeSBQaSBtb2RlbHMgZnJvbSB0aGUKK2tlcm5lbCBMSU5VWC4i
CisgIChwYWNrYWdlCisgICAgKGluaGVyaXQgbGludXgpCisgICAgKG5hbWUgInJhc3BpLWJjbTI4
LWR0YnMiKQorICAgIChzb3VyY2UgI2YpCisgICAgKGJ1aWxkLXN5c3RlbSBjb3B5LWJ1aWxkLXN5
c3RlbSkKKyAgICAoYXJndW1lbnRzCisgICAgIGAoIzpwaGFzZXMgKG1vZGlmeS1waGFzZXMgJXN0
YW5kYXJkLXBoYXNlcyAoZGVsZXRlICd1bnBhY2spKQorICAgICAgICM6aW5zdGFsbC1wbGFuCisg
ICAgICAgKGxpc3QgKGxpc3QgKHN0cmluZy1hcHBlbmQgKGFzc29jLXJlZiAlYnVpbGQtaW5wdXRz
ICJsaW51eCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9saWIvZHRicy9i
cm9hZGNvbS8iKQorICAgICAgICAgICAgICAgICAgICIuIiAjOmluY2x1ZGUtcmVnZXhwICcoIi9i
Y20uLi4uLXJwaS4qXFwuZHRiIikpKSkpCisgICAgKGlucHV0cyBgKCgibGludXgiICxsaW51eCkp
KQorICAgIChzeW5vcHNpcyAiRGV2aWNlLXRyZWUgZmlsZXMgZm9yIGEgUmFzcGJlcnJ5IFBpIikK
KyAgICAoZGVzY3JpcHRpb24KKyAgICAgKHNpbXBsZS1mb3JtYXQgI2YgIlRoZSBkZXZpY2UtdHJl
ZSBmaWxlcyBmb3IgUmFzcGJlcnJ5IFBpIG1vZGVscyBmcm9tIH5hLiIKKyAgICAgICAgICAgICAo
cGFja2FnZS1uYW1lIGxpbnV4KSkpKSkKKwogKGRlZmluZSAobWFrZS1yYXNwaS1kZWZjb25maWcg
YXJjaCBkZWZjb25maWcgc2hhMjU2LWFzLWJhc2UzMikKICAgIk1ha2UgZm9yIHRoZSBhcmNoaXRl
Y3R1cmUgQVJDSCBhIGZpbGUtbGlrZSBvYmplY3QgZnJvbSB0aGUgREVGQ09ORklHIGZpbGUKIHdp
dGggdGhlIGhhc2ggU0hBMjU2LUFTLUJBU0UzMi4gIFRoaXMgb2JqZWN0IGNhbiBiZSB1c2VkIGFz
IHRoZSAjOmRlZmNvbmZpZwotLSAKMi4zNC4wCgo=

--b1_dy1TZ2hS49oNQXeFOaGaAgaz8PDQdSfZJR0gkUp7ur0
Content-Type: text/x-patch; name=v5-0002-build-kconfig-Add-new-module-to-modify-a-defconfi.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=v5-0002-build-kconfig-Add-new-module-to-modify-a-defconfi.patch

RnJvbSBhMjM1ZDc1NjQ3MTVjY2ExY2VjNzc0ZDlkNTE1Y2FmMWJjY2I0ODU2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRyIEhvZGluYSA8cGhvZGluYUBwcm90b25tYWlsLmNvbT4K
RGF0ZTogV2VkLCAxMyBBcHIgMjAyMiAyMToxMDoxOSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjUg
Mi84XSBidWlsZDoga2NvbmZpZzogQWRkIG5ldyBtb2R1bGUgdG8gbW9kaWZ5IGEgZGVmY29uZmln
CiBmaWxlLgoKRnJvbTogU3RlZmFuIDxzdGVmYW4tZ3VpeEB2b2RhZm9uZW1haWwuZGU+CgoqIGd1
aXgvYnVpbGQva2NvbmZpZy5zY20gKG1vZGlmeS1kZWZjb25maWcpOiBOZXcgZmlsZSB3aXRoIGEg
bmV3IGZ1bmN0aW9uLgoqIGdudS9wYWNrYWdlcy9ib290bG9hZGVycy5zY20gKG1ha2UtdS1ib290
LXBhY2thZ2UsCm1ha2UtdS1ib290LXN1bnhpNjQtcGFja2FnZSk6IEFkZGluZyBuZXcga2V5IGFy
Z3VtZW50cyB0byBwYXNzIGFuZC9vciBtb2RpZnkKYSBkZWZjb25maWcgZmlsZS4KKHUtYm9vdC1h
bTMzNXgtYm9uZWJsYWNrLCB1LWJvb3QtcGluZWJvb2ssIHUtYm9vdC1ub3ZlbmEpOiBTaW1wbGlm
eSBmdW5jdGlvbnMKYnkgdXNpbmcgdGhlIG5ldyBrZXkgYXJndW1lbnRzIG9mIHRoZSBmb3JtZXIg
ZnVuY3Rpb25zLgoqIE1ha2VmaWxlLmFtOiBBZGRpbmcgZ3VpeC9idWlsZC9rY29uZmlnLnNjbSB0
byBNT0RVTEVTLgoKZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KaW5kZXgg
ZmVjY2U3YzZmNy4uN2Y2OWFhY2JkMSAxMDA2NDQKLS0tIGEvTWFrZWZpbGUuYW0KKysrIGIvTWFr
ZWZpbGUuYW0KQEAgLTIyMyw2ICsyMjMsNyBAQCBNT0RVTEVTID0JCQkJCVwKICAgZ3VpeC9idWls
ZC93YWYtYnVpbGQtc3lzdGVtLnNjbQkJXAogICBndWl4L2J1aWxkL2hhc2tlbGwtYnVpbGQtc3lz
dGVtLnNjbQkJXAogICBndWl4L2J1aWxkL2p1bGlhLWJ1aWxkLXN5c3RlbS5zY20JCVwKKyAgZ3Vp
eC9idWlsZC9rY29uZmlnLnNjbSAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgZ3VpeC9idWls
ZC9saW51eC1tb2R1bGUtYnVpbGQtc3lzdGVtLnNjbQlcCiAgIGd1aXgvYnVpbGQvc3RvcmUtY29w
eS5zY20JCQlcCiAgIGd1aXgvYnVpbGQvanNvbi5zY20JCQkJXApkaWZmIC0tZ2l0IGEvZ251L3Bh
Y2thZ2VzL2Jvb3Rsb2FkZXJzLnNjbSBiL2dudS9wYWNrYWdlcy9ib290bG9hZGVycy5zY20KaW5k
ZXggNjg3NmFiMTdiOS4uMTBmMmRkNWZhZCAxMDA2NDQKLS0tIGEvZ251L3BhY2thZ2VzL2Jvb3Rs
b2FkZXJzLnNjbQorKysgYi9nbnUvcGFja2FnZXMvYm9vdGxvYWRlcnMuc2NtCkBAIC0xNiw2ICsx
Niw3IEBACiA7OzsgQ29weXJpZ2h0IMKpIDIwMjEgVmluY2VudCBMZWdvbGwgPHZpbmNlbnQubGVn
b2xsQGdtYWlsLmNvbT4KIDs7OyBDb3B5cmlnaHQgwqkgMjAyMSBCcmljZSBXYWVnZW5laXJlIDxi
cmljZUB3YWVnZW5laS5yZT4KIDs7OyBDb3B5cmlnaHQgwqkgMjAyMSBTdGVmYW4gPHN0ZWZhbi1n
dWl4QHZvZGFmb25lbWFpbC5kZT4KKzs7OyBDb3B5cmlnaHQgwqkgMjAyMiBQZXRyIEhvZGluYSA8
cGhvZGluYUBwcm90b25tYWlsLmNvbT4KIDs7OwogOzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdO
VSBHdWl4LgogOzs7CkBAIC03NDcsOCArNzQ4LDkgQEAgKGRlZmluZS1wdWJsaWMgdS1ib290LXRv
b2xzCiBhbHNvIGluaXRpYWxpemVzIHRoZSBib2FyZHMgKFJBTSBldGMpLiAgVGhpcyBwYWNrYWdl
IHByb3ZpZGVzIGl0cwogYm9hcmQtaW5kZXBlbmRlbnQgdG9vbHMuIikpKQogCi0oZGVmaW5lLXB1
YmxpYyAobWFrZS11LWJvb3QtcGFja2FnZSBib2FyZCB0cmlwbGV0KQotICAiUmV0dXJucyBhIHUt
Ym9vdCBwYWNrYWdlIGZvciBCT0FSRCBjcm9zcy1jb21waWxlZCBmb3IgVFJJUExFVC4iCisoZGVm
aW5lKi1wdWJsaWMgKG1ha2UtdS1ib290LXBhY2thZ2UgYm9hcmQgdHJpcGxldCAjOmtleSBkZWZj
b25maWcgY29uZmlncykKKyAgIlJldHVybnMgYSB1LWJvb3QgcGFja2FnZSBmb3IgQk9BUkQgY3Jv
c3MtY29tcGlsZWQgZm9yIFRSSVBMRVQgd2l0aCB0aGUKK29wdGlvbmFsIERFRkNPTkZJRyBmaWxl
IGFuZCBvcHRpb25hbCBjb25maWd1cmF0aW9uIGNoYW5nZXMgZnJvbSBDT05GSUdTLiIKICAgKGxl
dCAoKHNhbWUtYXJjaD8gKGxhbWJkYSAoKQogICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmc9
PyAoJWN1cnJlbnQtc3lzdGVtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ251
LXRyaXBsZXQtPm5peC1zeXN0ZW0gdHJpcGxldCkpKSkpCkBAIC03NjYsOCArNzY4LDExIEBAIChk
ZWZpbmUtcHVibGljIChtYWtlLXUtYm9vdC1wYWNrYWdlIGJvYXJkIHRyaXBsZXQpCiAgICAgICAo
YXJndW1lbnRzCiAgICAgICAgYCgjOm1vZHVsZXMgKChpY2UtOSBmdHcpCiAgICAgICAgICAgICAg
ICAgICAgIChzcmZpIHNyZmktMSkKLSAgICAgICAgICAgICAgICAgICAgKGd1aXggYnVpbGQgdXRp
bHMpCi0gICAgICAgICAgICAgICAgICAgIChndWl4IGJ1aWxkIGdudS1idWlsZC1zeXN0ZW0pKQor
ICAgICAgICAgICAgICAgICAgICAoZ3VpeCBidWlsZCBnbnUtYnVpbGQtc3lzdGVtKQorICAgICAg
ICAgICAgICAgICAgICAoZ3VpeCBidWlsZCBrY29uZmlnKQorICAgICAgICAgICAgICAgICAgICAo
Z3VpeCBidWlsZCB1dGlscykpCisgICAgICAgICAjOmltcG9ydGVkLW1vZHVsZXMgKCxAJWdudS1i
dWlsZC1zeXN0ZW0tbW9kdWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3VpeCBi
dWlsZCBrY29uZmlnKSkKICAgICAgICAgICM6dGVzdC10YXJnZXQgInRlc3QiCiAgICAgICAgICAj
Om1ha2UtZmxhZ3MKICAgICAgICAgIChsaXN0ICJIT1NUQ0M9Z2NjIgpAQCAtNzc4LDkgKzc4Mywx
OCBAQCAoZGVmaW5lLXB1YmxpYyAobWFrZS11LWJvb3QtcGFja2FnZSBib2FyZCB0cmlwbGV0KQog
ICAgICAgICAgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAgICAocmVw
bGFjZSAnY29uZmlndXJlCiAgICAgICAgICAgICAgKGxhbWJkYSogKCM6a2V5IG91dHB1dHMgbWFr
ZS1mbGFncyAjOmFsbG93LW90aGVyLWtleXMpCi0gICAgICAgICAgICAgICAobGV0ICgoY29uZmln
LW5hbWUgKHN0cmluZy1hcHBlbmQgLGJvYXJkICJfZGVmY29uZmlnIikpKQotICAgICAgICAgICAg
ICAgICAoaWYgKGZpbGUtZXhpc3RzPyAoc3RyaW5nLWFwcGVuZCAiY29uZmlncy8iIGNvbmZpZy1u
YW1lKSkKLSAgICAgICAgICAgICAgICAgICAgIChhcHBseSBpbnZva2UgIm1ha2UiIGAoLEBtYWtl
LWZsYWdzICxjb25maWctbmFtZSkpCisgICAgICAgICAgICAgICAobGV0KiAoKGNvbmZpZy1uYW1l
IChzdHJpbmctYXBwZW5kICxib2FyZCAiX2RlZmNvbmZpZyIpKQorICAgICAgICAgICAgICAgICAg
ICAgIChjb25maWctZmlsZSAoc3RyaW5nLWFwcGVuZCAiY29uZmlncy8iIGNvbmZpZy1uYW1lKSkK
KyAgICAgICAgICAgICAgICAgICAgICAoZGVmY29uZmlnICxkZWZjb25maWcpCisgICAgICAgICAg
ICAgICAgICAgICAgKGNvbmZpZ3MgJyxjb25maWdzKSkKKyAgICAgICAgICAgICAgICAgKHdoZW4g
ZGVmY29uZmlnCisgICAgICAgICAgICAgICAgICAgOzsgUmVwbGFjZSB0aGUgYm9hcmQtc3BlY2lm
aWMgZGVmY29uZmlnIHdpdGggdGhlIGdpdmVuIG9uZS4KKyAgICAgICAgICAgICAgICAgICAoY29w
eS1maWxlIGRlZmNvbmZpZyBjb25maWctZmlsZSkpCisgICAgICAgICAgICAgICAgIChpZiAoZmls
ZS1leGlzdHM/IGNvbmZpZy1maWxlKQorICAgICAgICAgICAgICAgICAgICAgKGJlZ2luCisgICAg
ICAgICAgICAgICAgICAgICAgICh3aGVuIGNvbmZpZ3MKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAobW9kaWZ5LWRlZmNvbmZpZyBjb25maWctZmlsZSBjb25maWdzKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgKGFwcGx5IGludm9rZSAibWFrZSIgYCgsQG1ha2UtZmxhZ3MgLGNvbmZpZy1uYW1l
KSkpCiAgICAgICAgICAgICAgICAgICAgICAoYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAg
KGRpc3BsYXkgIkludmFsaWQgYm9hcmQgbmFtZS4gVmFsaWQgYm9hcmQgbmFtZXMgYXJlOiIKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtZXJyb3ItcG9ydCkpCkBAIC04
MzQsNyArODQ4LDExIEBAIChkZWZpbmUtcHVibGljIHUtYm9vdC1tYWx0YQogICAobWFrZS11LWJv
b3QtcGFja2FnZSAibWFsdGEiICJtaXBzNjRlbC1saW51eC1nbnVhYmk2NCIpKQogCiAoZGVmaW5l
LXB1YmxpYyB1LWJvb3QtYW0zMzV4LWJvbmVibGFjawotICAobGV0ICgoYmFzZSAobWFrZS11LWJv
b3QtcGFja2FnZSAiYW0zMzV4X2V2bSIgImFybS1saW51eC1nbnVlYWJpaGYiKSkpCisgIChsZXQg
KChiYXNlIChtYWtlLXUtYm9vdC1wYWNrYWdlICJhbTMzNXhfZXZtIiAiYXJtLWxpbnV4LWdudWVh
YmloZiIKKyAgICAgICAgICAgICAgIDs7IFBhdGNoIG91dCBvdGhlciBkZXZpY2UgdHJlZXMgdG8g
YnVpbGQgaW1hZ2Ugc21hbGwgZW5vdWdoIHRvCisgICAgICAgICAgICAgICA7OyBmaXQgd2l0aGlu
IHR5cGljYWwgcGFydGl0aW9uaW5nIHNjaGVtZXMgd2hlcmUgdGhlIGZpcnN0CisgICAgICAgICAg
ICAgICA7OyBwYXJ0aXRpb24gYmVnaW5zIGF0IHNlY3RvciAyMDQ4LgorICAgICAgICAgICAgICAg
Izpjb25maWdzICcoIkNPTkZJR19PRl9MSVNUPVwiYW0zMzV4LWV2bSBhbTMzNXgtYm9uZWJsYWNr
XCIiKSkpKQogICAgIChwYWNrYWdlCiAgICAgICAoaW5oZXJpdCBiYXNlKQogICAgICAgKG5hbWUg
InUtYm9vdC1hbTMzNXgtYm9uZWJsYWNrIikKQEAgLTg0MywyNSArODYxLDEzIEBAIChkZWZpbmUt
cHVibGljIHUtYm9vdC1hbTMzNXgtYm9uZWJsYWNrCiAKIFRoaXMgVS1Cb290IGlzIGJ1aWx0IGZv
ciB0aGUgQmVhZ2xlQm9uZSBCbGFjaywgd2hpY2ggd2FzIHJlbW92ZWQgdXBzdHJlYW0sCiBhZGp1
c3RlZCBmcm9tIHRoZSBhbTMzNXhfZXZtIGJ1aWxkIHdpdGggc2V2ZXJhbCBkZXZpY2UgdHJlZXMg
cmVtb3ZlZCBzbyB0aGF0Ci1pdCBmaXRzIHdpdGhpbiBjb21tb24gcGFydGl0aW9uaW5nIHNjaGVt
ZXMuIikKLSAgICAgIChhcmd1bWVudHMKLSAgICAgICAoc3Vic3RpdHV0ZS1rZXl3b3JkLWFyZ3Vt
ZW50cyAocGFja2FnZS1hcmd1bWVudHMgYmFzZSkKLSAgICAgICAgICgoIzpwaGFzZXMgcGhhc2Vz
KQotICAgICAgICAgIGAobW9kaWZ5LXBoYXNlcyAscGhhc2VzCi0gICAgICAgICAgICAgKGFkZC1h
ZnRlciAndW5wYWNrICdwYXRjaC1kZWZjb25maWcKLSAgICAgICAgICAgICAgIDs7IFBhdGNoIG91
dCBvdGhlciBkZXZpY2V0cmVlcyB0byBidWlsZCBpbWFnZSBzbWFsbCBlbm91Z2ggdG8KLSAgICAg
ICAgICAgICAgIDs7IGZpdCB3aXRoaW4gdHlwaWNhbCBwYXJ0aXRpb25pbmcgc2NoZW1lcyB3aGVy
ZSB0aGUgZmlyc3QKLSAgICAgICAgICAgICAgIDs7IHBhcnRpdGlvbiBiZWdpbnMgYXQgc2VjdG9y
IDIwNDguCi0gICAgICAgICAgICAgICAobGFtYmRhIF8KLSAgICAgICAgICAgICAgICAgKHN1YnN0
aXR1dGUqICJjb25maWdzL2FtMzM1eF9ldm1fZGVmY29uZmlnIgotICAgICAgICAgICAgICAgICAg
ICgoIkNPTkZJR19PRl9MSVNUPS4qJCIpICJDT05GSUdfT0ZfTElTVD1cImFtMzM1eC1ldm0gYW0z
MzV4LWJvbmVibGFja1wiXG4iKSkKLSAgICAgICAgICAgICAgICAgI3QpKSkpKSkpKSkKK2l0IGZp
dHMgd2l0aGluIGNvbW1vbiBwYXJ0aXRpb25pbmcgc2NoZW1lcy4iKSkpKQogCiAoZGVmaW5lLXB1
YmxpYyB1LWJvb3QtYW0zMzV4LWV2bQogICAobWFrZS11LWJvb3QtcGFja2FnZSAiYW0zMzV4X2V2
bSIgImFybS1saW51eC1nbnVlYWJpaGYiKSkKIAotKGRlZmluZS1wdWJsaWMgKG1ha2UtdS1ib290
LXN1bnhpNjQtcGFja2FnZSBib2FyZCB0cmlwbGV0KQotICAobGV0ICgoYmFzZSAobWFrZS11LWJv
b3QtcGFja2FnZSBib2FyZCB0cmlwbGV0KSkpCisoZGVmaW5lKi1wdWJsaWMgKG1ha2UtdS1ib290
LXN1bnhpNjQtcGFja2FnZSBib2FyZCB0cmlwbGV0ICM6a2V5IGRlZmNvbmZpZyBjb25maWdzKQor
ICAobGV0ICgoYmFzZSAobWFrZS11LWJvb3QtcGFja2FnZSBib2FyZCB0cmlwbGV0ICM6ZGVmY29u
ZmlnIGRlZmNvbmZpZyAjOmNvbmZpZ3MgY29uZmlncykpKQogICAgIChwYWNrYWdlCiAgICAgICAo
aW5oZXJpdCBiYXNlKQogICAgICAgKGFyZ3VtZW50cwpAQCAtODkxLDIwICs4OTcsMTAgQEAgKGRl
ZmluZS1wdWJsaWMgdS1ib290LXBpbmU2NC1sdHMKICAgKG1ha2UtdS1ib290LXN1bnhpNjQtcGFj
a2FnZSAicGluZTY0LWx0cyIgImFhcmNoNjQtbGludXgtZ251IikpCiAKIChkZWZpbmUtcHVibGlj
IHUtYm9vdC1waW5lYm9vawotICAobGV0ICgoYmFzZSAobWFrZS11LWJvb3Qtc3VueGk2NC1wYWNr
YWdlICJwaW5lYm9vayIgImFhcmNoNjQtbGludXgtZ251IikpKQotICAgIChwYWNrYWdlCi0gICAg
ICAoaW5oZXJpdCBiYXNlKQotICAgICAgKGFyZ3VtZW50cwotICAgICAgIChzdWJzdGl0dXRlLWtl
eXdvcmQtYXJndW1lbnRzIChwYWNrYWdlLWFyZ3VtZW50cyBiYXNlKQotICAgICAgICAgKCgjOnBo
YXNlcyBwaGFzZXMpCi0gICAgICAgICAgYChtb2RpZnktcGhhc2VzICxwaGFzZXMKLSAgICAgICAg
ICAgICAoYWRkLWFmdGVyICd1bnBhY2sgJ3BhdGNoLXBpbmVib29rLWNvbmZpZwotICAgICAgICAg
ICAgICAgOzsgRml4IHJlZ3Jlc3Npb24gd2l0aCBMQ0QgdmlkZW8gb3V0cHV0IGludHJvZHVjZWQg
aW4gMjAyMC4wMQotICAgICAgICAgICAgICAgOzsgaHR0cHM6Ly9wYXRjaHdvcmsub3psYWJzLm9y
Zy9wYXRjaC8xMjI1MTMwLwotICAgICAgICAgICAgICAgKGxhbWJkYSBfCi0gICAgICAgICAgICAg
ICAgIChzdWJzdGl0dXRlKiAiY29uZmlncy9waW5lYm9va19kZWZjb25maWciCi0gICAgICAgICAg
ICAgICAgICAgKCgiQ09ORklHX1ZJREVPX0JSSURHRV9BTkFMT0dJWF9BTlg2MzQ1PXkiKSAiQ09O
RklHX1ZJREVPX0JSSURHRV9BTkFMT0dJWF9BTlg2MzQ1PXlcbkNPTkZJR19WSURFT19CUFAzMj15
IikpCi0gICAgICAgICAgICAgICAgICN0KSkpKSkpKSkpCisgIChtYWtlLXUtYm9vdC1zdW54aTY0
LXBhY2thZ2UgInBpbmVib29rIiAiYWFyY2g2NC1saW51eC1nbnUiCisgICA7OyBGaXggcmVncmVz
c2lvbiB3aXRoIExDRCB2aWRlbyBvdXRwdXQgaW50cm9kdWNlZCBpbiAyMDIwLjAxCisgICA7OyBo
dHRwczovL3BhdGNod29yay5vemxhYnMub3JnL3BhdGNoLzEyMjUxMzAvCisgICAjOmNvbmZpZ3Mg
JygiQ09ORklHX1ZJREVPX0JQUDMyPXkiKSkpCiAKIChkZWZpbmUtcHVibGljIHUtYm9vdC1iYW5h
bmFwaS1tMi11bHRyYQogICAobWFrZS11LWJvb3QtcGFja2FnZSAiQmFuYW5hcGlfTTJfVWx0cmEi
ICJhcm0tbGludXgtZ251ZWFiaWhmIikpCkBAIC05NTUsMjUgKzk1MSwxNyBAQCAoZGVmaW5lLXB1
YmxpYyB1LWJvb3QtbXg2Y3Vib3hpCiAgIChtYWtlLXUtYm9vdC1wYWNrYWdlICJteDZjdWJveGki
ICJhcm0tbGludXgtZ251ZWFiaWhmIikpCiAKIChkZWZpbmUtcHVibGljIHUtYm9vdC1ub3ZlbmEK
LSAgKGxldCAoKGJhc2UgKG1ha2UtdS1ib290LXBhY2thZ2UgIm5vdmVuYSIgImFybS1saW51eC1n
bnVlYWJpaGYiKSkpCisgIChsZXQgKChiYXNlIChtYWtlLXUtYm9vdC1wYWNrYWdlICJub3ZlbmEi
ICJhcm0tbGludXgtZ251ZWFiaWhmIgorICAgICAgICAgICAgICAgOzsgUGF0Y2ggY29uZmlndXJh
dGlvbiB0byBkaXNhYmxlIGxvYWRpbmcgdS1ib290LmltZyBmcm9tIEZBVAorICAgICAgICAgICAg
ICAgOzsgcGFydGl0aW9uLCBhbGxvd2luZyBpdCB0byBiZSBpbnN0YWxsZWQgYXQgYSBkZXZpY2Ug
b2Zmc2V0LgorICAgICAgICAgICAgICAgIzpjb25maWdzICcoIkNPTkZJR19TUExfRlNfRkFUPSIp
KSkpCiAgICAgKHBhY2thZ2UKICAgICAgIChpbmhlcml0IGJhc2UpCiAgICAgICAoZGVzY3JpcHRp
b24gIlUtQm9vdCBpcyBhIGJvb3Rsb2FkZXIgdXNlZCBtb3N0bHkgZm9yIEFSTSBib2FyZHMuICBJ
dAogYWxzbyBpbml0aWFsaXplcyB0aGUgYm9hcmRzIChSQU0gZXRjKS4KIAogVGhpcyBVLUJvb3Qg
aXMgYnVpbHQgZm9yIE5vdmVuYS4gIEJlIGFkdmlzZWQgdGhhdCB0aGlzIHZlcnNpb24sIGNvbnRy
YXJ5Ci10byBOb3ZlbmEgdXBzdHJlYW0sIGRvZXMgbm90IGxvYWQgdS1ib290LmltZyBmcm9tIHRo
ZSBmaXJzdCBwYXJ0aXRpb24uIikKLSAgICAgIChhcmd1bWVudHMKLSAgICAgICAoc3Vic3RpdHV0
ZS1rZXl3b3JkLWFyZ3VtZW50cyAocGFja2FnZS1hcmd1bWVudHMgYmFzZSkKLSAgICAgICAgICgo
IzpwaGFzZXMgcGhhc2VzKQotICAgICAgICAgIGAobW9kaWZ5LXBoYXNlcyAscGhhc2VzCi0gICAg
ICAgICAgICAgKGFkZC1hZnRlciAndW5wYWNrICdwYXRjaC1ub3ZlbmEtZGVmY29uZmlnCi0gICAg
ICAgICAgICAgICA7OyBQYXRjaCBjb25maWd1cmF0aW9uIHRvIGRpc2FibGUgbG9hZGluZyB1LWJv
b3QuaW1nIGZyb20gRkFUIHBhcnRpdGlvbiwKLSAgICAgICAgICAgICAgIDs7IGFsbG93aW5nIGl0
IHRvIGJlIGluc3RhbGxlZCBhdCBhIGRldmljZSBvZmZzZXQuCi0gICAgICAgICAgICAgICAobGFt
YmRhIF8KLSAgICAgICAgICAgICAgICAgKHN1YnN0aXR1dGUqICJjb25maWdzL25vdmVuYV9kZWZj
b25maWciCi0gICAgICAgICAgICAgICAgICAgKCgiQ09ORklHX1NQTF9GU19GQVQ9eSIpICIjIENP
TkZJR19TUExfRlNfRkFUIGlzIG5vdCBzZXQiKSkKLSAgICAgICAgICAgICAgICAgI3QpKSkpKSkp
KSkKK3RvIE5vdmVuYSB1cHN0cmVhbSwgZG9lcyBub3QgbG9hZCB1LWJvb3QuaW1nIGZyb20gdGhl
IGZpcnN0IHBhcnRpdGlvbi4iKSkpKQogCiAoZGVmaW5lLXB1YmxpYyB1LWJvb3QtY3ViaWVib2Fy
ZAogICAobWFrZS11LWJvb3QtcGFja2FnZSAiQ3ViaWVib2FyZCIgImFybS1saW51eC1nbnVlYWJp
aGYiKSkKZGlmZiAtLWdpdCBhL2d1aXgvYnVpbGQva2NvbmZpZy5zY20gYi9ndWl4L2J1aWxkL2tj
b25maWcuc2NtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjA5ZGRmNTlk
ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9ndWl4L2J1aWxkL2tjb25maWcuc2NtCkBAIC0wLDAgKzEs
MTQ4IEBACis7OzsgR05VIEd1aXggLS0tIEZ1bmN0aW9uYWwgcGFja2FnZSBtYW5hZ2VtZW50IGZv
ciBHTlUKKzs7OyBDb3B5cmlnaHQgwqkgMjAyMCBTdGVmYW4gPHN0ZWZhbi1ndWl4QHZvZGFmb25l
bWFpbC5kZT4KKzs7OworOzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBHdWl4LgorOzs7Cis7
OzsgR05VIEd1aXggaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yIG1vZGlmeSBpdAorOzs7IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0Cis7OzsgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorOzs7Cis7OzsgR05VIEd1aXggaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Cis7OzsgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzs7IE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUKKzs7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorOzs7
Cis7OzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKzs7OyBhbG9uZyB3aXRoIEdOVSBHdWl4LiAgSWYgbm90LCBzZWUgPGh0
dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisoZGVmaW5lLW1vZHVsZSAoZ3VpeCBidWls
ZCBrY29uZmlnKQorICAjOnVzZS1tb2R1bGUgIChpY2UtOSByZGVsaW0pCisgICM6dXNlLW1vZHVs
ZSAgKGljZS05IHJlZ2V4KQorICAjOnVzZS1tb2R1bGUgIChzcmZpIHNyZmktMSkKKyAgIzp1c2Ut
bW9kdWxlICAoc3JmaSBzcmZpLTI2KQorICAjOmV4cG9ydCAobW9kaWZ5LWRlZmNvbmZpZykpCisK
Kzs7IENvbW1lbnRhcnk6Cis7OworOzsgQnVpbGRlci1zaWRlIGNvZGUgdG8gbW9kaWZ5IGNvbmZp
Z3VyYXRpb25zIGZvciB0aGUgS2NvbmZpZyBidWlsZCBzeXN0ZW0gYXMKKzs7IHVzZWQgYnkgTGlu
dXggYW5kIFUtQm9vdC4KKzs7Cis7OyBDb2RlOgorCisoZGVmaW5lIChtb2RpZnktZGVmY29uZmln
IGRlZmNvbmZpZyBjb25maWdzKQorICAiVGhpcyBmdW5jdGlvbiBjYW4gbW9kaWZ5IGEgZ2l2ZW4g
REVGQ09ORklHIGZpbGUgYnkgYWRkaW5nLCBjaGFuZ2luZyBvcgorcmVtb3ZpbmcgdGhlIGxpc3Qg
b2Ygc3RyaW5ncyBpbiBDT05GSUdTLiAgVGhpcyBhbGxvd3MgYW4gZWFzeSBjdXN0b21pemF0aW9u
IG9mCitLY29uZmlnIGJhc2VkIHByb2plY3RzIGxpa2UgdGhlIGtlcm5lbCBMaW51eCBvciB0aGUg
Ym9vdGxvYWRlciAnRGFzIFUtQm9vdCcuCisKK1RoZXNlIGFyZSBleGFtcGxlcyBmb3IgQ09ORklH
UyB0byBhZGQgb3IgY2hhbmdlIG9yIHJlbW92ZQorY29uZmlndXJhdGlvbnMgdG8vZnJvbSBERUZD
T05GSUc6CisKKycoXCJDT05GSUdfQT1cXFwiYVxcXCJcIgorICBcIkNPTkZJR19CPTBcIgorICBc
IkNPTkZJR19DPXlcIgorICBcIkNPTkZJR19EPW1cIgorICBcIkNPTkZJR19FPVwiCisgIFwiQ09O
RklHX0ZcIgorICBcIiMgQ09ORklHX0cgaXMgbm90IHNldFwiKQorCitJbnN0ZWFkIG9mIGEgbGlz
dCwgQ09ORkdJUyBjYW4gYmUgYSBzdHJpbmcgd2l0aCBvbmUgY29uZmlndXJhdGlvbiBwZXIgbGlu
ZS4iCisgIChkZWZpbmUgY29uZmlnLXJ4CisgICAgKG1ha2UtcmVnZXhwCisgICAgIDs7IChtYXRj
aDpzdWJzdHJpbmcgKHN0cmluZy1tYXRjaCAiPSguKikiICI9IikgMSkgcmV0dXJucyAiIiwgYnV0
IHRoZQorICAgICA7OyBwYXR0ZXJuICI9KC4rKT8iIG1ha2VzIGl0IHJldHVybiAjZiBpbnN0ZWFk
LiAgRm9yIGEgIkNPTkZJR19BPSIgd2UgbGlrZQorICAgICA7OyB0byBnZXQgI2YsIHdoaWNoIGFz
IGEgdmFsdWUgZW1pdHMgIiMg4oCmIGlzIG5vdCBzZXQiLgorICAgICAiXigjW1xcdCBdKik/KENP
TkZJR19bQS1aMC05X10rKShbXFx0IF0qPVtcXHQgXSooLispP3woW1xcdCBdK2lzW1xcdCBdK25v
dFtcXHQgXStzZXQpKT8kIikpCisKKyAgKGRlZmluZSAoY29uZmlnLXN0cmluZy0+cGFpciBjb25m
aWctc3RyaW5nKQorICAgICJQYXJzZSBhIGNvbmZpZy1zdHJpbmcgbGlrZSBcIkNPTkZJR19FWEFN
UExFPXlcIiBpbnRvIGEga2V5LXZhbHVlIHBhaXIuCitTcGFjZXMgZ2V0IHRyaW1tZWQuCitcIkNP
TkZJR19BPXlcIiAgICAgICAgICAgIC0+ICcoXCJDT05GSUdfQVwiIC4gXCJ5XCIpCitcIkNPTkZJ
R19CPVxcXCJcXFwiXCIgICAgICAgICAtPiAnKFwiQ09ORklHX0JcIiAuIFwiXFxcIlxcXCJcIikK
K1wiQ09ORklHX0M9XCIgICAgICAgICAgICAgLT4gJyhcIkNPTkZJR19DXCIgLiAjZikKK1wiQ09O
RklHX0RcIiAgICAgICAgICAgICAgLT4gJyhcIkNPTkZJR19EXCIgLiAjZikKK1wiIyBDT05GSUdf
RSBpcyBub3Qgc2V0XCIgLT4gJyhcIkNPTkZJR19FXCIgLiAjZikKK1wiIyBBbnl0aGluZyBlbHNl
XCIgICAgICAgLT4gJyhcIiMgQW55dGhpbmcgZWxzZVwiIC4gXCJcIikiCisgICAgKGxldCAoKG1h
dGNoIChyZWdleHAtZXhlYyBjb25maWctcnggKHN0cmluZy10cmltLWJvdGggY29uZmlnLXN0cmlu
ZykpKSkKKyAgICAgIChpZiAobm90IG1hdGNoKQorICAgICAgICAgIDs7IFRoaXMgaXMgc29tZSB1
bnBhcnNhYmxlIGNvbmZpZy1zdHJpbmcuCisgICAgICAgICAgOzsgV2Uga2VlcCBpdCBhcyBpdCBp
cy4KKyAgICAgICAgICAoY29ucyBjb25maWctc3RyaW5nICIiKQorICAgICAgICAgIChsZXQqICgo
Y29tbWVudCAobWF0Y2g6c3Vic3RyaW5nIG1hdGNoIDEpKQorICAgICAgICAgICAgICAgICAoa2V5
IChtYXRjaDpzdWJzdHJpbmcgbWF0Y2ggMikpCisgICAgICAgICAgICAgICAgICh1bnNldCAobWF0
Y2g6c3Vic3RyaW5nIG1hdGNoIDUpKQorICAgICAgICAgICAgICAgICAodmFsdWUgKGFuZCAobm90
IGNvbW1lbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgdW5zZXQpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaDpzdWJzdHJpbmcgbWF0Y2ggNCkpKSkKKyAg
ICAgICAgICAgIChpZiAob3IgKGFuZCBjb21tZW50IChub3QgdW5zZXQpKQorICAgICAgICAgICAg
ICAgICAgICAoYW5kIChub3QgY29tbWVudCkgdW5zZXQpKQorICAgICAgICAgICAgICAgIDs7IFRo
aXMgaXMganVzdCBzb21lIGNvbW1lbnQgb3Igc3RyYW5nZSBsaW5lLCB3aGljaCB3ZSBrZWVwIGFz
IGlzLgorICAgICAgICAgICAgICAgIChjb25zIGNvbmZpZy1zdHJpbmcgIiIpCisgICAgICAgICAg
ICAgICAgKGNvbnMga2V5IHZhbHVlKSkpKSkpCisKKyAgKGRlZmluZSAocGFpci0+Y29uZmlnLXN0
cmluZyBwYWlyKQorICAgICJDb252ZXJ0IGEgUEFJUiBiYWNrIHRvIGEgY29uZmlnLXN0cmluZy4i
CisgICAgKGxldCogKChrZXkgKGNhciBwYWlyKSkKKyAgICAgICAgICAgKHZhbHVlIChjZHIgcGFp
cikpKQorICAgICAgKGlmIChzdHJpbmc/IHZhbHVlKQorICAgICAgICAgIChpZiAoc3RyaW5nLW51
bGw/IHZhbHVlKQorICAgICAgICAgICAgICBrZXkKKyAgICAgICAgICAgICAgKHN0cmluZy1hcHBl
bmQga2V5ICI9IiB2YWx1ZSkpCisgICAgICAgICAgKHN0cmluZy1hcHBlbmQgIiMgIiBrZXkgIiBp
cyBub3Qgc2V0IikpKSkKKworICAoZGVmaW5lIChyZW1vdmUtcGFpciBwYWlyIGJsYWNrbGlzdCkK
KyAgICAiVHVybiBhIGtleS12YWx1ZSBQQUlSIGludG8gJygiIiAuICIiKSwgaWYgaXRzIGtleSBp
cyBsaXN0ZWQgaW4gQkxBQ0tMSVNULiIKKyAgICAobGV0KiAoKGtleSAoZmlyc3QgcGFpcikpKQor
ICAgICAgKGlmIChtZW1iZXIga2V5IGJsYWNrbGlzdCkKKyAgICAgICAgICAnKCIiIC4gIiIpCisg
ICAgICAgICAgcGFpcikpKQorCisgIChkZWZpbmUgKHJlbW92ZS1jb25maWctc3RyaW5nIGNvbmZp
Zy1zdHJpbmcgYmxhY2tsaXN0KQorICAgICJSZW1vdmUgdGhlIENPTkZJRy1TVFJJTkcsIGlmIGl0
cyBrZXkgaXMgbGlzdGVkIGluIEJMQUNLTElTVC4iCisgICAgKHBhaXItPmNvbmZpZy1zdHJpbmcg
KHJlbW92ZS1wYWlyIChjb25maWctc3RyaW5nLT5wYWlyIGNvbmZpZy1zdHJpbmcpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2xpc3QpKSkKKworICAoZGVmaW5l
KiAod3JpdGUtbGluZXMgaW5wdXQgIzprZXkgKGxpbmUtbW9kaWZpZXIgaWRlbnRpdHkpKQorICAg
ICJXcml0ZSBhbGwgbGluZXMgZnJvbSB0aGUgSU5QVVQgYWZ0ZXIgYXBwbHlpbmcgdGhlIExJTkUt
TU9ESUZJRVIgdG8gdGhlCisgY3VycmVudC1vdXRwdXQtcG9ydC4iCisgICAgKGxldCBsb29wICgo
bGluZSAocmVhZC1saW5lIGlucHV0KSkpCisgICAgICAod2hlbiAobm90IChlb2Ytb2JqZWN0PyBs
aW5lKSkKKyAgICAgICAgKGRpc3BsYXkgKGxpbmUtbW9kaWZpZXIgbGluZSkpCisgICAgICAgIChu
ZXdsaW5lKQorICAgICAgICAobG9vcCAocmVhZC1saW5lIGlucHV0KSkpKSkKKworICAobGV0KiAo
KG1vZGlmaWVkLWRlZmNvbmZpZyAoc3RyaW5nLWFwcGVuZCBkZWZjb25maWcgIi5tb2QiKSkKKyAg
ICAgICAgIDs7IFNwbGl0IHRoZSBjb25maWdzIGludG8gYSBsaXN0IG9mIHNpbmdsZSBjb25maWd1
YXRpb25zLgorICAgICAgICAgOzsgVG8gbWluaW1pemUgbWlzdGFrZXMsIHdlIHN1cHBvcnQgYSBz
dHJpbmcgYW5kIGEgbGlzdCBvZiBzdHJpbmdzLAorICAgICAgICAgOzsgZWFjaCB3aXRoIG5ld2xp
bmVzIHRvIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb25zLgorICAgICAgICAgKGNvbmZpZy1saXN0IChm
b2xkLXJpZ2h0IGFwcGVuZCAnKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
bWFwIChsYW1iZGEgKHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChzdHJpbmctc3BsaXQgcyAjXG5ld2xpbmUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGlmIChzdHJpbmc/IGNvbmZpZ3MpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGxpc3QgY29uZmlncykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25maWdzKSkpKQorICAgICAgICAgOzsgR2VuZXJhdGUg
a2V5LXZhbHVlIHBhaXJzIGZyb20gdGhlIGNvbmZpZy1saXN0LgorICAgICAgICAgKHBhaXJzICht
YXAgKGxhbWJkYSAoY29uZmlnLXN0cmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgKGNvbmZp
Zy1zdHJpbmctPnBhaXIgY29uZmlnLXN0cmluZykpCisgICAgICAgICAgICAgICAgICAgICBjb25m
aWctbGlzdCkpCisgICAgICAgICA7OyBHZW5lcmF0ZSBhIGJsYWNrbGlzdCBvZiBjb25maWcga2V5
cyBmcm9tIHBhaXJzLgorICAgICAgICAgKGJsYWNrbGlzdCAobWFwIChsYW1iZGEgKGNvbmZpZy1w
YWlyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpcnN0IGNvbmZpZy1wYWlyKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBwYWlycykpCisgICAgICAgICAocmVtb3ZlLWNvbmZpZy1z
dHJpbmcgKGN1dCByZW1vdmUtY29uZmlnLXN0cmluZyA8PiBibGFja2xpc3QpKSkKKyAgICA7OyBX
cml0ZSB0byB0aGUgbW9kaWZpZWQtZGVmY29uZmlnIGZpbGUgZmlyc3QgdGhlIGNvbnRlbnQgb2Yg
dGhlIGRlZmNvbmZpZworICAgIDs7IGZpbGUgd2l0aCByZW1vdmVkIGxpbmVzLCBhbmQgYWZ0ZXJ3
YXJkcyB0aGUgY29uZmlncy4KKyAgICAoY2FsbC13aXRoLW91dHB1dC1maWxlIG1vZGlmaWVkLWRl
ZmNvbmZpZworICAgICAgKGxhbWJkYSAob3V0cHV0KQorICAgICAgICAod2l0aC1vdXRwdXQtdG8t
cG9ydCBvdXRwdXQKKyAgICAgICAgICAobGFtYmRhICgpCisgICAgICAgICAgICAoY2FsbC13aXRo
LWlucHV0LWZpbGUgZGVmY29uZmlnCisgICAgICAgICAgICAgIChsYW1iZGEgKGlucHV0KQorICAg
ICAgICAgICAgICAgICh3cml0ZS1saW5lcyBpbnB1dCAjOiBsaW5lLW1vZGlmaWVyIHJlbW92ZS1j
b25maWctc3RyaW5nKSkpCisgICAgICAgICAgICAoY2FsbC13aXRoLWlucHV0LXN0cmluZworICAg
ICAgICAgICAgICAoc3RyaW5nLWpvaW4gKG1hcCBwYWlyLT5jb25maWctc3RyaW5nIHBhaXJzKSAi
XG4iKQorICAgICAgICAgICAgICAobGFtYmRhIChpbnB1dCkKKyAgICAgICAgICAgICAgICAod3Jp
dGUtbGluZXMgaW5wdXQpKSkpKSkpCisgICAgOzsgRW5zdXJlIHRoZSBtb2RpZmllZC1kZWZjb25m
aWcgZmlsZSBpcyB1c2VkLgorICAgIChkZWxldGUtZmlsZSBkZWZjb25maWcpCisgICAgKHJlbmFt
ZS1maWxlIG1vZGlmaWVkLWRlZmNvbmZpZyBkZWZjb25maWcpKSkKLS0gCjIuMzQuMAoK

--b1_dy1TZ2hS49oNQXeFOaGaAgaz8PDQdSfZJR0gkUp7ur0
Content-Type: text/x-patch; name=v5-0004-gnu-linux-New-function-to-modify-the-configuratio.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=v5-0004-gnu-linux-New-function-to-modify-the-configuratio.patch

RnJvbSA1NjgxNDkxNGQ4NmRhOGVmNWIzMjFlNzgyN2RlODYyMzdiN2FjY2RjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRyIEhvZGluYSA8cGhvZGluYUBwcm90b25tYWlsLmNvbT4K
RGF0ZTogV2VkLCAxMyBBcHIgMjAyMiAyMToxODozNyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjUg
NC84XSBnbnU6IGxpbnV4OiBOZXcgZnVuY3Rpb24gdG8gbW9kaWZ5IHRoZSBjb25maWd1cmF0aW9u
CiBvZiBhIExpbnV4IGtlcm5lbC4KTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0
L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkZy
b206IFN0ZWZhbiA8c3RlZmFuLWd1aXhAdm9kYWZvbmVtYWlsLmRlPgoKKiBnbnUvcGFja2FnZXMv
bGludXguc2NtIChzeXN0ZW0tPmxpbnV4LXNyY2FyY2gpOiBOZXcgZnVuY3Rpb24gdG8gcmV0dXJu
IHRoZQpyZWxldmVudCBmb2xkZXIgbmFtZSBiZWxvdyBhcmNoLyBpbiB0aGUgTGludXggc291cmNl
IGNvZGUuCihtYWtlLWxpbnV4LWxpYnJlKikgWydzZXQtZW52aXJvbm1lbnRdOiBTcGxpdHRlZCB0
aGlzIG5ldyBwaGFzZSBvdXQgb2YgYW5kCmFkZGluZyBpdCBiZWZvcmUg4oCmClsnY29uZmlndXJl
XTog4oCmIHRvIGFsbG93IGEgcmVwbGFjZW1lbnQgYW5kIHJldXNlIGZyb20gKG1vZGlmeS1saW51
eCkuCihtb2RpZnktbGludXgpOiBOZXcgZnVuY3Rpb24gdG8gbWFrZSBhIGN1c3RvbWl6ZWQgTGlu
dXggcGFja2FnZSBpbmhlcml0ZWQKZnJvbSBhbm90aGVyIExpbnV4IHBhY2thZ2UsIHdoaWNoIHdp
bGwgYmUgYnVpbGQgd2l0aCBhbiBvd24gZGVmY29uZmlnIG9yCmNvbmZpZ3VyYXRpb24gY2hhbmdl
cy4KKG1ha2UtZGVmY29uZmlnKTogRnVuY3Rpb24gdG8gZ2V0IGEgZGVmY29uZmlnIGZyb20gYW4g
dXJpLgoKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9saW51eC5zY20gYi9nbnUvcGFja2FnZXMv
bGludXguc2NtCmluZGV4IGE0MDU4MzdiYjEuLmY4MDJkZTk2NjYgMTAwNjQ0Ci0tLSBhL2dudS9w
YWNrYWdlcy9saW51eC5zY20KKysrIGIvZ251L3BhY2thZ2VzL2xpbnV4LnNjbQpAQCAtNTksNyAr
NTksOCBAQAogOzs7IENvcHlyaWdodCDCqSAyMDIxIEpvc3NlbGluIFBvaXJldCA8am9zc2VsaW4u
cG9pcmV0QHByb3Rvbm1haWwuY2g+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMjEgT2xpdmllciBEaW9u
IDxvbGl2aWVyLmRpb25AcG9seW10bC5jYT4KIDs7OyBDb3B5cmlnaHQgwqkgMjAyMSBTb2xlbmUg
UmFwZW5uZSA8c29sZW5lQHBlcnNvLnB3PgotOzs7IENvcHlyaWdodCDCqSAyMDIxIFBldHIgSG9k
aW5hIDxwaG9kaW5hQHByb3Rvbm1haWwuY29tPgorOzs7IENvcHlyaWdodCDCqSAyMDIxLCAyMDIy
IFBldHIgSG9kaW5hIDxwaG9kaW5hQHByb3Rvbm1haWwuY29tPgorOzs7IENvcHlyaWdodCDCqSAy
MDIxIFN0ZWZhbiA8c3RlZmFuLWd1aXhAdm9kYWZvbmVtYWlsLmRlPgogOzs7IENvcHlyaWdodCDC
qSAyMDIyIEFydHlvbSBWLiBQb3B0c292IDxwb3B0c292LmFydHlvbUBnbWFpbC5jb20+CiAKIDs7
OwpAQCAtMTc5LDYgKzE4MCw3IEBAIChkZWZpbmUtbW9kdWxlIChnbnUgcGFja2FnZXMgbGludXgp
CiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTIpCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZp
LTI2KQogICAjOnVzZS1tb2R1bGUgKGljZS05IG1hdGNoKQorICAjOnVzZS1tb2R1bGUgKGljZS05
IG9wdGFyZ3MpCiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgcmVnZXgpKQogCiAoZGVmaW5lLXB1Ymxp
YyAoc3lzdGVtLT5saW51eC1hcmNoaXRlY3R1cmUgYXJjaCkKQEAgLTE5NSw2ICsxOTcsMjEgQEAg
KGRlZmluZS1wdWJsaWMgKHN5c3RlbS0+bGludXgtYXJjaGl0ZWN0dXJlIGFyY2gpCiAgICAgICAg
ICAgKChzdHJpbmctcHJlZml4PyAicmlzY3YiIGFyY2gpICJyaXNjdiIpCiAgICAgICAgICAgKGVs
c2UgYXJjaCkpKSkKIAorKGRlZmluZS1wdWJsaWMgKHN5c3RlbS0+bGludXgtc3JjYXJjaCBhcmNo
KQorICAiUmV0dXJuIGZvciBhIEd1aXggc3lzdGVtIEFSQ0ggbmFtZSB0aGUgU1JDQVJDSCBuYW1l
LCB3aGljaCBpcyBzZXQgaW4gdGhlCit0b3BsZXZlbCBNYWtlZmlsZSBvZiBMaW51eCBhbmQgZGVu
b3RlcyB0aGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGRpcmVjdG9yeSBuYW1lCitiZWxvdyBhcmNo
LyBpbiBpdHMgc291cmNlIGNvZGUuICBTb21lIGZldyBhcmNoaXRlY3R1cmVzIHNoYXJlIGEgY29t
bW9uIGZvbGRlci4KK0l0IHJlc2VtYmxlcyB0aGUgZGVmaW5pdGlvbiBvZiBTUkNBUkNIIGJhc2Vk
IG9uIEFSQ0ggaW4gdGhlIE1ha2VmaWxlIGFuZCBtYXkKK2JlIHVzZWQgdG8gcGxhY2UgYSBkZWZj
b25maWcgZmlsZSBpbiB0aGUgcHJvcGVyIHBhdGguIgorICAobGV0ICgobGludXgtYXJjaCAoc3lz
dGVtLT5saW51eC1hcmNoaXRlY3R1cmUgYXJjaCkpKQorICAgIChtYXRjaCBsaW51eC1hcmNoCisg
ICAgICAoImkzODYiICAgICJ4ODYiKQorICAgICAgKCJ4ODZfNjQiICAieDg2IikKKyAgICAgICgi
c3BhcmMzMiIgInNwYXJjIikKKyAgICAgICgic3BhcmM2NCIgInNwYXJjIikKKyAgICAgICgic2g2
NCIgICAgInNoIikKKyAgICAgIChfICAgICAgICAgbGludXgtYXJjaCkpKSkKKwogKGRlZmluZS1w
dWJsaWMgKHN5c3RlbS0+ZGVmY29uZmlnIHN5c3RlbSkKICAgIlNvbWUgc3lzdGVtcyAobm90YWJs
eSBwb3dlcnBjLWxpbnV4KSByZXF1aXJlIGEgc3BlY2lhbCB0YXJnZXQgZm9yIGtlcm5lbAogZGVm
Y29uZmlnLiAgUmV0dXJuIHRoZSBhcHByb3ByaWF0ZSBtYWtlIHRhcmdldCBpZiBhcHBsaWNhYmxl
LCBvdGhlcndpc2UgcmV0dXJuCkBAIC04NTIsNyArODY5LDcgQEAgKGRlZmluZSogKG1ha2UtbGlu
dXgtbGlicmUqIHZlcnNpb24gZ251LXJldmlzaW9uIHNvdXJjZSBzdXBwb3J0ZWQtc3lzdGVtcwog
ICAgICAgICAgICAgICAgICAobGFtYmRhIF8KICAgICAgICAgICAgICAgICAgICAoc3Vic3RpdHV0
ZSogKGZpbmQtZmlsZXMgIi4iICJeTWFrZWZpbGUoXFwuaW5jbHVkZSk/JCIpCiAgICAgICAgICAg
ICAgICAgICAgICAoKCIvYmluL3B3ZCIpICJwd2QiKSkpKQotICAgICAgICAgICAgICAgKHJlcGxh
Y2UgJ2NvbmZpZ3VyZQorICAgICAgICAgICAgICAgKGFkZC1iZWZvcmUgJ2NvbmZpZ3VyZSAnc2V0
LWVudmlyb25tZW50CiAgICAgICAgICAgICAgICAgIChsYW1iZGEqICgjOmtleSBpbnB1dHMgdGFy
Z2V0ICM6YWxsb3ctb3RoZXIta2V5cykKICAgICAgICAgICAgICAgICAgICA7OyBBdm9pZCBpbnRy
b2R1Y2luZyB0aW1lc3RhbXBzLgogICAgICAgICAgICAgICAgICAgIChzZXRlbnYgIktDT05GSUdf
Tk9USU1FU1RBTVAiICIxIikKQEAgLTg3Nyw4ICs4OTQsMTAgQEAgKGRlZmluZSogKG1ha2UtbGlu
dXgtbGlicmUqIHZlcnNpb24gZ251LXJldmlzaW9uIHNvdXJjZSBzdXBwb3J0ZWQtc3lzdGVtcwog
CiAgICAgICAgICAgICAgICAgICAgKHNldGVudiAiRVhUUkFWRVJTSU9OIgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIyQoYW5kIGV4dHJhLXZlcnNpb24KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAiLSIgZXh0cmEtdmVyc2lvbikpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kICItIiBleHRyYS12ZXJz
aW9uKSkpKSkKIAorICAgICAgICAgICAgICAgKHJlcGxhY2UgJ2NvbmZpZ3VyZQorICAgICAgICAg
ICAgICAgICAobGFtYmRhKiAoIzprZXkgaW5wdXRzIG5hdGl2ZS1pbnB1dHMgIzphbGxvdy1vdGhl
ci1rZXlzKQogICAgICAgICAgICAgICAgICAgIChsZXQgKChidWlsZCAgKGFzc29jLXJlZiAlc3Rh
bmRhcmQtcGhhc2VzICdidWlsZCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmZpZyAo
YXNzb2MtcmVmIGlucHV0cyAia2NvbmZpZyIpKSkKIApAQCAtMTIxMCw2ICsxMjI5LDExMCBAQCAo
ZGVmaW5lLXB1YmxpYyBsaW51eC1saWJyZS13aXRoLWJwZgogICAgICAgKGlucHV0cyAobW9kaWZ5
LWlucHV0cyAocGFja2FnZS1pbnB1dHMgYmFzZS1saW51eC1saWJyZSkKICAgICAgICAgICAgICAg
ICAocHJlcGVuZCBjcGlvKSkpKSkpCiAKKwwKKzs7OworOzs7IExpbnV4IGtlcm5lbCBjdXN0b21p
emF0aW9uIGZ1bmN0aW9ucy4KKzs7OworCisoZGVmaW5lKi1wdWJsaWMgKG1vZGlmeS1saW51eCAj
OmtleSBuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGludXggbGlu
dXgtbGlicmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmNvbmZpZworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmZpZ3MgIiIpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleHRyYS12ZXJzaW9uKQorICAiTWFrZSBhIExpbnV4IHBhY2thZ2Ug
TkFNRSBhcyBhIG1vZGlmaWNhdGlvbiBvZiBhbm90aGVyIExJTlVYIHBhY2thZ2UuCisKK0lmIE5B
TUUgaXMgbm90IGdpdmVuLCB0aGVuIGl0IGRlZmF1bHRzIHRvIHRoZSBzYW1lIG5hbWUgYXMgdGhl
IExJTlVYIHBhY2thZ2UuCisKK1VubGVzcyBTT1VSQ0UgaXMgZ2l2ZW4gdGhlIHNvdXJjZSBvZiBM
SU5VWCBpcyB1c2VkLgorCitBIERFRkNPTkZJRyBmaWxlIHRvIGJlIHVzZWQgY2FuIGJlIGdpdmVu
IGFzIGEgcGFja2FnZSwgYXMgYSBmaWxlIGxpa2Ugb2JqZWN0CisoZmlsZS1hcHBlbmQsIGxvY2Fs
LWZpbGUgZXRjLiksIG9yIGFzIGEgc3RyaW5nIHdpdGggdGhlIG5hbWUgb2YgYSBkZWZjb25maWcg
ZmlsZQorYXZhaWxhYmxlIGluIHRoZSBMaW51eCBzb3VyY2VzLiAgSWYgREVGQ09ORklHIGlzIG5v
dCBnaXZlbiwgdGhlbiBhIGRlZmNvbmZpZworZmlsZSB3aWxsIGJlIHNhdmVkIGZyb20gdGhlIExJ
TlVYIHBhY2thZ2UgY29uZmlndXJhdGlvbi4KKworQWRkaXRpb25hbCBDT05GSUdTIHdpbGwgYmUg
dXNlZCB0byBtb2RpZnkgdGhlIGdpdmVuIG9yIHNhdmVkIGRlZmNvbmZpZywgd2hpY2gKK3dpbGwg
ZmluYWxseSBiZSB1c2VkIHRvIGJ1aWxkIExpbnV4LgorCitDT05GSUdTIGNhbiBiZSBhIGxpc3Qg
b2Ygc3RyaW5ncywgd2l0aCBvbmUgY29uZmlndXJhdGlvbiBwZXIgbGluZS4gIFRoZSB1c3VhbAor
ZGVmY29uZmlnIHN5bnRheCBoYXMgdG8gYmUgdXNlZCwgYnV0IHRoZXJlIGlzIGEgc3BlY2lhbCBl
eHRlbnNpb24gdG8gZWFzZSB0aGUKK3JlbW92YWwgb2YgY29uZmlndXJhdGlvbnMuICBDb21tZW50
IGxpbmVzIGFyZSBzdXBwb3J0ZWQgYXMgd2VsbC4KKworSGVyZSBpcyBhbiBleHBsYWluaW5nIHVz
YWdlIGV4YW1wbGU6CisKKyAgJyg7OyBUaGlzIHN0cmluZyBkZWZpbmVzIHRoZSB2ZXJzaW9uIHRh
aWwgaW4gJ3VuYW1lIC1yJy4KKyAgICBcIkNPTkZJR19MT0NBTFZFUlNJT049XFxcIi1oYW5kY3Jh
ZnRlZFxcXCIKKyAgICA7OyBUaGlzICcjIENPTkZJR1/igKYgaXMgbm90IHNldCcgc3ludGF4IGhh
cyB0byBtYXRjaCBleGFjdGx5IQorICAgIFwiIyBDT05GSUdfQk9PVF9DT05GSUcgaXMgbm90IHNl
dFwiCisgICAgXCJDT05GSUdfTkZTX1NXQVA9eVwiCisgICAgOzsgVGhpcyBpcyBhIG11bHRpbGlu
ZSBjb25maWd1cmF0aW9uOgorICAgIFwiQ09ORklHX0UxMDAwPXkKKyMgVGhpcyBpcyBhIGNvbW1l
bnQsIGJlbG93IGZvbGxvdyB0d28gc3BlY2lhbCByZW1vdmFsIGV4dGVuc2lvbnM6CitDT05GSUdf
Q01ETElORV9FWFRFTkQKK0NPTkZJR19DTURMSU5FX0ZPUkNFPVwiKQorCitBIHN0cmluZyBvZiBj
b25maWd1cmF0aW9ucyBpbnN0ZWFkIG9mIGEgbGlzdCBvZiBjb25maWd1cmF0aW9uIHN0cmluZ3Mg
aXMgYWxzbworcG9zc2libGUuCisKK0VYVFJBLVZFUlNJT04gY2FuIGJlIGEgc3RyaW5nIG92ZXJ3
cml0aW5nIHRoZSBFWFRSQVZFUlNJT04gc2V0dGluZyBvZiB0aGUgTElOVVgKK3BhY2thZ2UsIGFm
dGVyIGJlaW5nIHByZXBlbmRlZCBieSBhIGh5cGhlbi4gIEl0IHdpbGwgYmUgdmlzaWJsZSBpbiB0
aGUgb3V0cHV0CitvZiAndW5hbWUgLXInIGJlaGluZCB0aGUgTGludXggdmVyc2lvbiBudW1iZXJz
LiIKKyAgKHBhY2thZ2UKKyAgICAoaW5oZXJpdCBsaW51eCkKKyAgICAobmFtZSAob3IgbmFtZSAo
cGFja2FnZS1uYW1lIGxpbnV4KSkpCisgICAgKHNvdXJjZSAob3Igc291cmNlIChwYWNrYWdlLXNv
dXJjZSBsaW51eCkpKQorICAgIChhcmd1bWVudHMKKyAgICAgKHN1YnN0aXR1dGUta2V5d29yZC1h
cmd1bWVudHMKKyAgICAgICAgIChwYWNrYWdlLWFyZ3VtZW50cyBsaW51eCkKKyAgICAgICAoKCM6
aW1wb3J0ZWQtbW9kdWxlcyBpbXBvcnRlZC1tb2R1bGVzICVnbnUtYnVpbGQtc3lzdGVtLW1vZHVs
ZXMpCisgICAgICAgIGAoKGd1aXggYnVpbGQga2NvbmZpZykgLEBpbXBvcnRlZC1tb2R1bGVzKSkK
KyAgICAgICAoKCM6bW9kdWxlcyBtb2R1bGVzKQorICAgICAgICBgKChndWl4IGJ1aWxkIGtjb25m
aWcpICxAbW9kdWxlcykpCisgICAgICAgKCgjOnBoYXNlcyBwaGFzZXMpCisgICAgICAgICN+KG1v
ZGlmeS1waGFzZXMgIyRwaGFzZXMKKyAgICAgICAgICAgKHJlcGxhY2UgJ2NvbmZpZ3VyZQorICAg
ICAgICAgICAgIChsYW1iZGEqICgjOmtleSBpbnB1dHMgIzphbGxvdy1vdGhlci1rZXlzICM6cmVz
dCBhcmd1bWVudHMpCisgICAgICAgICAgICAgICAobGV0KiAoKHNyY2FyY2gKKyAgICAgICAgICAg
ICAgICAgICAgICAgIyQoc3lzdGVtLT5saW51eC1zcmNhcmNoIChvciAoJWN1cnJlbnQtdGFyZ2V0
LXN5c3RlbSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICglY3VycmVudC1zeXN0ZW0pKSkpCisgICAgICAgICAgICAgICAgICAgICAgKGNvbmZpZ3Mg
KHN0cmluZy1hcHBlbmQgImFyY2gvIiBzcmNhcmNoICIvY29uZmlncy8iKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAoZ3VpeF9kZWZjb25maWcgKHN0cmluZy1hcHBlbmQgY29uZmlncyAiZ3VpeF9k
ZWZjb25maWciKSkpCisgICAgICAgICAgICAgICAgICMkKGNvbmQKKyAgICAgICAgICAgICAgICAg
ICAoKG5vdCBkZWZjb25maWcpCisgICAgICAgICAgICAgICAgICAgICN+KGJlZ2luCisgICAgICAg
ICAgICAgICAgICAgICAgIDs7IENhbGwgdGhlIG9yaWdpbmFsICdjb25maWd1cmUgcGhhc2UuCisg
ICAgICAgICAgICAgICAgICAgICAgIChhcHBseSAoYXNzb2MtcmVmICMkcGhhc2VzICdjb25maWd1
cmUpIGFyZ3VtZW50cykKKyAgICAgICAgICAgICAgICAgICAgICAgOzsgU2F2ZSBhIGRlZmNvbmZp
ZyBmaWxlLgorICAgICAgICAgICAgICAgICAgICAgICAoaW52b2tlICJtYWtlIiAic2F2ZWRlZmNv
bmZpZyIpCisgICAgICAgICAgICAgICAgICAgICAgIDs7IE1vdmUgdGhlIHNhdmVkIGRlZmNvbmZp
ZyB0byB0aGUgcHJvcGVyIGxvY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAocmVuYW1l
LWZpbGUgImRlZmNvbmZpZyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1
aXhfZGVmY29uZmlnKSkpCisgICAgICAgICAgICAgICAgICAgKChzdHJpbmc/IGRlZmNvbmZpZykK
KyAgICAgICAgICAgICAgICAgICAgOzsgVXNlIGFub3RoZXIgZXhpc3RpbmcgZGVmY29uZmlnIGZy
b20gdGhlIExpbnV4IHNvdXJjZXMuCisgICAgICAgICAgICAgICAgICAgICR+KHJlbmFtZS1maWxl
IChzdHJpbmctYXBwZW5kIGNvbmZpZ3MgIyRkZWZjb25maWcpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3VpeF9kZWZjb25maWcpKQorICAgICAgICAgICAgICAgICAgIChlbHNl
CisgICAgICAgICAgICAgICAgICAgIDs7IENvcHkgdGhlIGRlZmNvbmZpZyBpbnB1dCB0byB0aGUg
cHJvcGVyIGxvY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICAnKGNvcHktZmlsZSAoYXNzb2Mt
cmVmIGlucHV0cyAiZ3VpeF9kZWZjb25maWciKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBndWl4X2RlZmNvbmZpZykpKQorICAgICAgICAgICAgICAgICAobW9kaWZ5LWRlZmNvbmZp
ZyBndWl4X2RlZmNvbmZpZyAnIyRjb25maWdzKQorICAgICAgICAgICAgICAgICAjJEAoaWYgZXh0
cmEtdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICBgKChzZXRlbnYgIkVYVFJBVkVSU0lP
TiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwoc3RyaW5nLWFwcGVuZCAiLSIg
ZXh0cmEtdmVyc2lvbikpKQorICAgICAgICAgICAgICAgICAgICAgICAnKCkpCisgICAgICAgICAg
ICAgICAgIChpbnZva2UgIm1ha2UiICJndWl4X2RlZmNvbmZpZyIpKSkpKSkpKQorICAgIChuYXRp
dmUtaW5wdXRzCisgICAgIChhcHBlbmQgKGlmIChvciAobm90IGRlZmNvbmZpZykKKyAgICAgICAg
ICAgICAgICAgICAgIChzdHJpbmc/IGRlZmNvbmZpZykpCisgICAgICAgICAgICAgICAgICcoKQor
ICAgICAgICAgICAgICAgICA7OyBUaGUgZGVmY29uZmlnIHNob3VsZCBiZSBhIHBhY2thZ2Ugb3Ig
ZmlsZS1saWtlIG9iamVjdC4KKyAgICAgICAgICAgICAgICAgYCgoImd1aXhfZGVmY29uZmlnIiAs
ZGVmY29uZmlnKSkpCisgICAgICAgICAgICAgKHBhY2thZ2UtbmF0aXZlLWlucHV0cyBsaW51eCkp
KSkpCisKKyhkZWZpbmUtcHVibGljIChtYWtlLWRlZmNvbmZpZyB1cmkgc2hhMjU2LWFzLWJhc2Uz
MikKKyAgKG9yaWdpbiAobWV0aG9kIHVybC1mZXRjaCkKKyAgICAgICAgICAodXJpIHVyaSkKKyAg
ICAgICAgICAoc2hhMjU2IChiYXNlMzIgc2hhMjU2LWFzLWJhc2UzMikpKSkKIAogDAogOzs7Ci0t
IAoyLjM0LjAKCg==

--b1_dy1TZ2hS49oNQXeFOaGaAgaz8PDQdSfZJR0gkUp7ur0
Content-Type: text/x-patch; name=v5-0006-gnu-raspberry-pi-Add-helpers-for-config.txt-file-.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=v5-0006-gnu-raspberry-pi-Add-helpers-for-config.txt-file-.patch

RnJvbSA5NWRhODNmMTE1OWFiMjgwYjIzMTNiODE2Y2U3ODQxZjVmYmRiMDZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gPHN0ZWZhbi1ndWl4QHZvZGFmb25lbWFpbC5kZT4K
RGF0ZTogV2VkLCAxMyBBcHIgMjAyMiAyMToxOTozMiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjUg
Ni84XSBnbnU6IHJhc3BiZXJyeS1waTogQWRkIGhlbHBlcnMgZm9yIGNvbmZpZy50eHQgZmlsZQog
Z2VuZXJhdGlvbi4KCiogZ251L3BhY2thZ2VzL3Jhc3BiZXJyeS1waS5zY20gKHJhc3BpLWNvbmZp
Zy1maWxlLCByYXNwaS1jdXN0b20tdHh0KToKTmV3IGZ1bmN0aW9ucy4KKCVyYXNwaS1jb25maWct
dHh0LCAlcmFzcGktYmNtMjctZHRiLXR4dCwgJXJhc3BpLWJjbTI4LWR0Yi10eHQKJXJhc3BpLXUt
Ym9vdC1ib290bG9hZGVyLXR4dCk6IE5ldyB2YXJpYWJsZXMuCgpkaWZmIC0tZ2l0IGEvZ251L3Bh
Y2thZ2VzL3Jhc3BiZXJyeS1waS5zY20gYi9nbnUvcGFja2FnZXMvcmFzcGJlcnJ5LXBpLnNjbQpp
bmRleCBhMmFiMzAwNTMxLi4wNzA3NTE2ZjcyIDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvcmFz
cGJlcnJ5LXBpLnNjbQorKysgYi9nbnUvcGFja2FnZXMvcmFzcGJlcnJ5LXBpLnNjbQpAQCAtMjM4
LDYgKzIzOCw1OSBAQCAoZGVmaW5lLXB1YmxpYyByYXNwaS1hcm02NC1jaGFpbmxvYWRlcgogICAg
ICAgICAgICAgICAgI3QpKSkpKSkpKQogICAgIChzdXBwb3J0ZWQtc3lzdGVtcyAnKCJhYXJjaDY0
LWxpbnV4IikpKSkKIAorKGRlZmluZS1wdWJsaWMgKHJhc3BpLWNvbmZpZy1maWxlIG5hbWUgY29u
dGVudCkKKyAgIk1ha2UgYSBjb25maWd1cmF0aW9uIGZpbGUgbGlrZSBjb25maWcudHh0IGZvciB0
aGUgUmFzcGJlcnJ5IFBpIGZpcm13YXJlLgorQ09OVEVOVCBjYW4gYmUgYSBsaXN0IG9mIHN0cmlu
Z3MsIHdoaWNoIGFyZSBjb25jYXRlbmF0ZWQgd2l0aCBhIG5ld2xpbmUKK2NoYXJhY3Rlci4gIEFs
dGVybmF0aXZlbHkgQ09OVEVOVCBjYW4gYmUgYSBzdHJpbmcgd2l0aCB0aGUgZnVsbCBmaWxlIGNv
bnRlbnQuIgorICAocGxhaW4tZmlsZQorICAgbmFtZQorICAgKGlmIChsaXN0PyBjb250ZW50KQor
ICAgICAgIChzdHJpbmctam9pbiBjb250ZW50ICJcbiIgJ3N1ZmZpeCkKKyAgICAgICBjb250ZW50
KSkpCisKKyhkZWZpbmUtcHVibGljICVyYXNwaS1jb25maWctdHh0CisgIDs7IEEgY29uZmlnLnR4
dCBmaWxlIHRvIHN0YXJ0IHRoZSBBUk0gY29yZXMgdXAgaW4gNjQtYml0IG1vZGUgaWYgbmVjZXNz
YXJ5CisgIDs7IGFuZCB0byBpbmNsdWRlIGEgZHRiLnR4dCwgYm9vdGxvYWRlci50eHQsIGFuZCBh
IGN1c3RvbS50eHQsIGVhY2ggd2l0aAorICA7OyBzZXBhcmF0ZWQgY29uZmlndXJhdGlvbnMgZm9y
IHRoZSBSYXNwYmVycnkgUGkgZmlybXdhcmUuCisgIChyYXNwaS1jb25maWctZmlsZQorICAgImNv
bmZpZy50eHQiCisgICBgKCIjIFNlZSBodHRwczovL3d3dy5yYXNwYmVycnlwaS5vcmcvZG9jdW1l
bnRhdGlvbi9jb25maWd1cmF0aW9uL2NvbmZpZy10eHQvUkVBRE1FLm1kIGZvciBkZXRhaWxzLiIK
KyAgICAgIiIKKyAgICAgLChzdHJpbmctYXBwZW5kICJhcm1fNjRiaXQ9IiAoaWYgKHRhcmdldC1h
YXJjaDY0PykgIjEiICIwIikpCisgICAgICJpbmNsdWRlIGR0Yi50eHQiCisgICAgICJpbmNsdWRl
IGJvb3Rsb2FkZXIudHh0IgorICAgICAiaW5jbHVkZSBjdXN0b20udHh0IikpKQorCisoZGVmaW5l
LXB1YmxpYyAlcmFzcGktYmNtMjctZHRiLXR4dAorICA7OyBBIGR0Yi50eHQgZmlsZSB0byBiZSBp
bmNsdWRlZCBieSB0aGUgY29uZmlnLnR4dCB0byBlbnN1cmUgdGhhdCB0aGUKKyAgOzsgZG93bnN0
cmVhbSBkZXZpY2UgdHJlZSBmaWxlcyBiY20yNyouZHRiIHdpbGwgYmUgdXNlZC4KKyAgKHJhc3Bp
LWNvbmZpZy1maWxlCisgICAiZHRiLnR4dCIKKyAgICJ1cHN0cmVhbV9rZXJuZWw9MCIpKQorCiso
ZGVmaW5lLXB1YmxpYyAlcmFzcGktYmNtMjgtZHRiLXR4dAorICA7OyBBIGR0Yi50eHQgZmlsZSB0
byBiZSBpbmNsdWRlZCBieSB0aGUgY29uZmlnLnR4dCB0byBlbnN1cmUgdGhhdCB0aGUKKyAgOzsg
dXBzdHJlYW0gZGV2aWNlIHRyZWUgZmlsZXMgYmNtMjgqLmR0YiB3aWxsIGJlIHVzZWQuCisgIDs7
IFRoaXMgYWxzbyBpbXBsaWVzIHRoZSB1c2Ugb2YgdGhlIGR0b3ZlcmxheT11cHN0cmVhbS4KKyAg
KHJhc3BpLWNvbmZpZy1maWxlCisgICAiZHRiLnR4dCIKKyAgICJ1cHN0cmVhbV9rZXJuZWw9MSIp
KQorCisoZGVmaW5lLXB1YmxpYyAlcmFzcGktdS1ib290LWJvb3Rsb2FkZXItdHh0CisgIDs7IEEg
Ym9vdGxvYWRlci50eHQgZmlsZSB0byBiZSBpbmNsdWRlZCBieSB0aGUgY29uZmlnLnR4dCB0byBs
b2FkIHRoZQorICA7OyBVLUJvb3QgYm9vdGxvYWRlci4KKyAgKHJhc3BpLWNvbmZpZy1maWxlCisg
ICAiYm9vdGxvYWRlci50eHQiCisgICAnKCJkdG92ZXJsYXk9dXBzdHJlYW0iCisgICAgICJlbmFi
bGVfdWFydD0xIgorICAgICAia2VybmVsPXUtYm9vdC5iaW4iKSkpCisKKyhkZWZpbmUtcHVibGlj
IChyYXNwaS1jdXN0b20tdHh0IGNvbnRlbnQpCisgICJNYWtlIGEgY3VzdG9tLnR4dCBmaWxlIGZv
ciB0aGUgUmFzcGJlcnJ5IFBpIGZpcm13YXJlLgorQ09OVEVOVCBjYW4gYmUgYSBsaXN0IG9mIHN0
cmluZ3MsIHdoaWNoIGFyZSBjb25jYXRlbmF0ZWQgd2l0aCBhIG5ld2xpbmUKK2NoYXJhY3Rlci4g
IEFsdGVybmF0aXZlbHkgQ09OVEVOVCBjYW4gYmUgYSBzdHJpbmcgd2l0aCB0aGUgZnVsbCBmaWxl
IGNvbnRlbnQuIgorICAocmFzcGktY29uZmlnLWZpbGUgImN1c3RvbS50eHQiIGNvbnRlbnQpKQor
CiAoZGVmaW5lIChtYWtlLXJhc3BpLWRlZmNvbmZpZyBhcmNoIGRlZmNvbmZpZyBzaGEyNTYtYXMt
YmFzZTMyKQogICAiTWFrZSBmb3IgdGhlIGFyY2hpdGVjdHVyZSBBUkNIIGEgZmlsZS1saWtlIG9i
amVjdCBmcm9tIHRoZSBERUZDT05GSUcgZmlsZQogd2l0aCB0aGUgaGFzaCBTSEEyNTYtQVMtQkFT
RTMyLiAgVGhpcyBvYmplY3QgY2FuIGJlIHVzZWQgYXMgdGhlICM6ZGVmY29uZmlnCi0tIAoyLjM0
LjAKCg==

--b1_dy1TZ2hS49oNQXeFOaGaAgaz8PDQdSfZJR0gkUp7ur0
Content-Type: text/x-patch; name=v5-0005-gnu-raspberry-pi-Add-defconfig-objects-to-build-c.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=v5-0005-gnu-raspberry-pi-Add-defconfig-objects-to-build-c.patch

RnJvbSA0MjhkZTBjYmZiOWYwM2MxNGY4OGI5ZGI1ZTU2MTgxZWY3NTlkN2ViIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gPHN0ZWZhbi1ndWl4QHZvZGFmb25lbWFpbC5kZT4K
RGF0ZTogV2VkLCAxMyBBcHIgMjAyMiAyMToxOToyNSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjUg
NS84XSBnbnU6IHJhc3BiZXJyeS1waTogQWRkIGRlZmNvbmZpZyBvYmplY3RzIHRvIGJ1aWxkCiBj
dXN0b21pemVkIExpbnV4IGtlcm5lbHMuCgpnbnUvcGFja2FnZXMvcmFzcGJlcnJ5LXBpLnNjbSAo
bWFrZS1yYXNwaS1kZWZjb25pZyk6IE5ldyBmdW5jdGlvbiB0byBtYWtlCmRvd25sb2FkZWQgZGVm
Y29uZmlnIG9iamVjdHMgZnJvbSB0aGUgTGludXggcmVwb3NpdG9yeSBvZiB0aGUgUmFzcGJlcnJ5
IFBpCkZvdW5kYXRpb24uCiglYmNtMjcwOS1kZWZjb25maWcsICViY20yNzEwLWRlZmNvbmZpZywg
JWJjbTI3MTEtZGVmY29uZmlnLAolYmNtMjgzNS1kZWZjb25maWcsICViY21ycGktZGVmY29uZmln
LCAlYmNtMjcxMS1kZWZjb25maWctNjQsCiViY21ycGkzLWRlZmNvbmZpZyk6IE5ldyB2YXJpYWJs
ZXMgY29udGFpbmluZyBkZWZjb25maWcgb2JqZWN0cyB0byBidWlsZApMaW51eCBrZXJuZWxzIGN1
c3RvbWl6ZWQgZm9yIFJhc3BiZXJyeSBQaSBzaW5nbGUgYm9hcmQgY29tcHV0ZXJzLgoKZGlmZiAt
LWdpdCBhL2dudS9wYWNrYWdlcy9yYXNwYmVycnktcGkuc2NtIGIvZ251L3BhY2thZ2VzL3Jhc3Bi
ZXJyeS1waS5zY20KaW5kZXggYmIzOGI4YjIxOC4uYTJhYjMwMDUzMSAxMDA2NDQKLS0tIGEvZ251
L3BhY2thZ2VzL3Jhc3BiZXJyeS1waS5zY20KKysrIGIvZ251L3BhY2thZ2VzL3Jhc3BiZXJyeS1w
aS5zY20KQEAgLTEsNSArMSw2IEBACiA7OzsgR05VIEd1aXggLS0tIEZ1bmN0aW9uYWwgcGFja2Fn
ZSBtYW5hZ2VtZW50IGZvciBHTlUKIDs7OyBDb3B5cmlnaHQgwqkgMjAyMCBEYW5ueSBNaWxvc2F2
bGpldmljIDxkYW5ueW1Ac2NyYXRjaHBvc3Qub3JnPgorOzs7IENvcHlyaWdodCDCqSAyMDIxIFN0
ZWZhbiA8c3RlZmFuLWd1aXhAdm9kYWZvbmVtYWlsLmRlPgogOzs7CiA7OzsgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgR05VIEd1aXguCiA7OzsKQEAgLTI1LDkgKzI2LDEwIEBAIChkZWZpbmUtbW9kdWxl
IChnbnUgcGFja2FnZXMgcmFzcGJlcnJ5LXBpKQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdl
cyBjb21tZW5jZW1lbnQpCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGNyb3NzLWJhc2Up
CiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGRvY3VtZW50YXRpb24pCisgICM6dXNlLW1v
ZHVsZSAoZ251IHBhY2thZ2VzIGVtYmVkZGVkKQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdl
cyBmaWxlKQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBnY2MpCi0gICM6dXNlLW1vZHVs
ZSAoZ251IHBhY2thZ2VzIGVtYmVkZGVkKQorICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBs
aW51eCkKICAgIzp1c2UtbW9kdWxlIChndWl4IGJ1aWxkLXN5c3RlbSBnbnUpCiAgICM6dXNlLW1v
ZHVsZSAoZ3VpeCBkb3dubG9hZCkKICAgIzp1c2UtbW9kdWxlIChndWl4IGdpdC1kb3dubG9hZCkK
QEAgLTIzNSwzICsyMzcsNDMgQEAgKGRlZmluZS1wdWJsaWMgcmFzcGktYXJtNjQtY2hhaW5sb2Fk
ZXIKICAgICAgICAgICAgICAgIChpbnN0YWxsLWZpbGUgImFybTY0LmJpbiIgbGliZXhlYykKICAg
ICAgICAgICAgICAgICN0KSkpKSkpKSkKICAgICAoc3VwcG9ydGVkLXN5c3RlbXMgJygiYWFyY2g2
NC1saW51eCIpKSkpCisKKyhkZWZpbmUgKG1ha2UtcmFzcGktZGVmY29uZmlnIGFyY2ggZGVmY29u
ZmlnIHNoYTI1Ni1hcy1iYXNlMzIpCisgICJNYWtlIGZvciB0aGUgYXJjaGl0ZWN0dXJlIEFSQ0gg
YSBmaWxlLWxpa2Ugb2JqZWN0IGZyb20gdGhlIERFRkNPTkZJRyBmaWxlCit3aXRoIHRoZSBoYXNo
IFNIQTI1Ni1BUy1CQVNFMzIuICBUaGlzIG9iamVjdCBjYW4gYmUgdXNlZCBhcyB0aGUgIzpkZWZj
b25maWcKK2FyZ3VtZW50IG9mIHRoZSBmdW5jdGlvbiAobW9kaWZ5LWxpbnV4KS4iCisgIChtYWtl
LWRlZmNvbmZpZworICAgKHN0cmluZy1hcHBlbmQKKyAgICAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNl
cmNvbnRlbnQuY29tL3Jhc3BiZXJyeXBpL2xpbnV4L3Jhc3BiZXJyeXBpLWtlcm5lbF8xLjIwMjEw
NDMwLTEvYXJjaC8iCisgICAgYXJjaCAiL2NvbmZpZ3MvIiBkZWZjb25maWcpCisgICBzaGEyNTYt
YXMtYmFzZTMyKSkKKworKGRlZmluZS1wdWJsaWMgJWJjbTI3MDktZGVmY29uZmlnCisgIChtYWtl
LXJhc3BpLWRlZmNvbmZpZworICAgImFybSIgImJjbTI3MDlfZGVmY29uZmlnIgorICAgIjB5dnJt
aWQyamFrbDkyOWQxbXYwMGdpZG5xYmY5MWZmaGo2MWM5Z2w3NWY3a200ODgxMWMiKSkKKworKGRl
ZmluZS1wdWJsaWMgJWJjbTI3MTEtZGVmY29uZmlnCisgIChtYWtlLXJhc3BpLWRlZmNvbmZpZwor
ICAgImFybSIgImJjbTI3MTFfZGVmY29uZmlnIgorICAgIjE5aGI2bnduYTdzazNiNHJuNXlqZmhs
ZHJzM2MxbHYyNHEwOHc0Z3BhNHh6aDFieXY3amoiKSkKKworKGRlZmluZS1wdWJsaWMgJWJjbTI4
MzUtZGVmY29uZmlnCisgIChtYWtlLXJhc3BpLWRlZmNvbmZpZworICAgImFybSIgImJjbTI4MzVf
ZGVmY29uZmlnIgorICAgIjE3ZG12YWJxdnh3cW42bGd2MXg4cmZoMndxZjFyMnhtbTEwbmtkbnJn
d2ttZ3Y4YmgyZDUiKSkKKworKGRlZmluZS1wdWJsaWMgJWJjbXJwaS1kZWZjb25maWcKKyAgKG1h
a2UtcmFzcGktZGVmY29uZmlnCisgICAiYXJtIiAiYmNtcnBpX2RlZmNvbmZpZyIKKyAgICIwbGNt
cjZueGRkNTNtM2s4aHFiNWs2YzViN3ZiZGdtZnZjbGlxeWw5NXNucDQ1cnhqamt3IikpCisKKyhk
ZWZpbmUtcHVibGljICViY20yNzExLWRlZmNvbmZpZy02NAorICAobWFrZS1yYXNwaS1kZWZjb25m
aWcKKyAgICJhcm02NCIgImJjbTI3MTFfZGVmY29uZmlnIgorICAgIjB4ZjM4bmN6d2lucjBqOHZo
c244bmQ4aDR5c2puNzd4cGhnN3huc3N6MDRnY2xiN2ZuZHIiKSkKKworKGRlZmluZS1wdWJsaWMg
JWJjbXJwaTMtZGVmY29uZmlnCisgIChtYWtlLXJhc3BpLWRlZmNvbmZpZworICAgImFybTY0IiAi
YmNtcnBpM19kZWZjb25maWciCisgICAiMDFrMDk4c25kN2tibWh6NjhqOTNtajJmd3AzOWM1Nmc5
cjhyZ2F3MTdqczVyMHcwemJoeSIpKQotLSAKMi4zNC4wCgo=

--b1_dy1TZ2hS49oNQXeFOaGaAgaz8PDQdSfZJR0gkUp7ur0
Content-Type: text/x-patch; name=v5-0008-gnu-raspberry-pi-Add-a-bootloader-chain-for-the-R.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=v5-0008-gnu-raspberry-pi-Add-a-bootloader-chain-for-the-R.patch

RnJvbSA3ZTEzYWIwYmIzM2UwZjkwYjA5NGFkNGUyNzU5ZTZlOGJjMWU4ZTljIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gPHN0ZWZhbi1ndWl4QHZvZGFmb25lbWFpbC5kZT4K
RGF0ZTogV2VkLCAxMyBBcHIgMjAyMiAyMToxOTo0MSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjUg
OC84XSBnbnU6IHJhc3BiZXJyeS1waTogQWRkIGEgYm9vdGxvYWRlci1jaGFpbiBmb3IgdGhlCiBS
YXNwYmVycnkgUGkgYW5kIG9zIGV4YW1wbGVzLgoKKiBnbnUvcGFja2FnZXMvcmFzcGJlcnJ5LXBp
LnNjbSAoZ3J1Yi1lZmktYm9vdGxvYWRlci1jaGFpbi1yYXNwaS02NCk6IE5ldwpib290bG9hZGVy
IHZhcmlhYmxlLCBjYXBhYmxlIHRvIGJvb3QgYSBSYXNwYmVycnkgUGkgb3ZlciBuZXR3b3JrIG9y
IGZyb20gYQpsb2NhbCBzdG9yYWdlLgoqIGdudS9zeXN0ZW0vZXhhbXBsZXMvcmFzcGJlcnJ5LXBp
LTY0LnRtcGw6IE5ldyBvcGVyYXRpbmctc3lzdGVtIGV4YW1wbGUuCiogZ251L3N5c3RlbS9leGFt
cGxlcy9yYXNwYmVycnktcGktNjQtbmZzLXJvb3QudG1wbDogTmV3IG9wZXJhdGluZy1zeXN0ZW0K
ZXhhbXBsZSBmb3IgYm9vdGluZyBvdmVyIG5ldHdvcmsuCgpkaWZmIC0tZ2l0IGEvZ251L3BhY2th
Z2VzL3Jhc3BiZXJyeS1waS5zY20gYi9nbnUvcGFja2FnZXMvcmFzcGJlcnJ5LXBpLnNjbQppbmRl
eCBkODA4ZjYxYWMyLi5kNTJhNGE3MmM1IDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvcmFzcGJl
cnJ5LXBpLnNjbQorKysgYi9nbnUvcGFja2FnZXMvcmFzcGJlcnJ5LXBpLnNjbQpAQCAtMTgsMTEg
KzE4LDE0IEBACiA7OzsgYWxvbmcgd2l0aCBHTlUgR3VpeC4gIElmIG5vdCwgc2VlIDxodHRwOi8v
d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAogKGRlZmluZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBy
YXNwYmVycnktcGkpCisgICM6dXNlLW1vZHVsZSAoZ251IGJvb3Rsb2FkZXIpCisgICM6dXNlLW1v
ZHVsZSAoZ251IGJvb3Rsb2FkZXIgZ3J1YikKICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMp
CiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGFkbWluKQogICAjOnVzZS1tb2R1bGUgKGdu
dSBwYWNrYWdlcyBhbGdlYnJhKQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBiYXNlKQog
ICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBiYXNoKQorICAjOnVzZS1tb2R1bGUgKGdudSBw
YWNrYWdlcyBib290bG9hZGVycykKICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgY29tbWVu
Y2VtZW50KQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBjcm9zcy1iYXNlKQogICAjOnVz
ZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBkb2N1bWVudGF0aW9uKQpAQCAtMzEyLDYgKzMxNSwyMiBA
QCAoZGVmaW5lLXB1YmxpYyAobWFrZS1yYXNwaS1iY20yOC1kdGJzIGxpbnV4KQogICAgICAoc2lt
cGxlLWZvcm1hdCAjZiAiVGhlIGRldmljZS10cmVlIGZpbGVzIGZvciBSYXNwYmVycnkgUGkgbW9k
ZWxzIGZyb20gfmEuIgogICAgICAgICAgICAgIChwYWNrYWdlLW5hbWUgbGludXgpKSkpKQogCiso
ZGVmaW5lLXB1YmxpYyBncnViLWVmaS1ib290bG9hZGVyLWNoYWluLXJhc3BpLTY0CisgIDs7IEEg
Ym9vdGxvYWRlciBjYXBhYmxlIHRvIGJvb3QgYSBSYXNwYmVycnkgUGkgb3ZlciBuZXR3b3JrIHZp
YSBURlRQIG9yIGZyb20KKyAgOzsgYSBsb2NhbCBzdG9yYWdlIGxpa2UgYSBtaWNybyBTRCBjYXJk
LgorICA7OyBJdCBuZWl0aGVyIGluc3RhbGxzIGZpcm13YXJlIG5vciBkZXZpY2UtdHJlZSBmaWxl
cyBmb3IgdGhlIFJhc3BiZXJyeSBQaS4KKyAgOzsgSXQganVzdCBhc3N1bWVzIHRoZW0gdG8gYmUg
ZXhpc3RpbmcgaW4gYm9vdC9lZmkgaW4gdGhlIHNhbWUgd2F5IHRoYXQgc29tZQorICA7OyBVRUZJ
IGZpcm13YXJlIHdpdGggQUNQSSBkYXRhIGlzIHVzdWFsbHkgYXNzdW1lZCB0byBiZSBleGlzdGlu
ZyBvbiBQQ3MuCisgIDs7IEl0IGNyZWF0ZXMgZmlybXdhcmUgY29uZmlndXJhdGlvbiBmaWxlcyBh
bmQgYSBib290bG9hZGVyLWNoYWluIHdpdGggVS1Cb290CisgIDs7IHRvIHByb3ZpZGUgYW4gRUZJ
IEFQSSBmb3IgdGhlIGZpbmFsIEdSVUIgYm9vdGxvYWRlci4KKyAgOzsgSXQgYWxzbyBzZXJ2ZXMg
YXMgYSBibHVlLXByaW50IHRvIGNyZWF0ZSBhbiBvd24gYm9vdGxvYWRlci1jaGFpbiB3aXRoCisg
IDs7IGZpcm13cmUgYW5kIGRldmljZS10cmVlIHBhY2thZ2VzIG9yIGZpbGVzLgorICAoZWZpLWJv
b3Rsb2FkZXItY2hhaW4gZ3J1Yi1lZmktbmV0Ym9vdC1yZW1vdmFibGUtYm9vdGxvYWRlcgorICAg
ICAgICAgICAgICAgICAgICAgICAgIzpwYWNrYWdlcyAobGlzdCB1LWJvb3QtcnBpLWVmaS02NCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICM6ZmlsZXMgKGxpc3QgJXJhc3BpLWNvbmZpZy10eHQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXJhc3BpLWJjbTI3LWR0Yi10
eHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXJhc3BpLXUtYm9vdC1i
b290bG9hZGVyLXR4dCkpKQorCiAoZGVmaW5lIChtYWtlLXJhc3BpLWRlZmNvbmZpZyBhcmNoIGRl
ZmNvbmZpZyBzaGEyNTYtYXMtYmFzZTMyKQogICAiTWFrZSBmb3IgdGhlIGFyY2hpdGVjdHVyZSBB
UkNIIGEgZmlsZS1saWtlIG9iamVjdCBmcm9tIHRoZSBERUZDT05GSUcgZmlsZQogd2l0aCB0aGUg
aGFzaCBTSEEyNTYtQVMtQkFTRTMyLiAgVGhpcyBvYmplY3QgY2FuIGJlIHVzZWQgYXMgdGhlICM6
ZGVmY29uZmlnCmRpZmYgLS1naXQgYS9nbnUvc3lzdGVtL2V4YW1wbGVzL3Jhc3BiZXJyeS1waS02
NC1uZnMtcm9vdC50bXBsIGIvZ251L3N5c3RlbS9leGFtcGxlcy9yYXNwYmVycnktcGktNjQtbmZz
LXJvb3QudG1wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jMDA2YTI4
N2ZiCi0tLSAvZGV2L251bGwKKysrIGIvZ251L3N5c3RlbS9leGFtcGxlcy9yYXNwYmVycnktcGkt
NjQtbmZzLXJvb3QudG1wbApAQCAtMCwwICsxLDczIEBACis7OyBUaGlzIGlzIGFuIG9wZXJhdGlu
Zy1zeXN0ZW0gY29uZmlndXJhdGlvbiB0ZW1wbGF0ZSBvZiBhCis7OyA2NC1iaXQgbWluaW1hbCBz
eXN0ZW0gZm9yIGEgUmFzcGJlcnJ5IFBpIHdpdGggYW4gTkZTIHJvb3QgZmlsZS1zeXN0ZW0uCisK
Kzs7IEl0IG5laXRoZXIgaW5zdGFsbHMgZmlybXdhcmUgbm9yIGRldmljZS10cmVlIGZpbGVzIGZv
ciB0aGUgUmFzcGJlcnJ5IFBpLgorOzsgSXQganVzdCBhc3N1bWVzIHRoZW0gdG8gYmUgZXhpc3Rp
bmcgaW4gYm9vdC9lZmkgaW4gdGhlIHNhbWUgd2F5IHRoYXQgc29tZQorOzsgVUVGSSBmaXJtd2Fy
ZSB3aXRoIEFDUEkgZGF0YSBpcyB1c3VhbGx5IGFzc3VtZWQgdG8gYmUgZXhpc3Rpbmcgb24gUENz
LgorCis7OyBJdCBleHBlY3RzIHRoZSBib290L2VmaSBkaXJlY3RvcnkgdG8gYmUgc2VydmVkIHZp
YSBURlRQIGFuZCB0aGUgcm9vdAorOzsgZmlsZS1zeXN0ZW0gdG8gYmUgc2VydmVkIHZpYSBORlMu
IFNlZSB0aGUgZ3J1Yi1lZmktbmV0Ym9vdC1ib290bG9hZGVyCis7OyBkZXNjcmlwdGlvbiBpbiB0
aGUgbWFudWFsIGZvciBtb3JlIGRldGFpbHMuCisKKyh1c2UtbW9kdWxlcyAoZ251KQorICAgICAg
ICAgICAgIChnbnUgYXJ0d29yaykKKyAgICAgICAgICAgICAoZ251IHN5c3RlbSBuc3MpKQorKHVz
ZS1zZXJ2aWNlLW1vZHVsZXMgYWRtaW4KKyAgICAgICAgICAgICAgICAgICAgIGF2YWhpCisgICAg
ICAgICAgICAgICAgICAgICBuZXR3b3JraW5nCisgICAgICAgICAgICAgICAgICAgICBzc2gpCiso
dXNlLXBhY2thZ2UtbW9kdWxlcyBjZXJ0cworICAgICAgICAgICAgICAgICAgICAgbGludXgKKyAg
ICAgICAgICAgICAgICAgICAgIHJhc3BiZXJyeS1waQorICAgICAgICAgICAgICAgICAgICAgc3No
KQorCisoZGVmaW5lICVteS1wdWJsaWMta2V5CisgIChsb2NhbC1maWxlIChzdHJpbmctYXBwZW5k
IChnZXRlbnYgIkhPTUUiKSAiLy5zc2gvaWRfZWNkc2EucHViIikpKQorCisoZGVmaW5lLXB1Ymxp
YyByYXNwYmVycnktcGktNjQtbmZzLXJvb3QKKyAgKG9wZXJhdGluZy1zeXN0ZW0KKyAgIChob3N0
LW5hbWUgInJhc3BiZXJyeXBpLWd1aXgiKQorICAgKHRpbWV6b25lICJFdXJvcGUvQmVybGluIikK
KyAgIChib290bG9hZGVyIChib290bG9hZGVyLWNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAg
ICAoYm9vdGxvYWRlciBncnViLWVmaS1ib290bG9hZGVyLWNoYWluLXJhc3BpLTY0KQorICAgICAg
ICAgICAgICAgICh0YXJnZXRzICcoIi9ib290L2VmaSIpKQorICAgICAgICAgICAgICAgICh0aGVt
ZSAoZ3J1Yi10aGVtZSAocmVzb2x1dGlvbiAnKDE5MjAgLiAxMDgwKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgKGltYWdlIChmaWxlLWFwcGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICVhcnR3b3JrLXJlcG9zaXRvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
L2dydWIvR3VpeFNELWZ1bGx5LWJsYWNrLTE2LTkuc3ZnIikpKSkpKQorICAgKGtlcm5lbC1hcmd1
bWVudHMgJygiaXA9ZGhjcCIpKQorICAgKGtlcm5lbCAobW9kaWZ5LWxpbnV4ICM6bGludXggbGlu
dXgtbGlicmUtYXJtNjQtZ2VuZXJpYworICAgICAgICAgICAgICAgICAgICAgICAgICM6ZXh0cmEt
dmVyc2lvbiAiYXJtNjQtZ2VuZXJpYy1uZXRib290IgorICAgICAgICAgICAgICAgICAgICAgICAg
ICM6Y29uZmlncyAnKCJDT05GSUdfTkZTX1NXQVA9eSIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiQ09ORklHX1VTQl9VU0JORVQ9eSIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiQ09ORklHX1VTQl9MQU43OFhYPXkiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkNPTkZJR19VU0JfTkVUX1NNU0M5NVhYPXkiKSkpCisgICAo
aW5pdHJkLW1vZHVsZXMgJygpKQorICAgKGZpbGUtc3lzdGVtcyAoY29ucyogKGZpbGUtc3lzdGVt
CisgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdW50LXBvaW50ICIvIikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAodHlwZSAibmZzIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZGV2
aWNlICI6L2V4cG9ydC9yYXNwYmVycnlwaS9ndWl4IikKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAob3B0aW9ucyAiYWRkcj0xMC4yMC4zMC40MCx2ZXJzPTQuMSIpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgJWJhc2UtZmlsZS1zeXN0ZW1zKSkKKyAgIChzd2FwLWRldmljZXMgKGxpc3QgKHN3
YXAtc3BhY2UgKHRhcmdldCAiL3J1bi9zd2FwZmlsZSIpKSkpCisgICAodXNlcnMgKGNvbnMqICh1
c2VyLWFjY291bnQKKyAgICAgICAgICAgICAgICAgIChuYW1lICJwaSIpCisgICAgICAgICAgICAg
ICAgICAoZ3JvdXAgInVzZXJzIikKKyAgICAgICAgICAgICAgICAgIChzdXBwbGVtZW50YXJ5LWdy
b3VwcyAnKCJ3aGVlbCIgIm5ldGRldiIgImF1ZGlvIiAidmlkZW8iKSkKKyAgICAgICAgICAgICAg
ICAgIChob21lLWRpcmVjdG9yeSAiL2hvbWUvcGkiKSkKKyAgICAgICAgICAgICAgICAgJWJhc2Ut
dXNlci1hY2NvdW50cykpCisgICAocGFja2FnZXMgKGNvbnMqIG5zcy1jZXJ0cworICAgICAgICAg
ICAgICAgICAgICBvcGVuc3NoCisgICAgICAgICAgICAgICAgICAgICViYXNlLXBhY2thZ2VzKSkK
KyAgIChzZXJ2aWNlcyAoY29ucyogKHNlcnZpY2UgYXZhaGktc2VydmljZS10eXBlKQorICAgICAg
ICAgICAgICAgICAgICAoc2VydmljZSBkaGNwLWNsaWVudC1zZXJ2aWNlLXR5cGUpCisgICAgICAg
ICAgICAgICAgICAgIChzZXJ2aWNlIG50cC1zZXJ2aWNlLXR5cGUpCisgICAgICAgICAgICAgICAg
ICAgIChzZXJ2aWNlIG9wZW5zc2gtc2VydmljZS10eXBlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChvcGVuc3NoLWNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICh4MTEtZm9yd2FyZGluZz8gI3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
YXV0aG9yaXplZC1rZXlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgKCgicGkiICwl
bXktcHVibGljLWtleSkpKSkpCisgICAgICAgICAgICAgICAgICAgICViYXNlLXNlcnZpY2VzKSkK
KyAgIChuYW1lLXNlcnZpY2Utc3dpdGNoICVtZG5zLWhvc3QtbG9va3VwLW5zcykpKQorCityYXNw
YmVycnktcGktNjQtbmZzLXJvb3QKZGlmZiAtLWdpdCBhL2dudS9zeXN0ZW0vZXhhbXBsZXMvcmFz
cGJlcnJ5LXBpLTY0LnRtcGwgYi9nbnUvc3lzdGVtL2V4YW1wbGVzL3Jhc3BiZXJyeS1waS02NC50
bXBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjZiMDE3OGM4NjEKLS0t
IC9kZXYvbnVsbAorKysgYi9nbnUvc3lzdGVtL2V4YW1wbGVzL3Jhc3BiZXJyeS1waS02NC50bXBs
CkBAIC0wLDAgKzEsNzcgQEAKKzs7IFRoaXMgaXMgYW4gb3BlcmF0aW5nLXN5c3RlbSBjb25maWd1
cmF0aW9uIHRlbXBsYXRlIG9mIGEKKzs7IDY0LWJpdCBtaW5pbWFsIHN5c3RlbSBmb3IgYSBSYXNw
YmVycnkgUGkgd2l0aCBsb2NhbCBzdG9yYWdlLgorCis7OyBJdCBuZWl0aGVyIGluc3RhbGxzIGZp
cm13YXJlIG5vciBkZXZpY2UtdHJlZSBmaWxlcyBmb3IgdGhlIFJhc3BiZXJyeSBQaS4KKzs7IEl0
IGp1c3QgYXNzdW1lcyB0aGVtIHRvIGJlIGV4aXN0aW5nIGluIGJvb3QvZWZpIGluIHRoZSBzYW1l
IHdheSB0aGF0IHNvbWUKKzs7IFVFRkkgZmlybXdhcmUgd2l0aCBBQ1BJIGRhdGEgaXMgdXN1YWxs
eSBhc3N1bWVkIHRvIGJlIGV4aXN0aW5nIG9uIFBDcy4KKworOzsgSXQgZXhwZWN0cyB0aGUgYm9v
dC1wYXJ0aXRpb24gdG8gYmUgbW91bnRlZCBhcyBib290L2VmaSBpbiB0aGUgc2FtZSB3YXkKKzs7
IGFzIGl0IGlzIHVzdWFsbHkgZXhwZXRlZCBvbiBQQ3Mgd2l0aCBVRUZJIGZpcm13YXJlLgorCiso
dXNlLW1vZHVsZXMgKGdudSkKKyAgICAgICAgICAgICAoZ251IGFydHdvcmspCisgICAgICAgICAg
ICAgKGdudSBzeXN0ZW0gbnNzKSkKKyh1c2Utc2VydmljZS1tb2R1bGVzIGFkbWluCisgICAgICAg
ICAgICAgICAgICAgICBhdmFoaQorICAgICAgICAgICAgICAgICAgICAgbmV0d29ya2luZworICAg
ICAgICAgICAgICAgICAgICAgc3NoKQorKHVzZS1wYWNrYWdlLW1vZHVsZXMgY2VydHMKKyAgICAg
ICAgICAgICAgICAgICAgIGxpbnV4CisgICAgICAgICAgICAgICAgICAgICByYXNwYmVycnktcGkK
KyAgICAgICAgICAgICAgICAgICAgIHNzaCkKKworKGRlZmluZSAlbXktcHVibGljLWtleQorICAo
bG9jYWwtZmlsZSAoc3RyaW5nLWFwcGVuZCAoZ2V0ZW52ICJIT01FIikgIi8uc3NoL2lkX2VjZHNh
LnB1YiIpKSkKKworKGRlZmluZS1wdWJsaWMgcmFzcGJlcnJ5LXBpLTY0CisgIChvcGVyYXRpbmct
c3lzdGVtCisgICAoaG9zdC1uYW1lICJyYXNwYmVycnlwaS1ndWl4IikKKyAgICh0aW1lem9uZSAi
RXVyb3BlL0JlcmxpbiIpCisgICAoYm9vdGxvYWRlciAoYm9vdGxvYWRlci1jb25maWd1cmF0aW9u
CisgICAgICAgICAgICAgICAgKGJvb3Rsb2FkZXIgZ3J1Yi1lZmktYm9vdGxvYWRlci1jaGFpbi1y
YXNwaS02NCkKKyAgICAgICAgICAgICAgICAodGFyZ2V0cyAnKCIvYm9vdC9lZmkiKSkKKyAgICAg
ICAgICAgICAgICAodGhlbWUgKGdydWItdGhlbWUgKHJlc29sdXRpb24gJygxOTIwIC4gMTA4MCkp
CisgICAgICAgICAgICAgICAgICAgICAgIChpbWFnZSAoZmlsZS1hcHBlbmQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAlYXJ0d29yay1yZXBvc2l0b3J5CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIi9ncnViL0d1aXhTRC1mdWxseS1ibGFjay0xNi05LnN2ZyIpKSkpKSkK
KyAgIChrZXJuZWwgKG1vZGlmeS1saW51eCAjOmxpbnV4IGxpbnV4LWxpYnJlLWFybTY0LWdlbmVy
aWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAjfCBJdCBpcyBwb3NzaWJsZSB0byB1c2UgYSBz
cGVjaWZpYyBkZWZjb25maWcgZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
ZXhhbXBsZSB0aGUgImJjbXJwaTNfZGVmY29uZmlnIiB3aXRoIHRoZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhcmlhYmxlIHNob3duIGJlbG93LiAgVW5mb3J0dW5hdGVseSB0aGUga2Vy
bmVsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgZnJvbSB0aGUgbGludXgtbGli
cmUgc291cmNlcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZjb25m
aWcgZmlsZSBkb2VzIG5vdCBib290LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6ZXh0
cmEtdmVyc2lvbiAiZ251LWJjbXJwaTMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzpk
ZWZjb25maWcgJWJjbXJwaTMtZGVmY29uZmlnCisgICAgICAgICAgICAgICAgICAgICAgICAgfCMp
KQorICAgKGluaXRyZC1tb2R1bGVzICcoKSkKKyAgIChmaWxlLXN5c3RlbXMgKGNvbnMqIChmaWxl
LXN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VudC1wb2ludCAiLyIpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgKHR5cGUgImV4dDQiKQorICAgICAgICAgICAgICAgICAgICAg
ICAgIChkZXZpY2UgKGZpbGUtc3lzdGVtLWxhYmVsICJHdWl4IikpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgKGZpbGUtc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdW50LXBv
aW50ICIvYm9vdC9lZmkiKQorICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlICJ2ZmF0IikK
KyAgICAgICAgICAgICAgICAgICAgICAgICAoZGV2aWNlIChmaWxlLXN5c3RlbS1sYWJlbCAiRUZJ
IikpKQorICAgICAgICAgICAgICAgICAgICAgICAgJWJhc2UtZmlsZS1zeXN0ZW1zKSkKKyAgIChz
d2FwLWRldmljZXMgKGxpc3QgKHN3YXAtc3BhY2UgKHRhcmdldCAiL3J1bi9zd2FwZmlsZSIpKSkp
CisgICAodXNlcnMgKGNvbnMqICh1c2VyLWFjY291bnQKKyAgICAgICAgICAgICAgICAgIChuYW1l
ICJwaSIpCisgICAgICAgICAgICAgICAgICAoZ3JvdXAgInVzZXJzIikKKyAgICAgICAgICAgICAg
ICAgIChzdXBwbGVtZW50YXJ5LWdyb3VwcyAnKCJ3aGVlbCIgIm5ldGRldiIgImF1ZGlvIiAidmlk
ZW8iKSkKKyAgICAgICAgICAgICAgICAgIChob21lLWRpcmVjdG9yeSAiL2hvbWUvcGkiKSkKKyAg
ICAgICAgICAgICAgICAgJWJhc2UtdXNlci1hY2NvdW50cykpCisgICAocGFja2FnZXMgKGNvbnMq
IG5zcy1jZXJ0cworICAgICAgICAgICAgICAgICAgICBvcGVuc3NoCisgICAgICAgICAgICAgICAg
ICAgICViYXNlLXBhY2thZ2VzKSkKKyAgIChzZXJ2aWNlcyAoY29ucyogKHNlcnZpY2UgYXZhaGkt
c2VydmljZS10eXBlKQorICAgICAgICAgICAgICAgICAgICAoc2VydmljZSBkaGNwLWNsaWVudC1z
ZXJ2aWNlLXR5cGUpCisgICAgICAgICAgICAgICAgICAgIChzZXJ2aWNlIG50cC1zZXJ2aWNlLXR5
cGUpCisgICAgICAgICAgICAgICAgICAgIChzZXJ2aWNlIG9wZW5zc2gtc2VydmljZS10eXBlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcGVuc3NoLWNvbmZpZ3VyYXRpb24KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh4MTEtZm9yd2FyZGluZz8gI3QpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoYXV0aG9yaXplZC1rZXlzCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBgKCgicGkiICwlbXktcHVibGljLWtleSkpKSkpCisgICAgICAgICAgICAgICAg
ICAgICViYXNlLXNlcnZpY2VzKSkKKyAgIChuYW1lLXNlcnZpY2Utc3dpdGNoICVtZG5zLWhvc3Qt
bG9va3VwLW5zcykpKQorCityYXNwYmVycnktcGktNjQKLS0gCjIuMzQuMAoK

--b1_dy1TZ2hS49oNQXeFOaGaAgaz8PDQdSfZJR0gkUp7ur0--





Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 14 Apr 2022 11:00:34 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 14 07:00:34 2022
Received: from localhost ([127.0.0.1]:55379 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nexDG-0005RM-7e
	for submit <at> debbugs.gnu.org; Thu, 14 Apr 2022 07:00:34 -0400
Received: from andre.telenet-ops.be ([195.130.132.53]:60208)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <maximedevos@HIDDEN>) id 1nexDD-0005RD-Vi
 for 48314 <at> debbugs.gnu.org; Thu, 14 Apr 2022 07:00:32 -0400
Received: from ptr-bvsjgyhxw7psv60dyze.18120a2.ip6.access.telenet.be
 ([IPv6:2a02:1811:8c09:9d00:3c5f:2eff:feb0:ba5a])
 by andre.telenet-ops.be with bizsmtp
 id Jb0V2700o4UW6Th01b0Wjf; Thu, 14 Apr 2022 13:00:30 +0200
Message-ID: <86d36088dc4c81112e1529ef9e5e46d6629912c1.camel@HIDDEN>
Subject: Re: [PATCH v4] Install guix system on Raspberry Pi
From: Maxime Devos <maximedevos@HIDDEN>
To: phodina <phodina@HIDDEN>, "48314 <at> debbugs.gnu.org"
 <48314 <at> debbugs.gnu.org>
Date: Thu, 14 Apr 2022 13:00:25 +0200
In-Reply-To: <zMqJOXxxdBE_tlTtNY-q9vjI2_uBFY36RprO1tJWhHBh9S6NO4l46DHNOjHgM5GXf3SxAbC4tR27tN3sUZWS9Y69U70BGtc47McF0TE5Gaw=@protonmail.com>
References: <19E4796A-B0DB-444F-8773-2E8D3EF6132D@HIDDEN>
 <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
 <b661d9b6c7b44262285f544110b335ef02e6a402.camel@HIDDEN>
 <zMqJOXxxdBE_tlTtNY-q9vjI2_uBFY36RprO1tJWhHBh9S6NO4l46DHNOjHgM5GXf3SxAbC4tR27tN3sUZWS9Y69U70BGtc47McF0TE5Gaw=@protonmail.com>
Content-Type: multipart/signed; micalg="pgp-sha512";
 protocol="application/pgp-signature"; boundary="=-TJeN7XZyL5Pzp8x0jbLM"
User-Agent: Evolution 3.38.3-1 
MIME-Version: 1.0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r22;
 t=1649934030; bh=qWa2RCUqKmlM6r9yaJ+HmGIz2pHt+pmJLl106GEIQK8=;
 h=Subject:From:To:Cc:Date:In-Reply-To:References;
 b=YgvWFNRe07Cxjv1NFu0C5Q4ZmAveWe+6ijid1AsmZim3Pw5r+ysu+Rvnm5YZT1WIV
 llWMjFpyJNi9n10WniDa/st2Be35yYPencJgqXkct8g2XHCEFkUaP8URXwzWdr923M
 0ot9X0D1LjBbYE3pUGjYypcBpRG3yOr+ExlTVFBzJTfISi8dyBssxY9J9Y0hh8SQ9e
 f2SdgiICbStashMamlU5O3o20Yg+VJnRbfDiyqrobuY/zcSXolMvZ0WpGoq3gI4BuP
 0oNSrM4pbTfFzLmmQMFMVDR4RzrY1DmLFalpbZNv6R+k7Ozeu9E6Xnsg6UahzrDfk1
 kf2FVIRGchVmQ==
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Stefan <stefan-guix@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)


--=-TJeN7XZyL5Pzp8x0jbLM
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: base64

cGhvZGluYSBzY2hyZWVmIG9wIGRvIDE0LTA0LTIwMjIgb20gMDk6MjUgWyswMDAwXToKPiDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGxldCogKChzcmNhcmNoCj4gLcKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICwoc3lzdGVtLT5saW51eC1zcmNhcmNo
IChvciAoJWN1cnJlbnQtdGFyZ2V0LQo+IHN5c3RlbSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJCMoc3lzdGVtLT5saW51eC1zcmNhcmNoIChvciAoJWN1
cnJlbnQtCgppdCdzICMkLCBub3QgJCMKCj4gdGFyZ2V0LXN5c3RlbSkKPiDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKCVjdXJyZW50LQo+IHN5c3RlbSkpKSkK
PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoY29uZmlncyAo
c3RyaW5nLWFwcGVuZCAiYXJjaC8iIHNyY2FyY2gKPiAiL2NvbmZpZ3MvIikpCj4gwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGd1aXhfZGVmY29uZmlnIChzdHJp
bmctYXBwZW5kIGNvbmZpZ3MKPiAiZ3VpeF9kZWZjb25maWciKSkpCj4gLcKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgICwoY29uZAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoCAkIyhjb25kCgpsaWtld2lzZQoKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoCAoKG5vdCBkZWZjb25maWcpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgIGAoYmVnaW4KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgJH4oYmVnaW4KCmluIHRoaXMgY2FzZSAjfgoKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDs7IENhbGwgdGhlIG9yaWdpbmFsICdjb25maWd1cmUgcGhh
c2UuCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChhcHBs
eSAoYXNzb2MtcmVmICxwaGFzZXMgJ2NvbmZpZ3VyZSkKPiBhcmd1bWVudHMpCj4gK8KgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChhcHBseSAoYXNzb2MtcmVmICQj
cGhhc2VzICdjb25maWd1cmUpCj4gYXJndW1lbnRzKQoKIyQKCj4gwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA7OyBTYXZlIGEgZGVmY29uZmlnIGZpbGUuCj4g
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoaW52b2tlICJt
YWtlIiAic2F2ZWRlZmNvbmZpZyIpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoCA7OyBNb3ZlIHRoZSBzYXZlZCBkZWZjb25maWcgdG8gdGhlIHByb3Blcgo+
IGxvY2F0aW9uLgo+IEBAIC0xMzA5LDE5ICsxMzA5LDE4IEBAIChkZWZpbmUqLXB1YmxpYyAobW9k
aWZ5LWxpbnV4ICM6a2V5IG5hbWUKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ3VpeF9kZWZjb25maWcpKSkK
PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoKHN0cmluZz8gZGVmY29u
ZmlnKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOzsgVXNlIGFu
b3RoZXIgZXhpc3RpbmcgZGVmY29uZmlnIGZyb20gdGhlIExpbnV4Cj4gc291cmNlcy4KPiAtwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYChyZW5hbWUtZmlsZSAoc3RyaW5n
LWFwcGVuZCBjb25maWdzICxkZWZjb25maWcpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgICR+KHJlbmFtZS1maWxlIChzdHJpbmctYXBwZW5kIGNvbmZpZ3MKPiAkI2Rl
ZmNvbmZpZykKI34gYW5kICMkCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ3VpeF9kZWZjb25maWcpKQo+IMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChlbHNlCj4gwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA7OyBDb3B5IHRoZSBkZWZjb25maWcgaW5wdXQgdG8g
dGhlIHByb3Blcgo+IGxvY2F0aW9uLgo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqAgJyhjb3B5LWZpbGUgKGFzc29jLXJlZiBpbnB1dHMgImd1aXhfZGVmY29uZmlnIikK
PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgIGd1aXhfZGVmY29uZmlnKSkpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIChtb2RpZnktZGVmY29uZmlnIGd1aXhfZGVmY29uZmlnICcsY29uZmlncykKPiAtwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLEAoaWYgZXh0cmEtdmVyc2lvbgo+IC3CoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBgKChzZXRlbnYgIkVYVFJB
VkVSU0lPTiIKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoCAsKHN0cmluZy1hcHBlbmQgIi0iIGV4dHJhLQo+IHZlcnNpb24p
KSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKG1vZGlmeS1kZWZjb25maWcg
Z3VpeF9kZWZjb25maWcgJyQjY29uZmlncykKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgJCNAKGlmIGV4dHJhLXZlcnNpb24KCiMkQAoKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJH4oKHNldGVudiAiRVhUUkFWRVJTSU9OIgojfgo+ICvC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgICQjKHN0cmluZy1hcHBlbmQgIi0iIGV4dHJhLQo+IHZlcnNpb24pKSkKIyQKPiDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICcoKSkKPiAtwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGludm9rZSAibWFrZSIgImd1aXhfZGVmY29uZmln
IikpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgI3QpKSkpKSkKPiArwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGludm9rZSAibWFrZSIgImd1aXhfZGVmY29uZmlnIikp
KSkpKSkpCgpHcmVldGluZ3MsCk1heGltZS4K


--=-TJeN7XZyL5Pzp8x0jbLM
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNATURE-----

iIwEABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYlf+yRccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7vjOAPiLQIbSbZWQ4u8TsroNzUGmygNb
38PfdrlyJInZzsouAP448hA1mAdb1vFTcIu/QZClOHmYmxdnJ5ZhTiNk+jwKBA==
=oobI
-----END PGP SIGNATURE-----

--=-TJeN7XZyL5Pzp8x0jbLM--





Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 14 Apr 2022 09:25:37 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 14 05:25:37 2022
Received: from localhost ([127.0.0.1]:55173 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nevjN-0002aS-3t
	for submit <at> debbugs.gnu.org; Thu, 14 Apr 2022 05:25:37 -0400
Received: from mail-4322.protonmail.ch ([185.70.43.22]:39177)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <phodina@HIDDEN>) id 1nevjK-0002a9-Qv
 for 48314 <at> debbugs.gnu.org; Thu, 14 Apr 2022 05:25:35 -0400
Date: Thu, 14 Apr 2022 09:25:25 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;
 s=protonmail; t=1649928328;
 bh=XGG08LxcFhPp9upfIIYv8IEGtObblByo88gQBq6d7uA=;
 h=Date:To:From:Cc:Reply-To:Subject:Message-ID:In-Reply-To:
 References:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:
 Message-ID;
 b=s787afL/IG6oXsKZosNhMlp+CbKzpl44OeApiIZZ1Qf5R0Dvsl1ZFrBkGXbcql4zK
 xYXCBADVZjzHOWIIbr+ZYBxmo1/AhksXXEW9wDhZaSxvaokyOZOvJO16vOvPrNR91S
 6PMgBzCbmP4GEiOQeK80FtYnLRs2fTFDjbHY0xg7TPF/s/NetQ8KVYXEFylynNwPLq
 5sDZ8OzRjZat3UnemjpvD3s0EEsLYd2dy8bYGNn9Agj/1VCKFakPVS1qbn3DpYmC+D
 DHvxl1BueIv1EBG06hEhwkF2w8mxxb5FDxzqmokISY1ZZYEyvVBh9FK9t+9Nk0IZsa
 CZIiugmW39zPw==
To: "48314 <at> debbugs.gnu.org" <48314 <at> debbugs.gnu.org>
From: phodina <phodina@HIDDEN>
Subject: [PATCH v4] Install guix system on Raspberry Pi
Message-ID: <zMqJOXxxdBE_tlTtNY-q9vjI2_uBFY36RprO1tJWhHBh9S6NO4l46DHNOjHgM5GXf3SxAbC4tR27tN3sUZWS9Y69U70BGtc47McF0TE5Gaw=@protonmail.com>
In-Reply-To: <b661d9b6c7b44262285f544110b335ef02e6a402.camel@HIDDEN>
References: <19E4796A-B0DB-444F-8773-2E8D3EF6132D@HIDDEN>
 <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
 <b661d9b6c7b44262285f544110b335ef02e6a402.camel@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed;
 boundary="b1_lqwD3h2NYjWqSWydj4GOAJxfgcU5R8P59rUfL3LGLQ"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Stefan <stefan-guix@HIDDEN>, Maxime Devos <maximedevos@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Reply-To: phodina <phodina@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

This is a multi-part message in MIME format.

--b1_lqwD3h2NYjWqSWydj4GOAJxfgcU5R8P59rUfL3LGLQ
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

>
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 `(modify-phases ,phases
> > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (replace =
'configure
>
>
> To get rid of the #< error, replace this by
>
> #~(modify-phases #$phases [...])
>
> (and replace the , by #$ etc).
>
> Greetings,
> Maxime.

Thanks for the suggestion Maxime. Here's patch with fixes where I attempt t=
o rewrite the section of the code using Gexps.

Still it ends in error as there is some mistake in the Gexps I made.

$ ./pre-inst-env guix system build gnu/system/examples/raspberry-pi-64.tmpl
;;; note: source file /home/cpethod/guix/gnu/packages/linux.scm
;;;       newer than compiled /home/pethod/guix/gnu/packages/linux.go
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
substitute: updating substitutes from 'https://bordeaux.guix.gnu.org'... 10=
0.0%
The following derivation will be built:
  /gnu/store/zvy703ldgicckqgnggsnz0a21394hb9f-linux-libre-arm64-generic-5.1=
6.19.drv
building /gnu/store/zvy703ldgicckqgnggsnz0a21394hb9f-linux-libre-arm64-gene=
ric-5.16.19.drv...
ice-9/psyntax.scm:2794:12: In procedure syntax-violation:
Syntax error:
/gnu/store/2xjp40qfmrdjg28zqsd919cjg00n9wrv-linux-libre-arm64-generic-5.16.=
19-builder:1:3387: source expression failed to match any pattern in form (l=
et* ((srcarch #{$#}# (system->linux-srcarch (or (%current-target-system) (%=
current-system)))) (configs (string-append "arch/" srcarch "/configs/")) (g=
uix_defconfig (string-append configs "guix_defconfig"))) #{$#}# (cond ((not=
 defconfig) $~ (begin (apply (assoc-ref #{$#phases}# (quote configure)) arg=
uments) (invoke "make" "savedefconfig") (rename-file "defconfig" guix_defco=
nfig))) ((string? defconfig) $~ (rename-file (string-append configs #{$#def=
config}#) guix_defconfig)) (else (quote (copy-file (assoc-ref inputs "guix_=
defconfig") guix_defconfig)))) (modify-defconfig guix_defconfig (quote #{$#=
configs}#)) #{$#@}# (if extra-version $~ ((setenv "EXTRAVERSION" #{$#}# (st=
ring-append "-" extra-version))) (quote ())) (invoke "make" "guix_defconfig=
"))
builder for `/gnu/store/zvy703ldgicckqgnggsnz0a21394hb9f-linux-libre-arm64-=
generic-5.16.19.drv' failed with exit code 1
build of /gnu/store/zvy703ldgicckqgnggsnz0a21394hb9f-linux-libre-arm64-gene=
ric-5.16.19.drv failed
View build log at '/var/log/guix/drvs/zv/y703ldgicckqgnggsnz0a21394hb9f-lin=
ux-libre-arm64-generic-5.16.19.drv.gz'.
guix system: error: build of `/gnu/store/zvy703ldgicckqgnggsnz0a21394hb9f-l=
inux-libre-arm64-generic-5.16.19.drv' failed


----
Petr

--b1_lqwD3h2NYjWqSWydj4GOAJxfgcU5R8P59rUfL3LGLQ
Content-Type: text/x-patch; name=v4-0001-Attempt-to-fix-modify-linux-procedure-using-Gexp.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=v4-0001-Attempt-to-fix-modify-linux-procedure-using-Gexp.patch

RnJvbSA1NzY0MzAwMzQxOGYxM2Q0OWU0NTU4MmVmMmE2ZDI1ZGU2YjM2NTk1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRyIEhvZGluYSA8cGhvZGluYUBwcm90b25tYWlsLmNvbT4K
RGF0ZTogVGh1LCAxNCBBcHIgMjAyMiAxMToxODoyNyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjRd
IEF0dGVtcHQgdG8gZml4IG1vZGlmeS1saW51eCBwcm9jZWR1cmUgdXNpbmcgR2V4cC4KCgpkaWZm
IC0tZ2l0IGEvZ251L3BhY2thZ2VzL2xpbnV4LnNjbSBiL2dudS9wYWNrYWdlcy9saW51eC5zY20K
aW5kZXggNjFkYWM5MDVmOC4uZTFhZDYwNjlmOCAxMDA2NDQKLS0tIGEvZ251L3BhY2thZ2VzL2xp
bnV4LnNjbQorKysgYi9nbnUvcGFja2FnZXMvbGludXguc2NtCkBAIC0xMjkzLDE1ICsxMjkzLDE1
IEBAIChkZWZpbmUqLXB1YmxpYyAobW9kaWZ5LWxpbnV4ICM6a2V5IG5hbWUKICAgICAgICAgICAg
KHJlcGxhY2UgJ2NvbmZpZ3VyZQogICAgICAgICAgICAgIChsYW1iZGEqICgjOmtleSBpbnB1dHMg
IzphbGxvdy1vdGhlci1rZXlzICM6cmVzdCBhcmd1bWVudHMpCiAgICAgICAgICAgICAgICAobGV0
KiAoKHNyY2FyY2gKLSAgICAgICAgICAgICAgICAgICAgICAgLChzeXN0ZW0tPmxpbnV4LXNyY2Fy
Y2ggKG9yICglY3VycmVudC10YXJnZXQtc3lzdGVtKQorICAgICAgICAgICAgICAgICAgICAgICAk
IyhzeXN0ZW0tPmxpbnV4LXNyY2FyY2ggKG9yICglY3VycmVudC10YXJnZXQtc3lzdGVtKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCVjdXJyZW50
LXN5c3RlbSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAoY29uZmlncyAoc3RyaW5nLWFwcGVu
ZCAiYXJjaC8iIHNyY2FyY2ggIi9jb25maWdzLyIpKQogICAgICAgICAgICAgICAgICAgICAgIChn
dWl4X2RlZmNvbmZpZyAoc3RyaW5nLWFwcGVuZCBjb25maWdzICJndWl4X2RlZmNvbmZpZyIpKSkK
LSAgICAgICAgICAgICAgICAgLChjb25kCisgICAgICAgICAgICAgICAgICQjKGNvbmQKICAgICAg
ICAgICAgICAgICAgICAoKG5vdCBkZWZjb25maWcpCi0gICAgICAgICAgICAgICAgICAgIGAoYmVn
aW4KKyAgICAgICAgICAgICAgICAgICAgJH4oYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAg
OzsgQ2FsbCB0aGUgb3JpZ2luYWwgJ2NvbmZpZ3VyZSBwaGFzZS4KLSAgICAgICAgICAgICAgICAg
ICAgICAgKGFwcGx5IChhc3NvYy1yZWYgLHBoYXNlcyAnY29uZmlndXJlKSBhcmd1bWVudHMpCisg
ICAgICAgICAgICAgICAgICAgICAgIChhcHBseSAoYXNzb2MtcmVmICQjcGhhc2VzICdjb25maWd1
cmUpIGFyZ3VtZW50cykKICAgICAgICAgICAgICAgICAgICAgICAgOzsgU2F2ZSBhIGRlZmNvbmZp
ZyBmaWxlLgogICAgICAgICAgICAgICAgICAgICAgICAoaW52b2tlICJtYWtlIiAic2F2ZWRlZmNv
bmZpZyIpCiAgICAgICAgICAgICAgICAgICAgICAgIDs7IE1vdmUgdGhlIHNhdmVkIGRlZmNvbmZp
ZyB0byB0aGUgcHJvcGVyIGxvY2F0aW9uLgpAQCAtMTMwOSwxOSArMTMwOSwxOCBAQCAoZGVmaW5l
Ki1wdWJsaWMgKG1vZGlmeS1saW51eCAjOmtleSBuYW1lCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBndWl4X2RlZmNvbmZpZykpKQogICAgICAgICAgICAgICAgICAgICgoc3Ry
aW5nPyBkZWZjb25maWcpCiAgICAgICAgICAgICAgICAgICAgIDs7IFVzZSBhbm90aGVyIGV4aXN0
aW5nIGRlZmNvbmZpZyBmcm9tIHRoZSBMaW51eCBzb3VyY2VzLgotICAgICAgICAgICAgICAgICAg
ICBgKHJlbmFtZS1maWxlIChzdHJpbmctYXBwZW5kIGNvbmZpZ3MgLGRlZmNvbmZpZykKKyAgICAg
ICAgICAgICAgICAgICAgJH4ocmVuYW1lLWZpbGUgKHN0cmluZy1hcHBlbmQgY29uZmlncyAkI2Rl
ZmNvbmZpZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWl4X2RlZmNvbmZp
ZykpCiAgICAgICAgICAgICAgICAgICAgKGVsc2UKICAgICAgICAgICAgICAgICAgICAgOzsgQ29w
eSB0aGUgZGVmY29uZmlnIGlucHV0IHRvIHRoZSBwcm9wZXIgbG9jYXRpb24uCiAgICAgICAgICAg
ICAgICAgICAgICcoY29weS1maWxlIChhc3NvYy1yZWYgaW5wdXRzICJndWl4X2RlZmNvbmZpZyIp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aXhfZGVmY29uZmlnKSkpCi0gICAg
ICAgICAgICAgICAgIChtb2RpZnktZGVmY29uZmlnIGd1aXhfZGVmY29uZmlnICcsY29uZmlncykK
LSAgICAgICAgICAgICAgICAgLEAoaWYgZXh0cmEtdmVyc2lvbgotICAgICAgICAgICAgICAgICAg
ICAgICBgKChzZXRlbnYgIkVYVFJBVkVSU0lPTiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICwoc3RyaW5nLWFwcGVuZCAiLSIgZXh0cmEtdmVyc2lvbikpKQorICAgICAgICAgICAg
ICAgICAobW9kaWZ5LWRlZmNvbmZpZyBndWl4X2RlZmNvbmZpZyAnJCNjb25maWdzKQorICAgICAg
ICAgICAgICAgICAkI0AoaWYgZXh0cmEtdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAk
figoc2V0ZW52ICJFWFRSQVZFUlNJT04iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAkIyhzdHJpbmctYXBwZW5kICItIiBleHRyYS12ZXJzaW9uKSkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICcoKSkKLSAgICAgICAgICAgICAgICAgKGludm9rZSAibWFrZSIgImd1aXhfZGVmY29u
ZmlnIikpCi0gICAgICAgICAgICAgICAjdCkpKSkpKQorICAgICAgICAgICAgICAgICAoaW52b2tl
ICJtYWtlIiAiZ3VpeF9kZWZjb25maWciKSkpKSkpKSkKICAgICAobmF0aXZlLWlucHV0cwogICAg
ICAoYXBwZW5kIChpZiAob3IgKG5vdCBkZWZjb25maWcpCiAgICAgICAgICAgICAgICAgICAgICAo
c3RyaW5nPyBkZWZjb25maWcpKQotLSAKMi4zNC4wCgo=

--b1_lqwD3h2NYjWqSWydj4GOAJxfgcU5R8P59rUfL3LGLQ--





Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 14 Apr 2022 08:32:10 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 14 04:32:10 2022
Received: from localhost ([127.0.0.1]:55089 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1neute-0000oI-Bo
	for submit <at> debbugs.gnu.org; Thu, 14 Apr 2022 04:32:10 -0400
Received: from michel.telenet-ops.be ([195.130.137.88]:47178)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <maximedevos@HIDDEN>) id 1neutc-0000mE-L4
 for 48314 <at> debbugs.gnu.org; Thu, 14 Apr 2022 04:32:09 -0400
Received: from ptr-bvsjgyhxw7psv60dyze.18120a2.ip6.access.telenet.be
 ([IPv6:2a02:1811:8c09:9d00:3c5f:2eff:feb0:ba5a])
 by michel.telenet-ops.be with bizsmtp
 id JYY62700L4UW6Th06YY7Ya; Thu, 14 Apr 2022 10:32:07 +0200
Message-ID: <b661d9b6c7b44262285f544110b335ef02e6a402.camel@HIDDEN>
Subject: Re: [bug#48314] [PATCH v3] Install guix system on Raspberry Pi
From: Maxime Devos <maximedevos@HIDDEN>
To: phodina <phodina@HIDDEN>, "48314 <at> debbugs.gnu.org"
 <48314 <at> debbugs.gnu.org>
Date: Thu, 14 Apr 2022 10:32:06 +0200
In-Reply-To: <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
References: <19E4796A-B0DB-444F-8773-2E8D3EF6132D@HIDDEN>
 <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
Content-Type: multipart/signed; micalg="pgp-sha512";
 protocol="application/pgp-signature"; boundary="=-bzhzAXOUBbHLtdGdziL0"
User-Agent: Evolution 3.38.3-1 
MIME-Version: 1.0
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telenet.be; s=r22;
 t=1649925127; bh=rYYEo0vJpfJELGe2On8MCGcqiWJ4dre/MnvItKIkPxw=;
 h=Subject:From:To:Cc:Date:In-Reply-To:References;
 b=Q8AzdTRXXzneN37LN+IWoOKJtCIPSfSMDhaGMzQjvwCzuRWu8HLe2ia7SZGzsjywU
 hv9IOBREuRWhi01HI/k/RYUUeCvIy+JGtO5dIRRSKrPmkbIJzldgJQn3rzbymJqhlr
 PErdI2UKInC5sbvGNkThW/MXPMbJomTJPzRDmCho2oU2QtCHe9RYWuwwP4rIMAMBI2
 1HUWCmetOoOlmM3tYQwS/PuTOSv4m+pkN6u/fzPKHOAFgJW0UXCcZ9n0Z6DXpk2L56
 8SBpUdBaIQy7yulhrQVFr0nH+rBqVUxbtDzXIf6fprc7+tMcWZ1sPefRrjZdv/aiFR
 hoFTQ0drwY+1w==
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Stefan <stefan-guix@HIDDEN>,
 Vagrant Cascadian <vagrant@HIDDEN>,
 Ludovic =?ISO-8859-1?Q?Court=E8s?= <ludo@HIDDEN>,
 "dannym@HIDDEN" <dannym@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)


--=-bzhzAXOUBbHLtdGdziL0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

phodina via Guix-patches via schreef op do 14-04-2022 om 07:38 [+0000]:
> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 `(modify-phases ,phases
> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (replace 'c=
onfigure

To get rid of the #< error, replace this by

  #~(modify-phases #$phases [...])

(and replace the , by #$ etc).

Greetings,
Maxime.

--=-bzhzAXOUBbHLtdGdziL0
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part
Content-Transfer-Encoding: 7bit

-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYlfcBhccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7i0LAQDHNIkMs5ghMgBdkexsD667Vw2d
EAfoulacRDM/f9sdlAD9EPPBL/frt5P44zoPs+9vNLyVvWbhrxupPbxRwvUldwM=
=h5dT
-----END PGP SIGNATURE-----

--=-bzhzAXOUBbHLtdGdziL0--





Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 14 Apr 2022 08:18:11 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 14 04:18:11 2022
Received: from localhost ([127.0.0.1]:55036 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1neug7-0006vT-5L
	for submit <at> debbugs.gnu.org; Thu, 14 Apr 2022 04:18:11 -0400
Received: from mail-40131.protonmail.ch ([185.70.40.131]:63040)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <phodina@HIDDEN>) id 1neug5-0006vE-RW
 for 48314 <at> debbugs.gnu.org; Thu, 14 Apr 2022 04:18:10 -0400
Date: Thu, 14 Apr 2022 08:17:53 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;
 s=protonmail; t=1649924283;
 bh=KIM7DLCYRKU47MsuwTOO6CSKHUMmG/gW1Qm/jBxoWxk=;
 h=Date:To:From:Cc:Reply-To:Subject:Message-ID:In-Reply-To:
 References:From:To:Cc:Date:Subject:Reply-To:Feedback-ID:
 Message-ID;
 b=VxXj9dNBHGZ6omy3ZyjNg7dTdOlnnrr6fyvxhVrXAeXICbBXIGjLM9Iguh8tiYI3c
 ZBgCKy9vkDzenYszOJfnxmRBJe8r7loQksOrMEkvsdh6JNlVuAS+iDorTpVOyZXiSd
 mDxSbPmsVwuMLgvH4k9Q09v65Qo5JqzylkPg4pArhANSaV0dpx/IfRiaq2y04ynh9U
 lZRjgd+wCg8fhWJ9R08F24jmbG1LO2f7XUj0+AqP68vBcKzwNOA+AClOah7zP4eBvp
 4PRVM6YKZM9hU0SHB3BDnIRzJIigBKnC7cp7jdBZ4m/p/wgKGHmr9n36sae94HvrU5
 xeKKr9Y8LV9TA==
To: "48314 <at> debbugs.gnu.org" <48314 <at> debbugs.gnu.org>
From: phodina <phodina@HIDDEN>
Subject: [PATCH v3] Install guix system on Raspberry Pi
Message-ID: <kzaSyP3anBK_UepIv1m2HCrjWqwFsOMMpqDr6IQM78N1aXE830WieMzsKig_2_uAv62__6979fCV1u4sP89z_QemjSZcti_ObfUXtYh1i6I=@protonmail.com>
In-Reply-To: <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
References: <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
MIME-Version: 1.0
Content-Type: multipart/alternative;
 boundary="b1_izIs3i3M8PcznMFgCSXgtAAjfRITiNIh36d03m1X8A"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Mathieu Othacehe <othacehe@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Reply-To: phodina <phodina@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

This is a multi-part message in MIME format.

--b1_izIs3i3M8PcznMFgCSXgtAAjfRITiNIh36d03m1X8A
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64

VGhlIGlzc3VlIGFib3V0IGd1aWxlLWZpYmVycyBoYXMgYWxyZWFkeSBiZWVuIHJlcG9ydGVkIGJ5
IE1hdGhpZXUgaW4gaHR0cHM6Ly9pc3N1ZXMuZ3VpeC5nbnUub3JnLzU0NzkzLg==

--b1_izIs3i3M8PcznMFgCSXgtAAjfRITiNIh36d03m1X8A
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: base64

PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IGFyaWFsOyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiBy
Z2IoMzQsIDM0LCAzNCk7Ij5UaGUgaXNzdWUgYWJvdXQgZ3VpbGUtZmliZXJzIGhhcyBhbHJlYWR5
IGJlZW4gcmVwb3J0ZWQgYnkgPHNwYW4+TWF0aGlldTwvc3Bhbj4gaW4gPHNwYW4+PGEgdGFyZ2V0
PSJfYmxhbmsiIHJlbD0ibm9yZWZlcnJlciBub2ZvbGxvdyBub29wZW5lciIgaHJlZj0iaHR0cHM6
Ly9pc3N1ZXMuZ3VpeC5nbnUub3JnLzU0NzkzIj5odHRwczovL2lzc3Vlcy5ndWl4LmdudS5vcmcv
NTQ3OTM8L2E+PC9zcGFuPi48YnI+PC9kaXY+


--b1_izIs3i3M8PcznMFgCSXgtAAjfRITiNIh36d03m1X8A--





Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 14 Apr 2022 07:38:39 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 14 03:38:39 2022
Received: from localhost ([127.0.0.1]:54925 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1neu3r-0003bT-3k
	for submit <at> debbugs.gnu.org; Thu, 14 Apr 2022 03:38:39 -0400
Received: from mail-40131.protonmail.ch ([185.70.40.131]:45775)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <phodina@HIDDEN>) id 1neu3p-0003b2-Qo
 for 48314 <at> debbugs.gnu.org; Thu, 14 Apr 2022 03:38:38 -0400
Date: Thu, 14 Apr 2022 07:38:16 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;
 s=protonmail; t=1649921907;
 bh=qvhYsY7XyBJe6gBD2UNvsXfB6eU7kV1bcx2pjv5W+zs=;
 h=Date:To:From:Cc:Reply-To:Subject:Message-ID:From:To:Cc:Date:
 Subject:Reply-To:Feedback-ID:Message-ID;
 b=a2rLcdLw7DM7DAzFbvyT1EePO+0VhVljtUxWC901T4QJZjNJgYZ47gmXWXAq4rv6O
 5FvDRTR7ZMtdxo101+1Hp81AGnhyka0EvGNXgPoXbHKndM3OedqDhPVjypqQpU1tVI
 U98K60+lLf0lsdKIBMS/Q1tGDOdH5loAOtw+u6tJvz+BQEoXKYnkSVOyagqEuqkV5x
 ZPhVQOshi/v72fMta25u/zv+BZCN0oFJ/fTUlY7bZG4r+1MnqDG95ivQKXnNvEOziM
 7wpdKLZ+eKvIRXu78IllaICt7KV4KW3nTsaWWNYn//jXP7KfmsavYR/857BUlQPJHt
 Fe+ZazxHZCd4g==
To: "48314 <at> debbugs.gnu.org" <48314 <at> debbugs.gnu.org>
From: phodina <phodina@HIDDEN>
Subject: [PATCH v3] Install guix system on Raspberry Pi
Message-ID: <1JV7YdNsB7LB0ij9pMN5ktIsdpU8g98Lpu0yOrl_r6wFvRjqRJ5XqOktugKlia2rSeyNVEwY0b8VJrFJr1TsWgOIo-JW6EmTpj6Bz4dNzxQ=@protonmail.com>
MIME-Version: 1.0
Content-Type: multipart/mixed;
 boundary="b1_oHy08PWmPsOPRRPhK59EbeSBynAeRsUjblVRNhusU"
X-Debbugs-Envelope-To: 48314
Cc: Stefan <stefan-guix@HIDDEN>,
 Vagrant Cascadian <vagrant@HIDDEN>,
 =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>,
 "dannym@HIDDEN" <dannym@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Reply-To: phodina <phodina@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>

This is a multi-part message in MIME format.

--b1_oHy08PWmPsOPRRPhK59EbeSBynAeRsUjblVRNhusU
Content-Type: multipart/alternative;
 boundary="b2_oHy08PWmPsOPRRPhK59EbeSBynAeRsUjblVRNhusU"

--b2_oHy08PWmPsOPRRPhK59EbeSBynAeRsUjblVRNhusU
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64

SGksCgpJJ3ZlIHJlYmFzZWQgdGhlIHBhdGNoZXMgdG8gbGF0ZXN0IG1hc3RlciBhbmQgZml4ZWQg
c29tZSBjb25mbGljdHMuCgpIb3dldmVyLCBJJ20gdW5hYmxlIHRvIGJ1aWxkIHRoZSBzeXN0ZW0g
b24gbXkgUGluZWJvb2sgKGFhcmNoNjQgZm9yIG5hdGl2ZSBidWlsZCkuCgouL3ByZS1pbnN0LWVu
diBndWl4IHN5c3RlbSBidWlsZCBnbnUvc3lzdGVtL2V4YW1wbGVzL3Jhc3BiZXJyeS1waS02NC50
bXBsCnN1YnN0aXR1dGU6IHVwZGF0aW5nIHN1YnN0aXR1dGVzIGZyb20gJ2h0dHBzOi8vY2kuZ3Vp
eC5nbnUub3JnJy4uLnN1YnN0aXR1dGU6IHVwZGF0aW5nIHN1YnN0aXR1dGVzIGZyb20gJ2h0dHBz
Oi8vY2kuZ3VpeC5nbnUub3JnJy4uLiAxMDAuMCUKc3Vic3RpdHV0ZTogdXBkYXRpbmcgc3Vic3Rp
dHV0ZXMgZnJvbSAnaHR0cHM6Ly9ib3JkZWF1eC5ndWl4LmdudS5vc3Vic3RpdHV0ZTogdXBkYXRp
bmcgc3Vic3RpdHV0ZXMgZnJvbSAnaHR0cHM6Ly9ib3JkZWF1eC5ndWl4LmdudS5vcmcnLi4uIDEw
MC4wJQpUaGUgZm9sbG93aW5nIGRlcml2YXRpb24gd2lsbCBiZSBidWlsdDoKL2dudS9zdG9yZS9w
NTBpNGxrOGFqY2dyZ3o4bTExdnFpZnZoNGdnaW4ydy1saW51eC1saWJyZS1hcm02NC1nZW5lcmlj
LTUuMTYuMTkuZHJ2CmJ1aWxkaW5nIC9nbnUvc3RvcmUvcDUwaTRsazhhamNncmd6OG0xMXZxaWZ2
aDRnZ2luMnctbGludXgtbGlicmUtYXJtNjQtZ2VuZXJpYy01LjE2LjE5LmRydi4uLgppY2UtOS9y
ZWFkLnNjbToxMjY6NDogSW4gcHJvY2VkdXJlIHJlYWQtZXhwcio6Ci9nbnUvc3RvcmUvOWd4Z2hh
NnIwYWI1ZzQ0bW5iM3JneWprcmhjNzA5cnEtbGludXgtbGlicmUtYXJtNjQtZ2VuZXJpYy01LjE2
LjE5LWJ1aWxkZXI6MTozMjkwOiBVbmtub3duICMgb2JqZWN0OiAiIzwiCmJ1aWxkZXIgZm9yIGAv
Z251L3N0b3JlL3A1MGk0bGs4YWpjZ3JnejhtMTF2cWlmdmg0Z2dpbjJ3LWxpbnV4LWxpYnJlLWFy
bTY0LWdlbmVyaWMtNS4xNi4xOS5kcnYnIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAxCmJ1aWxkIG9m
IC9nbnUvc3RvcmUvcDUwaTRsazhhamNncmd6OG0xMXZxaWZ2aDRnZ2luMnctbGludXgtbGlicmUt
YXJtNjQtZ2VuZXJpYy01LjE2LjE5LmRydiBmYWlsZWQKVmlldyBidWlsZCBsb2cgYXQgJy92YXIv
bG9nL2d1aXgvZHJ2cy9wNS8waTRsazhhamNncmd6OG0xMXZxaWZ2aDRnZ2luMnctbGludXgtbGli
cmUtYXJtNjQtZ2VuZXJpYy01LjE2LjE5LmRydi5neicuZ3VpeCBzeXN0ZW06IGVycm9yOiBidWls
ZCBvZiBgL2dudS9zdG9yZS9wNTBpNGxrOGFqY2dyZ3o4bTExdnFpZnZoNGdnaW4ydy1saW51eC1s
aWJyZS1hcm02NC1nZW5lcmljLTUuMTYuMTkuZHJ2JyBmYWlsZWQKClVuZm9ydHVuYXRlbHkgdGhl
IGJ1aWxkIGxvZyBpcyBub3QgaGVscGZ1bCB1bmNvdmVyaW5nIHRoZSBjYXVzZSAoYXQgbGVhc3Qg
dG8gbWUpLgoKSSd2ZSBhbHNvIGF0dGVtcHRlZCB0byBjcm9zcy1jb21waWxlIHRoZSBzeXN0ZW0g
KGZyb20geDg2XzY0KSBidXQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBhY2thZ2UgdGhhdCBjYW4n
dCBiZSBidWlsZCAtIGd1aWxlLWZpYmVycy0xLjEuMC4gSSd2ZSBhdHRhY2hlZCB0aGUgYnVpbGQg
bG9nIGFzIHdlbGwuCgpLaW5kIHJlZ2FyZHMsClBldHI=

--b2_oHy08PWmPsOPRRPhK59EbeSBynAeRsUjblVRNhusU
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: base64

PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IGFyaWFsOyBmb250LXNpemU6IDE0cHg7Ij5IaSw8YnI+
PGJyPkkndmUgcmViYXNlZCB0aGUgcGF0Y2hlcyB0byBsYXRlc3QgbWFzdGVyIGFuZCBmaXhlZCBz
b21lIGNvbmZsaWN0cy48YnI+PGJyPkhvd2V2ZXIsIEknbSB1bmFibGUgdG8gYnVpbGQgdGhlIHN5
c3RlbSBvbiBteSBQaW5lYm9vayAoYWFyY2g2NCBmb3IgbmF0aXZlIGJ1aWxkKS48YnI+PGJyPjxz
cGFuPi4vcHJlLWluc3QtZW52IGd1aXggc3lzdGVtIGJ1aWxkIGdudS9zeXN0ZW0vZXhhbXBsZXMv
cmFzcGJlcnJ5LXBpLTY0LnRtcGw8L3NwYW4+PGRpdj48c3Bhbj5zdWJzdGl0dXRlOiB1cGRhdGlu
ZyBzdWJzdGl0dXRlcyBmcm9tICc8YSB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub3JlZmVycmVyIG5v
Zm9sbG93IG5vb3BlbmVyIiBocmVmPSJodHRwczovL2NpLmd1aXguZ251Lm9yZyI+aHR0cHM6Ly9j
aS5ndWl4LmdudS5vcmc8L2E+Jy4uLnN1YnN0aXR1dGU6IHVwZGF0aW5nIHN1YnN0aXR1dGVzIGZy
b20gJzxhIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vcmVmZXJyZXIgbm9mb2xsb3cgbm9vcGVuZXIi
IGhyZWY9Imh0dHBzOi8vY2kuZ3VpeC5nbnUub3JnIj5odHRwczovL2NpLmd1aXguZ251Lm9yZzwv
YT4nLi4uIDEwMC4wJTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPnN1YnN0aXR1dGU6IHVwZGF0aW5n
IHN1YnN0aXR1dGVzIGZyb20gJzxhIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vcmVmZXJyZXIgbm9m
b2xsb3cgbm9vcGVuZXIiIGhyZWY9Imh0dHBzOi8vYm9yZGVhdXguZ3VpeC5nbnUub3N1YnN0aXR1
dGUiPmh0dHBzOi8vYm9yZGVhdXguZ3VpeC5nbnUub3N1YnN0aXR1dGU8L2E+OiB1cGRhdGluZyBz
dWJzdGl0dXRlcyBmcm9tICc8YSB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub3JlZmVycmVyIG5vZm9s
bG93IG5vb3BlbmVyIiBocmVmPSJodHRwczovL2JvcmRlYXV4Lmd1aXguZ251Lm9yZyI+aHR0cHM6
Ly9ib3JkZWF1eC5ndWl4LmdudS5vcmc8L2E+Jy4uLiAxMDAuMCU8L3NwYW4+PC9kaXY+PGRpdj48
c3Bhbj5UaGUgZm9sbG93aW5nIGRlcml2YXRpb24gd2lsbCBiZSBidWlsdDo8L3NwYW4+PC9kaXY+
PGRpdj48c3Bhbj4mbmJzcDsgL2dudS9zdG9yZS9wNTBpNGxrOGFqY2dyZ3o4bTExdnFpZnZoNGdn
aW4ydy1saW51eC1saWJyZS1hcm02NC1nZW5lcmljLTUuMTYuMTkuZHJ2PC9zcGFuPjwvZGl2Pjxk
aXY+PHNwYW4+YnVpbGRpbmcgL2dudS9zdG9yZS9wNTBpNGxrOGFqY2dyZ3o4bTExdnFpZnZoNGdn
aW4ydy1saW51eC1saWJyZS1hcm02NC1nZW5lcmljLTUuMTYuMTkuZHJ2Li4uPC9zcGFuPjwvZGl2
PjxkaXY+PHNwYW4+aWNlLTkvcmVhZC5zY206MTI2OjQ6IEluIHByb2NlZHVyZSByZWFkLWV4cHIq
Ojwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPi9nbnUvc3RvcmUvOWd4Z2hhNnIwYWI1ZzQ0bW5iM3Jn
eWprcmhjNzA5cnEtbGludXgtbGlicmUtYXJtNjQtZ2VuZXJpYy01LjE2LjE5LWJ1aWxkZXI6MToz
MjkwOiBVbmtub3duICMgb2JqZWN0OiAiIyZsdDsiPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+YnVp
bGRlciBmb3IgYC9nbnUvc3RvcmUvcDUwaTRsazhhamNncmd6OG0xMXZxaWZ2aDRnZ2luMnctbGlu
dXgtbGlicmUtYXJtNjQtZ2VuZXJpYy01LjE2LjE5LmRydicgZmFpbGVkIHdpdGggZXhpdCBjb2Rl
IDE8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj5idWlsZCBvZiAvZ251L3N0b3JlL3A1MGk0bGs4YWpj
Z3JnejhtMTF2cWlmdmg0Z2dpbjJ3LWxpbnV4LWxpYnJlLWFybTY0LWdlbmVyaWMtNS4xNi4xOS5k
cnYgZmFpbGVkPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+VmlldyBidWlsZCBsb2cgYXQgJy92YXIv
bG9nL2d1aXgvZHJ2cy9wNS8waTRsazhhamNncmd6OG0xMXZxaWZ2aDRnZ2luMnctbGludXgtbGli
cmUtYXJtNjQtZ2VuZXJpYy01LjE2LjE5LmRydi5neicuPC9zcGFuPjwvZGl2PjxzcGFuPmd1aXgg
c3lzdGVtOiBlcnJvcjogYnVpbGQgb2YgYC9nbnUvc3RvcmUvcDUwaTRsazhhamNncmd6OG0xMXZx
aWZ2aDRnZ2luMnctbGludXgtbGlicmUtYXJtNjQtZ2VuZXJpYy01LjE2LjE5LmRydicgZmFpbGVk
PGJyPjxicj5VbmZvcnR1bmF0ZWx5IHRoZSBidWlsZCBsb2cgaXMgbm90IGhlbHBmdWwgdW5jb3Zl
cmluZyB0aGUgY2F1c2UgKGF0IGxlYXN0IHRvIG1lKS4gPGJyPjxicj5JJ3ZlIGFsc28gYXR0ZW1w
dGVkIHRvIGNyb3NzLWNvbXBpbGUgdGhlIHN5c3RlbSAoZnJvbSB4ODZfNjQpIGJ1dCB0aGVyZSBp
cyBhdCBsZWFzdCBvbmUgcGFja2FnZSB0aGF0IGNhbid0IGJlIGJ1aWxkIC0gPHNwYW4+Z3VpbGUt
ZmliZXJzLTEuMS4wPC9zcGFuPi4gSSd2ZSBhdHRhY2hlZCB0aGUgYnVpbGQgbG9nIGFzIHdlbGwu
PGJyPjxicj48YnI+S2luZCByZWdhcmRzLDxicj5QZXRyPC9zcGFuPjxicj48YnI+PGJyPjwvZGl2
Pg==


--b2_oHy08PWmPsOPRRPhK59EbeSBynAeRsUjblVRNhusU--

--b1_oHy08PWmPsOPRRPhK59EbeSBynAeRsUjblVRNhusU
Content-Type: text/x-patch; name=v3-0006-gnu-raspberry-pi-Add-helpers-for-config.txt-file-.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=v3-0006-gnu-raspberry-pi-Add-helpers-for-config.txt-file-.patch

RnJvbSAxM2MzY2Y1ZjFkZjkyM2VkZGNmNDhiNjlmMGMyNmM3Y2ZhMmU2ZDRkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gPHN0ZWZhbi1ndWl4QHZvZGFmb25lbWFpbC5kZT4K
RGF0ZTogV2VkLCAxMyBBcHIgMjAyMiAyMToxOTozMiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjMg
Ni84XSBnbnU6IHJhc3BiZXJyeS1waTogQWRkIGhlbHBlcnMgZm9yIGNvbmZpZy50eHQgZmlsZQog
Z2VuZXJhdGlvbi4KCiogZ251L3BhY2thZ2VzL3Jhc3BiZXJyeS1waS5zY20gKHJhc3BpLWNvbmZp
Zy1maWxlLCByYXNwaS1jdXN0b20tdHh0KToKTmV3IGZ1bmN0aW9ucy4KKCVyYXNwaS1jb25maWct
dHh0LCAlcmFzcGktYmNtMjctZHRiLXR4dCwgJXJhc3BpLWJjbTI4LWR0Yi10eHQKJXJhc3BpLXUt
Ym9vdC1ib290bG9hZGVyLXR4dCk6IE5ldyB2YXJpYWJsZXMuCgpkaWZmIC0tZ2l0IGEvZ251L3Bh
Y2thZ2VzL3Jhc3BiZXJyeS1waS5zY20gYi9nbnUvcGFja2FnZXMvcmFzcGJlcnJ5LXBpLnNjbQpp
bmRleCBhMmFiMzAwNTMxLi4wNzA3NTE2ZjcyIDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvcmFz
cGJlcnJ5LXBpLnNjbQorKysgYi9nbnUvcGFja2FnZXMvcmFzcGJlcnJ5LXBpLnNjbQpAQCAtMjM4
LDYgKzIzOCw1OSBAQCAoZGVmaW5lLXB1YmxpYyByYXNwaS1hcm02NC1jaGFpbmxvYWRlcgogICAg
ICAgICAgICAgICAgI3QpKSkpKSkpKQogICAgIChzdXBwb3J0ZWQtc3lzdGVtcyAnKCJhYXJjaDY0
LWxpbnV4IikpKSkKIAorKGRlZmluZS1wdWJsaWMgKHJhc3BpLWNvbmZpZy1maWxlIG5hbWUgY29u
dGVudCkKKyAgIk1ha2UgYSBjb25maWd1cmF0aW9uIGZpbGUgbGlrZSBjb25maWcudHh0IGZvciB0
aGUgUmFzcGJlcnJ5IFBpIGZpcm13YXJlLgorQ09OVEVOVCBjYW4gYmUgYSBsaXN0IG9mIHN0cmlu
Z3MsIHdoaWNoIGFyZSBjb25jYXRlbmF0ZWQgd2l0aCBhIG5ld2xpbmUKK2NoYXJhY3Rlci4gIEFs
dGVybmF0aXZlbHkgQ09OVEVOVCBjYW4gYmUgYSBzdHJpbmcgd2l0aCB0aGUgZnVsbCBmaWxlIGNv
bnRlbnQuIgorICAocGxhaW4tZmlsZQorICAgbmFtZQorICAgKGlmIChsaXN0PyBjb250ZW50KQor
ICAgICAgIChzdHJpbmctam9pbiBjb250ZW50ICJcbiIgJ3N1ZmZpeCkKKyAgICAgICBjb250ZW50
KSkpCisKKyhkZWZpbmUtcHVibGljICVyYXNwaS1jb25maWctdHh0CisgIDs7IEEgY29uZmlnLnR4
dCBmaWxlIHRvIHN0YXJ0IHRoZSBBUk0gY29yZXMgdXAgaW4gNjQtYml0IG1vZGUgaWYgbmVjZXNz
YXJ5CisgIDs7IGFuZCB0byBpbmNsdWRlIGEgZHRiLnR4dCwgYm9vdGxvYWRlci50eHQsIGFuZCBh
IGN1c3RvbS50eHQsIGVhY2ggd2l0aAorICA7OyBzZXBhcmF0ZWQgY29uZmlndXJhdGlvbnMgZm9y
IHRoZSBSYXNwYmVycnkgUGkgZmlybXdhcmUuCisgIChyYXNwaS1jb25maWctZmlsZQorICAgImNv
bmZpZy50eHQiCisgICBgKCIjIFNlZSBodHRwczovL3d3dy5yYXNwYmVycnlwaS5vcmcvZG9jdW1l
bnRhdGlvbi9jb25maWd1cmF0aW9uL2NvbmZpZy10eHQvUkVBRE1FLm1kIGZvciBkZXRhaWxzLiIK
KyAgICAgIiIKKyAgICAgLChzdHJpbmctYXBwZW5kICJhcm1fNjRiaXQ9IiAoaWYgKHRhcmdldC1h
YXJjaDY0PykgIjEiICIwIikpCisgICAgICJpbmNsdWRlIGR0Yi50eHQiCisgICAgICJpbmNsdWRl
IGJvb3Rsb2FkZXIudHh0IgorICAgICAiaW5jbHVkZSBjdXN0b20udHh0IikpKQorCisoZGVmaW5l
LXB1YmxpYyAlcmFzcGktYmNtMjctZHRiLXR4dAorICA7OyBBIGR0Yi50eHQgZmlsZSB0byBiZSBp
bmNsdWRlZCBieSB0aGUgY29uZmlnLnR4dCB0byBlbnN1cmUgdGhhdCB0aGUKKyAgOzsgZG93bnN0
cmVhbSBkZXZpY2UgdHJlZSBmaWxlcyBiY20yNyouZHRiIHdpbGwgYmUgdXNlZC4KKyAgKHJhc3Bp
LWNvbmZpZy1maWxlCisgICAiZHRiLnR4dCIKKyAgICJ1cHN0cmVhbV9rZXJuZWw9MCIpKQorCiso
ZGVmaW5lLXB1YmxpYyAlcmFzcGktYmNtMjgtZHRiLXR4dAorICA7OyBBIGR0Yi50eHQgZmlsZSB0
byBiZSBpbmNsdWRlZCBieSB0aGUgY29uZmlnLnR4dCB0byBlbnN1cmUgdGhhdCB0aGUKKyAgOzsg
dXBzdHJlYW0gZGV2aWNlIHRyZWUgZmlsZXMgYmNtMjgqLmR0YiB3aWxsIGJlIHVzZWQuCisgIDs7
IFRoaXMgYWxzbyBpbXBsaWVzIHRoZSB1c2Ugb2YgdGhlIGR0b3ZlcmxheT11cHN0cmVhbS4KKyAg
KHJhc3BpLWNvbmZpZy1maWxlCisgICAiZHRiLnR4dCIKKyAgICJ1cHN0cmVhbV9rZXJuZWw9MSIp
KQorCisoZGVmaW5lLXB1YmxpYyAlcmFzcGktdS1ib290LWJvb3Rsb2FkZXItdHh0CisgIDs7IEEg
Ym9vdGxvYWRlci50eHQgZmlsZSB0byBiZSBpbmNsdWRlZCBieSB0aGUgY29uZmlnLnR4dCB0byBs
b2FkIHRoZQorICA7OyBVLUJvb3QgYm9vdGxvYWRlci4KKyAgKHJhc3BpLWNvbmZpZy1maWxlCisg
ICAiYm9vdGxvYWRlci50eHQiCisgICAnKCJkdG92ZXJsYXk9dXBzdHJlYW0iCisgICAgICJlbmFi
bGVfdWFydD0xIgorICAgICAia2VybmVsPXUtYm9vdC5iaW4iKSkpCisKKyhkZWZpbmUtcHVibGlj
IChyYXNwaS1jdXN0b20tdHh0IGNvbnRlbnQpCisgICJNYWtlIGEgY3VzdG9tLnR4dCBmaWxlIGZv
ciB0aGUgUmFzcGJlcnJ5IFBpIGZpcm13YXJlLgorQ09OVEVOVCBjYW4gYmUgYSBsaXN0IG9mIHN0
cmluZ3MsIHdoaWNoIGFyZSBjb25jYXRlbmF0ZWQgd2l0aCBhIG5ld2xpbmUKK2NoYXJhY3Rlci4g
IEFsdGVybmF0aXZlbHkgQ09OVEVOVCBjYW4gYmUgYSBzdHJpbmcgd2l0aCB0aGUgZnVsbCBmaWxl
IGNvbnRlbnQuIgorICAocmFzcGktY29uZmlnLWZpbGUgImN1c3RvbS50eHQiIGNvbnRlbnQpKQor
CiAoZGVmaW5lIChtYWtlLXJhc3BpLWRlZmNvbmZpZyBhcmNoIGRlZmNvbmZpZyBzaGEyNTYtYXMt
YmFzZTMyKQogICAiTWFrZSBmb3IgdGhlIGFyY2hpdGVjdHVyZSBBUkNIIGEgZmlsZS1saWtlIG9i
amVjdCBmcm9tIHRoZSBERUZDT05GSUcgZmlsZQogd2l0aCB0aGUgaGFzaCBTSEEyNTYtQVMtQkFT
RTMyLiAgVGhpcyBvYmplY3QgY2FuIGJlIHVzZWQgYXMgdGhlICM6ZGVmY29uZmlnCi0tIAoyLjM1
LjEKCg==

--b1_oHy08PWmPsOPRRPhK59EbeSBynAeRsUjblVRNhusU
Content-Type: text/x-patch; name=v3-0001-gnu-bootloader-Rework-chaining-add-grub-efi-netbo.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=v3-0001-gnu-bootloader-Rework-chaining-add-grub-efi-netbo.patch

RnJvbSA3YjlhYTRhNTc0MDRkMzlmMmFlZDk0MGFlZjIwMjY2NjdiZmNhMzRlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gPHN0ZWZhbi1ndWl4QHZvZGFmb25lbWFpbC5kZT4K
RGF0ZTogV2VkLCAxMyBBcHIgMjAyMiAyMTowMjowNyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjMg
MS84XSBnbnU6IGJvb3Rsb2FkZXI6IFJld29yayBjaGFpbmluZywgYWRkCiBncnViLWVmaS1uZXRi
b290LXJlbW92YWJsZS1ib290bG9hZGVyLgpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6
IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJp
dAoKKiBkb2MvZ3VpeC50ZXhpIChCb290bG9hZGVyIENvbmZpZ3VyYXRpb24pOiBEZXNjcmliZSB0
aGUgbmV3CuKAmGdydWItZWZpLW5ldGJvb3QtcmVtb3ZhYmxlLWJvb3Rsb2FkZXLigJkuICBNZW50
aW9uIHVzZWQgc3ViLWRpcmVjdG9yaWVzIGFuZAp0aGF0IHRoZSBVRUZJIEJvb3QgTWFuYWdlciBp
cyBub3QgbW9kaWZpZWQuICBBZHZpY2UgdG8gZGlzYWJsZSB3cml0ZS1hY2Nlc3MKb3ZlciBURlRQ
LgoqIGdudS9ib290bG9hZGVyLnNjbSAoZWZpLWJvb3Rsb2FkZXItcHJvZmlsZSk6IEFsbG93IGEg
bGlzdCBvZiBwYWNrYWdlcyBhbmQKY29sbGVjdCBldmVyeXRoaW5nIGRpcmVjdGx5IGluIHRoZSBw
cm9maWxlLCBhdm9pZGluZyBhIHNlcGFyYXRlIGNvbGxlY3Rpb24KZGlyZWN0b3J5LiAgUmVuYW1l
ZCB0aGUgcHJvZmlsZSBmcm9tICJib290bG9hZGVyLXByb2ZpbGUiIHRvCiJlZmktYm9vdGxvYWRl
ci1wcm9maWxlIi4KW2Jvb3Rsb2FkZXItY29sbGVjdGlvbl06IFJlbmFtZWQgdG8g4oCmCltlZmkt
Ym9vdGxvYWRlci1wcm9maWxlLWhvb2tdOiDigKYgdGhpcyBhbmQgcmVtb3ZlZCB1bnVzZWQgbW9k
dWxlcyBhbmQgdGhlCmNyZWF0aW9uIG9mIHRoZSBub3cgdW5uZWVkZWQgY29sbGVjdGlvbiBkaXJl
Y3RvcnkuCihlZmktYm9vdGxvYWRlci1jaGFpbik6IEFkZGVkIHBhY2thZ2VzIGFuZCBkaXNrLWlt
YWdlLWluc3RhbGxlciBhcmd1bWVudHMuClJlbW92ZWQgaGFuZGxpbmcgb2YgdGhlIGNvbGxlY3Rp
b24gZGlyZWN0b3J5LCBub3cgb25seSBjYWxsaW5nIHRoZSBnaXZlbgppbnN0YWxsZXIgcHJvY2Vk
dXJlLgoqIGdudS9ib290bG9hZGVyL2dydWIuc2NtIChtYWtlLWdydWItZWZpLW5ldGJvb3QtaW5z
dGFsbGVyKTogTmV3IGhlbHBlci4KKG1ha2UtZ3J1Yi1jb25maWd1cmF0aW9uKTogTmV3IGhlbHBl
ciBiYXNlZCBvbiAoZ3J1Yi1jb25maWd1cmF0aW9uLWZpbGUpLgpBZGRpbmcgZ3J1YiBhcmd1bWVu
dCwgZml4ZWQgaW5kZW50YXRpb24sIHJlbW92ZW5kIGNvZGUgdG8gZ2V0IGdydWIuCihncnViLWNv
bmZpZ3VyYXRpb24tZmlsZSk6IE5vdyB1c2luZyAobWFrZS1ncnViLWNvbmZpZ3VyYXRpb24pLgoo
Z3J1Yi1lZmktY29uZmlndXJhdGlvbi1maWxlKTogTmV3IGZ1bmN0aW9uIHVzaW5nIChtYWtlLWdy
dWItY29uZmlndXJhdGlvbikuCkluc3RlYWQgb2YgZ2V0dGluZyB0aGUgZ3J1Yi1lZmkgcGFja2Fn
ZSBmcm9tIHRoZSBib290bG9hZGVyLWNvbmZpZ3VyYXRpb24KdGhpcyBmdW5jdGlvbiByZWZlcnMg
dG8gdGhlIGdydWItZWZpIHBhY2thZ2UgZGlyZWN0bHkuCihncnViLWNmZyk6IE5ldyB2YXJpYWJs
ZSB0byByZXBsYWNlICIvYm9vdC9ncnViL2dydWIuY2ZnIi4KKGluc3RhbGwtZ3J1Yi1lZmktbmV0
Ym9vdCk6IFJlbW92ZWQsIHRoZSBmdW5jdGlvbmFsaXR5IGdvdCBtb3ZlZC4KKG1ha2UtZ3J1Yi1l
ZmktbmV0Ym9vdC1pbnN0YWxsZXIpOiBOZXcgaGVscGVyIGZ1bmN0aW9uIHRvIHJldHVybiBhIGN1
c3RvbWl6ZWQKaW5zdGFsbGVyIGZvciBhIGNlcnRhaW4gZWZpLXN1Yi1kaXJlY3RvcnkuICBUaGUg
aW5zdGFsbGVyIGJhc2ljYWxseSBjb3BpZXMKYSBwcmUtaW5zdGFsbGVkIGVmaS1ib290bG9hZGVy
LXByb2ZpbGUsIGFuZCBhZGRzIG5lZWRlZCBzeW1saW5rcyBmb3IgYm9vdGluZwpvdmVyIG5ldHdv
cmssIG9yIOKAkyBvbiBhbiBFU1Ag4oCTIGFuIGludGVybWVkaWF0ZSBncnViLWNmZyB0byBsb2Fk
IHRoZSBmaW5hbApncnViLWNmZyBmaWxlLgooZ3J1Yi1ib290bG9hZGVyKTogTm93IHVzaW5nIHRo
ZSBncnViLWNmZyB2YXJpYWJsZS4KKGdydWItZWZpLWJvb3Rsb2FkZXIpOiBOb3cgdXNpbmcgdGhl
IGdydWItY2ZnIHZhcmlhYmxlLiAgUmVtb3ZlZCBpbmhlcml0YW5jZSwKZ2l2aW5nIGNvbXBsZXRl
IHNldCBvZiBmaWVsZHMuCihtYWtlLWdydWItZWZpLW5ldGJvb3QtYm9vdGxvYWRlcik6IE5ldyBo
ZWxwZXIgZnVuY3Rpb24uCihncnViLWVmaS1uZXRib290LWJvb3Rsb2FkZXIpOiBOb3cgdXNpbmcg
dGhlIGhlbHBlci4KKGdydWItZWZpLW5ldGJvb3QtcmVtb3ZhYmxlLWJvb3Rsb2FkZXIpOiBOZXcg
Ym9vdGxvYWRlciB1c2luZyB0aGUgaGVscGVyLgpJdCB1c2VzIHRoZSBlZmktc3ViLWRpcmVjdG9y
eSAiZWZpL2Jvb3QiIGZvciByZW1vdmFibGUgbWVkaWEuCiogZ251L3BhY2thZ2VzL2Jvb3Rsb2Fk
ZXJzLnNjbSAobWFrZS1ncnViLWVmaS1uZXRib290KTogTmV3IGZ1bmN0aW9uIHRvIHJldHVybgph
IGdydWItZWZpIHBhY2thZ2UgcHJlLWluc3RhbGxlZCB2aWEgZ3J1Yi1ta25ldGRpciwgY3VzdG9t
aXplZCBmb3IgYW4KZWZpLXN1Yi1kaXJlY3RvcnkgYW5kIGFibGUgdG8gYm9vdCB2aWEgbmV0d29y
ayBhbmQgbG9jYWwgc3RvcmFnZS4KClRoZSByZXdvcmsgYWxsb3dzIHRvIHVzZSBhbiAoZWZpLWJv
b3Rsb2FkZXItY2hhaW4pIGxpa2UgdGhpcywgd2hpY2ggaXMgYWJsZQp0byBib290IG92ZXIgbmV0
d29yayBvciBsb2NhbCBzdG9yYWdlLCBkZXBlbmRpbmcgb24gdGhlIHN5bWxpbmstc3VwcG9ydCBh
dAp0aGUgYm9vdGxvYWRlci10YXJnZXQ6Cgoob3BlcmF0aW5nLXN5c3RlbQogKGJvb3Rsb2FkZXIK
ICAgKGJvb3Rsb2FkZXItY29uZmlndXJhdGlvbgogICAgIChib290bG9hZGVyCiAgICAgICAoZWZp
LWJvb3Rsb2FkZXItY2hhaW4KICAgICAgICAgZ3J1Yi1lZmktbmV0Ym9vdC1yZW1vdmFibGUtYm9v
dGxvYWRlcgogICAgICAgICAjOnBhY2thZ2VzIChsaXN0IG15LWZpcm13YXJlLXBhY2thZ2UKICAg
ICAgICAgICAgICAgICAgICAgICAgICBteS11LWJvb3QtcGFja2FnZSkKICAgICAgICAgIzpmaWxl
cyAobGlzdCAocGxhaW4tZmlsZSAiY29uZmlnLnR4dCIKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAia2VybmVsPXUtYm9vdC5iaW4iKSkKICAgICAgICAgIzpob29rcyBteS1zcGVj
aWFsLWJvb3Rsb2FkZXItcHJvZmlsZS1tYW5pcHVsYXRvcikpCiAgICAgKHRhcmdldCAiL2Jvb3Rp
L2VmaSIpCiAgICAg4oCmKSkKIOKApikKKQoKZGlmZiAtLWdpdCBhL2RvYy9ndWl4LnRleGkgYi9k
b2MvZ3VpeC50ZXhpCmluZGV4IGE4NjViMmUyZTQuLjRiMzUxNDJlOTUgMTAwNjQ0Ci0tLSBhL2Rv
Yy9ndWl4LnRleGkKKysrIGIvZG9jL2d1aXgudGV4aQpAQCAtMzU3MTAsOCArMzU3MTAsOSBAQCBU
aGUgdHlwZSBvZiBhIGJvb3Rsb2FkZXIgY29uZmlndXJhdGlvbiBkZWNsYXJhdGlvbi4KIEBjaW5k
ZXggQklPUywgYm9vdGxvYWRlcgogVGhlIGJvb3Rsb2FkZXIgdG8gdXNlLCBhcyBhIEBjb2Rle2Jv
b3Rsb2FkZXJ9IG9iamVjdC4gIEZvciBub3cKIEBjb2Rle2dydWItYm9vdGxvYWRlcn0sIEBjb2Rl
e2dydWItZWZpLWJvb3Rsb2FkZXJ9LAotQGNvZGV7Z3J1Yi1lZmktbmV0Ym9vdC1ib290bG9hZGVy
fSwgQGNvZGV7ZXh0bGludXgtYm9vdGxvYWRlcn0gYW5kCi1AY29kZXt1LWJvb3QtYm9vdGxvYWRl
cn0gYXJlIHN1cHBvcnRlZC4KK0Bjb2Rle2dydWItZWZpLW5ldGJvb3QtYm9vdGxvYWRlcn0sCitA
Y29kZXtncnViLWVmaS1uZXRib290LXJlbW92YWJsZS1ib290bG9hZGVyfSwKK0Bjb2Rle2V4dGxp
bnV4LWJvb3Rsb2FkZXJ9IGFuZCBAY29kZXt1LWJvb3QtYm9vdGxvYWRlcn0gYXJlIHN1cHBvcnRl
ZC4KIAogQGNpbmRleCBBUk0sIGJvb3Rsb2FkZXJzCiBAY2luZGV4IEFBcmNoNjQsIGJvb3Rsb2Fk
ZXJzCkBAIC0zNTczNyw5ICszNTczOCwxMCBAQCBidWlsZCBhIGRpc2tsZXNzIEd1aXggc3lzdGVt
LgogCiBUaGUgaW5zdGFsbGF0aW9uIG9mIHRoZSBAY29kZXtncnViLWVmaS1uZXRib290LWJvb3Rs
b2FkZXJ9IGdlbmVyYXRlcyB0aGUKIGNvbnRlbnQgb2YgdGhlIFRGVFAgcm9vdCBkaXJlY3Rvcnkg
YXQgQGNvZGV7dGFyZ2V0c30gKEBweHJlZntCb290bG9hZGVyCi1Db25maWd1cmF0aW9uLCBAY29k
ZXt0YXJnZXRzfX0pLCB0byBiZSBzZXJ2ZWQgYnkgYSBURlRQIHNlcnZlci4gIFlvdSBtYXkKLXdh
bnQgdG8gbW91bnQgeW91ciBURlRQIHNlcnZlciBkaXJlY3RvcmllcyBvbnRvIHRoZSBAY29kZXt0
YXJnZXRzfSB0bwotbW92ZSB0aGUgcmVxdWlyZWQgZmlsZXMgdG8gdGhlIFRGVFAgc2VydmVyIGF1
dG9tYXRpY2FsbHkuCitDb25maWd1cmF0aW9uLCBAY29kZXt0YXJnZXRzfX0pIGJlbG93IHRoZSBz
dWItZGlyZWN0b3J5IEBmaWxle2VmaS9HdWl4fSwgdG8gYmUKK3NlcnZlZCBieSBhIFRGVFAgc2Vy
dmVyLiAgWW91IG1heSB3YW50IHRvIG1vdW50IHlvdXIgVEZUUCBzZXJ2ZXIgZGlyZWN0b3JpZXMK
K29udG8gdGhlIEBjb2Rle3RhcmdldHN9IHRvIG1vdmUgdGhlIHJlcXVpcmVkIGZpbGVzIHRvIHRo
ZSBURlRQIHNlcnZlcgorYXV0b21hdGljYWxseSBkdXJpbmcgaW5zdGFsbGF0aW9uLgogCiBJZiB5
b3UgcGxhbiB0byB1c2UgYW4gTkZTIHJvb3QgZmlsZSBzeXN0ZW0gYXMgd2VsbCAoYWN0dWFsbHkg
aWYgeW91IG1vdW50IHRoZQogc3RvcmUgZnJvbSBhbiBORlMgc2hhcmUpLCB0aGVuIHRoZSBURlRQ
IHNlcnZlciBuZWVkcyB0byBzZXJ2ZSB0aGUgZmlsZQpAQCAtMzU3NzMsMTMgKzM1Nzc1LDIzIEBA
IGRpcmVjdG9yeSB0byB5b3VyIEBjb2Rle3RhcmdldHN9LgogSXQgaXMgaW1wb3J0YW50IHRvIG5v
dGUgdGhhdCBzeW1saW5rcyBwb2ludGluZyBvdXRzaWRlIHRoZSBURlRQIHJvb3QgZGlyZWN0b3J5
CiBtYXkgbmVlZCB0byBiZSBhbGxvd2VkIGluIHRoZSBjb25maWd1cmF0aW9uIG9mIHlvdXIgVEZU
UCBzZXJ2ZXIuICBGdXJ0aGVyIHRoZQogc3RvcmUgbGluayBleHBvc2VzIHRoZSB3aG9sZSBzdG9y
ZSB0aHJvdWdoIFRGVFBALiAgQm90aCBwb2ludHMgbmVlZCB0byBiZQotY29uc2lkZXJlZCBjYXJl
ZnVsbHkgZm9yIHNlY3VyaXR5IGFzcGVjdHMuCitjb25zaWRlcmVkIGNhcmVmdWxseSBmb3Igc2Vj
dXJpdHkgYXNwZWN0cy4gIEl0IGlzIGFkdmlzZWQgdG8gZGlzYWJsZSBhbnkgVEZUUAord3JpdGUg
YWNjZXNzIQorCitQbGVhc2Ugbm90ZSwgdGhhdCB0aGlzIGJvb3Rsb2FkZXIgd2lsbCBub3QgbW9k
aWZ5IHRoZSDigJhVRUZJIEJvb3QgTWFuYWdlcuKAmSBvZgordGhlIHN5c3RlbS4KIAogQmVzaWRl
IHRoZSBAY29kZXtncnViLWVmaS1uZXRib290LWJvb3Rsb2FkZXJ9LCB0aGUgYWxyZWFkeSBtZW50
aW9uZWQgVEZUUCBhbmQKIE5GUyBzZXJ2ZXJzLCB5b3UgYWxzbyBuZWVkIGEgcHJvcGVybHkgY29u
ZmlndXJlZCBESENQIHNlcnZlciB0byBtYWtlIHRoZSBib290aW5nCiBvdmVyIG5ldGJvb3QgcG9z
c2libGUuICBGb3IgYWxsIHRoaXMgd2UgY2FuIGN1cnJlbnRseSBvbmx5IHJlY29tbWVuZCB5b3Ug
dG8gbG9vawogZm9yIGluc3RydWN0aW9ucyBhYm91dCBAYWNyb255bXtQWEUsIFByZWJvb3QgZVhl
Y3V0aW9uIEVudmlyb25tZW50fS4KIAorQHZpbmRleCBncnViLWVmaS1uZXRib290LXJlbW92YWJs
ZS1ib290bG9hZGVyCitAY29kZXtncnViLWVmaS1uZXRib290LXJlbW92YWJsZS1ib290bG9hZGVy
fSBpcyBpZGVudGljYWwgdG8KK0Bjb2Rle2dydWItZWZpLW5ldGJvb3QtYm9vdGxvYWRlcn0gd2l0
aCB0aGUgZXhjZXB0aW9uIHRoYXQgdGhlIHN1Yi1kaXJlY3RvcnkKK0BmaWxle2VmaS9ib290fSB3
aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiBAZmlsZXtlZmkvR3VpeH0gdG8gY29tcGx5IHRvIHRoZSBV
RUZJCitzcGVjaWZpY2F0aW9uIGZvciByZW1vdmFibGUgbWVkaWEuCisKIEBpdGVtIEBjb2Rle3Rh
cmdldHN9CiBUaGlzIGlzIGEgbGlzdCBvZiBzdHJpbmdzIGRlbm90aW5nIHRoZSB0YXJnZXRzIG9u
dG8gd2hpY2ggdG8gaW5zdGFsbCB0aGUKIGJvb3Rsb2FkZXIuCmRpZmYgLS1naXQgYS9nbnUvYm9v
dGxvYWRlci5zY20gYi9nbnUvYm9vdGxvYWRlci5zY20KaW5kZXggOWNmNTQ1Nzg3My4uNzk3OTA4
ZTI0YSAxMDA2NDQKLS0tIGEvZ251L2Jvb3Rsb2FkZXIuc2NtCisrKyBiL2dudS9ib290bG9hZGVy
LnNjbQpAQCAtMjU5LDI2ICsyNTksMjIgQEAgKGRlZmluZSAobG9va3VwLWJvb3Rsb2FkZXItYnkt
bmFtZSBuYW1lKQogICAgICAgICAgICAgKGZvcmNlICVib290bG9hZGVycykpCiAgICAgICAobGVh
dmUgKEdfICJ+YTogbm8gc3VjaCBib290bG9hZGVyfiUiKSBuYW1lKSkpCiAKLShkZWZpbmUgKGVm
aS1ib290bG9hZGVyLXByb2ZpbGUgZmlsZXMgYm9vdGxvYWRlci1wYWNrYWdlIGhvb2tzKQotICAi
Q3JlYXRlcyBhIHByb2ZpbGUgd2l0aCBCT09UTE9BREVSLVBBQ0tBR0UgYW5kIGEgZGlyZWN0b3J5
IGNvbGxlY3Rpb24vIHdpdGgKLWxpbmtzIHRvIGFkZGl0aW9uYWwgRklMRVMgZnJvbSB0aGUgc3Rv
cmUuICBUaGlzIGNvbGxlY3Rpb24gaXMgbWVhbnQgdG8gYmUgdXNlZAotYnkgdGhlIGJvb3Rsb2Fk
ZXIgaW5zdGFsbGVyLgorKGRlZmluZSAoZWZpLWJvb3Rsb2FkZXItcHJvZmlsZSBwYWNrYWdlcyBm
aWxlcyBob29rcykKKyAgIkNyZWF0ZXMgYSBwcm9maWxlIGZyb20gdGhlIGxpc3RzIG9mIFBBQ0tB
R0VTIGFuZCBGSUxFUyBmcm9tIHRoZSBzdG9yZS4KK1RoaXMgcHJvZmlsZSBpcyBtZWFudCB0byBi
ZSB1c2VkIGJ5IHRoZSBib290bG9hZGVyLWluc3RhbGxlci4KIAogRklMRVMgaXMgYSBsaXN0IG9m
IGZpbGUgb3IgZGlyZWN0b3J5IG5hbWVzIGZyb20gdGhlIHN0b3JlLCB3aGljaCB3aWxsIGJlCi1z
eW1saW5rZWQgaW50byB0aGUgY29sbGVjdGlvbi8gZGlyZWN0b3J5LiAgSWYgYSBkaXJlY3Rvcnkg
bmFtZSBlbmRzIHdpdGggJy8nLAotdGhlbiB0aGUgZGlyZWN0b3J5IGNvbnRlbnQgaW5zdGVhZCBv
ZiB0aGUgZGlyZWN0b3J5IGl0c2VsZiB3aWxsIGJlIHN5bWxpbmtlZAotaW50byB0aGUgY29sbGVj
dGlvbi8gZGlyZWN0b3J5Lgorc3ltbGlua2VkIGludG8gdGhlIHByb2ZpbGUuICBJZiBhIGRpcmVj
dG9yeSBuYW1lIGVuZHMgd2l0aCAnLycsIHRoZW4gdGhlCitkaXJlY3RvcnkgY29udGVudCBpbnN0
ZWFkIG9mIHRoZSBkaXJlY3RvcnkgaXRzZWxmIHdpbGwgYmUgc3ltbGlua2VkIGludG8gdGhlCitw
cm9maWxlLgogCi1GSUxFUyBtYXkgY29udGFpbiBmaWxlIGxpa2Ugb2JqZWN0cyBwcm9kdWNlZCBi
eSBmdW5jdGlvbnMgbGlrZSBwbGFpbi1maWxlLAorRklMRVMgbWF5IGNvbnRhaW4gZmlsZSBsaWtl
IG9iamVjdHMgcHJvZHVjZWQgYnkgcHJvY2VkdXJlcyBsaWtlIHBsYWluLWZpbGUsCiBsb2NhbC1m
aWxlLCBldGMuLCBvciBwYWNrYWdlIGNvbnRlbnRzIHByb2R1Y2VkIHdpdGggZmlsZS1hcHBlbmQu
CiAKIEhPT0tTIGxpc3RzIGFkZGl0aW9uYWwgaG9vayBmdW5jdGlvbnMgdG8gbW9kaWZ5IHRoZSBw
cm9maWxlLiIKLSAgKGRlZmluZSAoYm9vdGxvYWRlci1jb2xsZWN0aW9uIG1hbmlmZXN0KQorICAo
ZGVmaW5lIChlZmktYm9vdGxvYWRlci1wcm9maWxlLWhvb2sgbWFuaWZlc3QpCiAgICAgKGRlZmlu
ZSBidWlsZAotICAgICAgICAod2l0aC1pbXBvcnRlZC1tb2R1bGVzICcoKGd1aXggYnVpbGQgdXRp
bHMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWNlLTkgZnR3KQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNyZmkgc3JmaS0xKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKHNyZmkgc3JmaS0yNikpCisgICAgICAgICh3aXRoLWltcG9ydGVk
LW1vZHVsZXMgJygoZ3VpeCBidWlsZCB1dGlscykpCiAgICAgICAgICAgI34oYmVnaW4KICAgICAg
ICAgICAgICh1c2UtbW9kdWxlcyAoKGd1aXggYnVpbGQgdXRpbHMpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICM6c2VsZWN0IChta2Rpci1wIHN0cmlwLXN0b3JlLWZpbGUtbmFtZSkpCkBAIC0z
MDIsNyArMjk4LDcgQEAgKGRlZmluZSBuYW1lLWVuZHMtd2l0aC0vPyAoY3V0IHN0cmluZy1zdWZm
aXg/ICIvIiA8PikpCiAgICAgICAgICAgICAoZGVmaW5lIChuYW1lLWlzLXN0b3JlLWVudHJ5PyBu
YW1lKQogICAgICAgICAgICAgICAiUmV0dXJuICN0IGlmIE5BTUUgaXMgYSBkaXJlY3Qgc3RvcmUg
ZW50cnkgYW5kIG5vdGhpbmcgaW5zaWRlLiIKICAgICAgICAgICAgICAgKG5vdCAoc3RyaW5nLWlu
ZGV4IChzdHJpcC1zdG9yZS1maWxlLW5hbWUgbmFtZSkgI1wvKSkpCi0gICAgICAgICAgICAobGV0
KiAoKGNvbGxlY3Rpb24gKHN0cmluZy1hcHBlbmQgIyRvdXRwdXQgIi9jb2xsZWN0aW9uIikpCisg
ICAgICAgICAgICAobGV0KiAoKG91dHB1dCAjJG91dHB1dCkKICAgICAgICAgICAgICAgICAgICAo
ZmlsZXMgJyMkZmlsZXMpCiAgICAgICAgICAgICAgICAgICAgKGRpcmVjdG9yaWVzIChmaWx0ZXIg
bmFtZS1lbmRzLXdpdGgtLz8gZmlsZXMpKQogICAgICAgICAgICAgICAgICAgIChuYW1lcy1mcm9t
LWRpcmVjdG9yaWVzCkBAIC0zMTEsMTEgKzMwNywxMSBAQCAoZGVmaW5lIChuYW1lLWlzLXN0b3Jl
LWVudHJ5PyBuYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcmll
cykpCiAgICAgICAgICAgICAgICAgICAgKG5hbWVzIChhcHBlbmQgbmFtZXMtZnJvbS1kaXJlY3Rv
cmllcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZW1vdmUgbmFtZS1lbmRz
LXdpdGgtLz8gZmlsZXMpKSkpCi0gICAgICAgICAgICAgIChta2Rpci1wIGNvbGxlY3Rpb24pCisg
ICAgICAgICAgICAgIChta2Rpci1wIG91dHB1dCkKICAgICAgICAgICAgICAgKGlmIChldmVyeSBm
aWxlLWV4aXN0cz8gbmFtZXMpCiAgICAgICAgICAgICAgICAgICAoYmVnaW4KICAgICAgICAgICAg
ICAgICAgICAgKGZvci1lYWNoIChsYW1iZGEgKG5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKHN5bWxpbmstdG8gbmFtZSBjb2xsZWN0aW9uCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHN5bWxpbmstdG8gbmFtZSBvdXRwdXQKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChuYW1lLWlzLXN0b3JlLWVudHJ5PyBuYW1lKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXAtc3Rv
cmUtZmlsZS1uYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBiYXNlbmFtZSkpKQpAQCAtMzIzLDU3ICszMTksNjMgQEAgKGRlZmluZSAobmFtZS1pcy1z
dG9yZS1lbnRyeT8gbmFtZSkKICAgICAgICAgICAgICAgICAgICAgI3QpCiAgICAgICAgICAgICAg
ICAgICAjZikpKSkpCiAKLSAgICAoZ2V4cC0+ZGVyaXZhdGlvbiAiYm9vdGxvYWRlci1jb2xsZWN0
aW9uIgorICAgIChnZXhwLT5kZXJpdmF0aW9uICJlZmktYm9vdGxvYWRlci1wcm9maWxlIgogICAg
ICAgICAgICAgICAgICAgICAgIGJ1aWxkCiAgICAgICAgICAgICAgICAgICAgICAgIzpsb2NhbC1i
dWlsZD8gI3QKICAgICAgICAgICAgICAgICAgICAgICAjOnN1YnN0aXR1dGFibGU/ICNmCiAgICAg
ICAgICAgICAgICAgICAgICAgIzpwcm9wZXJ0aWVzCiAgICAgICAgICAgICAgICAgICAgICAgYCgo
dHlwZSAuIHByb2ZpbGUtaG9vaykKLSAgICAgICAgICAgICAgICAgICAgICAgIChob29rIC4gYm9v
dGxvYWRlci1jb2xsZWN0aW9uKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgKGhvb2sgLiBl
ZmktYm9vdGxvYWRlci1wcm9maWxlLWhvb2spKSkpCiAKLSAgKHByb2ZpbGUgKGNvbnRlbnQgKHBh
Y2thZ2VzLT5tYW5pZmVzdCAobGlzdCBib290bG9hZGVyLXBhY2thZ2UpKSkKLSAgICAgICAgICAg
KG5hbWUgImJvb3Rsb2FkZXItcHJvZmlsZSIpCi0gICAgICAgICAgIChob29rcyAoYXBwZW5kIChs
aXN0IGJvb3Rsb2FkZXItY29sbGVjdGlvbikgaG9va3MpKQorICAocHJvZmlsZSAoY29udGVudCAo
cGFja2FnZXMtPm1hbmlmZXN0IHBhY2thZ2VzKSkKKyAgICAgICAgICAgKG5hbWUgImVmaS1ib290
bG9hZGVyLXByb2ZpbGUiKQorICAgICAgICAgICAoaG9va3MgKGNvbnMgZWZpLWJvb3Rsb2FkZXIt
cHJvZmlsZS1ob29rIGhvb2tzKSkKICAgICAgICAgICAgKGxvY2FsZXM/ICNmKQogICAgICAgICAg
ICAoYWxsb3ctY29sbGlzaW9ucz8gI2YpCiAgICAgICAgICAgIChyZWxhdGl2ZS1zeW1saW5rcz8g
I2YpKSkKIAotKGRlZmluZSogKGVmaS1ib290bG9hZGVyLWNoYWluIGZpbGVzCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmluYWwtYm9vdGxvYWRlcgorKGRlZmluZSogKGVmaS1ib290
bG9hZGVyLWNoYWluIGZpbmFsLWJvb3Rsb2FkZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjOmtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWNrYWdlcyAnKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGVzICcoKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoaG9va3MgJygpKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluc3RhbGxlcikKLSAgIkRlZmluZSBhIGJvb3Rsb2FkZXIgY2hhaW4gd2l0aCBGSU5B
TC1CT09UTE9BREVSIGFzIHRoZSBmaW5hbCBib290bG9hZGVyIGFuZAotY2VydGFpbiBkaXJlY3Rv
cmllcyBhbmQgZmlsZXMgZnJvbSB0aGUgc3RvcmUgZ2l2ZW4gaW4gdGhlIGxpc3Qgb2YgRklMRVMu
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVyCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlzay1pbWFnZS1pbnN0YWxsZXIpCisgICJEZWZpbmUgYSBjaGFp
biBvZiBib290bG9hZGVycyB3aXRoIHRoZSBGSU5BTC1CT09UTE9BREVSLCBvcHRpb25hbCBQQUNL
QUdFUywKK2FuZCBvcHRpb25hbCBkaXJlY3RvcmllcyBhbmQgZmlsZXMgZnJvbSB0aGUgc3RvcmUg
Z2l2ZW4gaW4gdGhlIGxpc3Qgb2YgRklMRVMuCiAKLUZJTEVTIG1heSBjb250YWluIGZpbGUgbGlr
ZSBvYmplY3RzIHByb2R1Y2VkIGJ5IGZ1bmN0aW9ucyBsaWtlIHBsYWluLWZpbGUsCi1sb2NhbC1m
aWxlLCBldGMuLCBvciBwYWNrYWdlIGNvbnRlbnRzIHByb2R1Y2VkIHdpdGggZmlsZS1hcHBlbmQu
ICBUaGV5IHdpbGwgYmUKLWNvbGxlY3RlZCBpbnNpZGUgYSBkaXJlY3RvcnkgY29sbGVjdGlvbi8g
aW5zaWRlIGEgZ2VuZXJhdGVkIGJvb3Rsb2FkZXIgcHJvZmlsZSwKLXdoaWNoIHdpbGwgYmUgcGFz
c2VkIHRvIHRoZSBJTlNUQUxMRVIuCitUaGUgcGFja2FnZSBvZiB0aGUgRklOQUwtQk9PVExPQURF
UiBhbmQgYWxsIFBBQ0tBR0VTIGFuZCBGSUxFUyB3aWxsIGJlIHBsYWNlZAoraW4gYW4gZWZpLWJv
b3Rsb2FkZXItcHJvZmlsZSwgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gdGhlIElOU1RBTExFUi4K
KworRklMRVMgbWF5IGNvbnRhaW4gZmlsZSBsaWtlIG9iamVjdHMgcHJvZHVjZWQgYnkgcHJvY2Vk
dXJlcyBsaWtlIHBsYWluLWZpbGUsCitsb2NhbC1maWxlLCBldGMuLCBvciBwYWNrYWdlIGNvbnRl
bnRzIHByb2R1Y2VkIHdpdGggZmlsZS1hcHBlbmQuCiAKIElmIGEgZGlyZWN0b3J5IG5hbWUgaW4g
RklMRVMgZW5kcyB3aXRoICcvJywgdGhlbiB0aGUgZGlyZWN0b3J5IGNvbnRlbnQgaW5zdGVhZAot
b2YgdGhlIGRpcmVjdG9yeSBpdHNlbGYgd2lsbCBiZSBzeW1saW5rZWQgaW50byB0aGUgY29sbGVj
dGlvbi8gZGlyZWN0b3J5Lgorb2YgdGhlIGRpcmVjdG9yeSBpdHNlbGYgd2lsbCBiZSBzeW1saW5r
ZWQgaW50byB0aGUgZWZpLWJvb3Rsb2FkZXItcHJvZmlsZS4KIAogVGhlIHByb2NlZHVyZXMgaW4g
dGhlIEhPT0tTIGxpc3QgY2FuIGJlIHVzZWQgdG8gZnVydGhlciBtb2RpZnkgdGhlIGJvb3Rsb2Fk
ZXIKIHByb2ZpbGUuICBJdCBpcyBwb3NzaWJsZSB0byBwYXNzIGEgc2luZ2xlIGZ1bmN0aW9uIGlu
c3RlYWQgb2YgYSBsaXN0LgogCi1JZiB0aGUgSU5TVEFMTEVSIGFyZ3VtZW50IGlzIHVzZWQsIHRo
ZW4gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB0byBpbnN0YWxsCi10aGUgYm9vdGxvYWRl
ci4gIE90aGVyd2lzZSB0aGUgaW5zdGFsbGVyIG9mIHRoZSBGSU5BTC1CT09UTE9BREVSIHdpbGwg
YmUgY2FsbGVkLiIKLSAgKGxldCogKChmaW5hbC1pbnN0YWxsZXIgKG9yIGluc3RhbGxlcgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJvb3Rsb2FkZXItaW5zdGFsbGVyIGZpbmFsLWJv
b3Rsb2FkZXIpKSkKLSAgICAgICAgIChwcm9maWxlIChlZmktYm9vdGxvYWRlci1wcm9maWxlIGZp
bGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYm9vdGxvYWRl
ci1wYWNrYWdlIGZpbmFsLWJvb3Rsb2FkZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoaWYgKGxpc3Q/IGhvb2tzKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhvb2tzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGxpc3QgaG9va3MpKSkpKQotICAgIChib290bG9hZGVyCi0gICAg
IChpbmhlcml0IGZpbmFsLWJvb3Rsb2FkZXIpCi0gICAgIChwYWNrYWdlIHByb2ZpbGUpCi0gICAg
IChpbnN0YWxsZXIKLSAgICAgICN+KGxhbWJkYSAoYm9vdGxvYWRlciB0YXJnZXQgbW91bnQtcG9p
bnQpCi0gICAgICAgICAgKCMkZmluYWwtaW5zdGFsbGVyIGJvb3Rsb2FkZXIgdGFyZ2V0IG1vdW50
LXBvaW50KQotICAgICAgICAgIChjb3B5LXJlY3Vyc2l2ZWx5Ci0gICAgICAgICAgIChzdHJpbmct
YXBwZW5kIGJvb3Rsb2FkZXIgIi9jb2xsZWN0aW9uIikKLSAgICAgICAgICAgKHN0cmluZy1hcHBl
bmQgbW91bnQtcG9pbnQgdGFyZ2V0KQotICAgICAgICAgICAjOmZvbGxvdy1zeW1saW5rcz8gI3QK
LSAgICAgICAgICAgIzpsb2cgKCVtYWtlLXZvaWQtcG9ydCAidyIpKSkpKSkpCitJZiB0aGUgSU5T
VEFMTEVSIGFyZ3VtZW50IGlzIHVzZWQsIHRoZW4gdGhpcyBnZXhwIHByb2NlZHVyZSB3aWxsIGJl
IGNhbGxlZCB0bworaW5zdGFsbCB0aGUgZWZpLWJvb3Rsb2FkZXItcHJvZmlsZS4gIE90aGVyd2lz
ZSB0aGUgaW5zdGFsbGVyIG9mIHRoZQorRklOQUwtQk9PVExPQURFUiB3aWxsIGJlIGNhbGxlZC4K
KworSWYgdGhlIERJU0stSU1BR0UtSU5TVEFMTEVSIGlzIHVzZWQsIHRoZW4gdGhpcyBnZXhwIHBy
b2NlZHVyZSB3aWxsIGJlIGNhbGxlZAordG8gaW5zdGFsbCB0aGUgZWZpLWJvb3Rsb2FkZXItcHJv
ZmlsZSBpbnRvIGEgZGlzay1pbWFnZS4gIE90aGVyd2lzZSB0aGUKK2Rpc2staW1hZ2UtaW5zdGFs
bGVyIG9mIHRoZSBGSU5BTC1CT09UTE9BREVSIHdpbGwgYmUgY2FsbGVkLiIKKyAgKGJvb3Rsb2Fk
ZXIKKyAgICAoaW5oZXJpdCBmaW5hbC1ib290bG9hZGVyKQorICAgIChuYW1lICJlZmktYm9vdGxv
YWRlci1jaGFpbiIpCisgICAgKHBhY2thZ2UKKyAgICAgKGVmaS1ib290bG9hZGVyLXByb2ZpbGUg
KGNvbnMgKGJvb3Rsb2FkZXItcGFja2FnZSBmaW5hbC1ib290bG9hZGVyKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmlsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChsaXN0PyBob29r
cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvb2tzCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAobGlzdCBob29rcykpKSkKKyAgICAoaW5zdGFsbGVyCisgICAg
IChvciBpbnN0YWxsZXIKKyAgICAgICAgIChib290bG9hZGVyLWluc3RhbGxlciBmaW5hbC1ib290
bG9hZGVyKSkpCisgICAgKGRpc2staW1hZ2UtaW5zdGFsbGVyCisgICAgIChvciBkaXNrLWltYWdl
LWluc3RhbGxlcgorICAgICAgICAgKGJvb3Rsb2FkZXItZGlzay1pbWFnZS1pbnN0YWxsZXIgZmlu
YWwtYm9vdGxvYWRlcikpKSkpCmRpZmYgLS1naXQgYS9nbnUvYm9vdGxvYWRlci9ncnViLnNjbSBi
L2dudS9ib290bG9hZGVyL2dydWIuc2NtCmluZGV4IDEyMGNkNTUwMTIuLjBiYTZhYTRkYWQgMTAw
NjQ0Ci0tLSBhL2dudS9ib290bG9hZGVyL2dydWIuc2NtCisrKyBiL2dudS9ib290bG9hZGVyL2dy
dWIuc2NtCkBAIC01MCwxMSArNTAsMTIgQEAgKGRlZmluZS1tb2R1bGUgKGdudSBib290bG9hZGVy
IGdydWIpCiAgICAgICAgICAgICBncnViLXRoZW1lLWNvbG9yLWhpZ2hsaWdodAogICAgICAgICAg
ICAgZ3J1Yi10aGVtZS1nZnhtb2RlCiAKLSAgICAgICAgICAgIGluc3RhbGwtZ3J1Yi1lZmktbmV0
Ym9vdAorICAgICAgICAgICAgbWFrZS1ncnViLWVmaS1uZXRib290LWluc3RhbGxlcgogCiAgICAg
ICAgICAgICBncnViLWJvb3Rsb2FkZXIKICAgICAgICAgICAgIGdydWItZWZpLWJvb3Rsb2FkZXIK
ICAgICAgICAgICAgIGdydWItZWZpLW5ldGJvb3QtYm9vdGxvYWRlcgorICAgICAgICAgICAgZ3J1
Yi1lZmktbmV0Ym9vdC1yZW1vdmFibGUtYm9vdGxvYWRlcgogICAgICAgICAgICAgZ3J1Yi1ta3Jl
c2N1ZS1ib290bG9hZGVyCiAgICAgICAgICAgICBncnViLW1pbmltYWwtYm9vdGxvYWRlcgogCkBA
IC0zNDgsNyArMzQ5LDcgQEAgKGRlZmluZSAoZ3J1Yi1yb290LXNlYXJjaCBkZXZpY2UgZmlsZSkK
ICAgICAgICAgKChvciAjZiAoPyBzdHJpbmc/KSkKICAgICAgICAgICN+KGZvcm1hdCAjZiAic2Vh
cmNoIC0tZmlsZSAtLXNldCB+YSIgIyRmaWxlKSkpKSkKIAotKGRlZmluZSogKGdydWItY29uZmln
dXJhdGlvbi1maWxlIGNvbmZpZyBlbnRyaWVzCisoZGVmaW5lKiAobWFrZS1ncnViLWNvbmZpZ3Vy
YXRpb24gZ3J1YiBjb25maWcgZW50cmllcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICM6a2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2FsZSAjZikK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3lzdGVtICglY3VycmVudC1zeXN0
ZW0pKQpAQCAtMzc4LDI3ICszNzksMjcgQEAgKGRlZmluZSAobWVudS1lbnRyeS0+Z2V4cCBlbnRy
eSkKICAgICAgICAgICAgICAgICAoaW5pdHJkIChub3JtYWxpemUtZmlsZSAobWVudS1lbnRyeS1p
bml0cmQgZW50cnkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2
aWNlLW1vdW50LXBvaW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RvcmUtZGlyZWN0b3J5LXByZWZpeCkpKQotICAgICAgICAgOzsgSGVyZSBERVZJQ0UgaXMgdGhl
IHN0b3JlIGFuZCBERVZJQ0UtTU9VTlQtUE9JTlQgaXMgaXRzIG1vdW50IHBvaW50LgotICAgICAg
ICAgOzsgVXNlIHRoZSByaWdodCBmaWxlIG5hbWVzIGZvciBMSU5VWCBhbmQgSU5JVFJEIGluIGNh
c2UKLSAgICAgICAgIDs7IERFVklDRS1NT1VOVC1QT0lOVCBpcyBub3QgIi8iLCBtZWFuaW5nIHRo
YXQgdGhlIHN0b3JlIGlzIG9uIGEKLSAgICAgICAgIDs7IHNlcGFyYXRlIHBhcnRpdGlvbi4KLQot
ICAgICAgICAgOzsgV2hlbiBCVFJGUy1TVUJWT0xVTUUtRklMRS1OQU1FIGlzIGRlZmluZWQsIHBy
ZXBlbmQgaXQgdGhlIGxpbnV4IGFuZAotICAgICAgICAgOzsgaW5pdHJkIHBhdGhzLCB0byBhbGxv
dyBib290aW5nIGZyb20gYSBCdHJmcyBzdWJ2b2x1bWUuCi0gICAgICAgICAjfihmb3JtYXQgcG9y
dCAibWVudWVudHJ5IH5zIHsKKyAgICAgICAgICAgIDs7IEhlcmUgREVWSUNFIGlzIHRoZSBzdG9y
ZSBhbmQgREVWSUNFLU1PVU5ULVBPSU5UIGlzIGl0cyBtb3VudCBwb2ludC4KKyAgICAgICAgICAg
IDs7IFVzZSB0aGUgcmlnaHQgZmlsZSBuYW1lcyBmb3IgTElOVVggYW5kIElOSVRSRCBpbiBjYXNl
CisgICAgICAgICAgICA7OyBERVZJQ0UtTU9VTlQtUE9JTlQgaXMgbm90ICIvIiwgbWVhbmluZyB0
aGF0IHRoZSBzdG9yZSBpcyBvbiBhCisgICAgICAgICAgICA7OyBzZXBhcmF0ZSBwYXJ0aXRpb24u
CisKKyAgICAgICAgICAgIDs7IFdoZW4gQlRSRlMtU1VCVk9MVU1FLUZJTEUtTkFNRSBpcyBkZWZp
bmVkLCBwcmVwZW5kIGl0IHRoZSBsaW51eCBhbmQKKyAgICAgICAgICAgIDs7IGluaXRyZCBwYXRo
cywgdG8gYWxsb3cgYm9vdGluZyBmcm9tIGEgQnRyZnMgc3Vidm9sdW1lLgorICAgICAgICAgICAg
I34oZm9ybWF0IHBvcnQgIm1lbnVlbnRyeSB+cyB7CiAgIH5hCiAgIGxpbnV4IH5hIH5hCiAgIGlu
aXRyZCB+YQogfX4lIgotICAgICAgICAgICAgICAgICAgICMkbGFiZWwKLSAgICAgICAgICAgICAg
ICAgICAjJChncnViLXJvb3Qtc2VhcmNoIGRldmljZSBsaW51eCkKLSAgICAgICAgICAgICAgICAg
ICAjJGxpbnV4IChzdHJpbmctam9pbiAobGlzdCAjJEBhcmd1bWVudHMpKQotICAgICAgICAgICAg
ICAgICAgICMkaW5pdHJkKSkKKyAgICAgICAgICAgICAgICAgICAgICAjJGxhYmVsCisgICAgICAg
ICAgICAgICAgICAgICAgIyQoZ3J1Yi1yb290LXNlYXJjaCBkZXZpY2UgbGludXgpCisgICAgICAg
ICAgICAgICAgICAgICAgIyRsaW51eCAoc3RyaW5nLWpvaW4gKGxpc3QgIyRAYXJndW1lbnRzKSkK
KyAgICAgICAgICAgICAgICAgICAgICAjJGluaXRyZCkpCiAgICAgICAgICAgKGxldCAoKGtlcm5l
bCAobWVudS1lbnRyeS1tdWx0aWJvb3Qta2VybmVsIGVudHJ5KSkKICAgICAgICAgICAgICAgICAo
YXJndW1lbnRzIChtZW51LWVudHJ5LW11bHRpYm9vdC1hcmd1bWVudHMgZW50cnkpKQogICAgICAg
ICAgICAgICAgIChtb2R1bGVzIChtZW51LWVudHJ5LW11bHRpYm9vdC1tb2R1bGVzIGVudHJ5KSkK
ICAgICAgICAgICAgICAgICAocm9vdC1pbmRleCAxKSkgICAgICAgICAgICA7IFhYWCBFRkkgd2ls
bCBuZWVkIHJvb3QtaW5kZXggMgotICAgICAgICAjfihmb3JtYXQgcG9ydCAiCisgICAgICAgICAg
ICAjfihmb3JtYXQgcG9ydCAiCiBtZW51ZW50cnkgfnMgewogICBtdWx0aWJvb3QgfmEgcm9vdD1k
ZXZpY2U6aGQwc35hfmF+YQogfX4lIgpAQCAtNDM1LDkgKzQzNiw3IEBAIChkZWZpbmUgKHN1Z2Fy
KQogICAoZGVmaW5lIGxvY2FsZS1jb25maWcKICAgICAobGV0KiAoKGVudHJ5IChmaXJzdCBhbGwt
ZW50cmllcykpCiAgICAgICAgICAgIChkZXZpY2UgKG1lbnUtZW50cnktZGV2aWNlIGVudHJ5KSkK
LSAgICAgICAgICAgKG1vdW50LXBvaW50IChtZW51LWVudHJ5LWRldmljZS1tb3VudC1wb2ludCBl
bnRyeSkpCi0gICAgICAgICAgIChib290bG9hZGVyIChib290bG9hZGVyLWNvbmZpZ3VyYXRpb24t
Ym9vdGxvYWRlciBjb25maWcpKQotICAgICAgICAgICAoZ3J1YiAoYm9vdGxvYWRlci1wYWNrYWdl
IGJvb3Rsb2FkZXIpKSkKKyAgICAgICAgICAgKG1vdW50LXBvaW50IChtZW51LWVudHJ5LWRldmlj
ZS1tb3VudC1wb2ludCBlbnRyeSkpKQogICAgICAgI34obGV0ICgobG9jYWxlICMkKGFuZCBsb2Nh
bGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2FsZS1kZWZpbml0aW9uLXNvdXJj
ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvY2FsZS1uYW1lLT5kZWZpbml0aW9u
IGxvY2FsZSkpKSkKQEAgLTQ2Myw4ICs0NjIsNiBAQCAoZGVmaW5lIGxvY2FsZS1jb25maWcKIAog
ICAoZGVmaW5lIGtleWJvYXJkLWxheW91dC1jb25maWcKICAgICAobGV0KiAoKGxheW91dCAoYm9v
dGxvYWRlci1jb25maWd1cmF0aW9uLWtleWJvYXJkLWxheW91dCBjb25maWcpKQotICAgICAgICAg
ICAoZ3J1YiAgIChib290bG9hZGVyLXBhY2thZ2UKLSAgICAgICAgICAgICAgICAgICAgKGJvb3Rs
b2FkZXItY29uZmlndXJhdGlvbi1ib290bG9hZGVyIGNvbmZpZykpKQogICAgICAgICAgICAoa2V5
bWFwKiAoYW5kIGxheW91dAogICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlib2FyZC1sYXlv
dXQtZmlsZSBsYXlvdXQgIzpncnViIGdydWIpKSkKICAgICAgICAgICAgKGVudHJ5IChmaXJzdCBh
bGwtZW50cmllcykpCkBAIC01MTUsNiArNTEyLDE2IEBAIChkZWZpbmUgYnVpbGRlcgogICAgICAg
ICAgICAgICAgICAjOm9wdGlvbnMgJygjOmxvY2FsLWJ1aWxkPyAjdAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjOnN1YnN0aXR1dGFibGU/ICNmKSkpCiAKKyhkZWZpbmUgKGdydWItY29u
ZmlndXJhdGlvbi1maWxlIGNvbmZpZyAuIGFyZ3MpCisgIChsZXQqICgoYm9vdGxvYWRlciAoYm9v
dGxvYWRlci1jb25maWd1cmF0aW9uLWJvb3Rsb2FkZXIgY29uZmlnKSkKKyAgICAgICAgIChncnVi
IChib290bG9hZGVyLXBhY2thZ2UgYm9vdGxvYWRlcikpKQorICAgIChhcHBseSBtYWtlLWdydWIt
Y29uZmlndXJhdGlvbiBncnViIGNvbmZpZyBhcmdzKSkpCisKKyhkZWZpbmUgKGdydWItZWZpLWNv
bmZpZ3VyYXRpb24tZmlsZSAuIGFyZ3MpCisgIChhcHBseSBtYWtlLWdydWItY29uZmlndXJhdGlv
biBncnViLWVmaSBhcmdzKSkKKworKGRlZmluZSBncnViLWNmZyAiL2Jvb3QvZ3J1Yi9ncnViLmNm
ZyIpCisKIAwKIAogOzs7CkBAIC02MDgsNDIgKzYxNSwzMSBAQCAoZGVmaW5lIGluc3RhbGwtZ3J1
Yi1lZmkKICAgICAgICAgICAgICAgICAgICAgICAgICItLWJvb3Rsb2FkZXItaWQ9R3VpeCIKICAg
ICAgICAgICAgICAgICAgICAgICAgICItLWVmaS1kaXJlY3RvcnkiIHRhcmdldC1lc3ApKSkpKQog
Ci0oZGVmaW5lIChpbnN0YWxsLWdydWItZWZpLW5ldGJvb3Qgc3ViZGlyKQotICAiRGVmaW5lIGEg
Z3J1Yi1lZmktbmV0Ym9vdCBib290bG9hZGVyIGluc3RhbGxlciBmb3IgaW5zdGFsbGF0aW9uIGlu
IFNVQkRJUiwKLXdoaWNoIGlzIHVzdWFsbHkgZWZpL0d1aXggb3IgZWZpL2Jvb3QuIgotICAobGV0
KiAoKHN5c3RlbSAoc3RyaW5nLXNwbGl0IChuaXgtc3lzdGVtLT5nbnUtdHJpcGxldAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAob3IgKCVjdXJyZW50LXRhcmdldC1zeXN0ZW0pCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJWN1cnJlbnQtc3lzdGVtKSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI1wtKSkKLSAgICAgICAgIChhcmNoIChmaXJz
dCBzeXN0ZW0pKQotICAgICAgICAgKGJvb3QtZWZpLWxpbmsgKG1hdGNoIHN5c3RlbQotICAgICAg
ICAgICAgICAgICAgICAgICAgICA7OyBUaGVzZSBhcmUgdGhlIHN1cHBvcnRlbmQgc3lzdGVtcyBh
bmQgdGhlIG5hbWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGRlZmluZWQgYnkgdGhl
IFVFRkkgc3RhbmRhcmQgZm9yIHJlbW92YWJsZSBtZWRpYS4KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgKCgiaTY4NiIgXyAuLi4pICAgICAgICAiL2Jvb3RpYTMyLmVmaSIpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICgoIng4Nl82NCIgXyAuLi4pICAgICAgIi9ib290eDY0LmVmaSIpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICgoImFybSIgXyAuLi4pICAgICAgICAgIi9ib290YXJt
LmVmaSIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICgoImFhcmNoNjQiIF8gLi4uKSAgICAg
Ii9ib290YWE2NC5lZmkiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAoKCJyaXNjdiIgXyAu
Li4pICAgICAgICIvYm9vdHJpc2N2MzIuZWZpIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
KCgicmlzY3Y2NCIgXyAuLi4pICAgICAiL2Jvb3RyaXNjdjY0LmVmaSIpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIDs7IE90aGVyIHN5c3RlbXMgYXJlIG5vdCBzdXBwb3J0ZWQsIGFsdGhvdWdo
IGRlZmluZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDs7ICgoInJpc2N2MTI4IiBfIC4u
LikgIi9ib290cmlzY3YxMjguZWZpIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgKCgi
aWE2NCIgXyAuLi4pICAgICAiL2Jvb3RpYTY0LmVmaSIpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICgoXyAuLi4pICAgICAgICAgICAgICAgI2YpKSkKLSAgICAgICAgIChjb3JlLWVmaSAoc3Ry
aW5nLWFwcGVuZAotICAgICAgICAgICAgICAgICAgICA7OyBUaGlzIGlzIHRoZSBhcmNoIGRlcGVu
ZGVudCBmaWxlIG5hbWUgb2YgR1JVQiwgZS5nLgotICAgICAgICAgICAgICAgICAgICA7OyBpMzY4
LWVmaS9jb3JlLmVmaSBvciBhcm02NC1lZmkvY29yZS5lZmkuCi0gICAgICAgICAgICAgICAgICAg
IChtYXRjaCBhcmNoCi0gICAgICAgICAgICAgICAgICAgICAgKCJpNjg2IiAgICAiaTM4NiIpCi0g
ICAgICAgICAgICAgICAgICAgICAgKCJhYXJjaDY0IiAiYXJtNjQiKQotICAgICAgICAgICAgICAg
ICAgICAgICgicmlzY3YiICAgInJpc2N2MzIiKQotICAgICAgICAgICAgICAgICAgICAgIChfICAg
ICAgICAgYXJjaCkpCi0gICAgICAgICAgICAgICAgICAgICItZWZpL2NvcmUuZWZpIikpKQotICAg
ICh3aXRoLWltcG9ydGVkLW1vZHVsZXMKLSAgICAgJygoZ3VpeCBidWlsZCB1bmlvbikpCi0gICAg
ICN+KGxhbWJkYSAoYm9vdGxvYWRlciB0YXJnZXQgbW91bnQtcG9pbnQpCi0gICAgICAgICAiSW5z
dGFsbCB0aGUgQk9PVExPQURFUiwgd2hpY2ggbXVzdCBiZSB0aGUgcGFja2FnZSBncnViLCBhcyBl
LmcuCi1ib290eDY0LmVmaSBvciBib290YWE2NC5lZmkgaW50byBTVUJESVIsIHdoaWNoIGlzIHVz
dWFsbHkgZWZpL0d1aXggb3IgZWZpL2Jvb3QsCi1iZWxvdyB0aGUgZGlyZWN0b3J5IFRBUkdFVCBm
b3IgdGhlIHN5c3RlbSB3aG9zZSByb290IGlzIG1vdW50ZWQgYXQgTU9VTlQtUE9JTlQuCisoZGVm
aW5lKiAobWFrZS1ncnViLWVmaS1uZXRib290LWluc3RhbGxlciBncnViLWVmaSBncnViLWNmZyBz
dWJkaXIpCisgICJNYWtlIGEgYm9vdGxvYWRlci1pbnN0YWxsZXIgZm9yIGEgZ3J1Yi1lZmktbmV0
Ym9vdCBib290bG9hZGVyLCB3aGljaCBleHBlY3RzCitpdHMgZmlsZXMgaW4gU1VCRElSIGFuZCBp
dHMgY29uZmlndXJhdGlvbiBmaWxlIGluIEdSVUItQ0ZHLgorCitBcyBhIGdydWItZWZpLW5ldGJv
b3QgcGFja2FnZSBpcyBhbHJlYWR5IHByZWluc3RhbGxlZCBieSAnZ3J1Yi1ta25ldGRpcicsIHRo
ZQoraW5zdGFsbGVyIGJhc2ljYWxseSBjb3BpZXMgYWxsIGZpbGVzIGZyb20gdGhlIGJvb3Rsb2Fk
ZXItcGFja2FnZSAob3IgcHJvZmlsZSkKK2ludG8gdGhlIGJvb3Rsb2FkZXItdGFyZ2V0IGRpcmVj
dG9yeS4KKworQWRkaXRpb25hbGx5IGZvciBuZXR3b3JrIGJvb3Rpbmcgb3ZlciBURlRQLCB0d28g
cmVsYXRpdmUgc3ltbGlua3MgdG8gdGhlIHN0b3JlCithbmQgdG8gdGhlIEdSVUItQ0ZHIGZpbGUg
YXJlIG5lY2Vzc2FyeS4gIER1ZSB0byB0aGlzIGEgVEZUUCByb290IGRpcmVjdG9yeSBtdXN0Citu
b3QgYmUgbG9jYXRlZCBvbiBhIEZBVCBmaWxlLXN5c3RlbS4KKworSWYgdGhlIGJvb3Rsb2FkZXIt
dGFyZ2V0IGRvZXMgbm90IHN1cHBvcnQgc3ltbGlua3MsIHRoZW4gaXQgaXMgYXNzdW1lZCB0byBi
ZSBhCitraW5kIG9mIEVGSSBTeXN0ZW0gUGFydGl0aW9uIChFU1ApLiAgSW4gdGhpcyBjYXNlIGFu
IGludGVybWVkaWF0ZSBjb25maWd1cmF0aW9uCitmaWxlIGlzIGNyZWF0ZWQgd2l0aCB0aGUgaGVs
cCBvZiBHUlVCLUVGSSB0byBsb2FkIHRoZSBHUlVCLUNGRy4KKworVGhlIGluc3RhbGxlciBpcyB1
c2FibGUgZm9yIGFueSBlZmktYm9vdGxvYWRlci1jaGFpbiwgd2hpY2ggcHJlcGFyZXMgdGhlCiti
b290bG9hZGVyLXByb2ZpbGUgaW4gYSB3YXkgcmVhZHkgZm9yIGNvcHlpbmcuCisKK1RoZSBpbnN0
YWxsZXIgZG9lcyBub3QgbWFuaXB1bGF0ZSB0aGUgc3lzdGVtJ3MgJ1VFRkkgQm9vdCBNYW5hZ2Vy
Jy4iCisgICh3aXRoLWltcG9ydGVkLW1vZHVsZXMgJygoZ3VpeCBidWlsZCB1bmlvbikpCisgICAg
I34obGFtYmRhIChib290bG9hZGVyIHRhcmdldCBtb3VudC1wb2ludCkKKyAgICAgICAgIkNvcHkg
dGhlIEJPT1RMT0FERVIsIHdoaWNoIG11c3QgYmUgYSBwcmVpbnN0YWxsZWQgZ3J1Yi1lZmktbmV0
Ym9vdAorcGFja2FnZSB3aXRoIGEgU1VCRElSIGxpa2UgZWZpL2Jvb3Qgb3IgZWZpL0d1aXgsIGJl
bG93IHRoZSBkaXJlY3RvcnkKK1RBUkdFVCBmb3IgdGhlIHN5c3RlbSB3aG9zZSByb290IGlzIG1v
dW50ZWQgYXQgTU9VTlQtUE9JTlQuCiAKIE1PVU5ULVBPSU5UIGlzIHRoZSBsYXN0IGFyZ3VtZW50
IGluICdndWl4IHN5c3RlbSBpbml0IC9ldGMvY29uZmlnLnNjbSBtbnQvcG9pbnQnCiBvciAnLycg
Zm9yIG90aGVyICdndWl4IHN5c3RlbScgY29tbWFuZHMuCkBAIC02NTMsMTcgKzY0OSwxOCBAQCAo
ZGVmaW5lIChpbnN0YWxsLWdydWItZWZpLW5ldGJvb3Qgc3ViZGlyKQogCiAob3BlcmF0aW5nLXN5
c3RlbQogIChib290bG9hZGVyIChib290bG9hZGVyLWNvbmZpZ3VyYXRpb24KLSAgICAgICAgICAg
ICAgKHRhcmdldHMgJyhcIi9ib290XCIpKQorICAgICAgICAgICAgICAodGFyZ2V0cyAnKFwiL2Jv
b3QvZWZpXCIpKQogICAgICAgICAgICAgICDigKYpKQogIOKApikKIAogVEFSR0VUIGlzIHJlcXVp
cmVkIHRvIGJlIGFuIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lLCB1c3VhbGx5IG1vdW50ZWQgdmlh
IE5GUywKIGFuZCBmaW5hbGx5IG5lZWRzIHRvIGJlIHByb3ZpZGVkIGJ5IGEgVEZUUCBzZXJ2ZXIg
YXMgdGhlIFRGVFAgcm9vdCBkaXJlY3RvcnkuCiAKK1VzdWFsbHkgdGhlIGluc3RhbGxlciB3aWxs
IGJlIHVzZWQgdG8gcHJlcGFyZSBuZXR3b3JrIGJvb3Rpbmcgb3ZlciBURlRQLiAgVGhlbgogR1JV
QiB3aWxsIGxvYWQgdGZ0cDovL3NlcnZlci9TVUJESVIvZ3J1Yi5jZmcgYW5kIHRoaXMgZmlsZSB3
aWxsIGluc3RydWN0IGl0IHRvCiBsb2FkIG1vcmUgZmlsZXMgZnJvbSB0aGUgc3RvcmUgbGlrZSB0
ZnRwOi8vc2VydmVyL2dudS9zdG9yZS/igKYtbGludXjigKYvSW1hZ2UuCiAKLVRvIG1ha2UgdGhp
cyBwb3NzaWJsZSB0d28gc3ltbGlua3Mgd2lsbCBiZSBjcmVhdGVkLiBUaGUgZmlyc3Qgc3ltbGlu
ayBwb2ludHMKK1RvIG1ha2UgdGhpcyBwb3NzaWJsZSB0d28gc3ltbGlua3Mgd2lsbCBiZSBjcmVh
dGVkLiAgVGhlIGZpcnN0IHN5bWxpbmsgcG9pbnRzCiByZWxhdGl2ZWx5IGZvcm0gTU9VTlQtUE9J
TlQvVEFSR0VUL1NVQkRJUi9ncnViLmNmZyB0bwogTU9VTlQtUE9JTlQvYm9vdC9ncnViL2dydWIu
Y2ZnLCBhbmQgdGhlIHNlY29uZCBzeW1saW5rIHBvaW50cyByZWxhdGl2ZWx5IGZyb20KIE1PVU5U
LVBPSU5UL1RBUkdFVC8lc3RvcmUtcHJlZml4IHRvIE1PVU5ULVBPSU5ULyVzdG9yZS1wcmVmaXgu
CkBAIC02NzMsMzQgKzY3MCw3OCBAQCAoZGVmaW5lIChpbnN0YWxsLWdydWItZWZpLW5ldGJvb3Qg
c3ViZGlyKQogCiBJdCBpcyBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgYm90aCBzeW1saW5r
cyB3aWxsIHBvaW50IG91dHNpZGUgdGhlIFRGVFAgcm9vdAogZGlyZWN0b3J5IGFuZCB0aGF0IHRo
ZSBUQVJHRVQvJXN0b3JlLXByZWZpeCBzeW1saW5rIG1ha2VzIHRoZSB3aG9sZSBzdG9yZQotYWNj
ZXNzaWJsZSB2aWEgVEZUUC4gUG9zc2libHkgdGhlIFRGVFAgc2VydmVyIG11c3QgYmUgY29uZmln
dXJlZAotdG8gYWxsb3cgYWNjZXNzZXMgb3V0c2lkZSBpdHMgVEZUUCByb290IGRpcmVjdG9yeS4g
VGhpcyBtYXkgbmVlZCB0byBiZQotY29uc2lkZXJlZCBmb3Igc2VjdXJpdHkgYXNwZWN0cy4iCi0g
ICAgICAgICAodXNlLW1vZHVsZXMgKChndWl4IGJ1aWxkIHVuaW9uKSAjOnNlbGVjdCAoc3ltbGlu
ay1yZWxhdGl2ZSkpKQotICAgICAgICAgKGxldCogKChuZXQtZGlyIChzdHJpbmctYXBwZW5kIG1v
dW50LXBvaW50IHRhcmdldCAiLyIpKQotICAgICAgICAgICAgICAgIChzdWItZGlyIChzdHJpbmct
YXBwZW5kIG5ldC1kaXIgIyRzdWJkaXIgIi8iKSkKLSAgICAgICAgICAgICAgICAoc3RvcmUgKHN0
cmluZy1hcHBlbmQgbW91bnQtcG9pbnQgKCVzdG9yZS1wcmVmaXgpKSkKLSAgICAgICAgICAgICAg
ICAoc3RvcmUtbGluayAoc3RyaW5nLWFwcGVuZCBuZXQtZGlyICglc3RvcmUtcHJlZml4KSkpCi0g
ICAgICAgICAgICAgICAgKGdydWItY2ZnIChzdHJpbmctYXBwZW5kIG1vdW50LXBvaW50ICIvYm9v
dC9ncnViL2dydWIuY2ZnIikpCi0gICAgICAgICAgICAgICAgKGdydWItY2ZnLWxpbmsgKHN0cmlu
Zy1hcHBlbmQgc3ViLWRpciAoYmFzZW5hbWUgZ3J1Yi1jZmcpKSkKLSAgICAgICAgICAgICAgICAo
Ym9vdC1lZmktbGluayAoc3RyaW5nLWFwcGVuZCBzdWItZGlyICMkYm9vdC1lZmktbGluaykpKQot
ICAgICAgICAgICA7OyBQcmVwYXJlIHRoZSBzeW1saW5rIHRvIHRoZSBzdG9yZS4KLSAgICAgICAg
ICAgKG1rZGlyLXAgKGRpcm5hbWUgc3RvcmUtbGluaykpCi0gICAgICAgICAgIChmYWxzZS1pZi1l
eGNlcHRpb24gKGRlbGV0ZS1maWxlIHN0b3JlLWxpbmspKQotICAgICAgICAgICAoc3ltbGluay1y
ZWxhdGl2ZSBzdG9yZSBzdG9yZS1saW5rKQotICAgICAgICAgICA7OyBQcmVwYXJlIHRoZSBzeW1s
aW5rIHRvIHRoZSBncnViLmNmZywgd2hpY2ggcG9pbnRzIGludG8gdGhlIHN0b3JlLgotICAgICAg
ICAgICAobWtkaXItcCAoZGlybmFtZSBncnViLWNmZy1saW5rKSkKLSAgICAgICAgICAgKGZhbHNl
LWlmLWV4Y2VwdGlvbiAoZGVsZXRlLWZpbGUgZ3J1Yi1jZmctbGluaykpCi0gICAgICAgICAgIChz
eW1saW5rLXJlbGF0aXZlIGdydWItY2ZnIGdydWItY2ZnLWxpbmspCi0gICAgICAgICAgIDs7IElu
c3RhbGwgR1JVQiwgd2hpY2ggcmVmZXJzIHRvIHRoZSBncnViLmNmZywgd2l0aCBzdXBwb3J0IGZv
cgotICAgICAgICAgICA7OyBlbmNyeXB0ZWQgcGFydGl0aW9ucywKLSAgICAgICAgICAgKHNldGVu
diAiR1JVQl9FTkFCTEVfQ1JZUFRPRElTSyIgInkiKQotICAgICAgICAgICAoaW52b2tlL3F1aWV0
IChzdHJpbmctYXBwZW5kIGJvb3Rsb2FkZXIgIi9iaW4vZ3J1Yi1ta25ldGRpciIpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgIi0tbmV0LWRpcmVjdG9yeT0iIG5ldC1k
aXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgIi0tc3ViZGlyPSIg
IyRzdWJkaXIpKQotICAgICAgICAgICA7OyBQcmVwYXJlIHRoZSBib290bG9hZGVyIHN5bWxpbmss
IHdoaWNoIHBvaW50cyB0byBjb3JlLmVmaSBvZiBHUlVCLgotICAgICAgICAgICAoZmFsc2UtaWYt
ZXhjZXB0aW9uIChkZWxldGUtZmlsZSBib290LWVmaS1saW5rKSkKLSAgICAgICAgICAgKHN5bWxp
bmsgIyRjb3JlLWVmaSBib290LWVmaS1saW5rKSkpKSkpCithY2Nlc3NpYmxlIHZpYSBURlRQLiAg
UG9zc2libHkgdGhlIFRGVFAgc2VydmVyIG11c3QgYmUgY29uZmlndXJlZCB0byBhbGxvdworYWNj
ZXNzZXMgb3V0c2lkZSBpdHMgVEZUUCByb290IGRpcmVjdG9yeS4gIFRoaXMgYWxsIG1heSBuZWVk
IHRvIGJlIGNvbnNpZGVyZWQKK2ZvciBzZWN1cml0eSBhc3BlY3RzLiAgSXQgaXMgYWR2aXNlZCB0
byBkaXNhYmxlIGFueSBURlRQIHdyaXRlIGFjY2VzcyEKKworVGhlIGluc3RhbGxlciBjYW4gYWxz
byBiZSB1c2VkIHRvIHByZXBhcmUgYm9vdGluZyBmcm9tIGxvY2FsIHN0b3JhZ2VzLCBpZiB0aGUK
K3VuZGVybHlpbmcgZmlsZS1zeXN0ZW0sIGxpa2UgRkFUIG9uIGFuIEVGSSBTeXN0ZW0gUGFydGl0
aW9uIChFU1ApLCBkb2VzIG5vdAorc3VwcG9ydCBzeW1saW5rcy4gIEluIHRoaXMgY2FzZSB0aGUg
TU9VTlQtUE9JTlQvVEFSR0VUL1NVQkRJUi9ncnViLmNmZyB3aWxsIGJlCitjcmVhdGVkIHdpdGgg
dGhlIGhlbHAgb2YgR1JVQi1FRkkgdG8gbG9hZCB0aGUgL2Jvb3QvZ3J1Yi9ncnViLmNmZyBmaWxl
LiAgQQorc3ltbGluayB0byB0aGUgc3RvcmUgaXMgbm90IG5lZWRlZCBpbiB0aGlzIGNhc2UuIgor
ICAgICAgICA7OyBJbiBjb250ZXh0IG9mIGEgZGlzayBpbWFnZSBjcmVhdGlvbiBUQVJHRVQgd2ls
bCBiZSAjZiBhbmQgYW4KKyAgICAgICAgOzsgaW5zdGFsbGVyIGlzIGV4cGVjdGVkIHRvIGRvIG5l
Y2Vzc2FyeSBpbnN0YWxsYXRpb25zIG9uIE1PVU5ULVBPSU5ULAorICAgICAgICA7OyB3aGljaCB3
aWxsIGJlY29tZSB0aGUgcm9vdCBmaWxlIHN5c3RlbS4KKyAgICAgICAgOzsgSWYgVEFSR0VUIGlz
ICNmLCB0aGlzIGluc3RhbGxlciBoYXMgbm90aGluZyB0byBkbywgYXMgaXQgb25seSBjYXJlcwor
ICAgICAgICA7OyBhYm91dCB0aGUgRUZJIFN5c3RlbSBQYXJ0aXRpb24gKEVTUCkuCisgICAgICAg
ICh3aGVuIHRhcmdldAorICAgICAgICAgICh1c2UtbW9kdWxlcyAoKGd1aXggYnVpbGQgdW5pb24p
ICM6c2VsZWN0IChzeW1saW5rLXJlbGF0aXZlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGlj
ZS05IHBvcGVuKQorICAgICAgICAgICAgICAgICAgICAgICAoaWNlLTkgcmRlbGltKSkKKyAgICAg
ICAgICAobGV0KiAoKG1vdW50LXBvaW50L3RhcmdldCAoc3RyaW5nLWFwcGVuZCBtb3VudC1wb2lu
dCB0YXJnZXQgIi8iKSkKKyAgICAgICAgICAgICAgICAgOzsgV2hlbiBpbnN0YWxsaW5nIEd1aXgs
IGl0IGlzIGNvbW1vbiB0byBtb3VudCBUQVJHRVQgYmVsb3cKKyAgICAgICAgICAgICAgICAgOzsg
TU9VTlQtUE9JTlQgcmF0aGVyIHRoYW4gdGhlIHJvb3QgZGlyZWN0b3J5LgorICAgICAgICAgICAg
ICAgICAoYm9vdGxvYWRlci10YXJnZXQgKGlmIChmaWxlLWV4aXN0cz8gbW91bnQtcG9pbnQvdGFy
Z2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdW50LXBvaW50
L3RhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCkp
CisgICAgICAgICAgICAgICAgIChzdG9yZSAoc3RyaW5nLWFwcGVuZCBtb3VudC1wb2ludCAoJXN0
b3JlLXByZWZpeCkpKQorICAgICAgICAgICAgICAgICAoc3RvcmUtbGluayAoc3RyaW5nLWFwcGVu
ZCBib290bG9hZGVyLXRhcmdldCAoJXN0b3JlLXByZWZpeCkpKQorICAgICAgICAgICAgICAgICAo
Z3J1Yi1jZmcgKHN0cmluZy1hcHBlbmQgbW91bnQtcG9pbnQgIyRncnViLWNmZykpCisgICAgICAg
ICAgICAgICAgIChncnViLWNmZy1saW5rIChzdHJpbmctYXBwZW5kIGJvb3Rsb2FkZXItdGFyZ2V0
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMkc3ViZGly
ICIvIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFz
ZW5hbWUgZ3J1Yi1jZmcpKSkpCisgICAgICAgICAgICA7OyBDb3B5IHRoZSBib290bG9hZGVyIGlu
dG8gdGhlIGJvb3Rsb2FkZXItdGFyZ2V0IGRpcmVjdG9yeS4KKyAgICAgICAgICAgIDs7IFNob3Vs
ZCB3ZSBiZWZvcmVoYW5kIHJlY3Vyc2l2ZWx5IGRlbGV0ZSBhbnkgZXhpc3RpbmcgZmlsZT8KKyAg
ICAgICAgICAgIChjb3B5LXJlY3Vyc2l2ZWx5IGJvb3Rsb2FkZXIgYm9vdGxvYWRlci10YXJnZXQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6Zm9sbG93LXN5bWxpbmtzPyAjdAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIzpsb2cgKCVtYWtlLXZvaWQtcG9ydCAidyIpKQor
ICAgICAgICAgICAgOzsgRm9yIFRGVFAgd2UgbmVlZCB0byBpbnN0YWxsIGFkZGl0aW9uYWwgcmVs
YXRpdmUgc3ltbGlua3MuCisgICAgICAgICAgICA7OyBJZiB3ZSBpbnN0YWxsIG9uIGFuIEVGSSBT
eXN0ZW0gUGFydGl0aW9uIChFU1ApIG9yIHNvbWUgb3RoZXIgRkFUCisgICAgICAgICAgICA7OyBm
aWxlLXN5c3RlbSwgdGhlbiBzeW1saW5rcyBjYW5ub3QgYmUgY3JlYXRlZCBhbmQgYXJlIG5vdCBu
ZWVkZWQuCisgICAgICAgICAgICA7OyBUaGVyZWZvcmUgd2UgaWdub3JlIGV4Y2VwdGlvbnMgd2hl
biB0cnlpbmcuCisgICAgICAgICAgICA7OyBQcmVwYXJlIHRoZSBzeW1saW5rIHRvIHRoZSBncnVi
LmNmZy4KKyAgICAgICAgICAgIChta2Rpci1wIChkaXJuYW1lIGdydWItY2ZnLWxpbmspKQorICAg
ICAgICAgICAgKGZhbHNlLWlmLWV4Y2VwdGlvbiAoZGVsZXRlLWZpbGUgZ3J1Yi1jZmctbGluaykp
CisgICAgICAgICAgICAoaWYgKHVuc3BlY2lmaWVkPworICAgICAgICAgICAgICAgIChmYWxzZS1p
Zi1leGNlcHRpb24gKHN5bWxpbmstcmVsYXRpdmUgZ3J1Yi1jZmcgZ3J1Yi1jZmctbGluaykpKQor
ICAgICAgICAgICAgICA7OyBTeW1saW5rcyBhcmUgc3VwcG9ydGVkLgorICAgICAgICAgICAgICAo
YmVnaW4KKyAgICAgICAgICAgICAgICA7OyBQcmVwYXJlIHRoZSBzeW1saW5rIHRvIHRoZSBzdG9y
ZS4KKyAgICAgICAgICAgICAgICAobWtkaXItcCAoZGlybmFtZSBzdG9yZS1saW5rKSkKKyAgICAg
ICAgICAgICAgICAoZmFsc2UtaWYtZXhjZXB0aW9uIChkZWxldGUtZmlsZSBzdG9yZS1saW5rKSkK
KyAgICAgICAgICAgICAgICAoc3ltbGluay1yZWxhdGl2ZSBzdG9yZSBzdG9yZS1saW5rKSkKKyAg
ICAgICAgICAgICAgOzsgQ3JlYXRpbmcgc3ltbGlua3MgZG9lcyBub3Qgc2VlbSB0byBiZSBzdXBw
b3J0ZWQuCisgICAgICAgICAgICAgIDs7IFByb2JhYmx5IGFuIEVTUCBpcyB1c2VkLgorICAgICAg
ICAgICAgICA7OyBJbnN0ZWFkIHdlIGNhbiBzY3JpcHQgdG8gc2VhcmNoIGFuZCBsb2FkIHRoZSBh
Y3R1YWwgZ3J1Yi5jZmcuCisgICAgICAgICAgICAgIChsZXQqICgocHJvYmUgIyQoZmlsZS1hcHBl
bmQgZ3J1Yi1lZmkgIi9zYmluL2dydWItcHJvYmUiKSkKKyAgICAgICAgICAgICAgICAgICAgIChw
b3J0CisgICAgICAgICAgICAgICAgICAgICAgIChvcGVuLXBpcGUqIE9QRU5fUkVBRCBwcm9iZSAi
LS10YXJnZXQ9ZnNfdXVpZCIgZ3J1Yi1jZmcpKQorICAgICAgICAgICAgICAgICAgICAgKHNlYXJj
aC1yb290CisgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCAocmVhZC1saW5lIHBvcnQpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgKCg/IGVvZi1vYmplY3Q/KQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOzsgVGhlcmUgaXMgbm8gVVVJRCBhdmFpbGFibGUuIEFzIGEgZmFsbGJhY2sg
c2VhcmNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBldmVyeXdoZXJlIGZvciB0aGUg
Z3J1Yi5jZmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAic2Vh
cmNoIC0tZmlsZSAtLXNldCAiICMkZ3J1Yi1jZmcpKQorICAgICAgICAgICAgICAgICAgICAgICAg
IChmcy11dWlkCisgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBUaGUgVVVJRCB0byBsb2Fk
IHRoZSBncnViLmNmZyBmcm9tIGlzIGtub3duLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHN0cmluZy1hcHBlbmQgInNlYXJjaCAtLWZzLXV1aWQgLS1zZXQgIiBmcy11dWlkKSkpKQorICAg
ICAgICAgICAgICAgICAgICAgKGxvYWQtZ3J1Yi1jZmcgKHN0cmluZy1hcHBlbmQgImNvbmZpZ2Zp
bGUgIiAjJGdydWItY2ZnKSkpCisgICAgICAgICAgICAgICAgKGNsb3NlLXBpcGUgcG9ydCkKKyAg
ICAgICAgICAgICAgICAod2l0aC1vdXRwdXQtdG8tZmlsZSBncnViLWNmZy1saW5rCisgICAgICAg
ICAgICAgICAgICAobGFtYmRhICgpCisgICAgICAgICAgICAgICAgICAgIChkaXNwbGF5IChzdHJp
bmctam9pbiAobGlzdCBzZWFyY2gtcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbG9hZC1ncnViLWNmZykKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJcbiIpKSkpKSkpKSkpKQogCiAMCiAKQEAgLTcxOCw3ICs3NTks
NyBAQCAoZGVmaW5lIGdydWItYm9vdGxvYWRlcgogICAgKHBhY2thZ2UgZ3J1YikKICAgIChpbnN0
YWxsZXIgaW5zdGFsbC1ncnViKQogICAgKGRpc2staW1hZ2UtaW5zdGFsbGVyIGluc3RhbGwtZ3J1
Yi1kaXNrLWltYWdlKQotICAgKGNvbmZpZ3VyYXRpb24tZmlsZSAiL2Jvb3QvZ3J1Yi9ncnViLmNm
ZyIpCisgICAoY29uZmlndXJhdGlvbi1maWxlIGdydWItY2ZnKQogICAgKGNvbmZpZ3VyYXRpb24t
ZmlsZS1nZW5lcmF0b3IgZ3J1Yi1jb25maWd1cmF0aW9uLWZpbGUpKSkKIAogKGRlZmluZSBncnVi
LW1pbmltYWwtYm9vdGxvYWRlcgpAQCAtNzI4LDE3ICs3NjksMjkgQEAgKGRlZmluZSBncnViLW1p
bmltYWwtYm9vdGxvYWRlcgogCiAoZGVmaW5lIGdydWItZWZpLWJvb3Rsb2FkZXIKICAgKGJvb3Rs
b2FkZXIKLSAgIChpbmhlcml0IGdydWItYm9vdGxvYWRlcikKKyAgIChuYW1lICdncnViLWVmaSkK
KyAgIChwYWNrYWdlIGdydWItZWZpKQogICAgKGluc3RhbGxlciBpbnN0YWxsLWdydWItZWZpKQog
ICAgKGRpc2staW1hZ2UtaW5zdGFsbGVyICNmKQotICAgKG5hbWUgJ2dydWItZWZpKQotICAgKHBh
Y2thZ2UgZ3J1Yi1lZmkpKSkKKyAgIChjb25maWd1cmF0aW9uLWZpbGUgZ3J1Yi1jZmcpCisgICAo
Y29uZmlndXJhdGlvbi1maWxlLWdlbmVyYXRvciBncnViLWNvbmZpZ3VyYXRpb24tZmlsZSkpKQog
Ci0oZGVmaW5lIGdydWItZWZpLW5ldGJvb3QtYm9vdGxvYWRlcgorKGRlZmluZSAobWFrZS1ncnVi
LWVmaS1uZXRib290LWJvb3Rsb2FkZXIgbmFtZSBzdWJkaXIpCiAgIChib290bG9hZGVyCi0gICAo
aW5oZXJpdCBncnViLWVmaS1ib290bG9hZGVyKQotICAgKG5hbWUgJ2dydWItZWZpLW5ldGJvb3Qt
Ym9vdGxvYWRlcikKLSAgIChpbnN0YWxsZXIgKGluc3RhbGwtZ3J1Yi1lZmktbmV0Ym9vdCAiZWZp
L0d1aXgiKSkpKQorICAgKG5hbWUgbmFtZSkKKyAgIChwYWNrYWdlIChtYWtlLWdydWItZWZpLW5l
dGJvb3QgKHN5bWJvbC0+c3RyaW5nIG5hbWUpIHN1YmRpcikpCisgICAoaW5zdGFsbGVyIChtYWtl
LWdydWItZWZpLW5ldGJvb3QtaW5zdGFsbGVyIGdydWItZWZpIGdydWItY2ZnIHN1YmRpcikpCisg
ICAoZGlzay1pbWFnZS1pbnN0YWxsZXIgI2YpCisgICAoY29uZmlndXJhdGlvbi1maWxlIGdydWIt
Y2ZnKQorICAgKGNvbmZpZ3VyYXRpb24tZmlsZS1nZW5lcmF0b3IgZ3J1Yi1lZmktY29uZmlndXJh
dGlvbi1maWxlKSkpCisKKyhkZWZpbmUgZ3J1Yi1lZmktbmV0Ym9vdC1ib290bG9hZGVyCisgICht
YWtlLWdydWItZWZpLW5ldGJvb3QtYm9vdGxvYWRlciAnZ3J1Yi1lZmktbmV0Ym9vdC1ib290bG9h
ZGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZWZpL0d1aXgiKSkKKwor
KGRlZmluZSBncnViLWVmaS1uZXRib290LXJlbW92YWJsZS1ib290bG9hZGVyCisgIChtYWtlLWdy
dWItZWZpLW5ldGJvb3QtYm9vdGxvYWRlciAnZ3J1Yi1lZmktbmV0Ym9vdC1yZW1vdmFibGUtYm9v
dGxvYWRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVmaS9ib290Iikp
CiAKIChkZWZpbmUgZ3J1Yi1ta3Jlc2N1ZS1ib290bG9hZGVyCiAgIChib290bG9hZGVyCmRpZmYg
LS1naXQgYS9nbnUvcGFja2FnZXMvYm9vdGxvYWRlcnMuc2NtIGIvZ251L3BhY2thZ2VzL2Jvb3Rs
b2FkZXJzLnNjbQppbmRleCA3ZWE2ZjVhNjQ3Li42ODc2YWIxN2I5IDEwMDY0NAotLS0gYS9nbnUv
cGFja2FnZXMvYm9vdGxvYWRlcnMuc2NtCisrKyBiL2dudS9wYWNrYWdlcy9ib290bG9hZGVycy5z
Y20KQEAgLTE1LDYgKzE1LDcgQEAKIDs7OyBDb3B5cmlnaHQgwqkgMjAyMCwgMjAyMSBQaWVycmUg
TGFuZ2xvaXMgPHBpZXJyZS5sYW5nbG9pc0BnbXguY29tPgogOzs7IENvcHlyaWdodCDCqSAyMDIx
IFZpbmNlbnQgTGVnb2xsIDx2aW5jZW50LmxlZ29sbEBnbWFpbC5jb20+CiA7OzsgQ29weXJpZ2h0
IMKpIDIwMjEgQnJpY2UgV2FlZ2VuZWlyZSA8YnJpY2VAd2FlZ2VuZWkucmU+Cis7OzsgQ29weXJp
Z2h0IMKpIDIwMjEgU3RlZmFuIDxzdGVmYW4tZ3VpeEB2b2RhZm9uZW1haWwuZGU+CiA7OzsKIDs7
OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgR3VpeC4KIDs7OwpAQCAtNjYsMTMgKzY3LDE3IEBA
IChkZWZpbmUtbW9kdWxlIChnbnUgcGFja2FnZXMgYm9vdGxvYWRlcnMpCiAgICM6dXNlLW1vZHVs
ZSAoZ251IHBhY2thZ2VzIHZpcnR1YWxpemF0aW9uKQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNr
YWdlcyB4b3JnKQogICAjOnVzZS1tb2R1bGUgKGd1aXggYnVpbGQtc3lzdGVtIGdudSkKKyAgIzp1
c2UtbW9kdWxlIChndWl4IGJ1aWxkLXN5c3RlbSB0cml2aWFsKQogICAjOnVzZS1tb2R1bGUgKGd1
aXggZG93bmxvYWQpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBnZXhwKQogICAjOnVzZS1tb2R1bGUg
KGd1aXggZ2l0LWRvd25sb2FkKQogICAjOnVzZS1tb2R1bGUgKChndWl4IGxpY2Vuc2VzKSAjOnBy
ZWZpeCBsaWNlbnNlOikKICAgIzp1c2UtbW9kdWxlIChndWl4IHBhY2thZ2VzKQogICAjOnVzZS1t
b2R1bGUgKGd1aXggdXRpbHMpCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTEpCiAgICM6dXNl
LW1vZHVsZSAoc3JmaSBzcmZpLTI2KQorICAjOnVzZS1tb2R1bGUgKGljZS05IG1hdGNoKQorICAj
OnVzZS1tb2R1bGUgKGljZS05IG9wdGFyZ3MpCiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgcmVnZXgp
KQogCiAoZGVmaW5lIHVuaWZvbnQKQEAgLTM2Niw2ICszNzEsOTEgQEAgKGRlZmluZS1wdWJsaWMg
Z3J1Yi1oeWJyaWQKICAgICAgICAgICAgICAgICAgIChzY2FuZGlyIGlucHV0LWRpcikpCiAgICAg
ICAgICAgICAgICAgICN0KSkpKSkpKSkpCiAKKyhkZWZpbmUtcHVibGljIChtYWtlLWdydWItZWZp
LW5ldGJvb3QgbmFtZSBzdWJkaXIpCisgICJNYWtlIGEgZ3J1Yi1lZmktbmV0Ym9vdCBwYWNrYWdl
IG5hbWVkIE5BTUUsIHdoaWNoIHdpbGwgYmUgYWJsZSB0byBib290IG92ZXIKK25ldHdvcmsgdmlh
IFRGVFAgYnkgYWNjZXNzaW5nIGl0cyBmaWxlcyBpbiB0aGUgU1VCRElSIG9mIGEgVEZUUCByb290
IGRpcmVjdG9yeS4KK1RoaXMgcGFja2FnZSBpcyBhbHNvIGFibGUgdG8gYm9vdCBmcm9tIGxvY2Fs
IHN0b3JhZ2UgZGV2aWNlcy4KKworQSBib290bG9hZGVyLWluc3RhbGxlciBiYXNpY2FsbHkgbmVl
ZHMgdG8gY29weSB0aGUgcGFja2FnZSBjb250ZW50IGludG8gdGhlCitib290bG9hZGVyLXRhcmdl
dCBkaXJlY3RvcnksIHdoaWNoIHdpbGwgdXN1YWxseSBiZSB0aGUgVEZUUCByb290LCBhcworJ2dy
dWItbWtuZXRkaXInIHdpbGwgYmUgaW52b2tlZCBhbHJlYWR5IGR1cmluZyB0aGUgcGFja2FnZSBj
cmVhdGlvbi4KKworQWx0ZXJuYXRpdmVseSB0aGUgYm9vdGxvYWRlci10YXJnZXQgZGlyZWN0b3J5
IGNhbiBiZSBhIG1vdW50ZWQgRUZJIFN5c3RlbQorUGFydGl0aW9uIChFU1ApLCBvciBhIHNpbWls
YXIgcGFydGl0aW9uIHdpdGggYSBGQVQgZmlsZSBzeXN0ZW0sIGZvciBib290aW5nCitmcm9tIGxv
Y2FsIHN0b3JhZ2UgZGV2aWNlcy4KKworVGhlIG5hbWUgb2YgdGhlIEdSVUIgRUZJIGJpbmFyeSB3
aWxsIGNvbmZvcm0gdG8gdGhlIFVFRkkgc3BlY2lmaWNhdGlvbiBmb3IKK3JlbW92YWJsZSBtZWRp
YS4gIERlcGVuZGluZyBvbiB0aGUgc3lzdGVtIGl0IHdpbGwgYmUgZS5nLiBib290eDY0LmVmaSBv
cgorYm9vdGFhNjQuZWZpIGJlbG93IFNVQkRJUi4KKworVGhlIFNVQkRJUiBhcmd1bWVudCBuZWVk
cyB0byBiZSBzZXQgdG8gXCJlZmkvYm9vdFwiIHRvIGNyZWF0ZSBhIHBhY2thZ2Ugd2hpY2gKK2Nv
bmZvcm1zIHRvIHRoZSBVRUZJIHNwZWNpZmljYXRpb24gZm9yIHJlbW92YWJsZSBtZWRpYS4KKwor
VGhlIFNVQkRJUiBhcmd1bWVudCBkZWZhdWx0cyB0byBcImVmaS9HdWl4XCIsIGFzIGl0IGlzIGFs
c28gdGhlIGNhc2UgZm9yCisnZ3J1Yi1lZmktYm9vdGxvYWRlcicuIgorICAocGFja2FnZQorICAg
IChuYW1lIG5hbWUpCisgICAgKHZlcnNpb24gKHBhY2thZ2UtdmVyc2lvbiBncnViLWVmaSkpCisg
ICAgOzsgU291cmNlIGlzIG5vdCBuZWVkZWQsIGJ1dCBpdCBjYW5ub3QgYmUgb21pdHRlZC4KKyAg
ICAoc291cmNlICNmKQorICAgIChidWlsZC1zeXN0ZW0gdHJpdmlhbC1idWlsZC1zeXN0ZW0pCisg
ICAgKGFyZ3VtZW50cworICAgICAobGV0KiAoKHN5c3RlbSAoc3RyaW5nLXNwbGl0IChuaXgtc3lz
dGVtLT5nbnUtdHJpcGxldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciAo
JWN1cnJlbnQtdGFyZ2V0LXN5c3RlbSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKCVjdXJyZW50LXN5c3RlbSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICNcLSkpCisgICAgICAgICAgICAoYXJjaCAoZmlyc3Qgc3lzdGVtKSkKKyAgICAgICAgICAg
IChib290LWVmaQorICAgICAgICAgICAgIChtYXRjaCBzeXN0ZW0KKyAgICAgICAgICAgICAgIDs7
IFRoZXNlIGFyZSB0aGUgc3VwcG9ydGVuZCBzeXN0ZW1zIGFuZCB0aGUgbmFtZXMgZGVmaW5lZCBi
eQorICAgICAgICAgICAgICAgOzsgdGhlIFVFRkkgc3RhbmRhcmQgZm9yIHJlbW92YWJsZSBtZWRp
YS4KKyAgICAgICAgICAgICAgICgoImk2ODYiIF8gLi4uKSAgICAgICAgIi9ib290aWEzMi5lZmki
KQorICAgICAgICAgICAgICAgKCgieDg2XzY0IiBfIC4uLikgICAgICAiL2Jvb3R4NjQuZWZpIikK
KyAgICAgICAgICAgICAgICgoImFybSIgXyAuLi4pICAgICAgICAgIi9ib290YXJtLmVmaSIpCisg
ICAgICAgICAgICAgICAoKCJhYXJjaDY0IiBfIC4uLikgICAgICIvYm9vdGFhNjQuZWZpIikKKyAg
ICAgICAgICAgICAgICgoInJpc2N2IiBfIC4uLikgICAgICAgIi9ib290cmlzY3YzMi5lZmkiKQor
ICAgICAgICAgICAgICAgKCgicmlzY3Y2NCIgXyAuLi4pICAgICAiL2Jvb3RyaXNjdjY0LmVmaSIp
CisgICAgICAgICAgICAgICA7OyBPdGhlciBzeXN0ZW1zIGFyZSBub3Qgc3VwcG9ydGVkLCBhbHRo
b3VnaCBkZWZpbmVkLgorICAgICAgICAgICAgICAgOzsgKCgicmlzY3YxMjgiIF8gLi4uKSAiL2Jv
b3RyaXNjdjEyOC5lZmkiKQorICAgICAgICAgICAgICAgOzsgKCgiaWE2NCIgXyAuLi4pICAgICAi
L2Jvb3RpYTY0LmVmaSIpCisgICAgICAgICAgICAgICAoKF8gLi4uKSAgICAgICAgICAgICAgICNm
KSkpCisgICAgICAgICAgICAoY29yZS1lZmkgKHN0cmluZy1hcHBlbmQKKyAgICAgICAgICAgICAg
ICAgICAgICAgOzsgVGhpcyBpcyB0aGUgYXJjaCBkZXBlbmRlbnQgZmlsZSBuYW1lIG9mIEdSVUIs
IGUuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgOzsgaTM2OC1lZmkvY29yZS5lZmkgb3IgYXJt
NjQtZWZpL2NvcmUuZWZpLgorICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYXJjaAorICAg
ICAgICAgICAgICAgICAgICAgICAgICgiaTY4NiIgICAgImkzODYiKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICgiYWFyY2g2NCIgImFybTY0IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAo
InJpc2N2IiAgICJyaXNjdjMyIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAoXyAgICAgICAg
IGFyY2gpKQorICAgICAgICAgICAgICAgICAgICAgICAiLWVmaS9jb3JlLmVmaSIpKSkKKyAgICAg
ICBgKCM6bW9kdWxlcyAoKGd1aXggYnVpbGQgdXRpbHMpKQorICAgICAgICAgIzpidWlsZGVyCisg
ICAgICAgICAoYmVnaW4KKyAgICAgICAgICAgKHVzZS1tb2R1bGVzIChndWl4IGJ1aWxkIHV0aWxz
KSkKKyAgICAgICAgICAgKGxldCogKChib290bG9hZGVyIChhc3NvYy1yZWYgJWJ1aWxkLWlucHV0
cyAiZ3J1Yi1lZmkiKSkKKyAgICAgICAgICAgICAgICAgIChuZXQtZGlyIChhc3NvYy1yZWYgJW91
dHB1dHMgIm91dCIpKQorICAgICAgICAgICAgICAgICAgKHN1Yi1kaXIgKHN0cmluZy1hcHBlbmQg
bmV0LWRpciAiLyIgLHN1YmRpciAiLyIpKQorICAgICAgICAgICAgICAgICAgKGJvb3QtZWZpIChz
dHJpbmctYXBwZW5kIHN1Yi1kaXIgLGJvb3QtZWZpKSkKKyAgICAgICAgICAgICAgICAgIChjb3Jl
LWVmaSAoc3RyaW5nLWFwcGVuZCBzdWItZGlyICxjb3JlLWVmaSkpKQorICAgICAgICAgICAgIDs7
IEluc3RhbGwgR1JVQiwgd2hpY2ggcmVmZXJzIHRvIHRoZSBncnViLmNmZywgd2l0aCBzdXBwb3J0
IGZvcgorICAgICAgICAgICAgIDs7IGVuY3J5cHRlZCBwYXJ0aXRpb25zLAorICAgICAgICAgICAg
IChzZXRlbnYgIkdSVUJfRU5BQkxFX0NSWVBUT0RJU0siICJ5IikKKyAgICAgICAgICAgICAoaW52
b2tlL3F1aWV0IChzdHJpbmctYXBwZW5kIGJvb3Rsb2FkZXIgIi9iaW4vZ3J1Yi1ta25ldGRpciIp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAiLS1uZXQtZGlyZWN0
b3J5PSIgbmV0LWRpcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5k
ICItLXN1YmRpcj0iICxzdWJkaXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBUaGVz
ZSBtb2R1bGVzIG11c3QgYmUgcHJlbG9hZGVkIHRvIGFsbG93IGJvb3RpbmcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDs7IGZyb20gYW4gRVNQIG9yIGEgc2ltaWxhciBwYXJ0aXRpb24gd2l0
aCBhIEZBVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgZmlsZSBzeXN0ZW0uCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAiLS1tb2R1bGVzPXBhcnRfbXNk
b3MgcGFydF9ncHQgZmF0IikpCisgICAgICAgICAgICAgOzsgTW92ZSBHUlVCJ3MgY29yZS5lZmkg
dG8gdGhlIHJlbW92YWJsZSBtZWRpYSBuYW1lLgorICAgICAgICAgICAgIChmYWxzZS1pZi1leGNl
cHRpb24gKGRlbGV0ZS1maWxlIGJvb3QtZWZpKSkKKyAgICAgICAgICAgICAocmVuYW1lLWZpbGUg
Y29yZS1lZmkgYm9vdC1lZmkpKSkpKSkKKyAgICAoaW5wdXRzIGAoKCJncnViLWVmaSIgLGdydWIt
ZWZpKSkpCisgICAgKHN5bm9wc2lzIChwYWNrYWdlLXN5bm9wc2lzIGdydWItZWZpKSkKKyAgICAo
ZGVzY3JpcHRpb24gKHBhY2thZ2UtZGVzY3JpcHRpb24gZ3J1Yi1lZmkpKQorICAgIChob21lLXBh
Z2UgKHBhY2thZ2UtaG9tZS1wYWdlIGdydWItZWZpKSkKKyAgICAobGljZW5zZSAocGFja2FnZS1s
aWNlbnNlIGdydWItZWZpKSkpKQorCiAoZGVmaW5lLXB1YmxpYyBzeXNsaW51eAogICAobGV0ICgo
Y29tbWl0ICJiYjQxZTkzNWNjODNjNjI0MmRlMjRkMjI3MWUwNjdkNzZhZjM1ODVjIikpCiAgICAg
KHBhY2thZ2UKLS0gCjIuMzUuMQoK

--b1_oHy08PWmPsOPRRPhK59EbeSBynAeRsUjblVRNhusU
Content-Type: text/x-patch; name=v3-0003-gnu-bootloader-Add-U-Boot-packages-for-Raspberry-.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=v3-0003-gnu-bootloader-Add-U-Boot-packages-for-Raspberry-.patch

RnJvbSBmNmUwMWRiMDU4MWFkN2MyOTFhMjBmNWE4YjE1YmQ1OTI1YmE3MGFmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gPHN0ZWZhbi1ndWl4QHZvZGFmb25lbWFpbC5kZT4K
RGF0ZTogV2VkLCAxMyBBcHIgMjAyMiAyMToxMToyMCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjMg
My84XSBnbnU6IGJvb3Rsb2FkZXI6IEFkZCBVLUJvb3QgcGFja2FnZXMgZm9yIFJhc3BiZXJyeSBQ
aQogbW9kZWxzLgoKKiBnbnUvcGFja2FnZXMvYm9vdGxvYWRlci5zY20gKG1ha2UtdS1ib290LXBh
Y2thZ2UpOiBBZGQga2V5d29yZApwYXJhbWV0ZXJzICduYW1lJyBhbmQgJ2Rlc2NyaXB0aW9uJy4K
KG1ha2UtcHJlaW5zdGFsbGVkLXUtYm9vdC1wYWNrYWdlKTogTmV3IGZ1bmN0aW9uIHRvIG1ha2Ug
bWluaW1hbCBwYWNrYWdlcy4KKCV1LWJvb3QtcnBpLWVmaS1jb25maWdzKTogTmV3IGhlbHBlciBs
aXN0IHdpdGggY29uZmlnIHN0cmluZ3MuCigldS1ib290LXJwaS1kZXNjcmlwdGlvbi0zMi1iaXQs
ICV1LWJvb3QtcnBpLWRlc2NyaXB0aW9uLTY0LWJpdCwKJXUtYm9vdC1ycGktZWZpLWRlc2NyaXB0
aW9uLCAldS1ib290LXJwaS1lZmktZGVzY3JpcHRpb24tMzItYml0KTogTmV3IGhlbHBlcgpzdHJp
bmdzLgoodS1ib290LXJwaS0wLXcsIHUtYm9vdC1ycGksIHUtYm9vdC1ycGktMiwgdS1ib290LXJw
aS0zLCB1LWJvb3QtcnBpLTQsCnUtYm9vdC1ycGktNjQsIHUtYm9vdC1ycGktMC13LWVmaSwgdS1i
b290LXJwaS1lZmksIHUtYm9vdC1ycGktMi1lZmksCnUtYm9vdC1ycGktMy1lZmksIHUtYm9vdC1y
cGktNC1lZmksIHUtYm9vdC1ycGktZWZpLTY0KTogTmV3IHBhY2thZ2VzLgoKZGlmZiAtLWdpdCBh
L2dudS9wYWNrYWdlcy9ib290bG9hZGVycy5zY20gYi9nbnUvcGFja2FnZXMvYm9vdGxvYWRlcnMu
c2NtCmluZGV4IDEwZjJkZDVmYWQuLjg0ZDY1Yzk0Y2QgMTAwNjQ0Ci0tLSBhL2dudS9wYWNrYWdl
cy9ib290bG9hZGVycy5zY20KKysrIGIvZ251L3BhY2thZ2VzL2Jvb3Rsb2FkZXJzLnNjbQpAQCAt
NzQ4LDE3ICs3NDgsMzAgQEAgKGRlZmluZS1wdWJsaWMgdS1ib290LXRvb2xzCiBhbHNvIGluaXRp
YWxpemVzIHRoZSBib2FyZHMgKFJBTSBldGMpLiAgVGhpcyBwYWNrYWdlIHByb3ZpZGVzIGl0cwog
Ym9hcmQtaW5kZXBlbmRlbnQgdG9vbHMuIikpKQogCi0oZGVmaW5lKi1wdWJsaWMgKG1ha2UtdS1i
b290LXBhY2thZ2UgYm9hcmQgdHJpcGxldCAjOmtleSBkZWZjb25maWcgY29uZmlncykKKyhkZWZp
bmUqLXB1YmxpYyAobWFrZS11LWJvb3QtcGFja2FnZSBib2FyZAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRyaXBsZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjOmtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmNv
bmZpZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3MKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24pCiAgICJSZXR1cm5zIGEgdS1ib290IHBhY2th
Z2UgZm9yIEJPQVJEIGNyb3NzLWNvbXBpbGVkIGZvciBUUklQTEVUIHdpdGggdGhlCi1vcHRpb25h
bCBERUZDT05GSUcgZmlsZSBhbmQgb3B0aW9uYWwgY29uZmlndXJhdGlvbiBjaGFuZ2VzIGZyb20g
Q09ORklHUy4iCitvcHRpb25hbCBERUZDT05GSUcgZmlsZSBhbmQgb3B0aW9uYWwgY29uZmlndXJh
dGlvbiBjaGFuZ2VzIGZyb20gQ09ORklHUy4KK0VpdGhlciBOQU1FLCBpZiB1c2VkLCBvciBvdGhl
cndpc2UgQk9BUkQgd2lsbCBiZSBwYXJ0IG9mIHRoZSBwYWNrYWdlIG5hbWUuCitERVNDUklQVElP
TiB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBwYWNrYWdlIGRlc2NyaXB0aW9uLiIKICAgKGxldCAo
KHNhbWUtYXJjaD8gKGxhbWJkYSAoKQogICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmc9PyAo
JWN1cnJlbnQtc3lzdGVtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ251LXRy
aXBsZXQtPm5peC1zeXN0ZW0gdHJpcGxldCkpKSkpCiAgICAgKHBhY2thZ2UKICAgICAgIChpbmhl
cml0IHUtYm9vdCkKICAgICAgIChuYW1lIChzdHJpbmctYXBwZW5kICJ1LWJvb3QtIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1yZXBsYWNlLXN1YnN0cmluZyAoc3RyaW5nLWRv
d25jYXNlIGJvYXJkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiXyIgIi0iKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5n
LXJlcGxhY2Utc3Vic3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1k
b3duY2FzZSAob3IgbmFtZSBib2FyZCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl8i
ICItIikpKQorICAgICAgKGRlc2NyaXB0aW9uIChpZiBkZXNjcmlwdGlvbgorICAgICAgICAgICAg
ICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAocGFja2FnZS1kZXNjcmlwdGlvbiB1LWJvb3QpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIgZGVzY3JpcHRpb24pCisg
ICAgICAgICAgICAgICAgICAgICAgIChwYWNrYWdlLWRlc2NyaXB0aW9uIHUtYm9vdCkpKQogICAg
ICAgKG5hdGl2ZS1pbnB1dHMKICAgICAgICBgKCxAKGlmIChub3QgKHNhbWUtYXJjaD8pKQogICAg
ICAgICAgICAgIGAoKCJjcm9zcy1nY2MiICwoY3Jvc3MtZ2NjIHRyaXBsZXQpKQpAQCAtMTExNyw2
ICsxMTMwLDE1NyBAQCAoZGVmaW5lLXB1YmxpYyB1LWJvb3QtcGluZWJvb2stcHJvLXJrMzM5OQog
ICAgICAgIGAoKCJmaXJtd2FyZSIgLGFybS10cnVzdGVkLWZpcm13YXJlLXJrMzM5OSkKICAgICAg
ICAgICxAKHBhY2thZ2UtbmF0aXZlLWlucHV0cyBiYXNlKSkpKSkpCiAKKyhkZWZpbmUqLXB1Ymxp
YyAobWFrZS1wcmVpbnN0YWxsZWQtdS1ib290LXBhY2thZ2UgYm9hcmQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpcGxldAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjOmtleQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZjb25maWcKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlncworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1LWJvb3Qt
ZmlsZSAidS1ib290LmJpbiIpKQorICAiUmV0dXJucyBhIHBhY2thZ2Ugd2l0aCBhIHNpbmdsZSBV
LUJPT1QtRklMRSBmb3IgQk9BUkQgY3Jvc3MtY29tcGlsZWQgZm9yCitUUklQTEVUIHdpdGggdGhl
IG9wdGlvbmFsIERFRkNPTkZJRyBmaWxlIGFuZCBvcHRpb25hbCBjb25maWd1cmF0aW9uIGNoYW5n
ZXMKK2Zyb20gQ09ORklHUy4gIEVpdGhlciBOQU1FLCBpZiB1c2VkLCBvciBvdGhlcndpc2UgQk9B
UkQgd2lsbCBiZSBwYXJ0IG9mIHRoZQorcGFja2FnZSBuYW1lLiAgREVTQ1JJUFRJT04gd2lsbCBi
ZSBhcHBlbmRlZCB0byB0aGUgcGFja2FnZSBkZXNjcmlwdGlvbi4iCisgIChsZXQqICgobmFtZS1z
dWZmaXggIi1jb21wbGV0ZSIpCisgICAgICAgICAodS1ib290LXBhY2thZ2UgKG1ha2UtdS1ib290
LXBhY2thZ2UgYm9hcmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0cmlwbGV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIzpkZWZjb25maWcgZGVmY29uZmlnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIzpjb25maWdzIGNvbmZpZ3MKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjOm5hbWUgKHN0cmluZy1hcHBlbmQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciBuYW1lIGJvYXJk
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bmFtZS1zdWZmaXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIzpkZXNjcmlwdGlvbiBkZXNjcmlwdGlvbikpKQorICAgIChwYWNrYWdlCisgICAgICAobmFt
ZSAoc3RyaW5nLWRyb3AtcmlnaHQgKHBhY2thZ2UtbmFtZSB1LWJvb3QtcGFja2FnZSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWxlbmd0aCBuYW1lLXN1ZmZpeCkpKQor
ICAgICAgKHZlcnNpb24gKHBhY2thZ2UtdmVyc2lvbiB1LWJvb3QtcGFja2FnZSkpCisgICAgICAo
c291cmNlICNmKQorICAgICAgKGJ1aWxkLXN5c3RlbSB0cml2aWFsLWJ1aWxkLXN5c3RlbSkKKyAg
ICAgIChhcmd1bWVudHMKKyAgICAgICBgKCM6YnVpbGRlcgorICAgICAgICAgKGJlZ2luCisgICAg
ICAgICAgIChsZXQgKChvdXQgKGFzc29jLXJlZiAlb3V0cHV0cyAib3V0IikpKQorICAgICAgICAg
ICAgIChta2RpciBvdXQpCisgICAgICAgICAgICAgKHN5bWxpbmsgKHN0cmluZy1hcHBlbmQgKGFz
c29jLXJlZiAlYnVpbGQtaW5wdXRzICJ1LWJvb3QiKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiL2xpYmV4ZWMvIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAsdS1ib290LWZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgb3V0
ICIvIiAsdS1ib290LWZpbGUpKSkpKSkKKyAgICAgIChpbnB1dHMgYCgoInUtYm9vdCIgLHUtYm9v
dC1wYWNrYWdlKSkpCisgICAgICAoaG9tZS1wYWdlIChwYWNrYWdlLWhvbWUtcGFnZSB1LWJvb3Qt
cGFja2FnZSkpCisgICAgICAoc3lub3BzaXMgKHBhY2thZ2Utc3lub3BzaXMgdS1ib290LXBhY2th
Z2UpKQorICAgICAgKGRlc2NyaXB0aW9uIChwYWNrYWdlLWRlc2NyaXB0aW9uIHUtYm9vdC1wYWNr
YWdlKSkKKyAgICAgIChsaWNlbnNlIChwYWNrYWdlLWxpY2Vuc2UgdS1ib290LXBhY2thZ2UpKSkp
KQorCisoZGVmaW5lLXB1YmxpYyAldS1ib290LXJwaS1lZmktY29uZmlncworICAnKCJDT05GSUdf
T0ZfRU1CRUQ9IgorICAgICJDT05GSUdfT0ZfQk9BUkQ9eSIKKyAgICAiQ09ORklHX0JPT1RERUxB
WT0wIikpCisKKyhkZWZpbmUgJXUtYm9vdC1ycGktZGVzY3JpcHRpb24tMzItYml0CisgICJUaGlz
IGlzIGEgMzItYml0IGJ1aWxkIG9mIFUtQm9vdC4iKQorCisoZGVmaW5lICV1LWJvb3QtcnBpLWRl
c2NyaXB0aW9uLTY0LWJpdAorICAiVGhpcyBpcyBhIGNvbW1vbiA2NC1iaXQgYnVpbGQgb2YgVS1C
b290IGZvciBhbGwgNjQtYml0IGNhcGFibGUgUmFzcGJlcnJ5IFBpCit2YXJpYW50cy4iKQorCiso
ZGVmaW5lICV1LWJvb3QtcnBpLWVmaS1kZXNjcmlwdGlvbgorICAiSXQgYWxsb3dzIG5ldHdvcmsg
Ym9vdGluZyBhbmQgdXNlcyB0aGUgZGV2aWNlLXRyZWUgZnJvbSB0aGUgZmlybXdhcmUsCithbGxv
d2luZyB0aGUgdXNhZ2Ugb2Ygb3ZlcmxheXMuICBJdCBjYW4gYWN0IGFzIGFuIEVGSSBmaXJtd2Fy
ZSBmb3IgdGhlCitncnViLWVmaS1uZXRib290LXJlbW92YWJsZS1ib290bG9hZGVyLiIpCisKKyhk
ZWZpbmUgJXUtYm9vdC1ycGktZWZpLWRlc2NyaXB0aW9uLTMyLWJpdAorICAoc3RyaW5nLWFwcGVu
ZCAldS1ib290LXJwaS1lZmktZGVzY3JpcHRpb24gIiAgIgorICAgICAgICAgICAgICAgICAldS1i
b290LXJwaS1kZXNjcmlwdGlvbi0zMi1iaXQpKQorCisoZGVmaW5lLXB1YmxpYyB1LWJvb3QtcnBp
LTAtdworICAobWFrZS1wcmVpbnN0YWxsZWQtdS1ib290LXBhY2thZ2UKKyAgICJycGlfMF93Igor
ICAgImFybS1saW51eC1nbnVlYWJpaGYiCisgICAjOmRlc2NyaXB0aW9uICV1LWJvb3QtcnBpLWRl
c2NyaXB0aW9uLTMyLWJpdCkpCisKKyhkZWZpbmUtcHVibGljIHUtYm9vdC1ycGkKKyAgKG1ha2Ut
cHJlaW5zdGFsbGVkLXUtYm9vdC1wYWNrYWdlCisgICAicnBpIgorICAgImFybS1saW51eC1nbnVl
YWJpaGYiCisgICAjOmRlc2NyaXB0aW9uICV1LWJvb3QtcnBpLWRlc2NyaXB0aW9uLTMyLWJpdCkp
CisKKyhkZWZpbmUtcHVibGljIHUtYm9vdC1ycGktMgorICAobWFrZS1wcmVpbnN0YWxsZWQtdS1i
b290LXBhY2thZ2UKKyAgICJycGlfMiIKKyAgICJhcm0tbGludXgtZ251ZWFiaWhmIgorICAgIzpk
ZXNjcmlwdGlvbiAldS1ib290LXJwaS1kZXNjcmlwdGlvbi0zMi1iaXQpKQorCisoZGVmaW5lLXB1
YmxpYyB1LWJvb3QtcnBpLTMKKyAgKG1ha2UtcHJlaW5zdGFsbGVkLXUtYm9vdC1wYWNrYWdlCisg
ICAicnBpXzNfMzJiIgorICAgImFybS1saW51eC1nbnVlYWJpaGYiCisgICAjOm5hbWUgInJwaS0z
IgorICAgIzpkZXNjcmlwdGlvbiAldS1ib290LXJwaS1kZXNjcmlwdGlvbi0zMi1iaXQpKQorCiso
ZGVmaW5lLXB1YmxpYyB1LWJvb3QtcnBpLTQKKyAgKG1ha2UtcHJlaW5zdGFsbGVkLXUtYm9vdC1w
YWNrYWdlCisgICAicnBpXzRfMzJiIgorICAgImFybS1saW51eC1nbnVlYWJpaGYiCisgICAjOm5h
bWUgInJwaS00IgorICAgIzpkZXNjcmlwdGlvbiAldS1ib290LXJwaS1kZXNjcmlwdGlvbi0zMi1i
aXQpKQorCisoZGVmaW5lLXB1YmxpYyB1LWJvb3QtcnBpLTY0CisgIChtYWtlLXByZWluc3RhbGxl
ZC11LWJvb3QtcGFja2FnZQorICAgInJwaV9hcm02NCIKKyAgICJhYXJjaDY0LWxpbnV4LWdudSIK
KyAgICM6bmFtZSAicnBpLTY0IgorICAgIzpkZXNjcmlwdGlvbiAldS1ib290LXJwaS1kZXNjcmlw
dGlvbi02NC1iaXQpKQorCisoZGVmaW5lLXB1YmxpYyB1LWJvb3QtcnBpLTAtdy1lZmkKKyAgKG1h
a2UtcHJlaW5zdGFsbGVkLXUtYm9vdC1wYWNrYWdlCisgICAicnBpXzBfdyIKKyAgICJhcm0tbGlu
dXgtZ251ZWFiaWhmIgorICAgIzpuYW1lICJycGktMC13LWVmaSIKKyAgICM6Y29uZmlncyAldS1i
b290LXJwaS1lZmktY29uZmlncworICAgIzpkZXNjcmlwdGlvbiAldS1ib290LXJwaS1lZmktZGVz
Y3JpcHRpb24tMzItYml0KSkKKworKGRlZmluZS1wdWJsaWMgdS1ib290LXJwaS1lZmkKKyAgKG1h
a2UtcHJlaW5zdGFsbGVkLXUtYm9vdC1wYWNrYWdlCisgICAicnBpIgorICAgImFybS1saW51eC1n
bnVlYWJpaGYiCisgICAjOm5hbWUgInJwaS1lZmkiCisgICAjOmNvbmZpZ3MgJXUtYm9vdC1ycGkt
ZWZpLWNvbmZpZ3MKKyAgICM6ZGVzY3JpcHRpb24gJXUtYm9vdC1ycGktZWZpLWRlc2NyaXB0aW9u
LTMyLWJpdCkpCisKKyhkZWZpbmUtcHVibGljIHUtYm9vdC1ycGktMi1lZmkKKyAgKG1ha2UtcHJl
aW5zdGFsbGVkLXUtYm9vdC1wYWNrYWdlCisgICAicnBpXzIiCisgICAiYXJtLWxpbnV4LWdudWVh
YmloZiIKKyAgICM6bmFtZSAicnBpLTItZWZpIgorICAgIzpjb25maWdzICV1LWJvb3QtcnBpLWVm
aS1jb25maWdzCisgICAjOmRlc2NyaXB0aW9uICV1LWJvb3QtcnBpLWVmaS1kZXNjcmlwdGlvbi0z
Mi1iaXQpKQorCisoZGVmaW5lLXB1YmxpYyB1LWJvb3QtcnBpLTMtZWZpCisgIChtYWtlLXByZWlu
c3RhbGxlZC11LWJvb3QtcGFja2FnZQorICAgInJwaV8zXzMyYiIKKyAgICJhcm0tbGludXgtZ251
ZWFiaWhmIgorICAgIzpuYW1lICJycGktMy1lZmkiCisgICAjOmNvbmZpZ3MgJXUtYm9vdC1ycGkt
ZWZpLWNvbmZpZ3MKKyAgICM6ZGVzY3JpcHRpb24gJXUtYm9vdC1ycGktZWZpLWRlc2NyaXB0aW9u
LTMyLWJpdCkpCisKKyhkZWZpbmUtcHVibGljIHUtYm9vdC1ycGktNC1lZmkKKyAgKG1ha2UtcHJl
aW5zdGFsbGVkLXUtYm9vdC1wYWNrYWdlCisgICAicnBpXzRfMzJiIgorICAgImFybS1saW51eC1n
bnVlYWJpaGYiCisgICAjOm5hbWUgInJwaS00LWVmaSIKKyAgICM6Y29uZmlncyAldS1ib290LXJw
aS1lZmktY29uZmlncworICAgIzpkZXNjcmlwdGlvbiAldS1ib290LXJwaS1lZmktZGVzY3JpcHRp
b24tMzItYml0KSkKKworKGRlZmluZS1wdWJsaWMgdS1ib290LXJwaS1lZmktNjQKKyAgKG1ha2Ut
cHJlaW5zdGFsbGVkLXUtYm9vdC1wYWNrYWdlCisgICAicnBpX2FybTY0IgorICAgImFhcmNoNjQt
bGludXgtZ251IgorICAgIzpuYW1lICJycGktZWZpLTY0IgorICAgIzpjb25maWdzICV1LWJvb3Qt
cnBpLWVmaS1jb25maWdzCisgICAjOmRlc2NyaXB0aW9uIChzdHJpbmctYXBwZW5kICV1LWJvb3Qt
cnBpLWVmaS1kZXNjcmlwdGlvbiAiICAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICV1LWJvb3QtcnBpLWRlc2NyaXB0aW9uLTY0LWJpdCkpKQorCiAoZGVmaW5lLXB1YmxpYyB2Ym9v
dC11dGlscwogICAocGFja2FnZQogICAgIChuYW1lICJ2Ym9vdC11dGlscyIpCi0tIAoyLjM1LjEK
Cg==

--b1_oHy08PWmPsOPRRPhK59EbeSBynAeRsUjblVRNhusU
Content-Type: text/x-patch; name=v3-0008-gnu-raspberry-pi-Add-a-bootloader-chain-for-the-R.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=v3-0008-gnu-raspberry-pi-Add-a-bootloader-chain-for-the-R.patch

RnJvbSBlMDAyMDAzMmU4MDE4MWVhYWQ0YzkyZDJjNzY0MWNkMTRmMmI1MzNmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gPHN0ZWZhbi1ndWl4QHZvZGFmb25lbWFpbC5kZT4K
RGF0ZTogV2VkLCAxMyBBcHIgMjAyMiAyMToxOTo0MSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjMg
OC84XSBnbnU6IHJhc3BiZXJyeS1waTogQWRkIGEgYm9vdGxvYWRlci1jaGFpbiBmb3IgdGhlCiBS
YXNwYmVycnkgUGkgYW5kIG9zIGV4YW1wbGVzLgoKKiBnbnUvcGFja2FnZXMvcmFzcGJlcnJ5LXBp
LnNjbSAoZ3J1Yi1lZmktYm9vdGxvYWRlci1jaGFpbi1yYXNwaS02NCk6IE5ldwpib290bG9hZGVy
IHZhcmlhYmxlLCBjYXBhYmxlIHRvIGJvb3QgYSBSYXNwYmVycnkgUGkgb3ZlciBuZXR3b3JrIG9y
IGZyb20gYQpsb2NhbCBzdG9yYWdlLgoqIGdudS9zeXN0ZW0vZXhhbXBsZXMvcmFzcGJlcnJ5LXBp
LTY0LnRtcGw6IE5ldyBvcGVyYXRpbmctc3lzdGVtIGV4YW1wbGUuCiogZ251L3N5c3RlbS9leGFt
cGxlcy9yYXNwYmVycnktcGktNjQtbmZzLXJvb3QudG1wbDogTmV3IG9wZXJhdGluZy1zeXN0ZW0K
ZXhhbXBsZSBmb3IgYm9vdGluZyBvdmVyIG5ldHdvcmsuCgpkaWZmIC0tZ2l0IGEvZ251L3BhY2th
Z2VzL3Jhc3BiZXJyeS1waS5zY20gYi9nbnUvcGFja2FnZXMvcmFzcGJlcnJ5LXBpLnNjbQppbmRl
eCBkODA4ZjYxYWMyLi5kNTJhNGE3MmM1IDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvcmFzcGJl
cnJ5LXBpLnNjbQorKysgYi9nbnUvcGFja2FnZXMvcmFzcGJlcnJ5LXBpLnNjbQpAQCAtMTgsMTEg
KzE4LDE0IEBACiA7OzsgYWxvbmcgd2l0aCBHTlUgR3VpeC4gIElmIG5vdCwgc2VlIDxodHRwOi8v
d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAogKGRlZmluZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBy
YXNwYmVycnktcGkpCisgICM6dXNlLW1vZHVsZSAoZ251IGJvb3Rsb2FkZXIpCisgICM6dXNlLW1v
ZHVsZSAoZ251IGJvb3Rsb2FkZXIgZ3J1YikKICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMp
CiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGFkbWluKQogICAjOnVzZS1tb2R1bGUgKGdu
dSBwYWNrYWdlcyBhbGdlYnJhKQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBiYXNlKQog
ICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBiYXNoKQorICAjOnVzZS1tb2R1bGUgKGdudSBw
YWNrYWdlcyBib290bG9hZGVycykKICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgY29tbWVu
Y2VtZW50KQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBjcm9zcy1iYXNlKQogICAjOnVz
ZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBkb2N1bWVudGF0aW9uKQpAQCAtMzEyLDYgKzMxNSwyMiBA
QCAoZGVmaW5lLXB1YmxpYyAobWFrZS1yYXNwaS1iY20yOC1kdGJzIGxpbnV4KQogICAgICAoc2lt
cGxlLWZvcm1hdCAjZiAiVGhlIGRldmljZS10cmVlIGZpbGVzIGZvciBSYXNwYmVycnkgUGkgbW9k
ZWxzIGZyb20gfmEuIgogICAgICAgICAgICAgIChwYWNrYWdlLW5hbWUgbGludXgpKSkpKQogCiso
ZGVmaW5lLXB1YmxpYyBncnViLWVmaS1ib290bG9hZGVyLWNoYWluLXJhc3BpLTY0CisgIDs7IEEg
Ym9vdGxvYWRlciBjYXBhYmxlIHRvIGJvb3QgYSBSYXNwYmVycnkgUGkgb3ZlciBuZXR3b3JrIHZp
YSBURlRQIG9yIGZyb20KKyAgOzsgYSBsb2NhbCBzdG9yYWdlIGxpa2UgYSBtaWNybyBTRCBjYXJk
LgorICA7OyBJdCBuZWl0aGVyIGluc3RhbGxzIGZpcm13YXJlIG5vciBkZXZpY2UtdHJlZSBmaWxl
cyBmb3IgdGhlIFJhc3BiZXJyeSBQaS4KKyAgOzsgSXQganVzdCBhc3N1bWVzIHRoZW0gdG8gYmUg
ZXhpc3RpbmcgaW4gYm9vdC9lZmkgaW4gdGhlIHNhbWUgd2F5IHRoYXQgc29tZQorICA7OyBVRUZJ
IGZpcm13YXJlIHdpdGggQUNQSSBkYXRhIGlzIHVzdWFsbHkgYXNzdW1lZCB0byBiZSBleGlzdGlu
ZyBvbiBQQ3MuCisgIDs7IEl0IGNyZWF0ZXMgZmlybXdhcmUgY29uZmlndXJhdGlvbiBmaWxlcyBh
bmQgYSBib290bG9hZGVyLWNoYWluIHdpdGggVS1Cb290CisgIDs7IHRvIHByb3ZpZGUgYW4gRUZJ
IEFQSSBmb3IgdGhlIGZpbmFsIEdSVUIgYm9vdGxvYWRlci4KKyAgOzsgSXQgYWxzbyBzZXJ2ZXMg
YXMgYSBibHVlLXByaW50IHRvIGNyZWF0ZSBhbiBvd24gYm9vdGxvYWRlci1jaGFpbiB3aXRoCisg
IDs7IGZpcm13cmUgYW5kIGRldmljZS10cmVlIHBhY2thZ2VzIG9yIGZpbGVzLgorICAoZWZpLWJv
b3Rsb2FkZXItY2hhaW4gZ3J1Yi1lZmktbmV0Ym9vdC1yZW1vdmFibGUtYm9vdGxvYWRlcgorICAg
ICAgICAgICAgICAgICAgICAgICAgIzpwYWNrYWdlcyAobGlzdCB1LWJvb3QtcnBpLWVmaS02NCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICM6ZmlsZXMgKGxpc3QgJXJhc3BpLWNvbmZpZy10eHQK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXJhc3BpLWJjbTI3LWR0Yi10
eHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXJhc3BpLXUtYm9vdC1i
b290bG9hZGVyLXR4dCkpKQorCiAoZGVmaW5lIChtYWtlLXJhc3BpLWRlZmNvbmZpZyBhcmNoIGRl
ZmNvbmZpZyBzaGEyNTYtYXMtYmFzZTMyKQogICAiTWFrZSBmb3IgdGhlIGFyY2hpdGVjdHVyZSBB
UkNIIGEgZmlsZS1saWtlIG9iamVjdCBmcm9tIHRoZSBERUZDT05GSUcgZmlsZQogd2l0aCB0aGUg
aGFzaCBTSEEyNTYtQVMtQkFTRTMyLiAgVGhpcyBvYmplY3QgY2FuIGJlIHVzZWQgYXMgdGhlICM6
ZGVmY29uZmlnCmRpZmYgLS1naXQgYS9nbnUvc3lzdGVtL2V4YW1wbGVzL3Jhc3BiZXJyeS1waS02
NC1uZnMtcm9vdC50bXBsIGIvZ251L3N5c3RlbS9leGFtcGxlcy9yYXNwYmVycnktcGktNjQtbmZz
LXJvb3QudG1wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jMDA2YTI4
N2ZiCi0tLSAvZGV2L251bGwKKysrIGIvZ251L3N5c3RlbS9leGFtcGxlcy9yYXNwYmVycnktcGkt
NjQtbmZzLXJvb3QudG1wbApAQCAtMCwwICsxLDczIEBACis7OyBUaGlzIGlzIGFuIG9wZXJhdGlu
Zy1zeXN0ZW0gY29uZmlndXJhdGlvbiB0ZW1wbGF0ZSBvZiBhCis7OyA2NC1iaXQgbWluaW1hbCBz
eXN0ZW0gZm9yIGEgUmFzcGJlcnJ5IFBpIHdpdGggYW4gTkZTIHJvb3QgZmlsZS1zeXN0ZW0uCisK
Kzs7IEl0IG5laXRoZXIgaW5zdGFsbHMgZmlybXdhcmUgbm9yIGRldmljZS10cmVlIGZpbGVzIGZv
ciB0aGUgUmFzcGJlcnJ5IFBpLgorOzsgSXQganVzdCBhc3N1bWVzIHRoZW0gdG8gYmUgZXhpc3Rp
bmcgaW4gYm9vdC9lZmkgaW4gdGhlIHNhbWUgd2F5IHRoYXQgc29tZQorOzsgVUVGSSBmaXJtd2Fy
ZSB3aXRoIEFDUEkgZGF0YSBpcyB1c3VhbGx5IGFzc3VtZWQgdG8gYmUgZXhpc3Rpbmcgb24gUENz
LgorCis7OyBJdCBleHBlY3RzIHRoZSBib290L2VmaSBkaXJlY3RvcnkgdG8gYmUgc2VydmVkIHZp
YSBURlRQIGFuZCB0aGUgcm9vdAorOzsgZmlsZS1zeXN0ZW0gdG8gYmUgc2VydmVkIHZpYSBORlMu
IFNlZSB0aGUgZ3J1Yi1lZmktbmV0Ym9vdC1ib290bG9hZGVyCis7OyBkZXNjcmlwdGlvbiBpbiB0
aGUgbWFudWFsIGZvciBtb3JlIGRldGFpbHMuCisKKyh1c2UtbW9kdWxlcyAoZ251KQorICAgICAg
ICAgICAgIChnbnUgYXJ0d29yaykKKyAgICAgICAgICAgICAoZ251IHN5c3RlbSBuc3MpKQorKHVz
ZS1zZXJ2aWNlLW1vZHVsZXMgYWRtaW4KKyAgICAgICAgICAgICAgICAgICAgIGF2YWhpCisgICAg
ICAgICAgICAgICAgICAgICBuZXR3b3JraW5nCisgICAgICAgICAgICAgICAgICAgICBzc2gpCiso
dXNlLXBhY2thZ2UtbW9kdWxlcyBjZXJ0cworICAgICAgICAgICAgICAgICAgICAgbGludXgKKyAg
ICAgICAgICAgICAgICAgICAgIHJhc3BiZXJyeS1waQorICAgICAgICAgICAgICAgICAgICAgc3No
KQorCisoZGVmaW5lICVteS1wdWJsaWMta2V5CisgIChsb2NhbC1maWxlIChzdHJpbmctYXBwZW5k
IChnZXRlbnYgIkhPTUUiKSAiLy5zc2gvaWRfZWNkc2EucHViIikpKQorCisoZGVmaW5lLXB1Ymxp
YyByYXNwYmVycnktcGktNjQtbmZzLXJvb3QKKyAgKG9wZXJhdGluZy1zeXN0ZW0KKyAgIChob3N0
LW5hbWUgInJhc3BiZXJyeXBpLWd1aXgiKQorICAgKHRpbWV6b25lICJFdXJvcGUvQmVybGluIikK
KyAgIChib290bG9hZGVyIChib290bG9hZGVyLWNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAg
ICAoYm9vdGxvYWRlciBncnViLWVmaS1ib290bG9hZGVyLWNoYWluLXJhc3BpLTY0KQorICAgICAg
ICAgICAgICAgICh0YXJnZXRzICcoIi9ib290L2VmaSIpKQorICAgICAgICAgICAgICAgICh0aGVt
ZSAoZ3J1Yi10aGVtZSAocmVzb2x1dGlvbiAnKDE5MjAgLiAxMDgwKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgKGltYWdlIChmaWxlLWFwcGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICVhcnR3b3JrLXJlcG9zaXRvcnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
L2dydWIvR3VpeFNELWZ1bGx5LWJsYWNrLTE2LTkuc3ZnIikpKSkpKQorICAgKGtlcm5lbC1hcmd1
bWVudHMgJygiaXA9ZGhjcCIpKQorICAgKGtlcm5lbCAobW9kaWZ5LWxpbnV4ICM6bGludXggbGlu
dXgtbGlicmUtYXJtNjQtZ2VuZXJpYworICAgICAgICAgICAgICAgICAgICAgICAgICM6ZXh0cmEt
dmVyc2lvbiAiYXJtNjQtZ2VuZXJpYy1uZXRib290IgorICAgICAgICAgICAgICAgICAgICAgICAg
ICM6Y29uZmlncyAnKCJDT05GSUdfTkZTX1NXQVA9eSIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiQ09ORklHX1VTQl9VU0JORVQ9eSIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiQ09ORklHX1VTQl9MQU43OFhYPXkiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkNPTkZJR19VU0JfTkVUX1NNU0M5NVhYPXkiKSkpCisgICAo
aW5pdHJkLW1vZHVsZXMgJygpKQorICAgKGZpbGUtc3lzdGVtcyAoY29ucyogKGZpbGUtc3lzdGVt
CisgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdW50LXBvaW50ICIvIikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAodHlwZSAibmZzIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZGV2
aWNlICI6L2V4cG9ydC9yYXNwYmVycnlwaS9ndWl4IikKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAob3B0aW9ucyAiYWRkcj0xMC4yMC4zMC40MCx2ZXJzPTQuMSIpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgJWJhc2UtZmlsZS1zeXN0ZW1zKSkKKyAgIChzd2FwLWRldmljZXMgKGxpc3QgKHN3
YXAtc3BhY2UgKHRhcmdldCAiL3J1bi9zd2FwZmlsZSIpKSkpCisgICAodXNlcnMgKGNvbnMqICh1
c2VyLWFjY291bnQKKyAgICAgICAgICAgICAgICAgIChuYW1lICJwaSIpCisgICAgICAgICAgICAg
ICAgICAoZ3JvdXAgInVzZXJzIikKKyAgICAgICAgICAgICAgICAgIChzdXBwbGVtZW50YXJ5LWdy
b3VwcyAnKCJ3aGVlbCIgIm5ldGRldiIgImF1ZGlvIiAidmlkZW8iKSkKKyAgICAgICAgICAgICAg
ICAgIChob21lLWRpcmVjdG9yeSAiL2hvbWUvcGkiKSkKKyAgICAgICAgICAgICAgICAgJWJhc2Ut
dXNlci1hY2NvdW50cykpCisgICAocGFja2FnZXMgKGNvbnMqIG5zcy1jZXJ0cworICAgICAgICAg
ICAgICAgICAgICBvcGVuc3NoCisgICAgICAgICAgICAgICAgICAgICViYXNlLXBhY2thZ2VzKSkK
KyAgIChzZXJ2aWNlcyAoY29ucyogKHNlcnZpY2UgYXZhaGktc2VydmljZS10eXBlKQorICAgICAg
ICAgICAgICAgICAgICAoc2VydmljZSBkaGNwLWNsaWVudC1zZXJ2aWNlLXR5cGUpCisgICAgICAg
ICAgICAgICAgICAgIChzZXJ2aWNlIG50cC1zZXJ2aWNlLXR5cGUpCisgICAgICAgICAgICAgICAg
ICAgIChzZXJ2aWNlIG9wZW5zc2gtc2VydmljZS10eXBlCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChvcGVuc3NoLWNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICh4MTEtZm9yd2FyZGluZz8gI3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
YXV0aG9yaXplZC1rZXlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgKCgicGkiICwl
bXktcHVibGljLWtleSkpKSkpCisgICAgICAgICAgICAgICAgICAgICViYXNlLXNlcnZpY2VzKSkK
KyAgIChuYW1lLXNlcnZpY2Utc3dpdGNoICVtZG5zLWhvc3QtbG9va3VwLW5zcykpKQorCityYXNw
YmVycnktcGktNjQtbmZzLXJvb3QKZGlmZiAtLWdpdCBhL2dudS9zeXN0ZW0vZXhhbXBsZXMvcmFz
cGJlcnJ5LXBpLTY0LnRtcGwgYi9nbnUvc3lzdGVtL2V4YW1wbGVzL3Jhc3BiZXJyeS1waS02NC50
bXBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjZiMDE3OGM4NjEKLS0t
IC9kZXYvbnVsbAorKysgYi9nbnUvc3lzdGVtL2V4YW1wbGVzL3Jhc3BiZXJyeS1waS02NC50bXBs
CkBAIC0wLDAgKzEsNzcgQEAKKzs7IFRoaXMgaXMgYW4gb3BlcmF0aW5nLXN5c3RlbSBjb25maWd1
cmF0aW9uIHRlbXBsYXRlIG9mIGEKKzs7IDY0LWJpdCBtaW5pbWFsIHN5c3RlbSBmb3IgYSBSYXNw
YmVycnkgUGkgd2l0aCBsb2NhbCBzdG9yYWdlLgorCis7OyBJdCBuZWl0aGVyIGluc3RhbGxzIGZp
cm13YXJlIG5vciBkZXZpY2UtdHJlZSBmaWxlcyBmb3IgdGhlIFJhc3BiZXJyeSBQaS4KKzs7IEl0
IGp1c3QgYXNzdW1lcyB0aGVtIHRvIGJlIGV4aXN0aW5nIGluIGJvb3QvZWZpIGluIHRoZSBzYW1l
IHdheSB0aGF0IHNvbWUKKzs7IFVFRkkgZmlybXdhcmUgd2l0aCBBQ1BJIGRhdGEgaXMgdXN1YWxs
eSBhc3N1bWVkIHRvIGJlIGV4aXN0aW5nIG9uIFBDcy4KKworOzsgSXQgZXhwZWN0cyB0aGUgYm9v
dC1wYXJ0aXRpb24gdG8gYmUgbW91bnRlZCBhcyBib290L2VmaSBpbiB0aGUgc2FtZSB3YXkKKzs7
IGFzIGl0IGlzIHVzdWFsbHkgZXhwZXRlZCBvbiBQQ3Mgd2l0aCBVRUZJIGZpcm13YXJlLgorCiso
dXNlLW1vZHVsZXMgKGdudSkKKyAgICAgICAgICAgICAoZ251IGFydHdvcmspCisgICAgICAgICAg
ICAgKGdudSBzeXN0ZW0gbnNzKSkKKyh1c2Utc2VydmljZS1tb2R1bGVzIGFkbWluCisgICAgICAg
ICAgICAgICAgICAgICBhdmFoaQorICAgICAgICAgICAgICAgICAgICAgbmV0d29ya2luZworICAg
ICAgICAgICAgICAgICAgICAgc3NoKQorKHVzZS1wYWNrYWdlLW1vZHVsZXMgY2VydHMKKyAgICAg
ICAgICAgICAgICAgICAgIGxpbnV4CisgICAgICAgICAgICAgICAgICAgICByYXNwYmVycnktcGkK
KyAgICAgICAgICAgICAgICAgICAgIHNzaCkKKworKGRlZmluZSAlbXktcHVibGljLWtleQorICAo
bG9jYWwtZmlsZSAoc3RyaW5nLWFwcGVuZCAoZ2V0ZW52ICJIT01FIikgIi8uc3NoL2lkX2VjZHNh
LnB1YiIpKSkKKworKGRlZmluZS1wdWJsaWMgcmFzcGJlcnJ5LXBpLTY0CisgIChvcGVyYXRpbmct
c3lzdGVtCisgICAoaG9zdC1uYW1lICJyYXNwYmVycnlwaS1ndWl4IikKKyAgICh0aW1lem9uZSAi
RXVyb3BlL0JlcmxpbiIpCisgICAoYm9vdGxvYWRlciAoYm9vdGxvYWRlci1jb25maWd1cmF0aW9u
CisgICAgICAgICAgICAgICAgKGJvb3Rsb2FkZXIgZ3J1Yi1lZmktYm9vdGxvYWRlci1jaGFpbi1y
YXNwaS02NCkKKyAgICAgICAgICAgICAgICAodGFyZ2V0cyAnKCIvYm9vdC9lZmkiKSkKKyAgICAg
ICAgICAgICAgICAodGhlbWUgKGdydWItdGhlbWUgKHJlc29sdXRpb24gJygxOTIwIC4gMTA4MCkp
CisgICAgICAgICAgICAgICAgICAgICAgIChpbWFnZSAoZmlsZS1hcHBlbmQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAlYXJ0d29yay1yZXBvc2l0b3J5CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIi9ncnViL0d1aXhTRC1mdWxseS1ibGFjay0xNi05LnN2ZyIpKSkpKSkK
KyAgIChrZXJuZWwgKG1vZGlmeS1saW51eCAjOmxpbnV4IGxpbnV4LWxpYnJlLWFybTY0LWdlbmVy
aWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAjfCBJdCBpcyBwb3NzaWJsZSB0byB1c2UgYSBz
cGVjaWZpYyBkZWZjb25maWcgZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
ZXhhbXBsZSB0aGUgImJjbXJwaTNfZGVmY29uZmlnIiB3aXRoIHRoZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhcmlhYmxlIHNob3duIGJlbG93LiAgVW5mb3J0dW5hdGVseSB0aGUga2Vy
bmVsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGQgZnJvbSB0aGUgbGludXgtbGli
cmUgc291cmNlcyB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZjb25m
aWcgZmlsZSBkb2VzIG5vdCBib290LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICM6ZXh0
cmEtdmVyc2lvbiAiZ251LWJjbXJwaTMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIzpk
ZWZjb25maWcgJWJjbXJwaTMtZGVmY29uZmlnCisgICAgICAgICAgICAgICAgICAgICAgICAgfCMp
KQorICAgKGluaXRyZC1tb2R1bGVzICcoKSkKKyAgIChmaWxlLXN5c3RlbXMgKGNvbnMqIChmaWxl
LXN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VudC1wb2ludCAiLyIpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgKHR5cGUgImV4dDQiKQorICAgICAgICAgICAgICAgICAgICAg
ICAgIChkZXZpY2UgKGZpbGUtc3lzdGVtLWxhYmVsICJHdWl4IikpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgKGZpbGUtc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdW50LXBv
aW50ICIvYm9vdC9lZmkiKQorICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlICJ2ZmF0IikK
KyAgICAgICAgICAgICAgICAgICAgICAgICAoZGV2aWNlIChmaWxlLXN5c3RlbS1sYWJlbCAiRUZJ
IikpKQorICAgICAgICAgICAgICAgICAgICAgICAgJWJhc2UtZmlsZS1zeXN0ZW1zKSkKKyAgIChz
d2FwLWRldmljZXMgKGxpc3QgKHN3YXAtc3BhY2UgKHRhcmdldCAiL3J1bi9zd2FwZmlsZSIpKSkp
CisgICAodXNlcnMgKGNvbnMqICh1c2VyLWFjY291bnQKKyAgICAgICAgICAgICAgICAgIChuYW1l
ICJwaSIpCisgICAgICAgICAgICAgICAgICAoZ3JvdXAgInVzZXJzIikKKyAgICAgICAgICAgICAg
ICAgIChzdXBwbGVtZW50YXJ5LWdyb3VwcyAnKCJ3aGVlbCIgIm5ldGRldiIgImF1ZGlvIiAidmlk
ZW8iKSkKKyAgICAgICAgICAgICAgICAgIChob21lLWRpcmVjdG9yeSAiL2hvbWUvcGkiKSkKKyAg
ICAgICAgICAgICAgICAgJWJhc2UtdXNlci1hY2NvdW50cykpCisgICAocGFja2FnZXMgKGNvbnMq
IG5zcy1jZXJ0cworICAgICAgICAgICAgICAgICAgICBvcGVuc3NoCisgICAgICAgICAgICAgICAg
ICAgICViYXNlLXBhY2thZ2VzKSkKKyAgIChzZXJ2aWNlcyAoY29ucyogKHNlcnZpY2UgYXZhaGkt
c2VydmljZS10eXBlKQorICAgICAgICAgICAgICAgICAgICAoc2VydmljZSBkaGNwLWNsaWVudC1z
ZXJ2aWNlLXR5cGUpCisgICAgICAgICAgICAgICAgICAgIChzZXJ2aWNlIG50cC1zZXJ2aWNlLXR5
cGUpCisgICAgICAgICAgICAgICAgICAgIChzZXJ2aWNlIG9wZW5zc2gtc2VydmljZS10eXBlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcGVuc3NoLWNvbmZpZ3VyYXRpb24KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICh4MTEtZm9yd2FyZGluZz8gI3QpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoYXV0aG9yaXplZC1rZXlzCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBgKCgicGkiICwlbXktcHVibGljLWtleSkpKSkpCisgICAgICAgICAgICAgICAg
ICAgICViYXNlLXNlcnZpY2VzKSkKKyAgIChuYW1lLXNlcnZpY2Utc3dpdGNoICVtZG5zLWhvc3Qt
bG9va3VwLW5zcykpKQorCityYXNwYmVycnktcGktNjQKLS0gCjIuMzUuMQoK

--b1_oHy08PWmPsOPRRPhK59EbeSBynAeRsUjblVRNhusU
Content-Type: text/x-patch; name=v3-0007-gnu-raspberry-pi-New-function-to-make-a-package-w.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=v3-0007-gnu-raspberry-pi-New-function-to-make-a-package-w.patch

RnJvbSA0YmNlZGY1NTM5OThlNGM0MTNiNTcyMzk1Njc5ZDJkODgxZmI3MzE4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gPHN0ZWZhbi1ndWl4QHZvZGFmb25lbWFpbC5kZT4K
RGF0ZTogV2VkLCAxMyBBcHIgMjAyMiAyMToxOTozNiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjMg
Ny84XSBnbnU6IHJhc3BiZXJyeS1waTogTmV3IGZ1bmN0aW9uIHRvIG1ha2UgYSBwYWNrYWdlIHdp
dGgKIGRldmljZS10cmVlIGZpbGVzLgoKKiBnbnUvcGFja2FnZXMvcmFzcGJlcnJ5LXBpLnNjbSAo
bWFrZS1yYXNwaS1iY20yOC1kdGJzKTogTmV3IGZ1bmN0aW9uIHRvIG1ha2UKYSBwYWNrYWdlIHdp
dGggZGV2aWNlLXRyZWUgZmlsZXMgZm9yIFJhc3BiZXJyeSBQaSBtb2RlbHMgZnJvbSB0aGUga2Vy
bmVsIGdpdmVuCmFzIGFyZ3VtZW50LgoKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9yYXNwYmVy
cnktcGkuc2NtIGIvZ251L3BhY2thZ2VzL3Jhc3BiZXJyeS1waS5zY20KaW5kZXggMDcwNzUxNmY3
Mi4uZDgwOGY2MWFjMiAxMDA2NDQKLS0tIGEvZ251L3BhY2thZ2VzL3Jhc3BiZXJyeS1waS5zY20K
KysrIGIvZ251L3BhY2thZ2VzL3Jhc3BiZXJyeS1waS5zY20KQEAgLTMwLDYgKzMwLDcgQEAgKGRl
ZmluZS1tb2R1bGUgKGdudSBwYWNrYWdlcyByYXNwYmVycnktcGkpCiAgICM6dXNlLW1vZHVsZSAo
Z251IHBhY2thZ2VzIGZpbGUpCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGdjYykKICAg
Izp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgbGludXgpCisgICM6dXNlLW1vZHVsZSAoZ3VpeCBi
dWlsZC1zeXN0ZW0gY29weSkKICAgIzp1c2UtbW9kdWxlIChndWl4IGJ1aWxkLXN5c3RlbSBnbnUp
CiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBkb3dubG9hZCkKICAgIzp1c2UtbW9kdWxlIChndWl4IGdp
dC1kb3dubG9hZCkKQEAgLTI5MSw2ICsyOTIsMjYgQEAgKGRlZmluZS1wdWJsaWMgKHJhc3BpLWN1
c3RvbS10eHQgY29udGVudCkKIGNoYXJhY3Rlci4gIEFsdGVybmF0aXZlbHkgQ09OVEVOVCBjYW4g
YmUgYSBzdHJpbmcgd2l0aCB0aGUgZnVsbCBmaWxlIGNvbnRlbnQuIgogICAocmFzcGktY29uZmln
LWZpbGUgImN1c3RvbS50eHQiIGNvbnRlbnQpKQogCisoZGVmaW5lLXB1YmxpYyAobWFrZS1yYXNw
aS1iY20yOC1kdGJzIGxpbnV4KQorICAiTWFrZSBhIHBhY2thZ2Ugd2l0aCB0aGUgZGV2aWNlLXRy
ZWUgZmlsZXMgZm9yIFJhc3BiZXJyeSBQaSBtb2RlbHMgZnJvbSB0aGUKK2tlcm5lbCBMSU5VWC4i
CisgIChwYWNrYWdlCisgICAgKGluaGVyaXQgbGludXgpCisgICAgKG5hbWUgInJhc3BpLWJjbTI4
LWR0YnMiKQorICAgIChzb3VyY2UgI2YpCisgICAgKGJ1aWxkLXN5c3RlbSBjb3B5LWJ1aWxkLXN5
c3RlbSkKKyAgICAoYXJndW1lbnRzCisgICAgIGAoIzpwaGFzZXMgKG1vZGlmeS1waGFzZXMgJXN0
YW5kYXJkLXBoYXNlcyAoZGVsZXRlICd1bnBhY2spKQorICAgICAgICM6aW5zdGFsbC1wbGFuCisg
ICAgICAgKGxpc3QgKGxpc3QgKHN0cmluZy1hcHBlbmQgKGFzc29jLXJlZiAlYnVpbGQtaW5wdXRz
ICJsaW51eCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9saWIvZHRicy9i
cm9hZGNvbS8iKQorICAgICAgICAgICAgICAgICAgICIuIiAjOmluY2x1ZGUtcmVnZXhwICcoIi9i
Y20uLi4uLXJwaS4qXFwuZHRiIikpKSkpCisgICAgKGlucHV0cyBgKCgibGludXgiICxsaW51eCkp
KQorICAgIChzeW5vcHNpcyAiRGV2aWNlLXRyZWUgZmlsZXMgZm9yIGEgUmFzcGJlcnJ5IFBpIikK
KyAgICAoZGVzY3JpcHRpb24KKyAgICAgKHNpbXBsZS1mb3JtYXQgI2YgIlRoZSBkZXZpY2UtdHJl
ZSBmaWxlcyBmb3IgUmFzcGJlcnJ5IFBpIG1vZGVscyBmcm9tIH5hLiIKKyAgICAgICAgICAgICAo
cGFja2FnZS1uYW1lIGxpbnV4KSkpKSkKKwogKGRlZmluZSAobWFrZS1yYXNwaS1kZWZjb25maWcg
YXJjaCBkZWZjb25maWcgc2hhMjU2LWFzLWJhc2UzMikKICAgIk1ha2UgZm9yIHRoZSBhcmNoaXRl
Y3R1cmUgQVJDSCBhIGZpbGUtbGlrZSBvYmplY3QgZnJvbSB0aGUgREVGQ09ORklHIGZpbGUKIHdp
dGggdGhlIGhhc2ggU0hBMjU2LUFTLUJBU0UzMi4gIFRoaXMgb2JqZWN0IGNhbiBiZSB1c2VkIGFz
IHRoZSAjOmRlZmNvbmZpZwotLSAKMi4zNS4xCgo=

--b1_oHy08PWmPsOPRRPhK59EbeSBynAeRsUjblVRNhusU
Content-Type: text/x-patch; name=v3-0002-build-kconfig-Add-new-module-to-modify-a-defconfi.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=v3-0002-build-kconfig-Add-new-module-to-modify-a-defconfi.patch

RnJvbSBhMjM1ZDc1NjQ3MTVjY2ExY2VjNzc0ZDlkNTE1Y2FmMWJjY2I0ODU2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRyIEhvZGluYSA8cGhvZGluYUBwcm90b25tYWlsLmNvbT4K
RGF0ZTogV2VkLCAxMyBBcHIgMjAyMiAyMToxMDoxOSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjMg
Mi84XSBidWlsZDoga2NvbmZpZzogQWRkIG5ldyBtb2R1bGUgdG8gbW9kaWZ5IGEgZGVmY29uZmln
CiBmaWxlLgoKRnJvbTogU3RlZmFuIDxzdGVmYW4tZ3VpeEB2b2RhZm9uZW1haWwuZGU+CgoqIGd1
aXgvYnVpbGQva2NvbmZpZy5zY20gKG1vZGlmeS1kZWZjb25maWcpOiBOZXcgZmlsZSB3aXRoIGEg
bmV3IGZ1bmN0aW9uLgoqIGdudS9wYWNrYWdlcy9ib290bG9hZGVycy5zY20gKG1ha2UtdS1ib290
LXBhY2thZ2UsCm1ha2UtdS1ib290LXN1bnhpNjQtcGFja2FnZSk6IEFkZGluZyBuZXcga2V5IGFy
Z3VtZW50cyB0byBwYXNzIGFuZC9vciBtb2RpZnkKYSBkZWZjb25maWcgZmlsZS4KKHUtYm9vdC1h
bTMzNXgtYm9uZWJsYWNrLCB1LWJvb3QtcGluZWJvb2ssIHUtYm9vdC1ub3ZlbmEpOiBTaW1wbGlm
eSBmdW5jdGlvbnMKYnkgdXNpbmcgdGhlIG5ldyBrZXkgYXJndW1lbnRzIG9mIHRoZSBmb3JtZXIg
ZnVuY3Rpb25zLgoqIE1ha2VmaWxlLmFtOiBBZGRpbmcgZ3VpeC9idWlsZC9rY29uZmlnLnNjbSB0
byBNT0RVTEVTLgoKZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KaW5kZXgg
ZmVjY2U3YzZmNy4uN2Y2OWFhY2JkMSAxMDA2NDQKLS0tIGEvTWFrZWZpbGUuYW0KKysrIGIvTWFr
ZWZpbGUuYW0KQEAgLTIyMyw2ICsyMjMsNyBAQCBNT0RVTEVTID0JCQkJCVwKICAgZ3VpeC9idWls
ZC93YWYtYnVpbGQtc3lzdGVtLnNjbQkJXAogICBndWl4L2J1aWxkL2hhc2tlbGwtYnVpbGQtc3lz
dGVtLnNjbQkJXAogICBndWl4L2J1aWxkL2p1bGlhLWJ1aWxkLXN5c3RlbS5zY20JCVwKKyAgZ3Vp
eC9idWlsZC9rY29uZmlnLnNjbSAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgZ3VpeC9idWls
ZC9saW51eC1tb2R1bGUtYnVpbGQtc3lzdGVtLnNjbQlcCiAgIGd1aXgvYnVpbGQvc3RvcmUtY29w
eS5zY20JCQlcCiAgIGd1aXgvYnVpbGQvanNvbi5zY20JCQkJXApkaWZmIC0tZ2l0IGEvZ251L3Bh
Y2thZ2VzL2Jvb3Rsb2FkZXJzLnNjbSBiL2dudS9wYWNrYWdlcy9ib290bG9hZGVycy5zY20KaW5k
ZXggNjg3NmFiMTdiOS4uMTBmMmRkNWZhZCAxMDA2NDQKLS0tIGEvZ251L3BhY2thZ2VzL2Jvb3Rs
b2FkZXJzLnNjbQorKysgYi9nbnUvcGFja2FnZXMvYm9vdGxvYWRlcnMuc2NtCkBAIC0xNiw2ICsx
Niw3IEBACiA7OzsgQ29weXJpZ2h0IMKpIDIwMjEgVmluY2VudCBMZWdvbGwgPHZpbmNlbnQubGVn
b2xsQGdtYWlsLmNvbT4KIDs7OyBDb3B5cmlnaHQgwqkgMjAyMSBCcmljZSBXYWVnZW5laXJlIDxi
cmljZUB3YWVnZW5laS5yZT4KIDs7OyBDb3B5cmlnaHQgwqkgMjAyMSBTdGVmYW4gPHN0ZWZhbi1n
dWl4QHZvZGFmb25lbWFpbC5kZT4KKzs7OyBDb3B5cmlnaHQgwqkgMjAyMiBQZXRyIEhvZGluYSA8
cGhvZGluYUBwcm90b25tYWlsLmNvbT4KIDs7OwogOzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdO
VSBHdWl4LgogOzs7CkBAIC03NDcsOCArNzQ4LDkgQEAgKGRlZmluZS1wdWJsaWMgdS1ib290LXRv
b2xzCiBhbHNvIGluaXRpYWxpemVzIHRoZSBib2FyZHMgKFJBTSBldGMpLiAgVGhpcyBwYWNrYWdl
IHByb3ZpZGVzIGl0cwogYm9hcmQtaW5kZXBlbmRlbnQgdG9vbHMuIikpKQogCi0oZGVmaW5lLXB1
YmxpYyAobWFrZS11LWJvb3QtcGFja2FnZSBib2FyZCB0cmlwbGV0KQotICAiUmV0dXJucyBhIHUt
Ym9vdCBwYWNrYWdlIGZvciBCT0FSRCBjcm9zcy1jb21waWxlZCBmb3IgVFJJUExFVC4iCisoZGVm
aW5lKi1wdWJsaWMgKG1ha2UtdS1ib290LXBhY2thZ2UgYm9hcmQgdHJpcGxldCAjOmtleSBkZWZj
b25maWcgY29uZmlncykKKyAgIlJldHVybnMgYSB1LWJvb3QgcGFja2FnZSBmb3IgQk9BUkQgY3Jv
c3MtY29tcGlsZWQgZm9yIFRSSVBMRVQgd2l0aCB0aGUKK29wdGlvbmFsIERFRkNPTkZJRyBmaWxl
IGFuZCBvcHRpb25hbCBjb25maWd1cmF0aW9uIGNoYW5nZXMgZnJvbSBDT05GSUdTLiIKICAgKGxl
dCAoKHNhbWUtYXJjaD8gKGxhbWJkYSAoKQogICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmc9
PyAoJWN1cnJlbnQtc3lzdGVtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ251
LXRyaXBsZXQtPm5peC1zeXN0ZW0gdHJpcGxldCkpKSkpCkBAIC03NjYsOCArNzY4LDExIEBAIChk
ZWZpbmUtcHVibGljIChtYWtlLXUtYm9vdC1wYWNrYWdlIGJvYXJkIHRyaXBsZXQpCiAgICAgICAo
YXJndW1lbnRzCiAgICAgICAgYCgjOm1vZHVsZXMgKChpY2UtOSBmdHcpCiAgICAgICAgICAgICAg
ICAgICAgIChzcmZpIHNyZmktMSkKLSAgICAgICAgICAgICAgICAgICAgKGd1aXggYnVpbGQgdXRp
bHMpCi0gICAgICAgICAgICAgICAgICAgIChndWl4IGJ1aWxkIGdudS1idWlsZC1zeXN0ZW0pKQor
ICAgICAgICAgICAgICAgICAgICAoZ3VpeCBidWlsZCBnbnUtYnVpbGQtc3lzdGVtKQorICAgICAg
ICAgICAgICAgICAgICAoZ3VpeCBidWlsZCBrY29uZmlnKQorICAgICAgICAgICAgICAgICAgICAo
Z3VpeCBidWlsZCB1dGlscykpCisgICAgICAgICAjOmltcG9ydGVkLW1vZHVsZXMgKCxAJWdudS1i
dWlsZC1zeXN0ZW0tbW9kdWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3VpeCBi
dWlsZCBrY29uZmlnKSkKICAgICAgICAgICM6dGVzdC10YXJnZXQgInRlc3QiCiAgICAgICAgICAj
Om1ha2UtZmxhZ3MKICAgICAgICAgIChsaXN0ICJIT1NUQ0M9Z2NjIgpAQCAtNzc4LDkgKzc4Mywx
OCBAQCAoZGVmaW5lLXB1YmxpYyAobWFrZS11LWJvb3QtcGFja2FnZSBib2FyZCB0cmlwbGV0KQog
ICAgICAgICAgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAgICAocmVw
bGFjZSAnY29uZmlndXJlCiAgICAgICAgICAgICAgKGxhbWJkYSogKCM6a2V5IG91dHB1dHMgbWFr
ZS1mbGFncyAjOmFsbG93LW90aGVyLWtleXMpCi0gICAgICAgICAgICAgICAobGV0ICgoY29uZmln
LW5hbWUgKHN0cmluZy1hcHBlbmQgLGJvYXJkICJfZGVmY29uZmlnIikpKQotICAgICAgICAgICAg
ICAgICAoaWYgKGZpbGUtZXhpc3RzPyAoc3RyaW5nLWFwcGVuZCAiY29uZmlncy8iIGNvbmZpZy1u
YW1lKSkKLSAgICAgICAgICAgICAgICAgICAgIChhcHBseSBpbnZva2UgIm1ha2UiIGAoLEBtYWtl
LWZsYWdzICxjb25maWctbmFtZSkpCisgICAgICAgICAgICAgICAobGV0KiAoKGNvbmZpZy1uYW1l
IChzdHJpbmctYXBwZW5kICxib2FyZCAiX2RlZmNvbmZpZyIpKQorICAgICAgICAgICAgICAgICAg
ICAgIChjb25maWctZmlsZSAoc3RyaW5nLWFwcGVuZCAiY29uZmlncy8iIGNvbmZpZy1uYW1lKSkK
KyAgICAgICAgICAgICAgICAgICAgICAoZGVmY29uZmlnICxkZWZjb25maWcpCisgICAgICAgICAg
ICAgICAgICAgICAgKGNvbmZpZ3MgJyxjb25maWdzKSkKKyAgICAgICAgICAgICAgICAgKHdoZW4g
ZGVmY29uZmlnCisgICAgICAgICAgICAgICAgICAgOzsgUmVwbGFjZSB0aGUgYm9hcmQtc3BlY2lm
aWMgZGVmY29uZmlnIHdpdGggdGhlIGdpdmVuIG9uZS4KKyAgICAgICAgICAgICAgICAgICAoY29w
eS1maWxlIGRlZmNvbmZpZyBjb25maWctZmlsZSkpCisgICAgICAgICAgICAgICAgIChpZiAoZmls
ZS1leGlzdHM/IGNvbmZpZy1maWxlKQorICAgICAgICAgICAgICAgICAgICAgKGJlZ2luCisgICAg
ICAgICAgICAgICAgICAgICAgICh3aGVuIGNvbmZpZ3MKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAobW9kaWZ5LWRlZmNvbmZpZyBjb25maWctZmlsZSBjb25maWdzKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgKGFwcGx5IGludm9rZSAibWFrZSIgYCgsQG1ha2UtZmxhZ3MgLGNvbmZpZy1uYW1l
KSkpCiAgICAgICAgICAgICAgICAgICAgICAoYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAg
KGRpc3BsYXkgIkludmFsaWQgYm9hcmQgbmFtZS4gVmFsaWQgYm9hcmQgbmFtZXMgYXJlOiIKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnQtZXJyb3ItcG9ydCkpCkBAIC04
MzQsNyArODQ4LDExIEBAIChkZWZpbmUtcHVibGljIHUtYm9vdC1tYWx0YQogICAobWFrZS11LWJv
b3QtcGFja2FnZSAibWFsdGEiICJtaXBzNjRlbC1saW51eC1nbnVhYmk2NCIpKQogCiAoZGVmaW5l
LXB1YmxpYyB1LWJvb3QtYW0zMzV4LWJvbmVibGFjawotICAobGV0ICgoYmFzZSAobWFrZS11LWJv
b3QtcGFja2FnZSAiYW0zMzV4X2V2bSIgImFybS1saW51eC1nbnVlYWJpaGYiKSkpCisgIChsZXQg
KChiYXNlIChtYWtlLXUtYm9vdC1wYWNrYWdlICJhbTMzNXhfZXZtIiAiYXJtLWxpbnV4LWdudWVh
YmloZiIKKyAgICAgICAgICAgICAgIDs7IFBhdGNoIG91dCBvdGhlciBkZXZpY2UgdHJlZXMgdG8g
YnVpbGQgaW1hZ2Ugc21hbGwgZW5vdWdoIHRvCisgICAgICAgICAgICAgICA7OyBmaXQgd2l0aGlu
IHR5cGljYWwgcGFydGl0aW9uaW5nIHNjaGVtZXMgd2hlcmUgdGhlIGZpcnN0CisgICAgICAgICAg
ICAgICA7OyBwYXJ0aXRpb24gYmVnaW5zIGF0IHNlY3RvciAyMDQ4LgorICAgICAgICAgICAgICAg
Izpjb25maWdzICcoIkNPTkZJR19PRl9MSVNUPVwiYW0zMzV4LWV2bSBhbTMzNXgtYm9uZWJsYWNr
XCIiKSkpKQogICAgIChwYWNrYWdlCiAgICAgICAoaW5oZXJpdCBiYXNlKQogICAgICAgKG5hbWUg
InUtYm9vdC1hbTMzNXgtYm9uZWJsYWNrIikKQEAgLTg0MywyNSArODYxLDEzIEBAIChkZWZpbmUt
cHVibGljIHUtYm9vdC1hbTMzNXgtYm9uZWJsYWNrCiAKIFRoaXMgVS1Cb290IGlzIGJ1aWx0IGZv
ciB0aGUgQmVhZ2xlQm9uZSBCbGFjaywgd2hpY2ggd2FzIHJlbW92ZWQgdXBzdHJlYW0sCiBhZGp1
c3RlZCBmcm9tIHRoZSBhbTMzNXhfZXZtIGJ1aWxkIHdpdGggc2V2ZXJhbCBkZXZpY2UgdHJlZXMg
cmVtb3ZlZCBzbyB0aGF0Ci1pdCBmaXRzIHdpdGhpbiBjb21tb24gcGFydGl0aW9uaW5nIHNjaGVt
ZXMuIikKLSAgICAgIChhcmd1bWVudHMKLSAgICAgICAoc3Vic3RpdHV0ZS1rZXl3b3JkLWFyZ3Vt
ZW50cyAocGFja2FnZS1hcmd1bWVudHMgYmFzZSkKLSAgICAgICAgICgoIzpwaGFzZXMgcGhhc2Vz
KQotICAgICAgICAgIGAobW9kaWZ5LXBoYXNlcyAscGhhc2VzCi0gICAgICAgICAgICAgKGFkZC1h
ZnRlciAndW5wYWNrICdwYXRjaC1kZWZjb25maWcKLSAgICAgICAgICAgICAgIDs7IFBhdGNoIG91
dCBvdGhlciBkZXZpY2V0cmVlcyB0byBidWlsZCBpbWFnZSBzbWFsbCBlbm91Z2ggdG8KLSAgICAg
ICAgICAgICAgIDs7IGZpdCB3aXRoaW4gdHlwaWNhbCBwYXJ0aXRpb25pbmcgc2NoZW1lcyB3aGVy
ZSB0aGUgZmlyc3QKLSAgICAgICAgICAgICAgIDs7IHBhcnRpdGlvbiBiZWdpbnMgYXQgc2VjdG9y
IDIwNDguCi0gICAgICAgICAgICAgICAobGFtYmRhIF8KLSAgICAgICAgICAgICAgICAgKHN1YnN0
aXR1dGUqICJjb25maWdzL2FtMzM1eF9ldm1fZGVmY29uZmlnIgotICAgICAgICAgICAgICAgICAg
ICgoIkNPTkZJR19PRl9MSVNUPS4qJCIpICJDT05GSUdfT0ZfTElTVD1cImFtMzM1eC1ldm0gYW0z
MzV4LWJvbmVibGFja1wiXG4iKSkKLSAgICAgICAgICAgICAgICAgI3QpKSkpKSkpKSkKK2l0IGZp
dHMgd2l0aGluIGNvbW1vbiBwYXJ0aXRpb25pbmcgc2NoZW1lcy4iKSkpKQogCiAoZGVmaW5lLXB1
YmxpYyB1LWJvb3QtYW0zMzV4LWV2bQogICAobWFrZS11LWJvb3QtcGFja2FnZSAiYW0zMzV4X2V2
bSIgImFybS1saW51eC1nbnVlYWJpaGYiKSkKIAotKGRlZmluZS1wdWJsaWMgKG1ha2UtdS1ib290
LXN1bnhpNjQtcGFja2FnZSBib2FyZCB0cmlwbGV0KQotICAobGV0ICgoYmFzZSAobWFrZS11LWJv
b3QtcGFja2FnZSBib2FyZCB0cmlwbGV0KSkpCisoZGVmaW5lKi1wdWJsaWMgKG1ha2UtdS1ib290
LXN1bnhpNjQtcGFja2FnZSBib2FyZCB0cmlwbGV0ICM6a2V5IGRlZmNvbmZpZyBjb25maWdzKQor
ICAobGV0ICgoYmFzZSAobWFrZS11LWJvb3QtcGFja2FnZSBib2FyZCB0cmlwbGV0ICM6ZGVmY29u
ZmlnIGRlZmNvbmZpZyAjOmNvbmZpZ3MgY29uZmlncykpKQogICAgIChwYWNrYWdlCiAgICAgICAo
aW5oZXJpdCBiYXNlKQogICAgICAgKGFyZ3VtZW50cwpAQCAtODkxLDIwICs4OTcsMTAgQEAgKGRl
ZmluZS1wdWJsaWMgdS1ib290LXBpbmU2NC1sdHMKICAgKG1ha2UtdS1ib290LXN1bnhpNjQtcGFj
a2FnZSAicGluZTY0LWx0cyIgImFhcmNoNjQtbGludXgtZ251IikpCiAKIChkZWZpbmUtcHVibGlj
IHUtYm9vdC1waW5lYm9vawotICAobGV0ICgoYmFzZSAobWFrZS11LWJvb3Qtc3VueGk2NC1wYWNr
YWdlICJwaW5lYm9vayIgImFhcmNoNjQtbGludXgtZ251IikpKQotICAgIChwYWNrYWdlCi0gICAg
ICAoaW5oZXJpdCBiYXNlKQotICAgICAgKGFyZ3VtZW50cwotICAgICAgIChzdWJzdGl0dXRlLWtl
eXdvcmQtYXJndW1lbnRzIChwYWNrYWdlLWFyZ3VtZW50cyBiYXNlKQotICAgICAgICAgKCgjOnBo
YXNlcyBwaGFzZXMpCi0gICAgICAgICAgYChtb2RpZnktcGhhc2VzICxwaGFzZXMKLSAgICAgICAg
ICAgICAoYWRkLWFmdGVyICd1bnBhY2sgJ3BhdGNoLXBpbmVib29rLWNvbmZpZwotICAgICAgICAg
ICAgICAgOzsgRml4IHJlZ3Jlc3Npb24gd2l0aCBMQ0QgdmlkZW8gb3V0cHV0IGludHJvZHVjZWQg
aW4gMjAyMC4wMQotICAgICAgICAgICAgICAgOzsgaHR0cHM6Ly9wYXRjaHdvcmsub3psYWJzLm9y
Zy9wYXRjaC8xMjI1MTMwLwotICAgICAgICAgICAgICAgKGxhbWJkYSBfCi0gICAgICAgICAgICAg
ICAgIChzdWJzdGl0dXRlKiAiY29uZmlncy9waW5lYm9va19kZWZjb25maWciCi0gICAgICAgICAg
ICAgICAgICAgKCgiQ09ORklHX1ZJREVPX0JSSURHRV9BTkFMT0dJWF9BTlg2MzQ1PXkiKSAiQ09O
RklHX1ZJREVPX0JSSURHRV9BTkFMT0dJWF9BTlg2MzQ1PXlcbkNPTkZJR19WSURFT19CUFAzMj15
IikpCi0gICAgICAgICAgICAgICAgICN0KSkpKSkpKSkpCisgIChtYWtlLXUtYm9vdC1zdW54aTY0
LXBhY2thZ2UgInBpbmVib29rIiAiYWFyY2g2NC1saW51eC1nbnUiCisgICA7OyBGaXggcmVncmVz
c2lvbiB3aXRoIExDRCB2aWRlbyBvdXRwdXQgaW50cm9kdWNlZCBpbiAyMDIwLjAxCisgICA7OyBo
dHRwczovL3BhdGNod29yay5vemxhYnMub3JnL3BhdGNoLzEyMjUxMzAvCisgICAjOmNvbmZpZ3Mg
JygiQ09ORklHX1ZJREVPX0JQUDMyPXkiKSkpCiAKIChkZWZpbmUtcHVibGljIHUtYm9vdC1iYW5h
bmFwaS1tMi11bHRyYQogICAobWFrZS11LWJvb3QtcGFja2FnZSAiQmFuYW5hcGlfTTJfVWx0cmEi
ICJhcm0tbGludXgtZ251ZWFiaWhmIikpCkBAIC05NTUsMjUgKzk1MSwxNyBAQCAoZGVmaW5lLXB1
YmxpYyB1LWJvb3QtbXg2Y3Vib3hpCiAgIChtYWtlLXUtYm9vdC1wYWNrYWdlICJteDZjdWJveGki
ICJhcm0tbGludXgtZ251ZWFiaWhmIikpCiAKIChkZWZpbmUtcHVibGljIHUtYm9vdC1ub3ZlbmEK
LSAgKGxldCAoKGJhc2UgKG1ha2UtdS1ib290LXBhY2thZ2UgIm5vdmVuYSIgImFybS1saW51eC1n
bnVlYWJpaGYiKSkpCisgIChsZXQgKChiYXNlIChtYWtlLXUtYm9vdC1wYWNrYWdlICJub3ZlbmEi
ICJhcm0tbGludXgtZ251ZWFiaWhmIgorICAgICAgICAgICAgICAgOzsgUGF0Y2ggY29uZmlndXJh
dGlvbiB0byBkaXNhYmxlIGxvYWRpbmcgdS1ib290LmltZyBmcm9tIEZBVAorICAgICAgICAgICAg
ICAgOzsgcGFydGl0aW9uLCBhbGxvd2luZyBpdCB0byBiZSBpbnN0YWxsZWQgYXQgYSBkZXZpY2Ug
b2Zmc2V0LgorICAgICAgICAgICAgICAgIzpjb25maWdzICcoIkNPTkZJR19TUExfRlNfRkFUPSIp
KSkpCiAgICAgKHBhY2thZ2UKICAgICAgIChpbmhlcml0IGJhc2UpCiAgICAgICAoZGVzY3JpcHRp
b24gIlUtQm9vdCBpcyBhIGJvb3Rsb2FkZXIgdXNlZCBtb3N0bHkgZm9yIEFSTSBib2FyZHMuICBJ
dAogYWxzbyBpbml0aWFsaXplcyB0aGUgYm9hcmRzIChSQU0gZXRjKS4KIAogVGhpcyBVLUJvb3Qg
aXMgYnVpbHQgZm9yIE5vdmVuYS4gIEJlIGFkdmlzZWQgdGhhdCB0aGlzIHZlcnNpb24sIGNvbnRy
YXJ5Ci10byBOb3ZlbmEgdXBzdHJlYW0sIGRvZXMgbm90IGxvYWQgdS1ib290LmltZyBmcm9tIHRo
ZSBmaXJzdCBwYXJ0aXRpb24uIikKLSAgICAgIChhcmd1bWVudHMKLSAgICAgICAoc3Vic3RpdHV0
ZS1rZXl3b3JkLWFyZ3VtZW50cyAocGFja2FnZS1hcmd1bWVudHMgYmFzZSkKLSAgICAgICAgICgo
IzpwaGFzZXMgcGhhc2VzKQotICAgICAgICAgIGAobW9kaWZ5LXBoYXNlcyAscGhhc2VzCi0gICAg
ICAgICAgICAgKGFkZC1hZnRlciAndW5wYWNrICdwYXRjaC1ub3ZlbmEtZGVmY29uZmlnCi0gICAg
ICAgICAgICAgICA7OyBQYXRjaCBjb25maWd1cmF0aW9uIHRvIGRpc2FibGUgbG9hZGluZyB1LWJv
b3QuaW1nIGZyb20gRkFUIHBhcnRpdGlvbiwKLSAgICAgICAgICAgICAgIDs7IGFsbG93aW5nIGl0
IHRvIGJlIGluc3RhbGxlZCBhdCBhIGRldmljZSBvZmZzZXQuCi0gICAgICAgICAgICAgICAobGFt
YmRhIF8KLSAgICAgICAgICAgICAgICAgKHN1YnN0aXR1dGUqICJjb25maWdzL25vdmVuYV9kZWZj
b25maWciCi0gICAgICAgICAgICAgICAgICAgKCgiQ09ORklHX1NQTF9GU19GQVQ9eSIpICIjIENP
TkZJR19TUExfRlNfRkFUIGlzIG5vdCBzZXQiKSkKLSAgICAgICAgICAgICAgICAgI3QpKSkpKSkp
KSkKK3RvIE5vdmVuYSB1cHN0cmVhbSwgZG9lcyBub3QgbG9hZCB1LWJvb3QuaW1nIGZyb20gdGhl
IGZpcnN0IHBhcnRpdGlvbi4iKSkpKQogCiAoZGVmaW5lLXB1YmxpYyB1LWJvb3QtY3ViaWVib2Fy
ZAogICAobWFrZS11LWJvb3QtcGFja2FnZSAiQ3ViaWVib2FyZCIgImFybS1saW51eC1nbnVlYWJp
aGYiKSkKZGlmZiAtLWdpdCBhL2d1aXgvYnVpbGQva2NvbmZpZy5zY20gYi9ndWl4L2J1aWxkL2tj
b25maWcuc2NtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjA5ZGRmNTlk
ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9ndWl4L2J1aWxkL2tjb25maWcuc2NtCkBAIC0wLDAgKzEs
MTQ4IEBACis7OzsgR05VIEd1aXggLS0tIEZ1bmN0aW9uYWwgcGFja2FnZSBtYW5hZ2VtZW50IGZv
ciBHTlUKKzs7OyBDb3B5cmlnaHQgwqkgMjAyMCBTdGVmYW4gPHN0ZWZhbi1ndWl4QHZvZGFmb25l
bWFpbC5kZT4KKzs7OworOzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBHdWl4LgorOzs7Cis7
OzsgR05VIEd1aXggaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yIG1vZGlmeSBpdAorOzs7IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0Cis7OzsgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorOzs7Cis7OzsgR05VIEd1aXggaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Cis7OzsgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzs7IE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUKKzs7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorOzs7
Cis7OzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKzs7OyBhbG9uZyB3aXRoIEdOVSBHdWl4LiAgSWYgbm90LCBzZWUgPGh0
dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisoZGVmaW5lLW1vZHVsZSAoZ3VpeCBidWls
ZCBrY29uZmlnKQorICAjOnVzZS1tb2R1bGUgIChpY2UtOSByZGVsaW0pCisgICM6dXNlLW1vZHVs
ZSAgKGljZS05IHJlZ2V4KQorICAjOnVzZS1tb2R1bGUgIChzcmZpIHNyZmktMSkKKyAgIzp1c2Ut
bW9kdWxlICAoc3JmaSBzcmZpLTI2KQorICAjOmV4cG9ydCAobW9kaWZ5LWRlZmNvbmZpZykpCisK
Kzs7IENvbW1lbnRhcnk6Cis7OworOzsgQnVpbGRlci1zaWRlIGNvZGUgdG8gbW9kaWZ5IGNvbmZp
Z3VyYXRpb25zIGZvciB0aGUgS2NvbmZpZyBidWlsZCBzeXN0ZW0gYXMKKzs7IHVzZWQgYnkgTGlu
dXggYW5kIFUtQm9vdC4KKzs7Cis7OyBDb2RlOgorCisoZGVmaW5lIChtb2RpZnktZGVmY29uZmln
IGRlZmNvbmZpZyBjb25maWdzKQorICAiVGhpcyBmdW5jdGlvbiBjYW4gbW9kaWZ5IGEgZ2l2ZW4g
REVGQ09ORklHIGZpbGUgYnkgYWRkaW5nLCBjaGFuZ2luZyBvcgorcmVtb3ZpbmcgdGhlIGxpc3Qg
b2Ygc3RyaW5ncyBpbiBDT05GSUdTLiAgVGhpcyBhbGxvd3MgYW4gZWFzeSBjdXN0b21pemF0aW9u
IG9mCitLY29uZmlnIGJhc2VkIHByb2plY3RzIGxpa2UgdGhlIGtlcm5lbCBMaW51eCBvciB0aGUg
Ym9vdGxvYWRlciAnRGFzIFUtQm9vdCcuCisKK1RoZXNlIGFyZSBleGFtcGxlcyBmb3IgQ09ORklH
UyB0byBhZGQgb3IgY2hhbmdlIG9yIHJlbW92ZQorY29uZmlndXJhdGlvbnMgdG8vZnJvbSBERUZD
T05GSUc6CisKKycoXCJDT05GSUdfQT1cXFwiYVxcXCJcIgorICBcIkNPTkZJR19CPTBcIgorICBc
IkNPTkZJR19DPXlcIgorICBcIkNPTkZJR19EPW1cIgorICBcIkNPTkZJR19FPVwiCisgIFwiQ09O
RklHX0ZcIgorICBcIiMgQ09ORklHX0cgaXMgbm90IHNldFwiKQorCitJbnN0ZWFkIG9mIGEgbGlz
dCwgQ09ORkdJUyBjYW4gYmUgYSBzdHJpbmcgd2l0aCBvbmUgY29uZmlndXJhdGlvbiBwZXIgbGlu
ZS4iCisgIChkZWZpbmUgY29uZmlnLXJ4CisgICAgKG1ha2UtcmVnZXhwCisgICAgIDs7IChtYXRj
aDpzdWJzdHJpbmcgKHN0cmluZy1tYXRjaCAiPSguKikiICI9IikgMSkgcmV0dXJucyAiIiwgYnV0
IHRoZQorICAgICA7OyBwYXR0ZXJuICI9KC4rKT8iIG1ha2VzIGl0IHJldHVybiAjZiBpbnN0ZWFk
LiAgRm9yIGEgIkNPTkZJR19BPSIgd2UgbGlrZQorICAgICA7OyB0byBnZXQgI2YsIHdoaWNoIGFz
IGEgdmFsdWUgZW1pdHMgIiMg4oCmIGlzIG5vdCBzZXQiLgorICAgICAiXigjW1xcdCBdKik/KENP
TkZJR19bQS1aMC05X10rKShbXFx0IF0qPVtcXHQgXSooLispP3woW1xcdCBdK2lzW1xcdCBdK25v
dFtcXHQgXStzZXQpKT8kIikpCisKKyAgKGRlZmluZSAoY29uZmlnLXN0cmluZy0+cGFpciBjb25m
aWctc3RyaW5nKQorICAgICJQYXJzZSBhIGNvbmZpZy1zdHJpbmcgbGlrZSBcIkNPTkZJR19FWEFN
UExFPXlcIiBpbnRvIGEga2V5LXZhbHVlIHBhaXIuCitTcGFjZXMgZ2V0IHRyaW1tZWQuCitcIkNP
TkZJR19BPXlcIiAgICAgICAgICAgIC0+ICcoXCJDT05GSUdfQVwiIC4gXCJ5XCIpCitcIkNPTkZJ
R19CPVxcXCJcXFwiXCIgICAgICAgICAtPiAnKFwiQ09ORklHX0JcIiAuIFwiXFxcIlxcXCJcIikK
K1wiQ09ORklHX0M9XCIgICAgICAgICAgICAgLT4gJyhcIkNPTkZJR19DXCIgLiAjZikKK1wiQ09O
RklHX0RcIiAgICAgICAgICAgICAgLT4gJyhcIkNPTkZJR19EXCIgLiAjZikKK1wiIyBDT05GSUdf
RSBpcyBub3Qgc2V0XCIgLT4gJyhcIkNPTkZJR19FXCIgLiAjZikKK1wiIyBBbnl0aGluZyBlbHNl
XCIgICAgICAgLT4gJyhcIiMgQW55dGhpbmcgZWxzZVwiIC4gXCJcIikiCisgICAgKGxldCAoKG1h
dGNoIChyZWdleHAtZXhlYyBjb25maWctcnggKHN0cmluZy10cmltLWJvdGggY29uZmlnLXN0cmlu
ZykpKSkKKyAgICAgIChpZiAobm90IG1hdGNoKQorICAgICAgICAgIDs7IFRoaXMgaXMgc29tZSB1
bnBhcnNhYmxlIGNvbmZpZy1zdHJpbmcuCisgICAgICAgICAgOzsgV2Uga2VlcCBpdCBhcyBpdCBp
cy4KKyAgICAgICAgICAoY29ucyBjb25maWctc3RyaW5nICIiKQorICAgICAgICAgIChsZXQqICgo
Y29tbWVudCAobWF0Y2g6c3Vic3RyaW5nIG1hdGNoIDEpKQorICAgICAgICAgICAgICAgICAoa2V5
IChtYXRjaDpzdWJzdHJpbmcgbWF0Y2ggMikpCisgICAgICAgICAgICAgICAgICh1bnNldCAobWF0
Y2g6c3Vic3RyaW5nIG1hdGNoIDUpKQorICAgICAgICAgICAgICAgICAodmFsdWUgKGFuZCAobm90
IGNvbW1lbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgdW5zZXQpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaDpzdWJzdHJpbmcgbWF0Y2ggNCkpKSkKKyAg
ICAgICAgICAgIChpZiAob3IgKGFuZCBjb21tZW50IChub3QgdW5zZXQpKQorICAgICAgICAgICAg
ICAgICAgICAoYW5kIChub3QgY29tbWVudCkgdW5zZXQpKQorICAgICAgICAgICAgICAgIDs7IFRo
aXMgaXMganVzdCBzb21lIGNvbW1lbnQgb3Igc3RyYW5nZSBsaW5lLCB3aGljaCB3ZSBrZWVwIGFz
IGlzLgorICAgICAgICAgICAgICAgIChjb25zIGNvbmZpZy1zdHJpbmcgIiIpCisgICAgICAgICAg
ICAgICAgKGNvbnMga2V5IHZhbHVlKSkpKSkpCisKKyAgKGRlZmluZSAocGFpci0+Y29uZmlnLXN0
cmluZyBwYWlyKQorICAgICJDb252ZXJ0IGEgUEFJUiBiYWNrIHRvIGEgY29uZmlnLXN0cmluZy4i
CisgICAgKGxldCogKChrZXkgKGNhciBwYWlyKSkKKyAgICAgICAgICAgKHZhbHVlIChjZHIgcGFp
cikpKQorICAgICAgKGlmIChzdHJpbmc/IHZhbHVlKQorICAgICAgICAgIChpZiAoc3RyaW5nLW51
bGw/IHZhbHVlKQorICAgICAgICAgICAgICBrZXkKKyAgICAgICAgICAgICAgKHN0cmluZy1hcHBl
bmQga2V5ICI9IiB2YWx1ZSkpCisgICAgICAgICAgKHN0cmluZy1hcHBlbmQgIiMgIiBrZXkgIiBp
cyBub3Qgc2V0IikpKSkKKworICAoZGVmaW5lIChyZW1vdmUtcGFpciBwYWlyIGJsYWNrbGlzdCkK
KyAgICAiVHVybiBhIGtleS12YWx1ZSBQQUlSIGludG8gJygiIiAuICIiKSwgaWYgaXRzIGtleSBp
cyBsaXN0ZWQgaW4gQkxBQ0tMSVNULiIKKyAgICAobGV0KiAoKGtleSAoZmlyc3QgcGFpcikpKQor
ICAgICAgKGlmIChtZW1iZXIga2V5IGJsYWNrbGlzdCkKKyAgICAgICAgICAnKCIiIC4gIiIpCisg
ICAgICAgICAgcGFpcikpKQorCisgIChkZWZpbmUgKHJlbW92ZS1jb25maWctc3RyaW5nIGNvbmZp
Zy1zdHJpbmcgYmxhY2tsaXN0KQorICAgICJSZW1vdmUgdGhlIENPTkZJRy1TVFJJTkcsIGlmIGl0
cyBrZXkgaXMgbGlzdGVkIGluIEJMQUNLTElTVC4iCisgICAgKHBhaXItPmNvbmZpZy1zdHJpbmcg
KHJlbW92ZS1wYWlyIChjb25maWctc3RyaW5nLT5wYWlyIGNvbmZpZy1zdHJpbmcpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2xpc3QpKSkKKworICAoZGVmaW5l
KiAod3JpdGUtbGluZXMgaW5wdXQgIzprZXkgKGxpbmUtbW9kaWZpZXIgaWRlbnRpdHkpKQorICAg
ICJXcml0ZSBhbGwgbGluZXMgZnJvbSB0aGUgSU5QVVQgYWZ0ZXIgYXBwbHlpbmcgdGhlIExJTkUt
TU9ESUZJRVIgdG8gdGhlCisgY3VycmVudC1vdXRwdXQtcG9ydC4iCisgICAgKGxldCBsb29wICgo
bGluZSAocmVhZC1saW5lIGlucHV0KSkpCisgICAgICAod2hlbiAobm90IChlb2Ytb2JqZWN0PyBs
aW5lKSkKKyAgICAgICAgKGRpc3BsYXkgKGxpbmUtbW9kaWZpZXIgbGluZSkpCisgICAgICAgIChu
ZXdsaW5lKQorICAgICAgICAobG9vcCAocmVhZC1saW5lIGlucHV0KSkpKSkKKworICAobGV0KiAo
KG1vZGlmaWVkLWRlZmNvbmZpZyAoc3RyaW5nLWFwcGVuZCBkZWZjb25maWcgIi5tb2QiKSkKKyAg
ICAgICAgIDs7IFNwbGl0IHRoZSBjb25maWdzIGludG8gYSBsaXN0IG9mIHNpbmdsZSBjb25maWd1
YXRpb25zLgorICAgICAgICAgOzsgVG8gbWluaW1pemUgbWlzdGFrZXMsIHdlIHN1cHBvcnQgYSBz
dHJpbmcgYW5kIGEgbGlzdCBvZiBzdHJpbmdzLAorICAgICAgICAgOzsgZWFjaCB3aXRoIG5ld2xp
bmVzIHRvIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb25zLgorICAgICAgICAgKGNvbmZpZy1saXN0IChm
b2xkLXJpZ2h0IGFwcGVuZCAnKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
bWFwIChsYW1iZGEgKHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChzdHJpbmctc3BsaXQgcyAjXG5ld2xpbmUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGlmIChzdHJpbmc/IGNvbmZpZ3MpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGxpc3QgY29uZmlncykKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25maWdzKSkpKQorICAgICAgICAgOzsgR2VuZXJhdGUg
a2V5LXZhbHVlIHBhaXJzIGZyb20gdGhlIGNvbmZpZy1saXN0LgorICAgICAgICAgKHBhaXJzICht
YXAgKGxhbWJkYSAoY29uZmlnLXN0cmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgKGNvbmZp
Zy1zdHJpbmctPnBhaXIgY29uZmlnLXN0cmluZykpCisgICAgICAgICAgICAgICAgICAgICBjb25m
aWctbGlzdCkpCisgICAgICAgICA7OyBHZW5lcmF0ZSBhIGJsYWNrbGlzdCBvZiBjb25maWcga2V5
cyBmcm9tIHBhaXJzLgorICAgICAgICAgKGJsYWNrbGlzdCAobWFwIChsYW1iZGEgKGNvbmZpZy1w
YWlyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpcnN0IGNvbmZpZy1wYWlyKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBwYWlycykpCisgICAgICAgICAocmVtb3ZlLWNvbmZpZy1z
dHJpbmcgKGN1dCByZW1vdmUtY29uZmlnLXN0cmluZyA8PiBibGFja2xpc3QpKSkKKyAgICA7OyBX
cml0ZSB0byB0aGUgbW9kaWZpZWQtZGVmY29uZmlnIGZpbGUgZmlyc3QgdGhlIGNvbnRlbnQgb2Yg
dGhlIGRlZmNvbmZpZworICAgIDs7IGZpbGUgd2l0aCByZW1vdmVkIGxpbmVzLCBhbmQgYWZ0ZXJ3
YXJkcyB0aGUgY29uZmlncy4KKyAgICAoY2FsbC13aXRoLW91dHB1dC1maWxlIG1vZGlmaWVkLWRl
ZmNvbmZpZworICAgICAgKGxhbWJkYSAob3V0cHV0KQorICAgICAgICAod2l0aC1vdXRwdXQtdG8t
cG9ydCBvdXRwdXQKKyAgICAgICAgICAobGFtYmRhICgpCisgICAgICAgICAgICAoY2FsbC13aXRo
LWlucHV0LWZpbGUgZGVmY29uZmlnCisgICAgICAgICAgICAgIChsYW1iZGEgKGlucHV0KQorICAg
ICAgICAgICAgICAgICh3cml0ZS1saW5lcyBpbnB1dCAjOiBsaW5lLW1vZGlmaWVyIHJlbW92ZS1j
b25maWctc3RyaW5nKSkpCisgICAgICAgICAgICAoY2FsbC13aXRoLWlucHV0LXN0cmluZworICAg
ICAgICAgICAgICAoc3RyaW5nLWpvaW4gKG1hcCBwYWlyLT5jb25maWctc3RyaW5nIHBhaXJzKSAi
XG4iKQorICAgICAgICAgICAgICAobGFtYmRhIChpbnB1dCkKKyAgICAgICAgICAgICAgICAod3Jp
dGUtbGluZXMgaW5wdXQpKSkpKSkpCisgICAgOzsgRW5zdXJlIHRoZSBtb2RpZmllZC1kZWZjb25m
aWcgZmlsZSBpcyB1c2VkLgorICAgIChkZWxldGUtZmlsZSBkZWZjb25maWcpCisgICAgKHJlbmFt
ZS1maWxlIG1vZGlmaWVkLWRlZmNvbmZpZyBkZWZjb25maWcpKSkKLS0gCjIuMzUuMQoK

--b1_oHy08PWmPsOPRRPhK59EbeSBynAeRsUjblVRNhusU
Content-Type: text/x-patch; name=v3-0005-gnu-raspberry-pi-Add-defconfig-objects-to-build-c.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=v3-0005-gnu-raspberry-pi-Add-defconfig-objects-to-build-c.patch

RnJvbSA3NTNmMDhiODc4Nzg1MDhkYTc2ODg5MWZhNzM3MTA5NDQwMWJlYTg4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGVmYW4gPHN0ZWZhbi1ndWl4QHZvZGFmb25lbWFpbC5kZT4K
RGF0ZTogV2VkLCAxMyBBcHIgMjAyMiAyMToxOToyNSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjMg
NS84XSBnbnU6IHJhc3BiZXJyeS1waTogQWRkIGRlZmNvbmZpZyBvYmplY3RzIHRvIGJ1aWxkCiBj
dXN0b21pemVkIExpbnV4IGtlcm5lbHMuCgpnbnUvcGFja2FnZXMvcmFzcGJlcnJ5LXBpLnNjbSAo
bWFrZS1yYXNwaS1kZWZjb25pZyk6IE5ldyBmdW5jdGlvbiB0byBtYWtlCmRvd25sb2FkZWQgZGVm
Y29uZmlnIG9iamVjdHMgZnJvbSB0aGUgTGludXggcmVwb3NpdG9yeSBvZiB0aGUgUmFzcGJlcnJ5
IFBpCkZvdW5kYXRpb24uCiglYmNtMjcwOS1kZWZjb25maWcsICViY20yNzEwLWRlZmNvbmZpZywg
JWJjbTI3MTEtZGVmY29uZmlnLAolYmNtMjgzNS1kZWZjb25maWcsICViY21ycGktZGVmY29uZmln
LCAlYmNtMjcxMS1kZWZjb25maWctNjQsCiViY21ycGkzLWRlZmNvbmZpZyk6IE5ldyB2YXJpYWJs
ZXMgY29udGFpbmluZyBkZWZjb25maWcgb2JqZWN0cyB0byBidWlsZApMaW51eCBrZXJuZWxzIGN1
c3RvbWl6ZWQgZm9yIFJhc3BiZXJyeSBQaSBzaW5nbGUgYm9hcmQgY29tcHV0ZXJzLgoKZGlmZiAt
LWdpdCBhL2dudS9wYWNrYWdlcy9yYXNwYmVycnktcGkuc2NtIGIvZ251L3BhY2thZ2VzL3Jhc3Bi
ZXJyeS1waS5zY20KaW5kZXggYmIzOGI4YjIxOC4uYTJhYjMwMDUzMSAxMDA2NDQKLS0tIGEvZ251
L3BhY2thZ2VzL3Jhc3BiZXJyeS1waS5zY20KKysrIGIvZ251L3BhY2thZ2VzL3Jhc3BiZXJyeS1w
aS5zY20KQEAgLTEsNSArMSw2IEBACiA7OzsgR05VIEd1aXggLS0tIEZ1bmN0aW9uYWwgcGFja2Fn
ZSBtYW5hZ2VtZW50IGZvciBHTlUKIDs7OyBDb3B5cmlnaHQgwqkgMjAyMCBEYW5ueSBNaWxvc2F2
bGpldmljIDxkYW5ueW1Ac2NyYXRjaHBvc3Qub3JnPgorOzs7IENvcHlyaWdodCDCqSAyMDIxIFN0
ZWZhbiA8c3RlZmFuLWd1aXhAdm9kYWZvbmVtYWlsLmRlPgogOzs7CiA7OzsgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgR05VIEd1aXguCiA7OzsKQEAgLTI1LDkgKzI2LDEwIEBAIChkZWZpbmUtbW9kdWxl
IChnbnUgcGFja2FnZXMgcmFzcGJlcnJ5LXBpKQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdl
cyBjb21tZW5jZW1lbnQpCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGNyb3NzLWJhc2Up
CiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2VzIGRvY3VtZW50YXRpb24pCisgICM6dXNlLW1v
ZHVsZSAoZ251IHBhY2thZ2VzIGVtYmVkZGVkKQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdl
cyBmaWxlKQogICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBnY2MpCi0gICM6dXNlLW1vZHVs
ZSAoZ251IHBhY2thZ2VzIGVtYmVkZGVkKQorICAjOnVzZS1tb2R1bGUgKGdudSBwYWNrYWdlcyBs
aW51eCkKICAgIzp1c2UtbW9kdWxlIChndWl4IGJ1aWxkLXN5c3RlbSBnbnUpCiAgICM6dXNlLW1v
ZHVsZSAoZ3VpeCBkb3dubG9hZCkKICAgIzp1c2UtbW9kdWxlIChndWl4IGdpdC1kb3dubG9hZCkK
QEAgLTIzNSwzICsyMzcsNDMgQEAgKGRlZmluZS1wdWJsaWMgcmFzcGktYXJtNjQtY2hhaW5sb2Fk
ZXIKICAgICAgICAgICAgICAgIChpbnN0YWxsLWZpbGUgImFybTY0LmJpbiIgbGliZXhlYykKICAg
ICAgICAgICAgICAgICN0KSkpKSkpKSkKICAgICAoc3VwcG9ydGVkLXN5c3RlbXMgJygiYWFyY2g2
NC1saW51eCIpKSkpCisKKyhkZWZpbmUgKG1ha2UtcmFzcGktZGVmY29uZmlnIGFyY2ggZGVmY29u
ZmlnIHNoYTI1Ni1hcy1iYXNlMzIpCisgICJNYWtlIGZvciB0aGUgYXJjaGl0ZWN0dXJlIEFSQ0gg
YSBmaWxlLWxpa2Ugb2JqZWN0IGZyb20gdGhlIERFRkNPTkZJRyBmaWxlCit3aXRoIHRoZSBoYXNo
IFNIQTI1Ni1BUy1CQVNFMzIuICBUaGlzIG9iamVjdCBjYW4gYmUgdXNlZCBhcyB0aGUgIzpkZWZj
b25maWcKK2FyZ3VtZW50IG9mIHRoZSBmdW5jdGlvbiAobW9kaWZ5LWxpbnV4KS4iCisgIChtYWtl
LWRlZmNvbmZpZworICAgKHN0cmluZy1hcHBlbmQKKyAgICAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNl
cmNvbnRlbnQuY29tL3Jhc3BiZXJyeXBpL2xpbnV4L3Jhc3BiZXJyeXBpLWtlcm5lbF8xLjIwMjEw
NDMwLTEvYXJjaC8iCisgICAgYXJjaCAiL2NvbmZpZ3MvIiBkZWZjb25maWcpCisgICBzaGEyNTYt
YXMtYmFzZTMyKSkKKworKGRlZmluZS1wdWJsaWMgJWJjbTI3MDktZGVmY29uZmlnCisgIChtYWtl
LXJhc3BpLWRlZmNvbmZpZworICAgImFybSIgImJjbTI3MDlfZGVmY29uZmlnIgorICAgIjB5dnJt
aWQyamFrbDkyOWQxbXYwMGdpZG5xYmY5MWZmaGo2MWM5Z2w3NWY3a200ODgxMWMiKSkKKworKGRl
ZmluZS1wdWJsaWMgJWJjbTI3MTEtZGVmY29uZmlnCisgIChtYWtlLXJhc3BpLWRlZmNvbmZpZwor
ICAgImFybSIgImJjbTI3MTFfZGVmY29uZmlnIgorICAgIjE5aGI2bnduYTdzazNiNHJuNXlqZmhs
ZHJzM2MxbHYyNHEwOHc0Z3BhNHh6aDFieXY3amoiKSkKKworKGRlZmluZS1wdWJsaWMgJWJjbTI4
MzUtZGVmY29uZmlnCisgIChtYWtlLXJhc3BpLWRlZmNvbmZpZworICAgImFybSIgImJjbTI4MzVf
ZGVmY29uZmlnIgorICAgIjE3ZG12YWJxdnh3cW42bGd2MXg4cmZoMndxZjFyMnhtbTEwbmtkbnJn
d2ttZ3Y4YmgyZDUiKSkKKworKGRlZmluZS1wdWJsaWMgJWJjbXJwaS1kZWZjb25maWcKKyAgKG1h
a2UtcmFzcGktZGVmY29uZmlnCisgICAiYXJtIiAiYmNtcnBpX2RlZmNvbmZpZyIKKyAgICIwbGNt
cjZueGRkNTNtM2s4aHFiNWs2YzViN3ZiZGdtZnZjbGlxeWw5NXNucDQ1cnhqamt3IikpCisKKyhk
ZWZpbmUtcHVibGljICViY20yNzExLWRlZmNvbmZpZy02NAorICAobWFrZS1yYXNwaS1kZWZjb25m
aWcKKyAgICJhcm02NCIgImJjbTI3MTFfZGVmY29uZmlnIgorICAgIjB4ZjM4bmN6d2lucjBqOHZo
c244bmQ4aDR5c2puNzd4cGhnN3huc3N6MDRnY2xiN2ZuZHIiKSkKKworKGRlZmluZS1wdWJsaWMg
JWJjbXJwaTMtZGVmY29uZmlnCisgIChtYWtlLXJhc3BpLWRlZmNvbmZpZworICAgImFybTY0IiAi
YmNtcnBpM19kZWZjb25maWciCisgICAiMDFrMDk4c25kN2tibWh6NjhqOTNtajJmd3AzOWM1Nmc5
cjhyZ2F3MTdqczVyMHcwemJoeSIpKQotLSAKMi4zNS4xCgo=

--b1_oHy08PWmPsOPRRPhK59EbeSBynAeRsUjblVRNhusU
Content-Type: text/x-patch; name=v3-0004-gnu-linux-New-function-to-modify-the-configuratio.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=v3-0004-gnu-linux-New-function-to-modify-the-configuratio.patch

RnJvbSAxYjA1Mzk4ZWQ5ZTdhZGIxZmE4ODIyYzVkMjJlYmZmNjZiZjRmOGQ4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRyIEhvZGluYSA8cGhvZGluYUBwcm90b25tYWlsLmNvbT4K
RGF0ZTogV2VkLCAxMyBBcHIgMjAyMiAyMToxODozNyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggdjMg
NC84XSBnbnU6IGxpbnV4OiBOZXcgZnVuY3Rpb24gdG8gbW9kaWZ5IHRoZSBjb25maWd1cmF0aW9u
CiBvZiBhIExpbnV4IGtlcm5lbC4KTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0
L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkZy
b206IFN0ZWZhbiA8c3RlZmFuLWd1aXhAdm9kYWZvbmVtYWlsLmRlPgoKKiBnbnUvcGFja2FnZXMv
bGludXguc2NtIChzeXN0ZW0tPmxpbnV4LXNyY2FyY2gpOiBOZXcgZnVuY3Rpb24gdG8gcmV0dXJu
IHRoZQpyZWxldmVudCBmb2xkZXIgbmFtZSBiZWxvdyBhcmNoLyBpbiB0aGUgTGludXggc291cmNl
IGNvZGUuCihtYWtlLWxpbnV4LWxpYnJlKikgWydzZXQtZW52aXJvbm1lbnRdOiBTcGxpdHRlZCB0
aGlzIG5ldyBwaGFzZSBvdXQgb2YgYW5kCmFkZGluZyBpdCBiZWZvcmUg4oCmClsnY29uZmlndXJl
XTog4oCmIHRvIGFsbG93IGEgcmVwbGFjZW1lbnQgYW5kIHJldXNlIGZyb20gKG1vZGlmeS1saW51
eCkuCihtb2RpZnktbGludXgpOiBOZXcgZnVuY3Rpb24gdG8gbWFrZSBhIGN1c3RvbWl6ZWQgTGlu
dXggcGFja2FnZSBpbmhlcml0ZWQKZnJvbSBhbm90aGVyIExpbnV4IHBhY2thZ2UsIHdoaWNoIHdp
bGwgYmUgYnVpbGQgd2l0aCBhbiBvd24gZGVmY29uZmlnIG9yCmNvbmZpZ3VyYXRpb24gY2hhbmdl
cy4KKG1ha2UtZGVmY29uZmlnKTogRnVuY3Rpb24gdG8gZ2V0IGEgZGVmY29uZmlnIGZyb20gYW4g
dXJpLgoKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9saW51eC5zY20gYi9nbnUvcGFja2FnZXMv
bGludXguc2NtCmluZGV4IGE0MDU4MzdiYjEuLjQ4Yzc3OTcwOTUgMTAwNjQ0Ci0tLSBhL2dudS9w
YWNrYWdlcy9saW51eC5zY20KKysrIGIvZ251L3BhY2thZ2VzL2xpbnV4LnNjbQpAQCAtNTksNyAr
NTksOCBAQAogOzs7IENvcHlyaWdodCDCqSAyMDIxIEpvc3NlbGluIFBvaXJldCA8am9zc2VsaW4u
cG9pcmV0QHByb3Rvbm1haWwuY2g+CiA7OzsgQ29weXJpZ2h0IMKpIDIwMjEgT2xpdmllciBEaW9u
IDxvbGl2aWVyLmRpb25AcG9seW10bC5jYT4KIDs7OyBDb3B5cmlnaHQgwqkgMjAyMSBTb2xlbmUg
UmFwZW5uZSA8c29sZW5lQHBlcnNvLnB3PgotOzs7IENvcHlyaWdodCDCqSAyMDIxIFBldHIgSG9k
aW5hIDxwaG9kaW5hQHByb3Rvbm1haWwuY29tPgorOzs7IENvcHlyaWdodCDCqSAyMDIxLCAyMDIy
IFBldHIgSG9kaW5hIDxwaG9kaW5hQHByb3Rvbm1haWwuY29tPgorOzs7IENvcHlyaWdodCDCqSAy
MDIxIFN0ZWZhbiA8c3RlZmFuLWd1aXhAdm9kYWZvbmVtYWlsLmRlPgogOzs7IENvcHlyaWdodCDC
qSAyMDIyIEFydHlvbSBWLiBQb3B0c292IDxwb3B0c292LmFydHlvbUBnbWFpbC5jb20+CiAKIDs7
OwpAQCAtMTc5LDYgKzE4MCw3IEBAIChkZWZpbmUtbW9kdWxlIChnbnUgcGFja2FnZXMgbGludXgp
CiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZpLTIpCiAgICM6dXNlLW1vZHVsZSAoc3JmaSBzcmZp
LTI2KQogICAjOnVzZS1tb2R1bGUgKGljZS05IG1hdGNoKQorICAjOnVzZS1tb2R1bGUgKGljZS05
IG9wdGFyZ3MpCiAgICM6dXNlLW1vZHVsZSAoaWNlLTkgcmVnZXgpKQogCiAoZGVmaW5lLXB1Ymxp
YyAoc3lzdGVtLT5saW51eC1hcmNoaXRlY3R1cmUgYXJjaCkKQEAgLTE5NSw2ICsxOTcsMjEgQEAg
KGRlZmluZS1wdWJsaWMgKHN5c3RlbS0+bGludXgtYXJjaGl0ZWN0dXJlIGFyY2gpCiAgICAgICAg
ICAgKChzdHJpbmctcHJlZml4PyAicmlzY3YiIGFyY2gpICJyaXNjdiIpCiAgICAgICAgICAgKGVs
c2UgYXJjaCkpKSkKIAorKGRlZmluZS1wdWJsaWMgKHN5c3RlbS0+bGludXgtc3JjYXJjaCBhcmNo
KQorICAiUmV0dXJuIGZvciBhIEd1aXggc3lzdGVtIEFSQ0ggbmFtZSB0aGUgU1JDQVJDSCBuYW1l
LCB3aGljaCBpcyBzZXQgaW4gdGhlCit0b3BsZXZlbCBNYWtlZmlsZSBvZiBMaW51eCBhbmQgZGVu
b3RlcyB0aGUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGRpcmVjdG9yeSBuYW1lCitiZWxvdyBhcmNo
LyBpbiBpdHMgc291cmNlIGNvZGUuICBTb21lIGZldyBhcmNoaXRlY3R1cmVzIHNoYXJlIGEgY29t
bW9uIGZvbGRlci4KK0l0IHJlc2VtYmxlcyB0aGUgZGVmaW5pdGlvbiBvZiBTUkNBUkNIIGJhc2Vk
IG9uIEFSQ0ggaW4gdGhlIE1ha2VmaWxlIGFuZCBtYXkKK2JlIHVzZWQgdG8gcGxhY2UgYSBkZWZj
b25maWcgZmlsZSBpbiB0aGUgcHJvcGVyIHBhdGguIgorICAobGV0ICgobGludXgtYXJjaCAoc3lz
dGVtLT5saW51eC1hcmNoaXRlY3R1cmUgYXJjaCkpKQorICAgIChtYXRjaCBsaW51eC1hcmNoCisg
ICAgICAoImkzODYiICAgICJ4ODYiKQorICAgICAgKCJ4ODZfNjQiICAieDg2IikKKyAgICAgICgi
c3BhcmMzMiIgInNwYXJjIikKKyAgICAgICgic3BhcmM2NCIgInNwYXJjIikKKyAgICAgICgic2g2
NCIgICAgInNoIikKKyAgICAgIChfICAgICAgICAgbGludXgtYXJjaCkpKSkKKwogKGRlZmluZS1w
dWJsaWMgKHN5c3RlbS0+ZGVmY29uZmlnIHN5c3RlbSkKICAgIlNvbWUgc3lzdGVtcyAobm90YWJs
eSBwb3dlcnBjLWxpbnV4KSByZXF1aXJlIGEgc3BlY2lhbCB0YXJnZXQgZm9yIGtlcm5lbAogZGVm
Y29uZmlnLiAgUmV0dXJuIHRoZSBhcHByb3ByaWF0ZSBtYWtlIHRhcmdldCBpZiBhcHBsaWNhYmxl
LCBvdGhlcndpc2UgcmV0dXJuCkBAIC04NTIsNyArODY5LDcgQEAgKGRlZmluZSogKG1ha2UtbGlu
dXgtbGlicmUqIHZlcnNpb24gZ251LXJldmlzaW9uIHNvdXJjZSBzdXBwb3J0ZWQtc3lzdGVtcwog
ICAgICAgICAgICAgICAgICAobGFtYmRhIF8KICAgICAgICAgICAgICAgICAgICAoc3Vic3RpdHV0
ZSogKGZpbmQtZmlsZXMgIi4iICJeTWFrZWZpbGUoXFwuaW5jbHVkZSk/JCIpCiAgICAgICAgICAg
ICAgICAgICAgICAoKCIvYmluL3B3ZCIpICJwd2QiKSkpKQotICAgICAgICAgICAgICAgKHJlcGxh
Y2UgJ2NvbmZpZ3VyZQorICAgICAgICAgICAgICAgKGFkZC1iZWZvcmUgJ2NvbmZpZ3VyZSAnc2V0
LWVudmlyb25tZW50CiAgICAgICAgICAgICAgICAgIChsYW1iZGEqICgjOmtleSBpbnB1dHMgdGFy
Z2V0ICM6YWxsb3ctb3RoZXIta2V5cykKICAgICAgICAgICAgICAgICAgICA7OyBBdm9pZCBpbnRy
b2R1Y2luZyB0aW1lc3RhbXBzLgogICAgICAgICAgICAgICAgICAgIChzZXRlbnYgIktDT05GSUdf
Tk9USU1FU1RBTVAiICIxIikKQEAgLTg3Nyw4ICs4OTQsMTAgQEAgKGRlZmluZSogKG1ha2UtbGlu
dXgtbGlicmUqIHZlcnNpb24gZ251LXJldmlzaW9uIHNvdXJjZSBzdXBwb3J0ZWQtc3lzdGVtcwog
CiAgICAgICAgICAgICAgICAgICAgKHNldGVudiAiRVhUUkFWRVJTSU9OIgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIyQoYW5kIGV4dHJhLXZlcnNpb24KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAiLSIgZXh0cmEtdmVyc2lvbikpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kICItIiBleHRyYS12ZXJz
aW9uKSkpKSkKIAorICAgICAgICAgICAgICAgKHJlcGxhY2UgJ2NvbmZpZ3VyZQorICAgICAgICAg
ICAgICAgICAobGFtYmRhKiAoIzprZXkgaW5wdXRzIG5hdGl2ZS1pbnB1dHMgIzphbGxvdy1vdGhl
ci1rZXlzKQogICAgICAgICAgICAgICAgICAgIChsZXQgKChidWlsZCAgKGFzc29jLXJlZiAlc3Rh
bmRhcmQtcGhhc2VzICdidWlsZCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmZpZyAo
YXNzb2MtcmVmIGlucHV0cyAia2NvbmZpZyIpKSkKIApAQCAtMTIxMCw2ICsxMjI5LDExMSBAQCAo
ZGVmaW5lLXB1YmxpYyBsaW51eC1saWJyZS13aXRoLWJwZgogICAgICAgKGlucHV0cyAobW9kaWZ5
LWlucHV0cyAocGFja2FnZS1pbnB1dHMgYmFzZS1saW51eC1saWJyZSkKICAgICAgICAgICAgICAg
ICAocHJlcGVuZCBjcGlvKSkpKSkpCiAKKwwKKzs7OworOzs7IExpbnV4IGtlcm5lbCBjdXN0b21p
emF0aW9uIGZ1bmN0aW9ucy4KKzs7OworCisoZGVmaW5lKi1wdWJsaWMgKG1vZGlmeS1saW51eCAj
OmtleSBuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGludXggbGlu
dXgtbGlicmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmNvbmZpZworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmZpZ3MgIiIpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleHRyYS12ZXJzaW9uKQorICAiTWFrZSBhIExpbnV4IHBhY2thZ2Ug
TkFNRSBhcyBhIG1vZGlmaWNhdGlvbiBvZiBhbm90aGVyIExJTlVYIHBhY2thZ2UuCisKK0lmIE5B
TUUgaXMgbm90IGdpdmVuLCB0aGVuIGl0IGRlZmF1bHRzIHRvIHRoZSBzYW1lIG5hbWUgYXMgdGhl
IExJTlVYIHBhY2thZ2UuCisKK1VubGVzcyBTT1VSQ0UgaXMgZ2l2ZW4gdGhlIHNvdXJjZSBvZiBM
SU5VWCBpcyB1c2VkLgorCitBIERFRkNPTkZJRyBmaWxlIHRvIGJlIHVzZWQgY2FuIGJlIGdpdmVu
IGFzIGEgcGFja2FnZSwgYXMgYSBmaWxlIGxpa2Ugb2JqZWN0CisoZmlsZS1hcHBlbmQsIGxvY2Fs
LWZpbGUgZXRjLiksIG9yIGFzIGEgc3RyaW5nIHdpdGggdGhlIG5hbWUgb2YgYSBkZWZjb25maWcg
ZmlsZQorYXZhaWxhYmxlIGluIHRoZSBMaW51eCBzb3VyY2VzLiAgSWYgREVGQ09ORklHIGlzIG5v
dCBnaXZlbiwgdGhlbiBhIGRlZmNvbmZpZworZmlsZSB3aWxsIGJlIHNhdmVkIGZyb20gdGhlIExJ
TlVYIHBhY2thZ2UgY29uZmlndXJhdGlvbi4KKworQWRkaXRpb25hbCBDT05GSUdTIHdpbGwgYmUg
dXNlZCB0byBtb2RpZnkgdGhlIGdpdmVuIG9yIHNhdmVkIGRlZmNvbmZpZywgd2hpY2gKK3dpbGwg
ZmluYWxseSBiZSB1c2VkIHRvIGJ1aWxkIExpbnV4LgorCitDT05GSUdTIGNhbiBiZSBhIGxpc3Qg
b2Ygc3RyaW5ncywgd2l0aCBvbmUgY29uZmlndXJhdGlvbiBwZXIgbGluZS4gIFRoZSB1c3VhbAor
ZGVmY29uZmlnIHN5bnRheCBoYXMgdG8gYmUgdXNlZCwgYnV0IHRoZXJlIGlzIGEgc3BlY2lhbCBl
eHRlbnNpb24gdG8gZWFzZSB0aGUKK3JlbW92YWwgb2YgY29uZmlndXJhdGlvbnMuICBDb21tZW50
IGxpbmVzIGFyZSBzdXBwb3J0ZWQgYXMgd2VsbC4KKworSGVyZSBpcyBhbiBleHBsYWluaW5nIHVz
YWdlIGV4YW1wbGU6CisKKyAgJyg7OyBUaGlzIHN0cmluZyBkZWZpbmVzIHRoZSB2ZXJzaW9uIHRh
aWwgaW4gJ3VuYW1lIC1yJy4KKyAgICBcIkNPTkZJR19MT0NBTFZFUlNJT049XFxcIi1oYW5kY3Jh
ZnRlZFxcXCIKKyAgICA7OyBUaGlzICcjIENPTkZJR1/igKYgaXMgbm90IHNldCcgc3ludGF4IGhh
cyB0byBtYXRjaCBleGFjdGx5IQorICAgIFwiIyBDT05GSUdfQk9PVF9DT05GSUcgaXMgbm90IHNl
dFwiCisgICAgXCJDT05GSUdfTkZTX1NXQVA9eVwiCisgICAgOzsgVGhpcyBpcyBhIG11bHRpbGlu
ZSBjb25maWd1cmF0aW9uOgorICAgIFwiQ09ORklHX0UxMDAwPXkKKyMgVGhpcyBpcyBhIGNvbW1l
bnQsIGJlbG93IGZvbGxvdyB0d28gc3BlY2lhbCByZW1vdmFsIGV4dGVuc2lvbnM6CitDT05GSUdf
Q01ETElORV9FWFRFTkQKK0NPTkZJR19DTURMSU5FX0ZPUkNFPVwiKQorCitBIHN0cmluZyBvZiBj
b25maWd1cmF0aW9ucyBpbnN0ZWFkIG9mIGEgbGlzdCBvZiBjb25maWd1cmF0aW9uIHN0cmluZ3Mg
aXMgYWxzbworcG9zc2libGUuCisKK0VYVFJBLVZFUlNJT04gY2FuIGJlIGEgc3RyaW5nIG92ZXJ3
cml0aW5nIHRoZSBFWFRSQVZFUlNJT04gc2V0dGluZyBvZiB0aGUgTElOVVgKK3BhY2thZ2UsIGFm
dGVyIGJlaW5nIHByZXBlbmRlZCBieSBhIGh5cGhlbi4gIEl0IHdpbGwgYmUgdmlzaWJsZSBpbiB0
aGUgb3V0cHV0CitvZiAndW5hbWUgLXInIGJlaGluZCB0aGUgTGludXggdmVyc2lvbiBudW1iZXJz
LiIKKyAgKHBhY2thZ2UKKyAgICAoaW5oZXJpdCBsaW51eCkKKyAgICAobmFtZSAob3IgbmFtZSAo
cGFja2FnZS1uYW1lIGxpbnV4KSkpCisgICAgKHNvdXJjZSAob3Igc291cmNlIChwYWNrYWdlLXNv
dXJjZSBsaW51eCkpKQorICAgIChhcmd1bWVudHMKKyAgICAgKHN1YnN0aXR1dGUta2V5d29yZC1h
cmd1bWVudHMKKyAgICAgICAgIChwYWNrYWdlLWFyZ3VtZW50cyBsaW51eCkKKyAgICAgICAoKCM6
aW1wb3J0ZWQtbW9kdWxlcyBpbXBvcnRlZC1tb2R1bGVzICVnbnUtYnVpbGQtc3lzdGVtLW1vZHVs
ZXMpCisgICAgICAgIGAoKGd1aXggYnVpbGQga2NvbmZpZykgLEBpbXBvcnRlZC1tb2R1bGVzKSkK
KyAgICAgICAoKCM6bW9kdWxlcyBtb2R1bGVzKQorICAgICAgICBgKChndWl4IGJ1aWxkIGtjb25m
aWcpICxAbW9kdWxlcykpCisgICAgICAgKCgjOnBoYXNlcyBwaGFzZXMpCisgICAgICAgIGAobW9k
aWZ5LXBoYXNlcyAscGhhc2VzCisgICAgICAgICAgIChyZXBsYWNlICdjb25maWd1cmUKKyAgICAg
ICAgICAgICAobGFtYmRhKiAoIzprZXkgaW5wdXRzICM6YWxsb3ctb3RoZXIta2V5cyAjOnJlc3Qg
YXJndW1lbnRzKQorICAgICAgICAgICAgICAgKGxldCogKChzcmNhcmNoCisgICAgICAgICAgICAg
ICAgICAgICAgICwoc3lzdGVtLT5saW51eC1zcmNhcmNoIChvciAoJWN1cnJlbnQtdGFyZ2V0LXN5
c3RlbSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICglY3VycmVudC1zeXN0ZW0pKSkpCisgICAgICAgICAgICAgICAgICAgICAgKGNvbmZpZ3MgKHN0
cmluZy1hcHBlbmQgImFyY2gvIiBzcmNhcmNoICIvY29uZmlncy8iKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAoZ3VpeF9kZWZjb25maWcgKHN0cmluZy1hcHBlbmQgY29uZmlncyAiZ3VpeF9kZWZj
b25maWciKSkpCisgICAgICAgICAgICAgICAgICwoY29uZAorICAgICAgICAgICAgICAgICAgICgo
bm90IGRlZmNvbmZpZykKKyAgICAgICAgICAgICAgICAgICAgYChiZWdpbgorICAgICAgICAgICAg
ICAgICAgICAgICA7OyBDYWxsIHRoZSBvcmlnaW5hbCAnY29uZmlndXJlIHBoYXNlLgorICAgICAg
ICAgICAgICAgICAgICAgICAoYXBwbHkgKGFzc29jLXJlZiAscGhhc2VzICdjb25maWd1cmUpIGFy
Z3VtZW50cykKKyAgICAgICAgICAgICAgICAgICAgICAgOzsgU2F2ZSBhIGRlZmNvbmZpZyBmaWxl
LgorICAgICAgICAgICAgICAgICAgICAgICAoaW52b2tlICJtYWtlIiAic2F2ZWRlZmNvbmZpZyIp
CisgICAgICAgICAgICAgICAgICAgICAgIDs7IE1vdmUgdGhlIHNhdmVkIGRlZmNvbmZpZyB0byB0
aGUgcHJvcGVyIGxvY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAocmVuYW1lLWZpbGUg
ImRlZmNvbmZpZyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aXhfZGVm
Y29uZmlnKSkpCisgICAgICAgICAgICAgICAgICAgKChzdHJpbmc/IGRlZmNvbmZpZykKKyAgICAg
ICAgICAgICAgICAgICAgOzsgVXNlIGFub3RoZXIgZXhpc3RpbmcgZGVmY29uZmlnIGZyb20gdGhl
IExpbnV4IHNvdXJjZXMuCisgICAgICAgICAgICAgICAgICAgIGAocmVuYW1lLWZpbGUgKHN0cmlu
Zy1hcHBlbmQgY29uZmlncyAsZGVmY29uZmlnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGd1aXhfZGVmY29uZmlnKSkKKyAgICAgICAgICAgICAgICAgICAoZWxzZQorICAgICAg
ICAgICAgICAgICAgICA7OyBDb3B5IHRoZSBkZWZjb25maWcgaW5wdXQgdG8gdGhlIHByb3BlciBs
b2NhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgJyhjb3B5LWZpbGUgKGFzc29jLXJlZiBpbnB1
dHMgImd1aXhfZGVmY29uZmlnIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Vp
eF9kZWZjb25maWcpKSkKKyAgICAgICAgICAgICAgICAgKG1vZGlmeS1kZWZjb25maWcgZ3VpeF9k
ZWZjb25maWcgJyxjb25maWdzKQorICAgICAgICAgICAgICAgICAsQChpZiBleHRyYS12ZXJzaW9u
CisgICAgICAgICAgICAgICAgICAgICAgIGAoKHNldGVudiAiRVhUUkFWRVJTSU9OIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLChzdHJpbmctYXBwZW5kICItIiBleHRyYS12ZXJz
aW9uKSkpCisgICAgICAgICAgICAgICAgICAgICAgICcoKSkKKyAgICAgICAgICAgICAgICAgKGlu
dm9rZSAibWFrZSIgImd1aXhfZGVmY29uZmlnIikpCisgICAgICAgICAgICAgICAjdCkpKSkpKQor
ICAgIChuYXRpdmUtaW5wdXRzCisgICAgIChhcHBlbmQgKGlmIChvciAobm90IGRlZmNvbmZpZykK
KyAgICAgICAgICAgICAgICAgICAgIChzdHJpbmc/IGRlZmNvbmZpZykpCisgICAgICAgICAgICAg
ICAgICcoKQorICAgICAgICAgICAgICAgICA7OyBUaGUgZGVmY29uZmlnIHNob3VsZCBiZSBhIHBh
Y2thZ2Ugb3IgZmlsZS1saWtlIG9iamVjdC4KKyAgICAgICAgICAgICAgICAgYCgoImd1aXhfZGVm
Y29uZmlnIiAsZGVmY29uZmlnKSkpCisgICAgICAgICAgICAgKHBhY2thZ2UtbmF0aXZlLWlucHV0
cyBsaW51eCkpKSkpCisKKyhkZWZpbmUtcHVibGljIChtYWtlLWRlZmNvbmZpZyB1cmkgc2hhMjU2
LWFzLWJhc2UzMikKKyAgKG9yaWdpbiAobWV0aG9kIHVybC1mZXRjaCkKKyAgICAgICAgICAodXJp
IHVyaSkKKyAgICAgICAgICAoc2hhMjU2IChiYXNlMzIgc2hhMjU2LWFzLWJhc2UzMikpKSkKIAog
DAogOzs7Ci0tIAoyLjM1LjEKCg==

--b1_oHy08PWmPsOPRRPhK59EbeSBynAeRsUjblVRNhusU
Content-Type: application/gzip; name=chz6x0835ix8fzhsg6zspx8rslfwcr-guile-fibers-1.1.0.drv.gz
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=chz6x0835ix8fzhsg6zspx8rslfwcr-guile-fibers-1.1.0.drv.gz

H4sIAAAAAAACA+1d6XIbyZH+z6eogNYmNZ4G+sLR8Gg8FMXRcM0RFaK0Y4ft4BT6BvpCV+Pc2Y19
mn2wfZLNqj7QJ0mQEEXZLYVEoo6srKyszK+yDpAIh5HtmSiwMNHRr0SPuOurTx/Ozrk3px/PufP3
V2c/HR/dmovIQlV1XdM1hI1IDxHf5RHRVd/TyBGpaSDAkUWOj3RvaYe+5+pehJY4tPHEgQLvTz9S
knqEIh/92jO9RY9Efqj3RNETCb80lnNTWfKYKNbQCDRPsBXNDTdLm4v0te0ZPjfoDnsT2xvn6g7W
dqiaw5GwXBry1MTChoRaiLUJCdzN0plywczkgGHDNjmMQ9UayJxje4s1BzQ4visqXbFMc+Yqzkgh
mrxylWkg9UcykBe3gzlWV45oKRxeRD6lyYndgVKurY0cCeP5cEnE2Xa2MnlsTAVnKVgTkfSNtctq
u3imc0JXGHSlcv2R4PVHa1lUpO3KWm607XLpbQJ1O9z0lencXQP7k8j3HWhc7g7KtVXPIEtls8JY
3WBjNtfmZCmGm5HBC5twiBXOXNiOzkldvipLURDmznLjSSRQFSkUt87Wsfj5zA378tziLc7UIxiK
iHNtz3axQ8UnVIQX9udTPPI21ipwtqvpertRlnJgW9IKB8OVw5mqyqmhT0jNeAh8FzirSHQ2GQy1
YB4ObdVwyVqQ8VwiphaKI23khSoH5ReR7ZBGumJXqvTWFPF044zWMwXKr0NzOvFM0ZpNpbkrLvmt
yIF+wxBJcrmiba9X6lKaycqMCKEhycHUNLbudmNZ5sozJc7c2gEd3EpHiGQ5gggiUTYTMvTIZjib
DzeT7XY497YuMbkJ1BShKt8dVQZ2ZJOpPJ0PZt6SBzmYoSxp9mAueUttO1sPufWW63fFbr9cUbbV
gSjLtqRieSKHa1VceaHpOMTWNjaxlpxBFaLflSqajC3XXa5EIRAEezbiHVMwlL60GRraaDKfTV1O
sw0jFrxUZXgrKZYXrjQiaKY6CQxzOtK8pah6IGlxPXGosVAtGJphVYslJSRryXNkVRKUvjjdTCbT
yUgb2FrYt9bDEHj2tLhluTuqasxA4edbyTAlSdaClScF3mDWVzx5pSqyFIgTzsSrGfRZqFZdrc3l
wB6ZfCDK876pbrYavwn5IRnNPGUw4jmia7TRcr31dBWIFtEUsT+w1SmwbITu1guCqa1uVsaAM0M9
ADlV+qqJfdAiU1U8V1SdrWFsLdO2Aw3s4Xa2XNlgvUI97uuoK1WMVb8PwiW2MHKxZQqS4Ln2Bg9m
bn8iu0Q1MMdMjVy1M/KmD3ZuMppJ89lE2CguL5KVslLwwMKqJgy4CSZWNtWprCp9JmJg9mfKyHBE
UyRbU9E2s/VGU7aOtLatpcI5GrcKcRDoIVcRdKhSqy3PeC208NxT+LWxWgUkmNn9NT9ZGrtZXTd7
+YGC5+JSUaRZoMrCBk+C/mSwdOXVRJnOLJOZmXpz0rfElTy3FWsmzLdb0xZWI0kU+Y1GwGCEMuFM
sLAqbVV6TFVStjer0LaVreEKS2fIq2tpKwxsnvRXk6VnKsqQc2WY+XJXYGJudKJ/fntzdvXux4u3
N43+tM879lQxh8F0qg4sV56Hc8z3tbm80kJ1ug4LPgAY7oGPjF1kwcyJSoBlUZTsIT8bhCI/9Gar
gCeSOTQsxxtSP2SqoJN8V26mQsDUDObCZi3xRFlvwL0M+0tjipch70riwKFUMPhDW+X8gHBgC6jd
LJBrEsXZh6vr65vLi9cfTj/89XDSeIwM8nWnW5Pvr3hxqAwmS9kYBKInmRtV0JTZdD3csp4vPJtE
IYAocKVK0vGDSK9gTDXJlIbhVsFbw97yQ3W00YbiIAQfZxnD/jBR2lt8p1Qmqa5kdW3NsbW2V8JS
CtzhdDifKaYy226l4XR6D5Ic4MfIVinl2wf47Obi3dnlpzfnBxpi21OdhaY/eJhr6j9oqGvoPGy4
awgdAoTVkD2EJtWQdSQArENjJalLR+StKZjxfrhUycab8u5QcRISQDvUOUvHmh42Qz1wVMB/P23n
Dt16f/nputWvL6lfPfUPf2hVd3/VvXr9761lbC3j51Sv1ji2KvZZVOzi3Y9Xh4kGEgtTFYKPjwjg
1RPZO45XT2bPcF49kb2ievUkHhbca5DvATS8QeiHCfXVE79/xK++/h6Bv3oCewbU6onsHRurJ7NP
iKyewr0jZfXV7x8wa1CVPeNm9VTuHz6rr/+QKFo9pT3jYfVE9gmLNQhknxBX/TS7f6CrnoA1syZz
cS6YBlGGvEnAo1vEVecTeekuRUAUdR59R6rJ65yeXV6dnV42I5mD7CXFfGDV8VXsHMCf1FB6kEup
ofMAr1JD5TGOJSHXNGJvP11cnt9cXp2+SQZt4cGw3V347Orn9/DhPrVen17/xCqdvr48v75HhXss
uvaSaw0ke5hEnw6JHshJ12HwfTbIaurff5OspvIeG2U1tffxpzXV7++Hairv6TpqKOzjN+q438Np
1Cm8o8LoTLTJ1pLN2XBlKcJkG87D2dDqm4Lm3LUEfJDDqBtDd7payfZWXmvYG8paH6CVYQ1tZxR6
pjGb1a6F7rusvt9q+p/RdjxRiK81S61Zqipba9k+t2W7cwd2r4hOeadxH3tYqvswW1giciCrUt7Y
3ceilEVyb2tSqriHJSnV3MeKlKruaQRKtfeZfuXeTjXTctVBfz60h/ZkpGzd5XwwcHjTMoZTVc5V
ze1F5ykYXihsB2uCPV6WhiG/MeWRxm9grS/O5uvJJqGwiIwRx9YxOqnlZC8jUKr7IANwy546rJL+
Auuds8bJ+phO9+KEwqnS+EjoXidJbQ9SHIdLqS0IzTzWvZtP113a8DGKs5Dhh0jFkW764QZ1Ls9u
Ti8vO0f1ZPZiYeEFWJ0dHxn2hFpCgWl28dPpp48/XX24LiaeXb3/68W7t7WJXVhgXp9/KOVZ2DP1
S98sJv90evbnCp2Ld9cfoYPFxJ/BAdN528VuQ4btFTPenf9S4vrD+embn8/r0rquVkz+ePXmqpKI
1cRFdF25nMOkX0mfgNXWOLxY95rSMVPtplzVdwPoW3M2DdJ0zYVOyB1lQqqgd5Qhi0ZGND2gvDRl
M+9UGZpdfqqjpJEFJ3Kx7XWbC7g2ofOjKTvxrV34WSyS9M2q6EecsQj1huQuVos5YGkqRPTAd5xu
ueAauwEYjF5DMjShLsIQLBa30ieAQxzH7xLVbSju6q6KVUvXONWxodK9ihI9XOrhLUUDakjvJMhK
3Unrll7EH3q1iSoYBU93SGMtarTsyPa9W4sw1b0zuzJ0WYmFF9X1LsnX9PlCb8yNx78p16aUw0UQ
NfNv+9wKLNgiaCzhYVcHD9OY7wd6iG8XUuATe81RGzW7pRCZN+aFetDcS0IVbuHcIkOY/OqsMTey
XfjRmA3K1WvMaFLN+EOXmoTajKYK1IwUM1y5V0lIAs8Vc0+zIj+IB6M2kyxMHNZnQT8IVKzP/G9/
QnxHj6quJ9JJVJ5fcdoEE1ut9jTObJ57Sf4tUy8uAaBEt02vKfsWxY4LBDgEzY5qRyMpEeq6y6TZ
VIIEgHTqmqgqzU5bmjNyylEESHuBqlA3dY/OSZ3tdVBNIRlWrM3ci/zE9yPAwTg4PqIUQlrMGKNz
amtoMc2GpIgixV+7xSJ51zZGnh+hGHK+jdeHhbLhwvMgb4wSaIM4DgZc1RF3gUAFm8kCZyr107XE
koljb4EOp/rBJiV7tMsZo2ARsQ6DX7cdG0NPKMAjyPbQ6Vl6LPz0019u3lx8+BYdZyDguFsgQ+lT
MrRyrtQOahzXtupiusItNvbz6dmHK9rcNbTnyrc2VLAPx3cUzFmLO4umtuPOgjtLcmfRvF05rh+z
R90Y66Up2UB/pjbiYM7traQ7j1AKaxqXIMqSJqbJRwW1lsQxSkAsW6RVIPpxsbw4aCqfkD8+yq1o
msomqLs4MJc6XlbnecU4VGyK3B012pT4jtKChDRMweIjQJGl9SCRCZkmjlF3h49Bn+iijlL5tVDq
uLzW3u9qVq9tvm2+bb5tvm3+X675Rm+0F0KO6xN/Qd05sfQJsEzSziWfabfKUbhC7yhXABEr/XrY
dVJK6jYGEhTxRTnYxRK/PBtk8SVHI8FdX5CDXcD0CzKRLZS+IA8JXH5yDupN3lO0HIeZP3uzt5nK
vaxtJqnjo5jObmUyRp1e5AZ0e2DNxWMa72PnAzBdLVxyaQAuTuqgk1B3cGQvdWSEvotYXaDW7bw8
Yr8foI3dgg0ZDjbB6J10zs5ufrz6cPP608Xlm1emqnZQJ4kAXP90fnn56gDCp8lA9tD0OC4IYTm5
zpNcTQQ8ty11u/Wmnjo0nelWCRR3y0vDUJNGQo2gGCXdo5uonIFJxCWGiKUz6b5ajwY3A5lbeDPP
X3m7AwCsiOWT6FXlbACMmmrp6owFH/wQYfT6+g1HTSyMMd2vTVrpdrvocU9GpIYTcequyZWlRxZo
caw5+Q1jmyCCPZ22u9FJicnKCQe6+xzQsg1Z5U5GVqhjjSPY0JE7A41FXHCALqakis3RowmUOP1Z
7ToLexA9IujfTn4+/fP5S1rU85sKLoLAD6Gwp5MIjEC6r04qgqqvBkko2SpNJirM5KQuOnn77hMi
0cbRX94lcJiB9eKGjCoPtNUzlCCpEK38cEZqRzZXSNMNvHAi5C+iYBHFkTG64cKa7UJqsSZZGDDH
kG8gfa2riygTSpWblY4wmBZ2WiZpD7Jr+dlR9SdTEFYc7qRF/Ua6ceSWdpmKc9ejxhGqFSLCYOcD
GDHOvOccoJXimCX1RnF1dHF9hc5GSqxTHkiQ+Y778rDw6DGsCINzgWmL4CfifKBuskoVvgCc6VDD
UzexFlG5NaoO/JCKXaJnv2hIGax/BOiGJsPk1cPQDzP+Q32+ALXV7qmfJ/Ge68v7Kuo9hjAj+eCx
rKfwsEHNaH2W0a3ndK9hzkgUx9vyV7RD4cJLjAP4yCD0VVjixKNdzzJ3XjKtUAsI4AgBJNPoToTj
QxZUgl9Zh/SSWd/rlaQe/VBsUadJj6ZZ6cjpu+sLkEISK8+sTEHusZMkGzD8Loo2Aetak8/Pi5pE
5VqpdG+txkYoCG3wxvHpLsYSSzDKDpWAL2LjoPkgebqBFcHY0pNRiQEviWyfR656pDzfjQMNwo8l
A6TBzIeOTDbN+nzgU+Rg86i/6kHRXqVQz8n12zbYTIHMGWjIyRPz8ZICMmoMHa3WHVHUiODnz9d5
8Ej9NXBM6ELlxHNfliHWwZ7Vq/LMeS7iXu+YpLIrsPOkfID46CawgVU2/UBayHOrdtrxEEca4BHt
gIvXtrtwkaN7ZmRRuwvCdqmdoxYPXJe5oOCZVRb6Q3E0kCsTGrzrUg+jRsOxQ1qEuZwmS0GH3cVs
Xhsw028Suje0+o3n+8FjW6abo7DStr09WqKq+MQzI+eeYWXsY60CFbnwLi8PNbSF27CASTKrvhNW
/aZHN+xThxwlEMqO2w0wITew4rqrdc1x2J54ad1BCzdkJRwAfV+1qY0HW0/PCqFEFWclRpjLQL8j
f/fu4gU3OH9cliEUgJVLiH748eLyPF3f0Lo/3HuteAs4rFs0VgqF2INu1vMb5+0opPOUelQcEv1p
zWC2iKIRmwaQyZSWrWxmpTXQhoS+H9WpB2a2imFC7QDLZ02rqFiGIiCfrg0CO4h16tFNoQl5JfPK
ALFjhq+Eu0bbrZVANRX89Jg6SwzW2rMNWKajptkFku1RREa6Vv3qc8MO6EVN2ZFG9a8pkyK2hkxX
d/1wc2vNJp5gJt/KcqRBiYZMdk1Aa8jUHEP1GvKoCbSZZehCj0lB2PXqnAU8OMPzuTCK7Pg3fU1X
UOxcT50+37H+ghWKtlB19P7ijBl2A35B3Bv4/x4s0bI0nJmv1uDrm7vFrokkZJIP+5LIJKPS5R47
5+IfoPrt62KKXuoJfjFAm/WEvQSgFV1WbSc4B/pv+Qtw+hMd6evAsVU7cjZxHzSYG2Wl0jYAZ+ys
kwBnQqzS04AERo41BJi6d0n5osiaVH0s1NBUX9Oz6Ai7zkKnIVNHM8Quo2O7rq5RX1xlmzkzelx8
10VqoAKQH0XpdWOfnE17gIyArWSdun+NWJ8LNfLCpOYwPtVtwToNT2zHjjYVsvlSQagT3VP1Ruua
FKzNZ3k3aqiDUO8sINwzSLd7wKPkxA71jHzvtjZ33O3SmK8C5Khj8FTJ+UREr3HxWZfyG2754Avd
o0Aw2fIlDPCmWj6ruMBul9CNS+jChNmw0Bid67Cqts3Ysmi+l5vekgjAMIrDO2fo9PVFnUc7v/wx
hU67VVSlaSoVilBh5OOIN1gIWFymO3l2fMI3ll3MHdFpDxmDlCIkf5v8O6rqCLscW9duIbfMOsu8
LQ8qNldryikp4L7fVhDfpyrSfcuUPZ06379CCdOsUpUF7RAsaHXyqDUsD+thxWCw4F56QF5Ljn3T
WLmnr5h/x17uuHmmrDnTQe0kpdTNTpKAvV+k5iX5lCune8vGvPSEbmOB9G5ZuUC8OZREseNOJEsz
0lw09YZZycr+emVbXuwO7jgElckyPm+VOwx1n1L73UugCnN8lO5Oonhb+YiGOjkddchvP+jrCDoJ
2X//4bfHbVOzW7gsuSexi2iR7tF5QX7roL8fIfjTrb0Bhr5H1XtjbO8S0dM2OP7wN+Eftfcpjh90
0OD46EC7/NCnVEcQx0XYfHV2huivLiC3V8nuUdOWxpufTv/jPL3O8BPiLrpUSvQH9wvbL/+FbYFB
UhBvW0PeI18/3Q1QkdZDXkJFHCxFrkTE/fwxQUQO5mJc5fiQ+gb+vYd/P6IuTLkEcu3KfAz8ZClR
rfwrvUoEyyV0nFzmPEa//YZ01fLRcbd3/Gt6xTOR/RhlZ/X2kHVV0P/Mck5EhgqLUBA+W1eX6/hH
7pKKv5FgbcZ7x3+aecUCjQ0D/dXNHlhNwkKLSxeMtIcLsBnZxOg6GHHsqjj6TAa6TqsuH/E1FsXa
+36RBSy2M3rwe/zu8Y0fEJoB+rub9FQNxk16kIDqgro3KDtVrF+cbxMh018f1flGUrIpbI3pyNRm
oqTYm5CI2LMGq61lTsTJcqhRSQAGB1rSHZQe+gUft5Dcf5hake0tsi84qx7zJT2UVpZEStZh7yG6
PMSoPJyBXvyR9uMAjPTy6Uw2jhpuAgAvjosO8mVEWQa1gV2MHvM9SexzzGXmFB3NyfvI2CvlU6j+
E59todPfk+cVfGqdC/CBpdG/ZQt9omqowwp20O9/j0KXQovOrg5LjXfAO0VKnUKxl/sRvhfZGqLo
FqoOzlPtdnu75FyJl0fsyPjj1/oprgXBL7wJDbBx2XtKgHJCO9rQu7EuXTFCQhzoocPSSa7NmyCF
zu4Kfee5MLZ76yDHYeEBhGfE6u7ZhQKzhdcYnhW77NJQkdVkYf2c2IzfeCnymb378nwYjR+bybOZ
PT/zfJiMbU+eyewVnOfDZO7pnTynxRd5nhG72WspBW7zb6g8H2bTF4nyrOZeKXo+jOaeRsrzWnwx
6fmwW3imKc9w+f2mZ8QymRc5jR+Rej4M7h6nyrNZeLLqGTHL3skqMJq+nPV8mGRvgeV5TB8H6xz9
8Y9/pKey9fipFS5uic00uisZXyvTvmXPccZfY3D66eNV+jUGr3hWP/7jh+xgIdsN5DjP53IEd0dQ
6a6+ZhNKtssqZ/dsDrD1Ren9cvrh3cW7t2nMN+6KbxxgFAwMqdqYtRL/zg6vsm3+eEeWbe3neh1v
h6HOo9vuHK1CGCT0axnEHT8bHUuehMtr2e6VuFbPvhY9ew3Gi74Hpo+PLmBoVJ1TevoSM2sxptt0
oiKNJRkJCjq5QS++S8LRJy/+E5kCz//Xi5doaBiGro/6qjjiv3+5I0MfOuKUjJAk88oYCI3QiaYb
tqcnoe1vENAd0w6xmAL9ENAbv/SXdC8dfod///c///sSKIl9RR6LQGlIz5o5DreyI4sDmgAbdY3z
J/FTcQS4ZTeJNEqNMWlMDKmPeUroe0pJkkWRURpA516y3tIEBQl9dOLiQEAnJyckNGxE/+OUly8h
IVZ2xMx+PuEFfHjBeCxQkneUmmoybF4mVSAEXRWkCqFKPXDt7COTP6Ny8mJHSZLEAaMk0rvbxHeW
OpfdRkBFoiB7ojv09DodBsvW2HjEI5ANcBwRItkII0nhxyMkCFRVbho1QRL70CMJCTyT+l3kkHIH
ub40GIs8QqNsEEdSHzQNgX4QvEz1jB75XMTqVFEMTcSSavD0/BNtItOPfh9IDxAapJwmdxXY/IuZ
TP6AwgSh7dr0Gi1HT/+z56aLy69OXcNxW/VzT1AGY1lCSGZzz7idA9CPZNOIYxti975zDxx0GOn4
blj6aiSXHPHJccOPxT6IF52wDpbKMU3J7SLFc5bqEd2RicWR6k9jJ0B1NAfAv7fnkwG0DyXtLGqJ
MBj1xzDPEShdiG2i704AMy7pXVPbW1D/8SeqbEcVIgmFMYIWdqNYosWs6C437ss4NdcPOZvQK4ZU
O98iWMURbB6IHvgz7NFrekzoyS5Z7uLKGL3z6RkTK+4DPZ+dHrZonfzXCibTUNvx7izNN998g/6W
nqYaC7LIj1HN+uwf6JztogvFmr9gO9od7gfnbhOog6bgi7vwp1WUrxINUtDTY8hH2DnlgSSPFQYH
gQ9Ox2AZqjhLHU742J0SNbQD9lgx47VL3V1mqMuZGeYcKtTtUqiYev7EN00w0XsRDHMcx0p8x6A/
HjA4yJBgnI3qapYbgiaGtCr49ySLi2VZiZqCi4jvTsUFGGSll6gSTEoRgETRbT+PSXM1evGmHeXq
FiwjDCk04hlqZBQyx8LF99pDRuDFeOGtbE/7U+xk7+7mQBkDKqMQMkZI1JXTBDEG9arjE9C5WI9i
XGLoktDnGQoC4CiMJYXhOvZaCnCSzbgX39ke9DEzFpnEQBTfp0LKoDsSB8JYHMbQ71ZJZCBOuT+I
M3QVy0zrHOyZGbCiHxbgMJkhczPpcFGoAwB2cnhTGMP4JTgy4ysgGy/C62yIRIkfSwOGLvV1QGUR
+QFH6CaAR3H0i+/iCuNMFGNZGPNpBmMrlYfAwL3CAGZ8HfAG4HsncGAKWr6j6WEH5T4wcA+tATw/
eZEuNnay7StUdxgUfRStFoy2YPTrA6P3gTLpvtgOxrTI5OuNU5Usc2oAKTa5rwGE/26Q+nsw29TW
3Wr/0kDYqC4QJu4CYXx/NJHvEwgbPjYQ1oav2vBVEkWaYNxvw1ctYmgRQxu+an3/k/p+Qcj7/oEk
tr6/9f1P6vt1PPoSvl9qfX/r+1vf3/r+f+F1f8H3ywbf+v7W9z+p75fbdX/r+1vff/CdgsItr4ZT
Dw1V8xdF9qtZuAzR7lG0WOXz7VFo6qjFKi1WeUqsokotVmmxSotVDo1VWqzQYoUDYwUxH9fAg34b
12ixwlNiBV4XVf5LYAW+xQotVvhnjmskV8NbwNAChs93CGLUHoJoAcMTAwZBUVvA0AKGFjAceiNk
9zJfCxq+7ou/6dtFx+34fZXjV3gwrx3EFrkf/giT2B5hapH7Ex9hGrTbgi1yb5H7wZF79kJfi9u/
btxXenS2RX5f5zCmL4e34/d1jt/uTe12BL9SQ8qews69enap4+VhvkCQkix7474wHNMvLUz9r3jE
voJsTL9DNf5GxuP4GxnHiH65/cK0IpTDM7/b4aQX3/3e9pb+DPAOo5R84fMYdWi7nUxNyBiddLhp
B3WEQeclELMjLv0aSxHBgsPlCABH7IwB1MJyiD5clH3+Hh0VvicyHa34eyWhn9n3Sibff5m2nrWY
1qBPV6G4Xej0/wMGhnohANgAAA==

--b1_oHy08PWmPsOPRRPhK59EbeSBynAeRsUjblVRNhusU--





Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 17 Nov 2021 14:00:39 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Nov 17 09:00:39 2021
Received: from localhost ([127.0.0.1]:60465 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1mnLUM-0001oP-SP
	for submit <at> debbugs.gnu.org; Wed, 17 Nov 2021 09:00:39 -0500
Received: from mail-40131.protonmail.ch ([185.70.40.131]:45110)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <phodina@HIDDEN>) id 1mnLUK-0001o8-Bf
 for 48314 <at> debbugs.gnu.org; Wed, 17 Nov 2021 09:00:37 -0500
Date: Wed, 17 Nov 2021 14:00:20 +0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com;
 s=protonmail; t=1637157624;
 bh=+1DVFYonn5b0c1cC896cpWoPHJoO8G0wGwk4iXUr1Jw=;
 h=Date:To:From:Reply-To:Subject:From;
 b=n9SnDMedjF4TNnC43xPhJqX/MOeg4enkasig+0zNYHbtEr9rJJHdnqlJRBrhgRBHs
 oMHU+LP+ZXsCHLj1LHpN39v2lHyomPW0pco8lznKepCdBAl0KssgHKoKodaB5PdSCW
 Bn9o5JyehqYjzjHk+OYPP0f9vwp3eLGwgoLbqE2g=
To: "48314 <at> debbugs.gnu.org" <48314 <at> debbugs.gnu.org>
From: phodina <phodina@HIDDEN>
Subject: Install guix system on Raspberry Pi
Message-ID: <OahXqPKMATT16YqLIphkEprs1qTp5g42cHom8LCs7nzh7sIvl7z2VxyMPa5_K3c-A8kdSGF2OKDdv6x5QeMqm7Fu0Ta0EApAP0paB3wawbo=@protonmail.com>
MIME-Version: 1.0
Content-Type: multipart/mixed;
 boundary="b1_HfDmXki0BJpRSro8yOfiB45iVY6BSkPBPuYxeHwxtM"
X-Spam-Status: No, score=-1.2 required=10.0 tests=ALL_TRUSTED,DKIM_SIGNED,
 DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM shortcircuit=no
 autolearn=disabled version=3.4.4
X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on
 mailout.protonmail.ch
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 48314
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Reply-To: phodina <phodina@HIDDEN>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

This is a multi-part message in MIME format.

--b1_HfDmXki0BJpRSro8yOfiB45iVY6BSkPBPuYxeHwxtM
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Hi Stefan,

I've attempted to cross compile the system on x86_64 machine and I must rep=
ort here are still several issue.

- Firstly it has to be attempted off the branch core-updates as there is th=
e latest packaged meson build system which allows cross compilation.

guix system: error: gnu/packages/glib.scm:172:2: glib@HIDDEN: build system =
`meson' does not support cross builds

Note that a minor issue happens when applying your patches on top of core-u=
pdates is patch-04 failing due to collision in the header with your email a=
ddress.
- Secondly there are some packages that need to be patched. See the attache=
d file.

- Thirdly there is some issue in the optional test cases in the package lso=
f which fail if executed on btrfs (unfortunately that's my case so I disabl=
ed them, just the optional part).

If I apply all the changes I can build the system.

- However, that brings me to the last issue. There is a package efivar whic=
h does not build. The issue there is described here [1].

Then again I haven't actually ran the system on Raspberry Pi itself. I'll a=
ttempt to setup Debian and build it natively as you suggested.

Kind regards
Petr

PS: Sorry Stefan for the late answer

[1]: https://github.com/rhboot/efivar/issues/186
--b1_HfDmXki0BJpRSro8yOfiB45iVY6BSkPBPuYxeHwxtM
Content-Type: text/x-patch; name=0001-Fixes-to-cross-compile-system-for-aarch64.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=0001-Fixes-to-cross-compile-system-for-aarch64.patch

RnJvbSA0OGNjZGUwYjEzYTQ3MTA0MGVjY2Q4N2U0MDlhZTBjZmUyOWZiYzc5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRyIEhvZGluYSA8cGhvZGluYUBwcm90b25tYWlsLmNvbT4K
RGF0ZTogVHVlLCAxNiBOb3YgMjAyMSAxNDoxNjoxNiArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIEZp
eGVzIHRvIGNyb3NzIGNvbXBpbGUgc3lzdGVtIGZvciBhYXJjaDY0LgoKCmRpZmYgLS1naXQgYS9n
bnUvcGFja2FnZXMvY2VydHMuc2NtIGIvZ251L3BhY2thZ2VzL2NlcnRzLnNjbQppbmRleCAzOWMz
ZWJkMTI4Li4zMTFkNWQ0OTc0IDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvY2VydHMuc2NtCisr
KyBiL2dudS9wYWNrYWdlcy9jZXJ0cy5zY20KQEAgLTE1OCw3ICsxNTgsNyBAQCB0aGF0IHdhcyBv
cmlnaW5hbGx5IGNvbnRyaWJ1dGVkIHRvIERlYmlhbi4iKQogICAgICAgICAgICAgICAgICcoc2V0
LXBhdGhzIGluc3RhbGwtbG9jYWxlIHVucGFjaykpCiAgICAgICAgICAoYWRkLWFmdGVyICd1bnBh
Y2sgJ2luc3RhbGwKICAgICAgICAgICAgKGxhbWJkYSBfCi0gICAgICAgICAgICAgKGxldCAoKGNl
cnRzZGlyIChzdHJpbmctYXBwZW5kICVvdXRwdXQgIi9ldGMvc3NsL2NlcnRzLyIpKSkKKyAgICAg
ICAgICAgICAobGV0ICgoY2VydHNkaXIgKHN0cmluZy1hcHBlbmQgKGFzc29jLXJlZiAlb3V0cHV0
cyAib3V0IikgIi9ldGMvc3NsL2NlcnRzLyIpKSkKICAgICAgICAgICAgICAgICh3aXRoLWRpcmVj
dG9yeS1leGN1cnNpb24gIm5zcy9saWIvY2tmdy9idWlsdGlucy8iCiAgICAgICAgICAgICAgICAg
ICh1bmxlc3MgKGZpbGUtZXhpc3RzPyAiYmxhY2tsaXN0LnR4dCIpCiAgICAgICAgICAgICAgICAg
ICAgKGNhbGwtd2l0aC1vdXRwdXQtZmlsZSAiYmxhY2tsaXN0LnR4dCIgKGNvbnN0ICN0KSkpCkBA
IC0yMDYsNyArMjA2LDcgQEAgdGFrZW4gZnJvbSB0aGUgTlNTIHBhY2thZ2UgYW5kIHRodXMgdWx0
aW1hdGVseSBmcm9tIHRoZSBNb3ppbGxhIHByb2plY3QuIikKIAogICAgICAgICAgICA7OyBDcmVh
dGUgaGFzaCBzeW1saW5rcyBzdWl0YWJsZSBmb3IgT3BlblNTTCAoJ1NTTF9DRVJUX0RJUicgYW5k
CiAgICAgICAgICAgIDs7IHNpbWlsYXIuKQotICAgICAgICAgICAoY2hkaXIgKHN0cmluZy1hcHBl
bmQgJW91dHB1dCAiL2V0Yy9zc2wvY2VydHMiKSkKKyAgICAgICAgICAgKGNoZGlyIChzdHJpbmct
YXBwZW5kIChhc3NvYy1yZWYgJW91dHB1dHMgIm91dCIpICIvZXRjL3NzbC9jZXJ0cyIpKQogICAg
ICAgICAgICAoaW52b2tlIChzdHJpbmctYXBwZW5kIHBlcmwgIi9iaW4vcGVybCIpCiAgICAgICAg
ICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgb3BlbnNzbCAiL2Jpbi9jX3JlaGFzaCIpCiAgICAg
ICAgICAgICAgICAgICAgIi4iKSkpKSkKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdlcy9kaXNrLnNj
bSBiL2dudS9wYWNrYWdlcy9kaXNrLnNjbQppbmRleCA3ZDZmMzgxMWRkLi5mZTMwZjBjMDhjIDEw
MDY0NAotLS0gYS9nbnUvcGFja2FnZXMvZGlzay5zY20KKysrIGIvZ251L3BhY2thZ2VzL2Rpc2su
c2NtCkBAIC00NDcsNyArNDQ3LDcgQEAgdG8gcmVjb3ZlciBkYXRhIG1vcmUgZWZmaWNpZW50bHkg
Ynkgb25seSByZWFkaW5nIHRoZSBuZWNlc3NhcnkgYmxvY2tzLiIpCiAgICAgKGJ1aWxkLXN5c3Rl
bSBnbnUtYnVpbGQtc3lzdGVtKQogICAgIChhcmd1bWVudHMKICAgICAgYCgjOmNvbmZpZ3VyZS1m
bGFncyAobGlzdCAiLS1lbmFibGUtY29tcGF0LXN5bWxpbmtzIikKLSAgICAgICAjOm1ha2UtZmxh
Z3MgKGxpc3QgKHN0cmluZy1hcHBlbmQgIlBSRUZJWD0iICVvdXRwdXQpCisgICAgICAgIzptYWtl
LWZsYWdzIChsaXN0IChzdHJpbmctYXBwZW5kICJQUkVGSVg9IiAoYXNzb2MtcmVmICVvdXRwdXRz
ICJvdXQiKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNDPWdjYyIpKSkKICAgICAobmF0
aXZlLWlucHV0cwogICAgICBgKCgiYXV0b2NvbmYiICxhdXRvY29uZikKZGlmZiAtLWdpdCBhL2du
dS9wYWNrYWdlcy9saW51eC5zY20gYi9nbnUvcGFja2FnZXMvbGludXguc2NtCmluZGV4IGY4ZGI3
ODE0NDYuLjU5MTA2NDdlN2EgMTAwNjQ0Ci0tLSBhL2dudS9wYWNrYWdlcy9saW51eC5zY20KKysr
IGIvZ251L3BhY2thZ2VzL2xpbnV4LnNjbQpAQCAtMjg1MSw3ICsyODUxLDcgQEAgZXh0ZXJuYWwg
cmF0ZSBjb252ZXJzaW9uLiIpCiAgICAgKGFyZ3VtZW50cwogICAgICAnKCM6dGVzdHM/ICNmICAg
ICAgIDsgbm8gdGVzdCBzdWl0ZQogICAgICAgICM6Y29uZmlndXJlLWZsYWdzIDsgYWRkICRsaWJk
aXIgdG8gdGhlIFJVTlBBVEggb2YgZXhlY3V0YWJsZXMKLSAgICAgICAobGlzdCAoc3RyaW5nLWFw
cGVuZCAiTERGTEFHUz0tV2wsLXJwYXRoPSIgJW91dHB1dCAiL2xpYiIpKSkpCisgICAgICAgKGxp
c3QgKHN0cmluZy1hcHBlbmQgIkxERkxBR1M9LVdsLC1ycGF0aD0iIChhc3NvYy1yZWYgJW91dHB1
dHMgIm91dCIpICIvbGliIikpKSkKICAgICAoaG9tZS1wYWdlICJodHRwczovL3d3dy5uZXRmaWx0
ZXIub3JnL3Byb2plY3RzL2lwdGFibGVzL2luZGV4Lmh0bWwiKQogICAgIChzeW5vcHNpcyAiUHJv
Z3JhbXMgdG8gY29uZmlndXJlIExpbnV4IElQIHBhY2tldCBmaWx0ZXJpbmcgcnVsZXMiKQogICAg
IChkZXNjcmlwdGlvbgpAQCAtNDMyMyw5ICs0MzIzLDkgQEAgZG0tdGhpbiwgZG0tY2FjaGUgYW5k
IGRtLWVyYSBkZXZpY2UtbWFwcGVyIHRhcmdldHMuIikKICAgICAoYnVpbGQtc3lzdGVtIGdudS1i
dWlsZC1zeXN0ZW0pCiAgICAgKGFyZ3VtZW50cwogICAgICBgKCM6bWFrZS1mbGFncwotICAgICAg
IChsaXN0IChzdHJpbmctYXBwZW5kICJQUkVGSVg9IiAlb3V0cHV0KQotICAgICAgICAgICAgIChz
dHJpbmctYXBwZW5kICJJTlNUQUxMX01BTj0iICVvdXRwdXQgIi9zaGFyZS9tYW4iKQotICAgICAg
ICAgICAgIChzdHJpbmctYXBwZW5kICJMREZMQUdTPS1XbCwtcnBhdGg9IiAlb3V0cHV0ICIvbGli
IikKKyAgICAgICAobGlzdCAoc3RyaW5nLWFwcGVuZCAiUFJFRklYPSIgKGFzc29jLXJlZiAlb3V0
cHV0cyAib3V0IikpCisgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgIklOU1RBTExfTUFOPSIg
KGFzc29jLXJlZiAlb3V0cHV0cyAib3V0IikgIi9zaGFyZS9tYW4iKQorICAgICAgICAgICAgIChz
dHJpbmctYXBwZW5kICJMREZMQUdTPS1XbCwtcnBhdGg9IiAoYXNzb2MtcmVmICVvdXRwdXRzICJv
dXQiKSAiL2xpYiIpCiAgICAgICAgICAgICAgIkJVSUxEX1NUQVRJQz0iKQogICAgICAgICM6cGhh
c2VzCiAgICAgICAgKG1vZGlmeS1waGFzZXMgJXN0YW5kYXJkLXBoYXNlcwpAQCAtNTM0Myw3ICs1
MzQzLDcgQEAgTGludXggRGV2aWNlIE1hcHBlciBtdWx0aXBhdGhpbmcgZHJpdmVyOgogICAgIChh
cmd1bWVudHMKICAgICAgYCgjOm1ha2UtZmxhZ3MKICAgICAgICAobGV0ICgodGFyZ2V0ICwoJWN1
cnJlbnQtdGFyZ2V0LXN5c3RlbSkpKQotICAgICAgICAgKGxpc3QgKHN0cmluZy1hcHBlbmQgInBy
ZWZpeD0iICVvdXRwdXQpCisgICAgICAgICAobGlzdCAoc3RyaW5nLWFwcGVuZCAicHJlZml4PSIg
KGFzc29jLXJlZiAlb3V0cHV0cyAib3V0IikpCiAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVu
ZAogICAgICAgICAgICAgICAgICJDQz0iIChpZiB0YXJnZXQKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHN0cmluZy1hcHBlbmQgKGFzc29jLXJlZiAlYnVpbGQtaW5wdXRzICJjcm9zcy1nY2Mi
KQpAQCAtNjc5MSwxMCArNjc5MSwxMiBAQCB1bmRlciBPcGVuR0wgZ3JhcGhpY3Mgd29ya2xvYWRz
LiIpCiAgICAgKGFyZ3VtZW50cwogICAgICBgKDs7IFRlc3RzIHJlcXVpcmUgYSBVRUZJIHN5c3Rl
bSBhbmQgaXMgbm90IGRldGVjdGVkIGluIHRoZSBjaHJvb3QuCiAgICAgICAgIzp0ZXN0cz8gI2YK
LSAgICAgICAjOm1ha2UtZmxhZ3MgKGxpc3QgKHN0cmluZy1hcHBlbmQgInByZWZpeD0iICVvdXRw
dXQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kICJsaWJkaXI9IiAl
b3V0cHV0ICIvbGliIikKKyAgICAgICAjOm1ha2UtZmxhZ3MgKGxpc3QgKHN0cmluZy1hcHBlbmQg
InByZWZpeD0iIChhc3NvYy1yZWYgJW91dHB1dHMKKwkgICAib3V0IikpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kICJsaWJkaXI9IiAoYXNzb2MtcmVmICVvdXRwdXRz
ICJvdXQiKSAiL2xpYiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5k
ICJDQ19GT1JfQlVJTEQ9IiAsKGNjLWZvci10YXJnZXQpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAoc3RyaW5nLWFwcGVuZCAiTERGTEFHUz0tV2wsLXJwYXRoPSIgJW91dHB1dCAiL2xpYiIp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAiTERGTEFHUz0tV2ws
LXJwYXRoPSIgKGFzc29jLXJlZgorCQkJCQkJICAlb3V0cHV0cyAib3V0IikgIi9saWIiKSkKICAg
ICAgICAjOnBoYXNlcwogICAgICAgIChtb2RpZnktcGhhc2VzICVzdGFuZGFyZC1waGFzZXMKICAg
ICAgICAgIChkZWxldGUgJ2NvbmZpZ3VyZSkpKSkKQEAgLTY4MjUsOCArNjgyNyw4IEBAIGludGVy
ZmFjZSB0byB0aGUgdmFyaWFibGUgZmFjaWxpdHkgb2YgVUVGSSBib290IGZpcm13YXJlLiIpCiAg
ICAgKGJ1aWxkLXN5c3RlbSBnbnUtYnVpbGQtc3lzdGVtKQogICAgIChhcmd1bWVudHMKICAgICAg
YCgjOnRlc3RzPyAjZiA7bm8gdGVzdHMKLSAgICAgICAjOm1ha2UtZmxhZ3MgKGxpc3QgKHN0cmlu
Zy1hcHBlbmQgInByZWZpeD0iICVvdXRwdXQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChz
dHJpbmctYXBwZW5kICJsaWJkaXI9IiAlb3V0cHV0ICIvbGliIikKKyAgICAgICAjOm1ha2UtZmxh
Z3MgKGxpc3QgKHN0cmluZy1hcHBlbmQgInByZWZpeD0iIChhc3NvYy1yZWYgJW91dHB1dHMgIm91
dCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAibGliZGlyPSIg
KGFzc29jLXJlZiAlb3V0cHV0cyAib3V0IikgIi9saWIiKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICA7OyBFRklESVIgZGVub3RlcyBhIHN1YmRpcmVjdG9yeSByZWxhdGl2ZSB0byB0aGUKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOzsgRUZJIFN5c3RlbSBQYXJ0aXRpb24gd2hlcmUgdGhl
IGxvYWRlciB3aWxsIGJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGluc3RhbGxlZCAo
a25vd24gYXMgT1NfVkVORE9SIGluIHRoZSBjb2RlKS4KZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdl
cy9sc29mLnNjbSBiL2dudS9wYWNrYWdlcy9sc29mLnNjbQppbmRleCBiMzE3OTAyZWU3Li41MTlm
N2YxNWIyIDEwMDY0NAotLS0gYS9nbnUvcGFja2FnZXMvbHNvZi5zY20KKysrIGIvZ251L3BhY2th
Z2VzL2xzb2Yuc2NtCkBAIC05MCw3ICs5MCwxMCBAQAogICAgICAgICAgICAgICAgIChpbnZva2Ug
Ii4vQWRkMlRlc3REQiIpCiAKICAgICAgICAgICAgICAgICA7OyBUaGUg4oCYc3RhbmRhcmTigJkg
dGVzdHMgc3VnZ2VzdCBydW5uaW5nIOKAmG9wdGlvbmFs4oCZIG9uZXMgYXMgd2VsbC4KLSAgICAg
ICAgICAgICAgICAoaW52b2tlICJtYWtlIiAic3RhbmRhcmQiICJvcHRpb25hbCIpKSkKKwkJCQk7
OyBvcHRpb25hbCB0ZXN0IGZhaWwgb24gQlRSRlMKKwkJCQk7OyBodHRwczovL3d3dy5zcGluaWNz
Lm5ldC9saXN0cy9saW51eC1idHJmcy9tc2cwOTA0NC5odG1sCisJCQkJOzsgaHR0cHM6Ly9naXRo
dWJtZW1vcnkuY29tL3JlcG8vbHNvZi1vcmcvbHNvZi9pc3N1ZXMvMTUyP3BhZ2U9MgorICAgICAg
ICAgICAgICAgIChpbnZva2UgIm1ha2UiICJzdGFuZGFyZCIgKSkpOyJvcHRpb25hbCIpKSkKICAg
ICAgICAgICAgICN0KSkKICAgICAgICAgKHJlcGxhY2UgJ2luc3RhbGwKICAgICAgICAgICAobGFt
YmRhKiAoIzprZXkgb3V0cHV0cyAjOmFsbG93LW90aGVyLWtleXMpCmRpZmYgLS1naXQgYS9nbnUv
cGFja2FnZXMvbWFuLnNjbSBiL2dudS9wYWNrYWdlcy9tYW4uc2NtCmluZGV4IGI0NDMxZTViMDgu
LmFjNDkyMGQ4MzYgMTAwNjQ0Ci0tLSBhL2dudS9wYWNrYWdlcy9tYW4uc2NtCisrKyBiL2dudS9w
YWNrYWdlcy9tYW4uc2NtCkBAIC0xODMsOSArMTgzLDkgQEAgYSBmbGV4aWJsZSBhbmQgY29udmVu
aWVudCB3YXkuIikKICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgIi0td2l0
aC1jb2w9IiB1dGlsICIvYmluL2NvbCIpCiAgICAgICAgICAgICAgICAgICAgICAgIDs7IFRoZSBk
ZWZhdWx0IHN5c3RlbWQgZGlyZWN0b3JpZXMgaWdub3JlIC0tcHJlZml4LgogICAgICAgICAgICAg
ICAgICAgICAgICAoc3RyaW5nLWFwcGVuZCAiLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJW91dHB1dCAiL2xpYi9zeXN0
ZW1kL3N5c3RlbSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhc3Nv
Yy1yZWYgJW91dHB1dHMgIm91dCIpICIvbGliL3N5c3RlbWQvc3lzdGVtIikKICAgICAgICAgICAg
ICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQgIi0td2l0aC1zeXN0ZW1kdG1wZmlsZXNkaXI9Igot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlb3V0cHV0ICIvbGliL3RtcGZp
bGVzLmQiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFzc29jLXJl
ZiAlb3V0cHV0cyAib3V0IikgIi9saWIvdG1wZmlsZXMuZCIpKQogICAgICAgICAgICAgICAgICAo
bWFwIChsYW1iZGEgKHByb2cpCiAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nLWFwcGVu
ZCAiLS13aXRoLSIgcHJvZyAiPSIgZ3JvZmYtbWluaW1hbAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIi9iaW4vIiBwcm9nKSkKZGlmZiAtLWdpdCBhL2dudS9wYWNrYWdl
cy9udHAuc2NtIGIvZ251L3BhY2thZ2VzL250cC5zY20KaW5kZXggNTViOWE3M2IyMi4uMGQ4YzQw
OWI2ZSAxMDA2NDQKLS0tIGEvZ251L3BhY2thZ2VzL250cC5zY20KKysrIGIvZ251L3BhY2thZ2Vz
L250cC5zY20KQEAgLTE1OSw3ICsxNTksOCBAQCB0aW1lLXN0YW1waW5nIG9yIHJlZmVyZW5jZSBj
bG9jaywgc3ViLW1pY3Jvc2Vjb25kIGFjY3VyYWN5IGlzIHBvc3NpYmxlLiIpCiAgICAgICAgICAg
ICBgKCgibGliY2FwIiAsbGliY2FwKSkKICAgICAgICAgICAgICcoKSkpKQogICAgKGFyZ3VtZW50
cwotICAgIGAoIzpwaGFzZXMKKyAgICBgKCM6Y29uZmlndXJlLWZsYWdzIChsaXN0ICItLXdpdGgt
eWllbGRpbmctc2VsZWN0PXllcyIpCisJICAjOnBoYXNlcwogICAgICAgKG1vZGlmeS1waGFzZXMg
JXN0YW5kYXJkLXBoYXNlcwogICAgICAgICAoYWRkLWFmdGVyICd1bnBhY2sgJ2Rpc2FibGUtbmV0
d29yay10ZXN0CiAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSBfCi0tIAoyLjMzLjEKCg==

--b1_HfDmXki0BJpRSro8yOfiB45iVY6BSkPBPuYxeHwxtM--





Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 13 Nov 2021 20:21:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Nov 13 15:21:33 2021
Received: from localhost ([127.0.0.1]:48268 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1mlzWn-0001rU-HL
	for submit <at> debbugs.gnu.org; Sat, 13 Nov 2021 15:21:33 -0500
Received: from cascadia.aikidev.net ([173.255.214.101]:38808)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <vagrant@HIDDEN>) id 1mlzWl-0001rD-CW
 for 48314 <at> debbugs.gnu.org; Sat, 13 Nov 2021 15:21:32 -0500
Received: from localhost (unknown [IPv6:2600:3c01:e000:21:21:21:0:100e])
 (Authenticated sender: vagrant@HIDDEN)
 by cascadia.aikidev.net (Postfix) with ESMTPSA id DC6931AC25;
 Sat, 13 Nov 2021 12:21:24 -0800 (PST)
From: Vagrant Cascadian <vagrant@HIDDEN>
To: Stefan <stefan-guix@HIDDEN>, 48314 <at> debbugs.gnu.org
Subject: Re: [bug#48314] Patches to install guix system on Raspberry Pi
In-Reply-To: <AFD31F40-6691-4B53-ACA9-7F821D139124@HIDDEN>
References: <20210619211026.5eb44073@HIDDEN>
 <897B7FF7-24C1-4B96-8441-415596267E99@HIDDEN>
 <BDB9E76C-37FF-4033-81C1-9D5F0AA575F2@HIDDEN>
 <AFD31F40-6691-4B53-ACA9-7F821D139124@HIDDEN>
Date: Sat, 13 Nov 2021 12:21:10 -0800
Message-ID: <87zgq7ajt5.fsf@ponder>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-=";
 micalg=pgp-sha512; protocol="application/pgp-signature"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Danny Milosavljevic <dannym@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain

On 2021-10-31, Stefan wrote:
> +(define-public %u-boot-rpi-efi-configs
> +  '("CONFIG_OF_EMBED="
> +    "CONFIG_OF_BOARD=y"
> +    "CONFIG_BOOTDELAY=0"))

This is surely a matter of opinion, but CONFIG_BOOTDELAY=0 is kind of
nasty; it makes it nearly impossible to debug from a u-boot prompt if
needed. The default is probably "2" ... long enough to actually
interrupt it, but short enough that it shouldn't cause huge delays in
the boot process...

I know grub-efi will add it's own delay, so in a working environment,
this just seems like an additional two seconds, but u-boot's EFI
implementation is changing often enough that I wouldn't be surprised if
you need to occasionally debug something.


live well,
  vagrant

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCYZAePQAKCRDcUY/If5cW
qsx8AQCVOpicppWo+OHD/jlMDlBJ/27wMT3mFNLksdYI75+iUQD/VHPEdzfJpsv6
9cW4FCgwCuRy5dtkOqh7migzIkd8XAA=
=UWBU
-----END PGP SIGNATURE-----
--=-=-=--




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 13 Nov 2021 18:51:55 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Nov 13 13:51:55 2021
Received: from localhost ([127.0.0.1]:48070 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1mly83-0005dH-JU
	for submit <at> debbugs.gnu.org; Sat, 13 Nov 2021 13:51:55 -0500
Received: from cascadia.aikidev.net ([173.255.214.101]:38720)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <vagrant@HIDDEN>) id 1mly81-0005d5-VT
 for 48314 <at> debbugs.gnu.org; Sat, 13 Nov 2021 13:51:54 -0500
Received: from localhost (unknown [IPv6:2600:3c01:e000:21:21:21:0:100e])
 (Authenticated sender: vagrant@HIDDEN)
 by cascadia.aikidev.net (Postfix) with ESMTPSA id A589E1AC25;
 Sat, 13 Nov 2021 10:51:47 -0800 (PST)
From: Vagrant Cascadian <vagrant@HIDDEN>
To: Stefan <stefan-guix@HIDDEN>, 48314 <at> debbugs.gnu.org
Subject: Re: [bug#48314] Patches to install guix system on Raspberry Pi
In-Reply-To: <87czn4aq2s.fsf@ponder>
References: <20210619211026.5eb44073@HIDDEN>
 <897B7FF7-24C1-4B96-8441-415596267E99@HIDDEN>
 <BDB9E76C-37FF-4033-81C1-9D5F0AA575F2@HIDDEN>
 <AFD31F40-6691-4B53-ACA9-7F821D139124@HIDDEN>
 <87czn4aq2s.fsf@ponder>
Date: Sat, 13 Nov 2021 10:51:38 -0800
Message-ID: <875ysvc2it.fsf@ponder>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-=";
 micalg=pgp-sha512; protocol="application/pgp-signature"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Danny Milosavljevic <dannym@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain

On 2021-11-13, Vagrant Cascadian wrote:
> Subject: [PATCH 3/8] * gnu/packages/bootloader.scm (make-u-boot-package): Add
>  keyword parameters 'name' and 'description'.
> ...
>  (u-boot-rpi-0-w, u-boot-rpi, u-boot-rpi-2, u-boot-rpi-3,
>  u-boot-rpi-4, u-boot-rpi-64, u-boot-rpi-0-w-efi, u-boot-rpi-efi,
>  u-boot-rpi-2-efi, u-boot-rpi-3-efi, u-boot-rpi-4-efi, u-boot-rpi-efi-64): New
>  packages.
...
> +(define-public u-boot-rpi-64
> +  (make-preinstalled-u-boot-package
> +   "rpi_arm64"
> +   "aarch64-linux-gnu"
> +   #:name "rpi-64"
> +   #:description %u-boot-rpi-description-64-bit))
>
> And this "u-boot-rpi-arm64".
>
> In other words, keep names consistent with the upstream defconfig they
> are based on.
...
> I think without addressing the rest of the patch series, adding to guix
> master the following packages could make the remaining diff smaller:
>
>   u-boot-rpi-2 (rpi_2_defconfig)
>   u-boot-rpi-3-32b (rpi_3_32b_defconfig)
>   u-boot-rpi-4-32b (rpi_4_32b_defconfig)
>   u-boot-rpi-arm64 (rpi_arm64_defconfig)

Patch that builds, but haven't tested on an actual board (do have rpi2
and rpi3b+ could test sometime):

diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 706ddf0207..f5a3fd51e0 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -994,6 +994,18 @@ (define-public u-boot-pinebook-pro-rk3399
        `(("firmware" ,arm-trusted-firmware-rk3399)
          ,@(package-native-inputs base))))))

+(define-public u-boot-rpi-2
+  (make-u-boot-package "rpi_2" "arm-linux-gnueabihf"))
+
+(define-public u-boot-rpi-3-32b
+  (make-u-boot-package "rpi_3_32b" "arm-linux-gnueabihf"))
+
+(define-public u-boot-rpi-4-32b
+  (make-u-boot-package "rpi_4_32b" "arm-linux-gnueabihf"))
+
+(define-public u-boot-rpi-arm64
+  (make-u-boot-package "rpi_arm64" "aarch64-linux-gnu"))
+
 (define-public vboot-utils
   (package
     (name "vboot-utils")



Which leads me to wonder, why have the name and description argument at
all, when you could just inherit and set the name, like done with the
boneblack?

(define-public u-boot-am335x-boneblack
  (let ((base (make-u-boot-package "am335x_evm" "arm-linux-gnueabihf")))
    (package
      (inherit base)
      (name "u-boot-am335x-boneblack")
      (description "U-Boot is a bootloader used mostly for ARM
boards. It also initializes the boards (RAM etc).
...


And of course, thanks for working on this! :)


live well,
  vagrant

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCYZAJPwAKCRDcUY/If5cW
qnxYAP0Z7B/K+KyoxrUExE7pXIkYiRyTF+WD8UKCOGclCukR4gD/bZKdtBpvgjOA
D6LTIr2JWJZbDpiSroRJDq5hGDfgWwI=
=HhQ2
-----END PGP SIGNATURE-----
--=-=-=--




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 13 Nov 2021 18:24:19 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Nov 13 13:24:19 2021
Received: from localhost ([127.0.0.1]:48036 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1mlxhL-0004sv-LK
	for submit <at> debbugs.gnu.org; Sat, 13 Nov 2021 13:24:19 -0500
Received: from cascadia.aikidev.net ([173.255.214.101]:38672)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <vagrant@HIDDEN>) id 1mlxhG-0004sa-Ae
 for 48314 <at> debbugs.gnu.org; Sat, 13 Nov 2021 13:24:18 -0500
Received: from localhost (unknown [IPv6:2600:3c01:e000:21:21:21:0:100e])
 (Authenticated sender: vagrant@HIDDEN)
 by cascadia.aikidev.net (Postfix) with ESMTPSA id 8A90C1AC25;
 Sat, 13 Nov 2021 10:24:07 -0800 (PST)
From: Vagrant Cascadian <vagrant@HIDDEN>
To: Stefan <stefan-guix@HIDDEN>, 48314 <at> debbugs.gnu.org
Subject: Re: [bug#48314] Patches to install guix system on Raspberry Pi
In-Reply-To: <AFD31F40-6691-4B53-ACA9-7F821D139124@HIDDEN>
References: <20210619211026.5eb44073@HIDDEN>
 <897B7FF7-24C1-4B96-8441-415596267E99@HIDDEN>
 <BDB9E76C-37FF-4033-81C1-9D5F0AA575F2@HIDDEN>
 <AFD31F40-6691-4B53-ACA9-7F821D139124@HIDDEN>
Date: Sat, 13 Nov 2021 10:23:59 -0800
Message-ID: <87a6i7c3sw.fsf@ponder>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-=";
 micalg=pgp-sha512; protocol="application/pgp-signature"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Danny Milosavljevic <dannym@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain

On 2021-10-31, Stefan wrote:
...
Subject: [PATCH 3/8] * gnu/packages/bootloader.scm (make-u-boot-package): Add
 keyword parameters 'name' and 'description'.
 (make-preinstalled-u-boot-package): New function to make minimal packages.

+(define*-public (make-preinstalled-u-boot-package board
+                                                  triplet
+                                                  #:key
+                                                  defconfig
+                                                  configs
+                                                  name
+                                                  description
+                                                  (u-boot-file "u-boot.bin"))
+  "Returns a package with a single U-BOOT-FILE for BOARD cross-compiled for
+TRIPLET with the optional DEFCONFIG file and optional configuration changes
+from CONFIGS.  Either NAME, if used, or otherwise BOARD will be part of the
+package name.  DESCRIPTION will be appended to the package description."

u-boot-file appears to be hard-coded; there may be other boards which
use a different u-boot artifact. Also, why return a single file, rather
than just building a package and then allowing other functions to pick
the appropriate file out of the resulting package?

I wondered "why does it have to be cross-compiled" but then realized
that came from the existing make-u-boot-package function. I've mostly
been building u-boot natively these days. :)


live well,
  vagrant

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCYZACwgAKCRDcUY/If5cW
qnWGAP9uooKKUAaUXpv9QlckQptiHVjOe9Htm7L6dNLaqDwRiQEAx0Cy4tB+jrAS
bvKHMzVyrqdJvlI1kqKM+5ORgkTV0wM=
=RuTm
-----END PGP SIGNATURE-----
--=-=-=--




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 13 Nov 2021 18:06:22 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Nov 13 13:06:22 2021
Received: from localhost ([127.0.0.1]:48027 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1mlxPx-0004Pm-PS
	for submit <at> debbugs.gnu.org; Sat, 13 Nov 2021 13:06:22 -0500
Received: from cascadia.aikidev.net ([173.255.214.101]:38646)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <vagrant@HIDDEN>) id 1mlxPu-0004PY-2a
 for 48314 <at> debbugs.gnu.org; Sat, 13 Nov 2021 13:06:20 -0500
Received: from localhost (unknown [IPv6:2600:3c01:e000:21:21:21:0:100e])
 (Authenticated sender: vagrant@HIDDEN)
 by cascadia.aikidev.net (Postfix) with ESMTPSA id 6B3971AC25;
 Sat, 13 Nov 2021 10:06:11 -0800 (PST)
From: Vagrant Cascadian <vagrant@HIDDEN>
To: Stefan <stefan-guix@HIDDEN>, 48314 <at> debbugs.gnu.org
Subject: Re: [bug#48314] Patches to install guix system on Raspberry Pi
In-Reply-To: <AFD31F40-6691-4B53-ACA9-7F821D139124@HIDDEN>
References: <20210619211026.5eb44073@HIDDEN>
 <897B7FF7-24C1-4B96-8441-415596267E99@HIDDEN>
 <BDB9E76C-37FF-4033-81C1-9D5F0AA575F2@HIDDEN>
 <AFD31F40-6691-4B53-ACA9-7F821D139124@HIDDEN>
Date: Sat, 13 Nov 2021 10:05:47 -0800
Message-ID: <87czn4aq2s.fsf@ponder>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="=-=-=";
 micalg=pgp-sha512; protocol="application/pgp-signature"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 48314
Cc: Danny Milosavljevic <dannym@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain

On 2021-10-31, Stefan wrote:
> I did a rebase of the patch series to avoid bit-rotting. One patch got obsolete meanwhile.
>
> This series applies on GIT commit 1a80b8909a521b91d30649a011b0257d0fadc18c.

And still applies on master as of
193d7b5b450d2004c26720e488a9cce930542e9e :)

Subject: [PATCH 3/8] * gnu/packages/bootloader.scm (make-u-boot-package): Add
 keyword parameters 'name' and 'description'.
...
 (u-boot-rpi-0-w, u-boot-rpi, u-boot-rpi-2, u-boot-rpi-3,
 u-boot-rpi-4, u-boot-rpi-64, u-boot-rpi-0-w-efi, u-boot-rpi-efi,
 u-boot-rpi-2-efi, u-boot-rpi-3-efi, u-boot-rpi-4-efi, u-boot-rpi-efi-64): New
 packages.

The u-boot-rpi-0-w and u-boot-rpi variants are ARMv6 boards, and Guix's
armhf baseline is ARMv7, so those won't work with guix system. Are there
other use-cases for providing u-boot builds for these boards?

Upstream provides defconfigs for these variants:

armv6 variants (unsupported on guix's armhf, maybe other use-cases?):

  rpi_0_w
  rpi

armhf-capable variants:

  rpi_2
  rpi_3_32b
  rpi_4_32b

aarch64 variants:

  rpi_3
  rpi_3_b_plus
  rpi_4
  rpi_arm64 (supports rpi 3 and 4 variants?)


+(define-public u-boot-rpi-3
+  (make-preinstalled-u-boot-package
+   "rpi_3_32b"
+   "arm-linux-gnueabihf"
+   #:name "rpi-3"
+   #:description %u-boot-rpi-description-32-bit))

I would name this "u-boot-rpi-3-32b"


+(define-public u-boot-rpi-4
+  (make-preinstalled-u-boot-package
+   "rpi_4_32b"
+   "arm-linux-gnueabihf"
+   #:name "rpi-4"
+   #:description %u-boot-rpi-description-32-bit))

And this "u-boot-rpi-4-32b".

+(define-public u-boot-rpi-64
+  (make-preinstalled-u-boot-package
+   "rpi_arm64"
+   "aarch64-linux-gnu"
+   #:name "rpi-64"
+   #:description %u-boot-rpi-description-64-bit))

And this "u-boot-rpi-arm64".

In other words, keep names consistent with the upstream defconfig they
are based on.

I presume you didn't add the aarch64 rpi_3 and rpi_4 variants because
they are supported by rpi_arm64?


I think without addressing the rest of the patch series, adding to guix
master the following packages could make the remaining diff smaller:

  u-boot-rpi-2 (rpi_2_defconfig)
  u-boot-rpi-3-32b (rpi_3_32b_defconfig)
  u-boot-rpi-4-32b (rpi_4_32b_defconfig)
  u-boot-rpi-arm64 (rpi_arm64_defconfig)

We wouldn't have a relevent installation configuration, but at least it
would allow building them and manually copying u-boot.bin to the
firmware partition...


live well,
  vagrant

--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQRlgHNhO/zFx+LkXUXcUY/If5cWqgUCYY/+gAAKCRDcUY/If5cW
quCEAP4qWZUmOoFzSzr9IAEciGDq1GtmAkTpByfpGYp9N43UOAEA6qfQUtP/OWCl
mY66LgQssmL/BipkXW6FXbQixP3Epwk=
=Dw5b
-----END PGP SIGNATURE-----
--=-=-=--




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.
Changed bug title to '[PATCH] Install guix system on Raspberry Pi' from 'Patches to install guix system on Raspberry Pi' Request was from Stefan <stefan-guix@HIDDEN> to control <at> debbugs.gnu.org. Full text available.
Added indication that bug 48314 blocks47744,47956 Request was from Stefan <stefan-guix@HIDDEN> to control <at> debbugs.gnu.org. Full text available.
Added tag(s) patch. Request was from Stefan <stefan-guix@HIDDEN> to control <at> debbugs.gnu.org. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 31 Oct 2021 22:07:35 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Oct 31 18:07:35 2021
Received: from localhost ([127.0.0.1]:33243 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1mhIzH-0005Sf-Ok
	for submit <at> debbugs.gnu.org; Sun, 31 Oct 2021 18:07:35 -0400
Received: from smtpout2.vodafonemail.de ([145.253.239.133]:34068)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <stefan-guix@HIDDEN>) id 1mhIzF-0005SO-T5
 for 48314 <at> debbugs.gnu.org; Sun, 31 Oct 2021 18:07:34 -0400
Received: from smtp.vodafone.de (smtpa07.fra-mediabeam.com [10.2.0.38])
 by smtpout2.vodafonemail.de (Postfix) with ESMTP id C397A616E2;
 Sun, 31 Oct 2021 23:07:11 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de;
 s=vfde-smtpout-mb-15sep; t=1635718031;
 bh=gr6sMolYwftUkWc7AIKLt3y7TrXMj+TNDKOb67LKOHg=;
 h=Subject:From:In-Reply-To:Date:Cc:References:To;
 b=BHCUdqv5FxG9SYdybjiXxO5HsDiKVDpERKJ+RlNHDmnnKUtOVattmtamO1HgKdBWe
 OG6Y2mGEZMLsGdryxT2Vn3wGZWBRa4FDYXPGfttkJMu5yPCLMmOOs+PpCmGqiS97nm
 /TS/LDKO7v7CAnEjNW5vvDzqgLoT3FIpvgihahy0=
Received: from macbook-pro.kuh-wiese.my-router.de
 (dialin-145-254-041-056.pools.arcor-ip.net [145.254.41.56])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by smtp.vodafone.de (Postfix) with ESMTPSA id 4Hj9Hz0zM0zFpVS;
 Sun, 31 Oct 2021 22:07:10 +0000 (UTC)
Content-Type: multipart/mixed;
 boundary="Apple-Mail=_B617970F-0E65-4178-8B28-B9F0969B3830"
Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\))
Subject: Re: [bug#48314] Patches to install guix system on Raspberry Pi
From: Stefan <stefan-guix@HIDDEN>
In-Reply-To: <BDB9E76C-37FF-4033-81C1-9D5F0AA575F2@HIDDEN>
Date: Sun, 31 Oct 2021 23:07:09 +0100
Message-Id: <AFD31F40-6691-4B53-ACA9-7F821D139124@HIDDEN>
References: <20210619211026.5eb44073@HIDDEN>
 <897B7FF7-24C1-4B96-8441-415596267E99@HIDDEN>
 <BDB9E76C-37FF-4033-81C1-9D5F0AA575F2@HIDDEN>
To: 48314 <at> debbugs.gnu.org
X-Mailer: Apple Mail (2.3124)
X-purgate-type: clean
X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de
X-purgate: This mail is considered clean (visit http://www.eleven.de for
 further information)
X-purgate: clean
X-purgate-size: 128468
X-purgate-ID: 149169::1635718031-000039E6-967F771E/0/0
X-Debbugs-Envelope-To: 48314
Cc: Danny Milosavljevic <dannym@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>


--Apple-Mail=_B617970F-0E65-4178-8B28-B9F0969B3830
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

Hi!

I did a rebase of the patch series to avoid bit-rotting. One patch got =
obsolete meanwhile.

This series applies on GIT commit =
1a80b8909a521b91d30649a011b0257d0fadc18c.


Bye

Stefan


--Apple-Mail=_B617970F-0E65-4178-8B28-B9F0969B3830
Content-Disposition: attachment;
	filename=01-gnu-bootloader-rework-chaining
Content-Type: application/octet-stream;
	name="01-gnu-bootloader-rework-chaining"
Content-Transfer-Encoding: quoted-printable

gnu:=20bootloader:=20Rework=20chaining,=20add=20=
grub-efi-netboot-removable-bootloader.=0A=0AFrom:=20Stefan=20=
<stefan-guix@HIDDEN>=0A=0A*=20doc/guix.texi=20(Bootloader=20=
Configuration):=20Describe=20the=20new=0A=
=E2=80=98grub-efi-netboot-removable-bootloader=E2=80=99.=20=20Mention=20=
used=20sub-directories=20and=0Athat=20the=20UEFI=20Boot=20Manager=20is=20=
not=20modified.=20=20Advice=20to=20disable=20write-access=0Aover=20TFTP.=0A=
*=20gnu/bootloader.scm=20(efi-bootloader-profile):=20Allow=20a=20list=20=
of=20packages=20and=0Acollect=20everything=20directly=20in=20the=20=
profile,=20avoiding=20a=20separate=20collection=0Adirectory.=20=20=
Renamed=20the=20profile=20from=20"bootloader-profile"=20to=0A=
"efi-bootloader-profile".=0A[bootloader-collection]:=20Renamed=20to=20=
=E2=80=A6=0A[efi-bootloader-profile-hook]:=20=E2=80=A6=20this=20and=20=
removed=20unused=20modules=20and=20the=0Acreation=20of=20the=20now=20=
unneeded=20collection=20directory.=0A(efi-bootloader-chain):=20Added=20=
packages=20and=20disk-image-installer=20arguments.=0ARemoved=20handling=20=
of=20the=20collection=20directory,=20now=20only=20calling=20the=20given=0A=
installer=20procedure.=0A*=20gnu/bootloader/grub.scm=20=
(make-grub-efi-netboot-installer):=20New=20helper.=0A=
(make-grub-configuration):=20New=20helper=20based=20on=20=
(grub-configuration-file).=0AAdding=20grub=20argument,=20fixed=20=
indentation,=20removend=20code=20to=20get=20grub.=0A=
(grub-configuration-file):=20Now=20using=20(make-grub-configuration).=0A=
(grub-efi-configuration-file):=20New=20function=20using=20=
(make-grub-configuration).=0AInstead=20of=20getting=20the=20grub-efi=20=
package=20from=20the=20bootloader-configuration=0Athis=20function=20=
refers=20to=20the=20grub-efi=20package=20directly.=0A(grub-cfg):=20New=20=
variable=20to=20replace=20"/boot/grub/grub.cfg".=0A=
(install-grub-efi-netboot):=20Removed,=20the=20functionality=20got=20=
moved.=0A(make-grub-efi-netboot-installer):=20New=20helper=20function=20=
to=20return=20a=20customized=0Ainstaller=20for=20a=20certain=20=
efi-sub-directory.=20=20The=20installer=20basically=20copies=0Aa=20=
pre-installed=20efi-bootloader-profile,=20and=20adds=20needed=20symlinks=20=
for=20booting=0Aover=20network,=20or=20=E2=80=93=20on=20an=20ESP=20=E2=80=93=
=20an=20intermediate=20grub-cfg=20to=20load=20the=20final=0Agrub-cfg=20=
file.=0A(grub-bootloader):=20Now=20using=20the=20grub-cfg=20variable.=0A=
(grub-efi-bootloader):=20Now=20using=20the=20grub-cfg=20variable.=20=20=
Removed=20inheritance,=0Agiving=20complete=20set=20of=20fields.=0A=
(make-grub-efi-netboot-bootloader):=20New=20helper=20function.=0A=
(grub-efi-netboot-bootloader):=20Now=20using=20the=20helper.=0A=
(grub-efi-netboot-removable-bootloader):=20New=20bootloader=20using=20=
the=20helper.=0AIt=20uses=20the=20efi-sub-directory=20"efi/boot"=20for=20=
removable=20media.=0A*=20gnu/packages/bootloaders.scm=20=
(make-grub-efi-netboot):=20New=20function=20to=20return=0Aa=20grub-efi=20=
package=20pre-installed=20via=20grub-mknetdir,=20customized=20for=20an=0A=
efi-sub-directory=20and=20able=20to=20boot=20via=20network=20and=20local=20=
storage.=0A=0AThe=20rework=20allows=20to=20use=20an=20=
(efi-bootloader-chain)=20like=20this,=20which=20is=20able=0Ato=20boot=20=
over=20network=20or=20local=20storage,=20depending=20on=20the=20=
symlink-support=20at=0Athe=20bootloader-target:=0A=0A(operating-system=0A=
=20(bootloader=0A=20=20=20(bootloader-configuration=0A=20=20=20=20=20=
(bootloader=0A=20=20=20=20=20=20=20(efi-bootloader-chain=0A=20=20=20=20=20=
=20=20=20=20grub-efi-netboot-removable-bootloader=0A=20=20=20=20=20=20=20=
=20=20#:packages=20(list=20my-firmware-package=0A=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20my-u-boot-package)=0A=
=20=20=20=20=20=20=20=20=20#:files=20(list=20(plain-file=20"config.txt"=0A=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20"kernel=3Du-boot.bin"))=0A=20=20=20=20=20=20=
=20=20=20#:hooks=20my-special-bootloader-profile-manipulator))=0A=20=20=20=
=20=20(target=20"/booti/efi")=0A=20=20=20=20=20=E2=80=A6))=0A=20=E2=80=A6)=
=0A)=0A---=0A=20doc/guix.texi=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20|=20=20=2024=20+++-=0A=20gnu/bootloader.scm=20=20=20=20=20=20=20=20=20=
=20=20|=20=20104=20+++++++++---------=0A=20gnu/bootloader/grub.scm=20=20=20=
=20=20=20|=20=20241=20++++++++++++++++++++++++++----------------=0A=20=
gnu/packages/bootloaders.scm=20|=20=20=2090=20++++++++++++++++=0A=204=20=
files=20changed,=20308=20insertions(+),=20151=20deletions(-)=0A=0Adiff=20=
--git=20a/doc/guix.texi=20b/doc/guix.texi=0Aindex=20=
ea1973f02c..1dad33cfae=20100644=0A---=20a/doc/guix.texi=0A+++=20=
b/doc/guix.texi=0A@@=20-33853,8=20+33853,9=20@@=20The=20type=20of=20a=20=
bootloader=20configuration=20declaration.=0A=20@cindex=20BIOS,=20=
bootloader=0A=20The=20bootloader=20to=20use,=20as=20a=20=
@code{bootloader}=20object.=20=20For=20now=0A=20@code{grub-bootloader},=20=
@code{grub-efi-bootloader},=0A-@code{grub-efi-netboot-bootloader},=20=
@code{extlinux-bootloader}=20and=0A-@code{u-boot-bootloader}=20are=20=
supported.=0A+@code{grub-efi-netboot-bootloader},=0A=
+@code{grub-efi-netboot-removable-bootloader},=0A=
+@code{extlinux-bootloader}=20and=20@code{u-boot-bootloader}=20are=20=
supported.=0A=20=0A=20@cindex=20ARM,=20bootloaders=0A=20@cindex=20=
AArch64,=20bootloaders=0A@@=20-33880,9=20+33881,10=20@@=20build=20a=20=
diskless=20Guix=20system.=0A=20=0A=20The=20installation=20of=20the=20=
@code{grub-efi-netboot-bootloader}=20generates=20the=0A=20content=20of=20=
the=20TFTP=20root=20directory=20at=20@code{targets}=20(@pxref{Bootloader=0A=
-Configuration,=20@code{targets}}),=20to=20be=20served=20by=20a=20TFTP=20=
server.=20=20You=20may=0A-want=20to=20mount=20your=20TFTP=20server=20=
directories=20onto=20the=20@code{targets}=20to=0A-move=20the=20required=20=
files=20to=20the=20TFTP=20server=20automatically.=0A+Configuration,=20=
@code{targets}})=20below=20the=20sub-directory=20@file{efi/Guix},=20to=20=
be=0A+served=20by=20a=20TFTP=20server.=20=20You=20may=20want=20to=20=
mount=20your=20TFTP=20server=20directories=0A+onto=20the=20=
@code{targets}=20to=20move=20the=20required=20files=20to=20the=20TFTP=20=
server=0A+automatically=20during=20installation.=0A=20=0A=20If=20you=20=
plan=20to=20use=20an=20NFS=20root=20file=20system=20as=20well=20=
(actually=20if=20you=20mount=20the=0A=20store=20from=20an=20NFS=20=
share),=20then=20the=20TFTP=20server=20needs=20to=20serve=20the=20file=0A=
@@=20-33916,13=20+33918,23=20@@=20directory=20to=20your=20=
@code{targets}.=0A=20It=20is=20important=20to=20note=20that=20symlinks=20=
pointing=20outside=20the=20TFTP=20root=20directory=0A=20may=20need=20to=20=
be=20allowed=20in=20the=20configuration=20of=20your=20TFTP=20server.=20=20=
Further=20the=0A=20store=20link=20exposes=20the=20whole=20store=20=
through=20TFTP@.=20=20Both=20points=20need=20to=20be=0A-considered=20=
carefully=20for=20security=20aspects.=0A+considered=20carefully=20for=20=
security=20aspects.=20=20It=20is=20advised=20to=20disable=20any=20TFTP=0A=
+write=20access!=0A+=0A+Please=20note,=20that=20this=20bootloader=20will=20=
not=20modify=20the=20=E2=80=98UEFI=20Boot=20Manager=E2=80=99=20of=0A+the=20=
system.=0A=20=0A=20Beside=20the=20@code{grub-efi-netboot-bootloader},=20=
the=20already=20mentioned=20TFTP=20and=0A=20NFS=20servers,=20you=20also=20=
need=20a=20properly=20configured=20DHCP=20server=20to=20make=20the=20=
booting=0A=20over=20netboot=20possible.=20=20For=20all=20this=20we=20can=20=
currently=20only=20recommend=20you=20to=20look=0A=20for=20instructions=20=
about=20@acronym{PXE,=20Preboot=20eXecution=20Environment}.=0A=20=0A=
+@vindex=20grub-efi-netboot-removable-bootloader=0A=
+@code{grub-efi-netboot-removable-bootloader}=20is=20identical=20to=0A=
+@code{grub-efi-netboot-bootloader}=20with=20the=20exception=20that=20=
the=20sub-directory=0A+@file{efi/boot}=20will=20be=20used=20instead=20of=20=
@file{efi/Guix}=20to=20comply=20to=20the=20UEFI=0A+specification=20for=20=
removable=20media.=0A+=0A=20@item=20@code{targets}=0A=20This=20is=20a=20=
list=20of=20strings=20denoting=20the=20targets=20onto=20which=20to=20=
install=20the=0A=20bootloader.=0Adiff=20--git=20a/gnu/bootloader.scm=20=
b/gnu/bootloader.scm=0Aindex=20d1c72c0c85..cddb8daf93=20100644=0A---=20=
a/gnu/bootloader.scm=0A+++=20b/gnu/bootloader.scm=0A@@=20-261,26=20=
+261,22=20@@=20instead~%")))=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
(force=20%bootloaders))=0A=20=20=20=20=20=20=20(leave=20(G_=20"~a:=20no=20=
such=20bootloader~%")=20name)))=0A=20=0A-(define=20=
(efi-bootloader-profile=20files=20bootloader-package=20hooks)=0A-=20=20=
"Creates=20a=20profile=20with=20BOOTLOADER-PACKAGE=20and=20a=20directory=20=
collection/=20with=0A-links=20to=20additional=20FILES=20from=20the=20=
store.=20=20This=20collection=20is=20meant=20to=20be=20used=0A-by=20the=20=
bootloader=20installer.=0A+(define=20(efi-bootloader-profile=20packages=20=
files=20hooks)=0A+=20=20"Creates=20a=20profile=20from=20the=20lists=20of=20=
PACKAGES=20and=20FILES=20from=20the=20store.=0A+This=20profile=20is=20=
meant=20to=20be=20used=20by=20the=20bootloader-installer.=0A=20=0A=20=
FILES=20is=20a=20list=20of=20file=20or=20directory=20names=20from=20the=20=
store,=20which=20will=20be=0A-symlinked=20into=20the=20collection/=20=
directory.=20=20If=20a=20directory=20name=20ends=20with=20'/',=0A-then=20=
the=20directory=20content=20instead=20of=20the=20directory=20itself=20=
will=20be=20symlinked=0A-into=20the=20collection/=20directory.=0A=
+symlinked=20into=20the=20profile.=20=20If=20a=20directory=20name=20ends=20=
with=20'/',=20then=20the=0A+directory=20content=20instead=20of=20the=20=
directory=20itself=20will=20be=20symlinked=20into=20the=0A+profile.=0A=20=
=0A-FILES=20may=20contain=20file=20like=20objects=20produced=20by=20=
functions=20like=20plain-file,=0A+FILES=20may=20contain=20file=20like=20=
objects=20produced=20by=20procedures=20like=20plain-file,=0A=20=
local-file,=20etc.,=20or=20package=20contents=20produced=20with=20=
file-append.=0A=20=0A=20HOOKS=20lists=20additional=20hook=20functions=20=
to=20modify=20the=20profile."=0A-=20=20(define=20(bootloader-collection=20=
manifest)=0A+=20=20(define=20(efi-bootloader-profile-hook=20manifest)=0A=20=
=20=20=20=20(define=20build=0A-=20=20=20=20=20=20=20=20=
(with-imported-modules=20'((guix=20build=20utils)=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(ice-9=20ftw)=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(srfi=20srfi-1)=0A-=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(srfi=20srfi-26))=0A+=20=20=20=20=20=20=20=20=
(with-imported-modules=20'((guix=20build=20utils))=0A=20=20=20=20=20=20=20=
=20=20=20=20#~(begin=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
(use-modules=20((guix=20build=20utils)=0A=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:select=20(mkdir-p=20=
strip-store-file-name))=0A@@=20-304,7=20+300,7=20@@=20HOOKS=20lists=20=
additional=20hook=20functions=20to=20modify=20the=20profile."=0A=20=20=20=
=20=20=20=20=20=20=20=20=20=20(define=20(name-is-store-entry?=20name)=0A=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20"Return=20#t=20if=20NAME=20is=20=
a=20direct=20store=20entry=20and=20nothing=20inside."=0A=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(not=20(string-index=20(strip-store-file-name=20=
name)=20#\/)))=0A-=20=20=20=20=20=20=20=20=20=20=20=20(let*=20=
((collection=20(string-append=20#$output=20"/collection"))=0A+=20=20=20=20=
=20=20=20=20=20=20=20=20(let*=20((output=20#$output)=0A=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(files=20'#$files)=0A=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(directories=20(filter=20=
name-ends-with-/?=20files))=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(names-from-directories=0A@@=20-313,11=20+309,11=20@@=20=
HOOKS=20lists=20additional=20hook=20functions=20to=20modify=20the=20=
profile."=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20directories))=0A=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20(names=20(append=20=
names-from-directories=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(remove=20=
name-ends-with-/?=20files))))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(mkdir-p=20collection)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(mkdir-p=20output)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20=
(every=20file-exists?=20names)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(begin=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(for-each=20(lambda=20(name)=0A-=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(symlink-to=20name=20collection=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(symlink-to=20name=20=
output=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20=
(name-is-store-entry?=20name)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20strip-store-file-name=0A=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20basename)))=0A@@=20=
-325,57=20+321,63=20@@=20HOOKS=20lists=20additional=20hook=20functions=20=
to=20modify=20the=20profile."=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20#t)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20#f)))))=0A=20=0A-=20=20=20=20(gexp->derivation=20=
"bootloader-collection"=0A+=20=20=20=20(gexp->derivation=20=
"efi-bootloader-profile"=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20build=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20#:local-build?=20#t=0A=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:substitutable?=20#f=0A=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:properties=0A=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
`((type=20.=20profile-hook)=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20(hook=20.=20bootloader-collection))))=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(hook=20.=20efi-bootloader-profile-hook))))=0A=20=0A-=20=20(profile=20=
(content=20(packages->manifest=20(list=20bootloader-package)))=0A-=20=20=20=
=20=20=20=20=20=20=20=20(name=20"bootloader-profile")=0A-=20=20=20=20=20=20=
=20=20=20=20=20(hooks=20(append=20(list=20bootloader-collection)=20=
hooks))=0A+=20=20(profile=20(content=20(packages->manifest=20packages))=0A=
+=20=20=20=20=20=20=20=20=20=20=20(name=20"efi-bootloader-profile")=0A+=20=
=20=20=20=20=20=20=20=20=20=20(hooks=20(cons=20=
efi-bootloader-profile-hook=20hooks))=0A=20=20=20=20=20=20=20=20=20=20=20=
=20(locales?=20#f)=0A=20=20=20=20=20=20=20=20=20=20=20=20=
(allow-collisions?=20#f)=0A=20=20=20=20=20=20=20=20=20=20=20=20=
(relative-symlinks?=20#f)))=0A=20=0A-(define*=20(efi-bootloader-chain=20=
files=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20final-bootloader=0A+(define*=20=
(efi-bootloader-chain=20final-bootloader=0A=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:key=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(packages=20'())=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(files=20=
'())=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20(hooks=20'())=0A-=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
installer)=0A-=20=20"Define=20a=20bootloader=20chain=20with=20=
FINAL-BOOTLOADER=20as=20the=20final=20bootloader=20and=0A-certain=20=
directories=20and=20files=20from=20the=20store=20given=20in=20the=20list=20=
of=20FILES.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20installer=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
disk-image-installer)=0A+=20=20"Define=20a=20chain=20of=20bootloaders=20=
with=20the=20FINAL-BOOTLOADER,=20optional=20PACKAGES,=0A+and=20optional=20=
directories=20and=20files=20from=20the=20store=20given=20in=20the=20list=20=
of=20FILES.=0A=20=0A-FILES=20may=20contain=20file=20like=20objects=20=
produced=20by=20functions=20like=20plain-file,=0A-local-file,=20etc.,=20=
or=20package=20contents=20produced=20with=20file-append.=20=20They=20=
will=20be=0A-collected=20inside=20a=20directory=20collection/=20inside=20=
a=20generated=20bootloader=20profile,=0A-which=20will=20be=20passed=20to=20=
the=20INSTALLER.=0A+The=20package=20of=20the=20FINAL-BOOTLOADER=20and=20=
all=20PACKAGES=20and=20FILES=20will=20be=20placed=0A+in=20an=20=
efi-bootloader-profile,=20which=20will=20be=20passed=20to=20the=20=
INSTALLER.=0A+=0A+FILES=20may=20contain=20file=20like=20objects=20=
produced=20by=20procedures=20like=20plain-file,=0A+local-file,=20etc.,=20=
or=20package=20contents=20produced=20with=20file-append.=0A=20=0A=20If=20=
a=20directory=20name=20in=20FILES=20ends=20with=20'/',=20then=20the=20=
directory=20content=20instead=0A-of=20the=20directory=20itself=20will=20=
be=20symlinked=20into=20the=20collection/=20directory.=0A+of=20the=20=
directory=20itself=20will=20be=20symlinked=20into=20the=20=
efi-bootloader-profile.=0A=20=0A=20The=20procedures=20in=20the=20HOOKS=20=
list=20can=20be=20used=20to=20further=20modify=20the=20bootloader=0A=20=
profile.=20=20It=20is=20possible=20to=20pass=20a=20single=20function=20=
instead=20of=20a=20list.=0A=20=0A-If=20the=20INSTALLER=20argument=20is=20=
used,=20then=20this=20function=20will=20be=20called=20to=20install=0A=
-the=20bootloader.=20=20Otherwise=20the=20installer=20of=20the=20=
FINAL-BOOTLOADER=20will=20be=20called."=0A-=20=20(let*=20=
((final-installer=20(or=20installer=0A-=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(bootloader-installer=20final-bootloader)))=0A-=20=20=20=20=20=20=20=20=20=
(profile=20(efi-bootloader-profile=20files=0A-=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(bootloader-package=20final-bootloader)=0A-=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20(list?=20hooks)=0A-=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20hooks=0A-=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(list=20=
hooks)))))=0A-=20=20=20=20(bootloader=0A-=20=20=20=20=20(inherit=20=
final-bootloader)=0A-=20=20=20=20=20(package=20profile)=0A-=20=20=20=20=20=
(installer=0A-=20=20=20=20=20=20#~(lambda=20(bootloader=20target=20=
mount-point)=0A-=20=20=20=20=20=20=20=20=20=20(#$final-installer=20=
bootloader=20target=20mount-point)=0A-=20=20=20=20=20=20=20=20=20=20=
(copy-recursively=0A-=20=20=20=20=20=20=20=20=20=20=20(string-append=20=
bootloader=20"/collection")=0A-=20=20=20=20=20=20=20=20=20=20=20=
(string-append=20mount-point=20target)=0A-=20=20=20=20=20=20=20=20=20=20=20=
#:follow-symlinks?=20#t=0A-=20=20=20=20=20=20=20=20=20=20=20#:log=20=
(%make-void-port=20"w")))))))=0A+If=20the=20INSTALLER=20argument=20is=20=
used,=20then=20this=20gexp=20procedure=20will=20be=20called=20to=0A=
+install=20the=20efi-bootloader-profile.=20=20Otherwise=20the=20=
installer=20of=20the=0A+FINAL-BOOTLOADER=20will=20be=20called.=0A+=0A+If=20=
the=20DISK-IMAGE-INSTALLER=20is=20used,=20then=20this=20gexp=20procedure=20=
will=20be=20called=0A+to=20install=20the=20efi-bootloader-profile=20into=20=
a=20disk-image.=20=20Otherwise=20the=0A+disk-image-installer=20of=20the=20=
FINAL-BOOTLOADER=20will=20be=20called."=0A+=20=20(bootloader=0A+=20=20=20=
=20(inherit=20final-bootloader)=0A+=20=20=20=20(name=20=
"efi-bootloader-chain")=0A+=20=20=20=20(package=0A+=20=20=20=20=20=
(efi-bootloader-profile=20(cons=20(bootloader-package=20=
final-bootloader)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20packages)=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20files=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(if=20(list?=20hooks)=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
hooks=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(list=20hooks))))=0A+=20=20=20=20=
(installer=0A+=20=20=20=20=20(or=20installer=0A+=20=20=20=20=20=20=20=20=20=
(bootloader-installer=20final-bootloader)))=0A+=20=20=20=20=
(disk-image-installer=0A+=20=20=20=20=20(or=20disk-image-installer=0A+=20=
=20=20=20=20=20=20=20=20(bootloader-disk-image-installer=20=
final-bootloader)))))=0Adiff=20--git=20a/gnu/bootloader/grub.scm=20=
b/gnu/bootloader/grub.scm=0Aindex=20d8e888ff40..2235363c6d=20100644=0A=
---=20a/gnu/bootloader/grub.scm=0A+++=20b/gnu/bootloader/grub.scm=0A@@=20=
-50,11=20+50,12=20@@=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
grub-theme-color-highlight=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
grub-theme-gfxmode=0A=20=0A-=20=20=20=20=20=20=20=20=20=20=20=20=
install-grub-efi-netboot=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
make-grub-efi-netboot-installer=0A=20=0A=20=20=20=20=20=20=20=20=20=20=20=
=20=20grub-bootloader=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
grub-efi-bootloader=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
grub-efi-netboot-bootloader=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
grub-efi-netboot-removable-bootloader=0A=20=20=20=20=20=20=20=20=20=20=20=
=20=20grub-mkrescue-bootloader=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
grub-minimal-bootloader=0A=20=0A@@=20-346,7=20+347,7=20@@=20code."=0A=20=20=
=20=20=20=20=20=20=20((or=20#f=20(?=20string?))=0A=20=20=20=20=20=20=20=20=
=20=20#~(format=20#f=20"search=20--file=20--set=20~a"=20#$file)))))=0A=20=
=0A-(define*=20(grub-configuration-file=20config=20entries=0A+(define*=20=
(make-grub-configuration=20grub=20config=20entries=0A=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20#:key=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(locale=20#f)=0A=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(system=20(%current-system))=0A@@=20-376,27=20=
+377,27=20@@=20when=20booting=20a=20root=20file=20system=20on=20a=20=
Btrfs=20subvolume."=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(initrd=20(normalize-file=20(menu-entry-initrd=20entry)=0A=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20device-mount-point=0A=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20store-directory-prefix)))=0A-=20=20=20=20=20=20=
=20=20=20;;=20Here=20DEVICE=20is=20the=20store=20and=20=
DEVICE-MOUNT-POINT=20is=20its=20mount=20point.=0A-=20=20=20=20=20=20=20=20=
=20;;=20Use=20the=20right=20file=20names=20for=20LINUX=20and=20INITRD=20=
in=20case=0A-=20=20=20=20=20=20=20=20=20;;=20DEVICE-MOUNT-POINT=20is=20=
not=20"/",=20meaning=20that=20the=20store=20is=20on=20a=0A-=20=20=20=20=20=
=20=20=20=20;;=20separate=20partition.=0A-=0A-=20=20=20=20=20=20=20=20=20=
;;=20When=20BTRFS-SUBVOLUME-FILE-NAME=20is=20defined,=20prepend=20it=20=
the=20linux=20and=0A-=20=20=20=20=20=20=20=20=20;;=20initrd=20paths,=20=
to=20allow=20booting=20from=20a=20Btrfs=20subvolume.=0A-=20=20=20=20=20=20=
=20=20=20#~(format=20port=20"menuentry=20~s=20{=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20;;=20Here=20DEVICE=20is=20the=20store=20and=20=
DEVICE-MOUNT-POINT=20is=20its=20mount=20point.=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20;;=20Use=20the=20right=20file=20names=20for=20LINUX=20and=20=
INITRD=20in=20case=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
DEVICE-MOUNT-POINT=20is=20not=20"/",=20meaning=20that=20the=20store=20is=20=
on=20a=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20separate=20partition.=0A=
+=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20When=20=
BTRFS-SUBVOLUME-FILE-NAME=20is=20defined,=20prepend=20it=20the=20linux=20=
and=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20initrd=20paths,=20to=20=
allow=20booting=20from=20a=20Btrfs=20subvolume.=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20#~(format=20port=20"menuentry=20~s=20{=0A=20=20=20~a=0A=20=20=
=20linux=20~a=20~a=0A=20=20=20initrd=20~a=0A=20}~%"=0A-=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20#$label=0A-=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20#$(grub-root-search=20device=20linux)=0A=
-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#$linux=20=
(string-join=20(list=20#$@arguments))=0A-=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20#$initrd))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20#$label=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20#$(grub-root-search=20device=20linux)=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
#$linux=20(string-join=20(list=20#$@arguments))=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20#$initrd))=0A=20=20=20=20=20=20=
=20=20=20=20=20(let=20((kernel=20(menu-entry-multiboot-kernel=20entry))=0A=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(arguments=20=
(menu-entry-multiboot-arguments=20entry))=0A=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(modules=20(menu-entry-multiboot-modules=20entry))=0A=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(root-index=201))=20=20=
=20=20=20=20=20=20=20=20=20=20;=20XXX=20EFI=20will=20need=20root-index=20=
2=0A-=20=20=20=20=20=20=20=20#~(format=20port=20"=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20#~(format=20port=20"=0A=20menuentry=20~s=20{=0A=20=20=20=
multiboot=20~a=20root=3Ddevice:hd0s~a~a~a=0A=20}~%"=0A@@=20-434,9=20=
+435,7=20@@=20menuentry=20~s=20{=0A=20=20=20(define=20locale-config=0A=20=
=20=20=20=20(let*=20((entry=20(first=20all-entries))=0A=20=20=20=20=20=20=
=20=20=20=20=20=20(device=20(menu-entry-device=20entry))=0A-=20=20=20=20=20=
=20=20=20=20=20=20(mount-point=20(menu-entry-device-mount-point=20=
entry))=0A-=20=20=20=20=20=20=20=20=20=20=20(bootloader=20=
(bootloader-configuration-bootloader=20config))=0A-=20=20=20=20=20=20=20=20=
=20=20=20(grub=20(bootloader-package=20bootloader)))=0A+=20=20=20=20=20=20=
=20=20=20=20=20(mount-point=20(menu-entry-device-mount-point=20entry)))=0A=
=20=20=20=20=20=20=20#~(let=20((locale=20#$(and=20locale=0A=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(locale-definition-source=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(locale-name->definition=20=
locale))))=0A@@=20-462,8=20+461,6=20@@=20set=20lang=3D~a~%"=0A=20=0A=20=20=
=20(define=20keyboard-layout-config=0A=20=20=20=20=20(let*=20((layout=20=
(bootloader-configuration-keyboard-layout=20config))=0A-=20=20=20=20=20=20=
=20=20=20=20=20(grub=20=20=20(bootloader-package=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=
(bootloader-configuration-bootloader=20config)))=0A=20=20=20=20=20=20=20=20=
=20=20=20=20(keymap*=20(and=20layout=0A=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(keyboard-layout-file=20layout=20=
#:grub=20grub)))=0A=20=20=20=20=20=20=20=20=20=20=20=20(entry=20(first=20=
all-entries))=0A@@=20-514,6=20+511,16=20@@=20fi~%"))))=0A=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20#:options=20'(#:local-build?=20#t=0A=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20#:substitutable?=20#f)))=0A=20=0A+(define=20=
(grub-configuration-file=20config=20.=20args)=0A+=20=20(let*=20=
((bootloader=20(bootloader-configuration-bootloader=20config))=0A+=20=20=20=
=20=20=20=20=20=20(grub=20(bootloader-package=20bootloader)))=0A+=20=20=20=
=20(apply=20make-grub-configuration=20grub=20config=20args)))=0A+=0A=
+(define=20(grub-efi-configuration-file=20.=20args)=0A+=20=20(apply=20=
make-grub-configuration=20grub-efi=20args))=0A+=0A+(define=20grub-cfg=20=
"/boot/grub/grub.cfg")=0A+=0A=20=0C=0A=20=0A=20;;;=0A@@=20-607,42=20=
+614,31=20@@=20fi~%"))))=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20"--bootloader-id=3DGuix"=0A=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20"--efi-directory"=20=
target-esp)))))=0A=20=0A-(define=20(install-grub-efi-netboot=20subdir)=0A=
-=20=20"Define=20a=20grub-efi-netboot=20bootloader=20installer=20for=20=
installation=20in=20SUBDIR,=0A-which=20is=20usually=20efi/Guix=20or=20=
efi/boot."=0A-=20=20(let*=20((system=20(string-split=20=
(nix-system->gnu-triplet=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(or=20=
(%current-target-system)=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(%current-system)))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20#\-))=0A-=20=20=20=20=20=20=20=20=
=20(arch=20(first=20system))=0A-=20=20=20=20=20=20=20=20=20=
(boot-efi-link=20(match=20system=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20These=20are=20the=20=
supportend=20systems=20and=20the=20names=0A-=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20defined=20by=20the=20=
UEFI=20standard=20for=20removable=20media.=0A-=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(("i686"=20_=20...)=20=
=20=20=20=20=20=20=20"/bootia32.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(("x86_64"=20_=20...)=20=20=20=
=20=20=20"/bootx64.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(("arm"=20_=20...)=20=20=20=20=20=20=20=20=
=20"/bootarm.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(("aarch64"=20_=20...)=20=20=20=20=20=
"/bootaa64.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(("riscv"=20_=20...)=20=20=20=20=20=20=20=
"/bootriscv32.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(("riscv64"=20_=20...)=20=20=20=20=20=
"/bootriscv64.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20;;=20Other=20systems=20are=20not=20supported,=20=
although=20defined.=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20;;=20(("riscv128"=20_=20...)=20=
"/bootriscv128.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20;;=20(("ia64"=20_=20...)=20=20=20=20=20=
"/bootia64.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20((_=20...)=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20#f)))=0A-=20=20=20=20=20=20=20=20=20(core-efi=20(string-append=0A-=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20This=20is=20=
the=20arch=20dependent=20file=20name=20of=20GRUB,=20e.g.=0A-=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20i368-efi/core.efi=20or=20=
arm64-efi/core.efi.=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(match=20arch=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20("i686"=20=20=20=20"i386")=0A-=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20("aarch64"=20"arm64")=0A-=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20("riscv"=20=20=20=
"riscv32")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20(_=20=20=20=20=20=20=20=20=20arch))=0A-=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20"-efi/core.efi")))=0A-=20=20=20=20=
(with-imported-modules=0A-=20=20=20=20=20'((guix=20build=20union))=0A-=20=
=20=20=20=20#~(lambda=20(bootloader=20target=20mount-point)=0A-=20=20=20=20=
=20=20=20=20=20"Install=20the=20BOOTLOADER,=20which=20must=20be=20the=20=
package=20grub,=20as=20e.g.=0A-bootx64.efi=20or=20bootaa64.efi=20into=20=
SUBDIR,=20which=20is=20usually=20efi/Guix=20or=20efi/boot,=0A-below=20=
the=20directory=20TARGET=20for=20the=20system=20whose=20root=20is=20=
mounted=20at=20MOUNT-POINT.=0A+(define*=20=
(make-grub-efi-netboot-installer=20grub-efi=20grub-cfg=20subdir)=0A+=20=20=
"Make=20a=20bootloader-installer=20for=20a=20grub-efi-netboot=20=
bootloader,=20which=20expects=0A+its=20files=20in=20SUBDIR=20and=20its=20=
configuration=20file=20in=20GRUB-CFG.=0A+=0A+As=20a=20grub-efi-netboot=20=
package=20is=20already=20preinstalled=20by=20'grub-mknetdir',=20the=0A=
+installer=20basically=20copies=20all=20files=20from=20the=20=
bootloader-package=20(or=20profile)=0A+into=20the=20bootloader-target=20=
directory.=0A+=0A+Additionally=20for=20network=20booting=20over=20TFTP,=20=
two=20relative=20symlinks=20to=20the=20store=0A+and=20to=20the=20=
GRUB-CFG=20file=20are=20necessary.=20=20Due=20to=20this=20a=20TFTP=20=
root=20directory=20must=0A+not=20be=20located=20on=20a=20FAT=20=
file-system.=0A+=0A+If=20the=20bootloader-target=20does=20not=20support=20=
symlinks,=20then=20it=20is=20assumed=20to=20be=20a=0A+kind=20of=20EFI=20=
System=20Partition=20(ESP).=20=20In=20this=20case=20an=20intermediate=20=
configuration=0A+file=20is=20created=20with=20the=20help=20of=20GRUB-EFI=20=
to=20load=20the=20GRUB-CFG.=0A+=0A+The=20installer=20is=20usable=20for=20=
any=20efi-bootloader-chain,=20which=20prepares=20the=0A=
+bootloader-profile=20in=20a=20way=20ready=20for=20copying.=0A+=0A+The=20=
installer=20does=20not=20manipulate=20the=20system's=20'UEFI=20Boot=20=
Manager'."=0A+=20=20(with-imported-modules=20'((guix=20build=20union))=0A=
+=20=20=20=20#~(lambda=20(bootloader=20target=20mount-point)=0A+=20=20=20=
=20=20=20=20=20"Copy=20the=20BOOTLOADER,=20which=20must=20be=20a=20=
preinstalled=20grub-efi-netboot=0A+package=20with=20a=20SUBDIR=20like=20=
efi/boot=20or=20efi/Guix,=20below=20the=20directory=0A+TARGET=20for=20=
the=20system=20whose=20root=20is=20mounted=20at=20MOUNT-POINT.=0A=20=0A=20=
MOUNT-POINT=20is=20the=20last=20argument=20in=20'guix=20system=20init=20=
/etc/config.scm=20mnt/point'=0A=20or=20'/'=20for=20other=20'guix=20=
system'=20commands.=0A@@=20-652,17=20+648,18=20@@=20=
bootloader-configuration=20in:=0A=20=0A=20(operating-system=0A=20=20=
(bootloader=20(bootloader-configuration=0A-=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(targets=20'(\"/boot\"))=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(targets=20'(\"/boot/efi\"))=0A=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=E2=80=A6))=0A=20=20=E2=80=A6)=0A=20=0A=20TARGET=20is=20=
required=20to=20be=20an=20absolute=20directory=20name,=20usually=20=
mounted=20via=20NFS,=0A=20and=20finally=20needs=20to=20be=20provided=20=
by=20a=20TFTP=20server=20as=20the=20TFTP=20root=20directory.=0A=20=0A=
+Usually=20the=20installer=20will=20be=20used=20to=20prepare=20network=20=
booting=20over=20TFTP.=20=20Then=0A=20GRUB=20will=20load=20=
tftp://server/SUBDIR/grub.cfg=20and=20this=20file=20will=20instruct=20it=20=
to=0A=20load=20more=20files=20from=20the=20store=20like=20=
tftp://server/gnu/store/=E2=80=A6-linux=E2=80=A6/Image.=0A=20=0A-To=20=
make=20this=20possible=20two=20symlinks=20will=20be=20created.=20The=20=
first=20symlink=20points=0A+To=20make=20this=20possible=20two=20symlinks=20=
will=20be=20created.=20=20The=20first=20symlink=20points=0A=20relatively=20=
form=20MOUNT-POINT/TARGET/SUBDIR/grub.cfg=20to=0A=20=
MOUNT-POINT/boot/grub/grub.cfg,=20and=20the=20second=20symlink=20points=20=
relatively=20from=0A=20MOUNT-POINT/TARGET/%store-prefix=20to=20=
MOUNT-POINT/%store-prefix.=0A@@=20-672,34=20+669,78=20@@=20paths=20on=20=
the=20TFTP=20server=20side=20are=20unknown.=0A=20=0A=20It=20is=20also=20=
important=20to=20note=20that=20both=20symlinks=20will=20point=20outside=20=
the=20TFTP=20root=0A=20directory=20and=20that=20the=20=
TARGET/%store-prefix=20symlink=20makes=20the=20whole=20store=0A=
-accessible=20via=20TFTP.=20Possibly=20the=20TFTP=20server=20must=20be=20=
configured=0A-to=20allow=20accesses=20outside=20its=20TFTP=20root=20=
directory.=20This=20may=20need=20to=20be=0A-considered=20for=20security=20=
aspects."=0A-=20=20=20=20=20=20=20=20=20(use-modules=20((guix=20build=20=
union)=20#:select=20(symlink-relative)))=0A-=20=20=20=20=20=20=20=20=20=
(let*=20((net-dir=20(string-append=20mount-point=20target=20"/"))=0A-=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(sub-dir=20(string-append=20=
net-dir=20#$subdir=20"/"))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(store=20(string-append=20mount-point=20(%store-prefix)))=0A-=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20(store-link=20(string-append=20=
net-dir=20(%store-prefix)))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20(grub-cfg=20(string-append=20mount-point=20"/boot/grub/grub.cfg"))=0A=
-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(grub-cfg-link=20=
(string-append=20sub-dir=20(basename=20grub-cfg)))=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(boot-efi-link=20(string-append=20sub-dir=20=
#$boot-efi-link)))=0A-=20=20=20=20=20=20=20=20=20=20=20;;=20Prepare=20=
the=20symlink=20to=20the=20store.=0A-=20=20=20=20=20=20=20=20=20=20=20=
(mkdir-p=20(dirname=20store-link))=0A-=20=20=20=20=20=20=20=20=20=20=20=
(false-if-exception=20(delete-file=20store-link))=0A-=20=20=20=20=20=20=20=
=20=20=20=20(symlink-relative=20store=20store-link)=0A-=20=20=20=20=20=20=
=20=20=20=20=20;;=20Prepare=20the=20symlink=20to=20the=20grub.cfg,=20=
which=20points=20into=20the=20store.=0A-=20=20=20=20=20=20=20=20=20=20=20=
(mkdir-p=20(dirname=20grub-cfg-link))=0A-=20=20=20=20=20=20=20=20=20=20=20=
(false-if-exception=20(delete-file=20grub-cfg-link))=0A-=20=20=20=20=20=20=
=20=20=20=20=20(symlink-relative=20grub-cfg=20grub-cfg-link)=0A-=20=20=20=
=20=20=20=20=20=20=20=20;;=20Install=20GRUB,=20which=20refers=20to=20the=20=
grub.cfg,=20with=20support=20for=0A-=20=20=20=20=20=20=20=20=20=20=20;;=20=
encrypted=20partitions,=0A-=20=20=20=20=20=20=20=20=20=20=20(setenv=20=
"GRUB_ENABLE_CRYPTODISK"=20"y")=0A-=20=20=20=20=20=20=20=20=20=20=20=
(invoke/quiet=20(string-append=20bootloader=20"/bin/grub-mknetdir")=0A-=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(string-append=20"--net-directory=3D"=20net-dir)=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(string-append=20=
"--subdir=3D"=20#$subdir))=0A-=20=20=20=20=20=20=20=20=20=20=20;;=20=
Prepare=20the=20bootloader=20symlink,=20which=20points=20to=20core.efi=20=
of=20GRUB.=0A-=20=20=20=20=20=20=20=20=20=20=20(false-if-exception=20=
(delete-file=20boot-efi-link))=0A-=20=20=20=20=20=20=20=20=20=20=20=
(symlink=20#$core-efi=20boot-efi-link))))))=0A+accessible=20via=20TFTP.=20=
=20Possibly=20the=20TFTP=20server=20must=20be=20configured=20to=20allow=0A=
+accesses=20outside=20its=20TFTP=20root=20directory.=20=20This=20all=20=
may=20need=20to=20be=20considered=0A+for=20security=20aspects.=20=20It=20=
is=20advised=20to=20disable=20any=20TFTP=20write=20access!=0A+=0A+The=20=
installer=20can=20also=20be=20used=20to=20prepare=20booting=20from=20=
local=20storages,=20if=20the=0A+underlying=20file-system,=20like=20FAT=20=
on=20an=20EFI=20System=20Partition=20(ESP),=20does=20not=0A+support=20=
symlinks.=20=20In=20this=20case=20the=20=
MOUNT-POINT/TARGET/SUBDIR/grub.cfg=20will=20be=0A+created=20with=20the=20=
help=20of=20GRUB-EFI=20to=20load=20the=20/boot/grub/grub.cfg=20file.=20=20=
A=0A+symlink=20to=20the=20store=20is=20not=20needed=20in=20this=20case."=0A=
+=20=20=20=20=20=20=20=20;;=20In=20context=20of=20a=20disk=20image=20=
creation=20TARGET=20will=20be=20#f=20and=20an=0A+=20=20=20=20=20=20=20=20=
;;=20installer=20is=20expected=20to=20do=20necessary=20installations=20=
on=20MOUNT-POINT,=0A+=20=20=20=20=20=20=20=20;;=20which=20will=20become=20=
the=20root=20file=20system.=0A+=20=20=20=20=20=20=20=20;;=20If=20TARGET=20=
is=20#f,=20this=20installer=20has=20nothing=20to=20do,=20as=20it=20only=20=
cares=0A+=20=20=20=20=20=20=20=20;;=20about=20the=20EFI=20System=20=
Partition=20(ESP).=0A+=20=20=20=20=20=20=20=20(when=20target=0A+=20=20=20=
=20=20=20=20=20=20=20(use-modules=20((guix=20build=20union)=20#:select=20=
(symlink-relative))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20(ice-9=20popen)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(ice-9=20rdelim))=0A+=20=20=20=20=20=20=20=
=20=20=20(let*=20((mount-point/target=20(string-append=20mount-point=20=
target=20"/"))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
When=20installing=20Guix,=20it=20is=20common=20to=20mount=20TARGET=20=
below=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
MOUNT-POINT=20rather=20than=20the=20root=20directory.=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(bootloader-target=20(if=20=
(file-exists?=20mount-point/target)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20mount-point/target=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20target))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(store=20=
(string-append=20mount-point=20(%store-prefix)))=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20(store-link=20(string-append=20=
bootloader-target=20(%store-prefix)))=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20(grub-cfg=20(string-append=20mount-point=20=
#$grub-cfg))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(grub-cfg-link=20(string-append=20bootloader-target=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#$subdir=20"/"=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(basename=20=
grub-cfg))))=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20Copy=20the=20=
bootloader=20into=20the=20bootloader-target=20directory.=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20;;=20Should=20we=20beforehand=20recursively=20=
delete=20any=20existing=20file?=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
(copy-recursively=20bootloader=20bootloader-target=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
#:follow-symlinks?=20#t=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:log=20(%make-void-port=20=
"w"))=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20For=20TFTP=20we=20need=20=
to=20install=20additional=20relative=20symlinks.=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20;;=20If=20we=20install=20on=20an=20EFI=20System=20=
Partition=20(ESP)=20or=20some=20other=20FAT=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20;;=20file-system,=20then=20symlinks=20cannot=20be=20created=20=
and=20are=20not=20needed.=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
Therefore=20we=20ignore=20exceptions=20when=20trying.=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20;;=20Prepare=20the=20symlink=20to=20the=20grub.cfg.=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20(mkdir-p=20(dirname=20=
grub-cfg-link))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
(false-if-exception=20(delete-file=20grub-cfg-link))=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20(if=20(unspecified?=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(false-if-exception=20(symlink-relative=20grub-cfg=20=
grub-cfg-link)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
Symlinks=20are=20supported.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(begin=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20Prepare=20=
the=20symlink=20to=20the=20store.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(mkdir-p=20(dirname=20store-link))=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(false-if-exception=20(delete-file=20=
store-link))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(symlink-relative=20store=20store-link))=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20;;=20Creating=20symlinks=20does=20not=20seem=20to=20be=20=
supported.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20Probably=20=
an=20ESP=20is=20used.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
Instead=20we=20can=20script=20to=20search=20and=20load=20the=20actual=20=
grub.cfg.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20(let*=20((probe=20=
#$(file-append=20grub-efi=20"/sbin/grub-probe"))=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(port=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(open-pipe*=20OPEN_READ=20=
probe=20"--target=3Dfs_uuid"=20grub-cfg))=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(search-root=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(match=20(read-line=20port)=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20((?=20eof-object?)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20;;=20There=20is=20no=20UUID=20=
available.=20As=20a=20fallback=20search=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20everywhere=20for=20=
the=20grub.cfg.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(string-append=20"search=20--file=20--set=20"=20=
#$grub-cfg))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20(fs-uuid=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20;;=20The=20UUID=20to=20load=20the=20=
grub.cfg=20from=20is=20known.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20(string-append=20"search=20=
--fs-uuid=20--set=20"=20fs-uuid))))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(load-grub-cfg=20(string-append=20"configfile=20=
"=20#$grub-cfg)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(close-pipe=20port)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(with-output-to-file=20grub-cfg-link=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(lambda=20()=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(display=20(string-join=20(list=20search-root=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
load-grub-cfg)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
"\n")))))))))))=0A=20=0A=20=0C=0A=20=0A@@=20-717,7=20+758,7=20@@=20=
considered=20for=20security=20aspects."=0A=20=20=20=20(package=20grub)=0A=
=20=20=20=20(installer=20install-grub)=0A=20=20=20=20=
(disk-image-installer=20install-grub-disk-image)=0A-=20=20=20=
(configuration-file=20"/boot/grub/grub.cfg")=0A+=20=20=20=
(configuration-file=20grub-cfg)=0A=20=20=20=20=
(configuration-file-generator=20grub-configuration-file)))=0A=20=0A=20=
(define=20grub-minimal-bootloader=0A@@=20-727,17=20+768,29=20@@=20=
considered=20for=20security=20aspects."=0A=20=0A=20(define=20=
grub-efi-bootloader=0A=20=20=20(bootloader=0A-=20=20=20(inherit=20=
grub-bootloader)=0A+=20=20=20(name=20'grub-efi)=0A+=20=20=20(package=20=
grub-efi)=0A=20=20=20=20(installer=20install-grub-efi)=0A=20=20=20=20=
(disk-image-installer=20#f)=0A-=20=20=20(name=20'grub-efi)=0A-=20=20=20=
(package=20grub-efi)))=0A+=20=20=20(configuration-file=20grub-cfg)=0A+=20=
=20=20(configuration-file-generator=20grub-configuration-file)))=0A=20=0A=
-(define=20grub-efi-netboot-bootloader=0A+(define=20=
(make-grub-efi-netboot-bootloader=20name=20subdir)=0A=20=20=20=
(bootloader=0A-=20=20=20(inherit=20grub-efi-bootloader)=0A-=20=20=20=
(name=20'grub-efi-netboot-bootloader)=0A-=20=20=20(installer=20=
(install-grub-efi-netboot=20"efi/Guix"))))=0A+=20=20=20(name=20name)=0A+=20=
=20=20(package=20(make-grub-efi-netboot=20(symbol->string=20name)=20=
subdir))=0A+=20=20=20(installer=20(make-grub-efi-netboot-installer=20=
grub-efi=20grub-cfg=20subdir))=0A+=20=20=20(disk-image-installer=20#f)=0A=
+=20=20=20(configuration-file=20grub-cfg)=0A+=20=20=20=
(configuration-file-generator=20grub-efi-configuration-file)))=0A+=0A=
+(define=20grub-efi-netboot-bootloader=0A+=20=20=
(make-grub-efi-netboot-bootloader=20'grub-efi-netboot-bootloader=0A+=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20"efi/Guix"))=0A+=0A+(define=20=
grub-efi-netboot-removable-bootloader=0A+=20=20=
(make-grub-efi-netboot-bootloader=20=
'grub-efi-netboot-removable-bootloader=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
"efi/boot"))=0A=20=0A=20(define=20grub-mkrescue-bootloader=0A=20=20=20=
(bootloader=0Adiff=20--git=20a/gnu/packages/bootloaders.scm=20=
b/gnu/packages/bootloaders.scm=0Aindex=20706ddf0207..601912011b=20100644=0A=
---=20a/gnu/packages/bootloaders.scm=0A+++=20=
b/gnu/packages/bootloaders.scm=0A@@=20-15,6=20+15,7=20@@=0A=20;;;=20=
Copyright=20=C2=A9=202020,=202021=20Pierre=20Langlois=20=
<pierre.langlois@HIDDEN>=0A=20;;;=20Copyright=20=C2=A9=202021=20Vincent=20=
Legoll=20<vincent.legoll@HIDDEN>=0A=20;;;=20Copyright=20=C2=A9=202021=20=
Brice=20Waegeneire=20<brice@HIDDEN>=0A+;;;=20Copyright=20=C2=A9=20=
2021=20Stefan=20<stefan-guix@HIDDEN>=0A=20;;;=0A=20;;;=20This=20=
file=20is=20part=20of=20GNU=20Guix.=0A=20;;;=0A@@=20-66,13=20+67,17=20@@=0A=
=20=20=20#:use-module=20(gnu=20packages=20virtualization)=0A=20=20=20=
#:use-module=20(gnu=20packages=20xorg)=0A=20=20=20#:use-module=20(guix=20=
build-system=20gnu)=0A+=20=20#:use-module=20(guix=20build-system=20=
trivial)=0A=20=20=20#:use-module=20(guix=20download)=0A+=20=20=
#:use-module=20(guix=20gexp)=0A=20=20=20#:use-module=20(guix=20=
git-download)=0A=20=20=20#:use-module=20((guix=20licenses)=20#:prefix=20=
license:)=0A=20=20=20#:use-module=20(guix=20packages)=0A=20=20=20=
#:use-module=20(guix=20utils)=0A=20=20=20#:use-module=20(srfi=20srfi-1)=0A=
=20=20=20#:use-module=20(srfi=20srfi-26)=0A+=20=20#:use-module=20(ice-9=20=
match)=0A+=20=20#:use-module=20(ice-9=20optargs)=0A=20=20=20#:use-module=20=
(ice-9=20regex))=0A=20=0A=20(define=20unifont=0A@@=20-366,6=20+371,91=20=
@@=20menu=20to=20select=20one=20of=20the=20installed=20operating=20=
systems.")=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(scandir=20input-dir))=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20#t)))))))))=0A=20=0A+(define-public=20(make-grub-efi-netboot=20=
name=20subdir)=0A+=20=20"Make=20a=20grub-efi-netboot=20package=20named=20=
NAME,=20which=20will=20be=20able=20to=20boot=20over=0A+network=20via=20=
TFTP=20by=20accessing=20its=20files=20in=20the=20SUBDIR=20of=20a=20TFTP=20=
root=20directory.=0A+This=20package=20is=20also=20able=20to=20boot=20=
from=20local=20storage=20devices.=0A+=0A+A=20bootloader-installer=20=
basically=20needs=20to=20copy=20the=20package=20content=20into=20the=0A=
+bootloader-target=20directory,=20which=20will=20usually=20be=20the=20=
TFTP=20root,=20as=0A+'grub-mknetdir'=20will=20be=20invoked=20already=20=
during=20the=20package=20creation.=0A+=0A+Alternatively=20the=20=
bootloader-target=20directory=20can=20be=20a=20mounted=20EFI=20System=0A=
+Partition=20(ESP),=20or=20a=20similar=20partition=20with=20a=20FAT=20=
file=20system,=20for=20booting=0A+from=20local=20storage=20devices.=0A+=0A=
+The=20name=20of=20the=20GRUB=20EFI=20binary=20will=20conform=20to=20the=20=
UEFI=20specification=20for=0A+removable=20media.=20=20Depending=20on=20=
the=20system=20it=20will=20be=20e.g.=20bootx64.efi=20or=0A+bootaa64.efi=20=
below=20SUBDIR.=0A+=0A+The=20SUBDIR=20argument=20needs=20to=20be=20set=20=
to=20\"efi/boot\"=20to=20create=20a=20package=20which=0A+conforms=20to=20=
the=20UEFI=20specification=20for=20removable=20media.=0A+=0A+The=20=
SUBDIR=20argument=20defaults=20to=20\"efi/Guix\",=20as=20it=20is=20also=20=
the=20case=20for=0A+'grub-efi-bootloader'."=0A+=20=20(package=0A+=20=20=20=
=20(name=20name)=0A+=20=20=20=20(version=20(package-version=20grub-efi))=0A=
+=20=20=20=20;;=20Source=20is=20not=20needed,=20but=20it=20cannot=20be=20=
omitted.=0A+=20=20=20=20(source=20#f)=0A+=20=20=20=20(build-system=20=
trivial-build-system)=0A+=20=20=20=20(arguments=0A+=20=20=20=20=20(let*=20=
((system=20(string-split=20(nix-system->gnu-triplet=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(or=20(%current-target-system)=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(%current-system)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#\-))=0A+=20=20=
=20=20=20=20=20=20=20=20=20=20(arch=20(first=20system))=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20(boot-efi=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
(match=20system=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
These=20are=20the=20supportend=20systems=20and=20the=20names=20defined=20=
by=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20the=20UEFI=20=
standard=20for=20removable=20media.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(("i686"=20_=20...)=20=20=20=20=20=20=20=20"/bootia32.efi")=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(("x86_64"=20_=20...)=20=20=20=20=
=20=20"/bootx64.efi")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(("arm"=20_=20...)=20=20=20=20=20=20=20=20=20"/bootarm.efi")=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20(("aarch64"=20_=20...)=20=20=20=20=20=
"/bootaa64.efi")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(("riscv"=20_=20...)=20=20=20=20=20=20=20"/bootriscv32.efi")=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20(("riscv64"=20_=20...)=20=20=20=20=20=
"/bootriscv64.efi")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
Other=20systems=20are=20not=20supported,=20although=20defined.=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20;;=20(("riscv128"=20_=20...)=20=
"/bootriscv128.efi")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
(("ia64"=20_=20...)=20=20=20=20=20"/bootia64.efi")=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20((_=20...)=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20#f)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20(core-efi=20=
(string-append=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20;;=20This=20is=20the=20arch=20dependent=20file=20name=20of=20=
GRUB,=20e.g.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20;;=20i368-efi/core.efi=20or=20arm64-efi/core.efi.=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(match=20=
arch=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20("i686"=20=20=20=20"i386")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20("aarch64"=20"arm64")=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
("riscv"=20=20=20"riscv32")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(_=20=20=20=20=20=20=20=20=20arch))=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
"-efi/core.efi")))=0A+=20=20=20=20=20=20=20`(#:modules=20((guix=20build=20=
utils))=0A+=20=20=20=20=20=20=20=20=20#:builder=0A+=20=20=20=20=20=20=20=20=
=20(begin=0A+=20=20=20=20=20=20=20=20=20=20=20(use-modules=20(guix=20=
build=20utils))=0A+=20=20=20=20=20=20=20=20=20=20=20(let*=20((bootloader=20=
(assoc-ref=20%build-inputs=20"grub-efi"))=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(net-dir=20(assoc-ref=20%outputs=20"out"))=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(sub-dir=20=
(string-append=20net-dir=20"/"=20,subdir=20"/"))=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(boot-efi=20(string-append=20sub-dir=20=
,boot-efi))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(core-efi=20(string-append=20sub-dir=20,core-efi)))=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20=20;;=20Install=20GRUB,=20which=20refers=20to=20the=20=
grub.cfg,=20with=20support=20for=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
;;=20encrypted=20partitions,=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
(setenv=20"GRUB_ENABLE_CRYPTODISK"=20"y")=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20(invoke/quiet=20(string-append=20bootloader=20=
"/bin/grub-mknetdir")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(string-append=20"--net-directory=3D"=20=
net-dir)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20(string-append=20"--subdir=3D"=20,subdir)=0A+=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
These=20modules=20must=20be=20preloaded=20to=20allow=20booting=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
;;=20from=20an=20ESP=20or=20a=20similar=20partition=20with=20a=20FAT=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20;;=20file=20system.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(string-append=20"--modules=3Dpart_msdos=20=
part_gpt=20fat"))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20Move=20=
GRUB's=20core.efi=20to=20the=20removable=20media=20name.=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20=20(false-if-exception=20(delete-file=20boot-efi))=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20(rename-file=20core-efi=20=
boot-efi))))))=0A+=20=20=20=20(inputs=20`(("grub-efi"=20,grub-efi)))=0A+=20=
=20=20=20(synopsis=20(package-synopsis=20grub-efi))=0A+=20=20=20=20=
(description=20(package-description=20grub-efi))=0A+=20=20=20=20=
(home-page=20(package-home-page=20grub-efi))=0A+=20=20=20=20(license=20=
(package-license=20grub-efi))))=0A+=0A=20(define-public=20syslinux=0A=20=20=
=20(let=20((commit=20"bb41e935cc83c6242de24d2271e067d76af3585c"))=0A=20=20=
=20=20=20(package=0A=

--Apple-Mail=_B617970F-0E65-4178-8B28-B9F0969B3830
Content-Disposition: attachment;
	filename=02-build-kconfig-add-new-module
Content-Type: application/octet-stream;
	name="02-build-kconfig-add-new-module"
Content-Transfer-Encoding: quoted-printable

build:=20kconfig:=20Add=20new=20module=20to=20modify=20a=20defconfig=20=
file.=0A=0AFrom:=20Stefan=20<stefan-guix@HIDDEN>=0A=0A*=20=
guix/build/kconfig.scm=20(modify-defconfig):=20New=20file=20with=20a=20=
new=20function.=0A*=20gnu/packages/bootloaders.scm=20=
(make-u-boot-package,=0Amake-u-boot-sunxi64-package):=20Adding=20new=20=
key=20arguments=20to=20pass=20and/or=20modify=0Aa=20defconfig=20file.=0A=
(u-boot-am335x-boneblack,=20u-boot-pinebook,=20u-boot-novena):=20=
Simplify=20functions=0Aby=20using=20the=20new=20key=20arguments=20of=20=
the=20former=20functions.=0A*=20Makefile.am:=20Adding=20=
guix/build/kconfig.scm=20to=20MODULES.=0A---=0A=20Makefile.am=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20=20=20=201=20=0A=20=
gnu/packages/bootloaders.scm=20|=20=20=2087=20+++++++++++--------------=0A=
=20guix/build/kconfig.scm=20=20=20=20=20=20=20|=20=20148=20=
++++++++++++++++++++++++++++++++++++++++++=0A=203=20files=20changed,=20=
186=20insertions(+),=2050=20deletions(-)=0A=20create=20mode=20100644=20=
guix/build/kconfig.scm=0A=0Adiff=20--git=20a/Makefile.am=20b/Makefile.am=0A=
index=20d608b08899..06cceebf07=20100644=0A---=20a/Makefile.am=0A+++=20=
b/Makefile.am=0A@@=20-221,6=20+221,7=20@@=20MODULES=20=3D=09=09=09=09=09=
\=0A=20=20=20guix/build/waf-build-system.scm=09=09\=0A=20=20=20=
guix/build/haskell-build-system.scm=09=09\=0A=20=20=20=
guix/build/julia-build-system.scm=09=09\=0A+=20=20guix/build/kconfig.scm=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20\=0A=
=20=20=20guix/build/linux-module-build-system.scm=09\=0A=20=20=20=
guix/build/store-copy.scm=09=09=09\=0A=20=20=20guix/build/json.scm=09=09=09=
=09\=0Adiff=20--git=20a/gnu/packages/bootloaders.scm=20=
b/gnu/packages/bootloaders.scm=0Aindex=20601912011b..3bc5600c7c=20100644=0A=
---=20a/gnu/packages/bootloaders.scm=0A+++=20=
b/gnu/packages/bootloaders.scm=0A@@=20-733,8=20+733,9=20@@=20def=20=
test_ctrl_c"))=0A=20also=20initializes=20the=20boards=20(RAM=20etc).=20=20=
This=20package=20provides=20its=0A=20board-independent=20tools.")))=0A=20=
=0A-(define-public=20(make-u-boot-package=20board=20triplet)=0A-=20=20=
"Returns=20a=20u-boot=20package=20for=20BOARD=20cross-compiled=20for=20=
TRIPLET."=0A+(define*-public=20(make-u-boot-package=20board=20triplet=20=
#:key=20defconfig=20configs)=0A+=20=20"Returns=20a=20u-boot=20package=20=
for=20BOARD=20cross-compiled=20for=20TRIPLET=20with=20the=0A+optional=20=
DEFCONFIG=20file=20and=20optional=20configuration=20changes=20from=20=
CONFIGS."=0A=20=20=20(let=20((same-arch?=20(lambda=20()=0A=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(string=3D?=20=
(%current-system)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(gnu-triplet->nix-system=20=
triplet)))))=0A@@=20-752,8=20+753,11=20@@=20board-independent=20=
tools.")))=0A=20=20=20=20=20=20=20(arguments=0A=20=20=20=20=20=20=20=20=
`(#:modules=20((ice-9=20ftw)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(srfi=20srfi-1)=0A-=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(guix=20build=20utils)=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20(guix=20build=20=
gnu-build-system))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(guix=20build=20gnu-build-system)=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(guix=20build=20kconfig)=0A+=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(guix=20build=20utils))=0A=
+=20=20=20=20=20=20=20=20=20#:imported-modules=20=
(,@%gnu-build-system-modules=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(guix=20build=20kconfig))=0A=
=20=20=20=20=20=20=20=20=20=20#:test-target=20"test"=0A=20=20=20=20=20=20=
=20=20=20=20#:make-flags=0A=20=20=20=20=20=20=20=20=20=20(list=20=
"HOSTCC=3Dgcc"=0A@@=20-764,9=20+768,18=20@@=20board-independent=20=
tools.")))=0A=20=20=20=20=20=20=20=20=20=20(modify-phases=20=
%standard-phases=0A=20=20=20=20=20=20=20=20=20=20=20=20(replace=20=
'configure=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20(lambda*=20(#:key=20=
outputs=20make-flags=20#:allow-other-keys)=0A-=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20(let=20((config-name=20(string-append=20,board=20=
"_defconfig")))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(if=20(file-exists?=20(string-append=20"configs/"=20config-name))=0A-=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(apply=20invoke=20=
"make"=20`(,@make-flags=20,config-name))=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(let*=20((config-name=20(string-append=20,board=20=
"_defconfig"))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(config-file=20(string-append=20"configs/"=20config-name))=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(defconfig=20,defconfig)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(configs=20',configs))=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(when=20defconfig=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20;;=20Replace=20the=20board-specific=20=
defconfig=20with=20the=20given=20one.=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(copy-file=20defconfig=20config-file))=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20(file-exists?=20=
config-file)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20(begin=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(when=20configs=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(modify-defconfig=20config-file=20=
configs))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(apply=20invoke=20"make"=20`(,@make-flags=20,config-name)))=0A=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(begin=0A=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(display=20"Invalid=20board=20name.=20Valid=20board=20names=20are:"=0A=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(current-error-port))=0A@@=20-820,7=20+833,11=20@@=20=
board-independent=20tools.")))=0A=20=20=20(make-u-boot-package=20"malta"=20=
"mips64el-linux-gnuabi64"))=0A=20=0A=20(define-public=20=
u-boot-am335x-boneblack=0A-=20=20(let=20((base=20(make-u-boot-package=20=
"am335x_evm"=20"arm-linux-gnueabihf")))=0A+=20=20(let=20((base=20=
(make-u-boot-package=20"am335x_evm"=20"arm-linux-gnueabihf"=0A+=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20;;=20Patch=20out=20other=20device=20=
trees=20to=20build=20image=20small=20enough=20to=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20;;=20fit=20within=20typical=20partitioning=20=
schemes=20where=20the=20first=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20;;=20partition=20begins=20at=20sector=202048.=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20#:configs=20'("CONFIG_OF_LIST=3D\"am335x-evm=20=
am335x-boneblack\""))))=0A=20=20=20=20=20(package=0A=20=20=20=20=20=20=20=
(inherit=20base)=0A=20=20=20=20=20=20=20(name=20=
"u-boot-am335x-boneblack")=0A@@=20-829,25=20+846,13=20@@=20also=20=
initializes=20the=20boards=20(RAM=20etc).=0A=20=0A=20This=20U-Boot=20is=20=
built=20for=20the=20BeagleBone=20Black,=20which=20was=20removed=20=
upstream,=0A=20adjusted=20from=20the=20am335x_evm=20build=20with=20=
several=20device=20trees=20removed=20so=20that=0A-it=20fits=20within=20=
common=20partitioning=20schemes.")=0A-=20=20=20=20=20=20(arguments=0A-=20=
=20=20=20=20=20=20(substitute-keyword-arguments=20(package-arguments=20=
base)=0A-=20=20=20=20=20=20=20=20=20((#:phases=20phases)=0A-=20=20=20=20=20=
=20=20=20=20=20`(modify-phases=20,phases=0A-=20=20=20=20=20=20=20=20=20=20=
=20=20=20(add-after=20'unpack=20'patch-defconfig=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20;;=20Patch=20out=20other=20devicetrees=20to=20=
build=20image=20small=20enough=20to=0A-=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20;;=20fit=20within=20typical=20partitioning=20schemes=20where=20=
the=20first=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
partition=20begins=20at=20sector=202048.=0A-=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(lambda=20_=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20(substitute*=20"configs/am335x_evm_defconfig"=0A-=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20(("CONFIG_OF_LIST=3D.*$")=20=
"CONFIG_OF_LIST=3D\"am335x-evm=20am335x-boneblack\"\n"))=0A-=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20#t)))))))))=0A+it=20fits=20within=20=
common=20partitioning=20schemes."))))=0A=20=0A=20(define-public=20=
u-boot-am335x-evm=0A=20=20=20(make-u-boot-package=20"am335x_evm"=20=
"arm-linux-gnueabihf"))=0A=20=0A-(define-public=20=
(make-u-boot-sunxi64-package=20board=20triplet)=0A-=20=20(let=20((base=20=
(make-u-boot-package=20board=20triplet)))=0A+(define*-public=20=
(make-u-boot-sunxi64-package=20board=20triplet=20#:key=20defconfig=20=
configs)=0A+=20=20(let=20((base=20(make-u-boot-package=20board=20triplet=20=
#:defconfig=20defconfig=20#:configs=20configs)))=0A=20=20=20=20=20=
(package=0A=20=20=20=20=20=20=20(inherit=20base)=0A=20=20=20=20=20=20=20=
(arguments=0A@@=20-877,20=20+882,10=20@@=20it=20fits=20within=20common=20=
partitioning=20schemes.")=0A=20=20=20(make-u-boot-sunxi64-package=20=
"pine64-lts"=20"aarch64-linux-gnu"))=0A=20=0A=20(define-public=20=
u-boot-pinebook=0A-=20=20(let=20((base=20(make-u-boot-sunxi64-package=20=
"pinebook"=20"aarch64-linux-gnu")))=0A-=20=20=20=20(package=0A-=20=20=20=20=
=20=20(inherit=20base)=0A-=20=20=20=20=20=20(arguments=0A-=20=20=20=20=20=
=20=20(substitute-keyword-arguments=20(package-arguments=20base)=0A-=20=20=
=20=20=20=20=20=20=20((#:phases=20phases)=0A-=20=20=20=20=20=20=20=20=20=20=
`(modify-phases=20,phases=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=
(add-after=20'unpack=20'patch-pinebook-config=0A-=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20;;=20Fix=20regression=20with=20LCD=20video=20output=20=
introduced=20in=202020.01=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
;;=20https://patchwork.ozlabs.org/patch/1225130/=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(lambda=20_=0A-=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(substitute*=20"configs/pinebook_defconfig"=0A-=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(("CONFIG_VIDEO_BRIDGE_ANALOGIX_ANX6345=3Dy")=20=
"CONFIG_VIDEO_BRIDGE_ANALOGIX_ANX6345=3Dy\nCONFIG_VIDEO_BPP32=3Dy"))=0A-=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#t)))))))))=0A+=20=20=
(make-u-boot-sunxi64-package=20"pinebook"=20"aarch64-linux-gnu"=0A+=20=20=
=20;;=20Fix=20regression=20with=20LCD=20video=20output=20introduced=20in=20=
2020.01=0A+=20=20=20;;=20https://patchwork.ozlabs.org/patch/1225130/=0A+=20=
=20=20#:configs=20'("CONFIG_VIDEO_BPP32=3Dy")))=0A=20=0A=20=
(define-public=20u-boot-bananapi-m2-ultra=0A=20=20=20=
(make-u-boot-package=20"Bananapi_M2_Ultra"=20"arm-linux-gnueabihf"))=0A=
@@=20-941,25=20+936,17=20@@=20device=20while=20it's=20being=20turned=20=
on=20(and=20a=20while=20longer).")=0A=20=20=20(make-u-boot-package=20=
"mx6cuboxi"=20"arm-linux-gnueabihf"))=0A=20=0A=20(define-public=20=
u-boot-novena=0A-=20=20(let=20((base=20(make-u-boot-package=20"novena"=20=
"arm-linux-gnueabihf")))=0A+=20=20(let=20((base=20(make-u-boot-package=20=
"novena"=20"arm-linux-gnueabihf"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20;;=20Patch=20configuration=20to=20disable=20loading=20u-boot.img=20=
from=20FAT=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
partition,=20allowing=20it=20to=20be=20installed=20at=20a=20device=20=
offset.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:configs=20=
'("CONFIG_SPL_FS_FAT=3D"))))=0A=20=20=20=20=20(package=0A=20=20=20=20=20=20=
=20(inherit=20base)=0A=20=20=20=20=20=20=20(description=20"U-Boot=20is=20=
a=20bootloader=20used=20mostly=20for=20ARM=20boards.=20It=0A=20also=20=
initializes=20the=20boards=20(RAM=20etc).=0A=20=0A=20This=20U-Boot=20is=20=
built=20for=20Novena.=20=20Be=20advised=20that=20this=20version,=20=
contrary=0A-to=20Novena=20upstream,=20does=20not=20load=20u-boot.img=20=
from=20the=20first=20partition.")=0A-=20=20=20=20=20=20(arguments=0A-=20=20=
=20=20=20=20=20(substitute-keyword-arguments=20(package-arguments=20=
base)=0A-=20=20=20=20=20=20=20=20=20((#:phases=20phases)=0A-=20=20=20=20=20=
=20=20=20=20=20`(modify-phases=20,phases=0A-=20=20=20=20=20=20=20=20=20=20=
=20=20=20(add-after=20'unpack=20'patch-novena-defconfig=0A-=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20;;=20Patch=20configuration=20to=20disable=20=
loading=20u-boot.img=20from=20FAT=20partition,=0A-=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20;;=20allowing=20it=20to=20be=20installed=20at=20a=20=
device=20offset.=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(lambda=20=
_=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(substitute*=20=
"configs/novena_defconfig"=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(("CONFIG_SPL_FS_FAT=3Dy")=20"#=20CONFIG_SPL_FS_FAT=20is=20=
not=20set"))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
#t)))))))))=0A+to=20Novena=20upstream,=20does=20not=20load=20u-boot.img=20=
from=20the=20first=20partition."))))=0A=20=0A=20(define-public=20=
u-boot-cubieboard=0A=20=20=20(make-u-boot-package=20"Cubieboard"=20=
"arm-linux-gnueabihf"))=0Adiff=20--git=20a/guix/build/kconfig.scm=20=
b/guix/build/kconfig.scm=0Anew=20file=20mode=20100644=0Aindex=20=
0000000000..09ddf59dd0=0A---=20/dev/null=0A+++=20=
b/guix/build/kconfig.scm=0A@@=20-0,0=20+1,148=20@@=0A+;;;=20GNU=20Guix=20=
---=20Functional=20package=20management=20for=20GNU=0A+;;;=20Copyright=20=
=C2=A9=202020=20Stefan=20<stefan-guix@HIDDEN>=0A+;;;=0A+;;;=20=
This=20file=20is=20part=20of=20GNU=20Guix.=0A+;;;=0A+;;;=20GNU=20Guix=20=
is=20free=20software;=20you=20can=20redistribute=20it=20and/or=20modify=20=
it=0A+;;;=20under=20the=20terms=20of=20the=20GNU=20General=20Public=20=
License=20as=20published=20by=0A+;;;=20the=20Free=20Software=20=
Foundation;=20either=20version=203=20of=20the=20License,=20or=20(at=0A=
+;;;=20your=20option)=20any=20later=20version.=0A+;;;=0A+;;;=20GNU=20=
Guix=20is=20distributed=20in=20the=20hope=20that=20it=20will=20be=20=
useful,=20but=0A+;;;=20WITHOUT=20ANY=20WARRANTY;=20without=20even=20the=20=
implied=20warranty=20of=0A+;;;=20MERCHANTABILITY=20or=20FITNESS=20FOR=20=
A=20PARTICULAR=20PURPOSE.=20=20See=20the=0A+;;;=20GNU=20General=20Public=20=
License=20for=20more=20details.=0A+;;;=0A+;;;=20You=20should=20have=20=
received=20a=20copy=20of=20the=20GNU=20General=20Public=20License=0A+;;;=20=
along=20with=20GNU=20Guix.=20=20If=20not,=20see=20=
<http://www.gnu.org/licenses/>.=0A+=0A+(define-module=20(guix=20build=20=
kconfig)=0A+=20=20#:use-module=20=20(ice-9=20rdelim)=0A+=20=20=
#:use-module=20=20(ice-9=20regex)=0A+=20=20#:use-module=20=20(srfi=20=
srfi-1)=0A+=20=20#:use-module=20=20(srfi=20srfi-26)=0A+=20=20#:export=20=
(modify-defconfig))=0A+=0A+;;=20Commentary:=0A+;;=0A+;;=20Builder-side=20=
code=20to=20modify=20configurations=20for=20the=20Kconfig=20build=20=
system=20as=0A+;;=20used=20by=20Linux=20and=20U-Boot.=0A+;;=0A+;;=20=
Code:=0A+=0A+(define=20(modify-defconfig=20defconfig=20configs)=0A+=20=20=
"This=20function=20can=20modify=20a=20given=20DEFCONFIG=20file=20by=20=
adding,=20changing=20or=0A+removing=20the=20list=20of=20strings=20in=20=
CONFIGS.=20=20This=20allows=20an=20easy=20customization=20of=0A+Kconfig=20=
based=20projects=20like=20the=20kernel=20Linux=20or=20the=20bootloader=20=
'Das=20U-Boot'.=0A+=0A+These=20are=20examples=20for=20CONFIGS=20to=20add=20=
or=20change=20or=20remove=0A+configurations=20to/from=20DEFCONFIG:=0A+=0A=
+'(\"CONFIG_A=3D\\\"a\\\"\"=0A+=20=20\"CONFIG_B=3D0\"=0A+=20=20=
\"CONFIG_C=3Dy\"=0A+=20=20\"CONFIG_D=3Dm\"=0A+=20=20\"CONFIG_E=3D\"=0A+=20=
=20\"CONFIG_F\"=0A+=20=20\"#=20CONFIG_G=20is=20not=20set\")=0A+=0A=
+Instead=20of=20a=20list,=20CONFGIS=20can=20be=20a=20string=20with=20one=20=
configuration=20per=20line."=0A+=20=20(define=20config-rx=0A+=20=20=20=20=
(make-regexp=0A+=20=20=20=20=20;;=20(match:substring=20(string-match=20=
"=3D(.*)"=20"=3D")=201)=20returns=20"",=20but=20the=0A+=20=20=20=20=20;;=20=
pattern=20"=3D(.+)?"=20makes=20it=20return=20#f=20instead.=20=20For=20a=20=
"CONFIG_A=3D"=20we=20like=0A+=20=20=20=20=20;;=20to=20get=20#f,=20which=20=
as=20a=20value=20emits=20"#=20=E2=80=A6=20is=20not=20set".=0A+=20=20=20=20=
=20"^(#[\\t=20]*)?(CONFIG_[A-Z0-9_]+)([\\t=20]*=3D[\\t=20]*(.+)?|([\\t=20=
]+is[\\t=20]+not[\\t=20]+set))?$"))=0A+=0A+=20=20(define=20=
(config-string->pair=20config-string)=0A+=20=20=20=20"Parse=20a=20=
config-string=20like=20\"CONFIG_EXAMPLE=3Dy\"=20into=20a=20key-value=20=
pair.=0A+Spaces=20get=20trimmed.=0A+\"CONFIG_A=3Dy\"=20=20=20=20=20=20=20=
=20=20=20=20=20->=20'(\"CONFIG_A\"=20.=20\"y\")=0A+\"CONFIG_B=3D\\\"\\\"\"=
=20=20=20=20=20=20=20=20=20->=20'(\"CONFIG_B\"=20.=20\"\\\"\\\"\")=0A=
+\"CONFIG_C=3D\"=20=20=20=20=20=20=20=20=20=20=20=20=20->=20=
'(\"CONFIG_C\"=20.=20#f)=0A+\"CONFIG_D\"=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20->=20'(\"CONFIG_D\"=20.=20#f)=0A+\"#=20CONFIG_E=20is=20not=20=
set\"=20->=20'(\"CONFIG_E\"=20.=20#f)=0A+\"#=20Anything=20else\"=20=20=20=
=20=20=20=20->=20'(\"#=20Anything=20else\"=20.=20\"\")"=0A+=20=20=20=20=
(let=20((match=20(regexp-exec=20config-rx=20(string-trim-both=20=
config-string))))=0A+=20=20=20=20=20=20(if=20(not=20match)=0A+=20=20=20=20=
=20=20=20=20=20=20;;=20This=20is=20some=20unparsable=20config-string.=0A=
+=20=20=20=20=20=20=20=20=20=20;;=20We=20keep=20it=20as=20it=20is.=0A+=20=
=20=20=20=20=20=20=20=20=20(cons=20config-string=20"")=0A+=20=20=20=20=20=
=20=20=20=20=20(let*=20((comment=20(match:substring=20match=201))=0A+=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(key=20(match:substring=20=
match=202))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(unset=20=
(match:substring=20match=205))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(value=20(and=20(not=20comment)=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(not=20=
unset)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(match:substring=20match=204))))=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20(if=20(or=20(and=20comment=20(not=20unset))=0A+=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(and=20(not=20=
comment)=20unset))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
This=20is=20just=20some=20comment=20or=20strange=20line,=20which=20we=20=
keep=20as=20is.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(cons=20=
config-string=20"")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(cons=20key=20value))))))=0A+=0A+=20=20(define=20(pair->config-string=20=
pair)=0A+=20=20=20=20"Convert=20a=20PAIR=20back=20to=20a=20=
config-string."=0A+=20=20=20=20(let*=20((key=20(car=20pair))=0A+=20=20=20=
=20=20=20=20=20=20=20=20(value=20(cdr=20pair)))=0A+=20=20=20=20=20=20(if=20=
(string?=20value)=0A+=20=20=20=20=20=20=20=20=20=20(if=20(string-null?=20=
value)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20key=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(string-append=20key=20"=3D"=20value))=0A+=20=20=
=20=20=20=20=20=20=20=20(string-append=20"#=20"=20key=20"=20is=20not=20=
set"))))=0A+=0A+=20=20(define=20(remove-pair=20pair=20blacklist)=0A+=20=20=
=20=20"Turn=20a=20key-value=20PAIR=20into=20'(""=20.=20""),=20if=20its=20=
key=20is=20listed=20in=20BLACKLIST."=0A+=20=20=20=20(let*=20((key=20=
(first=20pair)))=0A+=20=20=20=20=20=20(if=20(member=20key=20blacklist)=0A=
+=20=20=20=20=20=20=20=20=20=20'(""=20.=20"")=0A+=20=20=20=20=20=20=20=20=
=20=20pair)))=0A+=0A+=20=20(define=20(remove-config-string=20=
config-string=20blacklist)=0A+=20=20=20=20"Remove=20the=20CONFIG-STRING,=20=
if=20its=20key=20is=20listed=20in=20BLACKLIST."=0A+=20=20=20=20=
(pair->config-string=20(remove-pair=20(config-string->pair=20=
config-string)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20blacklist)))=0A=
+=0A+=20=20(define*=20(write-lines=20input=20#:key=20(line-modifier=20=
identity))=0A+=20=20=20=20"Write=20all=20lines=20from=20the=20INPUT=20=
after=20applying=20the=20LINE-MODIFIER=20to=20the=0A+=20=
current-output-port."=0A+=20=20=20=20(let=20loop=20((line=20(read-line=20=
input)))=0A+=20=20=20=20=20=20(when=20(not=20(eof-object?=20line))=0A+=20=
=20=20=20=20=20=20=20(display=20(line-modifier=20line))=0A+=20=20=20=20=20=
=20=20=20(newline)=0A+=20=20=20=20=20=20=20=20(loop=20(read-line=20=
input)))))=0A+=0A+=20=20(let*=20((modified-defconfig=20(string-append=20=
defconfig=20".mod"))=0A+=20=20=20=20=20=20=20=20=20;;=20Split=20the=20=
configs=20into=20a=20list=20of=20single=20configuations.=0A+=20=20=20=20=20=
=20=20=20=20;;=20To=20minimize=20mistakes,=20we=20support=20a=20string=20=
and=20a=20list=20of=20strings,=0A+=20=20=20=20=20=20=20=20=20;;=20each=20=
with=20newlines=20to=20separate=20configurations.=0A+=20=20=20=20=20=20=20=
=20=20(config-list=20(fold-right=20append=20'()=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(map=20(lambda=20(s)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(string-split=20s=20#\newline))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(if=20(string?=20configs)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(list=20configs)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20configs))))=0A+=20=20=20=20=20=20=20=20=20;;=20Generate=20=
key-value=20pairs=20from=20the=20config-list.=0A+=20=20=20=20=20=20=20=20=
=20(pairs=20(map=20(lambda=20(config-string)=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(config-string->pair=20=
config-string))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20config-list))=0A+=20=20=20=20=20=20=20=20=20;;=20Generate=20a=20=
blacklist=20of=20config=20keys=20from=20pairs.=0A+=20=20=20=20=20=20=20=20=
=20(blacklist=20(map=20(lambda=20(config-pair)=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(first=20=
config-pair))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20pairs))=0A+=20=20=20=20=20=20=20=20=20=
(remove-config-string=20(cut=20remove-config-string=20<>=20blacklist)))=0A=
+=20=20=20=20;;=20Write=20to=20the=20modified-defconfig=20file=20first=20=
the=20content=20of=20the=20defconfig=0A+=20=20=20=20;;=20file=20with=20=
removed=20lines,=20and=20afterwards=20the=20configs.=0A+=20=20=20=20=
(call-with-output-file=20modified-defconfig=0A+=20=20=20=20=20=20(lambda=20=
(output)=0A+=20=20=20=20=20=20=20=20(with-output-to-port=20output=0A+=20=20=
=20=20=20=20=20=20=20=20(lambda=20()=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20(call-with-input-file=20defconfig=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(lambda=20(input)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(write-lines=20input=20#:=20line-modifier=20remove-config-string)))=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20(call-with-input-string=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(string-join=20(map=20=
pair->config-string=20pairs)=20"\n")=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(lambda=20(input)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(write-lines=20input)))))))=0A+=20=20=20=20;;=20Ensure=20the=20=
modified-defconfig=20file=20is=20used.=0A+=20=20=20=20(delete-file=20=
defconfig)=0A+=20=20=20=20(rename-file=20modified-defconfig=20=
defconfig)))=0A=

--Apple-Mail=_B617970F-0E65-4178-8B28-B9F0969B3830
Content-Disposition: attachment;
	filename=03-gnu-bootloader-add-u-boot
Content-Type: application/octet-stream;
	name="03-gnu-bootloader-add-u-boot"
Content-Transfer-Encoding: 7bit

gnu: bootloader: Add U-Boot packages for Raspberry Pi models.

From: Stefan <stefan-guix@HIDDEN>

* gnu/packages/bootloader.scm (make-u-boot-package): Add keyword
parameters 'name' and 'description'.
(make-preinstalled-u-boot-package): New function to make minimal packages.
(%u-boot-rpi-efi-configs): New helper list with config strings.
(%u-boot-rpi-description-32-bit, %u-boot-rpi-description-64-bit,
%u-boot-rpi-efi-description, %u-boot-rpi-efi-description-32-bit): New helper
strings.
(u-boot-rpi-0-w, u-boot-rpi, u-boot-rpi-2, u-boot-rpi-3, u-boot-rpi-4,
u-boot-rpi-64, u-boot-rpi-0-w-efi, u-boot-rpi-efi, u-boot-rpi-2-efi,
u-boot-rpi-3-efi, u-boot-rpi-4-efi, u-boot-rpi-efi-64): New packages.
---
 gnu/packages/bootloaders.scm |  172 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 168 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 3bc5600c7c..5121f3a6ea 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -733,17 +733,30 @@ def test_ctrl_c"))
 also initializes the boards (RAM etc).  This package provides its
 board-independent tools.")))
 
-(define*-public (make-u-boot-package board triplet #:key defconfig configs)
+(define*-public (make-u-boot-package board
+                                     triplet
+                                     #:key
+                                     defconfig
+                                     configs
+                                     name
+                                     description)
   "Returns a u-boot package for BOARD cross-compiled for TRIPLET with the
-optional DEFCONFIG file and optional configuration changes from CONFIGS."
+optional DEFCONFIG file and optional configuration changes from CONFIGS.
+Either NAME, if used, or otherwise BOARD will be part of the package name.
+DESCRIPTION will be appended to the package description."
   (let ((same-arch? (lambda ()
                       (string=? (%current-system)
                                 (gnu-triplet->nix-system triplet)))))
     (package
       (inherit u-boot)
       (name (string-append "u-boot-"
-                           (string-replace-substring (string-downcase board)
-                                                     "_" "-")))
+                           (string-replace-substring
+                            (string-downcase (or name board))
+                            "_" "-")))
+      (description (if description
+                       (string-append (package-description u-boot)
+                                      "\n" description)
+                       (package-description u-boot)))
       (native-inputs
        `(,@(if (not (same-arch?))
              `(("cross-gcc" ,(cross-gcc triplet))
@@ -1071,6 +1084,157 @@ to Novena upstream, does not load u-boot.img from the first partition."))))
        `(("firmware" ,arm-trusted-firmware-rk3399)
          ,@(package-native-inputs base))))))
 
+(define*-public (make-preinstalled-u-boot-package board
+                                                  triplet
+                                                  #:key
+                                                  defconfig
+                                                  configs
+                                                  name
+                                                  description
+                                                  (u-boot-file "u-boot.bin"))
+  "Returns a package with a single U-BOOT-FILE for BOARD cross-compiled for
+TRIPLET with the optional DEFCONFIG file and optional configuration changes
+from CONFIGS.  Either NAME, if used, or otherwise BOARD will be part of the
+package name.  DESCRIPTION will be appended to the package description."
+  (let* ((name-suffix "-complete")
+         (u-boot-package (make-u-boot-package board
+                                              triplet
+                                              #:defconfig defconfig
+                                              #:configs configs
+                                              #:name (string-append
+                                                      (or name board)
+                                                      name-suffix)
+                                              #:description description)))
+    (package
+      (name (string-drop-right (package-name u-boot-package)
+                               (string-length name-suffix)))
+      (version (package-version u-boot-package))
+      (source #f)
+      (build-system trivial-build-system)
+      (arguments
+       `(#:builder
+         (begin
+           (let ((out (assoc-ref %outputs "out")))
+             (mkdir out)
+             (symlink (string-append (assoc-ref %build-inputs "u-boot")
+                                   "/libexec/"
+                                   ,u-boot-file)
+                      (string-append out "/" ,u-boot-file))))))
+      (inputs `(("u-boot" ,u-boot-package)))
+      (home-page (package-home-page u-boot-package))
+      (synopsis (package-synopsis u-boot-package))
+      (description (package-description u-boot-package))
+      (license (package-license u-boot-package)))))
+
+(define-public %u-boot-rpi-efi-configs
+  '("CONFIG_OF_EMBED="
+    "CONFIG_OF_BOARD=y"
+    "CONFIG_BOOTDELAY=0"))
+
+(define %u-boot-rpi-description-32-bit
+  "This is a 32-bit build of U-Boot.")
+
+(define %u-boot-rpi-description-64-bit
+  "This is a common 64-bit build of U-Boot for all 64-bit capable Raspberry Pi
+variants.")
+
+(define %u-boot-rpi-efi-description
+  "It allows network booting and uses the device-tree from the firmware,
+allowing the usage of overlays.  It can act as an EFI firmware for the
+grub-efi-netboot-removable-bootloader.")
+
+(define %u-boot-rpi-efi-description-32-bit
+  (string-append %u-boot-rpi-efi-description "  "
+                 %u-boot-rpi-description-32-bit))
+
+(define-public u-boot-rpi-0-w
+  (make-preinstalled-u-boot-package
+   "rpi_0_w"
+   "arm-linux-gnueabihf"
+   #:description %u-boot-rpi-description-32-bit))
+
+(define-public u-boot-rpi
+  (make-preinstalled-u-boot-package
+   "rpi"
+   "arm-linux-gnueabihf"
+   #:description %u-boot-rpi-description-32-bit))
+
+(define-public u-boot-rpi-2
+  (make-preinstalled-u-boot-package
+   "rpi_2"
+   "arm-linux-gnueabihf"
+   #:description %u-boot-rpi-description-32-bit))
+
+(define-public u-boot-rpi-3
+  (make-preinstalled-u-boot-package
+   "rpi_3_32b"
+   "arm-linux-gnueabihf"
+   #:name "rpi-3"
+   #:description %u-boot-rpi-description-32-bit))
+
+(define-public u-boot-rpi-4
+  (make-preinstalled-u-boot-package
+   "rpi_4_32b"
+   "arm-linux-gnueabihf"
+   #:name "rpi-4"
+   #:description %u-boot-rpi-description-32-bit))
+
+(define-public u-boot-rpi-64
+  (make-preinstalled-u-boot-package
+   "rpi_arm64"
+   "aarch64-linux-gnu"
+   #:name "rpi-64"
+   #:description %u-boot-rpi-description-64-bit))
+
+(define-public u-boot-rpi-0-w-efi
+  (make-preinstalled-u-boot-package
+   "rpi_0_w"
+   "arm-linux-gnueabihf"
+   #:name "rpi-0-w-efi"
+   #:configs %u-boot-rpi-efi-configs
+   #:description %u-boot-rpi-efi-description-32-bit))
+
+(define-public u-boot-rpi-efi
+  (make-preinstalled-u-boot-package
+   "rpi"
+   "arm-linux-gnueabihf"
+   #:name "rpi-efi"
+   #:configs %u-boot-rpi-efi-configs
+   #:description %u-boot-rpi-efi-description-32-bit))
+
+(define-public u-boot-rpi-2-efi
+  (make-preinstalled-u-boot-package
+   "rpi_2"
+   "arm-linux-gnueabihf"
+   #:name "rpi-2-efi"
+   #:configs %u-boot-rpi-efi-configs
+   #:description %u-boot-rpi-efi-description-32-bit))
+
+(define-public u-boot-rpi-3-efi
+  (make-preinstalled-u-boot-package
+   "rpi_3_32b"
+   "arm-linux-gnueabihf"
+   #:name "rpi-3-efi"
+   #:configs %u-boot-rpi-efi-configs
+   #:description %u-boot-rpi-efi-description-32-bit))
+
+(define-public u-boot-rpi-4-efi
+  (make-preinstalled-u-boot-package
+   "rpi_4_32b"
+   "arm-linux-gnueabihf"
+   #:name "rpi-4-efi"
+   #:configs %u-boot-rpi-efi-configs
+   #:description %u-boot-rpi-efi-description-32-bit))
+
+(define-public u-boot-rpi-efi-64
+  (make-preinstalled-u-boot-package
+   "rpi_arm64"
+   "aarch64-linux-gnu"
+   #:name "rpi-efi-64"
+   #:configs %u-boot-rpi-efi-configs
+   #:description (string-append %u-boot-rpi-efi-description "  "
+                                %u-boot-rpi-description-64-bit)))
+
 (define-public vboot-utils
   (package
     (name "vboot-utils")

--Apple-Mail=_B617970F-0E65-4178-8B28-B9F0969B3830
Content-Disposition: attachment;
	filename=04-gnu-linux-new-function-to
Content-Type: application/octet-stream;
	name="04-gnu-linux-new-function-to"
Content-Transfer-Encoding: quoted-printable

gnu:=20linux:=20New=20function=20to=20modify=20the=20configuration=20of=20=
a=20Linux=20kernel.=0A=0AFrom:=20Stefan=20<stefan-guix@HIDDEN>=0A=
=0A*=20gnu/packages/linux.scm=20(system->linux-srcarch):=20New=20=
function=20to=20return=20the=0Arelevent=20folder=20name=20below=20arch/=20=
in=20the=20Linux=20source=20code.=0A(make-linux-libre*)=20=
['set-environment]:=20Splitted=20this=20new=20phase=20out=20of=20and=0A=
adding=20it=20before=20=E2=80=A6=0A['configure]:=20=E2=80=A6=20to=20=
allow=20a=20replacement=20and=20reuse=20from=20(modify-linux).=0A=
(modify-linux):=20New=20function=20to=20make=20a=20customized=20Linux=20=
package=20inherited=0Afrom=20another=20Linux=20package,=20which=20will=20=
be=20build=20with=20an=20own=20defconfig=20or=0Aconfiguration=20changes.=0A=
(make-defconfig):=20Function=20to=20get=20a=20defconfig=20from=20an=20=
uri.=0A---=0A=20gnu/packages/linux.scm=20|=20=20130=20=
+++++++++++++++++++++++++++++++++++++++++++++++-=0A=201=20file=20=
changed,=20127=20insertions(+),=203=20deletions(-)=0A=0Adiff=20--git=20=
a/gnu/packages/linux.scm=20b/gnu/packages/linux.scm=0Aindex=20=
f4c1867c5d..d8ff747d20=20100644=0A---=20a/gnu/packages/linux.scm=0A+++=20=
b/gnu/packages/linux.scm=0A@@=20-53,6=20+53,7=20@@=0A=20;;;=20Copyright=20=
=C2=A9=202021=20B.=20Wilson=20<elaexuotee@HIDDEN>=0A=20;;;=20=
Copyright=20=C2=A9=202021=20Ivan=20Gankevich=20<i.gankevich@HIDDEN>=0A=20=
;;;=20Copyright=20=C2=A9=202021=20Olivier=20Dion=20=
<olivier.dion@HIDDEN>=0A+;;;=20Copyright=20=C2=A9=202021=20Stefan=20=
<stefan-guix@HIDDEN>=0A=20;;;=0A=20;;;=20This=20file=20is=20=
part=20of=20GNU=20Guix.=0A=20;;;=0A@@=20-166,6=20+167,7=20@@=0A=20=20=20=
#:use-module=20(srfi=20srfi-2)=0A=20=20=20#:use-module=20(srfi=20=
srfi-26)=0A=20=20=20#:use-module=20(ice-9=20match)=0A+=20=20#:use-module=20=
(ice-9=20optargs)=0A=20=20=20#:use-module=20(ice-9=20regex))=0A=20=0A=20=
(define-public=20(system->linux-architecture=20arch)=0A@@=20-182,6=20=
+184,21=20@@=0A=20=20=20=20=20=20=20=20=20=20=20((string-prefix?=20=
"riscv"=20arch)=20"riscv")=0A=20=20=20=20=20=20=20=20=20=20=20(else=20=
arch))))=0A=20=0A+(define-public=20(system->linux-srcarch=20arch)=0A+=20=20=
"Return=20for=20a=20Guix=20system=20ARCH=20name=20the=20SRCARCH=20name,=20=
which=20is=20set=20in=20the=0A+toplevel=20Makefile=20of=20Linux=20and=20=
denotes=20the=20architecture=20specific=20directory=20name=0A+below=20=
arch/=20in=20its=20source=20code.=20=20Some=20few=20architectures=20=
share=20a=20common=20folder.=0A+It=20resembles=20the=20definition=20of=20=
SRCARCH=20based=20on=20ARCH=20in=20the=20Makefile=20and=20may=0A+be=20=
used=20to=20place=20a=20defconfig=20file=20in=20the=20proper=20path."=0A=
+=20=20(let=20((linux-arch=20(system->linux-architecture=20arch)))=0A+=20=
=20=20=20(match=20linux-arch=0A+=20=20=20=20=20=20("i386"=20=20=20=20=
"x86")=0A+=20=20=20=20=20=20("x86_64"=20=20"x86")=0A+=20=20=20=20=20=20=
("sparc32"=20"sparc")=0A+=20=20=20=20=20=20("sparc64"=20"sparc")=0A+=20=20=
=20=20=20=20("sh64"=20=20=20=20"sh")=0A+=20=20=20=20=20=20(_=20=20=20=20=20=
=20=20=20=20linux-arch))))=0A+=0A=20(define-public=20(system->defconfig=20=
system)=0A=20=20=20"Some=20systems=20(notably=20powerpc-linux)=20require=20=
a=20special=20target=20for=20kernel=0A=20defconfig.=20=20Return=20the=20=
appropriate=20make=20target=20if=20applicable,=20otherwise=20return=0A@@=20=
-811,8=20+828,8=20@@=20for=20ARCH=20and=20optionally=20VARIANT,=20or=20=
#f=20if=20there=20is=20no=20such=20configuration."=0A=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(substitute*=20(find-files=20"."=20=
"^Makefile(\\.include)?$")=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(("/bin/pwd")=20"pwd"))=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
#t))=0A-=20=20=20=20=20=20=20=20=20(replace=20'configure=0A-=20=20=20=20=20=
=20=20=20=20=20=20(lambda*=20(#:key=20inputs=20native-inputs=20target=20=
#:allow-other-keys)=0A+=20=20=20=20=20=20=20=20=20(add-before=20=
'configure=20'set-environment=0A+=20=20=20=20=20=20=20=20=20=20=20=
(lambda*=20(#:key=20target=20#:allow-other-keys)=0A=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20;;=20Avoid=20introducing=20timestamps=0A=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(setenv=20"KCONFIG_NOTIMESTAMP"=20"1")=0A=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20(setenv=20"KBUILD_BUILD_TIMESTAMP"=20=
(getenv=20"SOURCE_DATE_EPOCH"))=0A@@=20-831,7=20+848,9=20@@=20for=20ARCH=20=
and=20optionally=20VARIANT,=20or=20#f=20if=20there=20is=20no=20such=20=
configuration."=0A=20=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(setenv=20"EXTRAVERSION"=20,(and=20extra-version=0A=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20(string-append=20"-"=20extra-version)))=0A=
-=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20#t))=0A+=20=20=20=20=20=20=20=
=20=20(replace=20'configure=0A+=20=20=20=20=20=20=20=20=20=20=20(lambda*=20=
(#:key=20inputs=20native-inputs=20#:allow-other-keys)=0A=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(let=20((build=20=20(assoc-ref=20=
%standard-phases=20'build))=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(config=20(assoc-ref=20(or=20native-inputs=20inputs)=20=
"kconfig")))=0A=20=0A@@=20-1163,6=20+1182,111=20@@=20It=20has=20been=20=
modified=20to=20remove=20all=20non-free=20binary=20blobs.")=0A=20=20=20=20=
=20=20=20(inherit=20base-linux-libre)=0A=20=20=20=20=20=20=20(inputs=20=
`(("cpio"=20,cpio)=20,@(package-inputs=20base-linux-libre))))))=0A=20=0A=
+=0C=0A+;;;=0A+;;;=20Linux=20kernel=20customization=20functions.=0A+;;;=0A=
+=0A+(define*-public=20(modify-linux=20#:key=20name=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(linux=20linux-libre)=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
source=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20defconfig=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20(configs=20"")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
extra-version)=0A+=20=20"Make=20a=20Linux=20package=20NAME=20as=20a=20=
modification=20of=20another=20LINUX=20package.=0A+=0A+If=20NAME=20is=20=
not=20given,=20then=20it=20defaults=20to=20the=20same=20name=20as=20the=20=
LINUX=20package.=0A+=0A+Unless=20SOURCE=20is=20given=20the=20source=20of=20=
LINUX=20is=20used.=0A+=0A+A=20DEFCONFIG=20file=20to=20be=20used=20can=20=
be=20given=20as=20a=20package,=20as=20a=20file=20like=20object=0A=
+(file-append,=20local-file=20etc.),=20or=20as=20a=20string=20with=20the=20=
name=20of=20a=20defconfig=20file=0A+available=20in=20the=20Linux=20=
sources.=20=20If=20DEFCONFIG=20is=20not=20given,=20then=20a=20defconfig=0A=
+file=20will=20be=20saved=20from=20the=20LINUX=20package=20=
configuration.=0A+=0A+Additional=20CONFIGS=20will=20be=20used=20to=20=
modify=20the=20given=20or=20saved=20defconfig,=20which=0A+will=20finally=20=
be=20used=20to=20build=20Linux.=0A+=0A+CONFIGS=20can=20be=20a=20list=20=
of=20strings,=20with=20one=20configuration=20per=20line.=20=20The=20=
usual=0A+defconfig=20syntax=20has=20to=20be=20used,=20but=20there=20is=20=
a=20special=20extension=20to=20ease=20the=0A+removal=20of=20=
configurations.=20=20Comment=20lines=20are=20supported=20as=20well.=0A+=0A=
+Here=20is=20an=20explaining=20usage=20example:=0A+=0A+=20=20'(;;=20This=20=
string=20defines=20the=20version=20tail=20in=20'uname=20-r'.=0A+=20=20=20=
=20\"CONFIG_LOCALVERSION=3D\\\"-handcrafted\\\"=0A+=20=20=20=20;;=20This=20=
'#=20CONFIG_=E2=80=A6=20is=20not=20set'=20syntax=20has=20to=20match=20=
exactly!=0A+=20=20=20=20\"#=20CONFIG_BOOT_CONFIG=20is=20not=20set\"=0A+=20=
=20=20=20\"CONFIG_NFS_SWAP=3Dy\"=0A+=20=20=20=20;;=20This=20is=20a=20=
multiline=20configuration:=0A+=20=20=20=20\"CONFIG_E1000=3Dy=0A+#=20This=20=
is=20a=20comment,=20below=20follow=20two=20special=20removal=20=
extensions:=0A+CONFIG_CMDLINE_EXTEND=0A+CONFIG_CMDLINE_FORCE=3D\")=0A+=0A=
+A=20string=20of=20configurations=20instead=20of=20a=20list=20of=20=
configuration=20strings=20is=20also=0A+possible.=0A+=0A+EXTRA-VERSION=20=
can=20be=20a=20string=20overwriting=20the=20EXTRAVERSION=20setting=20of=20=
the=20LINUX=0A+package,=20after=20being=20prepended=20by=20a=20hyphen.=20=
=20It=20will=20be=20visible=20in=20the=20output=0A+of=20'uname=20-r'=20=
behind=20the=20Linux=20version=20numbers."=0A+=20=20(package=0A+=20=20=20=
=20(inherit=20linux)=0A+=20=20=20=20(name=20(or=20name=20(package-name=20=
linux)))=0A+=20=20=20=20(source=20(or=20source=20(package-source=20=
linux)))=0A+=20=20=20=20(arguments=0A+=20=20=20=20=20=
(substitute-keyword-arguments=0A+=20=20=20=20=20=20=20=20=20=
(package-arguments=20linux)=0A+=20=20=20=20=20=20=20((#:imported-modules=20=
imported-modules=20%gnu-build-system-modules)=0A+=20=20=20=20=20=20=20=20=
`((guix=20build=20kconfig)=20,@imported-modules))=0A+=20=20=20=20=20=20=20=
((#:modules=20modules)=0A+=20=20=20=20=20=20=20=20`((guix=20build=20=
kconfig)=20,@modules))=0A+=20=20=20=20=20=20=20((#:phases=20phases)=0A+=20=
=20=20=20=20=20=20=20`(modify-phases=20,phases=0A+=20=20=20=20=20=20=20=20=
=20=20=20(replace=20'configure=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
(lambda*=20(#:key=20inputs=20#:allow-other-keys=20#:rest=20arguments)=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(let*=20((srcarch=0A+=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
,(system->linux-srcarch=20(or=20(%current-target-system)=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(%current-system))))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(configs=20(string-append=20"arch/"=20srcarch=20=
"/configs/"))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(guix_defconfig=20(string-append=20configs=20=
"guix_defconfig")))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
,(cond=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20((not=20=
defconfig)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
`(begin=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20;;=20Call=20the=20original=20'configure=20phase.=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(apply=20=
(assoc-ref=20,phases=20'configure)=20arguments)=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20Save=20a=20defconfig=20=
file.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(invoke=20"make"=20"savedefconfig")=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20;;=20Move=20the=20saved=20defconfig=20=
to=20the=20proper=20location.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(rename-file=20"defconfig"=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20guix_defconfig)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20((string?=20defconfig)=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20;;=20Use=20another=20existing=20defconfig=20=
from=20the=20Linux=20sources.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20`(rename-file=20(string-append=20configs=20,defconfig)=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20guix_defconfig))=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(else=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20;;=20Copy=20the=20defconfig=20input=20to=20=
the=20proper=20location.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20'(copy-file=20(assoc-ref=20inputs=20"guix_defconfig")=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20guix_defconfig)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(modify-defconfig=20guix_defconfig=20',configs)=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20,@(if=20extra-version=0A+=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20`((setenv=20=
"EXTRAVERSION"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20,(string-append=20"-"=20=
extra-version)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20'())=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(invoke=20"make"=20"guix_defconfig"))=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20#t))))))=0A+=20=20=20=20(native-inputs=0A+=20=20=20=20=20=
(append=20(if=20(or=20(not=20defconfig)=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(string?=20defconfig))=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20'()=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20;;=20The=20defconfig=20should=20be=20a=20package=20=
or=20file-like=20object.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20`(("guix_defconfig"=20,defconfig)))=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20(package-native-inputs=20linux)))))=0A+=0A+(define-public=20=
(make-defconfig=20uri=20sha256-as-base32)=0A+=20=20(origin=20(method=20=
url-fetch)=0A+=20=20=20=20=20=20=20=20=20=20(uri=20uri)=0A+=20=20=20=20=20=
=20=20=20=20=20(sha256=20(base32=20sha256-as-base32))))=0A=20=0A=20=0C=0A=
=20;;;=0A=

--Apple-Mail=_B617970F-0E65-4178-8B28-B9F0969B3830
Content-Disposition: attachment;
	filename=05-gnu-raspberry-pi-add-defconfig
Content-Type: application/octet-stream;
	name="05-gnu-raspberry-pi-add-defconfig"
Content-Transfer-Encoding: quoted-printable

gnu:=20raspberry-pi:=20Add=20defconfig=20objects=20to=20build=20=
customized=20Linux=20kernels.=0A=0AFrom:=20Stefan=20=
<stefan-guix@HIDDEN>=0A=0Agnu/packages/raspberry-pi.scm=20=
(make-raspi-defconig):=20New=20function=20to=20make=0Adownloaded=20=
defconfig=20objects=20from=20the=20Linux=20repository=20of=20the=20=
Raspberry=20Pi=0AFoundation.=0A(%bcm2709-defconfig,=20=
%bcm2710-defconfig,=20%bcm2711-defconfig,=0A%bcm2835-defconfig,=20=
%bcmrpi-defconfig,=20%bcm2711-defconfig-64,=0A%bcmrpi3-defconfig):=20New=20=
variables=20containing=20defconfig=20objects=20to=20build=0ALinux=20=
kernels=20customized=20for=20Raspberry=20Pi=20single=20board=20=
computers.=0A---=0A=20gnu/packages/raspberry-pi.scm=20|=20=20=2044=20=
++++++++++++++++++++++++++++++++++++++++-=0A=201=20file=20changed,=2043=20=
insertions(+),=201=20deletion(-)=0A=0Adiff=20--git=20=
a/gnu/packages/raspberry-pi.scm=20b/gnu/packages/raspberry-pi.scm=0A=
index=20bb38b8b218..a2ab300531=20100644=0A---=20=
a/gnu/packages/raspberry-pi.scm=0A+++=20b/gnu/packages/raspberry-pi.scm=0A=
@@=20-1,5=20+1,6=20@@=0A=20;;;=20GNU=20Guix=20---=20Functional=20package=20=
management=20for=20GNU=0A=20;;;=20Copyright=20=C2=A9=202020=20Danny=20=
Milosavljevic=20<dannym@HIDDEN>=0A+;;;=20Copyright=20=C2=A9=20=
2021=20Stefan=20<stefan-guix@HIDDEN>=0A=20;;;=0A=20;;;=20This=20=
file=20is=20part=20of=20GNU=20Guix.=0A=20;;;=0A@@=20-25,9=20+26,10=20@@=0A=
=20=20=20#:use-module=20(gnu=20packages=20commencement)=0A=20=20=20=
#:use-module=20(gnu=20packages=20cross-base)=0A=20=20=20#:use-module=20=
(gnu=20packages=20documentation)=0A+=20=20#:use-module=20(gnu=20packages=20=
embedded)=0A=20=20=20#:use-module=20(gnu=20packages=20file)=0A=20=20=20=
#:use-module=20(gnu=20packages=20gcc)=0A-=20=20#:use-module=20(gnu=20=
packages=20embedded)=0A+=20=20#:use-module=20(gnu=20packages=20linux)=0A=20=
=20=20#:use-module=20(guix=20build-system=20gnu)=0A=20=20=20#:use-module=20=
(guix=20download)=0A=20=20=20#:use-module=20(guix=20git-download)=0A@@=20=
-235,3=20+237,43=20@@=20Raspberry=20Pi.=20=20Note:=20It=20does=20not=20=
work=20on=20Raspberry=20Pi=201.")=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(install-file=20"arm64.bin"=20libexec)=0A=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20#t))))))))=0A=20=20=20=20=20(supported-systems=20=
'("aarch64-linux"))))=0A+=0A+(define=20(make-raspi-defconfig=20arch=20=
defconfig=20sha256-as-base32)=0A+=20=20"Make=20for=20the=20architecture=20=
ARCH=20a=20file-like=20object=20from=20the=20DEFCONFIG=20file=0A+with=20=
the=20hash=20SHA256-AS-BASE32.=20=20This=20object=20can=20be=20used=20as=20=
the=20#:defconfig=0A+argument=20of=20the=20function=20(modify-linux)."=0A=
+=20=20(make-defconfig=0A+=20=20=20(string-append=0A+=20=20=20=20=
"https://raw.githubusercontent.com/raspberrypi/linux/raspberrypi-kernel_1.=
20210430-1/arch/"=0A+=20=20=20=20arch=20"/configs/"=20defconfig)=0A+=20=20=
=20sha256-as-base32))=0A+=0A+(define-public=20%bcm2709-defconfig=0A+=20=20=
(make-raspi-defconfig=0A+=20=20=20"arm"=20"bcm2709_defconfig"=0A+=20=20=20=
"0yvrmid2jakl929d1mv00gidnqbf91ffhj61c9gl75f7km48811c"))=0A+=0A=
+(define-public=20%bcm2711-defconfig=0A+=20=20(make-raspi-defconfig=0A+=20=
=20=20"arm"=20"bcm2711_defconfig"=0A+=20=20=20=
"19hb6nwna7sk3b4rn5yjfhldrs3c1lv24q08w4gpa4xzh1byv7jj"))=0A+=0A=
+(define-public=20%bcm2835-defconfig=0A+=20=20(make-raspi-defconfig=0A+=20=
=20=20"arm"=20"bcm2835_defconfig"=0A+=20=20=20=
"17dmvabqvxwqn6lgv1x8rfh2wqf1r2xmm10nkdnrgwkmgv8bh2d5"))=0A+=0A=
+(define-public=20%bcmrpi-defconfig=0A+=20=20(make-raspi-defconfig=0A+=20=
=20=20"arm"=20"bcmrpi_defconfig"=0A+=20=20=20=
"0lcmr6nxdd53m3k8hqb5k6c5b7vbdgmfvcliqyl95snp45rxjjkw"))=0A+=0A=
+(define-public=20%bcm2711-defconfig-64=0A+=20=20(make-raspi-defconfig=0A=
+=20=20=20"arm64"=20"bcm2711_defconfig"=0A+=20=20=20=
"0xf38nczwinr0j8vhsn8nd8h4ysjn77xphg7xnssz04gclb7fndr"))=0A+=0A=
+(define-public=20%bcmrpi3-defconfig=0A+=20=20(make-raspi-defconfig=0A+=20=
=20=20"arm64"=20"bcmrpi3_defconfig"=0A+=20=20=20=
"01k098snd7kbmhz68j93mj2fwp39c56g9r8rgaw17js5r0w0zbhy"))=0A=

--Apple-Mail=_B617970F-0E65-4178-8B28-B9F0969B3830
Content-Disposition: attachment;
	filename=06-gnu-raspberry-pi-add-helpers
Content-Type: application/octet-stream;
	name="06-gnu-raspberry-pi-add-helpers"
Content-Transfer-Encoding: 7bit

gnu: raspberry-pi: Add helpers for config.txt file generation.

From: Stefan <stefan-guix@HIDDEN>

* gnu/packages/raspberry-pi.scm (raspi-config-file, raspi-custom-txt):
New functions.
(%raspi-config-txt, %raspi-bcm27-dtb-txt, %raspi-bcm28-dtb-txt
%raspi-u-boot-bootloader-txt): New variables.
---
 gnu/packages/raspberry-pi.scm |   53 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/gnu/packages/raspberry-pi.scm b/gnu/packages/raspberry-pi.scm
index a2ab300531..0707516f72 100644
--- a/gnu/packages/raspberry-pi.scm
+++ b/gnu/packages/raspberry-pi.scm
@@ -238,6 +238,59 @@ Raspberry Pi.  Note: It does not work on Raspberry Pi 1.")
                #t))))))))
     (supported-systems '("aarch64-linux"))))
 
+(define-public (raspi-config-file name content)
+  "Make a configuration file like config.txt for the Raspberry Pi firmware.
+CONTENT can be a list of strings, which are concatenated with a newline
+character.  Alternatively CONTENT can be a string with the full file content."
+  (plain-file
+   name
+   (if (list? content)
+       (string-join content "\n" 'suffix)
+       content)))
+
+(define-public %raspi-config-txt
+  ;; A config.txt file to start the ARM cores up in 64-bit mode if necessary
+  ;; and to include a dtb.txt, bootloader.txt, and a custom.txt, each with
+  ;; separated configurations for the Raspberry Pi firmware.
+  (raspi-config-file
+   "config.txt"
+   `("# See https://www.raspberrypi.org/documentation/configuration/config-txt/README.md for details."
+     ""
+     ,(string-append "arm_64bit=" (if (target-aarch64?) "1" "0"))
+     "include dtb.txt"
+     "include bootloader.txt"
+     "include custom.txt")))
+
+(define-public %raspi-bcm27-dtb-txt
+  ;; A dtb.txt file to be included by the config.txt to ensure that the
+  ;; downstream device tree files bcm27*.dtb will be used.
+  (raspi-config-file
+   "dtb.txt"
+   "upstream_kernel=0"))
+
+(define-public %raspi-bcm28-dtb-txt
+  ;; A dtb.txt file to be included by the config.txt to ensure that the
+  ;; upstream device tree files bcm28*.dtb will be used.
+  ;; This also implies the use of the dtoverlay=upstream.
+  (raspi-config-file
+   "dtb.txt"
+   "upstream_kernel=1"))
+
+(define-public %raspi-u-boot-bootloader-txt
+  ;; A bootloader.txt file to be included by the config.txt to load the
+  ;; U-Boot bootloader.
+  (raspi-config-file
+   "bootloader.txt"
+   '("dtoverlay=upstream"
+     "enable_uart=1"
+     "kernel=u-boot.bin")))
+
+(define-public (raspi-custom-txt content)
+  "Make a custom.txt file for the Raspberry Pi firmware.
+CONTENT can be a list of strings, which are concatenated with a newline
+character.  Alternatively CONTENT can be a string with the full file content."
+  (raspi-config-file "custom.txt" content))
+
 (define (make-raspi-defconfig arch defconfig sha256-as-base32)
   "Make for the architecture ARCH a file-like object from the DEFCONFIG file
 with the hash SHA256-AS-BASE32.  This object can be used as the #:defconfig

--Apple-Mail=_B617970F-0E65-4178-8B28-B9F0969B3830
Content-Disposition: attachment;
	filename=07-gnu-raspberry-pi-new-function
Content-Type: application/octet-stream;
	name="07-gnu-raspberry-pi-new-function"
Content-Transfer-Encoding: 7bit

gnu: raspberry-pi: New function to make a package with device-tree files.

From: Stefan <stefan-guix@HIDDEN>

* gnu/packages/raspberry-pi.scm (make-raspi-bcm28-dtbs): New function to make
a package with device-tree files for Raspberry Pi models from the kernel given
as argument.
---
 gnu/packages/raspberry-pi.scm |   21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/raspberry-pi.scm b/gnu/packages/raspberry-pi.scm
index 0707516f72..d808f61ac2 100644
--- a/gnu/packages/raspberry-pi.scm
+++ b/gnu/packages/raspberry-pi.scm
@@ -30,6 +30,7 @@
   #:use-module (gnu packages file)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages linux)
+  #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -291,6 +292,26 @@ CONTENT can be a list of strings, which are concatenated with a newline
 character.  Alternatively CONTENT can be a string with the full file content."
   (raspi-config-file "custom.txt" content))
 
+(define-public (make-raspi-bcm28-dtbs linux)
+  "Make a package with the device-tree files for Raspberry Pi models from the
+kernel LINUX."
+  (package
+    (inherit linux)
+    (name "raspi-bcm28-dtbs")
+    (source #f)
+    (build-system copy-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases (delete 'unpack))
+       #:install-plan
+       (list (list (string-append (assoc-ref %build-inputs "linux")
+                                  "/lib/dtbs/broadcom/")
+                   "." #:include-regexp '("/bcm....-rpi.*\\.dtb")))))
+    (inputs `(("linux" ,linux)))
+    (synopsis "Device-tree files for a Raspberry Pi")
+    (description
+     (simple-format #f "The device-tree files for Raspberry Pi models from ~a."
+             (package-name linux)))))
+
 (define (make-raspi-defconfig arch defconfig sha256-as-base32)
   "Make for the architecture ARCH a file-like object from the DEFCONFIG file
 with the hash SHA256-AS-BASE32.  This object can be used as the #:defconfig

--Apple-Mail=_B617970F-0E65-4178-8B28-B9F0969B3830
Content-Disposition: attachment;
	filename=08-gnu-raspberry-pi-add-a
Content-Type: application/octet-stream;
	name="08-gnu-raspberry-pi-add-a"
Content-Transfer-Encoding: 7bit

gnu: raspberry-pi: Add a bootloader-chain for the Raspberry Pi and os examples.

From: Stefan <stefan-guix@HIDDEN>

* gnu/packages/raspberry-pi.scm (grub-efi-bootloader-chain-raspi-64): New
bootloader variable, capable to boot a Raspberry Pi over network or from a
local storage.
* gnu/system/examples/raspberry-pi-64.tmpl: New operating-system example.
* gnu/system/examples/raspberry-pi-64-nfs-root.tmpl: New operating-system
example for booting over network.
---
 gnu/packages/raspberry-pi.scm                     |   19 +++++
 gnu/system/examples/raspberry-pi-64-nfs-root.tmpl |   73 ++++++++++++++++++++
 gnu/system/examples/raspberry-pi-64.tmpl          |   77 +++++++++++++++++++++
 3 files changed, 169 insertions(+)
 create mode 100644 gnu/system/examples/raspberry-pi-64-nfs-root.tmpl
 create mode 100644 gnu/system/examples/raspberry-pi-64.tmpl

diff --git a/gnu/packages/raspberry-pi.scm b/gnu/packages/raspberry-pi.scm
index d808f61ac2..d52a4a72c5 100644
--- a/gnu/packages/raspberry-pi.scm
+++ b/gnu/packages/raspberry-pi.scm
@@ -18,11 +18,14 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages raspberry-pi)
+  #:use-module (gnu bootloader)
+  #:use-module (gnu bootloader grub)
   #:use-module (gnu packages)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
+  #:use-module (gnu packages bootloaders)
   #:use-module (gnu packages commencement)
   #:use-module (gnu packages cross-base)
   #:use-module (gnu packages documentation)
@@ -312,6 +315,22 @@ kernel LINUX."
      (simple-format #f "The device-tree files for Raspberry Pi models from ~a."
              (package-name linux)))))
 
+(define-public grub-efi-bootloader-chain-raspi-64
+  ;; A bootloader capable to boot a Raspberry Pi over network via TFTP or from
+  ;; a local storage like a micro SD card.
+  ;; It neither installs firmware nor device-tree files for the Raspberry Pi.
+  ;; It just assumes them to be existing in boot/efi in the same way that some
+  ;; UEFI firmware with ACPI data is usually assumed to be existing on PCs.
+  ;; It creates firmware configuration files and a bootloader-chain with U-Boot
+  ;; to provide an EFI API for the final GRUB bootloader.
+  ;; It also serves as a blue-print to create an own bootloader-chain with
+  ;; firmwre and device-tree packages or files.
+  (efi-bootloader-chain grub-efi-netboot-removable-bootloader
+                        #:packages (list u-boot-rpi-efi-64)
+                        #:files (list %raspi-config-txt
+                                      %raspi-bcm27-dtb-txt
+                                      %raspi-u-boot-bootloader-txt)))
+
 (define (make-raspi-defconfig arch defconfig sha256-as-base32)
   "Make for the architecture ARCH a file-like object from the DEFCONFIG file
 with the hash SHA256-AS-BASE32.  This object can be used as the #:defconfig
diff --git a/gnu/system/examples/raspberry-pi-64-nfs-root.tmpl b/gnu/system/examples/raspberry-pi-64-nfs-root.tmpl
new file mode 100644
index 0000000000..a1e41e3399
--- /dev/null
+++ b/gnu/system/examples/raspberry-pi-64-nfs-root.tmpl
@@ -0,0 +1,73 @@
+;; This is an operating-system configuration template of a
+;; 64-bit minimal system for a Raspberry Pi with an NFS root file-system.
+
+;; It neither installs firmware nor device-tree files for the Raspberry Pi.
+;; It just assumes them to be existing in boot/efi in the same way that some
+;; UEFI firmware with ACPI data is usually assumed to be existing on PCs.
+
+;; It expects the boot/efi directory to be served via TFTP and the root
+;; file-system to be served via NFS. See the grub-efi-netboot-bootloader
+;; description in the manual for more details.
+
+(use-modules (gnu)
+             (gnu artwork)
+             (gnu system nss))
+(use-service-modules admin
+                     avahi
+                     networking
+                     ssh)
+(use-package-modules certs
+                     linux
+                     raspberry-pi
+                     ssh)
+
+(define %my-public-key
+  (local-file (string-append (getenv "HOME") "/.ssh/id_ecdsa.pub")))
+
+(define-public raspberry-pi-64-nfs-root
+  (operating-system
+   (host-name "raspberrypi-guix")
+   (timezone "Europe/Berlin")
+   (bootloader (bootloader-configuration
+                (bootloader grub-efi-bootloader-chain-raspi-64)
+                (target "/boot/efi")
+                (theme (grub-theme (resolution '(1920 . 1080))
+                       (image (file-append
+                               %artwork-repository
+                               "/grub/GuixSD-fully-black-16-9.svg"))))))
+   (kernel-arguments '("ip=dhcp"))
+   (kernel (modify-linux #:linux linux-libre-arm64-generic
+                         #:extra-version "arm64-generic-netboot"
+                         #:configs '("CONFIG_NFS_SWAP=y"
+                                     "CONFIG_USB_USBNET=y"
+                                     "CONFIG_USB_LAN78XX=y"
+                                     "CONFIG_USB_NET_SMSC95XX=y")))
+   (initrd-modules '())
+   (file-systems (cons* (file-system
+                         (mount-point "/")
+                         (type "nfs")
+                         (device ":/export/raspberrypi/guix")
+                         (options "addr=10.20.30.40,vers=4.1"))
+                        %base-file-systems))
+   (swap-devices '("/run/swapfile"))
+   (users (cons* (user-account
+                  (name "pi")
+                  (group "users")
+                  (supplementary-groups '("wheel" "netdev" "audio" "video"))
+                  (home-directory "/home/pi"))
+                 %base-user-accounts))
+   (packages (cons* nss-certs
+                    openssh
+                    %base-packages))
+   (services (cons* (service avahi-service-type)
+                    (service dhcp-client-service-type)
+                    (service ntp-service-type)
+                    (service openssh-service-type
+                             (openssh-configuration
+                              (x11-forwarding? #t)
+                              (authorized-keys
+                              `(("pi" ,%my-public-key)))))
+                    %base-services))
+   (name-service-switch %mdns-host-lookup-nss)))
+
+raspberry-pi-64-nfs-root
diff --git a/gnu/system/examples/raspberry-pi-64.tmpl b/gnu/system/examples/raspberry-pi-64.tmpl
new file mode 100644
index 0000000000..7e18f00d86
--- /dev/null
+++ b/gnu/system/examples/raspberry-pi-64.tmpl
@@ -0,0 +1,77 @@
+;; This is an operating-system configuration template of a
+;; 64-bit minimal system for a Raspberry Pi with local storage.
+
+;; It neither installs firmware nor device-tree files for the Raspberry Pi.
+;; It just assumes them to be existing in boot/efi in the same way that some
+;; UEFI firmware with ACPI data is usually assumed to be existing on PCs.
+
+;; It expects the boot-partition to be mounted as boot/efi in the same way
+;; as it is usually expeted on PCs with UEFI firmware.
+
+(use-modules (gnu)
+             (gnu artwork)
+             (gnu system nss))
+(use-service-modules admin
+                     avahi
+                     networking
+                     ssh)
+(use-package-modules certs
+                     linux
+                     raspberry-pi
+                     ssh)
+
+(define %my-public-key
+  (local-file (string-append (getenv "HOME") "/.ssh/id_ecdsa.pub")))
+
+(define-public raspberry-pi-64
+  (operating-system
+   (host-name "raspberrypi-guix")
+   (timezone "Europe/Berlin")
+   (bootloader (bootloader-configuration
+                (bootloader grub-efi-bootloader-chain-raspi-64)
+                (target "/boot/efi")
+                (theme (grub-theme (resolution '(1920 . 1080))
+                       (image (file-append
+                               %artwork-repository
+                               "/grub/GuixSD-fully-black-16-9.svg"))))))
+   (kernel (modify-linux #:linux linux-libre-arm64-generic
+                         #| It is possible to use a specific defconfig file,
+                            for example the "bcmrpi3_defconfig" with the
+                            variable shown below.  Unfortunately the kernel
+                            build from the linux-libre sources with this
+                            defconfig file does not boot.
+                            #:extra-version "gnu-bcmrpi3"
+                            #:defconfig %bcmrpi3-defconfig
+                         |#))
+   (initrd-modules '())
+   (file-systems (cons* (file-system
+                         (mount-point "/")
+                         (type "ext4")
+                         (device (file-system-label "Guix")))
+                        (file-system
+                         (mount-point "/boot/efi")
+                         (type "vfat")
+                         (device (file-system-label "EFI")))
+                        %base-file-systems))
+   (swap-devices '("/run/swapfile"))
+   (users (cons* (user-account
+                  (name "pi")
+                  (group "users")
+                  (supplementary-groups '("wheel" "netdev" "audio" "video"))
+                  (home-directory "/home/pi"))
+                 %base-user-accounts))
+   (packages (cons* nss-certs
+                    openssh
+                    %base-packages))
+   (services (cons* (service avahi-service-type)
+                    (service dhcp-client-service-type)
+                    (service ntp-service-type)
+                    (service openssh-service-type
+                             (openssh-configuration
+                              (x11-forwarding? #t)
+                              (authorized-keys
+                              `(("pi" ,%my-public-key)))))
+                    %base-services))
+   (name-service-switch %mdns-host-lookup-nss)))
+
+raspberry-pi-64

--Apple-Mail=_B617970F-0E65-4178-8B28-B9F0969B3830--




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 28 Jul 2021 18:58:42 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jul 28 14:58:41 2021
Received: from localhost ([127.0.0.1]:55835 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1m8olN-0005XP-NN
	for submit <at> debbugs.gnu.org; Wed, 28 Jul 2021 14:58:41 -0400
Received: from smtpout2.vodafonemail.de ([145.253.239.133]:32864)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <stefan-guix@HIDDEN>) id 1m8olK-0005X7-Ar
 for 48314 <at> debbugs.gnu.org; Wed, 28 Jul 2021 14:58:40 -0400
Received: from smtp.vodafone.de (smtpa03.fra-mediabeam.com [10.2.0.34])
 by smtpout2.vodafonemail.de (Postfix) with ESMTP id 560CD122D71;
 Wed, 28 Jul 2021 20:58:31 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de;
 s=vfde-smtpout-mb-15sep; t=1627498711;
 bh=06bEoW6bE6MU4w77ND78YHNOa7pKCtdpGCcdk87Xf90=;
 h=Subject:From:In-Reply-To:Date:Cc:References:To;
 b=VsD5gqyF2bPJOZSZlEIPLkngszRKNojjO3SEMot5ul+/opqYEP3c5OY4+EVpXt9mO
 8jgNEzVhgiiGoww3NUciybPt0ziVx9rinT7Te1eLRnsfYWsjotjNB0vWCBUmjUoeQR
 KyF3Uz1a+mKA5a7EWqJzoNxBuz7yifQt5p7/x5oo=
Received: from macbook-pro.kuh-wiese.my-router.de
 (dslb-090-186-146-148.090.186.pools.vodafone-ip.de [90.186.146.148])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by smtp.vodafone.de (Postfix) with ESMTPSA id 3B730140202;
 Wed, 28 Jul 2021 18:58:30 +0000 (UTC)
Content-Type: text/plain; charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\))
Subject: Re: [bug#48314] Patches to install guix system on Raspberry Pi
From: Stefan <stefan-guix@HIDDEN>
In-Reply-To: <897B7FF7-24C1-4B96-8441-415596267E99@HIDDEN>
Date: Wed, 28 Jul 2021 20:58:35 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <BDB9E76C-37FF-4033-81C1-9D5F0AA575F2@HIDDEN>
References: <20210619211026.5eb44073@HIDDEN>
 <897B7FF7-24C1-4B96-8441-415596267E99@HIDDEN>
To: Danny Milosavljevic <dannym@HIDDEN>
X-Mailer: Apple Mail (2.3124)
X-purgate-type: clean
X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de
X-purgate: This mail is considered clean (visit http://www.eleven.de for
 further information)
X-purgate: clean
X-purgate-size: 145
X-purgate-ID: 155817::1627498711-00000B26-A20DB0B7/0/0
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 48314
Cc: Mark H Weaver <mhw@HIDDEN>, Leo Famulari <leo@HIDDEN>,
 48314 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Hi Danny!

Are there any news on this topic=C2=B9?


Bye

Stefan


=C2=B9 <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D48314>






Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 19 Jun 2021 20:22:00 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 19 16:22:00 2021
Received: from localhost ([127.0.0.1]:60869 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1luhTc-00012h-83
	for submit <at> debbugs.gnu.org; Sat, 19 Jun 2021 16:22:00 -0400
Received: from smtpout2.vodafonemail.de ([145.253.239.133]:36966)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <stefan-guix@HIDDEN>) id 1luhTY-00012R-9n
 for 48314 <at> debbugs.gnu.org; Sat, 19 Jun 2021 16:21:58 -0400
Received: from smtp.vodafone.de (smtpa08.fra-mediabeam.com [10.2.0.39])
 by smtpout2.vodafonemail.de (Postfix) with ESMTP id 84809122634;
 Sat, 19 Jun 2021 22:21:49 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de;
 s=vfde-smtpout-mb-15sep; t=1624134109;
 bh=VVo5vl+MNCaSaGEXEX14Lk/QUJS/ugQdht5XcdraNU4=;
 h=From:Subject:Date:References:Cc:In-Reply-To:To;
 b=EcoDqArbMZ7cQhGREh+47uqRey2kazCnL9RQwiENlQRU2/ia3s9j9JqenigTq+41w
 UY18NPTFKh0TYTLNxcFIRuKwexlXBsA8SgPf8qnyTvA2Ps8t9CTr0pL3wsGtN1lr6h
 PkQhqZbo0XjwDwi3JhqT/BWqng6T3KpCufYkFFyY=
Received: from smtpclient.apple
 (ipservice-092-212-012-132.092.212.pools.vodafone-ip.de [92.212.12.132])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp.vodafone.de (Postfix) with ESMTPSA id 98E6B140195;
 Sat, 19 Jun 2021 20:21:48 +0000 (UTC)
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
From: Stefan <stefan-guix@HIDDEN>
Mime-Version: 1.0 (1.0)
Subject: Re: [bug#48314] Patches to install guix system on Raspberry Pi
Date: Sat, 19 Jun 2021 22:21:48 +0200
Message-Id: <897B7FF7-24C1-4B96-8441-415596267E99@HIDDEN>
References: <20210619211026.5eb44073@HIDDEN>
In-Reply-To: <20210619211026.5eb44073@HIDDEN>
To: Danny Milosavljevic <dannym@HIDDEN>
X-Mailer: iPhone Mail (18F72)
X-purgate-type: clean
X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de
X-purgate: This mail is considered clean (visit http://www.eleven.de for
 further information)
X-purgate: clean
X-purgate-size: 2326
X-purgate-ID: 155817::1624134109-000006F1-2A6E2F08/0/0
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 48314
Cc: Mark H Weaver <mhw@HIDDEN>, Leo Famulari <leo@HIDDEN>,
 48314 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Hi!

> @Stefan: On the other hand, I'm not sure of the general utility of make-de=
fconfig.

There is currently no simple way change the Linux configuration. Also by mod=
ifying the final .config as of today (which kind of contains all CONFIG_=E2=80=
=A6-variables), as far as I know dependencies will not be resolved and confl=
icting configurations can easily happen.

A defconfig however gets striped down to a minimum of required CONFIG_=E2=80=
=A6-variables and all =E2=80=9Cmissing=E2=80=9D ones get either default valu=
es or get determined through dependecies. So adding /removing/changing some f=
ew configurations to a defconfig is less error-prone. Further defconfig file=
s are easier to maintain in git. There is a reason that only defconfig files=
 are maintained in the Linux sources.

Please note that the patch allows to select a defconfig file from the Linux s=
ources (if the parameter is a string), and also to provide an own defconfig f=
ile (if it is a file-like object).

> Sounds like a too weird special case to have general utility.

Well, there is the need already in Guix to have e.g. the predefined linux-li=
bre-arm64-generic kernel, wich just uses a certain defconfig file from the L=
inux sources. But this possibility is not exported.

There are many defconfig files for all sorts of boards, especially for arm32=
. Why shouldn=E2=80=99t we allow to use any of these? Why should users be re=
strict to =E2=80=9Cselected=E2=80=9D configurations? Why should Guix=E2=80=99=
 kernel configuration be preferred over the plain x86_64_defconfig?

And take a look at the last patch: In order to make that kernel boot on a Ra=
spberry from an NFS root, some few configurations are missing, which can eas=
ily be added with the =E2=80=9Cmodify-linux=E2=80=9D function. By the way, m=
aybe =E2=80=9Ccustomize-linux=E2=80=9D would be a better name.

And there is another patch from me to make the NFS root test pass. As the Li=
nux kernel build by Guix is not able to boot over NFS root in qemu, I used t=
he same function there to add the missing configurations.

Oh, and finally, I need the same underlying kconfig.scm and a similar defcon=
fig modification for U-Boot as well, which allowed me to simplify the existi=
ng U-Boot packages.


Bye

Stefan=




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 19 Jun 2021 19:18:55 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 19 15:18:55 2021
Received: from localhost ([127.0.0.1]:60838 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1lugUZ-0005ic-B4
	for submit <at> debbugs.gnu.org; Sat, 19 Jun 2021 15:18:55 -0400
Received: from smtpout2.vodafonemail.de ([145.253.239.133]:34382)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <stefan-guix@HIDDEN>) id 1lugUW-0005iP-Tt
 for 48314 <at> debbugs.gnu.org; Sat, 19 Jun 2021 15:18:53 -0400
Received: from smtp.vodafone.de (smtpa05.fra-mediabeam.com [10.2.0.36])
 by smtpout2.vodafonemail.de (Postfix) with ESMTP id 2814B122612;
 Sat, 19 Jun 2021 21:18:47 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de;
 s=vfde-smtpout-mb-15sep; t=1624130327;
 bh=BfdpO7Q+D/ERLQJCwim8nHIs4SI4Eo8TcLOeIgcCdZY=;
 h=From:Subject:Date:References:Cc:In-Reply-To:To;
 b=my2z6IRn288kJ34afj0DJsyecfqxDSMoyEPlWHAJ3c7uZ7L9IMFc0rMwa8V3cJvVU
 LDu2+DeTeTz0+PCZwzcQE1XLnNmEnN5q7IpNVnoQSGRuKv4K5AcKJ0pfj9ilLTvHyQ
 vWOph449urVTaLcuE3ckSyKFO5NDtOfvcy3YKhTY=
Received: from smtpclient.apple
 (ipservice-092-212-012-132.092.212.pools.vodafone-ip.de [92.212.12.132])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp.vodafone.de (Postfix) with ESMTPSA id 9863E140180;
 Sat, 19 Jun 2021 19:18:46 +0000 (UTC)
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
From: Stefan <stefan-guix@HIDDEN>
Mime-Version: 1.0 (1.0)
Subject: Re: [bug#48314] Patches to install guix system on Raspberry Pi
Date: Sat, 19 Jun 2021 21:18:46 +0200
Message-Id: <56852507-062B-4242-8584-488E691DCD84@HIDDEN>
References: <20210619210417.67c21720@HIDDEN>
In-Reply-To: <20210619210417.67c21720@HIDDEN>
To: Danny Milosavljevic <dannym@HIDDEN>
X-Mailer: iPhone Mail (18F72)
X-purgate-type: clean
X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de
X-purgate: This mail is considered clean (visit http://www.eleven.de for
 further information)
X-purgate: clean
X-purgate-size: 151
X-purgate-ID: 155817::1624130327-00000827-F88D74D5/0/0
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 48314
Cc: 48314 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Hi Danny!

> If it's alright with you, can we just drop #:name xxx and #:description xx=
x
> altogether

That=E2=80=99s OK.


Bye

Stefan=




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 19 Jun 2021 19:10:41 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 19 15:10:41 2021
Received: from localhost ([127.0.0.1]:60824 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1lugMb-0005WM-3a
	for submit <at> debbugs.gnu.org; Sat, 19 Jun 2021 15:10:41 -0400
Received: from smtpout2.vodafonemail.de ([145.253.239.133]:58738)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <stefan-guix@HIDDEN>) id 1lugMZ-0005Vx-0t
 for 48314 <at> debbugs.gnu.org; Sat, 19 Jun 2021 15:10:40 -0400
Received: from smtp.vodafone.de (smtpa04.fra-mediabeam.com [10.2.0.35])
 by smtpout2.vodafonemail.de (Postfix) with ESMTP id 0FB79120A08;
 Sat, 19 Jun 2021 21:10:32 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de;
 s=vfde-smtpout-mb-15sep; t=1624129832;
 bh=kwn29f707Ds93cXXwnV2HOAyUekUKP+t72N5whZ+cn0=;
 h=From:Subject:Date:References:Cc:In-Reply-To:To;
 b=Oop08xHrdop1rmFlf2wI0KT5paL3gz+9WwzNoeBCRzaaNdk/z80dX2kW5Vt5qBzOK
 /LlUlI5p/p/8h8JdczBzqMx4dCkWfm0xGr4XflH4rsGw2pBQhegOwU4NYMKeZUqco+
 jmr+GGV7Q22rJ6arFh8eJeYxwravSQM3dpYMo0aA=
Received: from smtpclient.apple
 (ipservice-092-212-012-132.092.212.pools.vodafone-ip.de [92.212.12.132])
 (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
 (No client certificate requested)
 by smtp.vodafone.de (Postfix) with ESMTPSA id ABB3614019F;
 Sat, 19 Jun 2021 19:10:31 +0000 (UTC)
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
From: Stefan <stefan-guix@HIDDEN>
Mime-Version: 1.0 (1.0)
Subject: Re: [bug#48314] Patches to install guix system on Raspberry Pi
Date: Sat, 19 Jun 2021 21:10:30 +0200
Message-Id: <D30A68B9-D3C1-4DF7-BE68-7ECE39EE296E@HIDDEN>
References: <20210619201311.7f3c5f60@HIDDEN>
In-Reply-To: <20210619201311.7f3c5f60@HIDDEN>
To: Danny Milosavljevic <dannym@HIDDEN>
X-Mailer: iPhone Mail (18F72)
X-purgate-type: clean
X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de
X-purgate: This mail is considered clean (visit http://www.eleven.de for
 further information)
X-purgate: clean
X-purgate-size: 407
X-purgate-ID: 155817::1624129831-00000699-81302983/0/0
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 48314
Cc: 48314 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Hi Danny!

> Since bug 43534 is closed, does that mean I can drop patch 01-gnu-qemu-dis=
able-tests-on.patch ?

Yes.

On the other side I have a bad experience with qemu substitutes for aarch64 a=
nd building qemu on a Raspberry takes a night and then still fails during th=
e test. I hope the substitute situation improves, otherwise this patch shoul=
d still be considered.


Bye

Stefan=




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 19 Jun 2021 19:10:31 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 19 15:10:31 2021
Received: from localhost ([127.0.0.1]:60821 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1lugMQ-0005Vn-TC
	for submit <at> debbugs.gnu.org; Sat, 19 Jun 2021 15:10:31 -0400
Received: from dd26836.kasserver.com ([85.13.145.193]:55860)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <dannym@HIDDEN>) id 1lugMP-0005Vd-AK
 for 48314 <at> debbugs.gnu.org; Sat, 19 Jun 2021 15:10:29 -0400
Received: from localhost (84-115-233-88.cable.dynamic.surfer.at
 [84.115.233.88])
 by dd26836.kasserver.com (Postfix) with ESMTPSA id 4E1B03363A83;
 Sat, 19 Jun 2021 21:10:28 +0200 (CEST)
Date: Sat, 19 Jun 2021 21:10:26 +0200
From: Danny Milosavljevic <dannym@HIDDEN>
To: Stefan <stefan-guix@HIDDEN>
Subject: Re: [bug#48314] Patches to install guix system on Raspberry Pi
Message-ID: <20210619211026.5eb44073@HIDDEN>
In-Reply-To: <53799D56-08BA-401A-BC09-81BA61736AAC@HIDDEN>
References: <19E4796A-B0DB-444F-8773-2E8D3EF6132D@HIDDEN>
 <53799D56-08BA-401A-BC09-81BA61736AAC@HIDDEN>
X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.32; x86_64-pc-linux-gnu)
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="Sig_/qEN/eaE_SGKCmQvvbRJsRQp";
 protocol="application/pgp-signature"; micalg=pgp-sha512
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 48314
Cc: Mark H Weaver <mhw@HIDDEN>, Leo Famulari <leo@HIDDEN>,
 48314 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

--Sig_/qEN/eaE_SGKCmQvvbRJsRQp
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Hi Mark,
Hi Leo,

could you look at 06-gnu-linux-new-function-to.patch of this patchset?

It provides the user a means of (slightly) editing kernel configs using a
high-level interface, called "modify-linux".

What do you think?

@Stefan: On the other hand, I'm not sure of the general utility of make-def=
config.
I've never needed something like it in decades.  Is it worth exporting as p=
ublic
from (gnu packages linux) ?  Sounds like a too weird special case to have g=
eneral
utility.

--Sig_/qEN/eaE_SGKCmQvvbRJsRQp
Content-Type: application/pgp-signature
Content-Description: OpenPGP digital signature

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAmDOQSIACgkQ5xo1VCww
uqX35Qf/UePQutH3t4R3n2mL1izoKqJD7RNq+4T6RYkC+Ic8I4w3+aig9akcAmR0
7WxTZ33N3bhhV05VrMH8kyZftlSQky6JfslqgxIkJXFZwi81Qf+2unr5+GAaVdy5
+ATIRs2/M4C+/Xs55dMoVaOpw4ZfhGcG4nVKLkt3UbUdxSA7ZS4B3V/UwvzpF2NQ
COTP9VzrqEzH8aVlGgWgOn/XuV4YxLMUrNFncTegjtDs/HVnq1NlhBkCwVGEw2+a
g7mF2O/QbEV2GKu12jipQWf6+fajBqCaNEuYSvwN/ny+x1p+f8PrB5+spBadFdwf
7rVmslqAuLXnUFV+4RClU3pRfjhGRg==
=qGer
-----END PGP SIGNATURE-----

--Sig_/qEN/eaE_SGKCmQvvbRJsRQp--




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 19 Jun 2021 19:04:26 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 19 15:04:25 2021
Received: from localhost ([127.0.0.1]:60805 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1lugGX-0005M4-Nb
	for submit <at> debbugs.gnu.org; Sat, 19 Jun 2021 15:04:25 -0400
Received: from dd26836.kasserver.com ([85.13.145.193]:55500)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <dannym@HIDDEN>) id 1lugGV-0005Lu-0h
 for 48314 <at> debbugs.gnu.org; Sat, 19 Jun 2021 15:04:24 -0400
Received: from localhost (84-115-233-88.cable.dynamic.surfer.at
 [84.115.233.88])
 by dd26836.kasserver.com (Postfix) with ESMTPSA id 589F13366D34;
 Sat, 19 Jun 2021 21:04:21 +0200 (CEST)
Date: Sat, 19 Jun 2021 21:04:17 +0200
From: Danny Milosavljevic <dannym@HIDDEN>
To: Stefan <stefan-guix@HIDDEN>
Subject: Re: [bug#48314] Patches to install guix system on Raspberry Pi
Message-ID: <20210619210417.67c21720@HIDDEN>
In-Reply-To: <53799D56-08BA-401A-BC09-81BA61736AAC@HIDDEN>
References: <19E4796A-B0DB-444F-8773-2E8D3EF6132D@HIDDEN>
 <53799D56-08BA-401A-BC09-81BA61736AAC@HIDDEN>
X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.32; x86_64-pc-linux-gnu)
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="Sig_/O5TIUvI4qrn+FQ=OYXBA7=3";
 protocol="application/pgp-signature"; micalg=pgp-sha512
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 48314
Cc: 48314 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

--Sig_/O5TIUvI4qrn+FQ=OYXBA7=3
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Hi Stefan,

In 04-gnu-bootloader-add-u-boot.patch, I think that having #:name is too ma=
gical
(it still only replaces part of the package name, and then still only after
substitution).  But if made non-magical, then it has too little benefit.

Likewise for #:description.

If it's alright with you, can we just drop #:name xxx and #:description xxx
altogether and instead do:

(define-public u-boot-rpi-3-efi
  (package
    (inherit
     (make-preinstalled-u-boot-package
      "rpi_3_32b"
      "arm-linux-gnueabihf"
      #:name "rpi-3-efi"
      #:configs %u-boot-rpi-efi-configs
      #:description %u-boot-rpi-efi-description-32-bit))
    (name "u-boot-rpi-3-efi")
    (description %u-boot-rpi-efi-description-32-bit)))

And similar for all the other u-boot definitions, and for
the usage of make-u-boot-package inside make-preinstalled-u-boot-package ?

Or are there upsides to doing it like you did it?

I'm aware that the same can be said for "board" ... which is used already.
However, that parameter is also used for something else, so it needs to be =
there.

NAME isn't used for anything else but for doing what a regular package inhe=
rit
could do anyway.  Is there a downside when using package inherit?

--Sig_/O5TIUvI4qrn+FQ=OYXBA7=3
Content-Type: application/pgp-signature
Content-Description: OpenPGP digital signature

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAmDOP7EACgkQ5xo1VCww
uqVAaAf9HBxCMDHNFiQOsIsHVDFut+nWPG+PQGUa/IvGqBZglqoAZU/PH1XpmAhB
kuF4mcd4OUl88BADffwa2ur3ymgdrxYZweOlEZNPg5GoqoJd9LoEGjBJdfU+l4kK
/aWZlDWxLSX1LLRZGO5vIydWdEO+ClzRPmVit1z6UnGCZOLrs2hpnxNVoAI/7VaK
aVLhfskhoiR98rUOH5RseV2vxzafpkWL7QEkMbnUieE8WnNmi4ziYWADlJmnJjBc
n0gIoIrKdKoITdRME1oJM1kt/E4wC0nK5vdzn9/JtnYlp3saHgxJb4wbSxWNcbLW
S22zXd1f9GsnncLbh9wtJJzCNdGgLQ==
=1Gd1
-----END PGP SIGNATURE-----

--Sig_/O5TIUvI4qrn+FQ=OYXBA7=3--




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 19 Jun 2021 18:13:15 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 19 14:13:15 2021
Received: from localhost ([127.0.0.1]:60776 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1lufT1-00049o-Jm
	for submit <at> debbugs.gnu.org; Sat, 19 Jun 2021 14:13:15 -0400
Received: from dd26836.kasserver.com ([85.13.145.193]:52764)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <dannym@HIDDEN>) id 1lufSz-00049g-Mq
 for 48314 <at> debbugs.gnu.org; Sat, 19 Jun 2021 14:13:14 -0400
Received: from localhost (84-115-233-88.cable.dynamic.surfer.at
 [84.115.233.88])
 by dd26836.kasserver.com (Postfix) with ESMTPSA id 0430133656BF;
 Sat, 19 Jun 2021 20:13:12 +0200 (CEST)
Date: Sat, 19 Jun 2021 20:13:11 +0200
From: Danny Milosavljevic <dannym@HIDDEN>
To: Stefan <stefan-guix@HIDDEN>
Subject: Re: [bug#48314] Patches to install guix system on Raspberry Pi
Message-ID: <20210619201311.7f3c5f60@HIDDEN>
In-Reply-To: <53799D56-08BA-401A-BC09-81BA61736AAC@HIDDEN>
References: <19E4796A-B0DB-444F-8773-2E8D3EF6132D@HIDDEN>
 <53799D56-08BA-401A-BC09-81BA61736AAC@HIDDEN>
X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.32; x86_64-pc-linux-gnu)
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="Sig_/7=OrwH2x/twUNYXbFYhssfB";
 protocol="application/pgp-signature"; micalg=pgp-sha512
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 48314
Cc: 48314 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

--Sig_/7=OrwH2x/twUNYXbFYhssfB
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Hi Stefan,

Since bug 43534 is closed, does that mean I can drop patch 01-gnu-qemu-disa=
ble-tests-on.patch ?

--Sig_/7=OrwH2x/twUNYXbFYhssfB
Content-Type: application/pgp-signature
Content-Description: OpenPGP digital signature

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAmDOM7gACgkQ5xo1VCww
uqVt6gf/YjZphtgKR4fzrQCi9gra8qv1hMqQvAPlE1MKha8AFUEPnHI29vIKX/pT
w2TUUEoh10mk0yfOD+V+WhU4YB3PyN1x6J86iAIF3dY9MPejh/vPWxUsMXsY3uVH
VyKDwYjfkHJbDlS3hr4wVXHic+IKixR3tBF4myXpyA5IVSqL/92Q1EWCTH9CVEby
5E9qH9tgGhoCbuCtYOSeNuhS+W5z2YirRaogcSRaNS7zzH7eNBWSxXuehfBYDHX+
+M5ZeJSu3bKghk2CK5x6ioxbGxe/lv97fy+vPtVN5OX7Nff5OQBrCc7yhdhoVe0b
AFsbNwinvUkU1xRhcNOSmQRMZcRJOg==
=QWVZ
-----END PGP SIGNATURE-----

--Sig_/7=OrwH2x/twUNYXbFYhssfB--




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 19 Jun 2021 18:11:10 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jun 19 14:11:10 2021
Received: from localhost ([127.0.0.1]:60772 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1lufR0-00046p-7k
	for submit <at> debbugs.gnu.org; Sat, 19 Jun 2021 14:11:10 -0400
Received: from dd26836.kasserver.com ([85.13.145.193]:52622)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <dannym@HIDDEN>) id 1lufQy-00046e-0V
 for 48314 <at> debbugs.gnu.org; Sat, 19 Jun 2021 14:11:09 -0400
Received: from localhost (84-115-233-88.cable.dynamic.surfer.at
 [84.115.233.88])
 by dd26836.kasserver.com (Postfix) with ESMTPSA id 3443533656BF;
 Sat, 19 Jun 2021 20:11:05 +0200 (CEST)
Date: Sat, 19 Jun 2021 20:11:03 +0200
From: Danny Milosavljevic <dannym@HIDDEN>
To: Stefan <stefan-guix@HIDDEN>
Subject: Re: [bug#48314] Patches to install guix system on Raspberry Pi
Message-ID: <20210619201103.69502840@HIDDEN>
In-Reply-To: <53799D56-08BA-401A-BC09-81BA61736AAC@HIDDEN>
References: <19E4796A-B0DB-444F-8773-2E8D3EF6132D@HIDDEN>
 <53799D56-08BA-401A-BC09-81BA61736AAC@HIDDEN>
X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.32; x86_64-pc-linux-gnu)
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="Sig_/B=p+e+FA=egdOIVZ1iBk4M6";
 protocol="application/pgp-signature"; micalg=pgp-sha512
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 48314
Cc: Mark H Weaver <mhw@HIDDEN>, Leo Famulari <leo@HIDDEN>,
 48314 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

--Sig_/B=p+e+FA=egdOIVZ1iBk4M6
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Hi Stefan,

Thanks!

Pushed 05-gnu-linux-correct-name-of.patch to guix master as commit b04cba9e=
e533945f90ffd72637f064c60188f945.

(I've also started testing the other patches of this patchset, but it will =
take a while)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 84ea849108..51e692a8c3 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -749,9 +749,9 @@ for ARCH and optionally VARIANT, or #f if there is no s=
uch configuration."
=20
 (define* (make-linux-libre version hash-string supported-systems
                            #:key
+                           (extra-version #f)
                            ;; A function that takes an arch and a variant.
                            ;; See kernel-config for an example.
-                           (extra-version #f)
                            (configuration-file #f)
                            (defconfig "defconfig")
                            (extra-options %default-extra-linux-options)
@@ -770,9 +770,9 @@ for ARCH and optionally VARIANT, or #f if there is no s=
uch configuration."
=20
 (define* (make-linux-libre* version source supported-systems
                             #:key
+                            (extra-version #f)
                             ;; A function that takes an arch and a variant.
                             ;; See kernel-config for an example.
-                            (extra-version #f)
                             (configuration-file #f)
                             (defconfig "defconfig")
                             (extra-options %default-extra-linux-options))
@@ -838,7 +838,8 @@ for ARCH and optionally VARIANT, or #f if there is no s=
uch configuration."
                  (format #t "`CROSS_COMPILE' set to `~a'~%"
                          (getenv "CROSS_COMPILE"))))
=20
-             (setenv "EXTRA_VERSION" ,extra-version)
+             (setenv "EXTRAVERSION" ,(and extra-version
+                                          (string-append "-" extra-version=
)))
=20
              (let ((build  (assoc-ref %standard-phases 'build))
                    (config (assoc-ref (or native-inputs inputs) "kconfig")=
))

--Sig_/B=p+e+FA=egdOIVZ1iBk4M6
Content-Type: application/pgp-signature
Content-Description: OpenPGP digital signature

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCgAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAmDOMzcACgkQ5xo1VCww
uqVnVgf+MFlQTHVvJg/06G3HbaXgAe0tqPql7swHL83tSPikO1XRB9VjGp2FdzSH
NqFiGnGhVwUboEH4x3i6DuK8BOPz2A6Xc8aUDG4taNr0Tc9rttde5qg7cOY5lzj5
4dJuDURrUvvM5HQir73Kb/kgkAqvpqLQMwESl6uYE6nPDdLZaQLXuSYclnkrVFAI
MpViIUWfEVuMJlKId59YnzSXcoTgFwHgFN7SO1dGAyjL9Dl4+EqQMWkUAR1UQ32s
oXEaapihBsIN+bkNA9iSDXSTM02mJvdg0vDjEsFARSIzsK4x1n/2TC7Um+Fzq6Hp
Dr2r5W3qo9c8pOvHYWxbdyjNCHN/Tw==
=f5GG
-----END PGP SIGNATURE-----

--Sig_/B=p+e+FA=egdOIVZ1iBk4M6--




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at 48314 <at> debbugs.gnu.org:


Received: (at 48314) by debbugs.gnu.org; 16 May 2021 12:46:55 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun May 16 08:46:55 2021
Received: from localhost ([127.0.0.1]:49801 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1liGAZ-0001fw-PA
	for submit <at> debbugs.gnu.org; Sun, 16 May 2021 08:46:55 -0400
Received: from smtpout2.vodafonemail.de ([145.253.239.133]:57230)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <stefan-guix@HIDDEN>) id 1liGAY-0001fi-CG
 for 48314 <at> debbugs.gnu.org; Sun, 16 May 2021 08:46:55 -0400
Received: from smtp.vodafone.de (smtpa05.fra-mediabeam.com [10.2.0.36])
 by smtpout2.vodafonemail.de (Postfix) with ESMTP id 3C3DF121686
 for <48314 <at> debbugs.gnu.org>; Sun, 16 May 2021 14:46:47 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de;
 s=vfde-smtpout-mb-15sep; t=1621169207;
 bh=+CER+tPC/zcEbcCZSFnOzSpE5YcxcaXM7jKZ1aklb/Y=;
 h=From:Subject:Date:To;
 b=HkKwcg/eoUtZGQZ54WX9hlvbU0wXAyEOpNHG9dUerAy1Ct/fLb+2XBSDHrNe9odGF
 vRSu+khY/NxyClphSM5qDsWGPdtuxD4QSg2gyfKMSnshvO7csKrJ8zMg/f9b3zPbCG
 HpmQn2GnQ0ndIua6xm9LtZO5J0b9bulDmRqhvNMI=
Received: from macbook-pro.kuh-wiese.my-router.de
 (ipservice-092-218-117-017.092.218.pools.vodafone-ip.de [92.218.117.17])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by smtp.vodafone.de (Postfix) with ESMTPSA id C22F91401A2
 for <48314 <at> debbugs.gnu.org>; Sun, 16 May 2021 12:46:46 +0000 (UTC)
From: Stefan <stefan-guix@HIDDEN>
Content-Type: multipart/mixed;
 boundary="Apple-Mail=_86284009-8FBA-4824-A8C2-0E82155DD3CC"
Subject: Patches to install guix system on Raspberry Pi
Message-Id: <53799D56-08BA-401A-BC09-81BA61736AAC@HIDDEN>
Date: Sun, 16 May 2021 14:46:45 +0200
To: 48314 <at> debbugs.gnu.org
Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\))
X-Mailer: Apple Mail (2.3124)
X-purgate-type: clean
X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de
X-purgate: This mail is considered clean (visit http://www.eleven.de for
 further information)
X-purgate: clean
X-purgate-size: 133401
X-purgate-ID: 155817::1621169207-00000827-41ED31CE/0/0
X-Debbugs-Envelope-To: 48314
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>


--Apple-Mail=_86284009-8FBA-4824-A8C2-0E82155DD3CC
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

Hi!

There were errors in the patches 05 and 06 in the EXTRAVERSION handling =
and in the modify-linux function.

Here an updated patch series. They apply to commit =
f661e6883ec345258634940ce5d52957e1bb90c3.


Bye

Stefan


--Apple-Mail=_86284009-8FBA-4824-A8C2-0E82155DD3CC
Content-Disposition: attachment;
	filename=01-gnu-qemu-disable-tests-on.patch
Content-Type: application/octet-stream;
	name="01-gnu-qemu-disable-tests-on.patch"
Content-Transfer-Encoding: 7bit

gnu: qemu: Disable tests on aarch64.

From: Stefan <stefan-guix@HIDDEN>

* gnu/packages/virtualization.scm (qemu): Disable tests on aarch64 because
of <https://bugs.gnu.org/43534>.
---
 gnu/packages/virtualization.scm |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index a2df3e763c..0f90a7feea 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -172,10 +172,11 @@
     (outputs '("out" "static" "doc"))   ;5.3 MiB of HTML docs
     (build-system gnu-build-system)
     (arguments
-     ;; FIXME: Disable tests on i686 to work around
-     ;; <https://bugs.gnu.org/40527>.
-     `(#:tests? ,(or (%current-target-system)
-                     (not (string=? "i686-linux" (%current-system))))
+     ;; FIXME: Disable tests on aarch64 and i686 to work around
+     ;; <https://bugs.gnu.org/43534> and <https://bugs.gnu.org/40527>.
+     `(#:tests? ,(and (not (target-aarch64?))
+                      (or (%current-target-system)
+                          (not (string=? "i686-linux" (%current-system)))))
        #:configure-flags
        (let ((gcc (string-append (assoc-ref %build-inputs "gcc") "/bin/gcc"))
              (out (assoc-ref %outputs "out")))

--Apple-Mail=_86284009-8FBA-4824-A8C2-0E82155DD3CC
Content-Disposition: attachment;
	filename=02-gnu-bootloader-rework-chaining.patch
Content-Type: application/octet-stream;
	name="02-gnu-bootloader-rework-chaining.patch"
Content-Transfer-Encoding: quoted-printable

gnu:=20bootloader:=20Rework=20chaining,=20add=20=
grub-efi-netboot-removable-bootloader.=0A=0AFrom:=20Stefan=20=
<stefan-guix@HIDDEN>=0A=0A*=20doc/guix.texi=20(Bootloader=20=
Configuration):=20Describe=20the=20new=0A=
=E2=80=98grub-efi-netboot-removable-bootloader=E2=80=99.=20=20Mention=20=
used=20sub-directories=20and=0Athat=20the=20UEFI=20Boot=20Manager=20is=20=
not=20modified.=20=20Advice=20to=20disable=20write-access=0Aover=20TFTP.=0A=
*=20gnu/bootloader.scm=20(efi-bootloader-profile):=20Allow=20a=20list=20=
of=20packages=20and=0Acollect=20everything=20directly=20in=20the=20=
profile,=20avoiding=20a=20separate=20collection=0Adirectory.=20=20=
Renamed=20the=20profile=20from=20"bootloader-profile"=20to=0A=
"efi-bootloader-profile".=0A[bootloader-collection]:=20Renamed=20to=20=
=E2=80=A6=0A[efi-bootloader-profile-hook]:=20=E2=80=A6=20this=20and=20=
removed=20unused=20modules=20and=20the=0Acreation=20of=20the=20now=20=
unneeded=20collection=20directory.=0A(efi-bootloader-chain):=20Added=20=
packages=20and=20disk-image-installer=20arguments.=0ARemoved=20handling=20=
of=20the=20collection=20directory,=20now=20only=20calling=20the=20given=0A=
installer=20procedure.=0A*=20gnu/bootloader/grub.scm=20=
(make-grub-efi-netboot-installer):=20New=20helper.=0A=
(make-grub-configuration):=20New=20helper=20based=20on=20=
(grub-configuration-file).=0AAdding=20grub=20argument,=20fixed=20=
indentation,=20removend=20code=20to=20get=20grub.=0A=
(grub-configuration-file):=20Now=20using=20(make-grub-configuration).=0A=
(grub-efi-configuration-file):=20New=20function=20using=20=
(make-grub-configuration).=0AInstead=20of=20getting=20the=20grub-efi=20=
package=20from=20the=20bootloader-configuration=0Athis=20function=20=
refers=20to=20the=20grub-efi=20package=20directly.=0A(grub-cfg):=20New=20=
variable=20to=20replace=20"/boot/grub/grub.cfg".=0A=
(install-grub-efi-netboot):=20Removed,=20the=20functionality=20got=20=
moved.=0A(make-grub-efi-netboot-installer):=20New=20helper=20function=20=
to=20return=20a=20customized=0Ainstaller=20for=20a=20certain=20=
efi-sub-directory.=20=20The=20installer=20basically=20copies=0Aa=20=
pre-installed=20efi-bootloader-profile,=20and=20adds=20needed=20symlinks=20=
for=20booting=0Aover=20network,=20or=20=E2=80=93=20on=20an=20ESP=20=E2=80=93=
=20an=20intermediate=20grub-cfg=20to=20load=20the=20final=0Agrub-cfg=20=
file.=0A(grub-bootloader):=20Now=20using=20the=20grub-cfg=20variable.=0A=
(grub-efi-bootloader):=20Now=20using=20the=20grub-cfg=20variable.=20=20=
Removed=20inheritance,=0Agiving=20complete=20set=20of=20fields.=0A=
(make-grub-efi-netboot-bootloader):=20New=20helper=20function.=0A=
(grub-efi-netboot-bootloader):=20Now=20using=20the=20helper.=0A=
(grub-efi-netboot-removable-bootloader):=20New=20bootloader=20using=20=
the=20helper.=0AIt=20uses=20the=20efi-sub-directory=20"efi/boot"=20for=20=
removable=20media.=0A*=20gnu/packages/bootloaders.scm=20=
(make-grub-efi-netboot):=20New=20function=20to=20return=0Aa=20grub-efi=20=
package=20pre-installed=20via=20grub-mknetdir,=20customized=20for=20an=0A=
efi-sub-directory=20and=20able=20to=20boot=20via=20network=20and=20local=20=
storage.=0A=0AThe=20rework=20allows=20to=20use=20an=20=
(efi-bootloader-chain)=20like=20this,=20which=20is=20able=0Ato=20boot=20=
over=20network=20or=20local=20storage,=20depending=20on=20the=20=
symlink-support=20at=0Athe=20bootloader-target:=0A=0A(operating-system=0A=
=20(bootloader=0A=20=20=20(bootloader-configuration=0A=20=20=20=20=20=
(bootloader=0A=20=20=20=20=20=20=20(efi-bootloader-chain=0A=20=20=20=20=20=
=20=20=20=20grub-efi-netboot-removable-bootloader=0A=20=20=20=20=20=20=20=
=20=20#:packages=20(list=20my-firmware-package=0A=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20my-u-boot-package)=0A=
=20=20=20=20=20=20=20=20=20#:files=20(list=20(plain-file=20"config.txt"=0A=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20"kernel=3Du-boot.bin"))=0A=20=20=20=20=20=20=
=20=20=20#:hooks=20my-special-bootloader-profile-manipulator))=0A=20=20=20=
=20=20(target=20"/booti/efi")=0A=20=20=20=20=20=E2=80=A6))=0A=20=E2=80=A6)=
=0A)=0A---=0A=20doc/guix.texi=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20|=20=20=2024=20+++-=0A=20gnu/bootloader.scm=20=20=20=20=20=20=20=20=20=
=20=20|=20=20104=20+++++++++---------=0A=20gnu/bootloader/grub.scm=20=20=20=
=20=20=20|=20=20241=20++++++++++++++++++++++++++----------------=0A=20=
gnu/packages/bootloaders.scm=20|=20=20=2090=20++++++++++++++++=0A=204=20=
files=20changed,=20308=20insertions(+),=20151=20deletions(-)=0A=0Adiff=20=
--git=20a/doc/guix.texi=20b/doc/guix.texi=0Aindex=20=
0947b9f028..40cef21f78=20100644=0A---=20a/doc/guix.texi=0A+++=20=
b/doc/guix.texi=0A@@=20-32595,8=20+32595,9=20@@=20The=20type=20of=20a=20=
bootloader=20configuration=20declaration.=0A=20@cindex=20BIOS,=20=
bootloader=0A=20The=20bootloader=20to=20use,=20as=20a=20=
@code{bootloader}=20object.=20=20For=20now=0A=20@code{grub-bootloader},=20=
@code{grub-efi-bootloader},=0A-@code{grub-efi-netboot-bootloader},=20=
@code{extlinux-bootloader}=20and=0A-@code{u-boot-bootloader}=20are=20=
supported.=0A+@code{grub-efi-netboot-bootloader},=0A=
+@code{grub-efi-netboot-removable-bootloader},=0A=
+@code{extlinux-bootloader}=20and=20@code{u-boot-bootloader}=20are=20=
supported.=0A=20=0A=20@cindex=20ARM,=20bootloaders=0A=20@cindex=20=
AArch64,=20bootloaders=0A@@=20-32622,9=20+32623,10=20@@=20build=20a=20=
diskless=20Guix=20system.=0A=20=0A=20The=20installation=20of=20the=20=
@code{grub-efi-netboot-bootloader}=20generates=20the=20content=0A=20of=20=
the=20TFTP=20root=20directory=20at=20@code{target}=0A-(@pxref{Bootloader=20=
Configuration,=20@code{target}}),=20to=20be=20served=20by=20a=20TFTP=20=
server.=0A-=20You=20may=20want=20to=20mount=20your=20TFTP=20server=20=
directory=20onto=20@code{target}=20to=20move=20the=0A-required=20files=20=
to=20the=20TFTP=20server=20automatically.=0A+(@pxref{Bootloader=20=
Configuration,=20@code{target}})=20below=20the=20sub-directory=0A=
+@file{efi/Guix},=20to=20be=20served=20by=20a=20TFTP=20server.=20=20You=20=
may=20want=20to=20mount=20your=20TFTP=0A+server=20directory=20onto=20=
@code{target}=20to=20move=20the=20required=20files=20to=20the=20TFTP=0A=
+server=20automatically=20during=20installation.=0A=20=0A=20If=20you=20=
plan=20to=20use=20an=20NFS=20root=20file=20system=20as=20well=20=
(actually=20if=20you=20mount=20the=0A=20store=20from=20an=20NFS=20=
share),=20then=20the=20TFTP=20server=20needs=20to=20serve=20the=20file=0A=
@@=20-32655,13=20+32657,23=20@@=20TFTP,=20for=20example=20by=20copying=20=
them=20into=20the=20TFTP=20root=20directory=20at=20@code{target}.=0A=20=
It=20is=20important=20to=20note=20that=20symlinks=20pointing=20outside=20=
the=20TFTP=20root=20directory=0A=20may=20need=20to=20be=20allowed=20in=20=
the=20configuration=20of=20your=20TFTP=20server.=20=20Further=20the=0A=20=
store=20link=20exposes=20the=20whole=20store=20through=20TFTP@.=20=20=
Both=20points=20need=20to=20be=0A-considered=20carefully=20for=20=
security=20aspects.=0A+considered=20carefully=20for=20security=20=
aspects.=20=20It=20is=20advised=20to=20disable=20any=20TFTP=0A+write=20=
access!=0A+=0A+Please=20note,=20that=20this=20bootloader=20will=20not=20=
modify=20the=20=E2=80=98UEFI=20Boot=20Manager=E2=80=99=20of=0A+the=20=
system.=0A=20=0A=20Beside=20the=20@code{grub-efi-netboot-bootloader},=20=
the=20already=20mentioned=20TFTP=20and=0A=20NFS=20servers,=20you=20also=20=
need=20a=20properly=20configured=20DHCP=20server=20to=20make=20the=20=
booting=0A=20over=20netboot=20possible.=20=20For=20all=20this=20we=20can=20=
currently=20only=20recommend=20you=20to=20look=0A=20for=20instructions=20=
about=20@acronym{PXE,=20Preboot=20eXecution=20Environment}.=0A=20=0A=
+@vindex=20grub-efi-netboot-removable-bootloader=0A=
+@code{grub-efi-netboot-removable-bootloader}=20is=20identical=20to=0A=
+@code{grub-efi-netboot-bootloader}=20with=20the=20exception=20that=20=
the=20sub-directory=0A+@file{efi/boot}=20will=20be=20used=20instead=20of=20=
@file{efi/Guix}=20to=20comply=20to=20the=20UEFI=0A+specification=20for=20=
removable=20media.=0A+=0A=20@item=20@code{target}=0A=20This=20is=20a=20=
string=20denoting=20the=20target=20onto=20which=20to=20install=20the=0A=20=
bootloader.=0Adiff=20--git=20a/gnu/bootloader.scm=20b/gnu/bootloader.scm=0A=
index=206d7352ddd2..f7c4a8f338=20100644=0A---=20a/gnu/bootloader.scm=0A=
+++=20b/gnu/bootloader.scm=0A@@=20-232,26=20+232,22=20@@=20record."=0A=20=
=20=20=20=20=20=20=20=20=20=20=20=20(force=20%bootloaders))=0A=20=20=20=20=
=20=20=20(leave=20(G_=20"~a:=20no=20such=20bootloader~%")=20name)))=0A=20=
=0A-(define=20(efi-bootloader-profile=20files=20bootloader-package=20=
hooks)=0A-=20=20"Creates=20a=20profile=20with=20BOOTLOADER-PACKAGE=20and=20=
a=20directory=20collection/=20with=0A-links=20to=20additional=20FILES=20=
from=20the=20store.=20=20This=20collection=20is=20meant=20to=20be=20used=0A=
-by=20the=20bootloader=20installer.=0A+(define=20(efi-bootloader-profile=20=
packages=20files=20hooks)=0A+=20=20"Creates=20a=20profile=20from=20the=20=
lists=20of=20PACKAGES=20and=20FILES=20from=20the=20store.=0A+This=20=
profile=20is=20meant=20to=20be=20used=20by=20the=20bootloader-installer.=0A=
=20=0A=20FILES=20is=20a=20list=20of=20file=20or=20directory=20names=20=
from=20the=20store,=20which=20will=20be=0A-symlinked=20into=20the=20=
collection/=20directory.=20=20If=20a=20directory=20name=20ends=20with=20=
'/',=0A-then=20the=20directory=20content=20instead=20of=20the=20=
directory=20itself=20will=20be=20symlinked=0A-into=20the=20collection/=20=
directory.=0A+symlinked=20into=20the=20profile.=20=20If=20a=20directory=20=
name=20ends=20with=20'/',=20then=20the=0A+directory=20content=20instead=20=
of=20the=20directory=20itself=20will=20be=20symlinked=20into=20the=0A=
+profile.=0A=20=0A-FILES=20may=20contain=20file=20like=20objects=20=
produced=20by=20functions=20like=20plain-file,=0A+FILES=20may=20contain=20=
file=20like=20objects=20produced=20by=20procedures=20like=20plain-file,=0A=
=20local-file,=20etc.,=20or=20package=20contents=20produced=20with=20=
file-append.=0A=20=0A=20HOOKS=20lists=20additional=20hook=20functions=20=
to=20modify=20the=20profile."=0A-=20=20(define=20(bootloader-collection=20=
manifest)=0A+=20=20(define=20(efi-bootloader-profile-hook=20manifest)=0A=20=
=20=20=20=20(define=20build=0A-=20=20=20=20=20=20=20=20=
(with-imported-modules=20'((guix=20build=20utils)=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(ice-9=20ftw)=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(srfi=20srfi-1)=0A-=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(srfi=20srfi-26))=0A+=20=20=20=20=20=20=20=20=
(with-imported-modules=20'((guix=20build=20utils))=0A=20=20=20=20=20=20=20=
=20=20=20=20#~(begin=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
(use-modules=20((guix=20build=20utils)=0A=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:select=20(mkdir-p=20=
strip-store-file-name))=0A@@=20-275,7=20+271,7=20@@=20HOOKS=20lists=20=
additional=20hook=20functions=20to=20modify=20the=20profile."=0A=20=20=20=
=20=20=20=20=20=20=20=20=20=20(define=20(name-is-store-entry?=20name)=0A=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20"Return=20#t=20if=20NAME=20is=20=
a=20direct=20store=20entry=20and=20nothing=20inside."=0A=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(not=20(string-index=20(strip-store-file-name=20=
name)=20#\/)))=0A-=20=20=20=20=20=20=20=20=20=20=20=20(let*=20=
((collection=20(string-append=20#$output=20"/collection"))=0A+=20=20=20=20=
=20=20=20=20=20=20=20=20(let*=20((output=20#$output)=0A=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(files=20'#$files)=0A=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(directories=20(filter=20=
name-ends-with-/?=20files))=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(names-from-directories=0A@@=20-284,11=20+280,11=20@@=20=
HOOKS=20lists=20additional=20hook=20functions=20to=20modify=20the=20=
profile."=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20directories))=0A=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20(names=20(append=20=
names-from-directories=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(remove=20=
name-ends-with-/?=20files))))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(mkdir-p=20collection)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(mkdir-p=20output)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20=
(every=20file-exists?=20names)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(begin=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(for-each=20(lambda=20(name)=0A-=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(symlink-to=20name=20collection=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(symlink-to=20name=20=
output=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20=
(name-is-store-entry?=20name)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20strip-store-file-name=0A=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20basename)))=0A@@=20=
-296,57=20+292,63=20@@=20HOOKS=20lists=20additional=20hook=20functions=20=
to=20modify=20the=20profile."=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20#t)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20#f)))))=0A=20=0A-=20=20=20=20(gexp->derivation=20=
"bootloader-collection"=0A+=20=20=20=20(gexp->derivation=20=
"efi-bootloader-profile"=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20build=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20#:local-build?=20#t=0A=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:substitutable?=20#f=0A=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:properties=0A=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
`((type=20.=20profile-hook)=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20(hook=20.=20bootloader-collection))))=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(hook=20.=20efi-bootloader-profile-hook))))=0A=20=0A-=20=20(profile=20=
(content=20(packages->manifest=20(list=20bootloader-package)))=0A-=20=20=20=
=20=20=20=20=20=20=20=20(name=20"bootloader-profile")=0A-=20=20=20=20=20=20=
=20=20=20=20=20(hooks=20(append=20(list=20bootloader-collection)=20=
hooks))=0A+=20=20(profile=20(content=20(packages->manifest=20packages))=0A=
+=20=20=20=20=20=20=20=20=20=20=20(name=20"efi-bootloader-profile")=0A+=20=
=20=20=20=20=20=20=20=20=20=20(hooks=20(cons=20=
efi-bootloader-profile-hook=20hooks))=0A=20=20=20=20=20=20=20=20=20=20=20=
=20(locales?=20#f)=0A=20=20=20=20=20=20=20=20=20=20=20=20=
(allow-collisions?=20#f)=0A=20=20=20=20=20=20=20=20=20=20=20=20=
(relative-symlinks?=20#f)))=0A=20=0A-(define*=20(efi-bootloader-chain=20=
files=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20final-bootloader=0A+(define*=20=
(efi-bootloader-chain=20final-bootloader=0A=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:key=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(packages=20'())=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(files=20=
'())=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20(hooks=20'())=0A-=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
installer)=0A-=20=20"Define=20a=20bootloader=20chain=20with=20=
FINAL-BOOTLOADER=20as=20the=20final=20bootloader=20and=0A-certain=20=
directories=20and=20files=20from=20the=20store=20given=20in=20the=20list=20=
of=20FILES.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20installer=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
disk-image-installer)=0A+=20=20"Define=20a=20chain=20of=20bootloaders=20=
with=20the=20FINAL-BOOTLOADER,=20optional=20PACKAGES,=0A+and=20optional=20=
directories=20and=20files=20from=20the=20store=20given=20in=20the=20list=20=
of=20FILES.=0A=20=0A-FILES=20may=20contain=20file=20like=20objects=20=
produced=20by=20functions=20like=20plain-file,=0A-local-file,=20etc.,=20=
or=20package=20contents=20produced=20with=20file-append.=20=20They=20=
will=20be=0A-collected=20inside=20a=20directory=20collection/=20inside=20=
a=20generated=20bootloader=20profile,=0A-which=20will=20be=20passed=20to=20=
the=20INSTALLER.=0A+The=20package=20of=20the=20FINAL-BOOTLOADER=20and=20=
all=20PACKAGES=20and=20FILES=20will=20be=20placed=0A+in=20an=20=
efi-bootloader-profile,=20which=20will=20be=20passed=20to=20the=20=
INSTALLER.=0A+=0A+FILES=20may=20contain=20file=20like=20objects=20=
produced=20by=20procedures=20like=20plain-file,=0A+local-file,=20etc.,=20=
or=20package=20contents=20produced=20with=20file-append.=0A=20=0A=20If=20=
a=20directory=20name=20in=20FILES=20ends=20with=20'/',=20then=20the=20=
directory=20content=20instead=0A-of=20the=20directory=20itself=20will=20=
be=20symlinked=20into=20the=20collection/=20directory.=0A+of=20the=20=
directory=20itself=20will=20be=20symlinked=20into=20the=20=
efi-bootloader-profile.=0A=20=0A=20The=20procedures=20in=20the=20HOOKS=20=
list=20can=20be=20used=20to=20further=20modify=20the=20bootloader=0A=20=
profile.=20=20It=20is=20possible=20to=20pass=20a=20single=20function=20=
instead=20of=20a=20list.=0A=20=0A-If=20the=20INSTALLER=20argument=20is=20=
used,=20then=20this=20function=20will=20be=20called=20to=20install=0A=
-the=20bootloader.=20=20Otherwise=20the=20installer=20of=20the=20=
FINAL-BOOTLOADER=20will=20be=20called."=0A-=20=20(let*=20=
((final-installer=20(or=20installer=0A-=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(bootloader-installer=20final-bootloader)))=0A-=20=20=20=20=20=20=20=20=20=
(profile=20(efi-bootloader-profile=20files=0A-=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(bootloader-package=20final-bootloader)=0A-=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20(list?=20hooks)=0A-=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20hooks=0A-=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(list=20=
hooks)))))=0A-=20=20=20=20(bootloader=0A-=20=20=20=20=20(inherit=20=
final-bootloader)=0A-=20=20=20=20=20(package=20profile)=0A-=20=20=20=20=20=
(installer=0A-=20=20=20=20=20=20#~(lambda=20(bootloader=20target=20=
mount-point)=0A-=20=20=20=20=20=20=20=20=20=20(#$final-installer=20=
bootloader=20target=20mount-point)=0A-=20=20=20=20=20=20=20=20=20=20=
(copy-recursively=0A-=20=20=20=20=20=20=20=20=20=20=20(string-append=20=
bootloader=20"/collection")=0A-=20=20=20=20=20=20=20=20=20=20=20=
(string-append=20mount-point=20target)=0A-=20=20=20=20=20=20=20=20=20=20=20=
#:follow-symlinks?=20#t=0A-=20=20=20=20=20=20=20=20=20=20=20#:log=20=
(%make-void-port=20"w")))))))=0A+If=20the=20INSTALLER=20argument=20is=20=
used,=20then=20this=20gexp=20procedure=20will=20be=20called=20to=0A=
+install=20the=20efi-bootloader-profile.=20=20Otherwise=20the=20=
installer=20of=20the=0A+FINAL-BOOTLOADER=20will=20be=20called.=0A+=0A+If=20=
the=20DISK-IMAGE-INSTALLER=20is=20used,=20then=20this=20gexp=20procedure=20=
will=20be=20called=0A+to=20install=20the=20efi-bootloader-profile=20into=20=
a=20disk-image.=20=20Otherwise=20the=0A+disk-image-installer=20of=20the=20=
FINAL-BOOTLOADER=20will=20be=20called."=0A+=20=20(bootloader=0A+=20=20=20=
=20(inherit=20final-bootloader)=0A+=20=20=20=20(name=20=
"efi-bootloader-chain")=0A+=20=20=20=20(package=0A+=20=20=20=20=20=
(efi-bootloader-profile=20(cons=20(bootloader-package=20=
final-bootloader)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20packages)=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20files=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(if=20(list?=20hooks)=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
hooks=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(list=20hooks))))=0A+=20=20=20=20=
(installer=0A+=20=20=20=20=20(or=20installer=0A+=20=20=20=20=20=20=20=20=20=
(bootloader-installer=20final-bootloader)))=0A+=20=20=20=20=
(disk-image-installer=0A+=20=20=20=20=20(or=20disk-image-installer=0A+=20=
=20=20=20=20=20=20=20=20(bootloader-disk-image-installer=20=
final-bootloader)))))=0Adiff=20--git=20a/gnu/bootloader/grub.scm=20=
b/gnu/bootloader/grub.scm=0Aindex=20ce146aba3c..c03a04818e=20100644=0A=
---=20a/gnu/bootloader/grub.scm=0A+++=20b/gnu/bootloader/grub.scm=0A@@=20=
-50,11=20+50,12=20@@=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
grub-theme-color-highlight=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
grub-theme-gfxmode=0A=20=0A-=20=20=20=20=20=20=20=20=20=20=20=20=
install-grub-efi-netboot=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
make-grub-efi-netboot-installer=0A=20=0A=20=20=20=20=20=20=20=20=20=20=20=
=20=20grub-bootloader=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
grub-efi-bootloader=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
grub-efi-netboot-bootloader=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
grub-efi-netboot-removable-bootloader=0A=20=20=20=20=20=20=20=20=20=20=20=
=20=20grub-mkrescue-bootloader=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
grub-minimal-bootloader=0A=20=0A@@=20-346,7=20+347,7=20@@=20code."=0A=20=20=
=20=20=20=20=20=20=20((or=20#f=20(?=20string?))=0A=20=20=20=20=20=20=20=20=
=20=20#~(format=20#f=20"search=20--file=20--set=20~a"=20#$file)))))=0A=20=
=0A-(define*=20(grub-configuration-file=20config=20entries=0A+(define*=20=
(make-grub-configuration=20grub=20config=20entries=0A=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20#:key=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(locale=20#f)=0A=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(system=20(%current-system))=0A@@=20-376,27=20=
+377,27=20@@=20when=20booting=20a=20root=20file=20system=20on=20a=20=
Btrfs=20subvolume."=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(initrd=20(normalize-file=20(menu-entry-initrd=20entry)=0A=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20device-mount-point=0A=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20store-directory-prefix)))=0A-=20=20=20=20=20=20=
=20=20=20;;=20Here=20DEVICE=20is=20the=20store=20and=20=
DEVICE-MOUNT-POINT=20is=20its=20mount=20point.=0A-=20=20=20=20=20=20=20=20=
=20;;=20Use=20the=20right=20file=20names=20for=20LINUX=20and=20INITRD=20=
in=20case=0A-=20=20=20=20=20=20=20=20=20;;=20DEVICE-MOUNT-POINT=20is=20=
not=20"/",=20meaning=20that=20the=20store=20is=20on=20a=0A-=20=20=20=20=20=
=20=20=20=20;;=20separate=20partition.=0A-=0A-=20=20=20=20=20=20=20=20=20=
;;=20When=20BTRFS-SUBVOLUME-FILE-NAME=20is=20defined,=20prepend=20it=20=
the=20linux=20and=0A-=20=20=20=20=20=20=20=20=20;;=20initrd=20paths,=20=
to=20allow=20booting=20from=20a=20Btrfs=20subvolume.=0A-=20=20=20=20=20=20=
=20=20=20#~(format=20port=20"menuentry=20~s=20{=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20;;=20Here=20DEVICE=20is=20the=20store=20and=20=
DEVICE-MOUNT-POINT=20is=20its=20mount=20point.=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20;;=20Use=20the=20right=20file=20names=20for=20LINUX=20and=20=
INITRD=20in=20case=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
DEVICE-MOUNT-POINT=20is=20not=20"/",=20meaning=20that=20the=20store=20is=20=
on=20a=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20separate=20partition.=0A=
+=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20When=20=
BTRFS-SUBVOLUME-FILE-NAME=20is=20defined,=20prepend=20it=20the=20linux=20=
and=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20initrd=20paths,=20to=20=
allow=20booting=20from=20a=20Btrfs=20subvolume.=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20#~(format=20port=20"menuentry=20~s=20{=0A=20=20=20~a=0A=20=20=
=20linux=20~a=20~a=0A=20=20=20initrd=20~a=0A=20}~%"=0A-=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20#$label=0A-=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20#$(grub-root-search=20device=20linux)=0A=
-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#$linux=20=
(string-join=20(list=20#$@arguments))=0A-=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20#$initrd))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20#$label=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20#$(grub-root-search=20device=20linux)=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
#$linux=20(string-join=20(list=20#$@arguments))=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20#$initrd))=0A=20=20=20=20=20=20=
=20=20=20=20=20(let=20((kernel=20(menu-entry-multiboot-kernel=20entry))=0A=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(arguments=20=
(menu-entry-multiboot-arguments=20entry))=0A=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(modules=20(menu-entry-multiboot-modules=20entry))=0A=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(root-index=201))=20=20=
=20=20=20=20=20=20=20=20=20=20;=20XXX=20EFI=20will=20need=20root-index=20=
2=0A-=20=20=20=20=20=20=20=20#~(format=20port=20"=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20#~(format=20port=20"=0A=20menuentry=20~s=20{=0A=20=20=20=
multiboot=20~a=20root=3Ddevice:hd0s~a~a~a=0A=20}~%"=0A@@=20-434,9=20=
+435,7=20@@=20menuentry=20~s=20{=0A=20=20=20(define=20locale-config=0A=20=
=20=20=20=20(let*=20((entry=20(first=20all-entries))=0A=20=20=20=20=20=20=
=20=20=20=20=20=20(device=20(menu-entry-device=20entry))=0A-=20=20=20=20=20=
=20=20=20=20=20=20(mount-point=20(menu-entry-device-mount-point=20=
entry))=0A-=20=20=20=20=20=20=20=20=20=20=20(bootloader=20=
(bootloader-configuration-bootloader=20config))=0A-=20=20=20=20=20=20=20=20=
=20=20=20(grub=20(bootloader-package=20bootloader)))=0A+=20=20=20=20=20=20=
=20=20=20=20=20(mount-point=20(menu-entry-device-mount-point=20entry)))=0A=
=20=20=20=20=20=20=20#~(let=20((locale=20#$(and=20locale=0A=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(locale-definition-source=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(locale-name->definition=20=
locale))))=0A@@=20-462,8=20+461,6=20@@=20set=20lang=3D~a~%"=0A=20=0A=20=20=
=20(define=20keyboard-layout-config=0A=20=20=20=20=20(let*=20((layout=20=
(bootloader-configuration-keyboard-layout=20config))=0A-=20=20=20=20=20=20=
=20=20=20=20=20(grub=20=20=20(bootloader-package=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=
(bootloader-configuration-bootloader=20config)))=0A=20=20=20=20=20=20=20=20=
=20=20=20=20(keymap*=20(and=20layout=0A=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(keyboard-layout-file=20layout=20=
#:grub=20grub)))=0A=20=20=20=20=20=20=20=20=20=20=20=20(entry=20(first=20=
all-entries))=0A@@=20-514,6=20+511,16=20@@=20fi~%"))))=0A=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20#:options=20'(#:local-build?=20#t=0A=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20#:substitutable?=20#f)))=0A=20=0A+(define=20=
(grub-configuration-file=20config=20.=20args)=0A+=20=20(let*=20=
((bootloader=20(bootloader-configuration-bootloader=20config))=0A+=20=20=20=
=20=20=20=20=20=20(grub=20(bootloader-package=20bootloader)))=0A+=20=20=20=
=20(apply=20make-grub-configuration=20grub=20config=20args)))=0A+=0A=
+(define=20(grub-efi-configuration-file=20.=20args)=0A+=20=20(apply=20=
make-grub-configuration=20grub-efi=20args))=0A+=0A+(define=20grub-cfg=20=
"/boot/grub/grub.cfg")=0A+=0A=20=0C=0A=20=0A=20;;;=0A@@=20-607,42=20=
+614,31=20@@=20fi~%"))))=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20"--bootloader-id=3DGuix"=0A=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20"--efi-directory"=20=
target-esp)))))=0A=20=0A-(define=20(install-grub-efi-netboot=20subdir)=0A=
-=20=20"Define=20a=20grub-efi-netboot=20bootloader=20installer=20for=20=
installation=20in=20SUBDIR,=0A-which=20is=20usually=20efi/Guix=20or=20=
efi/boot."=0A-=20=20(let*=20((system=20(string-split=20=
(nix-system->gnu-triplet=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(or=20=
(%current-target-system)=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(%current-system)))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20#\-))=0A-=20=20=20=20=20=20=20=20=
=20(arch=20(first=20system))=0A-=20=20=20=20=20=20=20=20=20=
(boot-efi-link=20(match=20system=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20These=20are=20the=20=
supportend=20systems=20and=20the=20names=0A-=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20defined=20by=20the=20=
UEFI=20standard=20for=20removable=20media.=0A-=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(("i686"=20_=20...)=20=
=20=20=20=20=20=20=20"/bootia32.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(("x86_64"=20_=20...)=20=20=20=
=20=20=20"/bootx64.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(("arm"=20_=20...)=20=20=20=20=20=20=20=20=
=20"/bootarm.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(("aarch64"=20_=20...)=20=20=20=20=20=
"/bootaa64.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(("riscv"=20_=20...)=20=20=20=20=20=20=20=
"/bootriscv32.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(("riscv64"=20_=20...)=20=20=20=20=20=
"/bootriscv64.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20;;=20Other=20systems=20are=20not=20supported,=20=
although=20defined.=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20;;=20(("riscv128"=20_=20...)=20=
"/bootriscv128.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20;;=20(("ia64"=20_=20...)=20=20=20=20=20=
"/bootia64.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20((_=20...)=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20#f)))=0A-=20=20=20=20=20=20=20=20=20(core-efi=20(string-append=0A-=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20This=20is=20=
the=20arch=20dependent=20file=20name=20of=20GRUB,=20e.g.=0A-=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20i368-efi/core.efi=20or=20=
arm64-efi/core.efi.=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(match=20arch=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20("i686"=20=20=20=20"i386")=0A-=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20("aarch64"=20"arm64")=0A-=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20("riscv"=20=20=20=
"riscv32")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20(_=20=20=20=20=20=20=20=20=20arch))=0A-=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20"-efi/core.efi")))=0A-=20=20=20=20=
(with-imported-modules=0A-=20=20=20=20=20'((guix=20build=20union))=0A-=20=
=20=20=20=20#~(lambda=20(bootloader=20target=20mount-point)=0A-=20=20=20=20=
=20=20=20=20=20"Install=20the=20BOOTLOADER,=20which=20must=20be=20the=20=
package=20grub,=20as=20e.g.=0A-bootx64.efi=20or=20bootaa64.efi=20into=20=
SUBDIR,=20which=20is=20usually=20efi/Guix=20or=20efi/boot,=0A-below=20=
the=20directory=20TARGET=20for=20the=20system=20whose=20root=20is=20=
mounted=20at=20MOUNT-POINT.=0A+(define*=20=
(make-grub-efi-netboot-installer=20grub-efi=20grub-cfg=20subdir)=0A+=20=20=
"Make=20a=20bootloader-installer=20for=20a=20grub-efi-netboot=20=
bootloader,=20which=20expects=0A+its=20files=20in=20SUBDIR=20and=20its=20=
configuration=20file=20in=20GRUB-CFG.=0A+=0A+As=20a=20grub-efi-netboot=20=
package=20is=20already=20preinstalled=20by=20'grub-mknetdir',=20the=0A=
+installer=20basically=20copies=20all=20files=20from=20the=20=
bootloader-package=20(or=20profile)=0A+into=20the=20bootloader-target=20=
directory.=0A+=0A+Additionally=20for=20network=20booting=20over=20TFTP,=20=
two=20relative=20symlinks=20to=20the=20store=0A+and=20to=20the=20=
GRUB-CFG=20file=20are=20necessary.=20=20Due=20to=20this=20a=20TFTP=20=
root=20directory=20must=0A+not=20be=20located=20on=20a=20FAT=20=
file-system.=0A+=0A+If=20the=20bootloader-target=20does=20not=20support=20=
symlinks,=20then=20it=20is=20assumed=20to=20be=20a=0A+kind=20of=20EFI=20=
System=20Partition=20(ESP).=20=20In=20this=20case=20an=20intermediate=20=
configuration=0A+file=20is=20created=20with=20the=20help=20of=20GRUB-EFI=20=
to=20load=20the=20GRUB-CFG.=0A+=0A+The=20installer=20is=20usable=20for=20=
any=20efi-bootloader-chain,=20which=20prepares=20the=0A=
+bootloader-profile=20in=20a=20way=20ready=20for=20copying.=0A+=0A+The=20=
installer=20does=20not=20manipulate=20the=20system's=20'UEFI=20Boot=20=
Manager'."=0A+=20=20(with-imported-modules=20'((guix=20build=20union))=0A=
+=20=20=20=20#~(lambda=20(bootloader=20target=20mount-point)=0A+=20=20=20=
=20=20=20=20=20"Copy=20the=20BOOTLOADER,=20which=20must=20be=20a=20=
preinstalled=20grub-efi-netboot=0A+package=20with=20a=20SUBDIR=20like=20=
efi/boot=20or=20efi/Guix,=20below=20the=20directory=0A+TARGET=20for=20=
the=20system=20whose=20root=20is=20mounted=20at=20MOUNT-POINT.=0A=20=0A=20=
MOUNT-POINT=20is=20the=20last=20argument=20in=20'guix=20system=20init=20=
/etc/config.scm=20mnt/point'=0A=20or=20'/'=20for=20other=20'guix=20=
system'=20commands.=0A@@=20-651,17=20+647,18=20@@=20TARGET=20is=20the=20=
target=20argument=20given=20to=20the=20bootloader-configuration=20in=0A=20=
=0A=20(operating-system=0A=20=20(bootloader=20(bootloader-configuration=0A=
-=20=20=20=20=20=20=20=20=20=20=20=20=20=20(target=20\"/boot\")=0A+=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20(target=20\"/boot/efi\")=0A=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=E2=80=A6))=0A=20=20=E2=80=A6)=0A=20=0A=20=
TARGET=20is=20required=20to=20be=20an=20absolute=20directory=20name,=20=
usually=20mounted=20via=20NFS,=0A=20and=20finally=20needs=20to=20be=20=
provided=20by=20a=20TFTP=20server=20as=20the=20TFTP=20root=20directory.=0A=
=20=0A+Usually=20the=20installer=20will=20be=20used=20to=20prepare=20=
network=20booting=20over=20TFTP.=20=20Then=0A=20GRUB=20will=20load=20=
tftp://server/SUBDIR/grub.cfg=20and=20this=20file=20will=20instruct=20it=20=
to=0A=20load=20more=20files=20from=20the=20store=20like=20=
tftp://server/gnu/store/=E2=80=A6-linux=E2=80=A6/Image.=0A=20=0A-To=20=
make=20this=20possible=20two=20symlinks=20will=20be=20created.=20The=20=
first=20symlink=20points=0A+To=20make=20this=20possible=20two=20symlinks=20=
will=20be=20created.=20=20The=20first=20symlink=20points=0A=20relatively=20=
form=20MOUNT-POINT/TARGET/SUBDIR/grub.cfg=20to=0A=20=
MOUNT-POINT/boot/grub/grub.cfg,=20and=20the=20second=20symlink=20points=20=
relatively=20from=0A=20MOUNT-POINT/TARGET/%store-prefix=20to=20=
MOUNT-POINT/%store-prefix.=0A@@=20-671,34=20+668,78=20@@=20paths=20on=20=
the=20TFTP=20server=20side=20are=20unknown.=0A=20=0A=20It=20is=20also=20=
important=20to=20note=20that=20both=20symlinks=20will=20point=20outside=20=
the=20TFTP=20root=0A=20directory=20and=20that=20the=20=
TARGET/%store-prefix=20symlink=20makes=20the=20whole=20store=0A=
-accessible=20via=20TFTP.=20Possibly=20the=20TFTP=20server=20must=20be=20=
configured=0A-to=20allow=20accesses=20outside=20its=20TFTP=20root=20=
directory.=20This=20may=20need=20to=20be=0A-considered=20for=20security=20=
aspects."=0A-=20=20=20=20=20=20=20=20=20(use-modules=20((guix=20build=20=
union)=20#:select=20(symlink-relative)))=0A-=20=20=20=20=20=20=20=20=20=
(let*=20((net-dir=20(string-append=20mount-point=20target=20"/"))=0A-=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(sub-dir=20(string-append=20=
net-dir=20#$subdir=20"/"))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(store=20(string-append=20mount-point=20(%store-prefix)))=0A-=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20(store-link=20(string-append=20=
net-dir=20(%store-prefix)))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20(grub-cfg=20(string-append=20mount-point=20"/boot/grub/grub.cfg"))=0A=
-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(grub-cfg-link=20=
(string-append=20sub-dir=20(basename=20grub-cfg)))=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(boot-efi-link=20(string-append=20sub-dir=20=
#$boot-efi-link)))=0A-=20=20=20=20=20=20=20=20=20=20=20;;=20Prepare=20=
the=20symlink=20to=20the=20store.=0A-=20=20=20=20=20=20=20=20=20=20=20=
(mkdir-p=20(dirname=20store-link))=0A-=20=20=20=20=20=20=20=20=20=20=20=
(false-if-exception=20(delete-file=20store-link))=0A-=20=20=20=20=20=20=20=
=20=20=20=20(symlink-relative=20store=20store-link)=0A-=20=20=20=20=20=20=
=20=20=20=20=20;;=20Prepare=20the=20symlink=20to=20the=20grub.cfg,=20=
which=20points=20into=20the=20store.=0A-=20=20=20=20=20=20=20=20=20=20=20=
(mkdir-p=20(dirname=20grub-cfg-link))=0A-=20=20=20=20=20=20=20=20=20=20=20=
(false-if-exception=20(delete-file=20grub-cfg-link))=0A-=20=20=20=20=20=20=
=20=20=20=20=20(symlink-relative=20grub-cfg=20grub-cfg-link)=0A-=20=20=20=
=20=20=20=20=20=20=20=20;;=20Install=20GRUB,=20which=20refers=20to=20the=20=
grub.cfg,=20with=20support=20for=0A-=20=20=20=20=20=20=20=20=20=20=20;;=20=
encrypted=20partitions,=0A-=20=20=20=20=20=20=20=20=20=20=20(setenv=20=
"GRUB_ENABLE_CRYPTODISK"=20"y")=0A-=20=20=20=20=20=20=20=20=20=20=20=
(invoke/quiet=20(string-append=20bootloader=20"/bin/grub-mknetdir")=0A-=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(string-append=20"--net-directory=3D"=20net-dir)=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(string-append=20=
"--subdir=3D"=20#$subdir))=0A-=20=20=20=20=20=20=20=20=20=20=20;;=20=
Prepare=20the=20bootloader=20symlink,=20which=20points=20to=20core.efi=20=
of=20GRUB.=0A-=20=20=20=20=20=20=20=20=20=20=20(false-if-exception=20=
(delete-file=20boot-efi-link))=0A-=20=20=20=20=20=20=20=20=20=20=20=
(symlink=20#$core-efi=20boot-efi-link))))))=0A+accessible=20via=20TFTP.=20=
=20Possibly=20the=20TFTP=20server=20must=20be=20configured=20to=20allow=0A=
+accesses=20outside=20its=20TFTP=20root=20directory.=20=20This=20all=20=
may=20need=20to=20be=20considered=0A+for=20security=20aspects.=20=20It=20=
is=20advised=20to=20disable=20any=20TFTP=20write=20access!=0A+=0A+The=20=
installer=20can=20also=20be=20used=20to=20prepare=20booting=20from=20=
local=20storages,=20if=20the=0A+underlying=20file-system,=20like=20FAT=20=
on=20an=20EFI=20System=20Partition=20(ESP),=20does=20not=0A+support=20=
symlinks.=20=20In=20this=20case=20the=20=
MOUNT-POINT/TARGET/SUBDIR/grub.cfg=20will=20be=0A+created=20with=20the=20=
help=20of=20GRUB-EFI=20to=20load=20the=20/boot/grub/grub.cfg=20file.=20=20=
A=0A+symlink=20to=20the=20store=20is=20not=20needed=20in=20this=20case."=0A=
+=20=20=20=20=20=20=20=20;;=20In=20context=20of=20a=20disk=20image=20=
creation=20TARGET=20will=20be=20#f=20and=20an=0A+=20=20=20=20=20=20=20=20=
;;=20installer=20is=20expected=20to=20do=20necessary=20installations=20=
on=20MOUNT-POINT,=0A+=20=20=20=20=20=20=20=20;;=20which=20will=20become=20=
the=20root=20file=20system.=0A+=20=20=20=20=20=20=20=20;;=20If=20TARGET=20=
is=20#f,=20this=20installer=20has=20nothing=20to=20do,=20as=20it=20only=20=
cares=0A+=20=20=20=20=20=20=20=20;;=20about=20the=20EFI=20System=20=
Partition=20(ESP).=0A+=20=20=20=20=20=20=20=20(when=20target=0A+=20=20=20=
=20=20=20=20=20=20=20(use-modules=20((guix=20build=20union)=20#:select=20=
(symlink-relative))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20(ice-9=20popen)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(ice-9=20rdelim))=0A+=20=20=20=20=20=20=20=
=20=20=20(let*=20((mount-point/target=20(string-append=20mount-point=20=
target=20"/"))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
When=20installing=20Guix,=20it=20is=20common=20to=20mount=20TARGET=20=
below=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
MOUNT-POINT=20rather=20than=20the=20root=20directory.=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(bootloader-target=20(if=20=
(file-exists?=20mount-point/target)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20mount-point/target=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20target))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(store=20=
(string-append=20mount-point=20(%store-prefix)))=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20(store-link=20(string-append=20=
bootloader-target=20(%store-prefix)))=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20(grub-cfg=20(string-append=20mount-point=20=
#$grub-cfg))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(grub-cfg-link=20(string-append=20bootloader-target=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#$subdir=20"/"=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(basename=20=
grub-cfg))))=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20Copy=20the=20=
bootloader=20into=20the=20bootloader-target=20directory.=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20;;=20Should=20we=20beforehand=20recursively=20=
delete=20any=20existing=20file?=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
(copy-recursively=20bootloader=20bootloader-target=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
#:follow-symlinks?=20#t=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:log=20(%make-void-port=20=
"w"))=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20For=20TFTP=20we=20need=20=
to=20install=20additional=20relative=20symlinks.=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20;;=20If=20we=20install=20on=20an=20EFI=20System=20=
Partition=20(ESP)=20or=20some=20other=20FAT=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20;;=20file-system,=20then=20symlinks=20cannot=20be=20created=20=
and=20are=20not=20needed.=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
Therefore=20we=20ignore=20exceptions=20when=20trying.=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20;;=20Prepare=20the=20symlink=20to=20the=20grub.cfg.=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20(mkdir-p=20(dirname=20=
grub-cfg-link))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
(false-if-exception=20(delete-file=20grub-cfg-link))=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20(if=20(unspecified?=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(false-if-exception=20(symlink-relative=20grub-cfg=20=
grub-cfg-link)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
Symlinks=20are=20supported.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(begin=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20Prepare=20=
the=20symlink=20to=20the=20store.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(mkdir-p=20(dirname=20store-link))=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(false-if-exception=20(delete-file=20=
store-link))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(symlink-relative=20store=20store-link))=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20;;=20Creating=20symlinks=20does=20not=20seem=20to=20be=20=
supported.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20Probably=20=
an=20ESP=20is=20used.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
Instead=20we=20can=20script=20to=20search=20and=20load=20the=20actual=20=
grub.cfg.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20(let*=20((probe=20=
#$(file-append=20grub-efi=20"/sbin/grub-probe"))=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(port=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(open-pipe*=20OPEN_READ=20=
probe=20"--target=3Dfs_uuid"=20grub-cfg))=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(search-root=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(match=20(read-line=20port)=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20((?=20eof-object?)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20;;=20There=20is=20no=20UUID=20=
available.=20As=20a=20fallback=20search=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20everywhere=20for=20=
the=20grub.cfg.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(string-append=20"search=20--file=20--set=20"=20=
#$grub-cfg))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20(fs-uuid=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20;;=20The=20UUID=20to=20load=20the=20=
grub.cfg=20from=20is=20known.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20(string-append=20"search=20=
--fs-uuid=20--set=20"=20fs-uuid))))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(load-grub-cfg=20(string-append=20"configfile=20=
"=20#$grub-cfg)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(close-pipe=20port)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(with-output-to-file=20grub-cfg-link=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(lambda=20()=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(display=20(string-join=20(list=20search-root=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
load-grub-cfg)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
"\n")))))))))))=0A=20=0A=20=0C=0A=20=0A@@=20-716,7=20+757,7=20@@=20=
considered=20for=20security=20aspects."=0A=20=20=20=20(package=20grub)=0A=
=20=20=20=20(installer=20install-grub)=0A=20=20=20=20=
(disk-image-installer=20install-grub-disk-image)=0A-=20=20=20=
(configuration-file=20"/boot/grub/grub.cfg")=0A+=20=20=20=
(configuration-file=20grub-cfg)=0A=20=20=20=20=
(configuration-file-generator=20grub-configuration-file)))=0A=20=0A=20=
(define=20grub-minimal-bootloader=0A@@=20-726,17=20+767,29=20@@=20=
considered=20for=20security=20aspects."=0A=20=0A=20(define=20=
grub-efi-bootloader=0A=20=20=20(bootloader=0A-=20=20=20(inherit=20=
grub-bootloader)=0A+=20=20=20(name=20'grub-efi)=0A+=20=20=20(package=20=
grub-efi)=0A=20=20=20=20(installer=20install-grub-efi)=0A=20=20=20=20=
(disk-image-installer=20#f)=0A-=20=20=20(name=20'grub-efi)=0A-=20=20=20=
(package=20grub-efi)))=0A+=20=20=20(configuration-file=20grub-cfg)=0A+=20=
=20=20(configuration-file-generator=20grub-configuration-file)))=0A=20=0A=
-(define=20grub-efi-netboot-bootloader=0A+(define=20=
(make-grub-efi-netboot-bootloader=20name=20subdir)=0A=20=20=20=
(bootloader=0A-=20=20=20(inherit=20grub-efi-bootloader)=0A-=20=20=20=
(name=20'grub-efi-netboot-bootloader)=0A-=20=20=20(installer=20=
(install-grub-efi-netboot=20"efi/Guix"))))=0A+=20=20=20(name=20name)=0A+=20=
=20=20(package=20(make-grub-efi-netboot=20(symbol->string=20name)=20=
subdir))=0A+=20=20=20(installer=20(make-grub-efi-netboot-installer=20=
grub-efi=20grub-cfg=20subdir))=0A+=20=20=20(disk-image-installer=20#f)=0A=
+=20=20=20(configuration-file=20grub-cfg)=0A+=20=20=20=
(configuration-file-generator=20grub-efi-configuration-file)))=0A+=0A=
+(define=20grub-efi-netboot-bootloader=0A+=20=20=
(make-grub-efi-netboot-bootloader=20'grub-efi-netboot-bootloader=0A+=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20"efi/Guix"))=0A+=0A+(define=20=
grub-efi-netboot-removable-bootloader=0A+=20=20=
(make-grub-efi-netboot-bootloader=20=
'grub-efi-netboot-removable-bootloader=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
"efi/boot"))=0A=20=0A=20(define=20grub-mkrescue-bootloader=0A=20=20=20=
(bootloader=0Adiff=20--git=20a/gnu/packages/bootloaders.scm=20=
b/gnu/packages/bootloaders.scm=0Aindex=2056bef57cb7..32dae92531=20100644=0A=
---=20a/gnu/packages/bootloaders.scm=0A+++=20=
b/gnu/packages/bootloaders.scm=0A@@=20-15,6=20+15,7=20@@=0A=20;;;=20=
Copyright=20=C2=A9=202020=20Pierre=20Langlois=20=
<pierre.langlois@HIDDEN>=0A=20;;;=20Copyright=20=C2=A9=202021=20Vincent=20=
Legoll=20<vincent.legoll@HIDDEN>=0A=20;;;=20Copyright=20=C2=A9=202021=20=
Brice=20Waegeneire=20<brice@HIDDEN>=0A+;;;=20Copyright=20=C2=A9=20=
2021=20Stefan=20<stefan-guix@HIDDEN>=0A=20;;;=0A=20;;;=20This=20=
file=20is=20part=20of=20GNU=20Guix.=0A=20;;;=0A@@=20-65,13=20+66,17=20@@=0A=
=20=20=20#:use-module=20(gnu=20packages=20xorg)=0A=20=20=20#:use-module=20=
(gnu=20packages=20web)=0A=20=20=20#:use-module=20(guix=20build-system=20=
gnu)=0A+=20=20#:use-module=20(guix=20build-system=20trivial)=0A=20=20=20=
#:use-module=20(guix=20download)=0A+=20=20#:use-module=20(guix=20gexp)=0A=
=20=20=20#:use-module=20(guix=20git-download)=0A=20=20=20#:use-module=20=
((guix=20licenses)=20#:prefix=20license:)=0A=20=20=20#:use-module=20=
(guix=20packages)=0A=20=20=20#:use-module=20(guix=20utils)=0A=20=20=20=
#:use-module=20(srfi=20srfi-1)=0A=20=20=20#:use-module=20(srfi=20=
srfi-26)=0A+=20=20#:use-module=20(ice-9=20match)=0A+=20=20#:use-module=20=
(ice-9=20optargs)=0A=20=20=20#:use-module=20(ice-9=20regex))=0A=20=0A=20=
(define=20unifont=0A@@=20-353,6=20+358,91=20@@=20menu=20to=20select=20=
one=20of=20the=20installed=20operating=20systems.")=0A=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20(scandir=20input-dir))=0A=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20#t)))))))))=0A=20=0A=
+(define-public=20(make-grub-efi-netboot=20name=20subdir)=0A+=20=20"Make=20=
a=20grub-efi-netboot=20package=20named=20NAME,=20which=20will=20be=20=
able=20to=20boot=20over=0A+network=20via=20TFTP=20by=20accessing=20its=20=
files=20in=20the=20SUBDIR=20of=20a=20TFTP=20root=20directory.=0A+This=20=
package=20is=20also=20able=20to=20boot=20from=20local=20storage=20=
devices.=0A+=0A+A=20bootloader-installer=20basically=20needs=20to=20copy=20=
the=20package=20content=20into=20the=0A+bootloader-target=20directory,=20=
which=20will=20usually=20be=20the=20TFTP=20root,=20as=0A+'grub-mknetdir'=20=
will=20be=20invoked=20already=20during=20the=20package=20creation.=0A+=0A=
+Alternatively=20the=20bootloader-target=20directory=20can=20be=20a=20=
mounted=20EFI=20System=0A+Partition=20(ESP),=20or=20a=20similar=20=
partition=20with=20a=20FAT=20file=20system,=20for=20booting=0A+from=20=
local=20storage=20devices.=0A+=0A+The=20name=20of=20the=20GRUB=20EFI=20=
binary=20will=20conform=20to=20the=20UEFI=20specification=20for=0A=
+removable=20media.=20=20Depending=20on=20the=20system=20it=20will=20be=20=
e.g.=20bootx64.efi=20or=0A+bootaa64.efi=20below=20SUBDIR.=0A+=0A+The=20=
SUBDIR=20argument=20needs=20to=20be=20set=20to=20\"efi/boot\"=20to=20=
create=20a=20package=20which=0A+conforms=20to=20the=20UEFI=20=
specification=20for=20removable=20media.=0A+=0A+The=20SUBDIR=20argument=20=
defaults=20to=20\"efi/Guix\",=20as=20it=20is=20also=20the=20case=20for=0A=
+'grub-efi-bootloader'."=0A+=20=20(package=0A+=20=20=20=20(name=20name)=0A=
+=20=20=20=20(version=20(package-version=20grub-efi))=0A+=20=20=20=20;;=20=
Source=20is=20not=20needed,=20but=20it=20cannot=20be=20omitted.=0A+=20=20=
=20=20(source=20#f)=0A+=20=20=20=20(build-system=20trivial-build-system)=0A=
+=20=20=20=20(arguments=0A+=20=20=20=20=20(let*=20((system=20=
(string-split=20(nix-system->gnu-triplet=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(or=20(%current-target-system)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(%current-system)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#\-))=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20(arch=20(first=20system))=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20(boot-efi=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20(match=20=
system=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20These=20are=20=
the=20supportend=20systems=20and=20the=20names=20defined=20by=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20;;=20the=20UEFI=20standard=20for=20=
removable=20media.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(("i686"=20_=20...)=20=20=20=20=20=20=20=20"/bootia32.efi")=0A+=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(("x86_64"=20_=20...)=20=20=20=20=20=20=
"/bootx64.efi")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(("arm"=20=
_=20...)=20=20=20=20=20=20=20=20=20"/bootarm.efi")=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(("aarch64"=20_=20...)=20=20=20=20=20=
"/bootaa64.efi")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(("riscv"=20_=20...)=20=20=20=20=20=20=20"/bootriscv32.efi")=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20(("riscv64"=20_=20...)=20=20=20=20=20=
"/bootriscv64.efi")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
Other=20systems=20are=20not=20supported,=20although=20defined.=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20;;=20(("riscv128"=20_=20...)=20=
"/bootriscv128.efi")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
(("ia64"=20_=20...)=20=20=20=20=20"/bootia64.efi")=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20((_=20...)=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20#f)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20(core-efi=20=
(string-append=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20;;=20This=20is=20the=20arch=20dependent=20file=20name=20of=20=
GRUB,=20e.g.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20;;=20i368-efi/core.efi=20or=20arm64-efi/core.efi.=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(match=20=
arch=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20("i686"=20=20=20=20"i386")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20("aarch64"=20"arm64")=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
("riscv"=20=20=20"riscv32")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(_=20=20=20=20=20=20=20=20=20arch))=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
"-efi/core.efi")))=0A+=20=20=20=20=20=20=20`(#:modules=20((guix=20build=20=
utils))=0A+=20=20=20=20=20=20=20=20=20#:builder=0A+=20=20=20=20=20=20=20=20=
=20(begin=0A+=20=20=20=20=20=20=20=20=20=20=20(use-modules=20(guix=20=
build=20utils))=0A+=20=20=20=20=20=20=20=20=20=20=20(let*=20((bootloader=20=
(assoc-ref=20%build-inputs=20"grub-efi"))=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(net-dir=20(assoc-ref=20%outputs=20"out"))=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(sub-dir=20=
(string-append=20net-dir=20"/"=20,subdir=20"/"))=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(boot-efi=20(string-append=20sub-dir=20=
,boot-efi))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(core-efi=20(string-append=20sub-dir=20,core-efi)))=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20=20;;=20Install=20GRUB,=20which=20refers=20to=20the=20=
grub.cfg,=20with=20support=20for=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
;;=20encrypted=20partitions,=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
(setenv=20"GRUB_ENABLE_CRYPTODISK"=20"y")=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20(invoke/quiet=20(string-append=20bootloader=20=
"/bin/grub-mknetdir")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(string-append=20"--net-directory=3D"=20=
net-dir)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20(string-append=20"--subdir=3D"=20,subdir)=0A+=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
These=20modules=20must=20be=20preloaded=20to=20allow=20booting=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
;;=20from=20an=20ESP=20or=20a=20similar=20partition=20with=20a=20FAT=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20;;=20file=20system.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(string-append=20"--modules=3Dpart_msdos=20=
part_gpt=20fat"))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20Move=20=
GRUB's=20core.efi=20to=20the=20removable=20media=20name.=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20=20(false-if-exception=20(delete-file=20boot-efi))=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20(rename-file=20core-efi=20=
boot-efi))))))=0A+=20=20=20=20(inputs=20`(("grub-efi"=20,grub-efi)))=0A+=20=
=20=20=20(synopsis=20(package-synopsis=20grub-efi))=0A+=20=20=20=20=
(description=20(package-description=20grub-efi))=0A+=20=20=20=20=
(home-page=20(package-home-page=20grub-efi))=0A+=20=20=20=20(license=20=
(package-license=20grub-efi))))=0A+=0A=20(define-public=20syslinux=0A=20=20=
=20(let=20((commit=20"bb41e935cc83c6242de24d2271e067d76af3585c"))=0A=20=20=
=20=20=20(package=0A=

--Apple-Mail=_86284009-8FBA-4824-A8C2-0E82155DD3CC
Content-Disposition: attachment;
	filename=03-build-kconfig-add-new-module.patch
Content-Type: application/octet-stream;
	name="03-build-kconfig-add-new-module.patch"
Content-Transfer-Encoding: quoted-printable

build:=20kconfig:=20Add=20new=20module=20to=20modify=20a=20defconfig=20=
file.=0A=0AFrom:=20Stefan=20<stefan-guix@HIDDEN>=0A=0A*=20=
guix/build/kconfig.scm=20(modify-defconfig):=20New=20file=20with=20a=20=
new=20function.=0A*=20gnu/packages/bootloaders.scm=20=
(make-u-boot-package,=0Amake-u-boot-sunxi64-package):=20Adding=20new=20=
key=20arguments=20to=20pass=20and/or=20modify=0Aa=20defconfig=20file.=0A=
(u-boot-am335x-boneblack,=20u-boot-pinebook,=20u-boot-novena):=20=
Simplify=20functions=0Aby=20using=20the=20new=20key=20arguments=20of=20=
the=20former=20functions.=0A*=20Makefile.am:=20Adding=20=
guix/build/kconfig.scm=20to=20MODULES.=0A---=0A=20Makefile.am=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20=20=20=201=20=0A=20=
gnu/packages/bootloaders.scm=20|=20=20=2087=20+++++++++++--------------=0A=
=20guix/build/kconfig.scm=20=20=20=20=20=20=20|=20=20148=20=
++++++++++++++++++++++++++++++++++++++++++=0A=203=20files=20changed,=20=
186=20insertions(+),=2050=20deletions(-)=0A=20create=20mode=20100644=20=
guix/build/kconfig.scm=0A=0Adiff=20--git=20a/Makefile.am=20b/Makefile.am=0A=
index=200129011ebf..c17a417703=20100644=0A---=20a/Makefile.am=0A+++=20=
b/Makefile.am=0A@@=20-217,6=20+217,7=20@@=20MODULES=20=3D=09=09=09=09=09=
\=0A=20=20=20guix/build/waf-build-system.scm=09=09\=0A=20=20=20=
guix/build/haskell-build-system.scm=09=09\=0A=20=20=20=
guix/build/julia-build-system.scm=09=09\=0A+=20=20guix/build/kconfig.scm=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20\=0A=
=20=20=20guix/build/linux-module-build-system.scm=09\=0A=20=20=20=
guix/build/store-copy.scm=09=09=09\=0A=20=20=20guix/build/json.scm=09=09=09=
=09\=0Adiff=20--git=20a/gnu/packages/bootloaders.scm=20=
b/gnu/packages/bootloaders.scm=0Aindex=2032dae92531..38cf933c22=20100644=0A=
---=20a/gnu/packages/bootloaders.scm=0A+++=20=
b/gnu/packages/bootloaders.scm=0A@@=20-717,8=20+717,9=20@@=20def=20=
test_ctrl_c"))=0A=20also=20initializes=20the=20boards=20(RAM=20etc).=20=20=
This=20package=20provides=20its=0A=20board-independent=20tools.")))=0A=20=
=0A-(define-public=20(make-u-boot-package=20board=20triplet)=0A-=20=20=
"Returns=20a=20u-boot=20package=20for=20BOARD=20cross-compiled=20for=20=
TRIPLET."=0A+(define*-public=20(make-u-boot-package=20board=20triplet=20=
#:key=20defconfig=20configs)=0A+=20=20"Returns=20a=20u-boot=20package=20=
for=20BOARD=20cross-compiled=20for=20TRIPLET=20with=20the=0A+optional=20=
DEFCONFIG=20file=20and=20optional=20configuration=20changes=20from=20=
CONFIGS."=0A=20=20=20(let=20((same-arch?=20(lambda=20()=0A=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(string=3D?=20=
(%current-system)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(gnu-triplet->nix-system=20=
triplet)))))=0A@@=20-736,8=20+737,11=20@@=20board-independent=20=
tools.")))=0A=20=20=20=20=20=20=20(arguments=0A=20=20=20=20=20=20=20=20=
`(#:modules=20((ice-9=20ftw)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(srfi=20srfi-1)=0A-=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(guix=20build=20utils)=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20(guix=20build=20=
gnu-build-system))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(guix=20build=20gnu-build-system)=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(guix=20build=20kconfig)=0A+=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(guix=20build=20utils))=0A=
+=20=20=20=20=20=20=20=20=20#:imported-modules=20=
(,@%gnu-build-system-modules=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(guix=20build=20kconfig))=0A=
=20=20=20=20=20=20=20=20=20=20#:test-target=20"test"=0A=20=20=20=20=20=20=
=20=20=20=20#:make-flags=0A=20=20=20=20=20=20=20=20=20=20(list=20=
"HOSTCC=3Dgcc"=0A@@=20-748,9=20+752,18=20@@=20board-independent=20=
tools.")))=0A=20=20=20=20=20=20=20=20=20=20(modify-phases=20=
%standard-phases=0A=20=20=20=20=20=20=20=20=20=20=20=20(replace=20=
'configure=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20(lambda*=20(#:key=20=
outputs=20make-flags=20#:allow-other-keys)=0A-=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20(let=20((config-name=20(string-append=20,board=20=
"_defconfig")))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(if=20(file-exists?=20(string-append=20"configs/"=20config-name))=0A-=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(apply=20invoke=20=
"make"=20`(,@make-flags=20,config-name))=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(let*=20((config-name=20(string-append=20,board=20=
"_defconfig"))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(config-file=20(string-append=20"configs/"=20config-name))=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(defconfig=20,defconfig)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(configs=20',configs))=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(when=20defconfig=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20;;=20Replace=20the=20board-specific=20=
defconfig=20with=20the=20given=20one.=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(copy-file=20defconfig=20config-file))=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20(file-exists?=20=
config-file)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20(begin=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(when=20configs=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(modify-defconfig=20config-file=20=
configs))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(apply=20invoke=20"make"=20`(,@make-flags=20,config-name)))=0A=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(begin=0A=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(display=20"Invalid=20board=20name.=20Valid=20board=20names=20are:"=0A=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(current-error-port))=0A@@=20-801,7=20+814,11=20@@=20=
board-independent=20tools.")))=0A=20=20=20(make-u-boot-package=20"malta"=20=
"mips64el-linux-gnuabi64"))=0A=20=0A=20(define-public=20=
u-boot-am335x-boneblack=0A-=20=20(let=20((base=20(make-u-boot-package=20=
"am335x_evm"=20"arm-linux-gnueabihf")))=0A+=20=20(let=20((base=20=
(make-u-boot-package=20"am335x_evm"=20"arm-linux-gnueabihf"=0A+=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20;;=20Patch=20out=20other=20device=20=
trees=20to=20build=20image=20small=20enough=20to=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20;;=20fit=20within=20typical=20partitioning=20=
schemes=20where=20the=20first=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20;;=20partition=20begins=20at=20sector=202048.=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20#:configs=20'("CONFIG_OF_LIST=3D\"am335x-evm=20=
am335x-boneblack\""))))=0A=20=20=20=20=20(package=0A=20=20=20=20=20=20=20=
(inherit=20base)=0A=20=20=20=20=20=20=20(name=20=
"u-boot-am335x-boneblack")=0A@@=20-810,25=20+827,13=20@@=20also=20=
initializes=20the=20boards=20(RAM=20etc).=0A=20=0A=20This=20U-Boot=20is=20=
built=20for=20the=20BeagleBone=20Black,=20which=20was=20removed=20=
upstream,=0A=20adjusted=20from=20the=20am335x_evm=20build=20with=20=
several=20device=20trees=20removed=20so=20that=0A-it=20fits=20within=20=
common=20partitioning=20schemes.")=0A-=20=20=20=20=20=20(arguments=0A-=20=
=20=20=20=20=20=20(substitute-keyword-arguments=20(package-arguments=20=
base)=0A-=20=20=20=20=20=20=20=20=20((#:phases=20phases)=0A-=20=20=20=20=20=
=20=20=20=20=20`(modify-phases=20,phases=0A-=20=20=20=20=20=20=20=20=20=20=
=20=20=20(add-after=20'unpack=20'patch-defconfig=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20;;=20Patch=20out=20other=20devicetrees=20to=20=
build=20image=20small=20enough=20to=0A-=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20;;=20fit=20within=20typical=20partitioning=20schemes=20where=20=
the=20first=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
partition=20begins=20at=20sector=202048.=0A-=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(lambda=20_=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20(substitute*=20"configs/am335x_evm_defconfig"=0A-=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20(("CONFIG_OF_LIST=3D.*$")=20=
"CONFIG_OF_LIST=3D\"am335x-evm=20am335x-boneblack\"\n"))=0A-=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20#t)))))))))=0A+it=20fits=20within=20=
common=20partitioning=20schemes."))))=0A=20=0A=20(define-public=20=
u-boot-am335x-evm=0A=20=20=20(make-u-boot-package=20"am335x_evm"=20=
"arm-linux-gnueabihf"))=0A=20=0A-(define-public=20=
(make-u-boot-sunxi64-package=20board=20triplet)=0A-=20=20(let=20((base=20=
(make-u-boot-package=20board=20triplet)))=0A+(define*-public=20=
(make-u-boot-sunxi64-package=20board=20triplet=20#:key=20defconfig=20=
configs)=0A+=20=20(let=20((base=20(make-u-boot-package=20board=20triplet=20=
#:defconfig=20defconfig=20#:configs=20configs)))=0A=20=20=20=20=20=
(package=0A=20=20=20=20=20=20=20(inherit=20base)=0A=20=20=20=20=20=20=20=
(arguments=0A@@=20-858,20=20+863,10=20@@=20it=20fits=20within=20common=20=
partitioning=20schemes.")=0A=20=20=20(make-u-boot-sunxi64-package=20=
"pine64-lts"=20"aarch64-linux-gnu"))=0A=20=0A=20(define-public=20=
u-boot-pinebook=0A-=20=20(let=20((base=20(make-u-boot-sunxi64-package=20=
"pinebook"=20"aarch64-linux-gnu")))=0A-=20=20=20=20(package=0A-=20=20=20=20=
=20=20(inherit=20base)=0A-=20=20=20=20=20=20(arguments=0A-=20=20=20=20=20=
=20=20(substitute-keyword-arguments=20(package-arguments=20base)=0A-=20=20=
=20=20=20=20=20=20=20((#:phases=20phases)=0A-=20=20=20=20=20=20=20=20=20=20=
`(modify-phases=20,phases=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=
(add-after=20'unpack=20'patch-pinebook-config=0A-=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20;;=20Fix=20regression=20with=20LCD=20video=20output=20=
introduced=20in=202020.01=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
;;=20https://patchwork.ozlabs.org/patch/1225130/=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(lambda=20_=0A-=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(substitute*=20"configs/pinebook_defconfig"=0A-=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(("CONFIG_VIDEO_BRIDGE_ANALOGIX_ANX6345=3Dy")=20=
"CONFIG_VIDEO_BRIDGE_ANALOGIX_ANX6345=3Dy\nCONFIG_VIDEO_BPP32=3Dy"))=0A-=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#t)))))))))=0A+=20=20=
(make-u-boot-sunxi64-package=20"pinebook"=20"aarch64-linux-gnu"=0A+=20=20=
=20;;=20Fix=20regression=20with=20LCD=20video=20output=20introduced=20in=20=
2020.01=0A+=20=20=20;;=20https://patchwork.ozlabs.org/patch/1225130/=0A+=20=
=20=20#:configs=20'("CONFIG_VIDEO_BPP32=3Dy")))=0A=20=0A=20=
(define-public=20u-boot-bananapi-m2-ultra=0A=20=20=20=
(make-u-boot-package=20"Bananapi_M2_Ultra"=20"arm-linux-gnueabihf"))=0A=
@@=20-895,25=20+890,17=20@@=20it=20fits=20within=20common=20partitioning=20=
schemes.")=0A=20=20=20(make-u-boot-package=20"mx6cuboxi"=20=
"arm-linux-gnueabihf"))=0A=20=0A=20(define-public=20u-boot-novena=0A-=20=20=
(let=20((base=20(make-u-boot-package=20"novena"=20=
"arm-linux-gnueabihf")))=0A+=20=20(let=20((base=20(make-u-boot-package=20=
"novena"=20"arm-linux-gnueabihf"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20;;=20Patch=20configuration=20to=20disable=20loading=20u-boot.img=20=
from=20FAT=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
partition,=20allowing=20it=20to=20be=20installed=20at=20a=20device=20=
offset.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:configs=20=
'("CONFIG_SPL_FS_FAT=3D"))))=0A=20=20=20=20=20(package=0A=20=20=20=20=20=20=
=20(inherit=20base)=0A=20=20=20=20=20=20=20(description=20"U-Boot=20is=20=
a=20bootloader=20used=20mostly=20for=20ARM=20boards.=20It=0A=20also=20=
initializes=20the=20boards=20(RAM=20etc).=0A=20=0A=20This=20U-Boot=20is=20=
built=20for=20Novena.=20=20Be=20advised=20that=20this=20version,=20=
contrary=0A-to=20Novena=20upstream,=20does=20not=20load=20u-boot.img=20=
from=20the=20first=20partition.")=0A-=20=20=20=20=20=20(arguments=0A-=20=20=
=20=20=20=20=20(substitute-keyword-arguments=20(package-arguments=20=
base)=0A-=20=20=20=20=20=20=20=20=20((#:phases=20phases)=0A-=20=20=20=20=20=
=20=20=20=20=20`(modify-phases=20,phases=0A-=20=20=20=20=20=20=20=20=20=20=
=20=20=20(add-after=20'unpack=20'patch-novena-defconfig=0A-=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20;;=20Patch=20configuration=20to=20disable=20=
loading=20u-boot.img=20from=20FAT=20partition,=0A-=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20;;=20allowing=20it=20to=20be=20installed=20at=20a=20=
device=20offset.=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(lambda=20=
_=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(substitute*=20=
"configs/novena_defconfig"=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(("CONFIG_SPL_FS_FAT=3Dy")=20"#=20CONFIG_SPL_FS_FAT=20is=20=
not=20set"))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
#t)))))))))=0A+to=20Novena=20upstream,=20does=20not=20load=20u-boot.img=20=
from=20the=20first=20partition."))))=0A=20=0A=20(define-public=20=
u-boot-cubieboard=0A=20=20=20(make-u-boot-package=20"Cubieboard"=20=
"arm-linux-gnueabihf"))=0Adiff=20--git=20a/guix/build/kconfig.scm=20=
b/guix/build/kconfig.scm=0Anew=20file=20mode=20100644=0Aindex=20=
0000000000..09ddf59dd0=0A---=20/dev/null=0A+++=20=
b/guix/build/kconfig.scm=0A@@=20-0,0=20+1,148=20@@=0A+;;;=20GNU=20Guix=20=
---=20Functional=20package=20management=20for=20GNU=0A+;;;=20Copyright=20=
=C2=A9=202020=20Stefan=20<stefan-guix@HIDDEN>=0A+;;;=0A+;;;=20=
This=20file=20is=20part=20of=20GNU=20Guix.=0A+;;;=0A+;;;=20GNU=20Guix=20=
is=20free=20software;=20you=20can=20redistribute=20it=20and/or=20modify=20=
it=0A+;;;=20under=20the=20terms=20of=20the=20GNU=20General=20Public=20=
License=20as=20published=20by=0A+;;;=20the=20Free=20Software=20=
Foundation;=20either=20version=203=20of=20the=20License,=20or=20(at=0A=
+;;;=20your=20option)=20any=20later=20version.=0A+;;;=0A+;;;=20GNU=20=
Guix=20is=20distributed=20in=20the=20hope=20that=20it=20will=20be=20=
useful,=20but=0A+;;;=20WITHOUT=20ANY=20WARRANTY;=20without=20even=20the=20=
implied=20warranty=20of=0A+;;;=20MERCHANTABILITY=20or=20FITNESS=20FOR=20=
A=20PARTICULAR=20PURPOSE.=20=20See=20the=0A+;;;=20GNU=20General=20Public=20=
License=20for=20more=20details.=0A+;;;=0A+;;;=20You=20should=20have=20=
received=20a=20copy=20of=20the=20GNU=20General=20Public=20License=0A+;;;=20=
along=20with=20GNU=20Guix.=20=20If=20not,=20see=20=
<http://www.gnu.org/licenses/>.=0A+=0A+(define-module=20(guix=20build=20=
kconfig)=0A+=20=20#:use-module=20=20(ice-9=20rdelim)=0A+=20=20=
#:use-module=20=20(ice-9=20regex)=0A+=20=20#:use-module=20=20(srfi=20=
srfi-1)=0A+=20=20#:use-module=20=20(srfi=20srfi-26)=0A+=20=20#:export=20=
(modify-defconfig))=0A+=0A+;;=20Commentary:=0A+;;=0A+;;=20Builder-side=20=
code=20to=20modify=20configurations=20for=20the=20Kconfig=20build=20=
system=20as=0A+;;=20used=20by=20Linux=20and=20U-Boot.=0A+;;=0A+;;=20=
Code:=0A+=0A+(define=20(modify-defconfig=20defconfig=20configs)=0A+=20=20=
"This=20function=20can=20modify=20a=20given=20DEFCONFIG=20file=20by=20=
adding,=20changing=20or=0A+removing=20the=20list=20of=20strings=20in=20=
CONFIGS.=20=20This=20allows=20an=20easy=20customization=20of=0A+Kconfig=20=
based=20projects=20like=20the=20kernel=20Linux=20or=20the=20bootloader=20=
'Das=20U-Boot'.=0A+=0A+These=20are=20examples=20for=20CONFIGS=20to=20add=20=
or=20change=20or=20remove=0A+configurations=20to/from=20DEFCONFIG:=0A+=0A=
+'(\"CONFIG_A=3D\\\"a\\\"\"=0A+=20=20\"CONFIG_B=3D0\"=0A+=20=20=
\"CONFIG_C=3Dy\"=0A+=20=20\"CONFIG_D=3Dm\"=0A+=20=20\"CONFIG_E=3D\"=0A+=20=
=20\"CONFIG_F\"=0A+=20=20\"#=20CONFIG_G=20is=20not=20set\")=0A+=0A=
+Instead=20of=20a=20list,=20CONFGIS=20can=20be=20a=20string=20with=20one=20=
configuration=20per=20line."=0A+=20=20(define=20config-rx=0A+=20=20=20=20=
(make-regexp=0A+=20=20=20=20=20;;=20(match:substring=20(string-match=20=
"=3D(.*)"=20"=3D")=201)=20returns=20"",=20but=20the=0A+=20=20=20=20=20;;=20=
pattern=20"=3D(.+)?"=20makes=20it=20return=20#f=20instead.=20=20For=20a=20=
"CONFIG_A=3D"=20we=20like=0A+=20=20=20=20=20;;=20to=20get=20#f,=20which=20=
as=20a=20value=20emits=20"#=20=E2=80=A6=20is=20not=20set".=0A+=20=20=20=20=
=20"^(#[\\t=20]*)?(CONFIG_[A-Z0-9_]+)([\\t=20]*=3D[\\t=20]*(.+)?|([\\t=20=
]+is[\\t=20]+not[\\t=20]+set))?$"))=0A+=0A+=20=20(define=20=
(config-string->pair=20config-string)=0A+=20=20=20=20"Parse=20a=20=
config-string=20like=20\"CONFIG_EXAMPLE=3Dy\"=20into=20a=20key-value=20=
pair.=0A+Spaces=20get=20trimmed.=0A+\"CONFIG_A=3Dy\"=20=20=20=20=20=20=20=
=20=20=20=20=20->=20'(\"CONFIG_A\"=20.=20\"y\")=0A+\"CONFIG_B=3D\\\"\\\"\"=
=20=20=20=20=20=20=20=20=20->=20'(\"CONFIG_B\"=20.=20\"\\\"\\\"\")=0A=
+\"CONFIG_C=3D\"=20=20=20=20=20=20=20=20=20=20=20=20=20->=20=
'(\"CONFIG_C\"=20.=20#f)=0A+\"CONFIG_D\"=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20->=20'(\"CONFIG_D\"=20.=20#f)=0A+\"#=20CONFIG_E=20is=20not=20=
set\"=20->=20'(\"CONFIG_E\"=20.=20#f)=0A+\"#=20Anything=20else\"=20=20=20=
=20=20=20=20->=20'(\"#=20Anything=20else\"=20.=20\"\")"=0A+=20=20=20=20=
(let=20((match=20(regexp-exec=20config-rx=20(string-trim-both=20=
config-string))))=0A+=20=20=20=20=20=20(if=20(not=20match)=0A+=20=20=20=20=
=20=20=20=20=20=20;;=20This=20is=20some=20unparsable=20config-string.=0A=
+=20=20=20=20=20=20=20=20=20=20;;=20We=20keep=20it=20as=20it=20is.=0A+=20=
=20=20=20=20=20=20=20=20=20(cons=20config-string=20"")=0A+=20=20=20=20=20=
=20=20=20=20=20(let*=20((comment=20(match:substring=20match=201))=0A+=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(key=20(match:substring=20=
match=202))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(unset=20=
(match:substring=20match=205))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(value=20(and=20(not=20comment)=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(not=20=
unset)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(match:substring=20match=204))))=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20(if=20(or=20(and=20comment=20(not=20unset))=0A+=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(and=20(not=20=
comment)=20unset))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
This=20is=20just=20some=20comment=20or=20strange=20line,=20which=20we=20=
keep=20as=20is.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(cons=20=
config-string=20"")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(cons=20key=20value))))))=0A+=0A+=20=20(define=20(pair->config-string=20=
pair)=0A+=20=20=20=20"Convert=20a=20PAIR=20back=20to=20a=20=
config-string."=0A+=20=20=20=20(let*=20((key=20(car=20pair))=0A+=20=20=20=
=20=20=20=20=20=20=20=20(value=20(cdr=20pair)))=0A+=20=20=20=20=20=20(if=20=
(string?=20value)=0A+=20=20=20=20=20=20=20=20=20=20(if=20(string-null?=20=
value)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20key=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(string-append=20key=20"=3D"=20value))=0A+=20=20=
=20=20=20=20=20=20=20=20(string-append=20"#=20"=20key=20"=20is=20not=20=
set"))))=0A+=0A+=20=20(define=20(remove-pair=20pair=20blacklist)=0A+=20=20=
=20=20"Turn=20a=20key-value=20PAIR=20into=20'(""=20.=20""),=20if=20its=20=
key=20is=20listed=20in=20BLACKLIST."=0A+=20=20=20=20(let*=20((key=20=
(first=20pair)))=0A+=20=20=20=20=20=20(if=20(member=20key=20blacklist)=0A=
+=20=20=20=20=20=20=20=20=20=20'(""=20.=20"")=0A+=20=20=20=20=20=20=20=20=
=20=20pair)))=0A+=0A+=20=20(define=20(remove-config-string=20=
config-string=20blacklist)=0A+=20=20=20=20"Remove=20the=20CONFIG-STRING,=20=
if=20its=20key=20is=20listed=20in=20BLACKLIST."=0A+=20=20=20=20=
(pair->config-string=20(remove-pair=20(config-string->pair=20=
config-string)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20blacklist)))=0A=
+=0A+=20=20(define*=20(write-lines=20input=20#:key=20(line-modifier=20=
identity))=0A+=20=20=20=20"Write=20all=20lines=20from=20the=20INPUT=20=
after=20applying=20the=20LINE-MODIFIER=20to=20the=0A+=20=
current-output-port."=0A+=20=20=20=20(let=20loop=20((line=20(read-line=20=
input)))=0A+=20=20=20=20=20=20(when=20(not=20(eof-object?=20line))=0A+=20=
=20=20=20=20=20=20=20(display=20(line-modifier=20line))=0A+=20=20=20=20=20=
=20=20=20(newline)=0A+=20=20=20=20=20=20=20=20(loop=20(read-line=20=
input)))))=0A+=0A+=20=20(let*=20((modified-defconfig=20(string-append=20=
defconfig=20".mod"))=0A+=20=20=20=20=20=20=20=20=20;;=20Split=20the=20=
configs=20into=20a=20list=20of=20single=20configuations.=0A+=20=20=20=20=20=
=20=20=20=20;;=20To=20minimize=20mistakes,=20we=20support=20a=20string=20=
and=20a=20list=20of=20strings,=0A+=20=20=20=20=20=20=20=20=20;;=20each=20=
with=20newlines=20to=20separate=20configurations.=0A+=20=20=20=20=20=20=20=
=20=20(config-list=20(fold-right=20append=20'()=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(map=20(lambda=20(s)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(string-split=20s=20#\newline))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(if=20(string?=20configs)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(list=20configs)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20configs))))=0A+=20=20=20=20=20=20=20=20=20;;=20Generate=20=
key-value=20pairs=20from=20the=20config-list.=0A+=20=20=20=20=20=20=20=20=
=20(pairs=20(map=20(lambda=20(config-string)=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(config-string->pair=20=
config-string))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20config-list))=0A+=20=20=20=20=20=20=20=20=20;;=20Generate=20a=20=
blacklist=20of=20config=20keys=20from=20pairs.=0A+=20=20=20=20=20=20=20=20=
=20(blacklist=20(map=20(lambda=20(config-pair)=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(first=20=
config-pair))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20pairs))=0A+=20=20=20=20=20=20=20=20=20=
(remove-config-string=20(cut=20remove-config-string=20<>=20blacklist)))=0A=
+=20=20=20=20;;=20Write=20to=20the=20modified-defconfig=20file=20first=20=
the=20content=20of=20the=20defconfig=0A+=20=20=20=20;;=20file=20with=20=
removed=20lines,=20and=20afterwards=20the=20configs.=0A+=20=20=20=20=
(call-with-output-file=20modified-defconfig=0A+=20=20=20=20=20=20(lambda=20=
(output)=0A+=20=20=20=20=20=20=20=20(with-output-to-port=20output=0A+=20=20=
=20=20=20=20=20=20=20=20(lambda=20()=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20(call-with-input-file=20defconfig=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(lambda=20(input)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(write-lines=20input=20#:=20line-modifier=20remove-config-string)))=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20(call-with-input-string=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(string-join=20(map=20=
pair->config-string=20pairs)=20"\n")=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(lambda=20(input)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(write-lines=20input)))))))=0A+=20=20=20=20;;=20Ensure=20the=20=
modified-defconfig=20file=20is=20used.=0A+=20=20=20=20(delete-file=20=
defconfig)=0A+=20=20=20=20(rename-file=20modified-defconfig=20=
defconfig)))=0A=

--Apple-Mail=_86284009-8FBA-4824-A8C2-0E82155DD3CC
Content-Disposition: attachment;
	filename=04-gnu-bootloader-add-u-boot.patch
Content-Type: application/octet-stream;
	name="04-gnu-bootloader-add-u-boot.patch"
Content-Transfer-Encoding: 7bit

gnu: bootloader: Add U-Boot packages for Raspberry Pi models.

From: Stefan <stefan-guix@HIDDEN>

* gnu/packages/bootloader.scm (make-u-boot-package): Add keyword
parameters 'name' and 'description'.
(make-preinstalled-u-boot-package): New function to make minimal packages.
(%u-boot-rpi-efi-configs): New helper list with config strings.
(%u-boot-rpi-description-32-bit, %u-boot-rpi-description-64-bit,
%u-boot-rpi-efi-description, %u-boot-rpi-efi-description-32-bit): New helper
strings.
(u-boot-rpi-0-w, u-boot-rpi, u-boot-rpi-2, u-boot-rpi-3, u-boot-rpi-4,
u-boot-rpi-64, u-boot-rpi-0-w-efi, u-boot-rpi-efi, u-boot-rpi-2-efi,
u-boot-rpi-3-efi, u-boot-rpi-4-efi, u-boot-rpi-efi-64): New packages.
---
 gnu/packages/bootloaders.scm |  172 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 168 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 38cf933c22..e3bd6733cb 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -717,17 +717,30 @@ def test_ctrl_c"))
 also initializes the boards (RAM etc).  This package provides its
 board-independent tools.")))
 
-(define*-public (make-u-boot-package board triplet #:key defconfig configs)
+(define*-public (make-u-boot-package board
+                                     triplet
+                                     #:key
+                                     defconfig
+                                     configs
+                                     name
+                                     description)
   "Returns a u-boot package for BOARD cross-compiled for TRIPLET with the
-optional DEFCONFIG file and optional configuration changes from CONFIGS."
+optional DEFCONFIG file and optional configuration changes from CONFIGS.
+Either NAME, if used, or otherwise BOARD will be part of the package name.
+DESCRIPTION will be appended to the package description."
   (let ((same-arch? (lambda ()
                       (string=? (%current-system)
                                 (gnu-triplet->nix-system triplet)))))
     (package
       (inherit u-boot)
       (name (string-append "u-boot-"
-                           (string-replace-substring (string-downcase board)
-                                                     "_" "-")))
+                           (string-replace-substring
+                            (string-downcase (or name board))
+                            "_" "-")))
+      (description (if description
+                       (string-append (package-description u-boot)
+                                      "\n" description)
+                       (package-description u-boot)))
       (native-inputs
        `(,@(if (not (same-arch?))
              `(("cross-gcc" ,(cross-gcc triplet))
@@ -1023,6 +1036,157 @@ to Novena upstream, does not load u-boot.img from the first partition."))))
        `(("firmware" ,arm-trusted-firmware-rk3399)
          ,@(package-native-inputs base))))))
 
+(define*-public (make-preinstalled-u-boot-package board
+                                                  triplet
+                                                  #:key
+                                                  defconfig
+                                                  configs
+                                                  name
+                                                  description
+                                                  (u-boot-file "u-boot.bin"))
+  "Returns a package with a single U-BOOT-FILE for BOARD cross-compiled for
+TRIPLET with the optional DEFCONFIG file and optional configuration changes
+from CONFIGS.  Either NAME, if used, or otherwise BOARD will be part of the
+package name.  DESCRIPTION will be appended to the package description."
+  (let* ((name-suffix "-complete")
+         (u-boot-package (make-u-boot-package board
+                                              triplet
+                                              #:defconfig defconfig
+                                              #:configs configs
+                                              #:name (string-append
+                                                      (or name board)
+                                                      name-suffix)
+                                              #:description description)))
+    (package
+      (name (string-drop-right (package-name u-boot-package)
+                               (string-length name-suffix)))
+      (version (package-version u-boot-package))
+      (source #f)
+      (build-system trivial-build-system)
+      (arguments
+       `(#:builder
+         (begin
+           (let ((out (assoc-ref %outputs "out")))
+             (mkdir out)
+             (symlink (string-append (assoc-ref %build-inputs "u-boot")
+                                   "/libexec/"
+                                   ,u-boot-file)
+                      (string-append out "/" ,u-boot-file))))))
+      (inputs `(("u-boot" ,u-boot-package)))
+      (home-page (package-home-page u-boot-package))
+      (synopsis (package-synopsis u-boot-package))
+      (description (package-description u-boot-package))
+      (license (package-license u-boot-package)))))
+
+(define-public %u-boot-rpi-efi-configs
+  '("CONFIG_OF_EMBED="
+    "CONFIG_OF_BOARD=y"
+    "CONFIG_BOOTDELAY=0"))
+
+(define %u-boot-rpi-description-32-bit
+  "This is a 32-bit build of U-Boot.")
+
+(define %u-boot-rpi-description-64-bit
+  "This is a common 64-bit build of U-Boot for all 64-bit capable Raspberry Pi
+variants.")
+
+(define %u-boot-rpi-efi-description
+  "It allows network booting and uses the device-tree from the firmware,
+allowing the usage of overlays.  It can act as an EFI firmware for the
+grub-efi-netboot-removable-bootloader.")
+
+(define %u-boot-rpi-efi-description-32-bit
+  (string-append %u-boot-rpi-efi-description "  "
+                 %u-boot-rpi-description-32-bit))
+
+(define-public u-boot-rpi-0-w
+  (make-preinstalled-u-boot-package
+   "rpi_0_w"
+   "arm-linux-gnueabihf"
+   #:description %u-boot-rpi-description-32-bit))
+
+(define-public u-boot-rpi
+  (make-preinstalled-u-boot-package
+   "rpi"
+   "arm-linux-gnueabihf"
+   #:description %u-boot-rpi-description-32-bit))
+
+(define-public u-boot-rpi-2
+  (make-preinstalled-u-boot-package
+   "rpi_2"
+   "arm-linux-gnueabihf"
+   #:description %u-boot-rpi-description-32-bit))
+
+(define-public u-boot-rpi-3
+  (make-preinstalled-u-boot-package
+   "rpi_3_32b"
+   "arm-linux-gnueabihf"
+   #:name "rpi-3"
+   #:description %u-boot-rpi-description-32-bit))
+
+(define-public u-boot-rpi-4
+  (make-preinstalled-u-boot-package
+   "rpi_4_32b"
+   "arm-linux-gnueabihf"
+   #:name "rpi-4"
+   #:description %u-boot-rpi-description-32-bit))
+
+(define-public u-boot-rpi-64
+  (make-preinstalled-u-boot-package
+   "rpi_arm64"
+   "aarch64-linux-gnu"
+   #:name "rpi-64"
+   #:description %u-boot-rpi-description-64-bit))
+
+(define-public u-boot-rpi-0-w-efi
+  (make-preinstalled-u-boot-package
+   "rpi_0_w"
+   "arm-linux-gnueabihf"
+   #:name "rpi-0-w-efi"
+   #:configs %u-boot-rpi-efi-configs
+   #:description %u-boot-rpi-efi-description-32-bit))
+
+(define-public u-boot-rpi-efi
+  (make-preinstalled-u-boot-package
+   "rpi"
+   "arm-linux-gnueabihf"
+   #:name "rpi-efi"
+   #:configs %u-boot-rpi-efi-configs
+   #:description %u-boot-rpi-efi-description-32-bit))
+
+(define-public u-boot-rpi-2-efi
+  (make-preinstalled-u-boot-package
+   "rpi_2"
+   "arm-linux-gnueabihf"
+   #:name "rpi-2-efi"
+   #:configs %u-boot-rpi-efi-configs
+   #:description %u-boot-rpi-efi-description-32-bit))
+
+(define-public u-boot-rpi-3-efi
+  (make-preinstalled-u-boot-package
+   "rpi_3_32b"
+   "arm-linux-gnueabihf"
+   #:name "rpi-3-efi"
+   #:configs %u-boot-rpi-efi-configs
+   #:description %u-boot-rpi-efi-description-32-bit))
+
+(define-public u-boot-rpi-4-efi
+  (make-preinstalled-u-boot-package
+   "rpi_4_32b"
+   "arm-linux-gnueabihf"
+   #:name "rpi-4-efi"
+   #:configs %u-boot-rpi-efi-configs
+   #:description %u-boot-rpi-efi-description-32-bit))
+
+(define-public u-boot-rpi-efi-64
+  (make-preinstalled-u-boot-package
+   "rpi_arm64"
+   "aarch64-linux-gnu"
+   #:name "rpi-efi-64"
+   #:configs %u-boot-rpi-efi-configs
+   #:description (string-append %u-boot-rpi-efi-description "  "
+                                %u-boot-rpi-description-64-bit)))
+
 (define-public vboot-utils
   (package
     (name "vboot-utils")

--Apple-Mail=_86284009-8FBA-4824-A8C2-0E82155DD3CC
Content-Disposition: attachment;
	filename=05-gnu-linux-correct-name-of.patch
Content-Type: application/octet-stream;
	name="05-gnu-linux-correct-name-of.patch"
Content-Transfer-Encoding: 7bit

gnu: linux: Correct name of EXTRAVERSION and prepend "-" to content.

From: Stefan <stefan-guix@HIDDEN>

gnu/packages/linux.scm (make-linux-libre): Move the comment for the
configuration-file argument to the correct position between the extra-version
and configuration-file arguments.
gnu/packages/linux.scm (make-linux-libre*): Move the comment for the
configuration-file argument to the correct position between the extra-version
and configuration-file arguments.  Remove the underscore from the environment
variable EXTRAVERSION.  Prepend a hyphen to the content of EXTRAVERSION.
---
 gnu/packages/linux.scm |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 84ea849108..51e692a8c3 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -749,9 +749,9 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
 
 (define* (make-linux-libre version hash-string supported-systems
                            #:key
+                           (extra-version #f)
                            ;; A function that takes an arch and a variant.
                            ;; See kernel-config for an example.
-                           (extra-version #f)
                            (configuration-file #f)
                            (defconfig "defconfig")
                            (extra-options %default-extra-linux-options)
@@ -770,9 +770,9 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
 
 (define* (make-linux-libre* version source supported-systems
                             #:key
+                            (extra-version #f)
                             ;; A function that takes an arch and a variant.
                             ;; See kernel-config for an example.
-                            (extra-version #f)
                             (configuration-file #f)
                             (defconfig "defconfig")
                             (extra-options %default-extra-linux-options))
@@ -838,7 +838,8 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
                  (format #t "`CROSS_COMPILE' set to `~a'~%"
                          (getenv "CROSS_COMPILE"))))
 
-             (setenv "EXTRA_VERSION" ,extra-version)
+             (setenv "EXTRAVERSION" ,(and extra-version
+                                          (string-append "-" extra-version)))
 
              (let ((build  (assoc-ref %standard-phases 'build))
                    (config (assoc-ref (or native-inputs inputs) "kconfig")))

--Apple-Mail=_86284009-8FBA-4824-A8C2-0E82155DD3CC
Content-Disposition: attachment;
	filename=06-gnu-linux-new-function-to.patch
Content-Type: application/octet-stream;
	name="06-gnu-linux-new-function-to.patch"
Content-Transfer-Encoding: quoted-printable

gnu:=20linux:=20New=20function=20to=20modify=20the=20configuration=20of=20=
a=20Linux=20kernel.=0A=0AFrom:=20Stefan=20<stefan-guix@HIDDEN>=0A=
=0A*=20gnu/packages/linux.scm=20(system->linux-srcarch):=20New=20=
function=20to=20return=20the=0Arelevent=20folder=20name=20below=20arch/=20=
in=20the=20Linux=20source=20code.=0A(make-linux-libre*)=20=
['set-environment]:=20Splitted=20this=20new=20phase=20out=20of=20and=0A=
adding=20it=20before=20=E2=80=A6=0A['configure]:=20=E2=80=A6=20to=20=
allow=20a=20replacement=20and=20reuse=20from=20(modify-linux).=0A=
(modify-linux):=20New=20function=20to=20make=20a=20customized=20Linux=20=
package=20inherited=0Afrom=20another=20Linux=20package,=20which=20will=20=
be=20build=20with=20an=20own=20defconfig=20or=0Aconfiguration=20changes.=0A=
(make-defconfig):=20Function=20to=20get=20a=20defconfig=20from=20an=20=
uri.=0A---=0A=20gnu/packages/linux.scm=20|=20=20132=20=
+++++++++++++++++++++++++++++++++++++++++++++++-=0A=201=20file=20=
changed,=20128=20insertions(+),=204=20deletions(-)=0A=0Adiff=20--git=20=
a/gnu/packages/linux.scm=20b/gnu/packages/linux.scm=0Aindex=20=
51e692a8c3..983f0c2b22=20100644=0A---=20a/gnu/packages/linux.scm=0A+++=20=
b/gnu/packages/linux.scm=0A@@=20-54,6=20+54,7=20@@=0A=20;;;=20Copyright=20=
=C2=A9=202020=20David=20Dashyan=20<mail@HIDDEN>=0A=20;;;=20Copyright=20=
=C2=A9=202020=20pukkamustard=20<pukkamustard@HIDDEN>=0A=20;;;=20=
Copyright=20=C2=A9=202021=20B.=20Wilson=20<elaexuotee@HIDDEN>=0A=
+;;;=20Copyright=20=C2=A9=202021=20Stefan=20=
<stefan-guix@HIDDEN>=0A=20;;;=0A=20;;;=20This=20file=20is=20=
part=20of=20GNU=20Guix.=0A=20;;;=0A@@=20-165,7=20+166,8=20@@=0A=20=20=20=
#:use-module=20(srfi=20srfi-1)=0A=20=20=20#:use-module=20(srfi=20srfi-2)=0A=
=20=20=20#:use-module=20(srfi=20srfi-26)=0A-=20=20#:use-module=20(ice-9=20=
match))=0A+=20=20#:use-module=20(ice-9=20match)=0A+=20=20#:use-module=20=
(ice-9=20optargs))=0A=20=0A=20(define-public=20=
(system->linux-architecture=20arch)=0A=20=20=20"Return=20the=20Linux=20=
architecture=20name=20for=20ARCH,=20a=20Guix=20system=20name=20such=20as=0A=
@@=20-181,6=20+183,21=20@@=0A=20=20=20=20=20=20=20=20=20=20=20=
((string-prefix?=20"riscv"=20arch)=20"riscv")=0A=20=20=20=20=20=20=20=20=20=
=20=20(else=20arch))))=0A=20=0A+(define-public=20(system->linux-srcarch=20=
arch)=0A+=20=20"Return=20for=20a=20Guix=20system=20ARCH=20name=20the=20=
SRCARCH=20name,=20which=20is=20set=20in=20the=0A+toplevel=20Makefile=20=
of=20Linux=20and=20denotes=20the=20architecture=20specific=20directory=20=
name=0A+below=20arch/=20in=20its=20source=20code.=20=20Some=20few=20=
architectures=20share=20a=20common=20folder.=0A+It=20resembles=20the=20=
definition=20of=20SRCARCH=20based=20on=20ARCH=20in=20the=20Makefile=20=
and=20may=0A+be=20used=20to=20place=20a=20defconfig=20file=20in=20the=20=
proper=20path."=0A+=20=20(let=20((linux-arch=20=
(system->linux-architecture=20arch)))=0A+=20=20=20=20(match=20linux-arch=0A=
+=20=20=20=20=20=20("i386"=20=20=20=20"x86")=0A+=20=20=20=20=20=20=
("x86_64"=20=20"x86")=0A+=20=20=20=20=20=20("sparc32"=20"sparc")=0A+=20=20=
=20=20=20=20("sparc64"=20"sparc")=0A+=20=20=20=20=20=20("sh64"=20=20=20=20=
"sh")=0A+=20=20=20=20=20=20(_=20=20=20=20=20=20=20=20=20linux-arch))))=0A=
+=0A=20(define-public=20(system->defconfig=20system)=0A=20=20=20"Some=20=
systems=20(notably=20powerpc-linux)=20require=20a=20special=20target=20=
for=20kernel=0A=20defconfig.=20=20Return=20the=20appropriate=20make=20=
target=20if=20applicable,=20otherwise=20return=0A@@=20-820,8=20+837,8=20=
@@=20for=20ARCH=20and=20optionally=20VARIANT,=20or=20#f=20if=20there=20=
is=20no=20such=20configuration."=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(substitute*=20(find-files=20"."=20"^Makefile(\\.include)?$")=0A=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(("/bin/pwd")=20"pwd"))=0A=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20#t))=0A-=20=20=20=20=20=20=20=20=20=
(replace=20'configure=0A-=20=20=20=20=20=20=20=20=20=20=20(lambda*=20=
(#:key=20inputs=20native-inputs=20target=20#:allow-other-keys)=0A+=20=20=20=
=20=20=20=20=20=20(add-before=20'configure=20'set-environment=0A+=20=20=20=
=20=20=20=20=20=20=20=20(lambda*=20(#:key=20target=20#:allow-other-keys)=0A=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20Avoid=20introducing=20=
timestamps=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20(setenv=20=
"KCONFIG_NOTIMESTAMP"=20"1")=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(setenv=20"KBUILD_BUILD_TIMESTAMP"=20(getenv=20"SOURCE_DATE_EPOCH"))=0A=
@@=20-840,7=20+857,9=20@@=20for=20ARCH=20and=20optionally=20VARIANT,=20=
or=20#f=20if=20there=20is=20no=20such=20configuration."=0A=20=0A=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(setenv=20"EXTRAVERSION"=20,(and=20=
extra-version=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(string-append=20"-"=20extra-version)))=0A-=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20#t))=0A+=20=20=20=20=20=20=20=20=20(replace=20'configure=0A+=20=
=20=20=20=20=20=20=20=20=20=20(lambda*=20(#:key=20inputs=20native-inputs=20=
#:allow-other-keys)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20(let=20=
((build=20=20(assoc-ref=20%standard-phases=20'build))=0A=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(config=20(assoc-ref=20(or=20=
native-inputs=20inputs)=20"kconfig")))=0A=20=0A@@=20-1155,6=20+1174,111=20=
@@=20It=20has=20been=20modified=20to=20remove=20all=20non-free=20binary=20=
blobs.")=0A=20=20=20=20=20=20=20(inherit=20base-linux-libre)=0A=20=20=20=20=
=20=20=20(inputs=20`(("cpio"=20,cpio)=20,@(package-inputs=20=
base-linux-libre))))))=0A=20=0A+=0C=0A+;;;=0A+;;;=20Linux=20kernel=20=
customization=20functions.=0A+;;;=0A+=0A+(define*-public=20(modify-linux=20=
#:key=20name=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(linux=20linux-libre)=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20source=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20defconfig=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(configs=20"")=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20extra-version)=0A+=20=20"Make=20a=20Linux=20=
package=20NAME=20as=20a=20modification=20of=20another=20LINUX=20package.=0A=
+=0A+If=20NAME=20is=20not=20given,=20then=20it=20defaults=20to=20the=20=
same=20name=20as=20the=20LINUX=20package.=0A+=0A+Unless=20SOURCE=20is=20=
given=20the=20source=20of=20LINUX=20is=20used.=0A+=0A+A=20DEFCONFIG=20=
file=20to=20be=20used=20can=20be=20given=20as=20a=20package,=20as=20a=20=
file=20like=20object=0A+(file-append,=20local-file=20etc.),=20or=20as=20=
a=20string=20with=20the=20name=20of=20a=20defconfig=20file=0A+available=20=
in=20the=20Linux=20sources.=20=20If=20DEFCONFIG=20is=20not=20given,=20=
then=20a=20defconfig=0A+file=20will=20be=20saved=20from=20the=20LINUX=20=
package=20configuration.=0A+=0A+Additional=20CONFIGS=20will=20be=20used=20=
to=20modify=20the=20given=20or=20saved=20defconfig,=20which=0A+will=20=
finally=20be=20used=20to=20build=20Linux.=0A+=0A+CONFIGS=20can=20be=20a=20=
list=20of=20strings,=20with=20one=20configuration=20per=20line.=20=20The=20=
usual=0A+defconfig=20syntax=20has=20to=20be=20used,=20but=20there=20is=20=
a=20special=20extension=20to=20ease=20the=0A+removal=20of=20=
configurations.=20=20Comment=20lines=20are=20supported=20as=20well.=0A+=0A=
+Here=20is=20an=20explaining=20usage=20example:=0A+=0A+=20=20'(;;=20This=20=
string=20defines=20the=20version=20tail=20in=20'uname=20-r'.=0A+=20=20=20=
=20\"CONFIG_LOCALVERSION=3D\\\"-handcrafted\\\"=0A+=20=20=20=20;;=20This=20=
'#=20CONFIG_=E2=80=A6=20is=20not=20set'=20syntax=20has=20to=20match=20=
exactly!=0A+=20=20=20=20\"#=20CONFIG_BOOT_CONFIG=20is=20not=20set\"=0A+=20=
=20=20=20\"CONFIG_NFS_SWAP=3Dy\"=0A+=20=20=20=20;;=20This=20is=20a=20=
multiline=20configuration:=0A+=20=20=20=20\"CONFIG_E1000=3Dy=0A+#=20This=20=
is=20a=20comment,=20below=20follow=20two=20special=20removal=20=
extensions:=0A+CONFIG_CMDLINE_EXTEND=0A+CONFIG_CMDLINE_FORCE=3D\")=0A+=0A=
+A=20string=20of=20configurations=20instead=20of=20a=20list=20of=20=
configuration=20strings=20is=20also=0A+possible.=0A+=0A+EXTRA-VERSION=20=
can=20be=20a=20string=20overwriting=20the=20EXTRAVERSION=20setting=20of=20=
the=20LINUX=0A+package,=20after=20being=20prepended=20by=20a=20hyphen.=20=
=20It=20will=20be=20visible=20in=20the=20output=0A+of=20'uname=20-r'=20=
behind=20the=20Linux=20version=20numbers."=0A+=20=20(package=0A+=20=20=20=
=20(inherit=20linux)=0A+=20=20=20=20(name=20(or=20name=20(package-name=20=
linux)))=0A+=20=20=20=20(source=20(or=20source=20(package-source=20=
linux)))=0A+=20=20=20=20(arguments=0A+=20=20=20=20=20=
(substitute-keyword-arguments=0A+=20=20=20=20=20=20=20=20=20=
(package-arguments=20linux)=0A+=20=20=20=20=20=20=20((#:imported-modules=20=
imported-modules=20%gnu-build-system-modules)=0A+=20=20=20=20=20=20=20=20=
`((guix=20build=20kconfig)=20,@imported-modules))=0A+=20=20=20=20=20=20=20=
((#:modules=20modules)=0A+=20=20=20=20=20=20=20=20`((guix=20build=20=
kconfig)=20,@modules))=0A+=20=20=20=20=20=20=20((#:phases=20phases)=0A+=20=
=20=20=20=20=20=20=20`(modify-phases=20,phases=0A+=20=20=20=20=20=20=20=20=
=20=20=20(replace=20'configure=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
(lambda*=20(#:key=20inputs=20#:allow-other-keys=20#:rest=20arguments)=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(let*=20((srcarch=0A+=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
,(system->linux-srcarch=20(or=20(%current-target-system)=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(%current-system))))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(configs=20(string-append=20"arch/"=20srcarch=20=
"/configs/"))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(guix_defconfig=20(string-append=20configs=20=
"guix_defconfig")))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
,(cond=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
((not=20defconfig)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20`(begin=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20;;=20Call=20the=20original=20'configure=20=
phase.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(apply=20(assoc-ref=20,phases=20'configure)=20arguments)=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
;;=20Save=20a=20defconfig=20file.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20(invoke=20"make"=20=
"savedefconfig")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20;;=20Move=20the=20saved=20defconfig=20to=20the=20=
proper=20location.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(rename-file=20"defconfig"=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20guix_defconfig)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20((string?=20defconfig)=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20Use=20another=20existing=20=
defconfig=20from=20the=20Linux=20sources.=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20`(rename-file=20(string-append=20=
configs=20,defconfig)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
guix_defconfig))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20(else=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20;;=20Copy=20the=20defconfig=20input=20to=20the=20proper=20=
location.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20'(copy-file=20(assoc-ref=20inputs=20"guix_defconfig")=0A+=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20guix_defconfig)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(modify-defconfig=20guix_defconfig=20',configs)=0A+=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20,@(if=20extra-version=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20`((setenv=20=
"EXTRAVERSION"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20(string-append=20"-"=20=
extra-version)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20'())=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(invoke=20"make"=20"guix_defconfig"))=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20#t))))))=0A+=20=20=20=20(native-inputs=0A+=20=20=20=20=20=20=
(append=20(if=20(or=20(not=20defconfig)=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20(string?=20defconfig))=0A+=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20'()=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20;;=20The=20defconfig=20should=20be=20a=20=
package=20or=20file-like=20object.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20`(("guix_defconfig"=20,defconfig)))=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(package-native-inputs=20linux)))))=0A+=0A=
+(define-public=20(make-defconfig=20uri=20sha256-as-base32)=0A+=20=20=
(origin=20(method=20url-fetch)=0A+=20=20=20=20=20=20=20=20=20=20(uri=20=
uri)=0A+=20=20=20=20=20=20=20=20=20=20(sha256=20(base32=20=
sha256-as-base32))))=0A=20=0A=20=0C=0A=20;;;=0A=

--Apple-Mail=_86284009-8FBA-4824-A8C2-0E82155DD3CC
Content-Disposition: attachment;
	filename=07-gnu-raspberry-pi-add-defconfig.patch
Content-Type: application/octet-stream;
	name="07-gnu-raspberry-pi-add-defconfig.patch"
Content-Transfer-Encoding: quoted-printable

gnu:=20raspberry-pi:=20Add=20defconfig=20objects=20to=20build=20=
customized=20Linux=20kernels.=0A=0AFrom:=20Stefan=20=
<stefan-guix@HIDDEN>=0A=0Agnu/packages/raspberry-pi.scm=20=
(make-raspi-defconig):=20New=20function=20to=20make=0Adownloaded=20=
defconfig=20objects=20from=20the=20Linux=20repository=20of=20the=20=
Raspberry=20Pi=0AFoundation.=0A(%bcm2709-defconfig,=20=
%bcm2710-defconfig,=20%bcm2711-defconfig,=0A%bcm2835-defconfig,=20=
%bcmrpi-defconfig,=20%bcm2711-defconfig-64,=0A%bcmrpi3-defconfig):=20New=20=
variables=20containing=20defconfig=20objects=20to=20build=0ALinux=20=
kernels=20customized=20for=20Raspberry=20Pi=20single=20board=20=
computers.=0A---=0A=20gnu/packages/raspberry-pi.scm=20|=20=20=2044=20=
++++++++++++++++++++++++++++++++++++++++-=0A=201=20file=20changed,=2043=20=
insertions(+),=201=20deletion(-)=0A=0Adiff=20--git=20=
a/gnu/packages/raspberry-pi.scm=20b/gnu/packages/raspberry-pi.scm=0A=
index=20bb38b8b218..a2ab300531=20100644=0A---=20=
a/gnu/packages/raspberry-pi.scm=0A+++=20b/gnu/packages/raspberry-pi.scm=0A=
@@=20-1,5=20+1,6=20@@=0A=20;;;=20GNU=20Guix=20---=20Functional=20package=20=
management=20for=20GNU=0A=20;;;=20Copyright=20=C2=A9=202020=20Danny=20=
Milosavljevic=20<dannym@HIDDEN>=0A+;;;=20Copyright=20=C2=A9=20=
2021=20Stefan=20<stefan-guix@HIDDEN>=0A=20;;;=0A=20;;;=20This=20=
file=20is=20part=20of=20GNU=20Guix.=0A=20;;;=0A@@=20-25,9=20+26,10=20@@=0A=
=20=20=20#:use-module=20(gnu=20packages=20commencement)=0A=20=20=20=
#:use-module=20(gnu=20packages=20cross-base)=0A=20=20=20#:use-module=20=
(gnu=20packages=20documentation)=0A+=20=20#:use-module=20(gnu=20packages=20=
embedded)=0A=20=20=20#:use-module=20(gnu=20packages=20file)=0A=20=20=20=
#:use-module=20(gnu=20packages=20gcc)=0A-=20=20#:use-module=20(gnu=20=
packages=20embedded)=0A+=20=20#:use-module=20(gnu=20packages=20linux)=0A=20=
=20=20#:use-module=20(guix=20build-system=20gnu)=0A=20=20=20#:use-module=20=
(guix=20download)=0A=20=20=20#:use-module=20(guix=20git-download)=0A@@=20=
-235,3=20+237,43=20@@=20Raspberry=20Pi.=20=20Note:=20It=20does=20not=20=
work=20on=20Raspberry=20Pi=201.")=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(install-file=20"arm64.bin"=20libexec)=0A=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20#t))))))))=0A=20=20=20=20=20(supported-systems=20=
'("aarch64-linux"))))=0A+=0A+(define=20(make-raspi-defconfig=20arch=20=
defconfig=20sha256-as-base32)=0A+=20=20"Make=20for=20the=20architecture=20=
ARCH=20a=20file-like=20object=20from=20the=20DEFCONFIG=20file=0A+with=20=
the=20hash=20SHA256-AS-BASE32.=20=20This=20object=20can=20be=20used=20as=20=
the=20#:defconfig=0A+argument=20of=20the=20function=20(modify-linux)."=0A=
+=20=20(make-defconfig=0A+=20=20=20(string-append=0A+=20=20=20=20=
"https://raw.githubusercontent.com/raspberrypi/linux/raspberrypi-kernel_1.=
20210430-1/arch/"=0A+=20=20=20=20arch=20"/configs/"=20defconfig)=0A+=20=20=
=20sha256-as-base32))=0A+=0A+(define-public=20%bcm2709-defconfig=0A+=20=20=
(make-raspi-defconfig=0A+=20=20=20"arm"=20"bcm2709_defconfig"=0A+=20=20=20=
"0yvrmid2jakl929d1mv00gidnqbf91ffhj61c9gl75f7km48811c"))=0A+=0A=
+(define-public=20%bcm2711-defconfig=0A+=20=20(make-raspi-defconfig=0A+=20=
=20=20"arm"=20"bcm2711_defconfig"=0A+=20=20=20=
"19hb6nwna7sk3b4rn5yjfhldrs3c1lv24q08w4gpa4xzh1byv7jj"))=0A+=0A=
+(define-public=20%bcm2835-defconfig=0A+=20=20(make-raspi-defconfig=0A+=20=
=20=20"arm"=20"bcm2835_defconfig"=0A+=20=20=20=
"17dmvabqvxwqn6lgv1x8rfh2wqf1r2xmm10nkdnrgwkmgv8bh2d5"))=0A+=0A=
+(define-public=20%bcmrpi-defconfig=0A+=20=20(make-raspi-defconfig=0A+=20=
=20=20"arm"=20"bcmrpi_defconfig"=0A+=20=20=20=
"0lcmr6nxdd53m3k8hqb5k6c5b7vbdgmfvcliqyl95snp45rxjjkw"))=0A+=0A=
+(define-public=20%bcm2711-defconfig-64=0A+=20=20(make-raspi-defconfig=0A=
+=20=20=20"arm64"=20"bcm2711_defconfig"=0A+=20=20=20=
"0xf38nczwinr0j8vhsn8nd8h4ysjn77xphg7xnssz04gclb7fndr"))=0A+=0A=
+(define-public=20%bcmrpi3-defconfig=0A+=20=20(make-raspi-defconfig=0A+=20=
=20=20"arm64"=20"bcmrpi3_defconfig"=0A+=20=20=20=
"01k098snd7kbmhz68j93mj2fwp39c56g9r8rgaw17js5r0w0zbhy"))=0A=

--Apple-Mail=_86284009-8FBA-4824-A8C2-0E82155DD3CC
Content-Disposition: attachment;
	filename=08-gnu-raspberry-pi-add-helpers.patch
Content-Type: application/octet-stream;
	name="08-gnu-raspberry-pi-add-helpers.patch"
Content-Transfer-Encoding: 7bit

gnu: raspberry-pi: Add helpers for config.txt file generation.

From: Stefan <stefan-guix@HIDDEN>

* gnu/packages/raspberry-pi.scm (raspi-config-file, raspi-custom-txt):
New functions.
(%raspi-config-txt, %raspi-bcm27-dtb-txt, %raspi-bcm28-dtb-txt
%raspi-u-boot-bootloader-txt): New variables.
---
 gnu/packages/raspberry-pi.scm |   53 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/gnu/packages/raspberry-pi.scm b/gnu/packages/raspberry-pi.scm
index a2ab300531..0707516f72 100644
--- a/gnu/packages/raspberry-pi.scm
+++ b/gnu/packages/raspberry-pi.scm
@@ -238,6 +238,59 @@ Raspberry Pi.  Note: It does not work on Raspberry Pi 1.")
                #t))))))))
     (supported-systems '("aarch64-linux"))))
 
+(define-public (raspi-config-file name content)
+  "Make a configuration file like config.txt for the Raspberry Pi firmware.
+CONTENT can be a list of strings, which are concatenated with a newline
+character.  Alternatively CONTENT can be a string with the full file content."
+  (plain-file
+   name
+   (if (list? content)
+       (string-join content "\n" 'suffix)
+       content)))
+
+(define-public %raspi-config-txt
+  ;; A config.txt file to start the ARM cores up in 64-bit mode if necessary
+  ;; and to include a dtb.txt, bootloader.txt, and a custom.txt, each with
+  ;; separated configurations for the Raspberry Pi firmware.
+  (raspi-config-file
+   "config.txt"
+   `("# See https://www.raspberrypi.org/documentation/configuration/config-txt/README.md for details."
+     ""
+     ,(string-append "arm_64bit=" (if (target-aarch64?) "1" "0"))
+     "include dtb.txt"
+     "include bootloader.txt"
+     "include custom.txt")))
+
+(define-public %raspi-bcm27-dtb-txt
+  ;; A dtb.txt file to be included by the config.txt to ensure that the
+  ;; downstream device tree files bcm27*.dtb will be used.
+  (raspi-config-file
+   "dtb.txt"
+   "upstream_kernel=0"))
+
+(define-public %raspi-bcm28-dtb-txt
+  ;; A dtb.txt file to be included by the config.txt to ensure that the
+  ;; upstream device tree files bcm28*.dtb will be used.
+  ;; This also implies the use of the dtoverlay=upstream.
+  (raspi-config-file
+   "dtb.txt"
+   "upstream_kernel=1"))
+
+(define-public %raspi-u-boot-bootloader-txt
+  ;; A bootloader.txt file to be included by the config.txt to load the
+  ;; U-Boot bootloader.
+  (raspi-config-file
+   "bootloader.txt"
+   '("dtoverlay=upstream"
+     "enable_uart=1"
+     "kernel=u-boot.bin")))
+
+(define-public (raspi-custom-txt content)
+  "Make a custom.txt file for the Raspberry Pi firmware.
+CONTENT can be a list of strings, which are concatenated with a newline
+character.  Alternatively CONTENT can be a string with the full file content."
+  (raspi-config-file "custom.txt" content))
+
 (define (make-raspi-defconfig arch defconfig sha256-as-base32)
   "Make for the architecture ARCH a file-like object from the DEFCONFIG file
 with the hash SHA256-AS-BASE32.  This object can be used as the #:defconfig

--Apple-Mail=_86284009-8FBA-4824-A8C2-0E82155DD3CC
Content-Disposition: attachment;
	filename=09-gnu-raspberry-pi-new-function.patch
Content-Type: application/octet-stream;
	name="09-gnu-raspberry-pi-new-function.patch"
Content-Transfer-Encoding: 7bit

gnu: raspberry-pi: New function to make a package with device-tree files.

From: Stefan <stefan-guix@HIDDEN>

* gnu/packages/raspberry-pi.scm (make-raspi-bcm28-dtbs): New function to make
a package with device-tree files for Raspberry Pi models from the kernel given
as argument.
---
 gnu/packages/raspberry-pi.scm |   21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/raspberry-pi.scm b/gnu/packages/raspberry-pi.scm
index 0707516f72..d808f61ac2 100644
--- a/gnu/packages/raspberry-pi.scm
+++ b/gnu/packages/raspberry-pi.scm
@@ -30,6 +30,7 @@
   #:use-module (gnu packages file)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages linux)
+  #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -291,6 +292,26 @@ CONTENT can be a list of strings, which are concatenated with a newline
 character.  Alternatively CONTENT can be a string with the full file content."
   (raspi-config-file "custom.txt" content))
 
+(define-public (make-raspi-bcm28-dtbs linux)
+  "Make a package with the device-tree files for Raspberry Pi models from the
+kernel LINUX."
+  (package
+    (inherit linux)
+    (name "raspi-bcm28-dtbs")
+    (source #f)
+    (build-system copy-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases (delete 'unpack))
+       #:install-plan
+       (list (list (string-append (assoc-ref %build-inputs "linux")
+                                  "/lib/dtbs/broadcom/")
+                   "." #:include-regexp '("/bcm....-rpi.*\\.dtb")))))
+    (inputs `(("linux" ,linux)))
+    (synopsis "Device-tree files for a Raspberry Pi")
+    (description
+     (simple-format #f "The device-tree files for Raspberry Pi models from ~a."
+             (package-name linux)))))
+
 (define (make-raspi-defconfig arch defconfig sha256-as-base32)
   "Make for the architecture ARCH a file-like object from the DEFCONFIG file
 with the hash SHA256-AS-BASE32.  This object can be used as the #:defconfig

--Apple-Mail=_86284009-8FBA-4824-A8C2-0E82155DD3CC
Content-Disposition: attachment;
	filename=10-gnu-raspberry-pi-add-a.patch
Content-Type: application/octet-stream;
	name="10-gnu-raspberry-pi-add-a.patch"
Content-Transfer-Encoding: 7bit

gnu: raspberry-pi: Add a bootloader-chain for the Raspberry Pi and os examples.

From: Stefan <stefan-guix@HIDDEN>

* gnu/packages/raspberry-pi.scm (grub-efi-bootloader-chain-raspi-64): New
bootloader variable, capable to boot a Raspberry Pi over network or from a
local storage.
* gnu/system/examples/raspberry-pi-64.tmpl: New operating-system example.
* gnu/system/examples/raspberry-pi-64-nfs-root.tmpl: New operating-system
example for booting over network.
---
 gnu/packages/raspberry-pi.scm                     |   19 +++++
 gnu/system/examples/raspberry-pi-64-nfs-root.tmpl |   73 ++++++++++++++++++++
 gnu/system/examples/raspberry-pi-64.tmpl          |   77 +++++++++++++++++++++
 3 files changed, 169 insertions(+)
 create mode 100644 gnu/system/examples/raspberry-pi-64-nfs-root.tmpl
 create mode 100644 gnu/system/examples/raspberry-pi-64.tmpl

diff --git a/gnu/packages/raspberry-pi.scm b/gnu/packages/raspberry-pi.scm
index d808f61ac2..d52a4a72c5 100644
--- a/gnu/packages/raspberry-pi.scm
+++ b/gnu/packages/raspberry-pi.scm
@@ -18,11 +18,14 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages raspberry-pi)
+  #:use-module (gnu bootloader)
+  #:use-module (gnu bootloader grub)
   #:use-module (gnu packages)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
+  #:use-module (gnu packages bootloaders)
   #:use-module (gnu packages commencement)
   #:use-module (gnu packages cross-base)
   #:use-module (gnu packages documentation)
@@ -312,6 +315,22 @@ kernel LINUX."
      (simple-format #f "The device-tree files for Raspberry Pi models from ~a."
              (package-name linux)))))
 
+(define-public grub-efi-bootloader-chain-raspi-64
+  ;; A bootloader capable to boot a Raspberry Pi over network via TFTP or from
+  ;; a local storage like a micro SD card.
+  ;; It neither installs firmware nor device-tree files for the Raspberry Pi.
+  ;; It just assumes them to be existing in boot/efi in the same way that some
+  ;; UEFI firmware with ACPI data is usually assumed to be existing on PCs.
+  ;; It creates firmware configuration files and a bootloader-chain with U-Boot
+  ;; to provide an EFI API for the final GRUB bootloader.
+  ;; It also serves as a blue-print to create an own bootloader-chain with
+  ;; firmwre and device-tree packages or files.
+  (efi-bootloader-chain grub-efi-netboot-removable-bootloader
+                        #:packages (list u-boot-rpi-efi-64)
+                        #:files (list %raspi-config-txt
+                                      %raspi-bcm27-dtb-txt
+                                      %raspi-u-boot-bootloader-txt)))
+
 (define (make-raspi-defconfig arch defconfig sha256-as-base32)
   "Make for the architecture ARCH a file-like object from the DEFCONFIG file
 with the hash SHA256-AS-BASE32.  This object can be used as the #:defconfig
diff --git a/gnu/system/examples/raspberry-pi-64-nfs-root.tmpl b/gnu/system/examples/raspberry-pi-64-nfs-root.tmpl
new file mode 100644
index 0000000000..a1e41e3399
--- /dev/null
+++ b/gnu/system/examples/raspberry-pi-64-nfs-root.tmpl
@@ -0,0 +1,73 @@
+;; This is an operating-system configuration template of a
+;; 64-bit minimal system for a Raspberry Pi with an NFS root file-system.
+
+;; It neither installs firmware nor device-tree files for the Raspberry Pi.
+;; It just assumes them to be existing in boot/efi in the same way that some
+;; UEFI firmware with ACPI data is usually assumed to be existing on PCs.
+
+;; It expects the boot/efi directory to be served via TFTP and the root
+;; file-system to be served via NFS. See the grub-efi-netboot-bootloader
+;; description in the manual for more details.
+
+(use-modules (gnu)
+             (gnu artwork)
+             (gnu system nss))
+(use-service-modules admin
+                     avahi
+                     networking
+                     ssh)
+(use-package-modules certs
+                     linux
+                     raspberry-pi
+                     ssh)
+
+(define %my-public-key
+  (local-file (string-append (getenv "HOME") "/.ssh/id_ecdsa.pub")))
+
+(define-public raspberry-pi-64-nfs-root
+  (operating-system
+   (host-name "raspberrypi-guix")
+   (timezone "Europe/Berlin")
+   (bootloader (bootloader-configuration
+                (bootloader grub-efi-bootloader-chain-raspi-64)
+                (target "/boot/efi")
+                (theme (grub-theme (resolution '(1920 . 1080))
+                       (image (file-append
+                               %artwork-repository
+                               "/grub/GuixSD-fully-black-16-9.svg"))))))
+   (kernel-arguments '("ip=dhcp"))
+   (kernel (modify-linux #:linux linux-libre-arm64-generic
+                         #:extra-version "arm64-generic-netboot"
+                         #:configs '("CONFIG_NFS_SWAP=y"
+                                     "CONFIG_USB_USBNET=y"
+                                     "CONFIG_USB_LAN78XX=y"
+                                     "CONFIG_USB_NET_SMSC95XX=y")))
+   (initrd-modules '())
+   (file-systems (cons* (file-system
+                         (mount-point "/")
+                         (type "nfs")
+                         (device ":/export/raspberrypi/guix")
+                         (options "addr=10.20.30.40,vers=4.1"))
+                        %base-file-systems))
+   (swap-devices '("/run/swapfile"))
+   (users (cons* (user-account
+                  (name "pi")
+                  (group "users")
+                  (supplementary-groups '("wheel" "netdev" "audio" "video"))
+                  (home-directory "/home/pi"))
+                 %base-user-accounts))
+   (packages (cons* nss-certs
+                    openssh
+                    %base-packages))
+   (services (cons* (service avahi-service-type)
+                    (service dhcp-client-service-type)
+                    (service ntp-service-type)
+                    (service openssh-service-type
+                             (openssh-configuration
+                              (x11-forwarding? #t)
+                              (authorized-keys
+                              `(("pi" ,%my-public-key)))))
+                    %base-services))
+   (name-service-switch %mdns-host-lookup-nss)))
+
+raspberry-pi-64-nfs-root
diff --git a/gnu/system/examples/raspberry-pi-64.tmpl b/gnu/system/examples/raspberry-pi-64.tmpl
new file mode 100644
index 0000000000..7e18f00d86
--- /dev/null
+++ b/gnu/system/examples/raspberry-pi-64.tmpl
@@ -0,0 +1,77 @@
+;; This is an operating-system configuration template of a
+;; 64-bit minimal system for a Raspberry Pi with local storage.
+
+;; It neither installs firmware nor device-tree files for the Raspberry Pi.
+;; It just assumes them to be existing in boot/efi in the same way that some
+;; UEFI firmware with ACPI data is usually assumed to be existing on PCs.
+
+;; It expects the boot-partition to be mounted as boot/efi in the same way
+;; as it is usually expeted on PCs with UEFI firmware.
+
+(use-modules (gnu)
+             (gnu artwork)
+             (gnu system nss))
+(use-service-modules admin
+                     avahi
+                     networking
+                     ssh)
+(use-package-modules certs
+                     linux
+                     raspberry-pi
+                     ssh)
+
+(define %my-public-key
+  (local-file (string-append (getenv "HOME") "/.ssh/id_ecdsa.pub")))
+
+(define-public raspberry-pi-64
+  (operating-system
+   (host-name "raspberrypi-guix")
+   (timezone "Europe/Berlin")
+   (bootloader (bootloader-configuration
+                (bootloader grub-efi-bootloader-chain-raspi-64)
+                (target "/boot/efi")
+                (theme (grub-theme (resolution '(1920 . 1080))
+                       (image (file-append
+                               %artwork-repository
+                               "/grub/GuixSD-fully-black-16-9.svg"))))))
+   (kernel (modify-linux #:linux linux-libre-arm64-generic
+                         #| It is possible to use a specific defconfig file,
+                            for example the "bcmrpi3_defconfig" with the
+                            variable shown below.  Unfortunately the kernel
+                            build from the linux-libre sources with this
+                            defconfig file does not boot.
+                            #:extra-version "gnu-bcmrpi3"
+                            #:defconfig %bcmrpi3-defconfig
+                         |#))
+   (initrd-modules '())
+   (file-systems (cons* (file-system
+                         (mount-point "/")
+                         (type "ext4")
+                         (device (file-system-label "Guix")))
+                        (file-system
+                         (mount-point "/boot/efi")
+                         (type "vfat")
+                         (device (file-system-label "EFI")))
+                        %base-file-systems))
+   (swap-devices '("/run/swapfile"))
+   (users (cons* (user-account
+                  (name "pi")
+                  (group "users")
+                  (supplementary-groups '("wheel" "netdev" "audio" "video"))
+                  (home-directory "/home/pi"))
+                 %base-user-accounts))
+   (packages (cons* nss-certs
+                    openssh
+                    %base-packages))
+   (services (cons* (service avahi-service-type)
+                    (service dhcp-client-service-type)
+                    (service ntp-service-type)
+                    (service openssh-service-type
+                             (openssh-configuration
+                              (x11-forwarding? #t)
+                              (authorized-keys
+                              `(("pi" ,%my-public-key)))))
+                    %base-services))
+   (name-service-switch %mdns-host-lookup-nss)))
+
+raspberry-pi-64

--Apple-Mail=_86284009-8FBA-4824-A8C2-0E82155DD3CC--




Information forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 9 May 2021 15:32:23 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun May 09 11:32:23 2021
Received: from localhost ([127.0.0.1]:55883 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1lflPr-0000mK-OF
	for submit <at> debbugs.gnu.org; Sun, 09 May 2021 11:32:23 -0400
Received: from lists.gnu.org ([209.51.188.17]:39020)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <stefan-guix@HIDDEN>) id 1lflPq-0000mE-7u
 for submit <at> debbugs.gnu.org; Sun, 09 May 2021 11:32:22 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:46602)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <stefan-guix@HIDDEN>)
 id 1lflPo-00011L-9h
 for guix-patches@HIDDEN; Sun, 09 May 2021 11:32:20 -0400
Received: from smtpout2.vodafonemail.de ([145.253.239.133]:37178)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <stefan-guix@HIDDEN>)
 id 1lflPg-0006A8-Il
 for guix-patches@HIDDEN; Sun, 09 May 2021 11:32:19 -0400
Received: from smtp.vodafone.de (smtpa08.fra-mediabeam.com [10.2.0.39])
 by smtpout2.vodafonemail.de (Postfix) with ESMTP id 0C370120F23
 for <guix-patches@HIDDEN>; Sun,  9 May 2021 17:32:06 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de;
 s=vfde-smtpout-mb-15sep; t=1620574326;
 bh=UhRzRmRnwRHIkQQ+ge0pZrtx8Z6kt5OPxIsuTo6l+JA=;
 h=From:Subject:Date:To;
 b=T8mepW7t26lFk5Rh0fYi9E2RV2ufjrBnqZkJnfDQnL+D2mJNqC3RCqp6ROsvwE1/R
 WJXGTGy5xulouQmiyC8uDG2KymRbYbR0AP3OYCGh489JgPeyCRaQwnIHn1fXDhpcQX
 XVv+thBP0Ci0siy3vp76B8s29xS3NE+0IvjlXxck=
Received: from macbook-pro.kuh-wiese.my-router.de
 (dslb-002-206-141-063.002.206.pools.vodafone-ip.de [2.206.141.63])
 (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))
 (No client certificate requested)
 by smtp.vodafone.de (Postfix) with ESMTPSA id 5EF28140198
 for <guix-patches@HIDDEN>; Sun,  9 May 2021 15:32:05 +0000 (UTC)
From: Stefan <stefan-guix@HIDDEN>
Content-Type: multipart/mixed;
 boundary="Apple-Mail=_B6AEB1F9-A6A1-473E-A99F-86D875ECF369"
Subject: Patches to install guix system on Raspberry Pi
Message-Id: <19E4796A-B0DB-444F-8773-2E8D3EF6132D@HIDDEN>
Date: Sun, 9 May 2021 17:32:04 +0200
To: guix-patches@HIDDEN
Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\))
X-Mailer: Apple Mail (2.3124)
X-purgate-type: clean
X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de
X-purgate: This mail is considered clean (visit http://www.eleven.de for
 further information)
X-purgate: clean
X-purgate-size: 134108
X-purgate-ID: 155817::1620574325-000006F1-FCAAA79D/0/0
Received-SPF: pass client-ip=145.253.239.133;
 envelope-from=stefan-guix@HIDDEN; helo=smtpout2.vodafonemail.de
X-Spam_score_int: -27
X-Spam_score: -2.8
X-Spam_bar: --
X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,
 RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01,
 SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>


--Apple-Mail=_B6AEB1F9-A6A1-473E-A99F-86D875ECF369
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8

Hi!

This patch series adds support for the Raspberry Pi. It allows to use =
=E2=80=98sudo -E guix system init =E2=80=A6 /mnt=E2=80=99 with the root =
partition mounted at /mnt and the boot partition mounted at =
/mnt/boot/efi, as you would expect it for a PC with UEFI. Installing for =
netboot is possible as well.

It is currently not possible to build an image with this patch series, =
because of the intercepting handling for efi system image creation.

Some of these patches are generic and not related to the Raspberry Pi. I =
hope they will be a useful contribution for everyone.

Here is a quick overview of the single patches:

01: Disable the tests on aarch64 for qemu-minimal, because it is =
non-deterministic but needed to build grub.

02: Rework the grub-efi-netboot-bootloader and add a =
grub-efi-netboot-removable-bootloader which then are pre-installed. This =
allows a simplification of the efi-bootloader-chain, as these =
pre-installed bootloaders just need to be copied and can therefore =
easily be collected in a bootloader-profile.

03: A new build-side module to modify a defconfig. It is used to =
customize U-Boot and Linux packages.

04: Customized and pre-installed U-Boot packages for the Raspberry Pi.

05: Fixed the EXTRAVERSION variable used to build Linux, so that the =
extra-version argument will be visible with uname.=20

06: New function to modify a Linux package by using another defconfig =
and/or adding or removing configurations.

07: Raspberry Pi specific defconfig objects.

08: Some helpers to construct config.txt files for the Raspberry Pi =
firmware.

09: A function to create a package with device-tree files from a Linux =
package for the Raspberry Pi.

10: A bootloader for the Raspberry Pi. Additionally two examples of =
operating-system definitions to boot from local storage or over network, =
the latter is making necessary configuration changes to Linux.

The firmware topic is excluded. In the same way that guix assumes that =
some UEFI firmware is already present on a PC, this patch series assumes =
that a firmware to start U-Boot is already present.

The grub bootloaders are usable on PCs as well. In contrast to the =
normal grub-efi, all grub files are copied to the EFI system partition, =
instead of the root partition. This is a side effect of the netboot =
capability. Maybe this is helpful for some spacial cases. I realized for =
example that the normal grub-efi locates the partition containing the =
grub.cfg by a device name like (hd0,gpt1), this may be problematic when =
adding disks to a system. The new grub bootloaders determine the =
partition by UUID.

The new possibility to customize Linux with (modify-linux) will be =
useful for anyone in need to do small configuration changes. There is =
also the possibility to pass an own defconfig file to this function. It =
can either be the name of a defconfig file from the Linux sources, or it =
can be a file-like object, like produced by (local-file) or possibly =
downloaded with the new (make-defconfig) function.


Bye

Stefan


--Apple-Mail=_B6AEB1F9-A6A1-473E-A99F-86D875ECF369
Content-Disposition: attachment;
	filename=01-gnu-qemu-disable-tests-on.patch
Content-Type: application/octet-stream;
	name="01-gnu-qemu-disable-tests-on.patch"
Content-Transfer-Encoding: 7bit

gnu: qemu: Disable tests on aarch64.

From: Stefan <stefan-guix@HIDDEN>

* gnu/packages/virtualization.scm (qemu): Disable tests on aarch64 because
of <https://bugs.gnu.org/43534>.
---
 gnu/packages/virtualization.scm |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index a2df3e763c..0f90a7feea 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -172,10 +172,11 @@
     (outputs '("out" "static" "doc"))   ;5.3 MiB of HTML docs
     (build-system gnu-build-system)
     (arguments
-     ;; FIXME: Disable tests on i686 to work around
-     ;; <https://bugs.gnu.org/40527>.
-     `(#:tests? ,(or (%current-target-system)
-                     (not (string=? "i686-linux" (%current-system))))
+     ;; FIXME: Disable tests on aarch64 and i686 to work around
+     ;; <https://bugs.gnu.org/43534> and <https://bugs.gnu.org/40527>.
+     `(#:tests? ,(and (not (target-aarch64?))
+                      (or (%current-target-system)
+                          (not (string=? "i686-linux" (%current-system)))))
        #:configure-flags
        (let ((gcc (string-append (assoc-ref %build-inputs "gcc") "/bin/gcc"))
              (out (assoc-ref %outputs "out")))

--Apple-Mail=_B6AEB1F9-A6A1-473E-A99F-86D875ECF369
Content-Disposition: attachment;
	filename=02-gnu-bootloader-rework-chaining.patch
Content-Type: application/octet-stream;
	name="02-gnu-bootloader-rework-chaining.patch"
Content-Transfer-Encoding: quoted-printable

gnu:=20bootloader:=20Rework=20chaining,=20add=20=
grub-efi-netboot-removable-bootloader.=0A=0AFrom:=20Stefan=20=
<stefan-guix@HIDDEN>=0A=0A*=20doc/guix.texi=20(Bootloader=20=
Configuration):=20Describe=20the=20new=0A=
=E2=80=98grub-efi-netboot-removable-bootloader=E2=80=99.=20=20Mention=20=
used=20sub-directories=20and=0Athat=20the=20UEFI=20Boot=20Manager=20is=20=
not=20modified.=20=20Advice=20to=20disable=20write-access=0Aover=20TFTP.=0A=
*=20gnu/bootloader.scm=20(efi-bootloader-profile):=20Allow=20a=20list=20=
of=20packages=20and=0Acollect=20everything=20directly=20in=20the=20=
profile,=20avoiding=20a=20separate=20collection=0Adirectory.=20=20=
Renamed=20the=20profile=20from=20"bootloader-profile"=20to=0A=
"efi-bootloader-profile".=0A[bootloader-collection]:=20Renamed=20to=20=
=E2=80=A6=0A[efi-bootloader-profile-hook]:=20=E2=80=A6=20this=20and=20=
removed=20unused=20modules=20and=20the=0Acreation=20of=20the=20now=20=
unneeded=20collection=20directory.=0A(efi-bootloader-chain):=20Added=20=
packages=20and=20disk-image-installer=20arguments.=0ARemoved=20handling=20=
of=20the=20collection=20directory,=20now=20only=20calling=20the=20given=0A=
installer=20procedure.=0A*=20gnu/bootloader/grub.scm=20=
(make-grub-efi-netboot-installer):=20New=20helper.=0A=
(make-grub-configuration):=20New=20helper=20based=20on=20=
(grub-configuration-file).=0AAdding=20grub=20argument,=20fixed=20=
indentation,=20removend=20code=20to=20get=20grub.=0A=
(grub-configuration-file):=20Now=20using=20(make-grub-configuration).=0A=
(grub-efi-configuration-file):=20New=20function=20using=20=
(make-grub-configuration).=0AInstead=20of=20getting=20the=20grub-efi=20=
package=20from=20the=20bootloader-configuration=0Athis=20function=20=
refers=20to=20the=20grub-efi=20package=20directly.=0A(grub-cfg):=20New=20=
variable=20to=20replace=20"/boot/grub/grub.cfg".=0A=
(install-grub-efi-netboot):=20Removed,=20the=20functionality=20got=20=
moved.=0A(make-grub-efi-netboot-installer):=20New=20helper=20function=20=
to=20return=20a=20customized=0Ainstaller=20for=20a=20certain=20=
efi-sub-directory.=20=20The=20installer=20basically=20copies=0Aa=20=
pre-installed=20efi-bootloader-profile,=20and=20adds=20needed=20symlinks=20=
for=20booting=0Aover=20network,=20or=20=E2=80=93=20on=20an=20ESP=20=E2=80=93=
=20an=20intermediate=20grub-cfg=20to=20load=20the=20final=0Agrub-cfg=20=
file.=0A(grub-bootloader):=20Now=20using=20the=20grub-cfg=20variable.=0A=
(grub-efi-bootloader):=20Now=20using=20the=20grub-cfg=20variable.=20=20=
Removed=20inheritance,=0Agiving=20complete=20set=20of=20fields.=0A=
(make-grub-efi-netboot-bootloader):=20New=20helper=20function.=0A=
(grub-efi-netboot-bootloader):=20Now=20using=20the=20helper.=0A=
(grub-efi-netboot-removable-bootloader):=20New=20bootloader=20using=20=
the=20helper.=0AIt=20uses=20the=20efi-sub-directory=20"efi/boot"=20for=20=
removable=20media.=0A*=20gnu/packages/bootloaders.scm=20=
(make-grub-efi-netboot):=20New=20function=20to=20return=0Aa=20grub-efi=20=
package=20pre-installed=20via=20grub-mknetdir,=20customized=20for=20an=0A=
efi-sub-directory=20and=20able=20to=20boot=20via=20network=20and=20local=20=
storage.=0A=0AThe=20rework=20allows=20to=20use=20an=20=
(efi-bootloader-chain)=20like=20this,=20which=20is=20able=0Ato=20boot=20=
over=20network=20or=20local=20storage,=20depending=20on=20the=20=
symlink-support=20at=0Athe=20bootloader-target:=0A=0A(operating-system=0A=
=20(bootloader=0A=20=20=20(bootloader-configuration=0A=20=20=20=20=20=
(bootloader=0A=20=20=20=20=20=20=20(efi-bootloader-chain=0A=20=20=20=20=20=
=20=20=20=20grub-efi-netboot-removable-bootloader=0A=20=20=20=20=20=20=20=
=20=20#:packages=20(list=20my-firmware-package=0A=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20my-u-boot-package)=0A=
=20=20=20=20=20=20=20=20=20#:files=20(list=20(plain-file=20"config.txt"=0A=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20"kernel=3Du-boot.bin"))=0A=20=20=20=20=20=20=
=20=20=20#:hooks=20my-special-bootloader-profile-manipulator))=0A=20=20=20=
=20=20(target=20"/booti/efi")=0A=20=20=20=20=20=E2=80=A6))=0A=20=E2=80=A6)=
=0A)=0A---=0A=20doc/guix.texi=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20|=20=20=2024=20+++-=0A=20gnu/bootloader.scm=20=20=20=20=20=20=20=20=20=
=20=20|=20=20104=20+++++++++---------=0A=20gnu/bootloader/grub.scm=20=20=20=
=20=20=20|=20=20241=20++++++++++++++++++++++++++----------------=0A=20=
gnu/packages/bootloaders.scm=20|=20=20=2090=20++++++++++++++++=0A=204=20=
files=20changed,=20308=20insertions(+),=20151=20deletions(-)=0A=0Adiff=20=
--git=20a/doc/guix.texi=20b/doc/guix.texi=0Aindex=20=
0947b9f028..40cef21f78=20100644=0A---=20a/doc/guix.texi=0A+++=20=
b/doc/guix.texi=0A@@=20-32595,8=20+32595,9=20@@=20The=20type=20of=20a=20=
bootloader=20configuration=20declaration.=0A=20@cindex=20BIOS,=20=
bootloader=0A=20The=20bootloader=20to=20use,=20as=20a=20=
@code{bootloader}=20object.=20=20For=20now=0A=20@code{grub-bootloader},=20=
@code{grub-efi-bootloader},=0A-@code{grub-efi-netboot-bootloader},=20=
@code{extlinux-bootloader}=20and=0A-@code{u-boot-bootloader}=20are=20=
supported.=0A+@code{grub-efi-netboot-bootloader},=0A=
+@code{grub-efi-netboot-removable-bootloader},=0A=
+@code{extlinux-bootloader}=20and=20@code{u-boot-bootloader}=20are=20=
supported.=0A=20=0A=20@cindex=20ARM,=20bootloaders=0A=20@cindex=20=
AArch64,=20bootloaders=0A@@=20-32622,9=20+32623,10=20@@=20build=20a=20=
diskless=20Guix=20system.=0A=20=0A=20The=20installation=20of=20the=20=
@code{grub-efi-netboot-bootloader}=20generates=20the=20content=0A=20of=20=
the=20TFTP=20root=20directory=20at=20@code{target}=0A-(@pxref{Bootloader=20=
Configuration,=20@code{target}}),=20to=20be=20served=20by=20a=20TFTP=20=
server.=0A-=20You=20may=20want=20to=20mount=20your=20TFTP=20server=20=
directory=20onto=20@code{target}=20to=20move=20the=0A-required=20files=20=
to=20the=20TFTP=20server=20automatically.=0A+(@pxref{Bootloader=20=
Configuration,=20@code{target}})=20below=20the=20sub-directory=0A=
+@file{efi/Guix},=20to=20be=20served=20by=20a=20TFTP=20server.=20=20You=20=
may=20want=20to=20mount=20your=20TFTP=0A+server=20directory=20onto=20=
@code{target}=20to=20move=20the=20required=20files=20to=20the=20TFTP=0A=
+server=20automatically=20during=20installation.=0A=20=0A=20If=20you=20=
plan=20to=20use=20an=20NFS=20root=20file=20system=20as=20well=20=
(actually=20if=20you=20mount=20the=0A=20store=20from=20an=20NFS=20=
share),=20then=20the=20TFTP=20server=20needs=20to=20serve=20the=20file=0A=
@@=20-32655,13=20+32657,23=20@@=20TFTP,=20for=20example=20by=20copying=20=
them=20into=20the=20TFTP=20root=20directory=20at=20@code{target}.=0A=20=
It=20is=20important=20to=20note=20that=20symlinks=20pointing=20outside=20=
the=20TFTP=20root=20directory=0A=20may=20need=20to=20be=20allowed=20in=20=
the=20configuration=20of=20your=20TFTP=20server.=20=20Further=20the=0A=20=
store=20link=20exposes=20the=20whole=20store=20through=20TFTP@.=20=20=
Both=20points=20need=20to=20be=0A-considered=20carefully=20for=20=
security=20aspects.=0A+considered=20carefully=20for=20security=20=
aspects.=20=20It=20is=20advised=20to=20disable=20any=20TFTP=0A+write=20=
access!=0A+=0A+Please=20note,=20that=20this=20bootloader=20will=20not=20=
modify=20the=20=E2=80=98UEFI=20Boot=20Manager=E2=80=99=20of=0A+the=20=
system.=0A=20=0A=20Beside=20the=20@code{grub-efi-netboot-bootloader},=20=
the=20already=20mentioned=20TFTP=20and=0A=20NFS=20servers,=20you=20also=20=
need=20a=20properly=20configured=20DHCP=20server=20to=20make=20the=20=
booting=0A=20over=20netboot=20possible.=20=20For=20all=20this=20we=20can=20=
currently=20only=20recommend=20you=20to=20look=0A=20for=20instructions=20=
about=20@acronym{PXE,=20Preboot=20eXecution=20Environment}.=0A=20=0A=
+@vindex=20grub-efi-netboot-removable-bootloader=0A=
+@code{grub-efi-netboot-removable-bootloader}=20is=20identical=20to=0A=
+@code{grub-efi-netboot-bootloader}=20with=20the=20exception=20that=20=
the=20sub-directory=0A+@file{efi/boot}=20will=20be=20used=20instead=20of=20=
@file{efi/Guix}=20to=20comply=20to=20the=20UEFI=0A+specification=20for=20=
removable=20media.=0A+=0A=20@item=20@code{target}=0A=20This=20is=20a=20=
string=20denoting=20the=20target=20onto=20which=20to=20install=20the=0A=20=
bootloader.=0Adiff=20--git=20a/gnu/bootloader.scm=20b/gnu/bootloader.scm=0A=
index=206d7352ddd2..f7c4a8f338=20100644=0A---=20a/gnu/bootloader.scm=0A=
+++=20b/gnu/bootloader.scm=0A@@=20-232,26=20+232,22=20@@=20record."=0A=20=
=20=20=20=20=20=20=20=20=20=20=20=20(force=20%bootloaders))=0A=20=20=20=20=
=20=20=20(leave=20(G_=20"~a:=20no=20such=20bootloader~%")=20name)))=0A=20=
=0A-(define=20(efi-bootloader-profile=20files=20bootloader-package=20=
hooks)=0A-=20=20"Creates=20a=20profile=20with=20BOOTLOADER-PACKAGE=20and=20=
a=20directory=20collection/=20with=0A-links=20to=20additional=20FILES=20=
from=20the=20store.=20=20This=20collection=20is=20meant=20to=20be=20used=0A=
-by=20the=20bootloader=20installer.=0A+(define=20(efi-bootloader-profile=20=
packages=20files=20hooks)=0A+=20=20"Creates=20a=20profile=20from=20the=20=
lists=20of=20PACKAGES=20and=20FILES=20from=20the=20store.=0A+This=20=
profile=20is=20meant=20to=20be=20used=20by=20the=20bootloader-installer.=0A=
=20=0A=20FILES=20is=20a=20list=20of=20file=20or=20directory=20names=20=
from=20the=20store,=20which=20will=20be=0A-symlinked=20into=20the=20=
collection/=20directory.=20=20If=20a=20directory=20name=20ends=20with=20=
'/',=0A-then=20the=20directory=20content=20instead=20of=20the=20=
directory=20itself=20will=20be=20symlinked=0A-into=20the=20collection/=20=
directory.=0A+symlinked=20into=20the=20profile.=20=20If=20a=20directory=20=
name=20ends=20with=20'/',=20then=20the=0A+directory=20content=20instead=20=
of=20the=20directory=20itself=20will=20be=20symlinked=20into=20the=0A=
+profile.=0A=20=0A-FILES=20may=20contain=20file=20like=20objects=20=
produced=20by=20functions=20like=20plain-file,=0A+FILES=20may=20contain=20=
file=20like=20objects=20produced=20by=20procedures=20like=20plain-file,=0A=
=20local-file,=20etc.,=20or=20package=20contents=20produced=20with=20=
file-append.=0A=20=0A=20HOOKS=20lists=20additional=20hook=20functions=20=
to=20modify=20the=20profile."=0A-=20=20(define=20(bootloader-collection=20=
manifest)=0A+=20=20(define=20(efi-bootloader-profile-hook=20manifest)=0A=20=
=20=20=20=20(define=20build=0A-=20=20=20=20=20=20=20=20=
(with-imported-modules=20'((guix=20build=20utils)=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(ice-9=20ftw)=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(srfi=20srfi-1)=0A-=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(srfi=20srfi-26))=0A+=20=20=20=20=20=20=20=20=
(with-imported-modules=20'((guix=20build=20utils))=0A=20=20=20=20=20=20=20=
=20=20=20=20#~(begin=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
(use-modules=20((guix=20build=20utils)=0A=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:select=20(mkdir-p=20=
strip-store-file-name))=0A@@=20-275,7=20+271,7=20@@=20HOOKS=20lists=20=
additional=20hook=20functions=20to=20modify=20the=20profile."=0A=20=20=20=
=20=20=20=20=20=20=20=20=20=20(define=20(name-is-store-entry?=20name)=0A=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20"Return=20#t=20if=20NAME=20is=20=
a=20direct=20store=20entry=20and=20nothing=20inside."=0A=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(not=20(string-index=20(strip-store-file-name=20=
name)=20#\/)))=0A-=20=20=20=20=20=20=20=20=20=20=20=20(let*=20=
((collection=20(string-append=20#$output=20"/collection"))=0A+=20=20=20=20=
=20=20=20=20=20=20=20=20(let*=20((output=20#$output)=0A=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(files=20'#$files)=0A=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(directories=20(filter=20=
name-ends-with-/?=20files))=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(names-from-directories=0A@@=20-284,11=20+280,11=20@@=20=
HOOKS=20lists=20additional=20hook=20functions=20to=20modify=20the=20=
profile."=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20directories))=0A=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20(names=20(append=20=
names-from-directories=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(remove=20=
name-ends-with-/?=20files))))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(mkdir-p=20collection)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(mkdir-p=20output)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20=
(every=20file-exists?=20names)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(begin=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(for-each=20(lambda=20(name)=0A-=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(symlink-to=20name=20collection=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(symlink-to=20name=20=
output=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20=
(name-is-store-entry?=20name)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20strip-store-file-name=0A=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20basename)))=0A@@=20=
-296,57=20+292,63=20@@=20HOOKS=20lists=20additional=20hook=20functions=20=
to=20modify=20the=20profile."=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20#t)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20#f)))))=0A=20=0A-=20=20=20=20(gexp->derivation=20=
"bootloader-collection"=0A+=20=20=20=20(gexp->derivation=20=
"efi-bootloader-profile"=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20build=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20#:local-build?=20#t=0A=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:substitutable?=20#f=0A=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:properties=0A=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
`((type=20.=20profile-hook)=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20(hook=20.=20bootloader-collection))))=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(hook=20.=20efi-bootloader-profile-hook))))=0A=20=0A-=20=20(profile=20=
(content=20(packages->manifest=20(list=20bootloader-package)))=0A-=20=20=20=
=20=20=20=20=20=20=20=20(name=20"bootloader-profile")=0A-=20=20=20=20=20=20=
=20=20=20=20=20(hooks=20(append=20(list=20bootloader-collection)=20=
hooks))=0A+=20=20(profile=20(content=20(packages->manifest=20packages))=0A=
+=20=20=20=20=20=20=20=20=20=20=20(name=20"efi-bootloader-profile")=0A+=20=
=20=20=20=20=20=20=20=20=20=20(hooks=20(cons=20=
efi-bootloader-profile-hook=20hooks))=0A=20=20=20=20=20=20=20=20=20=20=20=
=20(locales?=20#f)=0A=20=20=20=20=20=20=20=20=20=20=20=20=
(allow-collisions?=20#f)=0A=20=20=20=20=20=20=20=20=20=20=20=20=
(relative-symlinks?=20#f)))=0A=20=0A-(define*=20(efi-bootloader-chain=20=
files=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20final-bootloader=0A+(define*=20=
(efi-bootloader-chain=20final-bootloader=0A=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:key=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(packages=20'())=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(files=20=
'())=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20(hooks=20'())=0A-=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
installer)=0A-=20=20"Define=20a=20bootloader=20chain=20with=20=
FINAL-BOOTLOADER=20as=20the=20final=20bootloader=20and=0A-certain=20=
directories=20and=20files=20from=20the=20store=20given=20in=20the=20list=20=
of=20FILES.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20installer=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
disk-image-installer)=0A+=20=20"Define=20a=20chain=20of=20bootloaders=20=
with=20the=20FINAL-BOOTLOADER,=20optional=20PACKAGES,=0A+and=20optional=20=
directories=20and=20files=20from=20the=20store=20given=20in=20the=20list=20=
of=20FILES.=0A=20=0A-FILES=20may=20contain=20file=20like=20objects=20=
produced=20by=20functions=20like=20plain-file,=0A-local-file,=20etc.,=20=
or=20package=20contents=20produced=20with=20file-append.=20=20They=20=
will=20be=0A-collected=20inside=20a=20directory=20collection/=20inside=20=
a=20generated=20bootloader=20profile,=0A-which=20will=20be=20passed=20to=20=
the=20INSTALLER.=0A+The=20package=20of=20the=20FINAL-BOOTLOADER=20and=20=
all=20PACKAGES=20and=20FILES=20will=20be=20placed=0A+in=20an=20=
efi-bootloader-profile,=20which=20will=20be=20passed=20to=20the=20=
INSTALLER.=0A+=0A+FILES=20may=20contain=20file=20like=20objects=20=
produced=20by=20procedures=20like=20plain-file,=0A+local-file,=20etc.,=20=
or=20package=20contents=20produced=20with=20file-append.=0A=20=0A=20If=20=
a=20directory=20name=20in=20FILES=20ends=20with=20'/',=20then=20the=20=
directory=20content=20instead=0A-of=20the=20directory=20itself=20will=20=
be=20symlinked=20into=20the=20collection/=20directory.=0A+of=20the=20=
directory=20itself=20will=20be=20symlinked=20into=20the=20=
efi-bootloader-profile.=0A=20=0A=20The=20procedures=20in=20the=20HOOKS=20=
list=20can=20be=20used=20to=20further=20modify=20the=20bootloader=0A=20=
profile.=20=20It=20is=20possible=20to=20pass=20a=20single=20function=20=
instead=20of=20a=20list.=0A=20=0A-If=20the=20INSTALLER=20argument=20is=20=
used,=20then=20this=20function=20will=20be=20called=20to=20install=0A=
-the=20bootloader.=20=20Otherwise=20the=20installer=20of=20the=20=
FINAL-BOOTLOADER=20will=20be=20called."=0A-=20=20(let*=20=
((final-installer=20(or=20installer=0A-=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(bootloader-installer=20final-bootloader)))=0A-=20=20=20=20=20=20=20=20=20=
(profile=20(efi-bootloader-profile=20files=0A-=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(bootloader-package=20final-bootloader)=0A-=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20(list?=20hooks)=0A-=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20hooks=0A-=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(list=20=
hooks)))))=0A-=20=20=20=20(bootloader=0A-=20=20=20=20=20(inherit=20=
final-bootloader)=0A-=20=20=20=20=20(package=20profile)=0A-=20=20=20=20=20=
(installer=0A-=20=20=20=20=20=20#~(lambda=20(bootloader=20target=20=
mount-point)=0A-=20=20=20=20=20=20=20=20=20=20(#$final-installer=20=
bootloader=20target=20mount-point)=0A-=20=20=20=20=20=20=20=20=20=20=
(copy-recursively=0A-=20=20=20=20=20=20=20=20=20=20=20(string-append=20=
bootloader=20"/collection")=0A-=20=20=20=20=20=20=20=20=20=20=20=
(string-append=20mount-point=20target)=0A-=20=20=20=20=20=20=20=20=20=20=20=
#:follow-symlinks?=20#t=0A-=20=20=20=20=20=20=20=20=20=20=20#:log=20=
(%make-void-port=20"w")))))))=0A+If=20the=20INSTALLER=20argument=20is=20=
used,=20then=20this=20gexp=20procedure=20will=20be=20called=20to=0A=
+install=20the=20efi-bootloader-profile.=20=20Otherwise=20the=20=
installer=20of=20the=0A+FINAL-BOOTLOADER=20will=20be=20called.=0A+=0A+If=20=
the=20DISK-IMAGE-INSTALLER=20is=20used,=20then=20this=20gexp=20procedure=20=
will=20be=20called=0A+to=20install=20the=20efi-bootloader-profile=20into=20=
a=20disk-image.=20=20Otherwise=20the=0A+disk-image-installer=20of=20the=20=
FINAL-BOOTLOADER=20will=20be=20called."=0A+=20=20(bootloader=0A+=20=20=20=
=20(inherit=20final-bootloader)=0A+=20=20=20=20(name=20=
"efi-bootloader-chain")=0A+=20=20=20=20(package=0A+=20=20=20=20=20=
(efi-bootloader-profile=20(cons=20(bootloader-package=20=
final-bootloader)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20packages)=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20files=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(if=20(list?=20hooks)=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
hooks=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(list=20hooks))))=0A+=20=20=20=20=
(installer=0A+=20=20=20=20=20(or=20installer=0A+=20=20=20=20=20=20=20=20=20=
(bootloader-installer=20final-bootloader)))=0A+=20=20=20=20=
(disk-image-installer=0A+=20=20=20=20=20(or=20disk-image-installer=0A+=20=
=20=20=20=20=20=20=20=20(bootloader-disk-image-installer=20=
final-bootloader)))))=0Adiff=20--git=20a/gnu/bootloader/grub.scm=20=
b/gnu/bootloader/grub.scm=0Aindex=20ce146aba3c..c03a04818e=20100644=0A=
---=20a/gnu/bootloader/grub.scm=0A+++=20b/gnu/bootloader/grub.scm=0A@@=20=
-50,11=20+50,12=20@@=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
grub-theme-color-highlight=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
grub-theme-gfxmode=0A=20=0A-=20=20=20=20=20=20=20=20=20=20=20=20=
install-grub-efi-netboot=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
make-grub-efi-netboot-installer=0A=20=0A=20=20=20=20=20=20=20=20=20=20=20=
=20=20grub-bootloader=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
grub-efi-bootloader=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
grub-efi-netboot-bootloader=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
grub-efi-netboot-removable-bootloader=0A=20=20=20=20=20=20=20=20=20=20=20=
=20=20grub-mkrescue-bootloader=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
grub-minimal-bootloader=0A=20=0A@@=20-346,7=20+347,7=20@@=20code."=0A=20=20=
=20=20=20=20=20=20=20((or=20#f=20(?=20string?))=0A=20=20=20=20=20=20=20=20=
=20=20#~(format=20#f=20"search=20--file=20--set=20~a"=20#$file)))))=0A=20=
=0A-(define*=20(grub-configuration-file=20config=20entries=0A+(define*=20=
(make-grub-configuration=20grub=20config=20entries=0A=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20#:key=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(locale=20#f)=0A=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(system=20(%current-system))=0A@@=20-376,27=20=
+377,27=20@@=20when=20booting=20a=20root=20file=20system=20on=20a=20=
Btrfs=20subvolume."=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(initrd=20(normalize-file=20(menu-entry-initrd=20entry)=0A=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20device-mount-point=0A=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20store-directory-prefix)))=0A-=20=20=20=20=20=20=
=20=20=20;;=20Here=20DEVICE=20is=20the=20store=20and=20=
DEVICE-MOUNT-POINT=20is=20its=20mount=20point.=0A-=20=20=20=20=20=20=20=20=
=20;;=20Use=20the=20right=20file=20names=20for=20LINUX=20and=20INITRD=20=
in=20case=0A-=20=20=20=20=20=20=20=20=20;;=20DEVICE-MOUNT-POINT=20is=20=
not=20"/",=20meaning=20that=20the=20store=20is=20on=20a=0A-=20=20=20=20=20=
=20=20=20=20;;=20separate=20partition.=0A-=0A-=20=20=20=20=20=20=20=20=20=
;;=20When=20BTRFS-SUBVOLUME-FILE-NAME=20is=20defined,=20prepend=20it=20=
the=20linux=20and=0A-=20=20=20=20=20=20=20=20=20;;=20initrd=20paths,=20=
to=20allow=20booting=20from=20a=20Btrfs=20subvolume.=0A-=20=20=20=20=20=20=
=20=20=20#~(format=20port=20"menuentry=20~s=20{=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20;;=20Here=20DEVICE=20is=20the=20store=20and=20=
DEVICE-MOUNT-POINT=20is=20its=20mount=20point.=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20;;=20Use=20the=20right=20file=20names=20for=20LINUX=20and=20=
INITRD=20in=20case=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
DEVICE-MOUNT-POINT=20is=20not=20"/",=20meaning=20that=20the=20store=20is=20=
on=20a=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20separate=20partition.=0A=
+=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20When=20=
BTRFS-SUBVOLUME-FILE-NAME=20is=20defined,=20prepend=20it=20the=20linux=20=
and=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20initrd=20paths,=20to=20=
allow=20booting=20from=20a=20Btrfs=20subvolume.=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20#~(format=20port=20"menuentry=20~s=20{=0A=20=20=20~a=0A=20=20=
=20linux=20~a=20~a=0A=20=20=20initrd=20~a=0A=20}~%"=0A-=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20#$label=0A-=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20#$(grub-root-search=20device=20linux)=0A=
-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#$linux=20=
(string-join=20(list=20#$@arguments))=0A-=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20#$initrd))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20#$label=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20#$(grub-root-search=20device=20linux)=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
#$linux=20(string-join=20(list=20#$@arguments))=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20#$initrd))=0A=20=20=20=20=20=20=
=20=20=20=20=20(let=20((kernel=20(menu-entry-multiboot-kernel=20entry))=0A=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(arguments=20=
(menu-entry-multiboot-arguments=20entry))=0A=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(modules=20(menu-entry-multiboot-modules=20entry))=0A=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(root-index=201))=20=20=
=20=20=20=20=20=20=20=20=20=20;=20XXX=20EFI=20will=20need=20root-index=20=
2=0A-=20=20=20=20=20=20=20=20#~(format=20port=20"=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20#~(format=20port=20"=0A=20menuentry=20~s=20{=0A=20=20=20=
multiboot=20~a=20root=3Ddevice:hd0s~a~a~a=0A=20}~%"=0A@@=20-434,9=20=
+435,7=20@@=20menuentry=20~s=20{=0A=20=20=20(define=20locale-config=0A=20=
=20=20=20=20(let*=20((entry=20(first=20all-entries))=0A=20=20=20=20=20=20=
=20=20=20=20=20=20(device=20(menu-entry-device=20entry))=0A-=20=20=20=20=20=
=20=20=20=20=20=20(mount-point=20(menu-entry-device-mount-point=20=
entry))=0A-=20=20=20=20=20=20=20=20=20=20=20(bootloader=20=
(bootloader-configuration-bootloader=20config))=0A-=20=20=20=20=20=20=20=20=
=20=20=20(grub=20(bootloader-package=20bootloader)))=0A+=20=20=20=20=20=20=
=20=20=20=20=20(mount-point=20(menu-entry-device-mount-point=20entry)))=0A=
=20=20=20=20=20=20=20#~(let=20((locale=20#$(and=20locale=0A=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(locale-definition-source=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(locale-name->definition=20=
locale))))=0A@@=20-462,8=20+461,6=20@@=20set=20lang=3D~a~%"=0A=20=0A=20=20=
=20(define=20keyboard-layout-config=0A=20=20=20=20=20(let*=20((layout=20=
(bootloader-configuration-keyboard-layout=20config))=0A-=20=20=20=20=20=20=
=20=20=20=20=20(grub=20=20=20(bootloader-package=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=
(bootloader-configuration-bootloader=20config)))=0A=20=20=20=20=20=20=20=20=
=20=20=20=20(keymap*=20(and=20layout=0A=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(keyboard-layout-file=20layout=20=
#:grub=20grub)))=0A=20=20=20=20=20=20=20=20=20=20=20=20(entry=20(first=20=
all-entries))=0A@@=20-514,6=20+511,16=20@@=20fi~%"))))=0A=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20#:options=20'(#:local-build?=20#t=0A=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20#:substitutable?=20#f)))=0A=20=0A+(define=20=
(grub-configuration-file=20config=20.=20args)=0A+=20=20(let*=20=
((bootloader=20(bootloader-configuration-bootloader=20config))=0A+=20=20=20=
=20=20=20=20=20=20(grub=20(bootloader-package=20bootloader)))=0A+=20=20=20=
=20(apply=20make-grub-configuration=20grub=20config=20args)))=0A+=0A=
+(define=20(grub-efi-configuration-file=20.=20args)=0A+=20=20(apply=20=
make-grub-configuration=20grub-efi=20args))=0A+=0A+(define=20grub-cfg=20=
"/boot/grub/grub.cfg")=0A+=0A=20=0C=0A=20=0A=20;;;=0A@@=20-607,42=20=
+614,31=20@@=20fi~%"))))=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20"--bootloader-id=3DGuix"=0A=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20"--efi-directory"=20=
target-esp)))))=0A=20=0A-(define=20(install-grub-efi-netboot=20subdir)=0A=
-=20=20"Define=20a=20grub-efi-netboot=20bootloader=20installer=20for=20=
installation=20in=20SUBDIR,=0A-which=20is=20usually=20efi/Guix=20or=20=
efi/boot."=0A-=20=20(let*=20((system=20(string-split=20=
(nix-system->gnu-triplet=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(or=20=
(%current-target-system)=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(%current-system)))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20#\-))=0A-=20=20=20=20=20=20=20=20=
=20(arch=20(first=20system))=0A-=20=20=20=20=20=20=20=20=20=
(boot-efi-link=20(match=20system=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20These=20are=20the=20=
supportend=20systems=20and=20the=20names=0A-=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20defined=20by=20the=20=
UEFI=20standard=20for=20removable=20media.=0A-=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(("i686"=20_=20...)=20=
=20=20=20=20=20=20=20"/bootia32.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(("x86_64"=20_=20...)=20=20=20=
=20=20=20"/bootx64.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(("arm"=20_=20...)=20=20=20=20=20=20=20=20=
=20"/bootarm.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(("aarch64"=20_=20...)=20=20=20=20=20=
"/bootaa64.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(("riscv"=20_=20...)=20=20=20=20=20=20=20=
"/bootriscv32.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(("riscv64"=20_=20...)=20=20=20=20=20=
"/bootriscv64.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20;;=20Other=20systems=20are=20not=20supported,=20=
although=20defined.=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20;;=20(("riscv128"=20_=20...)=20=
"/bootriscv128.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20;;=20(("ia64"=20_=20...)=20=20=20=20=20=
"/bootia64.efi")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20((_=20...)=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20#f)))=0A-=20=20=20=20=20=20=20=20=20(core-efi=20(string-append=0A-=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20This=20is=20=
the=20arch=20dependent=20file=20name=20of=20GRUB,=20e.g.=0A-=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20i368-efi/core.efi=20or=20=
arm64-efi/core.efi.=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(match=20arch=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20("i686"=20=20=20=20"i386")=0A-=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20("aarch64"=20"arm64")=0A-=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20("riscv"=20=20=20=
"riscv32")=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20(_=20=20=20=20=20=20=20=20=20arch))=0A-=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20"-efi/core.efi")))=0A-=20=20=20=20=
(with-imported-modules=0A-=20=20=20=20=20'((guix=20build=20union))=0A-=20=
=20=20=20=20#~(lambda=20(bootloader=20target=20mount-point)=0A-=20=20=20=20=
=20=20=20=20=20"Install=20the=20BOOTLOADER,=20which=20must=20be=20the=20=
package=20grub,=20as=20e.g.=0A-bootx64.efi=20or=20bootaa64.efi=20into=20=
SUBDIR,=20which=20is=20usually=20efi/Guix=20or=20efi/boot,=0A-below=20=
the=20directory=20TARGET=20for=20the=20system=20whose=20root=20is=20=
mounted=20at=20MOUNT-POINT.=0A+(define*=20=
(make-grub-efi-netboot-installer=20grub-efi=20grub-cfg=20subdir)=0A+=20=20=
"Make=20a=20bootloader-installer=20for=20a=20grub-efi-netboot=20=
bootloader,=20which=20expects=0A+its=20files=20in=20SUBDIR=20and=20its=20=
configuration=20file=20in=20GRUB-CFG.=0A+=0A+As=20a=20grub-efi-netboot=20=
package=20is=20already=20preinstalled=20by=20'grub-mknetdir',=20the=0A=
+installer=20basically=20copies=20all=20files=20from=20the=20=
bootloader-package=20(or=20profile)=0A+into=20the=20bootloader-target=20=
directory.=0A+=0A+Additionally=20for=20network=20booting=20over=20TFTP,=20=
two=20relative=20symlinks=20to=20the=20store=0A+and=20to=20the=20=
GRUB-CFG=20file=20are=20necessary.=20=20Due=20to=20this=20a=20TFTP=20=
root=20directory=20must=0A+not=20be=20located=20on=20a=20FAT=20=
file-system.=0A+=0A+If=20the=20bootloader-target=20does=20not=20support=20=
symlinks,=20then=20it=20is=20assumed=20to=20be=20a=0A+kind=20of=20EFI=20=
System=20Partition=20(ESP).=20=20In=20this=20case=20an=20intermediate=20=
configuration=0A+file=20is=20created=20with=20the=20help=20of=20GRUB-EFI=20=
to=20load=20the=20GRUB-CFG.=0A+=0A+The=20installer=20is=20usable=20for=20=
any=20efi-bootloader-chain,=20which=20prepares=20the=0A=
+bootloader-profile=20in=20a=20way=20ready=20for=20copying.=0A+=0A+The=20=
installer=20does=20not=20manipulate=20the=20system's=20'UEFI=20Boot=20=
Manager'."=0A+=20=20(with-imported-modules=20'((guix=20build=20union))=0A=
+=20=20=20=20#~(lambda=20(bootloader=20target=20mount-point)=0A+=20=20=20=
=20=20=20=20=20"Copy=20the=20BOOTLOADER,=20which=20must=20be=20a=20=
preinstalled=20grub-efi-netboot=0A+package=20with=20a=20SUBDIR=20like=20=
efi/boot=20or=20efi/Guix,=20below=20the=20directory=0A+TARGET=20for=20=
the=20system=20whose=20root=20is=20mounted=20at=20MOUNT-POINT.=0A=20=0A=20=
MOUNT-POINT=20is=20the=20last=20argument=20in=20'guix=20system=20init=20=
/etc/config.scm=20mnt/point'=0A=20or=20'/'=20for=20other=20'guix=20=
system'=20commands.=0A@@=20-651,17=20+647,18=20@@=20TARGET=20is=20the=20=
target=20argument=20given=20to=20the=20bootloader-configuration=20in=0A=20=
=0A=20(operating-system=0A=20=20(bootloader=20(bootloader-configuration=0A=
-=20=20=20=20=20=20=20=20=20=20=20=20=20=20(target=20\"/boot\")=0A+=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20(target=20\"/boot/efi\")=0A=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=E2=80=A6))=0A=20=20=E2=80=A6)=0A=20=0A=20=
TARGET=20is=20required=20to=20be=20an=20absolute=20directory=20name,=20=
usually=20mounted=20via=20NFS,=0A=20and=20finally=20needs=20to=20be=20=
provided=20by=20a=20TFTP=20server=20as=20the=20TFTP=20root=20directory.=0A=
=20=0A+Usually=20the=20installer=20will=20be=20used=20to=20prepare=20=
network=20booting=20over=20TFTP.=20=20Then=0A=20GRUB=20will=20load=20=
tftp://server/SUBDIR/grub.cfg=20and=20this=20file=20will=20instruct=20it=20=
to=0A=20load=20more=20files=20from=20the=20store=20like=20=
tftp://server/gnu/store/=E2=80=A6-linux=E2=80=A6/Image.=0A=20=0A-To=20=
make=20this=20possible=20two=20symlinks=20will=20be=20created.=20The=20=
first=20symlink=20points=0A+To=20make=20this=20possible=20two=20symlinks=20=
will=20be=20created.=20=20The=20first=20symlink=20points=0A=20relatively=20=
form=20MOUNT-POINT/TARGET/SUBDIR/grub.cfg=20to=0A=20=
MOUNT-POINT/boot/grub/grub.cfg,=20and=20the=20second=20symlink=20points=20=
relatively=20from=0A=20MOUNT-POINT/TARGET/%store-prefix=20to=20=
MOUNT-POINT/%store-prefix.=0A@@=20-671,34=20+668,78=20@@=20paths=20on=20=
the=20TFTP=20server=20side=20are=20unknown.=0A=20=0A=20It=20is=20also=20=
important=20to=20note=20that=20both=20symlinks=20will=20point=20outside=20=
the=20TFTP=20root=0A=20directory=20and=20that=20the=20=
TARGET/%store-prefix=20symlink=20makes=20the=20whole=20store=0A=
-accessible=20via=20TFTP.=20Possibly=20the=20TFTP=20server=20must=20be=20=
configured=0A-to=20allow=20accesses=20outside=20its=20TFTP=20root=20=
directory.=20This=20may=20need=20to=20be=0A-considered=20for=20security=20=
aspects."=0A-=20=20=20=20=20=20=20=20=20(use-modules=20((guix=20build=20=
union)=20#:select=20(symlink-relative)))=0A-=20=20=20=20=20=20=20=20=20=
(let*=20((net-dir=20(string-append=20mount-point=20target=20"/"))=0A-=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(sub-dir=20(string-append=20=
net-dir=20#$subdir=20"/"))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(store=20(string-append=20mount-point=20(%store-prefix)))=0A-=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20(store-link=20(string-append=20=
net-dir=20(%store-prefix)))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20(grub-cfg=20(string-append=20mount-point=20"/boot/grub/grub.cfg"))=0A=
-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(grub-cfg-link=20=
(string-append=20sub-dir=20(basename=20grub-cfg)))=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(boot-efi-link=20(string-append=20sub-dir=20=
#$boot-efi-link)))=0A-=20=20=20=20=20=20=20=20=20=20=20;;=20Prepare=20=
the=20symlink=20to=20the=20store.=0A-=20=20=20=20=20=20=20=20=20=20=20=
(mkdir-p=20(dirname=20store-link))=0A-=20=20=20=20=20=20=20=20=20=20=20=
(false-if-exception=20(delete-file=20store-link))=0A-=20=20=20=20=20=20=20=
=20=20=20=20(symlink-relative=20store=20store-link)=0A-=20=20=20=20=20=20=
=20=20=20=20=20;;=20Prepare=20the=20symlink=20to=20the=20grub.cfg,=20=
which=20points=20into=20the=20store.=0A-=20=20=20=20=20=20=20=20=20=20=20=
(mkdir-p=20(dirname=20grub-cfg-link))=0A-=20=20=20=20=20=20=20=20=20=20=20=
(false-if-exception=20(delete-file=20grub-cfg-link))=0A-=20=20=20=20=20=20=
=20=20=20=20=20(symlink-relative=20grub-cfg=20grub-cfg-link)=0A-=20=20=20=
=20=20=20=20=20=20=20=20;;=20Install=20GRUB,=20which=20refers=20to=20the=20=
grub.cfg,=20with=20support=20for=0A-=20=20=20=20=20=20=20=20=20=20=20;;=20=
encrypted=20partitions,=0A-=20=20=20=20=20=20=20=20=20=20=20(setenv=20=
"GRUB_ENABLE_CRYPTODISK"=20"y")=0A-=20=20=20=20=20=20=20=20=20=20=20=
(invoke/quiet=20(string-append=20bootloader=20"/bin/grub-mknetdir")=0A-=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(string-append=20"--net-directory=3D"=20net-dir)=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(string-append=20=
"--subdir=3D"=20#$subdir))=0A-=20=20=20=20=20=20=20=20=20=20=20;;=20=
Prepare=20the=20bootloader=20symlink,=20which=20points=20to=20core.efi=20=
of=20GRUB.=0A-=20=20=20=20=20=20=20=20=20=20=20(false-if-exception=20=
(delete-file=20boot-efi-link))=0A-=20=20=20=20=20=20=20=20=20=20=20=
(symlink=20#$core-efi=20boot-efi-link))))))=0A+accessible=20via=20TFTP.=20=
=20Possibly=20the=20TFTP=20server=20must=20be=20configured=20to=20allow=0A=
+accesses=20outside=20its=20TFTP=20root=20directory.=20=20This=20all=20=
may=20need=20to=20be=20considered=0A+for=20security=20aspects.=20=20It=20=
is=20advised=20to=20disable=20any=20TFTP=20write=20access!=0A+=0A+The=20=
installer=20can=20also=20be=20used=20to=20prepare=20booting=20from=20=
local=20storages,=20if=20the=0A+underlying=20file-system,=20like=20FAT=20=
on=20an=20EFI=20System=20Partition=20(ESP),=20does=20not=0A+support=20=
symlinks.=20=20In=20this=20case=20the=20=
MOUNT-POINT/TARGET/SUBDIR/grub.cfg=20will=20be=0A+created=20with=20the=20=
help=20of=20GRUB-EFI=20to=20load=20the=20/boot/grub/grub.cfg=20file.=20=20=
A=0A+symlink=20to=20the=20store=20is=20not=20needed=20in=20this=20case."=0A=
+=20=20=20=20=20=20=20=20;;=20In=20context=20of=20a=20disk=20image=20=
creation=20TARGET=20will=20be=20#f=20and=20an=0A+=20=20=20=20=20=20=20=20=
;;=20installer=20is=20expected=20to=20do=20necessary=20installations=20=
on=20MOUNT-POINT,=0A+=20=20=20=20=20=20=20=20;;=20which=20will=20become=20=
the=20root=20file=20system.=0A+=20=20=20=20=20=20=20=20;;=20If=20TARGET=20=
is=20#f,=20this=20installer=20has=20nothing=20to=20do,=20as=20it=20only=20=
cares=0A+=20=20=20=20=20=20=20=20;;=20about=20the=20EFI=20System=20=
Partition=20(ESP).=0A+=20=20=20=20=20=20=20=20(when=20target=0A+=20=20=20=
=20=20=20=20=20=20=20(use-modules=20((guix=20build=20union)=20#:select=20=
(symlink-relative))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20(ice-9=20popen)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(ice-9=20rdelim))=0A+=20=20=20=20=20=20=20=
=20=20=20(let*=20((mount-point/target=20(string-append=20mount-point=20=
target=20"/"))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
When=20installing=20Guix,=20it=20is=20common=20to=20mount=20TARGET=20=
below=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
MOUNT-POINT=20rather=20than=20the=20root=20directory.=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(bootloader-target=20(if=20=
(file-exists?=20mount-point/target)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20mount-point/target=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20target))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(store=20=
(string-append=20mount-point=20(%store-prefix)))=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20(store-link=20(string-append=20=
bootloader-target=20(%store-prefix)))=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20(grub-cfg=20(string-append=20mount-point=20=
#$grub-cfg))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(grub-cfg-link=20(string-append=20bootloader-target=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#$subdir=20"/"=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(basename=20=
grub-cfg))))=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20Copy=20the=20=
bootloader=20into=20the=20bootloader-target=20directory.=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20;;=20Should=20we=20beforehand=20recursively=20=
delete=20any=20existing=20file?=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
(copy-recursively=20bootloader=20bootloader-target=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
#:follow-symlinks?=20#t=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:log=20(%make-void-port=20=
"w"))=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20For=20TFTP=20we=20need=20=
to=20install=20additional=20relative=20symlinks.=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20;;=20If=20we=20install=20on=20an=20EFI=20System=20=
Partition=20(ESP)=20or=20some=20other=20FAT=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20;;=20file-system,=20then=20symlinks=20cannot=20be=20created=20=
and=20are=20not=20needed.=0A+=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
Therefore=20we=20ignore=20exceptions=20when=20trying.=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20;;=20Prepare=20the=20symlink=20to=20the=20grub.cfg.=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20(mkdir-p=20(dirname=20=
grub-cfg-link))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
(false-if-exception=20(delete-file=20grub-cfg-link))=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20(if=20(unspecified?=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(false-if-exception=20(symlink-relative=20grub-cfg=20=
grub-cfg-link)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
Symlinks=20are=20supported.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(begin=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20Prepare=20=
the=20symlink=20to=20the=20store.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(mkdir-p=20(dirname=20store-link))=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(false-if-exception=20(delete-file=20=
store-link))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(symlink-relative=20store=20store-link))=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20;;=20Creating=20symlinks=20does=20not=20seem=20to=20be=20=
supported.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20Probably=20=
an=20ESP=20is=20used.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
Instead=20we=20can=20script=20to=20search=20and=20load=20the=20actual=20=
grub.cfg.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20(let*=20((probe=20=
#$(file-append=20grub-efi=20"/sbin/grub-probe"))=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(port=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(open-pipe*=20OPEN_READ=20=
probe=20"--target=3Dfs_uuid"=20grub-cfg))=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(search-root=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(match=20(read-line=20port)=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20((?=20eof-object?)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20;;=20There=20is=20no=20UUID=20=
available.=20As=20a=20fallback=20search=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20everywhere=20for=20=
the=20grub.cfg.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(string-append=20"search=20--file=20--set=20"=20=
#$grub-cfg))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20(fs-uuid=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20;;=20The=20UUID=20to=20load=20the=20=
grub.cfg=20from=20is=20known.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20(string-append=20"search=20=
--fs-uuid=20--set=20"=20fs-uuid))))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(load-grub-cfg=20(string-append=20"configfile=20=
"=20#$grub-cfg)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(close-pipe=20port)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(with-output-to-file=20grub-cfg-link=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(lambda=20()=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(display=20(string-join=20(list=20search-root=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
load-grub-cfg)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
"\n")))))))))))=0A=20=0A=20=0C=0A=20=0A@@=20-716,7=20+757,7=20@@=20=
considered=20for=20security=20aspects."=0A=20=20=20=20(package=20grub)=0A=
=20=20=20=20(installer=20install-grub)=0A=20=20=20=20=
(disk-image-installer=20install-grub-disk-image)=0A-=20=20=20=
(configuration-file=20"/boot/grub/grub.cfg")=0A+=20=20=20=
(configuration-file=20grub-cfg)=0A=20=20=20=20=
(configuration-file-generator=20grub-configuration-file)))=0A=20=0A=20=
(define=20grub-minimal-bootloader=0A@@=20-726,17=20+767,29=20@@=20=
considered=20for=20security=20aspects."=0A=20=0A=20(define=20=
grub-efi-bootloader=0A=20=20=20(bootloader=0A-=20=20=20(inherit=20=
grub-bootloader)=0A+=20=20=20(name=20'grub-efi)=0A+=20=20=20(package=20=
grub-efi)=0A=20=20=20=20(installer=20install-grub-efi)=0A=20=20=20=20=
(disk-image-installer=20#f)=0A-=20=20=20(name=20'grub-efi)=0A-=20=20=20=
(package=20grub-efi)))=0A+=20=20=20(configuration-file=20grub-cfg)=0A+=20=
=20=20(configuration-file-generator=20grub-configuration-file)))=0A=20=0A=
-(define=20grub-efi-netboot-bootloader=0A+(define=20=
(make-grub-efi-netboot-bootloader=20name=20subdir)=0A=20=20=20=
(bootloader=0A-=20=20=20(inherit=20grub-efi-bootloader)=0A-=20=20=20=
(name=20'grub-efi-netboot-bootloader)=0A-=20=20=20(installer=20=
(install-grub-efi-netboot=20"efi/Guix"))))=0A+=20=20=20(name=20name)=0A+=20=
=20=20(package=20(make-grub-efi-netboot=20(symbol->string=20name)=20=
subdir))=0A+=20=20=20(installer=20(make-grub-efi-netboot-installer=20=
grub-efi=20grub-cfg=20subdir))=0A+=20=20=20(disk-image-installer=20#f)=0A=
+=20=20=20(configuration-file=20grub-cfg)=0A+=20=20=20=
(configuration-file-generator=20grub-efi-configuration-file)))=0A+=0A=
+(define=20grub-efi-netboot-bootloader=0A+=20=20=
(make-grub-efi-netboot-bootloader=20'grub-efi-netboot-bootloader=0A+=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20"efi/Guix"))=0A+=0A+(define=20=
grub-efi-netboot-removable-bootloader=0A+=20=20=
(make-grub-efi-netboot-bootloader=20=
'grub-efi-netboot-removable-bootloader=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
"efi/boot"))=0A=20=0A=20(define=20grub-mkrescue-bootloader=0A=20=20=20=
(bootloader=0Adiff=20--git=20a/gnu/packages/bootloaders.scm=20=
b/gnu/packages/bootloaders.scm=0Aindex=2056bef57cb7..32dae92531=20100644=0A=
---=20a/gnu/packages/bootloaders.scm=0A+++=20=
b/gnu/packages/bootloaders.scm=0A@@=20-15,6=20+15,7=20@@=0A=20;;;=20=
Copyright=20=C2=A9=202020=20Pierre=20Langlois=20=
<pierre.langlois@HIDDEN>=0A=20;;;=20Copyright=20=C2=A9=202021=20Vincent=20=
Legoll=20<vincent.legoll@HIDDEN>=0A=20;;;=20Copyright=20=C2=A9=202021=20=
Brice=20Waegeneire=20<brice@HIDDEN>=0A+;;;=20Copyright=20=C2=A9=20=
2021=20Stefan=20<stefan-guix@HIDDEN>=0A=20;;;=0A=20;;;=20This=20=
file=20is=20part=20of=20GNU=20Guix.=0A=20;;;=0A@@=20-65,13=20+66,17=20@@=0A=
=20=20=20#:use-module=20(gnu=20packages=20xorg)=0A=20=20=20#:use-module=20=
(gnu=20packages=20web)=0A=20=20=20#:use-module=20(guix=20build-system=20=
gnu)=0A+=20=20#:use-module=20(guix=20build-system=20trivial)=0A=20=20=20=
#:use-module=20(guix=20download)=0A+=20=20#:use-module=20(guix=20gexp)=0A=
=20=20=20#:use-module=20(guix=20git-download)=0A=20=20=20#:use-module=20=
((guix=20licenses)=20#:prefix=20license:)=0A=20=20=20#:use-module=20=
(guix=20packages)=0A=20=20=20#:use-module=20(guix=20utils)=0A=20=20=20=
#:use-module=20(srfi=20srfi-1)=0A=20=20=20#:use-module=20(srfi=20=
srfi-26)=0A+=20=20#:use-module=20(ice-9=20match)=0A+=20=20#:use-module=20=
(ice-9=20optargs)=0A=20=20=20#:use-module=20(ice-9=20regex))=0A=20=0A=20=
(define=20unifont=0A@@=20-353,6=20+358,91=20@@=20menu=20to=20select=20=
one=20of=20the=20installed=20operating=20systems.")=0A=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20(scandir=20input-dir))=0A=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20#t)))))))))=0A=20=0A=
+(define-public=20(make-grub-efi-netboot=20name=20subdir)=0A+=20=20"Make=20=
a=20grub-efi-netboot=20package=20named=20NAME,=20which=20will=20be=20=
able=20to=20boot=20over=0A+network=20via=20TFTP=20by=20accessing=20its=20=
files=20in=20the=20SUBDIR=20of=20a=20TFTP=20root=20directory.=0A+This=20=
package=20is=20also=20able=20to=20boot=20from=20local=20storage=20=
devices.=0A+=0A+A=20bootloader-installer=20basically=20needs=20to=20copy=20=
the=20package=20content=20into=20the=0A+bootloader-target=20directory,=20=
which=20will=20usually=20be=20the=20TFTP=20root,=20as=0A+'grub-mknetdir'=20=
will=20be=20invoked=20already=20during=20the=20package=20creation.=0A+=0A=
+Alternatively=20the=20bootloader-target=20directory=20can=20be=20a=20=
mounted=20EFI=20System=0A+Partition=20(ESP),=20or=20a=20similar=20=
partition=20with=20a=20FAT=20file=20system,=20for=20booting=0A+from=20=
local=20storage=20devices.=0A+=0A+The=20name=20of=20the=20GRUB=20EFI=20=
binary=20will=20conform=20to=20the=20UEFI=20specification=20for=0A=
+removable=20media.=20=20Depending=20on=20the=20system=20it=20will=20be=20=
e.g.=20bootx64.efi=20or=0A+bootaa64.efi=20below=20SUBDIR.=0A+=0A+The=20=
SUBDIR=20argument=20needs=20to=20be=20set=20to=20\"efi/boot\"=20to=20=
create=20a=20package=20which=0A+conforms=20to=20the=20UEFI=20=
specification=20for=20removable=20media.=0A+=0A+The=20SUBDIR=20argument=20=
defaults=20to=20\"efi/Guix\",=20as=20it=20is=20also=20the=20case=20for=0A=
+'grub-efi-bootloader'."=0A+=20=20(package=0A+=20=20=20=20(name=20name)=0A=
+=20=20=20=20(version=20(package-version=20grub-efi))=0A+=20=20=20=20;;=20=
Source=20is=20not=20needed,=20but=20it=20cannot=20be=20omitted.=0A+=20=20=
=20=20(source=20#f)=0A+=20=20=20=20(build-system=20trivial-build-system)=0A=
+=20=20=20=20(arguments=0A+=20=20=20=20=20(let*=20((system=20=
(string-split=20(nix-system->gnu-triplet=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(or=20(%current-target-system)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(%current-system)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#\-))=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20(arch=20(first=20system))=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20(boot-efi=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20(match=20=
system=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20These=20are=20=
the=20supportend=20systems=20and=20the=20names=20defined=20by=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20;;=20the=20UEFI=20standard=20for=20=
removable=20media.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(("i686"=20_=20...)=20=20=20=20=20=20=20=20"/bootia32.efi")=0A+=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(("x86_64"=20_=20...)=20=20=20=20=20=20=
"/bootx64.efi")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(("arm"=20=
_=20...)=20=20=20=20=20=20=20=20=20"/bootarm.efi")=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(("aarch64"=20_=20...)=20=20=20=20=20=
"/bootaa64.efi")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(("riscv"=20_=20...)=20=20=20=20=20=20=20"/bootriscv32.efi")=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20(("riscv64"=20_=20...)=20=20=20=20=20=
"/bootriscv64.efi")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
Other=20systems=20are=20not=20supported,=20although=20defined.=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20;;=20(("riscv128"=20_=20...)=20=
"/bootriscv128.efi")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
(("ia64"=20_=20...)=20=20=20=20=20"/bootia64.efi")=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20((_=20...)=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20#f)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20(core-efi=20=
(string-append=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20;;=20This=20is=20the=20arch=20dependent=20file=20name=20of=20=
GRUB,=20e.g.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20;;=20i368-efi/core.efi=20or=20arm64-efi/core.efi.=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(match=20=
arch=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20("i686"=20=20=20=20"i386")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20("aarch64"=20"arm64")=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
("riscv"=20=20=20"riscv32")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(_=20=20=20=20=20=20=20=20=20arch))=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
"-efi/core.efi")))=0A+=20=20=20=20=20=20=20`(#:modules=20((guix=20build=20=
utils))=0A+=20=20=20=20=20=20=20=20=20#:builder=0A+=20=20=20=20=20=20=20=20=
=20(begin=0A+=20=20=20=20=20=20=20=20=20=20=20(use-modules=20(guix=20=
build=20utils))=0A+=20=20=20=20=20=20=20=20=20=20=20(let*=20((bootloader=20=
(assoc-ref=20%build-inputs=20"grub-efi"))=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(net-dir=20(assoc-ref=20%outputs=20"out"))=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(sub-dir=20=
(string-append=20net-dir=20"/"=20,subdir=20"/"))=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(boot-efi=20(string-append=20sub-dir=20=
,boot-efi))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(core-efi=20(string-append=20sub-dir=20,core-efi)))=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20=20;;=20Install=20GRUB,=20which=20refers=20to=20the=20=
grub.cfg,=20with=20support=20for=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
;;=20encrypted=20partitions,=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
(setenv=20"GRUB_ENABLE_CRYPTODISK"=20"y")=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20(invoke/quiet=20(string-append=20bootloader=20=
"/bin/grub-mknetdir")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(string-append=20"--net-directory=3D"=20=
net-dir)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20(string-append=20"--subdir=3D"=20,subdir)=0A+=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
These=20modules=20must=20be=20preloaded=20to=20allow=20booting=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
;;=20from=20an=20ESP=20or=20a=20similar=20partition=20with=20a=20FAT=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20;;=20file=20system.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(string-append=20"--modules=3Dpart_msdos=20=
part_gpt=20fat"))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20Move=20=
GRUB's=20core.efi=20to=20the=20removable=20media=20name.=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20=20(false-if-exception=20(delete-file=20boot-efi))=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20(rename-file=20core-efi=20=
boot-efi))))))=0A+=20=20=20=20(inputs=20`(("grub-efi"=20,grub-efi)))=0A+=20=
=20=20=20(synopsis=20(package-synopsis=20grub-efi))=0A+=20=20=20=20=
(description=20(package-description=20grub-efi))=0A+=20=20=20=20=
(home-page=20(package-home-page=20grub-efi))=0A+=20=20=20=20(license=20=
(package-license=20grub-efi))))=0A+=0A=20(define-public=20syslinux=0A=20=20=
=20(let=20((commit=20"bb41e935cc83c6242de24d2271e067d76af3585c"))=0A=20=20=
=20=20=20(package=0A=

--Apple-Mail=_B6AEB1F9-A6A1-473E-A99F-86D875ECF369
Content-Disposition: attachment;
	filename=03-build-kconfig-add-new-module.patch
Content-Type: application/octet-stream;
	name="03-build-kconfig-add-new-module.patch"
Content-Transfer-Encoding: quoted-printable

build:=20kconfig:=20Add=20new=20module=20to=20modify=20a=20defconfig=20=
file.=0A=0AFrom:=20Stefan=20<stefan-guix@HIDDEN>=0A=0A*=20=
guix/build/kconfig.scm=20(modify-defconfig):=20New=20file=20with=20a=20=
new=20function.=0A*=20gnu/packages/bootloaders.scm=20=
(make-u-boot-package,=0Amake-u-boot-sunxi64-package):=20Adding=20new=20=
key=20arguments=20to=20pass=20and/or=20modify=0Aa=20defconfig=20file.=0A=
(u-boot-am335x-boneblack,=20u-boot-pinebook,=20u-boot-novena):=20=
Simplify=20functions=0Aby=20using=20the=20new=20key=20arguments=20of=20=
the=20former=20functions.=0A*=20Makefile.am:=20Adding=20=
guix/build/kconfig.scm=20to=20MODULES.=0A---=0A=20Makefile.am=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20|=20=20=20=201=20=0A=20=
gnu/packages/bootloaders.scm=20|=20=20=2087=20+++++++++++--------------=0A=
=20guix/build/kconfig.scm=20=20=20=20=20=20=20|=20=20148=20=
++++++++++++++++++++++++++++++++++++++++++=0A=203=20files=20changed,=20=
186=20insertions(+),=2050=20deletions(-)=0A=20create=20mode=20100644=20=
guix/build/kconfig.scm=0A=0Adiff=20--git=20a/Makefile.am=20b/Makefile.am=0A=
index=200129011ebf..c17a417703=20100644=0A---=20a/Makefile.am=0A+++=20=
b/Makefile.am=0A@@=20-217,6=20+217,7=20@@=20MODULES=20=3D=09=09=09=09=09=
\=0A=20=20=20guix/build/waf-build-system.scm=09=09\=0A=20=20=20=
guix/build/haskell-build-system.scm=09=09\=0A=20=20=20=
guix/build/julia-build-system.scm=09=09\=0A+=20=20guix/build/kconfig.scm=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20\=0A=
=20=20=20guix/build/linux-module-build-system.scm=09\=0A=20=20=20=
guix/build/store-copy.scm=09=09=09\=0A=20=20=20guix/build/json.scm=09=09=09=
=09\=0Adiff=20--git=20a/gnu/packages/bootloaders.scm=20=
b/gnu/packages/bootloaders.scm=0Aindex=2032dae92531..38cf933c22=20100644=0A=
---=20a/gnu/packages/bootloaders.scm=0A+++=20=
b/gnu/packages/bootloaders.scm=0A@@=20-717,8=20+717,9=20@@=20def=20=
test_ctrl_c"))=0A=20also=20initializes=20the=20boards=20(RAM=20etc).=20=20=
This=20package=20provides=20its=0A=20board-independent=20tools.")))=0A=20=
=0A-(define-public=20(make-u-boot-package=20board=20triplet)=0A-=20=20=
"Returns=20a=20u-boot=20package=20for=20BOARD=20cross-compiled=20for=20=
TRIPLET."=0A+(define*-public=20(make-u-boot-package=20board=20triplet=20=
#:key=20defconfig=20configs)=0A+=20=20"Returns=20a=20u-boot=20package=20=
for=20BOARD=20cross-compiled=20for=20TRIPLET=20with=20the=0A+optional=20=
DEFCONFIG=20file=20and=20optional=20configuration=20changes=20from=20=
CONFIGS."=0A=20=20=20(let=20((same-arch?=20(lambda=20()=0A=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(string=3D?=20=
(%current-system)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(gnu-triplet->nix-system=20=
triplet)))))=0A@@=20-736,8=20+737,11=20@@=20board-independent=20=
tools.")))=0A=20=20=20=20=20=20=20(arguments=0A=20=20=20=20=20=20=20=20=
`(#:modules=20((ice-9=20ftw)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(srfi=20srfi-1)=0A-=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(guix=20build=20utils)=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20(guix=20build=20=
gnu-build-system))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(guix=20build=20gnu-build-system)=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(guix=20build=20kconfig)=0A+=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(guix=20build=20utils))=0A=
+=20=20=20=20=20=20=20=20=20#:imported-modules=20=
(,@%gnu-build-system-modules=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(guix=20build=20kconfig))=0A=
=20=20=20=20=20=20=20=20=20=20#:test-target=20"test"=0A=20=20=20=20=20=20=
=20=20=20=20#:make-flags=0A=20=20=20=20=20=20=20=20=20=20(list=20=
"HOSTCC=3Dgcc"=0A@@=20-748,9=20+752,18=20@@=20board-independent=20=
tools.")))=0A=20=20=20=20=20=20=20=20=20=20(modify-phases=20=
%standard-phases=0A=20=20=20=20=20=20=20=20=20=20=20=20(replace=20=
'configure=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20(lambda*=20(#:key=20=
outputs=20make-flags=20#:allow-other-keys)=0A-=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20(let=20((config-name=20(string-append=20,board=20=
"_defconfig")))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(if=20(file-exists?=20(string-append=20"configs/"=20config-name))=0A-=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(apply=20invoke=20=
"make"=20`(,@make-flags=20,config-name))=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(let*=20((config-name=20(string-append=20,board=20=
"_defconfig"))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(config-file=20(string-append=20"configs/"=20config-name))=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(defconfig=20,defconfig)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(configs=20',configs))=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(when=20defconfig=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20;;=20Replace=20the=20board-specific=20=
defconfig=20with=20the=20given=20one.=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(copy-file=20defconfig=20config-file))=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(if=20(file-exists?=20=
config-file)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20(begin=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(when=20configs=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(modify-defconfig=20config-file=20=
configs))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(apply=20invoke=20"make"=20`(,@make-flags=20,config-name)))=0A=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(begin=0A=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(display=20"Invalid=20board=20name.=20Valid=20board=20names=20are:"=0A=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(current-error-port))=0A@@=20-801,7=20+814,11=20@@=20=
board-independent=20tools.")))=0A=20=20=20(make-u-boot-package=20"malta"=20=
"mips64el-linux-gnuabi64"))=0A=20=0A=20(define-public=20=
u-boot-am335x-boneblack=0A-=20=20(let=20((base=20(make-u-boot-package=20=
"am335x_evm"=20"arm-linux-gnueabihf")))=0A+=20=20(let=20((base=20=
(make-u-boot-package=20"am335x_evm"=20"arm-linux-gnueabihf"=0A+=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20;;=20Patch=20out=20other=20device=20=
trees=20to=20build=20image=20small=20enough=20to=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20;;=20fit=20within=20typical=20partitioning=20=
schemes=20where=20the=20first=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20;;=20partition=20begins=20at=20sector=202048.=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20#:configs=20'("CONFIG_OF_LIST=3D\"am335x-evm=20=
am335x-boneblack\""))))=0A=20=20=20=20=20(package=0A=20=20=20=20=20=20=20=
(inherit=20base)=0A=20=20=20=20=20=20=20(name=20=
"u-boot-am335x-boneblack")=0A@@=20-810,25=20+827,13=20@@=20also=20=
initializes=20the=20boards=20(RAM=20etc).=0A=20=0A=20This=20U-Boot=20is=20=
built=20for=20the=20BeagleBone=20Black,=20which=20was=20removed=20=
upstream,=0A=20adjusted=20from=20the=20am335x_evm=20build=20with=20=
several=20device=20trees=20removed=20so=20that=0A-it=20fits=20within=20=
common=20partitioning=20schemes.")=0A-=20=20=20=20=20=20(arguments=0A-=20=
=20=20=20=20=20=20(substitute-keyword-arguments=20(package-arguments=20=
base)=0A-=20=20=20=20=20=20=20=20=20((#:phases=20phases)=0A-=20=20=20=20=20=
=20=20=20=20=20`(modify-phases=20,phases=0A-=20=20=20=20=20=20=20=20=20=20=
=20=20=20(add-after=20'unpack=20'patch-defconfig=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20;;=20Patch=20out=20other=20devicetrees=20to=20=
build=20image=20small=20enough=20to=0A-=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20;;=20fit=20within=20typical=20partitioning=20schemes=20where=20=
the=20first=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
partition=20begins=20at=20sector=202048.=0A-=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(lambda=20_=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20(substitute*=20"configs/am335x_evm_defconfig"=0A-=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20(("CONFIG_OF_LIST=3D.*$")=20=
"CONFIG_OF_LIST=3D\"am335x-evm=20am335x-boneblack\"\n"))=0A-=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20#t)))))))))=0A+it=20fits=20within=20=
common=20partitioning=20schemes."))))=0A=20=0A=20(define-public=20=
u-boot-am335x-evm=0A=20=20=20(make-u-boot-package=20"am335x_evm"=20=
"arm-linux-gnueabihf"))=0A=20=0A-(define-public=20=
(make-u-boot-sunxi64-package=20board=20triplet)=0A-=20=20(let=20((base=20=
(make-u-boot-package=20board=20triplet)))=0A+(define*-public=20=
(make-u-boot-sunxi64-package=20board=20triplet=20#:key=20defconfig=20=
configs)=0A+=20=20(let=20((base=20(make-u-boot-package=20board=20triplet=20=
#:defconfig=20defconfig=20#:configs=20configs)))=0A=20=20=20=20=20=
(package=0A=20=20=20=20=20=20=20(inherit=20base)=0A=20=20=20=20=20=20=20=
(arguments=0A@@=20-858,20=20+863,10=20@@=20it=20fits=20within=20common=20=
partitioning=20schemes.")=0A=20=20=20(make-u-boot-sunxi64-package=20=
"pine64-lts"=20"aarch64-linux-gnu"))=0A=20=0A=20(define-public=20=
u-boot-pinebook=0A-=20=20(let=20((base=20(make-u-boot-sunxi64-package=20=
"pinebook"=20"aarch64-linux-gnu")))=0A-=20=20=20=20(package=0A-=20=20=20=20=
=20=20(inherit=20base)=0A-=20=20=20=20=20=20(arguments=0A-=20=20=20=20=20=
=20=20(substitute-keyword-arguments=20(package-arguments=20base)=0A-=20=20=
=20=20=20=20=20=20=20((#:phases=20phases)=0A-=20=20=20=20=20=20=20=20=20=20=
`(modify-phases=20,phases=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=
(add-after=20'unpack=20'patch-pinebook-config=0A-=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20;;=20Fix=20regression=20with=20LCD=20video=20output=20=
introduced=20in=202020.01=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
;;=20https://patchwork.ozlabs.org/patch/1225130/=0A-=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(lambda=20_=0A-=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20(substitute*=20"configs/pinebook_defconfig"=0A-=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(("CONFIG_VIDEO_BRIDGE_ANALOGIX_ANX6345=3Dy")=20=
"CONFIG_VIDEO_BRIDGE_ANALOGIX_ANX6345=3Dy\nCONFIG_VIDEO_BPP32=3Dy"))=0A-=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#t)))))))))=0A+=20=20=
(make-u-boot-sunxi64-package=20"pinebook"=20"aarch64-linux-gnu"=0A+=20=20=
=20;;=20Fix=20regression=20with=20LCD=20video=20output=20introduced=20in=20=
2020.01=0A+=20=20=20;;=20https://patchwork.ozlabs.org/patch/1225130/=0A+=20=
=20=20#:configs=20'("CONFIG_VIDEO_BPP32=3Dy")))=0A=20=0A=20=
(define-public=20u-boot-bananapi-m2-ultra=0A=20=20=20=
(make-u-boot-package=20"Bananapi_M2_Ultra"=20"arm-linux-gnueabihf"))=0A=
@@=20-895,25=20+890,17=20@@=20it=20fits=20within=20common=20partitioning=20=
schemes.")=0A=20=20=20(make-u-boot-package=20"mx6cuboxi"=20=
"arm-linux-gnueabihf"))=0A=20=0A=20(define-public=20u-boot-novena=0A-=20=20=
(let=20((base=20(make-u-boot-package=20"novena"=20=
"arm-linux-gnueabihf")))=0A+=20=20(let=20((base=20(make-u-boot-package=20=
"novena"=20"arm-linux-gnueabihf"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20;;=20Patch=20configuration=20to=20disable=20loading=20u-boot.img=20=
from=20FAT=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
partition,=20allowing=20it=20to=20be=20installed=20at=20a=20device=20=
offset.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20#:configs=20=
'("CONFIG_SPL_FS_FAT=3D"))))=0A=20=20=20=20=20(package=0A=20=20=20=20=20=20=
=20(inherit=20base)=0A=20=20=20=20=20=20=20(description=20"U-Boot=20is=20=
a=20bootloader=20used=20mostly=20for=20ARM=20boards.=20It=0A=20also=20=
initializes=20the=20boards=20(RAM=20etc).=0A=20=0A=20This=20U-Boot=20is=20=
built=20for=20Novena.=20=20Be=20advised=20that=20this=20version,=20=
contrary=0A-to=20Novena=20upstream,=20does=20not=20load=20u-boot.img=20=
from=20the=20first=20partition.")=0A-=20=20=20=20=20=20(arguments=0A-=20=20=
=20=20=20=20=20(substitute-keyword-arguments=20(package-arguments=20=
base)=0A-=20=20=20=20=20=20=20=20=20((#:phases=20phases)=0A-=20=20=20=20=20=
=20=20=20=20=20`(modify-phases=20,phases=0A-=20=20=20=20=20=20=20=20=20=20=
=20=20=20(add-after=20'unpack=20'patch-novena-defconfig=0A-=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20;;=20Patch=20configuration=20to=20disable=20=
loading=20u-boot.img=20from=20FAT=20partition,=0A-=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20;;=20allowing=20it=20to=20be=20installed=20at=20a=20=
device=20offset.=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(lambda=20=
_=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(substitute*=20=
"configs/novena_defconfig"=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(("CONFIG_SPL_FS_FAT=3Dy")=20"#=20CONFIG_SPL_FS_FAT=20is=20=
not=20set"))=0A-=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
#t)))))))))=0A+to=20Novena=20upstream,=20does=20not=20load=20u-boot.img=20=
from=20the=20first=20partition."))))=0A=20=0A=20(define-public=20=
u-boot-cubieboard=0A=20=20=20(make-u-boot-package=20"Cubieboard"=20=
"arm-linux-gnueabihf"))=0Adiff=20--git=20a/guix/build/kconfig.scm=20=
b/guix/build/kconfig.scm=0Anew=20file=20mode=20100644=0Aindex=20=
0000000000..09ddf59dd0=0A---=20/dev/null=0A+++=20=
b/guix/build/kconfig.scm=0A@@=20-0,0=20+1,148=20@@=0A+;;;=20GNU=20Guix=20=
---=20Functional=20package=20management=20for=20GNU=0A+;;;=20Copyright=20=
=C2=A9=202020=20Stefan=20<stefan-guix@HIDDEN>=0A+;;;=0A+;;;=20=
This=20file=20is=20part=20of=20GNU=20Guix.=0A+;;;=0A+;;;=20GNU=20Guix=20=
is=20free=20software;=20you=20can=20redistribute=20it=20and/or=20modify=20=
it=0A+;;;=20under=20the=20terms=20of=20the=20GNU=20General=20Public=20=
License=20as=20published=20by=0A+;;;=20the=20Free=20Software=20=
Foundation;=20either=20version=203=20of=20the=20License,=20or=20(at=0A=
+;;;=20your=20option)=20any=20later=20version.=0A+;;;=0A+;;;=20GNU=20=
Guix=20is=20distributed=20in=20the=20hope=20that=20it=20will=20be=20=
useful,=20but=0A+;;;=20WITHOUT=20ANY=20WARRANTY;=20without=20even=20the=20=
implied=20warranty=20of=0A+;;;=20MERCHANTABILITY=20or=20FITNESS=20FOR=20=
A=20PARTICULAR=20PURPOSE.=20=20See=20the=0A+;;;=20GNU=20General=20Public=20=
License=20for=20more=20details.=0A+;;;=0A+;;;=20You=20should=20have=20=
received=20a=20copy=20of=20the=20GNU=20General=20Public=20License=0A+;;;=20=
along=20with=20GNU=20Guix.=20=20If=20not,=20see=20=
<http://www.gnu.org/licenses/>.=0A+=0A+(define-module=20(guix=20build=20=
kconfig)=0A+=20=20#:use-module=20=20(ice-9=20rdelim)=0A+=20=20=
#:use-module=20=20(ice-9=20regex)=0A+=20=20#:use-module=20=20(srfi=20=
srfi-1)=0A+=20=20#:use-module=20=20(srfi=20srfi-26)=0A+=20=20#:export=20=
(modify-defconfig))=0A+=0A+;;=20Commentary:=0A+;;=0A+;;=20Builder-side=20=
code=20to=20modify=20configurations=20for=20the=20Kconfig=20build=20=
system=20as=0A+;;=20used=20by=20Linux=20and=20U-Boot.=0A+;;=0A+;;=20=
Code:=0A+=0A+(define=20(modify-defconfig=20defconfig=20configs)=0A+=20=20=
"This=20function=20can=20modify=20a=20given=20DEFCONFIG=20file=20by=20=
adding,=20changing=20or=0A+removing=20the=20list=20of=20strings=20in=20=
CONFIGS.=20=20This=20allows=20an=20easy=20customization=20of=0A+Kconfig=20=
based=20projects=20like=20the=20kernel=20Linux=20or=20the=20bootloader=20=
'Das=20U-Boot'.=0A+=0A+These=20are=20examples=20for=20CONFIGS=20to=20add=20=
or=20change=20or=20remove=0A+configurations=20to/from=20DEFCONFIG:=0A+=0A=
+'(\"CONFIG_A=3D\\\"a\\\"\"=0A+=20=20\"CONFIG_B=3D0\"=0A+=20=20=
\"CONFIG_C=3Dy\"=0A+=20=20\"CONFIG_D=3Dm\"=0A+=20=20\"CONFIG_E=3D\"=0A+=20=
=20\"CONFIG_F\"=0A+=20=20\"#=20CONFIG_G=20is=20not=20set\")=0A+=0A=
+Instead=20of=20a=20list,=20CONFGIS=20can=20be=20a=20string=20with=20one=20=
configuration=20per=20line."=0A+=20=20(define=20config-rx=0A+=20=20=20=20=
(make-regexp=0A+=20=20=20=20=20;;=20(match:substring=20(string-match=20=
"=3D(.*)"=20"=3D")=201)=20returns=20"",=20but=20the=0A+=20=20=20=20=20;;=20=
pattern=20"=3D(.+)?"=20makes=20it=20return=20#f=20instead.=20=20For=20a=20=
"CONFIG_A=3D"=20we=20like=0A+=20=20=20=20=20;;=20to=20get=20#f,=20which=20=
as=20a=20value=20emits=20"#=20=E2=80=A6=20is=20not=20set".=0A+=20=20=20=20=
=20"^(#[\\t=20]*)?(CONFIG_[A-Z0-9_]+)([\\t=20]*=3D[\\t=20]*(.+)?|([\\t=20=
]+is[\\t=20]+not[\\t=20]+set))?$"))=0A+=0A+=20=20(define=20=
(config-string->pair=20config-string)=0A+=20=20=20=20"Parse=20a=20=
config-string=20like=20\"CONFIG_EXAMPLE=3Dy\"=20into=20a=20key-value=20=
pair.=0A+Spaces=20get=20trimmed.=0A+\"CONFIG_A=3Dy\"=20=20=20=20=20=20=20=
=20=20=20=20=20->=20'(\"CONFIG_A\"=20.=20\"y\")=0A+\"CONFIG_B=3D\\\"\\\"\"=
=20=20=20=20=20=20=20=20=20->=20'(\"CONFIG_B\"=20.=20\"\\\"\\\"\")=0A=
+\"CONFIG_C=3D\"=20=20=20=20=20=20=20=20=20=20=20=20=20->=20=
'(\"CONFIG_C\"=20.=20#f)=0A+\"CONFIG_D\"=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20->=20'(\"CONFIG_D\"=20.=20#f)=0A+\"#=20CONFIG_E=20is=20not=20=
set\"=20->=20'(\"CONFIG_E\"=20.=20#f)=0A+\"#=20Anything=20else\"=20=20=20=
=20=20=20=20->=20'(\"#=20Anything=20else\"=20.=20\"\")"=0A+=20=20=20=20=
(let=20((match=20(regexp-exec=20config-rx=20(string-trim-both=20=
config-string))))=0A+=20=20=20=20=20=20(if=20(not=20match)=0A+=20=20=20=20=
=20=20=20=20=20=20;;=20This=20is=20some=20unparsable=20config-string.=0A=
+=20=20=20=20=20=20=20=20=20=20;;=20We=20keep=20it=20as=20it=20is.=0A+=20=
=20=20=20=20=20=20=20=20=20(cons=20config-string=20"")=0A+=20=20=20=20=20=
=20=20=20=20=20(let*=20((comment=20(match:substring=20match=201))=0A+=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(key=20(match:substring=20=
match=202))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(unset=20=
(match:substring=20match=205))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(value=20(and=20(not=20comment)=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(not=20=
unset)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(match:substring=20match=204))))=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20(if=20(or=20(and=20comment=20(not=20unset))=0A+=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(and=20(not=20=
comment)=20unset))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
This=20is=20just=20some=20comment=20or=20strange=20line,=20which=20we=20=
keep=20as=20is.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(cons=20=
config-string=20"")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(cons=20key=20value))))))=0A+=0A+=20=20(define=20(pair->config-string=20=
pair)=0A+=20=20=20=20"Convert=20a=20PAIR=20back=20to=20a=20=
config-string."=0A+=20=20=20=20(let*=20((key=20(car=20pair))=0A+=20=20=20=
=20=20=20=20=20=20=20=20(value=20(cdr=20pair)))=0A+=20=20=20=20=20=20(if=20=
(string?=20value)=0A+=20=20=20=20=20=20=20=20=20=20(if=20(string-null?=20=
value)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20key=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(string-append=20key=20"=3D"=20value))=0A+=20=20=
=20=20=20=20=20=20=20=20(string-append=20"#=20"=20key=20"=20is=20not=20=
set"))))=0A+=0A+=20=20(define=20(remove-pair=20pair=20blacklist)=0A+=20=20=
=20=20"Turn=20a=20key-value=20PAIR=20into=20'(""=20.=20""),=20if=20its=20=
key=20is=20listed=20in=20BLACKLIST."=0A+=20=20=20=20(let*=20((key=20=
(first=20pair)))=0A+=20=20=20=20=20=20(if=20(member=20key=20blacklist)=0A=
+=20=20=20=20=20=20=20=20=20=20'(""=20.=20"")=0A+=20=20=20=20=20=20=20=20=
=20=20pair)))=0A+=0A+=20=20(define=20(remove-config-string=20=
config-string=20blacklist)=0A+=20=20=20=20"Remove=20the=20CONFIG-STRING,=20=
if=20its=20key=20is=20listed=20in=20BLACKLIST."=0A+=20=20=20=20=
(pair->config-string=20(remove-pair=20(config-string->pair=20=
config-string)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20blacklist)))=0A=
+=0A+=20=20(define*=20(write-lines=20input=20#:key=20(line-modifier=20=
identity))=0A+=20=20=20=20"Write=20all=20lines=20from=20the=20INPUT=20=
after=20applying=20the=20LINE-MODIFIER=20to=20the=0A+=20=
current-output-port."=0A+=20=20=20=20(let=20loop=20((line=20(read-line=20=
input)))=0A+=20=20=20=20=20=20(when=20(not=20(eof-object?=20line))=0A+=20=
=20=20=20=20=20=20=20(display=20(line-modifier=20line))=0A+=20=20=20=20=20=
=20=20=20(newline)=0A+=20=20=20=20=20=20=20=20(loop=20(read-line=20=
input)))))=0A+=0A+=20=20(let*=20((modified-defconfig=20(string-append=20=
defconfig=20".mod"))=0A+=20=20=20=20=20=20=20=20=20;;=20Split=20the=20=
configs=20into=20a=20list=20of=20single=20configuations.=0A+=20=20=20=20=20=
=20=20=20=20;;=20To=20minimize=20mistakes,=20we=20support=20a=20string=20=
and=20a=20list=20of=20strings,=0A+=20=20=20=20=20=20=20=20=20;;=20each=20=
with=20newlines=20to=20separate=20configurations.=0A+=20=20=20=20=20=20=20=
=20=20(config-list=20(fold-right=20append=20'()=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(map=20(lambda=20(s)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(string-split=20s=20#\newline))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(if=20(string?=20configs)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20(list=20configs)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20configs))))=0A+=20=20=20=20=20=20=20=20=20;;=20Generate=20=
key-value=20pairs=20from=20the=20config-list.=0A+=20=20=20=20=20=20=20=20=
=20(pairs=20(map=20(lambda=20(config-string)=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(config-string->pair=20=
config-string))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20config-list))=0A+=20=20=20=20=20=20=20=20=20;;=20Generate=20a=20=
blacklist=20of=20config=20keys=20from=20pairs.=0A+=20=20=20=20=20=20=20=20=
=20(blacklist=20(map=20(lambda=20(config-pair)=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(first=20=
config-pair))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20pairs))=0A+=20=20=20=20=20=20=20=20=20=
(remove-config-string=20(cut=20remove-config-string=20<>=20blacklist)))=0A=
+=20=20=20=20;;=20Write=20to=20the=20modified-defconfig=20file=20first=20=
the=20content=20of=20the=20defconfig=0A+=20=20=20=20;;=20file=20with=20=
removed=20lines,=20and=20afterwards=20the=20configs.=0A+=20=20=20=20=
(call-with-output-file=20modified-defconfig=0A+=20=20=20=20=20=20(lambda=20=
(output)=0A+=20=20=20=20=20=20=20=20(with-output-to-port=20output=0A+=20=20=
=20=20=20=20=20=20=20=20(lambda=20()=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20(call-with-input-file=20defconfig=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(lambda=20(input)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(write-lines=20input=20#:=20line-modifier=20remove-config-string)))=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20(call-with-input-string=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20(string-join=20(map=20=
pair->config-string=20pairs)=20"\n")=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(lambda=20(input)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(write-lines=20input)))))))=0A+=20=20=20=20;;=20Ensure=20the=20=
modified-defconfig=20file=20is=20used.=0A+=20=20=20=20(delete-file=20=
defconfig)=0A+=20=20=20=20(rename-file=20modified-defconfig=20=
defconfig)))=0A=

--Apple-Mail=_B6AEB1F9-A6A1-473E-A99F-86D875ECF369
Content-Disposition: attachment;
	filename=04-gnu-bootloader-add-u-boot.patch
Content-Type: application/octet-stream;
	name="04-gnu-bootloader-add-u-boot.patch"
Content-Transfer-Encoding: 7bit

gnu: bootloader: Add U-Boot packages for Raspberry Pi models.

From: Stefan <stefan-guix@HIDDEN>

* gnu/packages/bootloader.scm (make-u-boot-package): Add keyword
parameters 'name' and 'description'.
(make-preinstalled-u-boot-package): New function to make minimal packages.
(%u-boot-rpi-efi-configs): New helper list with config strings.
(%u-boot-rpi-description-32-bit, %u-boot-rpi-description-64-bit,
%u-boot-rpi-efi-description, %u-boot-rpi-efi-description-32-bit): New helper
strings.
(u-boot-rpi-0-w, u-boot-rpi, u-boot-rpi-2, u-boot-rpi-3, u-boot-rpi-4,
u-boot-rpi-64, u-boot-rpi-0-w-efi, u-boot-rpi-efi, u-boot-rpi-2-efi,
u-boot-rpi-3-efi, u-boot-rpi-4-efi, u-boot-rpi-efi-64): New packages.
---
 gnu/packages/bootloaders.scm |  172 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 168 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 38cf933c22..e3bd6733cb 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -717,17 +717,30 @@ def test_ctrl_c"))
 also initializes the boards (RAM etc).  This package provides its
 board-independent tools.")))
 
-(define*-public (make-u-boot-package board triplet #:key defconfig configs)
+(define*-public (make-u-boot-package board
+                                     triplet
+                                     #:key
+                                     defconfig
+                                     configs
+                                     name
+                                     description)
   "Returns a u-boot package for BOARD cross-compiled for TRIPLET with the
-optional DEFCONFIG file and optional configuration changes from CONFIGS."
+optional DEFCONFIG file and optional configuration changes from CONFIGS.
+Either NAME, if used, or otherwise BOARD will be part of the package name.
+DESCRIPTION will be appended to the package description."
   (let ((same-arch? (lambda ()
                       (string=? (%current-system)
                                 (gnu-triplet->nix-system triplet)))))
     (package
       (inherit u-boot)
       (name (string-append "u-boot-"
-                           (string-replace-substring (string-downcase board)
-                                                     "_" "-")))
+                           (string-replace-substring
+                            (string-downcase (or name board))
+                            "_" "-")))
+      (description (if description
+                       (string-append (package-description u-boot)
+                                      "\n" description)
+                       (package-description u-boot)))
       (native-inputs
        `(,@(if (not (same-arch?))
              `(("cross-gcc" ,(cross-gcc triplet))
@@ -1023,6 +1036,157 @@ to Novena upstream, does not load u-boot.img from the first partition."))))
        `(("firmware" ,arm-trusted-firmware-rk3399)
          ,@(package-native-inputs base))))))
 
+(define*-public (make-preinstalled-u-boot-package board
+                                                  triplet
+                                                  #:key
+                                                  defconfig
+                                                  configs
+                                                  name
+                                                  description
+                                                  (u-boot-file "u-boot.bin"))
+  "Returns a package with a single U-BOOT-FILE for BOARD cross-compiled for
+TRIPLET with the optional DEFCONFIG file and optional configuration changes
+from CONFIGS.  Either NAME, if used, or otherwise BOARD will be part of the
+package name.  DESCRIPTION will be appended to the package description."
+  (let* ((name-suffix "-complete")
+         (u-boot-package (make-u-boot-package board
+                                              triplet
+                                              #:defconfig defconfig
+                                              #:configs configs
+                                              #:name (string-append
+                                                      (or name board)
+                                                      name-suffix)
+                                              #:description description)))
+    (package
+      (name (string-drop-right (package-name u-boot-package)
+                               (string-length name-suffix)))
+      (version (package-version u-boot-package))
+      (source #f)
+      (build-system trivial-build-system)
+      (arguments
+       `(#:builder
+         (begin
+           (let ((out (assoc-ref %outputs "out")))
+             (mkdir out)
+             (symlink (string-append (assoc-ref %build-inputs "u-boot")
+                                   "/libexec/"
+                                   ,u-boot-file)
+                      (string-append out "/" ,u-boot-file))))))
+      (inputs `(("u-boot" ,u-boot-package)))
+      (home-page (package-home-page u-boot-package))
+      (synopsis (package-synopsis u-boot-package))
+      (description (package-description u-boot-package))
+      (license (package-license u-boot-package)))))
+
+(define-public %u-boot-rpi-efi-configs
+  '("CONFIG_OF_EMBED="
+    "CONFIG_OF_BOARD=y"
+    "CONFIG_BOOTDELAY=0"))
+
+(define %u-boot-rpi-description-32-bit
+  "This is a 32-bit build of U-Boot.")
+
+(define %u-boot-rpi-description-64-bit
+  "This is a common 64-bit build of U-Boot for all 64-bit capable Raspberry Pi
+variants.")
+
+(define %u-boot-rpi-efi-description
+  "It allows network booting and uses the device-tree from the firmware,
+allowing the usage of overlays.  It can act as an EFI firmware for the
+grub-efi-netboot-removable-bootloader.")
+
+(define %u-boot-rpi-efi-description-32-bit
+  (string-append %u-boot-rpi-efi-description "  "
+                 %u-boot-rpi-description-32-bit))
+
+(define-public u-boot-rpi-0-w
+  (make-preinstalled-u-boot-package
+   "rpi_0_w"
+   "arm-linux-gnueabihf"
+   #:description %u-boot-rpi-description-32-bit))
+
+(define-public u-boot-rpi
+  (make-preinstalled-u-boot-package
+   "rpi"
+   "arm-linux-gnueabihf"
+   #:description %u-boot-rpi-description-32-bit))
+
+(define-public u-boot-rpi-2
+  (make-preinstalled-u-boot-package
+   "rpi_2"
+   "arm-linux-gnueabihf"
+   #:description %u-boot-rpi-description-32-bit))
+
+(define-public u-boot-rpi-3
+  (make-preinstalled-u-boot-package
+   "rpi_3_32b"
+   "arm-linux-gnueabihf"
+   #:name "rpi-3"
+   #:description %u-boot-rpi-description-32-bit))
+
+(define-public u-boot-rpi-4
+  (make-preinstalled-u-boot-package
+   "rpi_4_32b"
+   "arm-linux-gnueabihf"
+   #:name "rpi-4"
+   #:description %u-boot-rpi-description-32-bit))
+
+(define-public u-boot-rpi-64
+  (make-preinstalled-u-boot-package
+   "rpi_arm64"
+   "aarch64-linux-gnu"
+   #:name "rpi-64"
+   #:description %u-boot-rpi-description-64-bit))
+
+(define-public u-boot-rpi-0-w-efi
+  (make-preinstalled-u-boot-package
+   "rpi_0_w"
+   "arm-linux-gnueabihf"
+   #:name "rpi-0-w-efi"
+   #:configs %u-boot-rpi-efi-configs
+   #:description %u-boot-rpi-efi-description-32-bit))
+
+(define-public u-boot-rpi-efi
+  (make-preinstalled-u-boot-package
+   "rpi"
+   "arm-linux-gnueabihf"
+   #:name "rpi-efi"
+   #:configs %u-boot-rpi-efi-configs
+   #:description %u-boot-rpi-efi-description-32-bit))
+
+(define-public u-boot-rpi-2-efi
+  (make-preinstalled-u-boot-package
+   "rpi_2"
+   "arm-linux-gnueabihf"
+   #:name "rpi-2-efi"
+   #:configs %u-boot-rpi-efi-configs
+   #:description %u-boot-rpi-efi-description-32-bit))
+
+(define-public u-boot-rpi-3-efi
+  (make-preinstalled-u-boot-package
+   "rpi_3_32b"
+   "arm-linux-gnueabihf"
+   #:name "rpi-3-efi"
+   #:configs %u-boot-rpi-efi-configs
+   #:description %u-boot-rpi-efi-description-32-bit))
+
+(define-public u-boot-rpi-4-efi
+  (make-preinstalled-u-boot-package
+   "rpi_4_32b"
+   "arm-linux-gnueabihf"
+   #:name "rpi-4-efi"
+   #:configs %u-boot-rpi-efi-configs
+   #:description %u-boot-rpi-efi-description-32-bit))
+
+(define-public u-boot-rpi-efi-64
+  (make-preinstalled-u-boot-package
+   "rpi_arm64"
+   "aarch64-linux-gnu"
+   #:name "rpi-efi-64"
+   #:configs %u-boot-rpi-efi-configs
+   #:description (string-append %u-boot-rpi-efi-description "  "
+                                %u-boot-rpi-description-64-bit)))
+
 (define-public vboot-utils
   (package
     (name "vboot-utils")

--Apple-Mail=_B6AEB1F9-A6A1-473E-A99F-86D875ECF369
Content-Disposition: attachment;
	filename=05-gnu-linux-correct-name-of.patch
Content-Type: application/octet-stream;
	name="05-gnu-linux-correct-name-of.patch"
Content-Transfer-Encoding: 7bit

gnu: linux: Correct name of EXTRAVERSION and prepend "-" to content.

From: Stefan <stefan-guix@HIDDEN>

gnu/packages/linux.scm (make-linux-libre): Move the comment for the
configuration-file argument to the correct position between the extra-version
and configuration-file arguments.
gnu/packages/linux.scm (make-linux-libre*): Move the comment for the
configuration-file argument to the correct position between the extra-version
and configuration-file arguments.  Remove the underscore from the environment
variable EXTRAVERSION.  Prepend a hyphen to the content of EXTRAVERSION.
---
 gnu/packages/linux.scm |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 84ea849108..6ba1119da4 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -749,9 +749,9 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
 
 (define* (make-linux-libre version hash-string supported-systems
                            #:key
+                           (extra-version #f)
                            ;; A function that takes an arch and a variant.
                            ;; See kernel-config for an example.
-                           (extra-version #f)
                            (configuration-file #f)
                            (defconfig "defconfig")
                            (extra-options %default-extra-linux-options)
@@ -770,9 +770,9 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
 
 (define* (make-linux-libre* version source supported-systems
                             #:key
+                            (extra-version #f)
                             ;; A function that takes an arch and a variant.
                             ;; See kernel-config for an example.
-                            (extra-version #f)
                             (configuration-file #f)
                             (defconfig "defconfig")
                             (extra-options %default-extra-linux-options))
@@ -838,7 +838,7 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
                  (format #t "`CROSS_COMPILE' set to `~a'~%"
                          (getenv "CROSS_COMPILE"))))
 
-             (setenv "EXTRA_VERSION" ,extra-version)
+             (setenv "EXTRAVERSION" (string-append "-" ,extra-version))
 
              (let ((build  (assoc-ref %standard-phases 'build))
                    (config (assoc-ref (or native-inputs inputs) "kconfig")))

--Apple-Mail=_B6AEB1F9-A6A1-473E-A99F-86D875ECF369
Content-Disposition: attachment;
	filename=06-gnu-linux-new-function-to.patch
Content-Type: application/octet-stream;
	name="06-gnu-linux-new-function-to.patch"
Content-Transfer-Encoding: quoted-printable

gnu:=20linux:=20New=20function=20to=20modify=20the=20configuration=20of=20=
a=20Linux=20kernel.=0A=0AFrom:=20Stefan=20<stefan-guix@HIDDEN>=0A=
=0A*=20gnu/packages/linux.scm=20(make-linux-libre*)=20=
['set-environment]:=20Splitted=20this=0Anew=20phase=20out=20of=20and=20=
adding=20it=20before=20=E2=80=A6=0A['configure]:=20=E2=80=A6=20to=20=
allow=20a=20replacement=20and=20reuse=20from=20(modify-linux).=0A=
(modify-linux):=20New=20function=20to=20make=20a=20customized=20Linux=20=
package=20inherited=0Afrom=20another=20Linux=20package,=20which=20will=20=
be=20build=20with=20an=20own=20defconfig=20or=0Aconfiguration=20changes.=0A=
(make-defconfig):=20Function=20to=20get=20a=20defconfig=20from=20an=20=
uri=20and=20sha256.=0A---=0A=20gnu/packages/linux.scm=20|=20=20111=20=
++++++++++++++++++++++++++++++++++++++++++++++--=0A=201=20file=20=
changed,=20107=20insertions(+),=204=20deletions(-)=0A=0Adiff=20--git=20=
a/gnu/packages/linux.scm=20b/gnu/packages/linux.scm=0Aindex=20=
6ba1119da4..4b2096b2fb=20100644=0A---=20a/gnu/packages/linux.scm=0A+++=20=
b/gnu/packages/linux.scm=0A@@=20-54,6=20+54,7=20@@=0A=20;;;=20Copyright=20=
=C2=A9=202020=20David=20Dashyan=20<mail@HIDDEN>=0A=20;;;=20Copyright=20=
=C2=A9=202020=20pukkamustard=20<pukkamustard@HIDDEN>=0A=20;;;=20=
Copyright=20=C2=A9=202021=20B.=20Wilson=20<elaexuotee@HIDDEN>=0A=
+;;;=20Copyright=20=C2=A9=202021=20Stefan=20=
<stefan-guix@HIDDEN>=0A=20;;;=0A=20;;;=20This=20file=20is=20=
part=20of=20GNU=20Guix.=0A=20;;;=0A@@=20-165,7=20+166,8=20@@=0A=20=20=20=
#:use-module=20(srfi=20srfi-1)=0A=20=20=20#:use-module=20(srfi=20srfi-2)=0A=
=20=20=20#:use-module=20(srfi=20srfi-26)=0A-=20=20#:use-module=20(ice-9=20=
match))=0A+=20=20#:use-module=20(ice-9=20match)=0A+=20=20#:use-module=20=
(ice-9=20optargs))=0A=20=0A=20(define-public=20=
(system->linux-architecture=20arch)=0A=20=20=20"Return=20the=20Linux=20=
architecture=20name=20for=20ARCH,=20a=20Guix=20system=20name=20such=20as=0A=
@@=20-820,8=20+822,8=20@@=20for=20ARCH=20and=20optionally=20VARIANT,=20=
or=20#f=20if=20there=20is=20no=20such=20configuration."=0A=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(substitute*=20(find-files=20"."=20=
"^Makefile(\\.include)?$")=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20(("/bin/pwd")=20"pwd"))=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
#t))=0A-=20=20=20=20=20=20=20=20=20(replace=20'configure=0A-=20=20=20=20=20=
=20=20=20=20=20=20(lambda*=20(#:key=20inputs=20native-inputs=20target=20=
#:allow-other-keys)=0A+=20=20=20=20=20=20=20=20=20(add-before=20=
'configure=20'set-environment=0A+=20=20=20=20=20=20=20=20=20=20=20=
(lambda*=20(#:key=20target=20#:allow-other-keys)=0A=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20;;=20Avoid=20introducing=20timestamps=0A=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(setenv=20"KCONFIG_NOTIMESTAMP"=20"1")=0A=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20(setenv=20"KBUILD_BUILD_TIMESTAMP"=20=
(getenv=20"SOURCE_DATE_EPOCH"))=0A@@=20-839,7=20+841,9=20@@=20for=20ARCH=20=
and=20optionally=20VARIANT,=20or=20#f=20if=20there=20is=20no=20such=20=
configuration."=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(getenv=20"CROSS_COMPILE"))))=0A=20=0A=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20(setenv=20"EXTRAVERSION"=20(string-append=20=
"-"=20,extra-version))=0A-=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
#t))=0A+=20=20=20=20=20=20=20=20=20(replace=20'configure=0A+=20=20=20=20=20=
=20=20=20=20=20=20(lambda*=20(#:key=20inputs=20native-inputs=20=
#:allow-other-keys)=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=20(let=20=
((build=20=20(assoc-ref=20%standard-phases=20'build))=0A=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20(config=20(assoc-ref=20(or=20=
native-inputs=20inputs)=20"kconfig")))=0A=20=0A@@=20-1154,6=20+1158,105=20=
@@=20It=20has=20been=20modified=20to=20remove=20all=20non-free=20binary=20=
blobs.")=0A=20=20=20=20=20=20=20(inherit=20base-linux-libre)=0A=20=20=20=20=
=20=20=20(inputs=20`(("cpio"=20,cpio)=20,@(package-inputs=20=
base-linux-libre))))))=0A=20=0A+=0C=0A+;;;=0A+;;;=20Linux=20kernel=20=
customization=20functions.=0A+;;;=0A+=0A+(define*-public=20(modify-linux=20=
#:key=20name=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(linux=20linux-libre)=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20defconfig=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(configs=20"")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
extra-version)=0A+=20=20"Make=20a=20Linux=20package=20NAME=20as=20a=20=
modification=20of=20another=20LINUX=20package.=0A+=0A+If=20NAME=20is=20=
not=20given,=20then=20it=20defaults=20to=20the=20same=20name=20as=20the=20=
LINUX=20package.=0A+=0A+A=20DEFCONFIG=20file=20to=20be=20used=20can=20be=20=
given=20as=20a=20package,=20as=20a=20file=20like=20object=0A=
+(file-append,=20local-file=20etc.),=20or=20as=20a=20string=20with=20the=20=
name=20of=20a=20defconfig=20file=0A+available=20in=20the=20Linux=20=
sources.=20=20If=20DEFCONFIG=20is=20not=20given,=20then=20a=20defconfig=0A=
+file=20will=20be=20saved=20from=20the=20LINUX=20package=20=
configuration.=0A+=0A+Additional=20CONFIGS=20will=20be=20used=20to=20=
modify=20the=20given=20or=20saved=20defconfig,=20which=0A+will=20finally=20=
be=20used=20to=20build=20Linux.=0A+=0A+CONFIGS=20can=20be=20a=20list=20=
of=20strings,=20with=20one=20configuration=20per=20line.=20=20The=20=
usual=0A+defconfig=20syntax=20has=20to=20be=20used,=20but=20there=20is=20=
a=20special=20extension=20to=20ease=20the=0A+removal=20of=20=
configurations.=20=20Comment=20lines=20are=20supported=20as=20well.=0A+=0A=
+Here=20is=20an=20explaining=20usage=20example:=0A+=0A+=20=20'(;;=20This=20=
string=20defines=20the=20version=20tail=20in=20'uname=20-r'.=0A+=20=20=20=
=20\"CONFIG_LOCALVERSION=3D\\\"-handcrafted\\\"=0A+=20=20=20=20;;=20This=20=
'#=20CONFIG_=E2=80=A6=20is=20not=20set'=20syntax=20has=20to=20match=20=
exactly!=0A+=20=20=20=20\"#=20CONFIG_BOOT_CONFIG=20is=20not=20set\"=0A+=20=
=20=20=20\"CONFIG_NFS_SWAP=3Dy\"=0A+=20=20=20=20;;=20This=20is=20a=20=
multiline=20configuration:=0A+=20=20=20=20\"CONFIG_E1000=3Dy=0A+#=20This=20=
is=20a=20comment,=20below=20follows=20the=20special=20removal=20=
extension:=0A+CONFIG_CMDLINE_EXTEND=0A+CONFIG_CMDLINE_FORCE=3D\")=0A+=0A=
+A=20string=20of=20configurations=20instead=20of=20a=20list=20of=20=
configuration=20strings=20is=20also=0A+possible.=0A+=0A+EXTRA-VERSION=20=
can=20be=20a=20string=20overwriting=20the=20EXTRAVERSION=20setting=20of=20=
the=20LINUX=0A+package,=20after=20being=20prepended=20by=20a=20hyphen.=20=
=20It=20will=20be=20visible=20in=20the=20output=0A+of=20'uname=20-r'=20=
behind=20the=20Linux=20version=20numbers."=0A+=20=20(package=0A+=20=20=20=
=20(inherit=20linux)=0A+=20=20=20=20(name=20(or=20name=20(package-name=20=
linux)))=0A+=20=20=20=20(arguments=0A+=20=20=20=20=20=
(substitute-keyword-arguments=0A+=20=20=20=20=20=20=20=20=20=
(package-arguments=20linux)=0A+=20=20=20=20=20=20=20((#:imported-modules=20=
imported-modules=20%gnu-build-system-modules)=0A+=20=20=20=20=20=20=20=20=
`((guix=20build=20kconfig)=20,@imported-modules))=0A+=20=20=20=20=20=20=20=
((#:modules=20modules)=0A+=20=20=20=20=20=20=20=20`((guix=20build=20=
kconfig)=20,@modules))=0A+=20=20=20=20=20=20=20((#:phases=20phases)=0A+=20=
=20=20=20=20=20=20=20`(modify-phases=20,phases=0A+=20=20=20=20=20=20=20=20=
=20=20=20(replace=20'configure=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
(lambda*=20(#:key=20inputs=20#:allow-other-keys=20#:rest=20arguments)=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(let*=20((configs=20=
(string-append=20"arch/"=20(getenv=20"ARCH")=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20"/configs/"))=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(guix_defconfig=20=
(string-append=20configs=20"guix_defconfig")))=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20,(cond=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20((not=20defconfig)=0A+=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20`(begin=0A+=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20Call=20the=20=
original=20'configure=20phase.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20(apply=20(assoc-ref=20,phases=20=
'configure)=20arguments)=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20;;=20Save=20a=20defconfig=20file.=0A+=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(invoke=20"make"=20"savedefconfig")=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20Move=20the=20saved=20=
defconfig=20to=20the=20proper=20location.=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20(rename-file=20"defconfig"=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20guix_defconfig)))=0A+=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20((string?=20defconfig)=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20;;=20=
Use=20another=20existing=20defconfig=20from=20the=20Linux=20sources.=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
`(rename-file=20(string-append=20configs=20,defconfig)=0A+=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20guix_defconfig))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(else=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20;;=20Copy=20the=20defconfig=20input=20to=20the=20=
proper=20location.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20'(copy-file=20(assoc-ref=20inputs=20"guix_defconfig")=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20guix_defconfig)))=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20(modify-defconfig=20guix_defconfig=20',configs)=0A+=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20,@(if=20extra-version=0A=
+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
`((setenv=20"EXTRAVERSION"=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20,(string-append=20"-"=20=
extra-version)))=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20'())=0A+=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=
(invoke=20"make"=20"guix_defconfig"))=0A+=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20#t))))))=0A+=20=20=20=20(native-inputs=0A+=20=20=20=20=20=20=
(append=20(if=20(and=20(not=20defconfig)=0A+=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20(string?=20defconfig))=0A+=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20'()=0A+=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20=20=20=20;;=20The=20defconfig=20should=20be=20a=20=
package=20or=20file-like=20object.=0A+=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20`(("guix_defconfig"=20,defconfig)))=0A+=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20(package-native-inputs=20linux)))))=0A+=0A=
+(define-public=20(make-defconfig=20uri=20sha256-as-base32)=0A+=20=20=
(origin=20(method=20url-fetch)=0A+=20=20=20=20=20=20=20=20=20=20(uri=20=
uri)=0A+=20=20=20=20=20=20=20=20=20=20(sha256=20(base32=20=
sha256-as-base32))))=0A=20=0A=20=0C=0A=20;;;=0A=

--Apple-Mail=_B6AEB1F9-A6A1-473E-A99F-86D875ECF369
Content-Disposition: attachment;
	filename=07-gnu-raspberry-pi-add-defconfig.patch
Content-Type: application/octet-stream;
	name="07-gnu-raspberry-pi-add-defconfig.patch"
Content-Transfer-Encoding: quoted-printable

gnu:=20raspberry-pi:=20Add=20defconfig=20objects=20to=20build=20=
customized=20Linux=20kernels.=0A=0AFrom:=20Stefan=20=
<stefan-guix@HIDDEN>=0A=0Agnu/packages/raspberry-pi.scm=20=
(make-raspi-defconig):=20New=20function=20to=20make=0Adownloaded=20=
defconfig=20objects=20from=20the=20Linux=20repository=20of=20the=20=
Raspberry=20Pi=0AFoundation.=0A(%bcm2709-defconfig,=20=
%bcm2710-defconfig,=20%bcm2711-defconfig,=0A%bcm2835-defconfig,=20=
%bcmrpi-defconfig,=20%bcm2711-defconfig-64,=0A%bcmrpi3-defconfig):=20New=20=
variables=20containing=20defconfig=20objects=20to=20build=0ALinux=20=
kernels=20customized=20for=20Raspberry=20Pi=20single=20board=20=
computers.=0A---=0A=20gnu/packages/raspberry-pi.scm=20|=20=20=2044=20=
++++++++++++++++++++++++++++++++++++++++-=0A=201=20file=20changed,=2043=20=
insertions(+),=201=20deletion(-)=0A=0Adiff=20--git=20=
a/gnu/packages/raspberry-pi.scm=20b/gnu/packages/raspberry-pi.scm=0A=
index=20bb38b8b218..a2ab300531=20100644=0A---=20=
a/gnu/packages/raspberry-pi.scm=0A+++=20b/gnu/packages/raspberry-pi.scm=0A=
@@=20-1,5=20+1,6=20@@=0A=20;;;=20GNU=20Guix=20---=20Functional=20package=20=
management=20for=20GNU=0A=20;;;=20Copyright=20=C2=A9=202020=20Danny=20=
Milosavljevic=20<dannym@HIDDEN>=0A+;;;=20Copyright=20=C2=A9=20=
2021=20Stefan=20<stefan-guix@HIDDEN>=0A=20;;;=0A=20;;;=20This=20=
file=20is=20part=20of=20GNU=20Guix.=0A=20;;;=0A@@=20-25,9=20+26,10=20@@=0A=
=20=20=20#:use-module=20(gnu=20packages=20commencement)=0A=20=20=20=
#:use-module=20(gnu=20packages=20cross-base)=0A=20=20=20#:use-module=20=
(gnu=20packages=20documentation)=0A+=20=20#:use-module=20(gnu=20packages=20=
embedded)=0A=20=20=20#:use-module=20(gnu=20packages=20file)=0A=20=20=20=
#:use-module=20(gnu=20packages=20gcc)=0A-=20=20#:use-module=20(gnu=20=
packages=20embedded)=0A+=20=20#:use-module=20(gnu=20packages=20linux)=0A=20=
=20=20#:use-module=20(guix=20build-system=20gnu)=0A=20=20=20#:use-module=20=
(guix=20download)=0A=20=20=20#:use-module=20(guix=20git-download)=0A@@=20=
-235,3=20+237,43=20@@=20Raspberry=20Pi.=20=20Note:=20It=20does=20not=20=
work=20on=20Raspberry=20Pi=201.")=0A=20=20=20=20=20=20=20=20=20=20=20=20=20=
=20=20=20(install-file=20"arm64.bin"=20libexec)=0A=20=20=20=20=20=20=20=20=
=20=20=20=20=20=20=20=20#t))))))))=0A=20=20=20=20=20(supported-systems=20=
'("aarch64-linux"))))=0A+=0A+(define=20(make-raspi-defconfig=20arch=20=
defconfig=20sha256-as-base32)=0A+=20=20"Make=20for=20the=20architecture=20=
ARCH=20a=20file-like=20object=20from=20the=20DEFCONFIG=20file=0A+with=20=
the=20hash=20SHA256-AS-BASE32.=20=20This=20object=20can=20be=20used=20as=20=
the=20#:defconfig=0A+argument=20of=20the=20function=20(modify-linux)."=0A=
+=20=20(make-defconfig=0A+=20=20=20(string-append=0A+=20=20=20=20=
"https://raw.githubusercontent.com/raspberrypi/linux/raspberrypi-kernel_1.=
20210430-1/arch/"=0A+=20=20=20=20arch=20"/configs/"=20defconfig)=0A+=20=20=
=20sha256-as-base32))=0A+=0A+(define-public=20%bcm2709-defconfig=0A+=20=20=
(make-raspi-defconfig=0A+=20=20=20"arm"=20"bcm2709_defconfig"=0A+=20=20=20=
"0yvrmid2jakl929d1mv00gidnqbf91ffhj61c9gl75f7km48811c"))=0A+=0A=
+(define-public=20%bcm2711-defconfig=0A+=20=20(make-raspi-defconfig=0A+=20=
=20=20"arm"=20"bcm2711_defconfig"=0A+=20=20=20=
"19hb6nwna7sk3b4rn5yjfhldrs3c1lv24q08w4gpa4xzh1byv7jj"))=0A+=0A=
+(define-public=20%bcm2835-defconfig=0A+=20=20(make-raspi-defconfig=0A+=20=
=20=20"arm"=20"bcm2835_defconfig"=0A+=20=20=20=
"17dmvabqvxwqn6lgv1x8rfh2wqf1r2xmm10nkdnrgwkmgv8bh2d5"))=0A+=0A=
+(define-public=20%bcmrpi-defconfig=0A+=20=20(make-raspi-defconfig=0A+=20=
=20=20"arm"=20"bcmrpi_defconfig"=0A+=20=20=20=
"0lcmr6nxdd53m3k8hqb5k6c5b7vbdgmfvcliqyl95snp45rxjjkw"))=0A+=0A=
+(define-public=20%bcm2711-defconfig-64=0A+=20=20(make-raspi-defconfig=0A=
+=20=20=20"arm64"=20"bcm2711_defconfig"=0A+=20=20=20=
"0xf38nczwinr0j8vhsn8nd8h4ysjn77xphg7xnssz04gclb7fndr"))=0A+=0A=
+(define-public=20%bcmrpi3-defconfig=0A+=20=20(make-raspi-defconfig=0A+=20=
=20=20"arm64"=20"bcmrpi3_defconfig"=0A+=20=20=20=
"01k098snd7kbmhz68j93mj2fwp39c56g9r8rgaw17js5r0w0zbhy"))=0A=

--Apple-Mail=_B6AEB1F9-A6A1-473E-A99F-86D875ECF369
Content-Disposition: attachment;
	filename=08-gnu-raspberry-pi-add-helpers.patch
Content-Type: application/octet-stream;
	name="08-gnu-raspberry-pi-add-helpers.patch"
Content-Transfer-Encoding: 7bit

gnu: raspberry-pi: Add helpers for config.txt file generation.

From: Stefan <stefan-guix@HIDDEN>

* gnu/packages/raspberry-pi.scm (raspi-config-file, raspi-custom-txt):
New functions.
(%raspi-config-txt, %raspi-bcm27-dtb-txt, %raspi-bcm28-dtb-txt
%raspi-u-boot-bootloader-txt): New variables.
---
 gnu/packages/raspberry-pi.scm |   53 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)

diff --git a/gnu/packages/raspberry-pi.scm b/gnu/packages/raspberry-pi.scm
index a2ab300531..0707516f72 100644
--- a/gnu/packages/raspberry-pi.scm
+++ b/gnu/packages/raspberry-pi.scm
@@ -238,6 +238,59 @@ Raspberry Pi.  Note: It does not work on Raspberry Pi 1.")
                #t))))))))
     (supported-systems '("aarch64-linux"))))
 
+(define-public (raspi-config-file name content)
+  "Make a configuration file like config.txt for the Raspberry Pi firmware.
+CONTENT can be a list of strings, which are concatenated with a newline
+character.  Alternatively CONTENT can be a string with the full file content."
+  (plain-file
+   name
+   (if (list? content)
+       (string-join content "\n" 'suffix)
+       content)))
+
+(define-public %raspi-config-txt
+  ;; A config.txt file to start the ARM cores up in 64-bit mode if necessary
+  ;; and to include a dtb.txt, bootloader.txt, and a custom.txt, each with
+  ;; separated configurations for the Raspberry Pi firmware.
+  (raspi-config-file
+   "config.txt"
+   `("# See https://www.raspberrypi.org/documentation/configuration/config-txt/README.md for details."
+     ""
+     ,(string-append "arm_64bit=" (if (target-aarch64?) "1" "0"))
+     "include dtb.txt"
+     "include bootloader.txt"
+     "include custom.txt")))
+
+(define-public %raspi-bcm27-dtb-txt
+  ;; A dtb.txt file to be included by the config.txt to ensure that the
+  ;; downstream device tree files bcm27*.dtb will be used.
+  (raspi-config-file
+   "dtb.txt"
+   "upstream_kernel=0"))
+
+(define-public %raspi-bcm28-dtb-txt
+  ;; A dtb.txt file to be included by the config.txt to ensure that the
+  ;; upstream device tree files bcm28*.dtb will be used.
+  ;; This also implies the use of the dtoverlay=upstream.
+  (raspi-config-file
+   "dtb.txt"
+   "upstream_kernel=1"))
+
+(define-public %raspi-u-boot-bootloader-txt
+  ;; A bootloader.txt file to be included by the config.txt to load the
+  ;; U-Boot bootloader.
+  (raspi-config-file
+   "bootloader.txt"
+   '("dtoverlay=upstream"
+     "enable_uart=1"
+     "kernel=u-boot.bin")))
+
+(define-public (raspi-custom-txt content)
+  "Make a custom.txt file for the Raspberry Pi firmware.
+CONTENT can be a list of strings, which are concatenated with a newline
+character.  Alternatively CONTENT can be a string with the full file content."
+  (raspi-config-file "custom.txt" content))
+
 (define (make-raspi-defconfig arch defconfig sha256-as-base32)
   "Make for the architecture ARCH a file-like object from the DEFCONFIG file
 with the hash SHA256-AS-BASE32.  This object can be used as the #:defconfig

--Apple-Mail=_B6AEB1F9-A6A1-473E-A99F-86D875ECF369
Content-Disposition: attachment;
	filename=09-gnu-raspberry-pi-new-function.patch
Content-Type: application/octet-stream;
	name="09-gnu-raspberry-pi-new-function.patch"
Content-Transfer-Encoding: 7bit

gnu: raspberry-pi: New function to make a package with device-tree files.

From: Stefan <stefan-guix@HIDDEN>

* gnu/packages/raspberry-pi.scm (make-raspi-bcm28-dtbs): New function to make
a package with device-tree files for Raspberry Pi models from the kernel given
as argument.
---
 gnu/packages/raspberry-pi.scm |   21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/raspberry-pi.scm b/gnu/packages/raspberry-pi.scm
index 0707516f72..d808f61ac2 100644
--- a/gnu/packages/raspberry-pi.scm
+++ b/gnu/packages/raspberry-pi.scm
@@ -30,6 +30,7 @@
   #:use-module (gnu packages file)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages linux)
+  #:use-module (guix build-system copy)
   #:use-module (guix build-system gnu)
   #:use-module (guix download)
   #:use-module (guix git-download)
@@ -291,6 +292,26 @@ CONTENT can be a list of strings, which are concatenated with a newline
 character.  Alternatively CONTENT can be a string with the full file content."
   (raspi-config-file "custom.txt" content))
 
+(define-public (make-raspi-bcm28-dtbs linux)
+  "Make a package with the device-tree files for Raspberry Pi models from the
+kernel LINUX."
+  (package
+    (inherit linux)
+    (name "raspi-bcm28-dtbs")
+    (source #f)
+    (build-system copy-build-system)
+    (arguments
+     `(#:phases (modify-phases %standard-phases (delete 'unpack))
+       #:install-plan
+       (list (list (string-append (assoc-ref %build-inputs "linux")
+                                  "/lib/dtbs/broadcom/")
+                   "." #:include-regexp '("/bcm....-rpi.*\\.dtb")))))
+    (inputs `(("linux" ,linux)))
+    (synopsis "Device-tree files for a Raspberry Pi")
+    (description
+     (simple-format #f "The device-tree files for Raspberry Pi models from ~a."
+             (package-name linux)))))
+
 (define (make-raspi-defconfig arch defconfig sha256-as-base32)
   "Make for the architecture ARCH a file-like object from the DEFCONFIG file
 with the hash SHA256-AS-BASE32.  This object can be used as the #:defconfig

--Apple-Mail=_B6AEB1F9-A6A1-473E-A99F-86D875ECF369
Content-Disposition: attachment;
	filename=10-gnu-raspberry-pi-add-a.patch
Content-Type: application/octet-stream;
	name="10-gnu-raspberry-pi-add-a.patch"
Content-Transfer-Encoding: 7bit

gnu: raspberry-pi: Add a bootloader-chain for the Raspberry Pi and os examples.

From: Stefan <stefan-guix@HIDDEN>

* gnu/packages/raspberry-pi.scm (grub-efi-bootloader-chain-raspi-64): New
bootloader variable, capable to boot a Raspberry Pi over network or from a
local storage.
* gnu/system/examples/raspberry-pi-64.tmpl: New operating-system example.
* gnu/system/examples/raspberry-pi-64-nfs-root.tmpl: New operating-system
example for booting over network.
---
 gnu/packages/raspberry-pi.scm                     |   19 +++++
 gnu/system/examples/raspberry-pi-64-nfs-root.tmpl |   73 ++++++++++++++++++++
 gnu/system/examples/raspberry-pi-64.tmpl          |   77 +++++++++++++++++++++
 3 files changed, 169 insertions(+)
 create mode 100644 gnu/system/examples/raspberry-pi-64-nfs-root.tmpl
 create mode 100644 gnu/system/examples/raspberry-pi-64.tmpl

diff --git a/gnu/packages/raspberry-pi.scm b/gnu/packages/raspberry-pi.scm
index d808f61ac2..d52a4a72c5 100644
--- a/gnu/packages/raspberry-pi.scm
+++ b/gnu/packages/raspberry-pi.scm
@@ -18,11 +18,14 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages raspberry-pi)
+  #:use-module (gnu bootloader)
+  #:use-module (gnu bootloader grub)
   #:use-module (gnu packages)
   #:use-module (gnu packages admin)
   #:use-module (gnu packages algebra)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
+  #:use-module (gnu packages bootloaders)
   #:use-module (gnu packages commencement)
   #:use-module (gnu packages cross-base)
   #:use-module (gnu packages documentation)
@@ -312,6 +315,22 @@ kernel LINUX."
      (simple-format #f "The device-tree files for Raspberry Pi models from ~a."
              (package-name linux)))))
 
+(define-public grub-efi-bootloader-chain-raspi-64
+  ;; A bootloader capable to boot a Raspberry Pi over network via TFTP or from
+  ;; a local storage like a micro SD card.
+  ;; It neither installs firmware nor device-tree files for the Raspberry Pi.
+  ;; It just assumes them to be existing in boot/efi in the same way that some
+  ;; UEFI firmware with ACPI data is usually assumed to be existing on PCs.
+  ;; It creates firmware configuration files and a bootloader-chain with U-Boot
+  ;; to provide an EFI API for the final GRUB bootloader.
+  ;; It also serves as a blue-print to create an own bootloader-chain with
+  ;; firmwre and device-tree packages or files.
+  (efi-bootloader-chain grub-efi-netboot-removable-bootloader
+                        #:packages (list u-boot-rpi-efi-64)
+                        #:files (list %raspi-config-txt
+                                      %raspi-bcm27-dtb-txt
+                                      %raspi-u-boot-bootloader-txt)))
+
 (define (make-raspi-defconfig arch defconfig sha256-as-base32)
   "Make for the architecture ARCH a file-like object from the DEFCONFIG file
 with the hash SHA256-AS-BASE32.  This object can be used as the #:defconfig
diff --git a/gnu/system/examples/raspberry-pi-64-nfs-root.tmpl b/gnu/system/examples/raspberry-pi-64-nfs-root.tmpl
new file mode 100644
index 0000000000..a1e41e3399
--- /dev/null
+++ b/gnu/system/examples/raspberry-pi-64-nfs-root.tmpl
@@ -0,0 +1,73 @@
+;; This is an operating-system configuration template of a
+;; 64-bit minimal system for a Raspberry Pi with an NFS root file-system.
+
+;; It neither installs firmware nor device-tree files for the Raspberry Pi.
+;; It just assumes them to be existing in boot/efi in the same way that some
+;; UEFI firmware with ACPI data is usually assumed to be existing on PCs.
+
+;; It expects the boot/efi directory to be served via TFTP and the root
+;; file-system to be served via NFS. See the grub-efi-netboot-bootloader
+;; description in the manual for more details.
+
+(use-modules (gnu)
+             (gnu artwork)
+             (gnu system nss))
+(use-service-modules admin
+                     avahi
+                     networking
+                     ssh)
+(use-package-modules certs
+                     linux
+                     raspberry-pi
+                     ssh)
+
+(define %my-public-key
+  (local-file (string-append (getenv "HOME") "/.ssh/id_ecdsa.pub")))
+
+(define-public raspberry-pi-64-nfs-root
+  (operating-system
+   (host-name "raspberrypi-guix")
+   (timezone "Europe/Berlin")
+   (bootloader (bootloader-configuration
+                (bootloader grub-efi-bootloader-chain-raspi-64)
+                (target "/boot/efi")
+                (theme (grub-theme (resolution '(1920 . 1080))
+                       (image (file-append
+                               %artwork-repository
+                               "/grub/GuixSD-fully-black-16-9.svg"))))))
+   (kernel-arguments '("ip=dhcp"))
+   (kernel (modify-linux #:linux linux-libre-arm64-generic
+                         #:extra-version "arm64-generic-netboot"
+                         #:configs '("CONFIG_NFS_SWAP=y"
+                                     "CONFIG_USB_USBNET=y"
+                                     "CONFIG_USB_LAN78XX=y"
+                                     "CONFIG_USB_NET_SMSC95XX=y")))
+   (initrd-modules '())
+   (file-systems (cons* (file-system
+                         (mount-point "/")
+                         (type "nfs")
+                         (device ":/export/raspberrypi/guix")
+                         (options "addr=10.20.30.40,vers=4.1"))
+                        %base-file-systems))
+   (swap-devices '("/run/swapfile"))
+   (users (cons* (user-account
+                  (name "pi")
+                  (group "users")
+                  (supplementary-groups '("wheel" "netdev" "audio" "video"))
+                  (home-directory "/home/pi"))
+                 %base-user-accounts))
+   (packages (cons* nss-certs
+                    openssh
+                    %base-packages))
+   (services (cons* (service avahi-service-type)
+                    (service dhcp-client-service-type)
+                    (service ntp-service-type)
+                    (service openssh-service-type
+                             (openssh-configuration
+                              (x11-forwarding? #t)
+                              (authorized-keys
+                              `(("pi" ,%my-public-key)))))
+                    %base-services))
+   (name-service-switch %mdns-host-lookup-nss)))
+
+raspberry-pi-64-nfs-root
diff --git a/gnu/system/examples/raspberry-pi-64.tmpl b/gnu/system/examples/raspberry-pi-64.tmpl
new file mode 100644
index 0000000000..7e18f00d86
--- /dev/null
+++ b/gnu/system/examples/raspberry-pi-64.tmpl
@@ -0,0 +1,77 @@
+;; This is an operating-system configuration template of a
+;; 64-bit minimal system for a Raspberry Pi with local storage.
+
+;; It neither installs firmware nor device-tree files for the Raspberry Pi.
+;; It just assumes them to be existing in boot/efi in the same way that some
+;; UEFI firmware with ACPI data is usually assumed to be existing on PCs.
+
+;; It expects the boot-partition to be mounted as boot/efi in the same way
+;; as it is usually expeted on PCs with UEFI firmware.
+
+(use-modules (gnu)
+             (gnu artwork)
+             (gnu system nss))
+(use-service-modules admin
+                     avahi
+                     networking
+                     ssh)
+(use-package-modules certs
+                     linux
+                     raspberry-pi
+                     ssh)
+
+(define %my-public-key
+  (local-file (string-append (getenv "HOME") "/.ssh/id_ecdsa.pub")))
+
+(define-public raspberry-pi-64
+  (operating-system
+   (host-name "raspberrypi-guix")
+   (timezone "Europe/Berlin")
+   (bootloader (bootloader-configuration
+                (bootloader grub-efi-bootloader-chain-raspi-64)
+                (target "/boot/efi")
+                (theme (grub-theme (resolution '(1920 . 1080))
+                       (image (file-append
+                               %artwork-repository
+                               "/grub/GuixSD-fully-black-16-9.svg"))))))
+   (kernel (modify-linux #:linux linux-libre-arm64-generic
+                         #| It is possible to use a specific defconfig file,
+                            for example the "bcmrpi3_defconfig" with the
+                            variable shown below.  Unfortunately the kernel
+                            build from the linux-libre sources with this
+                            defconfig file does not boot.
+                            #:extra-version "gnu-bcmrpi3"
+                            #:defconfig %bcmrpi3-defconfig
+                         |#))
+   (initrd-modules '())
+   (file-systems (cons* (file-system
+                         (mount-point "/")
+                         (type "ext4")
+                         (device (file-system-label "Guix")))
+                        (file-system
+                         (mount-point "/boot/efi")
+                         (type "vfat")
+                         (device (file-system-label "EFI")))
+                        %base-file-systems))
+   (swap-devices '("/run/swapfile"))
+   (users (cons* (user-account
+                  (name "pi")
+                  (group "users")
+                  (supplementary-groups '("wheel" "netdev" "audio" "video"))
+                  (home-directory "/home/pi"))
+                 %base-user-accounts))
+   (packages (cons* nss-certs
+                    openssh
+                    %base-packages))
+   (services (cons* (service avahi-service-type)
+                    (service dhcp-client-service-type)
+                    (service ntp-service-type)
+                    (service openssh-service-type
+                             (openssh-configuration
+                              (x11-forwarding? #t)
+                              (authorized-keys
+                              `(("pi" ,%my-public-key)))))
+                    %base-services))
+   (name-service-switch %mdns-host-lookup-nss)))
+
+raspberry-pi-64

--Apple-Mail=_B6AEB1F9-A6A1-473E-A99F-86D875ECF369--




Acknowledgement sent to Stefan <stefan-guix@HIDDEN>:
New bug report received and forwarded. Copy sent to guix-patches@HIDDEN. Full text available.
Report forwarded to guix-patches@HIDDEN:
bug#48314; Package guix-patches. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Sun, 17 Jul 2022 18:15:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.