diff mbox series

[bug#61009] Building Icecat and jemalloc on aarch64-linux

Message ID 86ilgyuyc1.fsf@burningswell.com
State New
Headers show
Series [bug#61009] Building Icecat and jemalloc on aarch64-linux | expand

Commit Message

Roman Scherer Jan. 22, 2023, 8:06 p.m. UTC
Hi Guix,

I'm trying to build Icecat on an aarch64-linux based Guix system. I got it
working with the patches attached to this mail. I would like to include this
into Guix but I am not sure about the following issues:

1. jemalloc

I'm using the kernel configuration from the Asahi Linux project which uses 16K
as the kernel page size. Because of this I get an "Unsupported system page
size" error from the jemalloc package when building Icecat.

I fixed this issue by setting the page size in the jemalloc package to 16K,
when building for an aarch64-linux system. I got this from the PKGBUILD [1] of
ARM Arch Linux.

I'm new to ARM and now I'm wondering:

- What is the default kernel page size on an aarch64-linux system?

- If there is none, is there one that is most commonly used?

- Why does ARM Arch Linux default to 16K and should we too?

- Which kernel page size is used on CI to build jemalloc and Icecat on the
  aarch64-linux builders?

- Did Icecat ever built on aarch64-linux on CI?

I also updated the version of jemalloc to 5.3.0, because I thought they also
addressed this issue for my particular aarch64-linux system [2]. This new
version sets the page size also to 16K, but only when building for an
aarch64-apple-darwin system, and not for aarch64-linux systems. So I'm not
sure only updating the version would fix the kernel page size issue here.

More than 5000 packages depend on jemalloc, so this should probably go into
the core-updates branch? The changes to jemalloc caused my world to rebuild
locally, but I ended up with a working Icecat.

2. Disable EME on aarch64-linux

I removed the --disable-eme option on aarch64-linux because the configure
script failed an error saying this option is not supported on this
architecture. Since EME stands for Encrypted Media Extensions and is a
JavaScript API for playing DRMed video content in HTML, I'm not sure if this
is ok, or what to best do here?

Could someone please review the patches and give me some advice on how to
proceed with these issues?

Thanks, Roman.

[1] https://archlinuxarm.org/packages/aarch64/jemalloc/files/PKGBUILD
[2] https://github.com/jemalloc/jemalloc/blob/dev/configure.ac#L1733

Comments

Leo Famulari Feb. 5, 2023, 5:32 p.m. UTC | #1
On Sun, Jan 22, 2023 at 09:06:43PM +0100, Roman Scherer wrote:
> 2. Disable EME on aarch64-linux
> 
> I removed the --disable-eme option on aarch64-linux because the configure
> script failed an error saying this option is not supported on this
> architecture. Since EME stands for Encrypted Media Extensions and is a
> JavaScript API for playing DRMed video content in HTML, I'm not sure if this
> is ok, or what to best do here?

Guix adheres to the Free System Distribution Guidelines, which
explicitly forbids browsers with EME support:

https://guix.gnu.org/en/about/
https://www.gnu.org/distros/free-system-distribution-guidelines.en.html

Unfortunately, I don't know the answers to your other questions.
Roman Scherer Feb. 6, 2023, 7:52 p.m. UTC | #2
Hi Leo,

thanks for your reply. Ok, I understand. I try to see if I can disable
it in some other way then. Are you familiar with this? Do you have any
tips to share?

I think the v2 patches about transparent huge pages for jemalloc could
still be an improvement, if it's a compatible change. It would enable
the use of rust substitutes that depend on jemalloc on aarch64 that run
with kernel pages > 4K.

Roman

Leo Famulari <leo@famulari.name> writes:

> On Sun, Jan 22, 2023 at 09:06:43PM +0100, Roman Scherer wrote:
>> 2. Disable EME on aarch64-linux
>>
>> I removed the --disable-eme option on aarch64-linux because the configure
>> script failed an error saying this option is not supported on this
>> architecture. Since EME stands for Encrypted Media Extensions and is a
>> JavaScript API for playing DRMed video content in HTML, I'm not sure if this
>> is ok, or what to best do here?
>
> Guix adheres to the Free System Distribution Guidelines, which
> explicitly forbids browsers with EME support:
>
> https://guix.gnu.org/en/about/
> https://www.gnu.org/distros/free-system-distribution-guidelines.en.html
>
> Unfortunately, I don't know the answers to your other questions.
Leo Famulari Feb. 9, 2023, 12:49 p.m. UTC | #3
On Mon, Feb 06, 2023 at 08:52:43PM +0100, Roman Scherer wrote:
> thanks for your reply. Ok, I understand. I try to see if I can disable
> it in some other way then. Are you familiar with this? Do you have any
> tips to share?

No, I don't have any specific knowledge about IceCat or aarch64.

Mark Weaver is the primary maintainer of our IceCat package.

It seems like a mistake that IceCat would require EME on a particular
architecture. Maybe the name of the configure option has changed.
Roman Scherer Feb. 11, 2023, 9:44 a.m. UTC | #4
Alright, thanks Leo!

Leo Famulari <leo@famulari.name> writes:

> On Mon, Feb 06, 2023 at 08:52:43PM +0100, Roman Scherer wrote:
>> thanks for your reply. Ok, I understand. I try to see if I can disable
>> it in some other way then. Are you familiar with this? Do you have any
>> tips to share?
>
> No, I don't have any specific knowledge about IceCat or aarch64.
>
> Mark Weaver is the primary maintainer of our IceCat package.
>
> It seems like a mistake that IceCat would require EME on a particular
> architecture. Maybe the name of the configure option has changed.
Christopher Baines March 1, 2023, 3:46 p.m. UTC | #5
Roman Scherer <roman.scherer@burningswell.com> writes:

> Alright, thanks Leo!
>
> Leo Famulari <leo@famulari.name> writes:
>
>> On Mon, Feb 06, 2023 at 08:52:43PM +0100, Roman Scherer wrote:
>>> thanks for your reply. Ok, I understand. I try to see if I can disable
>>> it in some other way then. Are you familiar with this? Do you have any
>>> tips to share?
>>
>> No, I don't have any specific knowledge about IceCat or aarch64.
>>
>> Mark Weaver is the primary maintainer of our IceCat package.
>>
>> It seems like a mistake that IceCat would require EME on a particular
>> architecture. Maybe the name of the configure option has changed.

I've pushed one of these patches now as
72ec11d24f34104efce0d91050a3faba4e2c7242. I missed any other patches
that were sent to this issue.

I think removing the --disable-eme option is OK on aarch64 as it's
probably not an option since I'm guessing EME isn't available on
aarch64. Anyway, Icecat looks to add these disable options by default so
I'm not sure we need it for any architecture in the guix package.
Roman Scherer March 1, 2023, 6:05 p.m. UTC | #6
Hi Christopher,

thanks for applying the patch and for the explanation.

Not sure what you meant by "missed". But, I sent an improved version of
the jemalloc patches as a separate issue a while ago. They are here:

https://lists.gnu.org/archive/html/guix-patches/2023-02/msg00698.html

Without the jemalloc patches, Icecat and all other packages using
jemalloc crash with the error `<jemalloc>: Unsupported system page size`
on aarch64 systems that run with kernel page sizes > 4K.

If you are familiar with this, I could need some help here as well ;)

Thanks, Roman.

Christopher Baines <mail@cbaines.net> writes:

> [[PGP Signed Part:Undecided]]
>
> Roman Scherer <roman.scherer@burningswell.com> writes:
>
>> Alright, thanks Leo!
>>
>> Leo Famulari <leo@famulari.name> writes:
>>
>>> On Mon, Feb 06, 2023 at 08:52:43PM +0100, Roman Scherer wrote:
>>>> thanks for your reply. Ok, I understand. I try to see if I can disable
>>>> it in some other way then. Are you familiar with this? Do you have any
>>>> tips to share?
>>>
>>> No, I don't have any specific knowledge about IceCat or aarch64.
>>>
>>> Mark Weaver is the primary maintainer of our IceCat package.
>>>
>>> It seems like a mistake that IceCat would require EME on a particular
>>> architecture. Maybe the name of the configure option has changed.
>
> I've pushed one of these patches now as
> 72ec11d24f34104efce0d91050a3faba4e2c7242. I missed any other patches
> that were sent to this issue.
>
> I think removing the --disable-eme option is OK on aarch64 as it's
> probably not an option since I'm guessing EME isn't available on
> aarch64. Anyway, Icecat looks to add these disable options by default so
> I'm not sure we need it for any architecture in the guix package.
>
> [[End of PGP Signed Part]]
Christopher Baines March 2, 2023, 10:07 a.m. UTC | #7
Roman Scherer <roman.scherer@burningswell.com> writes:

> Hi Christopher,
>
> thanks for applying the patch and for the explanation.
>
> Not sure what you meant by "missed". But, I sent an improved version of
> the jemalloc patches as a separate issue a while ago. They are here:
>
> https://lists.gnu.org/archive/html/guix-patches/2023-02/msg00698.html
>
> Without the jemalloc patches, Icecat and all other packages using
> jemalloc crash with the error `<jemalloc>: Unsupported system page size`
> on aarch64 systems that run with kernel page sizes > 4K.
>
> If you are familiar with this, I could need some help here as well ;)

Sending the jemalloc patch seperately sounds good. I'm going to mark
this issue as done since that's tracked separately.

I've replied to that separate issue, but I think that these changes may
already be in place on core-updates. I'm going to have a go at merging
master in to core-updates which should allow for testing icecat in
core-updates with the changes I've merged in master.
diff mbox series

Patch

From 71bf3cf7187de92f7974bedc2d0291a78a0754bc Mon Sep 17 00:00:00 2001
From: r0man <roman@burningswell.com>
Date: Sun, 22 Jan 2023 19:33:13 +0100
Subject: [PATCH 3/3] gnu: icecat: Fix --disable-eme option on aarch64.

* gnu/packages/gnuzilla.scm (icecat): Fix --disable-eme option on aarch64.
---
 gnu/packages/gnuzilla.scm | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm
index 23249791bb..95c8be5f1b 100644
--- a/gnu/packages/gnuzilla.scm
+++ b/gnu/packages/gnuzilla.scm
@@ -756,7 +756,8 @@  (define-public icecat
          "--disable-tests"
          "--disable-updater"
          "--disable-crashreporter"
-         "--disable-eme"
+         ;; The --disable-eme option is not available on aarch64.
+         #$(if (target-aarch64?) "" "--disable-eme")
 
          ;; Building with debugging symbols takes ~5GiB, so disable it.
          "--disable-debug"
-- 
2.38.1